85 changed files with 22130 additions and 1117 deletions
-
190.eleventy.js
-
8.eleventyignore
-
10.gitignore
-
1.nvmrc
-
1.ruby-version
-
33Gemfile
-
146Gemfile.lock
-
1SECURITY.md
-
67_config.yml
-
152_includes/anchor-parser.html
-
182_includes/toc.html
-
10_layouts/compress.html
-
30_layouts/level.html
-
64_sass/_highlight.scss
-
0data/people.csv
-
0data/press.csv
-
0data/resources.csv
-
16data/site.json
-
9humans.txt
-
0includes/comments.html
-
4includes/contribute.html
-
0includes/draft.html
-
0includes/edit.html
-
0includes/footer.html
-
0includes/head.html
-
0includes/l10n.html
-
0includes/nav.html
-
0includes/privacypride.html
-
0includes/share.html
-
8layouts/full.html
-
29layouts/level.html
-
0layouts/page.html
-
1layouts/wrapper.html
-
21056package-lock.json
-
364package.json
-
4pages/But.md
-
9pages/Contribute.md
-
23pages/Contributors.md
-
4pages/Delete.md
-
16pages/Development.md
-
23pages/FAQ.md
-
54pages/Home.html
-
6pages/Learn.md
-
4pages/Links.md
-
4pages/Listen.md
-
8pages/Localization.md
-
10pages/Notes.md
-
4pages/Path.md
-
12pages/Press.md
-
28pages/Quick.md
-
65pages/Solutions.md
-
4pages/Watch.md
-
4pages/What.md
-
7pages/Why.md
-
21pages/about.md
-
4pages/fr/About.md
-
4pages/fr/FAQ.md
-
24pages/fr/Home.html
-
4pages/fr/Path.md
-
4pages/fr/Quick.md
-
4pages/fr/Why.md
-
2pages/index.html
-
12pages/it/Ascolta.md
-
6pages/it/Contribuisci.md
-
14pages/it/Elimina.md
-
6pages/it/FAQ.md
-
5pages/it/Guarda.md
-
28pages/it/Home.html
-
14pages/it/Info.md
-
62pages/it/Links.md
-
10pages/it/Ma.md
-
23pages/it/Partecipanti.md
-
106pages/it/Perché.md
-
24pages/it/Percorso.md
-
61pages/it/Soluzioni.md
-
10pages/it/Stampa.md
-
46pages/it/Veloce.md
-
35redirect.njk
-
4robots.txt
-
6sitemap.njk
-
4styles/parts/_eb-garamond.scss
-
2styles/parts/_inter.scss
-
17styles/parts/_nav.scss
-
2styles/parts/_ubuntu-mono.scss
-
12styles/style.scss
@ -0,0 +1,190 @@ |
|||
const fs = require('fs'); |
|||
const miniHtml = require('html-minifier'); |
|||
const _ = require('lodash'); |
|||
const pluginRss = require('@11ty/eleventy-plugin-rss'); |
|||
|
|||
// Markdown //
|
|||
const markdownIt = require('markdown-it'); |
|||
const md = markdownIt({ |
|||
html: true, |
|||
fence: false |
|||
}) |
|||
.disable('code') |
|||
.use(require('markdown-it-attrs')) |
|||
.use(require('markdown-it-anchor')) |
|||
.use(require('markdown-it-footnote')) |
|||
.use(require('markdown-it-sup')) |
|||
.use(require('markdown-it-sub')) |
|||
.use(require('markdown-it-ins')) |
|||
.use(require('markdown-it-mark')) |
|||
.use(require('markdown-it-task-lists')) |
|||
.use(require('markdown-it-container'), 'box') |
|||
.use(require('markdown-it-collapsible')) |
|||
.use(require('markdown-it-abbr')) |
|||
.use(require('markdown-it-mathjax3')); |
|||
|
|||
module.exports = function(eleventyConfig) { |
|||
// General //
|
|||
eleventyConfig.setLibrary('md', md); |
|||
eleventyConfig.setFrontMatterParsingOptions({ |
|||
permalink: '/{{ page.fileSlug }}/', |
|||
}); |
|||
eleventyConfig.addDataExtension('csv', contents => require('csv-parse/sync').parse(contents, {columns: true, skip_empty_lines: true})); |
|||
eleventyConfig.setFrontMatterParsingOptions({ excerpt: true, excerpt_separator: '<!--excerpt-->'}); |
|||
eleventyConfig.setQuietMode(true); |
|||
|
|||
// Collections //
|
|||
eleventyConfig.addCollection('posts', function(collection) { |
|||
return collection.getFilteredByGlob('content/posts/*').sort((a, b) => { |
|||
return b.date - a.date; // sort by date - descending
|
|||
}); |
|||
}); |
|||
eleventyConfig.addCollection('jam', function(collection) { |
|||
return collection.getFilteredByGlob('content/notes/public/*').sort((a, b) => { |
|||
return b.date - a.date; |
|||
}); |
|||
}); |
|||
eleventyConfig.addCollection('poetry', function(collection) { |
|||
return collection.getFilteredByGlob('content/poetry/*').sort((a, b) => { |
|||
return b.date - a.date; |
|||
}); |
|||
}); |
|||
eleventyConfig.addCollection('sconnesso', function(collection) { |
|||
return collection.getFilteredByGlob('content/sconnesso/*').sort((a, b) => { |
|||
return b.date - a.date; |
|||
}); |
|||
}); |
|||
// Multilingual sitemap collection. See https://github.com/quasibit/eleventy-plugin-sitemap#create-a-multilingual-sitemap
|
|||
eleventyConfig.addCollection('sitemap', function(collectionApi) { |
|||
return collectionApi |
|||
.getAll() |
|||
.map((item, index, all) => { |
|||
return { |
|||
url: item.url, |
|||
date: item.date, |
|||
data: { |
|||
...item.data, |
|||
sitemap: { |
|||
...item.data.sitemap, |
|||
links: |
|||
all |
|||
.filter(other => other.data.ref === item.data.ref) |
|||
.map(translation => { |
|||
return { |
|||
url: translation.url, |
|||
lang: translation.data.lang, |
|||
}; |
|||
}), |
|||
}, |
|||
}, |
|||
} |
|||
}); |
|||
}); |
|||
|
|||
|
|||
// Scss //
|
|||
eleventyConfig.addWatchTarget('styles'); |
|||
eleventyConfig.addPassthroughCopy({'styles': '/'}); |
|||
eleventyConfig.addPassthroughCopy({'svg': '/'}); |
|||
eleventyConfig.addPassthroughCopy('js'); |
|||
|
|||
// Plugins //
|
|||
eleventyConfig.addPlugin(require('@11ty/eleventy-plugin-directory-output')); |
|||
eleventyConfig.addPlugin(require('eleventy-plugin-find')); |
|||
eleventyConfig.addPlugin(require('@quasibit/eleventy-plugin-schema')); |
|||
eleventyConfig.addPlugin(require('@11ty/eleventy-plugin-syntaxhighlight')); |
|||
eleventyConfig.addPlugin(require('@aloskutov/eleventy-plugin-external-links'), { |
|||
url: 'https://quitsocialmedia.club', |
|||
rel: ['noreferrer', 'noopener', 'external'], |
|||
overwrite: false, |
|||
}); |
|||
eleventyConfig.addPlugin(require('eleventy-plugin-embed-everything'), { |
|||
youtube: { |
|||
options: { |
|||
embedClass: 'embed', |
|||
lite: { |
|||
css: { |
|||
enabled: false |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
spotify: { |
|||
options: { |
|||
embedClass: 'embed', |
|||
width: '100%' |
|||
} |
|||
}, |
|||
instagram: { |
|||
options: { |
|||
embedClass: 'embed' |
|||
} |
|||
} |
|||
}); |
|||
eleventyConfig.addPlugin(require('eleventy-plugin-svg-contents')); |
|||
eleventyConfig.addPlugin(require('@sardine/eleventy-plugin-tinysvg'), { |
|||
baseUrl: 'assets/svg/' |
|||
}); |
|||
eleventyConfig.addPlugin(require('eleventy-plugin-toc'), { |
|||
ul: true, |
|||
}); |
|||
eleventyConfig.addPlugin(pluginRss); |
|||
eleventyConfig.addPlugin(require('@quasibit/eleventy-plugin-sitemap'), { |
|||
sitemap: { |
|||
hostname: 'https://quitsocialmedia.club' |
|||
}, |
|||
}); |
|||
|
|||
// Filters //
|
|||
eleventyConfig.addFilter('reverse', (collection) => { |
|||
const arr = [...collection]; |
|||
return arr.reverse(); |
|||
}); |
|||
eleventyConfig.addFilter('markdownify', (str) => { |
|||
return md.renderInline(str); |
|||
}); |
|||
// RSS Filters //
|
|||
eleventyConfig.addFilter('dateToRfc3339', pluginRss.dateToRfc3339); |
|||
eleventyConfig.addFilter('getNewestCollectionItemDate', pluginRss.getNewestCollectionItemDate); |
|||
eleventyConfig.addFilter('absoluteUrl', pluginRss.absoluteUrl); |
|||
eleventyConfig.addFilter('convertHtmlToAbsoluteUrls', pluginRss.convertHtmlToAbsoluteUrls); |
|||
|
|||
// Minify output //
|
|||
eleventyConfig.addTransform('miniHtml', function(content, outputPath) { |
|||
if( this.outputPath && this.outputPath.endsWith('.html') ) { |
|||
let minified = miniHtml.minify(content, { |
|||
useShortDoctype: true, |
|||
removeComments: true, |
|||
collapseWhitespace: true, |
|||
minifyCSS: true, |
|||
minifyJS: true, |
|||
minifyURLs: true |
|||
}); |
|||
return minified; |
|||
} |
|||
return content; |
|||
}); |
|||
|
|||
// 404 //
|
|||
eleventyConfig.setBrowserSyncConfig({ |
|||
callbacks: { |
|||
ready: function(err, bs) { |
|||
bs.addMiddleware('*', (req, res) => { |
|||
const content_404 = fs.readFileSync('www/404.html'); |
|||
res.writeHead(404, { 'Content-Type': 'text/html; charset=UTF-8' }); |
|||
res.write(content_404); |
|||
res.end(); |
|||
}); |
|||
} |
|||
} |
|||
}); |
|||
|
|||
return { |
|||
dir: { |
|||
includes: 'includes', |
|||
layouts: 'layouts', |
|||
data: 'data', |
|||
output: 'www' |
|||
} |
|||
}; // there should never be anything after the “return” function
|
|||
}; |
@ -0,0 +1,8 @@ |
|||
riordinare/ |
|||
content/notes/templates/ |
|||
content/notes/.obsidian |
|||
content/notes/.trash |
|||
content/notes/PISE |
|||
content/notes/obsidian.css |
|||
content/notes/.* |
|||
README.md |
@ -0,0 +1,10 @@ |
|||
# Eleventy stuff |
|||
node_modules |
|||
dist |
|||
.env |
|||
cache |
|||
.cache |
|||
www |
|||
|
|||
# Local Netlify folder |
|||
.netlify |
@ -0,0 +1 @@ |
|||
lts/* |
@ -1 +0,0 @@ |
|||
3.1.0 |
@ -1,33 +0,0 @@ |
|||
source "https://rubygems.org" |
|||
# Hello! This is where you manage which Jekyll version is used to run. |
|||
# When you want to use a different version, change it below, save the |
|||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: |
|||
# |
|||
# bundle exec jekyll serve |
|||
# |
|||
# This will help ensure the proper Jekyll version is running. |
|||
# Happy Jekylling! |
|||
gem "jekyll" |
|||
|
|||
# Add Liquid-C for faster rendering of Liquid |
|||
gem "liquid-c" |
|||
|
|||
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and |
|||
# uncomment the line below. To upgrade, run `bundle update github-pages`. |
|||
# gem "github-pages", group: :jekyll_plugins |
|||
# If you have any plugins, put them here! |
|||
group :jekyll_plugins do |
|||
gem "webrick" |
|||
gem "jekyll-feed" |
|||
gem "jekyll-seo-tag" |
|||
gem "jekyll-sitemap" |
|||
gem "jekyll-last-modified-at" |
|||
gem "jekyll-target-blank" |
|||
gem "jekyll-watch" |
|||
gem "jekyll-redirect-from" |
|||
gem "jekyll-email-protect" |
|||
gem "jekyll-debug" |
|||
gem "jekyll-mentions" |
|||
gem "jekyll-auto-image" |
|||
gem "html-proofer" |
|||
end |
@ -1,146 +0,0 @@ |
|||
GEM |
|||
remote: https://rubygems.org/ |
|||
specs: |
|||
activesupport (7.0.0) |
|||
concurrent-ruby (~> 1.0, >= 1.0.2) |
|||
i18n (>= 1.6, < 2) |
|||
minitest (>= 5.1) |
|||
tzinfo (~> 2.0) |
|||
addressable (2.8.0) |
|||
public_suffix (>= 2.0.2, < 5.0) |
|||
coderay (1.1.3) |
|||
colorator (1.1.0) |
|||
concurrent-ruby (1.1.9) |
|||
em-websocket (0.5.3) |
|||
eventmachine (>= 0.12.9) |
|||
http_parser.rb (~> 0) |
|||
ethon (0.15.0) |
|||
ffi (>= 1.15.0) |
|||
eventmachine (1.2.7) |
|||
ffi (1.15.4) |
|||
forwardable-extended (2.6.0) |
|||
html-pipeline (2.14.0) |
|||
activesupport (>= 2) |
|||
nokogiri (>= 1.4) |
|||
html-proofer (3.19.3) |
|||
addressable (~> 2.3) |
|||
mercenary (~> 0.3) |
|||
nokogiri (~> 1.12) |
|||
parallel (~> 1.3) |
|||
rainbow (~> 3.0) |
|||
typhoeus (~> 1.3) |
|||
yell (~> 2.0) |
|||
http_parser.rb (0.8.0) |
|||
i18n (1.8.11) |
|||
concurrent-ruby (~> 1.0) |
|||
jekyll (4.2.1) |
|||
addressable (~> 2.4) |
|||
colorator (~> 1.0) |
|||
em-websocket (~> 0.5) |
|||
i18n (~> 1.0) |
|||
jekyll-sass-converter (~> 2.0) |
|||
jekyll-watch (~> 2.0) |
|||
kramdown (~> 2.3) |
|||
kramdown-parser-gfm (~> 1.0) |
|||
liquid (~> 4.0) |
|||
mercenary (~> 0.4.0) |
|||
pathutil (~> 0.9) |
|||
rouge (~> 3.0) |
|||
safe_yaml (~> 1.0) |
|||
terminal-table (~> 2.0) |
|||
jekyll-auto-image (1.1.3) |
|||
jekyll |
|||
jekyll-debug (0.0.2) |
|||
liquid (>= 2.5, < 5.0) |
|||
pry (~> 0.10) |
|||
rb-readline (~> 0.5) |
|||
jekyll-email-protect (1.1.0) |
|||
jekyll-feed (0.16.0) |
|||
jekyll (>= 3.7, < 5.0) |
|||
jekyll-last-modified-at (1.3.0) |
|||
jekyll (>= 3.7, < 5.0) |
|||
posix-spawn (~> 0.3.9) |
|||
jekyll-mentions (1.6.0) |
|||
html-pipeline (~> 2.3) |
|||
jekyll (>= 3.7, < 5.0) |
|||
jekyll-redirect-from (0.16.0) |
|||
jekyll (>= 3.3, < 5.0) |
|||
jekyll-sass-converter (2.1.0) |
|||
sassc (> 2.0.1, < 3.0) |
|||
jekyll-seo-tag (2.7.1) |
|||
jekyll (>= 3.8, < 5.0) |
|||
jekyll-sitemap (1.4.0) |
|||
jekyll (>= 3.7, < 5.0) |
|||
jekyll-target-blank (2.0.0) |
|||
jekyll (>= 3.0, < 5.0) |
|||
nokogiri (~> 1.10) |
|||
jekyll-watch (2.2.1) |
|||
listen (~> 3.0) |
|||
kramdown (2.3.1) |
|||
rexml |
|||
kramdown-parser-gfm (1.1.0) |
|||
kramdown (~> 2.0) |
|||
liquid (4.0.3) |
|||
liquid-c (4.0.0) |
|||
liquid (>= 3.0.0) |
|||
listen (3.7.0) |
|||
rb-fsevent (~> 0.10, >= 0.10.3) |
|||
rb-inotify (~> 0.9, >= 0.9.10) |
|||
mercenary (0.4.0) |
|||
method_source (1.0.0) |
|||
mini_portile2 (2.6.1) |
|||
minitest (5.15.0) |
|||
nokogiri (1.12.5) |
|||
mini_portile2 (~> 2.6.1) |
|||
racc (~> 1.4) |
|||
parallel (1.21.0) |
|||
pathutil (0.16.2) |
|||
forwardable-extended (~> 2.6) |
|||
posix-spawn (0.3.15) |
|||
pry (0.14.1) |
|||
coderay (~> 1.1) |
|||
method_source (~> 1.0) |
|||
public_suffix (4.0.6) |
|||
racc (1.6.0) |
|||
rainbow (3.0.0) |
|||
rb-fsevent (0.11.0) |
|||
rb-inotify (0.10.1) |
|||
ffi (~> 1.0) |
|||
rb-readline (0.5.5) |
|||
rexml (3.2.5) |
|||
rouge (3.27.0) |
|||
safe_yaml (1.0.5) |
|||
sassc (2.4.0) |
|||
ffi (~> 1.9) |
|||
terminal-table (2.0.0) |
|||
unicode-display_width (~> 1.1, >= 1.1.1) |
|||
typhoeus (1.4.0) |
|||
ethon (>= 0.9.0) |
|||
tzinfo (2.0.4) |
|||
concurrent-ruby (~> 1.0) |
|||
unicode-display_width (1.8.0) |
|||
webrick (1.7.0) |
|||
yell (2.2.2) |
|||
|
|||
PLATFORMS |
|||
ruby |
|||
|
|||
DEPENDENCIES |
|||
html-proofer |
|||
jekyll |
|||
jekyll-auto-image |
|||
jekyll-debug |
|||
jekyll-email-protect |
|||
jekyll-feed |
|||
jekyll-last-modified-at |
|||
jekyll-mentions |
|||
jekyll-redirect-from |
|||
jekyll-seo-tag |
|||
jekyll-sitemap |
|||
jekyll-target-blank |
|||
jekyll-watch |
|||
liquid-c |
|||
webrick |
|||
|
|||
BUNDLED WITH |
|||
2.2.31 |
@ -1 +0,0 @@ |
|||
This website has no tracking, no ads, no analytics, no annoying stuff, therefore no possible security breaches. Nevertheless, there's a tiny little part of back-end cloud computing if you subscribe to the newsletter. If you encounter any problem in this process, please send an email to [security@quitsocialmedia.club](mailto:security@quitsocialmedia.club). |
@ -1,67 +0,0 @@ |
|||
title: Quit Social Media |
|||
email: hi@quitsocialmedia.club |
|||
description: >- |
|||
Why and how to quit Social Media. |
|||
baseurl: '' |
|||
url: https://quitsocialmedia.club |
|||
author: Tommi |
|||
publisher: Tommi |
|||
github_username: xplosionmind |
|||
git_repository: quitsocialmedia.club |
|||
future: true |
|||
profile: true |
|||
livereload: true |
|||
strict_front_matter: true |
|||
favicon: /favicon.svg |
|||
image: /logos/qsm.png |
|||
images: /images |
|||
assets: /assets |
|||
video: /video |
|||
audio: /audio |
|||
logos: /logos |
|||
fonts: 'https://tommi.space/fonts' |
|||
exclude: |
|||
- riordinare/ |
|||
keep_files: |
|||
- images/ |
|||
- assets/ |
|||
|
|||
social: |
|||
name: xplosionmind |
|||
tagline: Living a healthier life on the web |
|||
twitter: |
|||
username: xplosionmind |
|||
card: summary |
|||
|
|||
plugins: |
|||
- jekyll-feed |
|||
- jekyll-seo-tag |
|||
- jekyll-sitemap |
|||
- jekyll-last-modified-at |
|||
- jekyll-target-blank |
|||
- jekyll-watch |
|||
- jekyll-redirect-from |
|||
- jekyll-debug |
|||
- jekyll-watch |
|||
- jekyll-email-protect |
|||
|
|||
sass: |
|||
style: compressed |
|||
|
|||
compress_html: |
|||
clippings: all |
|||
comments: all |
|||
endings: all |
|||
startings: all |
|||
|
|||
permalink: /:title |
|||
defaults: |
|||
- |
|||
scope: |
|||
path: '' |
|||
values: |
|||
layout: page |
|||
lang: en |
|||
image: /logos/qsm.png |
|||
toc: true |
|||
anchors: true |
@ -1,152 +0,0 @@ |
|||
{% capture headingsWorkspace %} |
|||
{% comment %} |
|||
Copyright (c) 2018 Vladimir "allejo" Jimenez |
|||
|
|||
Permission is hereby granted, free of charge, to any person |
|||
obtaining a copy of this software and associated documentation |
|||
files (the "Software"), to deal in the Software without |
|||
restriction, including without limitation the rights to use, |
|||
copy, modify, merge, publish, distribute, sublicense, and/or sell |
|||
copies of the Software, and to permit persons to whom the |
|||
Software is furnished to do so, subject to the following |
|||
conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be |
|||
included in all copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
|||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
|||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
|||
OTHER DEALINGS IN THE SOFTWARE. |
|||
{% endcomment %} |
|||
{% comment %} |
|||
Version 1.0.9 |
|||
https://github.com/allejo/jekyll-anchor-headings |
|||
|
|||
"Be the pull request you wish to see in the world." ~Ben Balter |
|||
|
|||
Usage: |
|||
{% include anchor_headings.html html=content anchorBody="#" %} |
|||
|
|||
Parameters: |
|||
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll |
|||
|
|||
Optional Parameters: |
|||
* beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content |
|||
* headerAttrs (string) : '' - Any custom HTML attributes that will be added to the heading tag; you may NOT use `id`; |
|||
the `%heading%` and `%html_id%` placeholders are available |
|||
* anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `<a>` tag; you may NOT use `href`, `class` or `title`; |
|||
the `%heading%` and `%html_id%` placeholders are available |
|||
* anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available |
|||
* anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space |
|||
* anchorTitle (string) : '' - The `title` attribute that will be used for anchors |
|||
* h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored |
|||
* h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored |
|||
* bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content |
|||
* bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content |
|||
|
|||
Output: |
|||
The original HTML with the addition of anchors inside of all of the h1-h6 headings. |
|||
{% endcomment %} |
|||
|
|||
{% assign minHeader = include.h_min | default: 1 %} |
|||
{% assign maxHeader = include.h_max | default: 6 %} |
|||
{% assign beforeHeading = include.beforeHeading %} |
|||
{% assign nodes = include.html | split: '<h' %} |
|||
|
|||
{% capture edited_headings %}{% endcapture %} |
|||
|
|||
{% for _node in nodes %} |
|||
{% capture node %}{{ _node | strip }}{% endcapture %} |
|||
|
|||
{% if node == "" %} |
|||
{% continue %} |
|||
{% endif %} |
|||
|
|||
{% assign nextChar = node | replace: '"', '' | strip | slice: 0, 1 %} |
|||
{% assign headerLevel = nextChar | times: 1 %} |
|||
|
|||
<!-- If the level is cast to 0, it means it's not a h1-h6 tag, so let's see if we need to fix it --> |
|||
{% if headerLevel == 0 %} |
|||
<!-- Split up the node based on closing angle brackets and get the first one. --> |
|||
{% assign firstChunk = node | split: '>' | first %} |
|||
|
|||
<!-- If the first chunk does NOT contain a '<', that means we've broken another HTML tag that starts with 'h' --> |
|||
{% unless firstChunk contains '<' %} |
|||
{% capture node %}<h{{ node }}{% endcapture %} |
|||
{% endunless %} |
|||
|
|||
{% capture edited_headings %}{{ edited_headings }}{{ node }}{% endcapture %} |
|||
{% continue %} |
|||
{% endif %} |
|||
|
|||
{% capture _closingTag %}</h{{ headerLevel }}>{% endcapture %} |
|||
{% assign _workspace = node | split: _closingTag %} |
|||
{% assign _idWorkspace = _workspace[0] | split: 'id="' %} |
|||
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %} |
|||
{% assign html_id = _idWorkspace[0] %} |
|||
|
|||
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} |
|||
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} |
|||
|
|||
<!-- Build the anchor to inject for our heading --> |
|||
{% capture anchor %}{% endcapture %} |
|||
|
|||
{% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} |
|||
{% assign escaped_header = header | strip_html %} |
|||
|
|||
{% if include.headerAttrs %} |
|||
{% capture _hAttrToStrip %}{{ _hAttrToStrip | split: '>' | first }} {{ include.headerAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}>{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% capture anchor %}href="#{{ html_id }}"{% endcapture %} |
|||
|
|||
{% if include.anchorClass %} |
|||
{% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% if include.anchorTitle %} |
|||
{% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', escaped_header }}"{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% if include.anchorAttrs %} |
|||
{% capture anchor %}{{ anchor }} {{ include.anchorAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% capture anchor %}<a {{ anchor }}>{{ include.anchorBody | replace: '%heading%', escaped_header | default: '' }}</a>{% endcapture %} |
|||
|
|||
<!-- In order to prevent adding extra space after a heading, we'll let the 'anchor' value contain it --> |
|||
{% if beforeHeading %} |
|||
{% capture anchor %}{{ anchor }} {% endcapture %} |
|||
{% else %} |
|||
{% capture anchor %} {{ anchor }}{% endcapture %} |
|||
{% endif %} |
|||
{% endif %} |
|||
|
|||
{% capture new_heading %} |
|||
<h{{ _hAttrToStrip }} |
|||
{{ include.bodyPrefix }} |
|||
{% if beforeHeading %} |
|||
{{ anchor }}{{ header }} |
|||
{% else %} |
|||
{{ header }}{{ anchor }} |
|||
{% endif %} |
|||
{{ include.bodySuffix }} |
|||
</h{{ headerLevel }}> |
|||
{% endcapture %} |
|||
|
|||
<!-- |
|||
If we have content after the `</hX>` tag, then we'll want to append that here so we don't lost any content. |
|||
--> |
|||
{% assign chunkCount = _workspace | size %} |
|||
{% if chunkCount > 1 %} |
|||
{% capture new_heading %}{{ new_heading }}{{ _workspace | last }}{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %} |
|||
{% endfor %} |
|||
{% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }} |
@ -1,182 +0,0 @@ |
|||
{% capture tocWorkspace %} |
|||
{% comment %} |
|||
Copyright (c) 2017 Vladimir "allejo" Jimenez |
|||
|
|||
Permission is hereby granted, free of charge, to any person |
|||
obtaining a copy of this software and associated documentation |
|||
files (the "Software"), to deal in the Software without |
|||
restriction, including without limitation the rights to use, |
|||
copy, modify, merge, publish, distribute, sublicense, and/or sell |
|||
copies of the Software, and to permit persons to whom the |
|||
Software is furnished to do so, subject to the following |
|||
conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be |
|||
included in all copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
|||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
|||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
|||
OTHER DEALINGS IN THE SOFTWARE. |
|||
{% endcomment %} |
|||
{% comment %} |
|||
Version 1.1.0 |
|||
https://github.com/allejo/jekyll-toc |
|||
|
|||
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe |
|||
|
|||
Usage: |
|||
{% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} |
|||
|
|||
Parameters: |
|||
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll |
|||
|
|||
Optional Parameters: |
|||
* sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC |
|||
* class (string) : '' - a CSS class assigned to the TOC |
|||
* id (string) : '' - an ID to assigned to the TOC |
|||
* h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored |
|||
* h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored |
|||
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list |
|||
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level |
|||
* submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level |
|||
* base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content |
|||
* anchor_class (string) : '' - add custom class(es) for each anchor element |
|||
* skip_no_ids (bool) : false - skip headers that do not have an `id` attribute |
|||
|
|||
Output: |
|||
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only |
|||
generate the table of contents and will NOT output the markdown given to it |
|||
{% endcomment %} |
|||
|
|||
{% capture newline %} |
|||
{% endcapture %} |
|||
{% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline --> |
|||
|
|||
{% capture deprecation_warnings %}{% endcapture %} |
|||
|
|||
{% if include.baseurl %} |
|||
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% if include.skipNoIDs %} |
|||
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% capture jekyll_toc %}{% endcapture %} |
|||
{% assign orderedList = include.ordered | default: false %} |
|||
{% assign baseURL = include.base_url | default: include.baseurl | default: '' %} |
|||
{% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %} |
|||
{% assign minHeader = include.h_min | default: 1 %} |
|||
{% assign maxHeader = include.h_max | default: 6 %} |
|||
{% assign nodes = include.html | strip | split: '<h' %} |
|||
|
|||
{% assign firstHeader = true %} |
|||
{% assign currLevel = 0 %} |
|||
{% assign lastLevel = 0 %} |
|||
|
|||
{% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %} |
|||
|
|||
{% for node in nodes %} |
|||
{% if node == "" %} |
|||
{% continue %} |
|||
{% endif %} |
|||
|
|||
{% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %} |
|||
|
|||
{% if currLevel < minHeader or currLevel > maxHeader %} |
|||
{% continue %} |
|||
{% endif %} |
|||
|
|||
{% assign _workspace = node | split: '</h' %} |
|||
|
|||
{% assign _idWorkspace = _workspace[0] | split: 'id="' %} |
|||
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %} |
|||
{% assign htmlID = _idWorkspace[0] %} |
|||
|
|||
{% assign _classWorkspace = _workspace[0] | split: 'class="' %} |
|||
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %} |
|||
{% assign htmlClass = _classWorkspace[0] %} |
|||
|
|||
{% if htmlClass contains "no_toc" %} |
|||
{% continue %} |
|||
{% endif %} |
|||
|
|||
{% if firstHeader %} |
|||
{% assign minHeader = currLevel %} |
|||
{% endif %} |
|||
|
|||
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} |
|||
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} |
|||
|
|||
{% if include.item_class and include.item_class != blank %} |
|||
{% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% if include.submenu_class and include.submenu_class != blank %} |
|||
{% assign subMenuLevel = currLevel | minus: 1 %} |
|||
{% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} |
|||
|
|||
{% if htmlID %} |
|||
{% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %} |
|||
|
|||
{% if include.anchor_class %} |
|||
{% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %} |
|||
{% elsif skipNoIDs == true %} |
|||
{% continue %} |
|||
{% else %} |
|||
{% capture listItem %}{{ anchorBody }}{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% if currLevel > lastLevel %} |
|||
{% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %} |
|||
{% elsif currLevel < lastLevel %} |
|||
{% assign repeatCount = lastLevel | minus: currLevel %} |
|||
|
|||
{% for i in (1..repeatCount) %} |
|||
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %} |
|||
{% endfor %} |
|||
|
|||
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %} |
|||
{% else %} |
|||
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %} |
|||
|
|||
{% assign lastLevel = currLevel %} |
|||
{% assign firstHeader = false %} |
|||
{% endfor %} |
|||
|
|||
{% assign repeatCount = minHeader | minus: 1 %} |
|||
{% assign repeatCount = lastLevel | minus: repeatCount %} |
|||
{% for i in (1..repeatCount) %} |
|||
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %} |
|||
{% endfor %} |
|||
|
|||
{% if jekyll_toc != '' %} |
|||
{% assign rootAttributes = '' %} |
|||
{% if include.class and include.class != blank %} |
|||
{% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% if include.id and include.id != blank %} |
|||
{% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %} |
|||
{% endif %} |
|||
|
|||
{% if rootAttributes %} |
|||
{% assign nodes = jekyll_toc | split: '>' %} |
|||
{% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %} |
|||
{% endif %} |
|||
{% endif %} |
|||
{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc }} |
@ -1,10 +0,0 @@ |
|||
--- |
|||
# Jekyll layout that compresses HTML |
|||
# v3.1.0 |
|||
# http://jch.penibelst.de/ |
|||
# © 2014–2015 Anatol Broder |
|||
# MIT License |
|||
--- |
|||
|
|||
{% capture _LINE_FEED %} |
|||
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %} |
@ -1,30 +0,0 @@ |
|||
--- |
|||
layout: wrapper |
|||
--- |
|||
<div class="h-entry one column"> |
|||
<div class="row page-header"> |
|||
<a class="u-uid" href="{{ page.url }}"><h1 class="p-name">{{ page.title }}</h1></a> |
|||
<p>{{ page.description }}</p> |
|||
</div> |
|||
|
|||
{% if page.toc == true %} |
|||
<div class="row toc"> |
|||
<h2>{% case page.lang %}{% when 'it' %}Indice{% else %}Table of contents{% endcase %}</h2> |
|||
{% include toc.html html=content %} |
|||
</div> |
|||
{% endif %} |
|||
|
|||
<div class="row"> |
|||
<article class="e-content note"> |
|||
<p>{{ page.description }}</p> |
|||
{% include anchor-parser.html html=content %} |
|||
</article> |
|||
</div> |
|||
<div class="flex row"> |
|||
<a class="button" href="/l{{ page.nextlevel }}">{% if page.lang == 'it' %}Livello successivo{% else %}Next level{%endif %}</a> |
|||
</div> |
|||
|
|||
{% include edit.html %} |
|||
{% include share.html %} |
|||
|
|||
</div> |
@ -1,64 +0,0 @@ |
|||
.highlight .hll { background-color: transparent; } |
|||
.highlight .c { color: var(--light-grey); } /* Comment */ |
|||
.highlight .err { color: white; background-color: var(--red); } /* Error */ |
|||
.highlight .k { color: var(--blue); } /* Keyword */ |
|||
.highlight .l { color: var(--razzmatazz); } /* Literal */ |
|||
.highlight .n { color: white; } /* Name */ |
|||
.highlight .o { color: var(--red); } /* Operator */ |
|||
.highlight .p { color: var(--text); } /* Punctuation */ |
|||
.highlight .cm { color: var(--light-grey); } /* Comment.Multiline */ |
|||
.highlight .c { color: var(--light-grey); } /* Comment.Preproc */ |
|||
.highlight .c1 { color: var(--light-grey); } /* Comment.Single */ |
|||
.highlight .cs { color: var(--light-grey); } /* Comment.Special */ |
|||
.highlight .ge { font-style: italic } /* Generic.Emph */ |
|||
.highlight .gs { font-weight: bold } /* Generic.Strong */ |
|||
.highlight .kc { color: var(--blue); } /* Keyword.Constant */ |
|||
.highlight .kd { color: var(--blue); } /* Keyword.Declaration */ |
|||
.highlight .kn { color: var(--red); } /* Keyword.Namespace */ |
|||
.highlight .kp { color: var(--blue); } /* Keyword.Pseudo */ |
|||
.highlight .kr { color: var(--blue); } /* Keyword.Reserved */ |
|||
.highlight .kt { color: var(--blue); } /* Keyword.Type */ |
|||
.highlight .ld { color: var(--yellow); } /* Literal.Date */ |
|||
.highlight .m { color: var(--razzmatazz); } /* Literal.Number */ |
|||
.highlight .s { color: var(--yellow); } /* Literal.String */ |
|||
.highlight .na { color: var(--green); } /* Name.Attribute */ |
|||
.highlight .nb { color: var(--text); } /* Name.Builtin */ |
|||
.highlight .nc { color: var(--green); } /* Name.Class */ |
|||
.highlight .no { color: var(--blue); } /* Name.Constant */ |
|||
.highlight .nd { color: var(--green); } /* Name.Decorator */ |
|||
.highlight .ni { color: var(--text); } /* Name.Entity */ |
|||
.highlight .ne { color: var(--green); } /* Name.Exception */ |
|||
.highlight .nf { color: var(--green); } /* Name.Function */ |
|||
.highlight .nl { color: var(--text); } /* Name.Label */ |
|||
.highlight .nn { color: var(--text); } /* Name.Namespace */ |
|||
.highlight .nx { color: var(--green); } /* Name.Other */ |
|||
.highlight .py { color: var(--text); } /* Name.Property */ |
|||
.highlight .nt { color: var(--red); } /* Name.Tag */ |
|||
.highlight .nv { color: var(--light-grey); } /* Name.Variable */ |
|||
.highlight .ow { color: var(--red); } /* Operator.Word */ |
|||
.highlight .w { color: var(--text); } /* Text.Whitespace */ |
|||
.highlight .mf { color: var(--razzmatazz); } /* Literal.Number.Float */ |
|||
.highlight .mh { color: var(--razzmatazz); } /* Literal.Number.Hex */ |
|||
.highlight .mi { color: var(--razzmatazz); } /* Literal.Number.Integer */ |
|||
.highlight .mo { color: var(--razzmatazz); } /* Literal.Number.Oct */ |
|||
.highlight .sb { color: var(--yellow); } /* Literal.String.Backtick */ |
|||
.highlight .sc { color: var(--yellow); } /* Literal.String.Char */ |
|||
.highlight .sd { color: var(--yellow); } /* Literal.String.Doc */ |
|||
.highlight .s2 { color: var(--yellow); } /* Literal.String.Double */ |
|||
.highlight .se { color: var(--razzmatazz); } /* Literal.String.Escape */ |
|||
.highlight .sh { color: var(--yellow); } /* Literal.String.Heredoc */ |
|||
.highlight .si { color: var(--yellow); } /* Literal.String.Interpol */ |
|||
.highlight .sx { color: var(--yellow); } /* Literal.String.Other */ |
|||
.highlight .sr { color: var(--yellow); } /* Literal.String.Regex */ |
|||
.highlight .s1 { color: var(--yellow); } /* Literal.String.Single */ |
|||
.highlight .ss { color: var(--yellow); } /* Literal.String.Symbol */ |
|||
.highlight .bp { color: var(--text); } /* Name.Builtin.Pseudo */ |
|||
.highlight .vc { color: var(--text); } /* Name.Variable.Class */ |
|||
.highlight .vg { color: var(--text); } /* Name.Variable.Global */ |
|||
.highlight .vi { color: var(--text); } /* Name.Variable.Instance */ |
|||
.highlight .il { color: var(--razzmatazz); } /* Literal.Number.Integer.Long */ |
|||
|
|||
.highlight .gh { color: var(--text); } /* Generic Heading & Diff Header */ |
|||
.highlight .gu { color: var(--light-grey); } /* Generic.Subheading & Diff Unified/Comment? */ |
|||
.highlight .gd { color: var(--red); } /* Generic.Deleted & Diff Deleted */ |
|||
.highlight .gi { color: var(--green); } /* Generic.Inserted & Diff Inserted */ |
@ -0,0 +1,16 @@ |
|||
{ |
|||
"title": "Quit Social Media", |
|||
"url": "https://quitsocialmedia.club", |
|||
"domain": "quitsocialmedia.club", |
|||
"author":{ |
|||
"name": "Tommi", |
|||
"email": "surfing@tommi.space", |
|||
"avatar": "https://tommi.space/profile.jpg", |
|||
"url": "https://tommi.space/about" |
|||
}, |
|||
"primary": "#E6£946", |
|||
"description": "Why and How to quit mainstream social media", |
|||
"favicon": "https://quitsocialmedia.club/favicon.svg", |
|||
"image": "/logos/qsm.png", |
|||
"source": "https://codeberg.org/tommi/quitsocialmedia.club" |
|||
} |
@ -1,15 +1,10 @@ |
|||
--- |
|||
--- |
|||
/* TEAM */ |
|||
Author: Tommi |
|||
Contact: tommi@quitsocialmedia.club |
|||
Mastodon: @xplosionmind@mastodon.online |
|||
Mastodon: @tommi@stream.tommi.space |
|||
Location: Italy |
|||
|
|||
|
|||
|
|||
/* SITE */ |
|||
Last update: {{ site.last_modified_at }} |
|||
Standards: HTML5, CSS3, pure JavaScript (the latter used in very few cases) |
|||
Components: none |
|||
Software: Jekyll |
|||
Software: Eleventy |
@ -1,13 +1,13 @@ |
|||
<div class='row'> |
|||
<div class='blue box'> |
|||
🤔 |
|||
{% case page.lang %} |
|||
{% case page.data.lang %} |
|||
{% when 'it' %} |
|||
Ciò che è scritto in questa pagina ti lascia perplesso, contrariato, o ti sembra manchi qualcosa? Se la risposta è affermativa, sarebbe favoloso se potessi <a href='/contribuisci' target='_blank' title='Contribuisci'>contribuire</a> per migliorarne i contenuti 📈! |
|||
{% when 'fr' %} |
|||
Est-ce que les choses écrites ici ne vous convincez pas? Si la réponse est affirmative, vous pourriez <a href='/contribuez' title='Contribuez'>contribuer</a> et rendre ce site meilleur 📈! |
|||
{% else %} |
|||
What is written in this page left you puzzled, vexed, or you feel something is missing? If the answer is affirmative, you really should <a href='/contribute' rel='noener noreferrer' target='_blank' title=''>contribute</a> and make it better 📈! |
|||
What is written in this page left you puzzled, vexed, or you feel something is missing? If the answer is affirmative, you really should <a href='/contribute' target='_blank' title='Contribute'>contribute</a> and make it better 📈! |
|||
{% endcase %} |
|||
</div> |
|||
</div> |
@ -0,0 +1,29 @@ |
|||
--- |
|||
layout: wrapper |
|||
--- |
|||
<div class='h-entry one column'> |
|||
<div class='row page-header'> |
|||
<a class='u-uid' href='{{ page.url }}'><h1 class='p-name'>{{ title }}</h1></a> |
|||
<p>{{ description }}</p> |
|||
</div> |
|||
|
|||
{% if toc %} |
|||
<div class='row toc'> |
|||
<h2>{% case page.lang %}{% when 'it' %}Indice{% else %}Table of contents{% endcase %}</h2> |
|||
</div> |
|||
{% endif %} |
|||
|
|||
<div class='row'> |
|||
<article class='e-content note'> |
|||
<p>{{ description }}</p> |
|||
{% {{ content }} %} |
|||
</article> |
|||
</div> |
|||
<div class='flex row'> |
|||
<a class='button' href='/l{{ page.nextlevel }}'>{% if page.lang == 'it' %}Livello successivo{% else %}Next level{%endif %}</a> |
|||
</div> |
|||
|
|||
{% include edit.html %} |
|||
{% include share.html %} |
|||
|
|||
</div> |
@ -1,5 +1,4 @@ |
|||
--- |
|||
layout: compress |
|||
--- |
|||
<!DOCTYPE html> |
|||
<html lang='{% if page.lang == 'it' %}it{% else %}en{% endif %}'> |
21056
package-lock.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,364 @@ |
|||
{ |
|||
"name": "quitsocialmedia.club", |
|||
"version": "1.0.0", |
|||
"description": "Quit Social Media", |
|||
"scripts": { |
|||
"watch:sass": "sass --watch --style=compressed styles:www", |
|||
"build:sass": "sass --style=compressed styles/:www", |
|||
"watch:eleventy": "ELEVENTY_ENV=development eleventy --serve --watch", |
|||
"build:eleventy": "ELEVENTY_ENV=production eleventy", |
|||
"start": "npm-run-all build:sass --parallel watch:*", |
|||
"build": "npm-run-all build:*", |
|||
"debug": "DEBUG=Eleventy* npm start", |
|||
"clean": "del-cli dist" |
|||
}, |
|||
"repository": { |
|||
"type": "git", |
|||
"url": "git+https://codeberg.org/tommi/quitsocialmedia.club.git" |
|||
}, |
|||
"keywords": [], |
|||
"author": "", |
|||
"license": "ISC", |
|||
"bugs": { |
|||
"url": "https://codeberg.org/tommi/quitsocialmedia.club/issues" |
|||
}, |
|||
"homepage": "https://quitsocialmedia.club", |
|||
"devDependencies": { |
|||
"@11ty/eleventy": "^1.0.1", |
|||
"@11ty/eleventy-img": "^2.0.0", |
|||
"@11ty/eleventy-plugin-directory-output": "^1.0.1", |
|||
"@11ty/eleventy-plugin-rss": "^1.1.2", |
|||
"@11ty/eleventy-plugin-syntaxhighlight": "^4.0.0", |
|||
"@sardine/eleventy-plugin-tinyhtml": "^0.2.0", |
|||
"@sardine/eleventy-plugin-tinysvg": "^1.2.0", |
|||
"clean-css": "^5.3.0", |
|||
"csv-parse": "^5.0.4", |
|||
"eleventy-plugin-svg-contents": "^0.7.0", |
|||
"eleventy-plugin-youtube-embed": "^1.7.0", |
|||
"fs": "^0.0.1-security", |
|||
"lodash": "^4.17.21", |
|||
"markdown-it": "^12.3.2", |
|||
"markdown-it-abbr": "^1.0.4", |
|||
"markdown-it-anchor": "^8.4.1", |
|||
"markdown-it-attrs": "^4.1.3", |
|||
"markdown-it-collapsible": "^1.0.0", |
|||
"markdown-it-container": "^3.0.0", |
|||
"markdown-it-del": "^0.1.0", |
|||
"markdown-it-footnote": "^3.0.3", |
|||
"markdown-it-ins": "^3.0.1", |
|||
"markdown-it-mark": "^3.0.1", |
|||
"markdown-it-mathjax3": "^4.3.1", |
|||
"markdown-it-sub": "^1.0.0", |
|||
"markdown-it-sup": "^1.0.0", |
|||
"markdown-it-task-lists": "^2.1.1", |
|||
"markdown-it-wikilinks": "^1.2.0", |
|||
"node-fetch": "^3.2.3", |
|||
"npm-run-all": "^4.1.5", |
|||
"relateurl": "^0.2.7", |
|||
"run-all": "^1.0.1", |
|||
"sass": "^1.49.9", |
|||
"uglify-js": "^3.15.3" |
|||
}, |
|||
"dependencies": { |
|||
"@aloskutov/eleventy-plugin-external-links": "^1.4.0", |
|||
"@quasibit/eleventy-plugin-schema": "^1.9.1", |
|||
"@quasibit/eleventy-plugin-sitemap": "^2.1.5", |
|||
"a-sync-waterfall": "^1.0.1", |
|||
"abbrev": "^1.1.1", |
|||
"accepts": "^1.3.8", |
|||
"acorn": "^8.7.0", |
|||
"after": "^0.8.2", |
|||
"ansi-regex": "^6.0.1", |
|||
"ansi-styles": "^6.1.0", |
|||
"anymatch": "^3.1.2", |
|||
"argparse": "^2.0.1", |
|||
"array-differ": "^4.0.0", |
|||
"array-union": "^3.0.1", |
|||
"array-uniq": "^3.0.0", |
|||
"arraybuffer.slice": "^0.0.7", |
|||
"arrify": "^3.0.0", |
|||
"asap": "^2.0.6", |
|||
"assert-never": "^1.2.1", |
|||
"async": "^3.2.3", |
|||
"async-each-series": "^1.1.0", |
|||
"axios": "^0.26.1", |
|||
"babel-walk": "^3.0.0", |
|||
"backo2": "^1.0.2", |
|||
"balanced-match": "^2.0.0", |
|||
"base64-arraybuffer": "^1.0.2", |
|||
"base64id": "^2.0.0", |
|||
"batch": "^0.6.1", |
|||
"binary-extensions": "^2.2.0", |
|||
"blob": "^0.1.0", |
|||
"brace-expansion": "^2.0.1", |
|||
"braces": "^3.0.2", |
|||
"browser-sync": "^2.27.9", |
|||
"browser-sync-client": "^2.27.9", |
|||
"browser-sync-ui": "^2.27.9", |
|||
"bs-recipes": "^1.3.4", |
|||
"bs-snippet-injector": "^2.0.1", |
|||
"bytes": "^3.1.2", |
|||
"call-bind": "^1.0.2", |
|||
"camelcase": "^6.3.0", |
|||
"chalk": "^5.0.1", |
|||
"character-parser": "^4.0.0", |
|||
"chokidar": "^3.5.3", |
|||
"cliui": "^7.0.4", |
|||
"color-convert": "^2.0.1", |
|||
"color-name": "^1.1.4", |
|||
"commander": "^9.1.0", |
|||
"component-bind": "^1.0.0", |
|||
"component-emitter": "^1.3.0", |
|||
"component-inherit": "^0.0.3", |
|||
"concat-map": "^0.0.1", |
|||
"condense-newlines": "^0.2.1", |
|||
"config-chain": "^1.1.13", |
|||
"connect": "^3.7.0", |
|||
"connect-history-api-fallback": "^1.6.0", |
|||
"constantinople": "^4.0.1", |
|||
"cookie": "^0.4.2", |
|||
"date-time": "^4.0.0", |
|||
"debug": "^4.3.4", |
|||
"decamelize": "^6.0.0", |
|||
"del": "^6.0.0", |
|||
"del-cli": "^4.0.1", |
|||
"depd": "^2.0.0", |
|||
"dependency-graph": "^0.11.0", |
|||
"destroy": "^1.2.0", |
|||
"dev-ip": "^1.0.1", |
|||
"dlv": "^1.1.3", |
|||
"doctypes": "^1.1.0", |
|||
"easy-extender": "^2.3.4", |
|||
"eazy-logger": "^3.1.0", |
|||
"editorconfig": "^0.15.3", |
|||
"ee-first": "^1.1.1", |
|||
"ejs": "^3.1.6", |
|||
"eleventy-plugin-embed-everything": "^1.14.0", |
|||
"eleventy-plugin-embed-instagram": "^1.2.3", |
|||
"eleventy-plugin-find": "^1.0.0", |
|||
"eleventy-plugin-toc": "^1.1.5", |
|||
"emoji-regex": "^10.0.1", |
|||
"encodeurl": "^1.0.2", |
|||
"engine.io": "^6.1.3", |
|||
"engine.io-client": "^6.1.1", |
|||
"engine.io-parser": "^5.0.3", |
|||
"entities": "^3.0.1", |
|||
"errno": "^1.0.0", |
|||
"escalade": "^3.1.1", |
|||
"escape-html": "^1.0.3", |
|||
"escape-string-regexp": "^5.0.0", |
|||
"esprima": "^4.0.1", |
|||
"etag": "^1.8.1", |
|||
"eventemitter3": "^4.0.7", |
|||
"extend-shallow": "^3.0.2", |
|||
"fast-glob": "^3.2.11", |
|||
"fastq": "^1.13.0", |
|||
"fill-range": "^7.0.1", |
|||
"finalhandler": "^1.2.0", |
|||
"find-up": "^6.3.0", |
|||
"follow-redirects": "^1.14.9", |
|||
"fresh": "^0.5.2", |
|||
"fs-extra": "^10.0.1", |
|||
"fs.realpath": "^1.0.0", |
|||
"fsevents": "^2.3.2", |
|||
"function-bind": "^1.1.1", |
|||
"get-caller-file": "^2.0.5", |
|||
"get-intrinsic": "^1.1.1", |
|||
"glob": "^7.2.0", |
|||
"glob-parent": "^6.0.2", |
|||
"globby": "^13.1.1", |
|||
"graceful-fs": "^4.2.9", |
|||
"gray-matter": "^4.0.3", |
|||
"hamljs": "^0.6.2", |
|||
"handlebars": "^4.7.7", |
|||
"has": "^1.0.3", |
|||
"has-ansi": "^5.0.1", |
|||
"has-binary2": "^2.0.0", |
|||
"has-color": "^0.1.7", |
|||
"has-cors": "^1.1.0", |
|||
"has-flag": "^5.0.1", |
|||
"has-symbols": "^1.0.3", |
|||
"has-tostringtag": "^1.0.0", |
|||
"http-errors": "^2.0.0", |
|||
"http-proxy": "^1.18.1", |
|||
"iconv-lite": "^0.6.3", |
|||
"immutable": "^4.0.0", |
|||
"indexof": "^0.0.1", |
|||
"inflight": "^1.0.6", |
|||
"inherits": "^2.0.4", |
|||
"ini": "^2.0.0", |
|||
"is-absolute": "^1.0.0", |
|||
"is-binary-path": "^2.1.0", |
|||
"is-buffer": "^2.0.5", |
|||
"is-core-module": "^2.8.1", |
|||
"is-expression": "^4.0.0", |
|||
"is-extendable": "^1.0.1", |
|||
"is-extglob": "^2.1.1", |
|||
"is-fullwidth-code-point": "^4.0.0", |
|||
"is-glob": "^4.0.3", |
|||
"is-number": "^7.0.0", |
|||
"is-number-like": "^1.0.8", |
|||
"is-path-cwd": "^3.0.0", |
|||
"is-path-in-cwd": "^4.0.0", |
|||
"is-path-inside": "^4.0.0", |
|||
"is-promise": "^4.0.0", |
|||
"is-regex": "^1.1.4", |
|||
"is-relative": "^1.0.0", |
|||
"is-unc-path": "^1.0.0", |
|||
"is-whitespace": "^0.3.0", |
|||
"is-windows": "^1.0.2", |
|||
"is-wsl": "^2.2.0", |
|||
"isarray": "^2.0.5", |
|||
"javascript-stringify": "^2.1.0", |
|||
"js-beautify": "^1.14.0", |
|||
"js-stringify": "^1.0.2", |
|||
"js-yaml": "^4.1.0", |
|||
"jsonfile": "^6.1.0", |
|||
"jstransformer": "^1.0.0", |
|||
"junk": "^4.0.0", |
|||
"kind-of": "^6.0.3", |
|||
"limiter": "^2.1.0", |
|||
"linkify-it": "^3.0.3", |
|||
"liquidjs": "^9.36.0", |
|||
"localtunnel": "^2.0.2", |
|||
"locate-path": "^7.1.0", |
|||
"lodash.isfinite": "^3.3.2", |
|||
"lru-cache": "^7.7.1", |
|||
"luxon": "^2.3.1", |
|||
"map-cache": "^0.2.2", |
|||
"maximatch": "^0.1.0", |
|||
"mdurl": "^1.0.1", |
|||
"merge2": "^1.4.1", |
|||
"micromatch": "^4.0.4", |
|||
"mime": "^3.0.0", |
|||
"mime-db": "^1.52.0", |
|||
"mime-types": "^2.1.35", |
|||
"minimatch": "^5.0.1", |
|||
"minimist": "^1.2.6", |
|||
"mitt": "^3.0.0", |
|||
"mkdirp": "^1.0.4", |
|||
"moo": "^0.5.1", |
|||
"ms": "^2.1.3", |
|||
"multimatch": "^6.0.0", |
|||
"mustache": "^4.2.0", |
|||
"negotiator": "^0.6.3", |
|||
"neo-async": "^2.6.2", |
|||
"nopt": "^5.0.0", |
|||
"normalize-path": "^3.0.0", |
|||
"npm-check-updates": "^12.5.4", |
|||
"nunjucks": "^3.2.3", |
|||
"object-assign": "^4.1.1", |
|||
"on-finished": "^2.4.1", |
|||
"once": "^1.4.0", |
|||
"openurl": "^1.1.1", |
|||
"opn": "^5.5.0", |
|||
"p-limit": "^4.0.0", |
|||
"p-locate": "^6.0.0", |
|||
"p-try": "^3.0.0", |
|||
"parse-filepath": "^1.0.2", |
|||
"parse-ms": "^3.0.0", |
|||
"parseqs": "^0.0.6", |
|||
"parseuri": "^0.0.6", |
|||
"parseurl": "^1.3.3", |
|||
"path-exists": "^5.0.0", |
|||
"path-is-absolute": "^1.0.1", |
|||
"path-is-inside": "^1.0.2", |
|||
"path-parse": "^1.0.7", |
|||
"path-root": "^0.1.1", |
|||
"path-root-regex": "^0.1.2", |
|||
"picomatch": "^2.3.1", |
|||
"pify": "^5.0.0", |
|||
"pinkie": "^2.0.4", |
|||
"pinkie-promise": "^2.0.1", |
|||
"please-upgrade-node": "^3.2.0", |
|||
"portscanner": "^2.2.0", |
|||
"pretty": "^2.0.0", |
|||
"pretty-ms": "^7.0.1", |
|||
"promise": "^8.1.0", |
|||
"proto-list": "^1.2.4", |
|||
"prr": "^1.0.1", |
|||
"pseudomap": "^1.0.2", |
|||
"pug": "^3.0.2", |
|||
"pug-attrs": "^3.0.0", |
|||
"pug-code-gen": "^3.0.2", |
|||
"pug-error": "^2.0.0", |
|||
"pug-filters": "^4.0.0", |
|||
"pug-lexer": "^5.0.1", |
|||
"pug-linker": "^4.0.0", |
|||
"pug-load": "^3.0.0", |
|||
"pug-parser": "^6.0.0", |
|||
"pug-runtime": "^3.0.1", |
|||
"pug-strip-comments": "^2.0.0", |
|||
"pug-walk": "^2.0.0", |
|||
"qs": "^6.10.3", |
|||
"queue-microtask": "^1.2.3", |
|||
"range-parser": "^1.2.1", |
|||
"raw-body": "^2.5.1", |
|||
"readdirp": "^3.6.0", |
|||
"recursive-copy": "^2.0.14", |
|||
"require-directory": "^2.1.1", |
|||
"require-main-filename": "^2.0.0", |
|||
"requires-port": "^1.0.0", |
|||
"resolve": "^1.22.0", |
|||
"resp-modifier": "^6.0.2", |
|||
"reusify": "^1.0.4", |
|||
"rimraf": "^3.0.2", |
|||
"run-parallel": "^1.2.0", |
|||
"rx": "^4.1.0", |
|||
"rxjs": "^7.5.5", |
|||
"safer-buffer": "^2.1.2", |
|||
"section-matter": "^1.0.0", |
|||
"semver": "^7.3.5", |
|||
"semver-compare": "^1.0.0", |
|||
"send": "^0.17.2", |
|||
"serve-index": "^1.9.1", |
|||
"serve-static": "^1.14.2", |
|||
"server-destroy": "^1.0.1", |
|||
"set-blocking": "^2.0.0", |
|||
"setprototypeof": "^1.2.0", |
|||
"sigmund": "^1.0.1", |
|||
"slash": "^4.0.0", |
|||
"slugify": "^1.6.5", |
|||
"socket.io": "^4.4.1", |
|||
"socket.io-adapter": "^2.3.3", |
|||
"socket.io-client": "^4.4.1", |
|||
"socket.io-parser": "^4.1.2", |
|||
"source-map": "^0.7.3", |
|||
"sprintf-js": "^1.1.2", |
|||
"statuses": "^2.0.1", |
|||
"stream-throttle": "^0.1.3", |
|||
"string-width": "^5.1.2", |
|||
"strip-ansi": "^7.0.1", |
|||
"strip-bom-string": "^1.0.0", |
|||
"supports-color": "^9.2.1", |
|||
"symbol-observable": "^4.0.0", |
|||
"text-table": "^0.2.0", |
|||
"tfunk": "^4.0.0", |
|||
"time-require": "^0.1.2", |
|||
"to-array": "^0.1.4", |
|||
"to-fast-properties": "^4.0.0", |
|||
"to-regex-range": "^5.0.1", |
|||
"toidentifier": "^1.0.1", |
|||
"token-stream": "^1.0.0", |
|||
"ua-parser-js": "^1.0.2", |
|||
"uc.micro": "^1.0.6", |
|||
"unc-path-regex": "^0.1.2", |
|||
"universalify": "^2.0.0", |
|||
"unpipe": "^1.0.0", |
|||
"utils-merge": "^1.0.1", |
|||
"valid-url": "^1.0.9", |
|||
"void-elements": "^3.1.0", |
|||
"which-module": "^2.0.0", |
|||
"with": "^7.0.2", |
|||
"wordwrap": "^1.0.0", |
|||
"wrap-ansi": "^8.0.1", |
|||
"wrappy": "^1.0.2", |
|||
"ws": "^8.5.0", |
|||
"xmlhttprequest-ssl": "^2.0.0", |
|||
"y18n": "^5.0.8", |
|||
"yallist": "^4.0.0", |
|||
"yargs": "^17.4.0", |
|||
"yargs-parser": "^21.0.1", |
|||
"yeast": "^0.1.2" |
|||
} |
|||
} |