14 | 15 | {{ article.title | descriptionMarkdown | safe }} 16 | 17 |
18 | {% if ((not hasImage) and article.description) %} 19 |20 | {{ article.description | descriptionMarkdown | safe }} 21 |
22 | {% endif %} 23 |├── .nvmrc ├── .npmrc ├── src ├── data │ ├── permalink.js │ ├── pageType.js │ ├── env.js │ ├── constants.js │ └── meta.json ├── views │ ├── doc-json.njk │ ├── people-index.njk │ ├── people-info.njk │ ├── person-json.njk │ ├── article-index-json.njk │ ├── featured-json.njk │ ├── all.11tydata.js │ ├── people.11tydata.js │ ├── 404.11tydata.js │ ├── sc-all.11tydata.js │ ├── offline.11tydata.js │ ├── subscribe.11tydata.js │ ├── featured-json.11tydata.js │ ├── sitemap.njk │ ├── people-csv.11tydata.js │ ├── people-info.11tydata.js │ ├── people-csv.njk │ ├── sc-all.njk │ ├── sc.njk │ ├── sc-index.njk │ ├── page.11tydata.js │ ├── specials.11tydata.js │ ├── offline.njk │ ├── sc.11tydata.js │ ├── 404.njk │ ├── feed.11tydata.js │ ├── specials.njk │ ├── people-index.11tydata.js │ ├── page.njk │ ├── feed.njk │ ├── sitemap.11tydata.js │ ├── all.njk │ ├── article-index-json.11tydata.js │ └── sc-index.11tydata.js ├── includes │ ├── blocks │ │ ├── search-hits.njk │ │ ├── snow-25.njk │ │ ├── skip-link.njk │ │ ├── snow.njk │ │ ├── cookie-notification.njk │ │ ├── aside.njk │ │ ├── nav-list.njk │ │ ├── snow-toggle.njk │ │ ├── top-banner.njk │ │ ├── search-category.njk │ │ ├── theme-toggle.njk │ │ ├── person-avatar.njk │ │ ├── search-tags.njk │ │ ├── featured-article.njk │ │ ├── linked-article.njk │ │ ├── article-image.njk │ │ ├── search.njk │ │ ├── logo.njk │ │ ├── baseline.njk │ │ └── person.njk │ ├── analytics │ │ ├── google.njk │ │ └── metrika.njk │ ├── promos │ │ ├── default.njk │ │ ├── stream.njk │ │ └── dream-job.njk │ ├── related-articles-gallery.njk │ ├── articles-gallery.njk │ ├── subscribe-popup.njk │ └── practices.njk ├── favicon.ico ├── images │ ├── covers │ │ └── og.png │ ├── icons │ │ ├── 96x96.png │ │ ├── 144x144.png │ │ ├── 180x180.png │ │ ├── 192x192.png │ │ ├── 256x256.png │ │ ├── 512x512.png │ │ ├── maskable.png │ │ └── icon.svg │ ├── baseline │ │ ├── flag.svg │ │ ├── no.svg │ │ ├── preview.svg │ │ └── chrome.svg │ ├── top-banner │ │ ├── bat-teeth.svg │ │ └── bat-eyes.svg │ ├── partners │ │ └── practicum-icon.svg │ ├── assets │ │ └── cached-link.svg │ ├── publisher-logo.svg │ └── badges │ │ └── most-viewed-month-zeta.svg ├── fonts │ ├── graphik │ │ ├── graphik-medium.woff2 │ │ ├── graphik-regular.woff2 │ │ └── graphik-regular-italic.woff2 │ └── spot-mono │ │ └── spot-mono-light.woff2 ├── styles │ ├── blocks │ │ ├── snow-toggle.css │ │ ├── materials-collection.css │ │ ├── all-articles.css │ │ ├── search-result-list.css │ │ ├── code-fix.css │ │ ├── base-list.css │ │ ├── snow-25.css │ │ ├── person-grid.css │ │ ├── filter-group.css │ │ ├── contributors.css │ │ ├── visually-hidden.css │ │ ├── format-block.css │ │ ├── inline-code.css │ │ ├── related-articles-list.css │ │ ├── container.css │ │ ├── color-picker.css │ │ ├── cookie-notification.css │ │ ├── details.css │ │ ├── hotkey.css │ │ ├── figure.css │ │ ├── persons-list.css │ │ ├── index-group-list.css │ │ ├── search-category.css │ │ ├── table-wrapper.css │ │ ├── feedback-control-list.css │ │ ├── notification.css │ │ ├── person-avatar.css │ │ ├── base.css │ │ ├── snow.css │ │ ├── articles-gallery.css │ │ ├── breadcrumbs.css │ │ ├── search-tag.css │ │ ├── copy-button.css │ │ ├── people-page.css │ │ ├── article-image.css │ │ ├── vote.css │ │ ├── toc.css │ │ ├── standalone-page.css │ │ ├── suggestion-list.css │ │ ├── not-found.css │ │ ├── article-indexes-list.css │ │ ├── featured-articles-list.css │ │ ├── callout.css │ │ ├── person.css │ │ ├── float-button.css │ │ ├── theme-toggle.css │ │ ├── person-links-list.css │ │ ├── button.css │ │ ├── tag-filter.css │ │ ├── header-animation.css │ │ ├── questions.css │ │ ├── switch.css │ │ ├── filter-panel.css │ │ ├── intro.css │ │ ├── top-banner.css │ │ ├── search-hit.css │ │ ├── index-section.css │ │ └── footer.css │ ├── base-colors.css │ ├── dark-theme.css │ ├── light-theme.css │ ├── fonts.sc.css │ └── fonts.css ├── libs │ ├── title-formatter │ │ └── title-formatter.js │ ├── role-constructor │ │ ├── collection.json │ │ └── role-constructor.js │ ├── __tests__ │ │ └── collection-helpers.js │ ├── collection-helpers │ │ └── set-path.js │ └── github-contribution-stats │ │ └── github-contribution-stats.js ├── scripts │ ├── libs │ │ ├── __tests__ │ │ │ ├── example.js │ │ │ ├── toc-text-crop-test.js │ │ │ └── last-update-test.js │ │ ├── debounce.js │ │ └── throttle.js │ ├── core │ │ ├── base-component.js │ │ ├── search-api-client.js │ │ └── search-commons.js │ ├── modules │ │ ├── persons-list.js │ │ ├── transform-article-data.js │ │ ├── article-nav.js │ │ ├── article-aside.js │ │ ├── linked-article-navigation.js │ │ ├── toc-text-crop.js │ │ ├── cookie-notification.js │ │ ├── filter-panel.js │ │ ├── search-page-filter.js │ │ ├── code-line-numbers.js │ │ ├── articles-gallery.js │ │ ├── last-update.js │ │ ├── person-badges-tooltip.js │ │ ├── snow-toggle.js │ │ ├── articles-index.js │ │ ├── top-banner.js │ │ ├── copy-code-snippet.js │ │ ├── header-quick-search-presenter.js │ │ ├── logo.js │ │ ├── form-cache.js │ │ └── people.js │ └── index.js ├── transforms │ ├── link-transform.js │ ├── article-inline-code-transform.js │ ├── table-transform.js │ ├── iframe-attr-transform.js │ ├── details-transform.js │ ├── color-picker-transform.js │ ├── demo-link-transform.js │ ├── headings-id-transform.js │ ├── toc-transform.js │ ├── answers-link-transform.js │ ├── callout-transform.js │ ├── code-classes-transform.js │ ├── demo-external-link-transform.js │ ├── code-breakify-transform.js │ └── image-place-transform.js ├── robots.txt ├── promos │ ├── b-day.md │ ├── doka-dvizh.md │ ├── doka-dvizh-2.md │ ├── oklich-stream.md │ ├── dream-job.md │ ├── pwa-stream.md │ ├── algos-after.md │ ├── dream-job-final.md │ ├── algos.md │ ├── border-job.md │ ├── burnout.md │ ├── interview-promo.md │ ├── oklich-questions.md │ ├── interview-search.md │ └── stream.md ├── layouts │ └── base.njk ├── manifest.json └── markdown-it.js ├── .babelrc ├── CODEOWNERS ├── .prettierrc.json ├── .dockerignore ├── .eslintignore ├── .editorconfig ├── jest.config.js ├── jest.setup.js ├── Dockerfile ├── config ├── env.js ├── category-colors.js └── constants.js ├── .eslintrc.json ├── .gitignore ├── docs ├── README.md ├── deploy.md ├── license.md └── how-to-run.md ├── .github ├── workflows │ ├── update-release.yml │ ├── docker-deploy.yml │ ├── linting.yml │ ├── w3c-validator.yml │ └── product-deploy.yml ├── release.yml └── scripts │ └── update-release.sh ├── .env.example ├── .stylelintrc.json └── LICENSE.md /.nvmrc: -------------------------------------------------------------------------------- 1 | 16 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict = true 2 | -------------------------------------------------------------------------------- /src/data/permalink.js: -------------------------------------------------------------------------------- 1 | module.exports = false 2 | -------------------------------------------------------------------------------- /src/data/pageType.js: -------------------------------------------------------------------------------- 1 | module.exports = 'WebPage' 2 | -------------------------------------------------------------------------------- /src/views/doc-json.njk: -------------------------------------------------------------------------------- 1 | {{ docJson | dump | safe }} 2 | -------------------------------------------------------------------------------- /src/views/people-index.njk: -------------------------------------------------------------------------------- 1 | {{ json | dump | safe }} 2 | -------------------------------------------------------------------------------- /src/views/people-info.njk: -------------------------------------------------------------------------------- 1 | {{ json | dump | safe }} 2 | -------------------------------------------------------------------------------- /src/views/person-json.njk: -------------------------------------------------------------------------------- 1 | {{ json | dump | safe }} 2 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env"] 3 | } 4 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @furtivite @solarrust @igsekor @HellSquirrel 2 | -------------------------------------------------------------------------------- /src/views/article-index-json.njk: -------------------------------------------------------------------------------- 1 | {{ json | dump | safe }} 2 | -------------------------------------------------------------------------------- /src/views/featured-json.njk: -------------------------------------------------------------------------------- 1 | {{ featuredJson | dump | safe }} 2 | -------------------------------------------------------------------------------- /src/includes/blocks/search-hits.njk: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/favicon.ico -------------------------------------------------------------------------------- /src/data/env.js: -------------------------------------------------------------------------------- 1 | const env = require('../../config/env') 2 | 3 | module.exports = env 4 | -------------------------------------------------------------------------------- /src/includes/blocks/snow-25.njk: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth" : 120, 3 | "semi": false, 4 | "singleQuote": true 5 | } 6 | -------------------------------------------------------------------------------- /src/images/covers/og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/covers/og.png -------------------------------------------------------------------------------- /src/images/icons/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/icons/96x96.png -------------------------------------------------------------------------------- /src/data/constants.js: -------------------------------------------------------------------------------- 1 | const constants = require('../../config/constants') 2 | 3 | module.exports = constants 4 | -------------------------------------------------------------------------------- /src/images/icons/144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/icons/144x144.png -------------------------------------------------------------------------------- /src/images/icons/180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/icons/180x180.png -------------------------------------------------------------------------------- /src/images/icons/192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/icons/192x192.png -------------------------------------------------------------------------------- /src/images/icons/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/icons/256x256.png -------------------------------------------------------------------------------- /src/images/icons/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/icons/512x512.png -------------------------------------------------------------------------------- /src/images/icons/maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/images/icons/maskable.png -------------------------------------------------------------------------------- /src/includes/blocks/skip-link.njk: -------------------------------------------------------------------------------- 1 | 2 | К контенту 3 | 4 | -------------------------------------------------------------------------------- /src/fonts/graphik/graphik-medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/fonts/graphik/graphik-medium.woff2 -------------------------------------------------------------------------------- /src/fonts/graphik/graphik-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/fonts/graphik/graphik-regular.woff2 -------------------------------------------------------------------------------- /src/views/all.11tydata.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | title: 'Все статьи', 3 | layout: 'base.njk', 4 | permalink: '/all/', 5 | } 6 | -------------------------------------------------------------------------------- /src/fonts/spot-mono/spot-mono-light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/fonts/spot-mono/spot-mono-light.woff2 -------------------------------------------------------------------------------- /src/styles/blocks/snow-toggle.css: -------------------------------------------------------------------------------- 1 | @media not all and (width >= 768px) { 2 | .snow-toggle { 3 | margin-top: 1em; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/views/people.11tydata.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | title: 'Участники', 3 | layout: 'base.njk', 4 | permalink: '/people/', 5 | } 6 | -------------------------------------------------------------------------------- /src/fonts/graphik/graphik-regular-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doka-guide/platform/HEAD/src/fonts/graphik/graphik-regular-italic.woff2 -------------------------------------------------------------------------------- /src/styles/blocks/materials-collection.css: -------------------------------------------------------------------------------- 1 | .materials-collection { 2 | padding-bottom: 40px; 3 | padding-bottom: clamp(40px, 11%, 180px); 4 | } 5 | -------------------------------------------------------------------------------- /src/views/404.11tydata.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | title: 'Страница не найдена', 3 | layout: 'base.njk', 4 | permalink: '/404/index.html', 5 | } 6 | -------------------------------------------------------------------------------- /src/views/sc-all.11tydata.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | title: 'Все статьи', 3 | layout: 'base.njk', 4 | permalink: '/all/index.sc.html', 5 | } 6 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | docs 4 | 5 | .idea 6 | .git* 7 | .vscode 8 | *.code-workspace 9 | *.sublime-workspace 10 | *.sublime-project -------------------------------------------------------------------------------- /src/includes/blocks/snow.njk: -------------------------------------------------------------------------------- 1 |{{ content | safe }}
5 | 13 |{{ content | safe }}
5 | 13 |{{ content | safe }}
5 | 13 |
14 | Дока сейчас оффлайн!,
15 | Эта статья недоступна,,
16 | но смотрите, какие уже есть:
17 |
16 | Мы ничего не нашли,
17 | но смотрите, что есть ещё:
18 |
19 | {{ description }} 20 |
21 | {% endif %} 22 |19 | {{ description }} 20 |
21 | {% endif %} 22 |20 | {{ article.description | descriptionMarkdown | safe }} 21 |
22 | {% endif %} 23 |${content}` : `${content}`
21 | },
22 | })
23 |
24 | const defaultRenderer = md.renderer.rules.html_block
25 | md.renderer.rules.html_block = function (tokens, idx, options, env, self) {
26 | const token = tokens[idx]
27 | const blockContent = token.content.trim()
28 | // отдельно обрабатываем html-блоки с тегом видео
29 | if (blockContent.startsWith('