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.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 @@
+
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 @@
+
+
+
+
+
+ {{ 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 @@
+
+
+
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 @@
+
+
+{%- 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
+---
+
+
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