diff --git a/.gitattributes b/.gitattributes index e69de29..5616fa9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -0,0 +1 @@ +jekyll_theme/assets/resources/** linguist-vendored=true diff --git a/.gitignore b/.gitignore index c38fa4e..0dd847e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ .idea *.iml +*.gem +*.lock +.repo_*.sh diff --git a/DIRECTORY-TREE.md b/DIRECTORY-TREE.md new file mode 100644 index 0000000..5c2e71d --- /dev/null +++ b/DIRECTORY-TREE.md @@ -0,0 +1,56 @@ +## Дерево каталогов + +
+.
+├─ jekyll_theme
+│  ├─ _includes
+│  │  ├─ article_brief.html
+│  │  ├─ collapsed_block.html
+│  │  ├─ counters_body.html
+│  │  ├─ counters_head.html
+│  │  ├─ image_svg.html
+│  │  ├─ main_page.html
+│  │  ├─ page_footer.html
+│  │  ├─ page_header.html
+│  │  ├─ page_toolbar.html
+│  │  ├─ picture.html
+│  │  └─ seo.html
+│  ├─ _layouts
+│  │  └─ default.html
+│  ├─ assets
+│  │  ├─ css
+│  │  │  ├─ code-highlighting.css
+│  │  │  ├─ font_face_jb_mono.css
+│  │  │  ├─ font_face_roboto.css
+│  │  │  └─ older-tomato.css
+│  │  ├─ img
+│  │  │  ├─ older-tomato.ico
+│  │  │  ├─ older-tomato.jpg
+│  │  │  ├─ older-tomato.png
+│  │  │  ├─ older-tomato.svg
+│  │  │  └─ typewriter.svg
+│  │  ├─ resources
+│  │  │  └─ fonts
+│  │  │     ├─ JBMono
+│  │  │     │  ├─ JetBrainsMono-Bold.woff
+│  │  │     │  ├─ JetBrainsMono-Italic.woff
+│  │  │     │  ├─ JetBrainsMono-Medium.woff
+│  │  │     │  └─ JetBrainsMono-Regular.woff
+│  │  │     └─ Roboto
+│  │  │        ├─ Roboto-Bold.woff
+│  │  │        ├─ Roboto-Italic.woff
+│  │  │        ├─ Roboto-Medium.woff
+│  │  │        └─ Roboto-Regular.woff
+│  │  ├─ 404.html
+│  │  ├─ favicon.ico
+│  │  └─ pagesmap.xml
+│  ├─ Gemfile
+│  ├─ install.sh
+│  └─ older-tomato-theme.gemspec
+├─ CONTRIBUTING.md
+├─ DIRECTORY-TREE.md
+├─ LICENSE.md
+├─ OPEN_LICENSE.txt
+├─ README.en.md
+└─ README.md
+
diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..e90d175 --- /dev/null +++ b/README.en.md @@ -0,0 +1,180 @@ +# [Older tomato](README.md) + +Two Jekyll themes to decorate static websites. The color variant was written earlier +using AngularJS and Material, this was the design of the previous version of my blog. +Then a lightweight single-color variant was written using only HTML and CSS, the +appearance resembles the default design theme on GitHub Pages. Both themes supplement +each other and are similar to each other, commonalities and differences between them +are marked in the list of features. + +- [Color tomato](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.en.md) — color selection during the build. +- Older tomato — lightweight decoration theme. +- [Pomodori](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.en.md) — series of static websites. + +### Features + +- [x] Responsive layout. +- [x] User JS and CSS files in the head block of HTML pages. +- [x] SEO-markup using JSON-LD and Open Graph. +- [x] Switch between two languages and two tomato themes. +- [x] Map of site pages with their translations in XML format. +- [x] Simple 404 page for non-existing URLs. +- [x] Fonts: Roboto for text and JBMono for code blocks. +- [x] Tomatoes: PNG, JPG 120x120, SVG 64x64, ICO 32x32. +- [ ] Color selection during the build, green is the default color. +- [ ] Scroll-to-top button in Material style. + +### Site structure + +The folder with the Jekyll site should contain two mandatory files with dependencies +and parameters — all other files are the site content itself. This theme is written +with the expectation, that the site contents is separated into two sub-folders by +language and consist of articles and main pages, where the main pages are lists of +articles with short descriptions. + +``` +jekyll-site + ├ ru + │ ├ . . . - articles + │ └ index.md - main page + ├ en + │ ├ . . . - articles + │ └ index.md - main page + ├ . . . + ├ Gemfile - dependencies + └ _config.yml - parameters +``` + +### Dependencies + +`Gemfile` — a list of packages *ruby gems* to use, including locally installed ones. + +```ruby +source "https://rubygems.org" +gem "jekyll" +gem "older-tomato-theme" +``` + +### Installation + +Run the script from the theme folder, build the *gem* package and install it. + +```bash +rm older-tomato-theme-0.1.0.gem +gem build older-tomato-theme.gemspec +sudo gem install --local older-tomato-theme-0.1.0.gem +``` + +### Site parameters + +`_config.yml` — a list of common parameters for the site, including parameters for the build. + +```yaml +# site name for caption in footer +name: "Код с комментариями" +# footer caption for translated pages +name_translated: "Code with comments" +# URL of the site including protocol +url: "https://pomodoro.example.ru" +# subfolder of this build for relative URLs +baseurl: "" +# weblink in the top-left of the main pages +homepage_url: "https://hub.mos.ru/tolstoy.ln" +# representation of the weblink +homepage_name: "HUB.MOS.RU" +# subfolder of the alternative build, +# can be omitted, if not used +color_tomato_baseurl: "/color" +# time zone for ISO-8601 date format +timezone: "Europe/Moscow" +# language parameters should be specified either +# everywhere, or only on pages with translations +lang: "ru" # default, can be omitted +# author's name for SEO-markup and footer caption +author: "Толстой Л.Н." +# transliteration of the name for translated pages +author_translated: "Tolstoy L.N." +# addition to footer caption for translated pages +translation_caption: "translation from Russian" +# design theme and default layout for the build +theme: older-tomato-theme +defaults: + - scope: + path: "" + values: + layout: default +``` + +### Page parameters + +List of individual parameters of site pages to specify in the Front matter of the page. + +```yaml +--- +# page title in the page language +title: Вращаем пространственный крест +# preferably 150-160 characters in the page language +description: ниасилил, многабукаф +# comma-separated list of sections of a page in its language +sections: [Объёмные фигуры,Матрица поворота,Экспериментальная модель] +# comma-separated list of tags of a page in its language +tags: [javascript,canvas,геометрия,матрица,графика,изображение,куб] +# comma-separated list of scripts for +# this page, can be omitted, if not used +scripts: [/js/classes.js,/js/script1.js,/js/script2.js] +# comma-separated list of styles for +# this page, can be omitted, if not used +styles: [/css/pomodoro1.css,/css/pomodoro2.css] +# canonical URL of this page +canonical_url: /ru/2023/01/15/spinning-spatial-cross.html +# URL of translated page for original pages, +# or the original page for translated pages +url_translated: /en/2023/01/16/spinning-spatial-cross.html +# title of translated page for original pages, +# or the original page for translated pages +title_translated: Spinning spatial cross +# date parameters should be specified only on article +# pages and should not be specified on main pages, +# main pages display the date the site was last built +date: 2023.01.15 +# language parameters should be specified either +# everywhere, or only on pages with translations +lang: "ru" # default, can be omitted +# author's name in the page language +author: "Толстой Л.Н." +# transliteration of the author's name for original +# pages, or original author name for translated pages +author_translated: "Tolstoy L.N." +# addition to footer caption for translated pages +translation_caption: "translation from Russian" +--- +``` + +### After build + +The site can be built using the `jekyll build` command. After that, we get the `_site` folder with the +generated pages and the `assets` subfolder from the theme. We move the contents of this subfolder back +to the `_site` folder — we get shorter links, that are used in the theme. After that we bypass HTML +pages and optimize some tags also for shortness and for correctness. The script is designed for this. + +```bash +echo "Optimization of gathered content." +cd _site || exit +cp -r assets/* . +rm -r assets +find . -type f -name '*.html' | sort -r | while read -r file; do + sed -i 's/ class="language-plaintext highlighter-rouge"//g' "$file" + sed -i 's/ class="language-java highlighter-rouge"//g' "$file" + sed -i 's/ class="language-html highlighter-rouge"//g' "$file" + sed -i 's/ class="language-js highlighter-rouge"//g' "$file" + sed -i 's/
/
/g' "$file"
+  sed -i 's/<\/code><\/pre><\/div><\/div>/<\/code><\/pre><\/div>/g' "$file"
+  sed -i 's/
/
/g' "$file" + sed -i -r 's///g' "$file" + sed -i -r 's///g' "$file" +done +``` + +--- + +© Golovin G.G., Code with comments, translation from Russian, 2021-2023 diff --git a/README.md b/README.md new file mode 100644 index 0000000..772ab4f --- /dev/null +++ b/README.md @@ -0,0 +1,179 @@ +# [Старый помидор](README.en.md) + +Две темы Jekyll для оформления статических сайтов. Цветной вариант был написан раньше +с использованием AngularJS и Material, таким было оформление предыдущей версии моего +блога. Затем был написан облегчённый одноцветный вариант с использованием только HTML +и CSS, внешний вид напоминает тему оформления по умолчанию на GitHub Pages. Обе темы +дополняют друг друга и похожи друг на друга, общие черты и различия между ними отмечены +в списке свойств. + +- [Цветной помидор](https://hub.mos.ru/golovin.gg/color-tomato-theme/blob/master/README.md) — выбор цвета во время сборки. +- Старый помидор — легковесная тема оформления. +- [Помидоры](https://hub.mos.ru/golovin.gg/pomodoro/blob/master/README.md) — серия статических вёб-сайтов. + +### Свойства + +- [x] Адаптивная вёрстка или Responsive layout. +- [x] Файлы пользователя JS и CSS в блоке head страниц HTML. +- [x] SEO-разметка с использованием JSON-LD и Open Graph. +- [x] Переключение между двумя языками и помидорными темами. +- [x] Карта страниц сайта с их переводами в формате XML. +- [x] Простая страница 404 для несуществующих URL-адресов. +- [x] Шрифты: Roboto для текста и JBMono для блоков кода. +- [x] Помидоры: PNG, JPG 120x120, SVG 64x64, ICO 32x32. +- [ ] Выбор цвета во время сборки, зелёный цвет по умолчанию. +- [ ] Кнопка прокрутки вверх в стиле Material. + +### Структура каталогов + +Папка с сайтом на Jekyll должна содержать два обязательных файла с зависимостями и +параметрами, все остальные файлы — это содержимое самого сайта. Эта тема написана с +расчётом, что содержимое сайта разделено на две подпапки по языкам и состоит из статей +и заглавных страниц, где заглавные страницы — это списки статей с краткими описаниями. + +``` +jekyll-site + ├ ru + │ ├ . . . - статьи + │ └ index.md - заглавная страница + ├ en + │ ├ . . . - статьи + │ └ index.md - заглавная страница + ├ . . . + ├ Gemfile - зависимости + └ _config.yml - параметры +``` + +### Зависимости + +`Gemfile` — список пакетов *ruby gems*, включая установленные локально. + +```ruby +source "https://rubygems.org" +gem "jekyll" +gem "older-tomato-theme" +``` + +### Установка + +Запускаем скрипт из папки с темой, собираем пакет *gem* и устанавливаем его. + +```bash +rm older-tomato-theme-0.1.0.gem +gem build older-tomato-theme.gemspec +sudo gem install --local older-tomato-theme-0.1.0.gem +``` + +### Параметры сайта + +`_config.yml` — список общих параметров для сайта, включая параметры для сборки. + +```yaml +# название сайта для подписи в футере +name: "Код с комментариями" +# подпись в футере для переведённых страниц +name_translated: "Code with comments" +# URL адрес сайта, включая протокол +url: "https://pomodoro.example.ru" +# подпапка этой сборки для относительных URLs +baseurl: "" +# ссылка в верхнем левом углу заглавных страниц +homepage_url: "https://hub.mos.ru/tolstoy.ln" +# представление ссылки +homepage_name: "HUB.MOS.RU" +# подпапка альтернативной сборки, можно +# не указывать, если не используется +color_tomato_baseurl: "/color" +# часовой пояс для формата даты ISO-8601 +timezone: "Europe/Moscow" +# языковые параметры должны быть указаны либо +# везде, либо только на страницах с переводами +lang: "ru" # по умолчанию, можно не указывать +# имя автора для SEO-разметки и подписи в футере +author: "Толстой Л.Н." +# транслитерация имени автора для переведённых страниц +author_translated: "Tolstoy L.N." +# дополнение к подписи в футере для переведённых страниц +translation_caption: "translation from Russian" +# тема оформления и макет по умолчанию для сборки +theme: older-tomato-theme +defaults: + - scope: + path: "" + values: + layout: default +``` + +### Параметры страниц + +Список индивидуальных параметров страниц сайта для указания в шапке страницы Front matter. + +```yaml +--- +# заголовок страницы на языке страницы +title: Вращаем пространственный крест +# предпочтительно 150-160 символов на языке страницы +description: ниасилил, многабукаф +# разделённый запятыми список секций страницы на её языке +sections: [Объёмные фигуры,Матрица поворота,Экспериментальная модель] +# разделённый запятыми список тегов страницы на её языке +tags: [javascript,canvas,геометрия,матрица,графика,изображение,куб] +# разделённый запятыми список скриптов для этой +# страницы, можно не указывать, если не используются +scripts: [/js/classes.js,/js/script1.js,/js/script2.js] +# разделённый запятыми список стилей для этой +# страницы, можно не указывать, если не используются +styles: [/css/pomodoro1.css,/css/pomodoro2.css] +# канонический URL адрес этой страницы +canonical_url: /ru/2023/01/15/spinning-spatial-cross.html +# URL адрес переведённой страницы для оригинальных страниц, +# или оригинальной страницы для переведённых страниц +url_translated: /en/2023/01/16/spinning-spatial-cross.html +# заголовок переведённой страницы для оригинальных страниц, +# или оригинальной страницы для переведённых страниц +title_translated: Spinning spatial cross +# дата должна быть указана только на страницах статей, +# и не должна быть указана на заглавных страницах, +# заглавные страницы отображают дату последней сборки сайта +date: 2023.01.15 +# языковые параметры должны быть указаны либо +# везде, либо только на страницах с переводами +lang: "ru" # по умолчанию, можно не указывать +# имя автора на языке этой страницы +author: "Толстой Л.Н." +# транслитерация имени автора для оригинальных страниц, +# или оригинальное имя автора для переведённых страниц +author_translated: "Tolstoy L.N." +# дополнение к подписи в футере для переведённых страниц +translation_caption: "translation from Russian" +--- +``` + +### После сборки + +Сборка сайта выполняется командой `jekyll build`. После этого мы получаем папку `_site` с собранными +страницами и подпапку `assets` из темы. Перемещаем содержимое этой подпапки обратно в папку `_site` — +получаем короткие ссылки, которые используются в теме. После этого обходим страницы HTML и оптимизируем +некоторые теги также для краткости и для корректности. Скрипт предназначен для этого. + +```bash +echo "Оптимизация собранного контента." +cd _site || exit +cp -r assets/* . +rm -r assets +find . -type f -name '*.html' | sort -r | while read -r file; do + sed -i 's/ class="language-plaintext highlighter-rouge"//g' "$file" + sed -i 's/ class="language-java highlighter-rouge"//g' "$file" + sed -i 's/ class="language-html highlighter-rouge"//g' "$file" + sed -i 's/ class="language-js highlighter-rouge"//g' "$file" + sed -i 's/
/
/g' "$file"
+  sed -i 's/<\/code><\/pre><\/div><\/div>/<\/code><\/pre><\/div>/g' "$file"
+  sed -i 's/
/
/g' "$file" + sed -i -r 's///g' "$file" + sed -i -r 's///g' "$file" +done +``` + +--- + +© Головин Г.Г., Код с комментариями, 2021-2023 diff --git a/jekyll_theme/Gemfile b/jekyll_theme/Gemfile new file mode 100644 index 0000000..3be9c3c --- /dev/null +++ b/jekyll_theme/Gemfile @@ -0,0 +1,2 @@ +source "https://rubygems.org" +gemspec diff --git a/jekyll_theme/_includes/article_brief.html b/jekyll_theme/_includes/article_brief.html new file mode 100644 index 0000000..44baf16 --- /dev/null +++ b/jekyll_theme/_includes/article_brief.html @@ -0,0 +1,9 @@ + +

{{ include.page.date | date: '%d.%m.%Y' }}

+

+ {{ include.page.title }} +

+

{{ include.page.sections | join: ' • ' }}

+{{- include.brief | markdownify -}} +{% unless include.last %}
{% endunless -%} + diff --git a/jekyll_theme/_includes/collapsed_block.html b/jekyll_theme/_includes/collapsed_block.html new file mode 100644 index 0000000..046f2b3 --- /dev/null +++ b/jekyll_theme/_includes/collapsed_block.html @@ -0,0 +1,11 @@ + +
+
+{{ include.summary }} +{%- if include.title %} +

{{ include.title }}

+{%- endif %} +{{- include.content | markdownify -}} +
+
+ diff --git a/jekyll_theme/_includes/counters_body.html b/jekyll_theme/_includes/counters_body.html new file mode 100644 index 0000000..69c5333 --- /dev/null +++ b/jekyll_theme/_includes/counters_body.html @@ -0,0 +1,2 @@ + + diff --git a/jekyll_theme/_includes/counters_head.html b/jekyll_theme/_includes/counters_head.html new file mode 100644 index 0000000..1edf00d --- /dev/null +++ b/jekyll_theme/_includes/counters_head.html @@ -0,0 +1,2 @@ + + diff --git a/jekyll_theme/_includes/image_svg.html b/jekyll_theme/_includes/image_svg.html new file mode 100644 index 0000000..0a6545f --- /dev/null +++ b/jekyll_theme/_includes/image_svg.html @@ -0,0 +1 @@ +{{ include.alt }} diff --git a/jekyll_theme/_includes/main_page.html b/jekyll_theme/_includes/main_page.html new file mode 100644 index 0000000..ccce98f --- /dev/null +++ b/jekyll_theme/_includes/main_page.html @@ -0,0 +1,14 @@ + +{%- for item in include.articles %} + {%- assign step = forloop.index0 | modulo: 2 %} + {%- if step == 0 %} + {%- assign article_title = item %} + {%- else %} + {%- for page in site.pages %} + {%- if page.title == article_title %} + {%- include article_brief.html brief=item page=page last=forloop.parentloop.last %} + {%- endif %} + {%- endfor %} + {%- endif %} +{%- endfor -%} + diff --git a/jekyll_theme/_includes/page_footer.html b/jekyll_theme/_includes/page_footer.html new file mode 100644 index 0000000..421994c --- /dev/null +++ b/jekyll_theme/_includes/page_footer.html @@ -0,0 +1,14 @@ + +
+

+{%- if page.lang == site.lang -%} +{{ page.author | default: site.author | prepend: '© ' }} +{{- site.name | prepend: ', ' }} +{%- else -%} +{{ page.author | default: site.author_translated | prepend: '© ' }} +{{- site.name_translated | prepend: ', ' }} +{{- page.translation_caption | default: site.translation_caption | prepend: ', ' }} +{%- endif %} +{{- page.date | default: site.time | date: '%Y' | prepend: ', ' -}} +

+ diff --git a/jekyll_theme/_includes/page_header.html b/jekyll_theme/_includes/page_header.html new file mode 100644 index 0000000..9eb1a27 --- /dev/null +++ b/jekyll_theme/_includes/page_header.html @@ -0,0 +1,22 @@ + +
+
+ +
+ older-tomato +
+ +
+

{{ page.title }}

+
+ {{ page.sections | join: ' • ' }} + + {%- if page.date %} + {{ page.date | date: '%d.%m.%Y' }} + {%- endif %} +
+
+
+
+
+ diff --git a/jekyll_theme/_includes/page_toolbar.html b/jekyll_theme/_includes/page_toolbar.html new file mode 100644 index 0000000..37e1573 --- /dev/null +++ b/jekyll_theme/_includes/page_toolbar.html @@ -0,0 +1,38 @@ + +
+
+ {%- if page.date %} + + + {% if page.lang != site.lang %}MAIN{% else %}ГЛАВНАЯ{% endif %} + + {%- else %} + + + {{ site.homepage_name }} + + {%- endif %} + + + {%- if page.url_translated %} + + + {{ page.lang | default: 'ru' | upcase }} + + {%- else %} + + {{ page.lang | default: 'ru' | upcase }} + {%- endif %} + {%- if site.color_tomato_baseurl %} + + + typewriter + + {%- else %} + + typewriter + {%- endif %} +
+
+
+ diff --git a/jekyll_theme/_includes/picture.html b/jekyll_theme/_includes/picture.html new file mode 100644 index 0000000..2460b34 --- /dev/null +++ b/jekyll_theme/_includes/picture.html @@ -0,0 +1,9 @@ +
+ {{ include.alt }} +{%- if include.caption %} +
+ {{ include.caption }} +
+{%- endif %} +
diff --git a/jekyll_theme/_includes/seo.html b/jekyll_theme/_includes/seo.html new file mode 100644 index 0000000..00de055 --- /dev/null +++ b/jekyll_theme/_includes/seo.html @@ -0,0 +1,67 @@ + +{{ page.title }} + +{%- if page.tags %} + +{%- endif %} + + + + + + + + + diff --git a/jekyll_theme/_layouts/default.html b/jekyll_theme/_layouts/default.html new file mode 100644 index 0000000..fd9aa4b --- /dev/null +++ b/jekyll_theme/_layouts/default.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + +{% if page.styles -%} +{% for style in page.styles -%} + +{% endfor -%} +{% endif -%} +{% if page.scripts -%} +{% for script in page.scripts -%} + +{% endfor -%} +{% endif -%} +{% include seo.html -%} +{% include counters_head.html -%} + + +{% include counters_body.html -%} +{% include page_toolbar.html -%} +{% include page_header.html -%} +
+ +{{ content -}} + +{% include page_footer.html -%} +
+ + diff --git a/jekyll_theme/assets/404.html b/jekyll_theme/assets/404.html new file mode 100644 index 0000000..a426ce2 --- /dev/null +++ b/jekyll_theme/assets/404.html @@ -0,0 +1,16 @@ +--- +layout: null +permalink: 404.html +--- + + + + + +404 - Not Found + + + +

404 - Not Found

+ + diff --git a/jekyll_theme/assets/css/code-highlighting.css b/jekyll_theme/assets/css/code-highlighting.css new file mode 100644 index 0000000..fccb467 --- /dev/null +++ b/jekyll_theme/assets/css/code-highlighting.css @@ -0,0 +1,20 @@ +/* font without ligatures */ +pre, code { font-family: JBMono, monospace; font-variant: none; } +/* keyword */ +.k, .kc, .kd, .kt, .kn { color: #2452bc; } +/* keyword */ +.na, .nb { color: #5f2d6e; } +/* keyword */ +.nl, .nt, .cp, .m { color: #0550ae; } +/* keyword */ +.nf, .no { color: #277a8e; } +/* punctuation */ +.o, .p { color: #474747; } +/* literal */ +.n, .nc, .nd, .nn, .nx { color: #474747; } +/* number */ +.mi, .mf { color: #3866ee; } +/* string */ +.s, .s1, .s2, .dl { color: #080; } +/* comment */ +.c, .c1, .cm { color: #9e9e9e; } diff --git a/jekyll_theme/assets/css/font_face_jb_mono.css b/jekyll_theme/assets/css/font_face_jb_mono.css new file mode 100644 index 0000000..0a81f71 --- /dev/null +++ b/jekyll_theme/assets/css/font_face_jb_mono.css @@ -0,0 +1,31 @@ +@font-face { + font-family: 'JBMono'; + font-style: italic; + font-weight: 400; + src: local('JBMono Italic'), local('JBMono-Italic'), url(/resources/fonts/JBMono/JetBrainsMono-Italic.woff) format('woff'); + font-display: swap; +} + +@font-face { + font-family: 'JBMono'; + font-style: normal; + font-weight: 400; + src: local('JBMono'), local('JBMono-Regular'), url(/resources/fonts/JBMono/JetBrainsMono-Regular.woff) format('woff'); + font-display: swap; +} + +@font-face { + font-family: 'JBMono'; + font-style: normal; + font-weight: 500; + src: local('JBMono Medium'), local('JBMono-Medium'), url(/resources/fonts/JBMono/JetBrainsMono-Medium.woff) format('woff'); + font-display: swap; +} + +@font-face { + font-family: 'JBMono'; + font-style: normal; + font-weight: 700; + src: local('JBMono Bold'), local('JBMono-Bold'), url(/resources/fonts/JBMono/JetBrainsMono-Bold.woff) format('woff'); + font-display: swap; +} diff --git a/jekyll_theme/assets/css/font_face_roboto.css b/jekyll_theme/assets/css/font_face_roboto.css new file mode 100644 index 0000000..46f6d89 --- /dev/null +++ b/jekyll_theme/assets/css/font_face_roboto.css @@ -0,0 +1,31 @@ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + src: local('Roboto Italic'), local('Roboto-Italic'), url(/resources/fonts/Roboto/Roboto-Italic.woff) format('woff'); + font-display: swap; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(/resources/fonts/Roboto/Roboto-Regular.woff) format('woff'); + font-display: swap; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(/resources/fonts/Roboto/Roboto-Medium.woff) format('woff'); + font-display: swap; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + src: local('Roboto Bold'), local('Roboto-Bold'), url(/resources/fonts/Roboto/Roboto-Bold.woff) format('woff'); + font-display: swap; +} diff --git a/jekyll_theme/assets/css/older-tomato.css b/jekyll_theme/assets/css/older-tomato.css new file mode 100644 index 0000000..87182b6 --- /dev/null +++ b/jekyll_theme/assets/css/older-tomato.css @@ -0,0 +1,164 @@ +* { + box-sizing: border-box; +} + +body { + font-family: Roboto, Helvetica Neue, sans-serif; + font-size: 18px; + margin: 0; + line-height: 1.5; + word-wrap: break-word; +} + +body, a { + color: #222; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.toolbar a > b { + font-size: 22px; + font-weight: 500; +} + +.container a { + color: #444; +} + +.container { + max-width: 1012px; + margin-right: auto; + margin-left: auto; +} + +.padding16w { + padding-right: 16px; + padding-left: 16px; +} + +.margin14h { + margin-top: 14px; + margin-bottom: 14px; +} + +img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; +} + +code { + padding: 0.2em 0.4em; + margin: 0; + font-size: 85%; + background-color: #f0f0f0; + border-radius: 3px; +} + +pre > code { + display: inline; + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +pre.highlight { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f9f9f9; + border: 1px solid #ececec; + border-radius: 3px; +} + +div.highlight:last-child { + margin: 0 0 -16px 0; +} + +details { + margin: 14px 0; + padding: 16px; + border: 1px solid #ececec; + border-radius: 3px; +} + +summary:hover { + cursor: pointer; +} + +details[open] summary ~ * { + animation: slide .3s ease-in-out; +} + +@keyframes slide { + 0% {opacity: 0; margin-top: -10px} + 100% {opacity: 1; margin-top: 0px} +} + +h1, h2, h3, h4, h5 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: 500; + line-height: 1.25; + word-break: break-word; +} + +h1 { + margin-top: 0; + margin-bottom: 8px; + font-size: 2em; +} + +h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid #ececec; +} + +h3 { + font-size: 1.25em; +} + +.headline { + margin: -16px 0; + font-weight: 500; + font-size: 1.5em; + line-height: 1.25; + word-break: break-word; +} + +details > .headline { + margin: 0 0 -8px 0; +} + +.caption { + font-size: smaller; +} + +hr { + height: 4px; + padding: 0; + margin: 16px 0; + background-color: #e1e1e1; + border: 0; +} + +@media (max-width: 599px) { + .hide-xs { + display: none; + } +} diff --git a/jekyll_theme/assets/favicon.ico b/jekyll_theme/assets/favicon.ico new file mode 100644 index 0000000..0e3a9f1 Binary files /dev/null and b/jekyll_theme/assets/favicon.ico differ diff --git a/jekyll_theme/assets/img/older-tomato.ico b/jekyll_theme/assets/img/older-tomato.ico new file mode 100644 index 0000000..beceb4c Binary files /dev/null and b/jekyll_theme/assets/img/older-tomato.ico differ diff --git a/jekyll_theme/assets/img/older-tomato.jpg b/jekyll_theme/assets/img/older-tomato.jpg new file mode 100644 index 0000000..d500930 Binary files /dev/null and b/jekyll_theme/assets/img/older-tomato.jpg differ diff --git a/jekyll_theme/assets/img/older-tomato.png b/jekyll_theme/assets/img/older-tomato.png new file mode 100644 index 0000000..bbb023d Binary files /dev/null and b/jekyll_theme/assets/img/older-tomato.png differ diff --git a/jekyll_theme/assets/img/older-tomato.svg b/jekyll_theme/assets/img/older-tomato.svg new file mode 100644 index 0000000..78c1fd6 --- /dev/null +++ b/jekyll_theme/assets/img/older-tomato.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/jekyll_theme/assets/img/typewriter.svg b/jekyll_theme/assets/img/typewriter.svg new file mode 100644 index 0000000..a10a3c7 --- /dev/null +++ b/jekyll_theme/assets/img/typewriter.svg @@ -0,0 +1,14 @@ +--- +layout: null +--- + + + {%- if site.color_tomato_baseurl %} + + {%- else %} + + {%- endif %} + + + diff --git a/jekyll_theme/assets/pagesmap.xml b/jekyll_theme/assets/pagesmap.xml new file mode 100644 index 0000000..5f9ea85 --- /dev/null +++ b/jekyll_theme/assets/pagesmap.xml @@ -0,0 +1,22 @@ +--- +layout: null +permalink: pagesmap.xml +--- + + + +{%- assign sorted = site.pages | sort: 'date' %} +{%- for page in sorted %} +{%- if page.title %} + + {{ page.url | absolute_url }} + + + {%- comment %}{% endcomment %} + {{ site.time | date_to_xmlschema }} + daily + {% if page.date %}0.8{% else %}0.5{% endif %} + +{%- endif %} +{%- endfor %} + diff --git a/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Bold.woff b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Bold.woff new file mode 100644 index 0000000..4186db6 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Bold.woff differ diff --git a/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Italic.woff b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Italic.woff new file mode 100644 index 0000000..f9d9be5 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Italic.woff differ diff --git a/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Medium.woff b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Medium.woff new file mode 100644 index 0000000..7c54cb7 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Medium.woff differ diff --git a/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Regular.woff b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Regular.woff new file mode 100644 index 0000000..746bea2 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/JBMono/JetBrainsMono-Regular.woff differ diff --git a/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Bold.woff b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Bold.woff new file mode 100644 index 0000000..6208290 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Bold.woff differ diff --git a/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Italic.woff b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Italic.woff new file mode 100644 index 0000000..b2217d5 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Italic.woff differ diff --git a/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Medium.woff b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Medium.woff new file mode 100644 index 0000000..cb8ce53 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Medium.woff differ diff --git a/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Regular.woff b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Regular.woff new file mode 100644 index 0000000..43b5893 Binary files /dev/null and b/jekyll_theme/assets/resources/fonts/Roboto/Roboto-Regular.woff differ diff --git a/jekyll_theme/install.sh b/jekyll_theme/install.sh new file mode 100755 index 0000000..b825fa4 --- /dev/null +++ b/jekyll_theme/install.sh @@ -0,0 +1,4 @@ +#!/bin/bash +rm older-tomato-theme-0.1.0.gem +gem build older-tomato-theme.gemspec +sudo gem install --local older-tomato-theme-0.1.0.gem diff --git a/jekyll_theme/older-tomato-theme.gemspec b/jekyll_theme/older-tomato-theme.gemspec new file mode 100644 index 0000000..994c451 --- /dev/null +++ b/jekyll_theme/older-tomato-theme.gemspec @@ -0,0 +1,14 @@ +Gem::Specification.new do |spec| + spec.name = "older-tomato-theme" + spec.version = "0.1.0" + spec.authors = ["Golovin G.G."] + spec.email = ["gennadiy.golovin@internet.ru"] + + spec.summary = "older-tomato-theme" + spec.homepage = "https://hub.mos.ru/golovin.gg" + spec.license = "Nonstandard" + + spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r!^(_includes|_layouts|assets)!i) } + + spec.add_runtime_dependency "jekyll", "~> 4.3" +end