diff options
author | EuAndreh <eu@euandre.org> | 2022-01-16 16:52:43 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2022-01-16 16:52:43 -0300 |
commit | 1fc994f588dd9ef2ef8395e57e2492a6b4d730eb (patch) | |
tree | ab518e8c2c229ec60ba921adbf9897b25520b99d /po/fr/LC_MESSAGES/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.po | |
parent | .ignore: Remove unused file (diff) | |
download | euandre.org-1fc994f588dd9ef2ef8395e57e2492a6b4d730eb.tar.gz euandre.org-1fc994f588dd9ef2ef8395e57e2492a6b4d730eb.tar.xz |
git mv locale/ po/
Diffstat (limited to 'po/fr/LC_MESSAGES/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.po')
-rw-r--r-- | po/fr/LC_MESSAGES/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.po | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/po/fr/LC_MESSAGES/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.po b/po/fr/LC_MESSAGES/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.po new file mode 100644 index 0000000..a11e17c --- /dev/null +++ b/po/fr/LC_MESSAGES/_tils/2020-08-13-anchor-headers-and-code-lines-in-jekyll.po @@ -0,0 +1,187 @@ +# +msgid "" +msgstr "" + +msgid "" +"title: Anchor headers and code lines in Jekyll\n" +"date: 2020-08-13\n" +"layout: post\n" +"lang: en\n" +"ref: anchor-headers-and-code-lines-in-jekyll" +msgstr "" + +msgid "" +"The default Jekyll toolbox ([Jekyll](https://jekyllrb.com/), " +"[kramdown](https://kramdown.gettalong.org/) and " +"[rouge](http://rouge.jneen.net/)) doesn't provide with a configuration " +"option to add anchors to headers and code blocks." +msgstr "" + +msgid "" +"The best way I found of doing this is by creating a simple Jekyll plugin, " +"more specifically, a [Jekyll " +"hook](https://jekyllrb.com/docs/plugins/hooks/). These allow you to jump in " +"to the Jekyll build and add a processing stage before of after Jekyll " +"performs something." +msgstr "" + +msgid "" +"All you have to do is add the code to `_plugins/my-jekyll-plugin-code.rb`, " +"and Jekyll knows to pick it up and call your code on the appropriate time." +msgstr "" + +msgid "Anchor on headers" +msgstr "" + +msgid "" +"Since I wanted to add anchors to headers in all documents, this Jekyll hook " +"works on `:documents` after they have been transformed into HTML, the " +"`:post_render` phase:" +msgstr "" + +msgid "" +"I've derived my implementations from two \"official\"[^official] hooks, " +"[jemoji](https://github.com/jekyll/jemoji) and [jekyll-" +"mentions](https://github.com/jekyll/jekyll-mentions)." +msgstr "" + +msgid "" +"[^official]: I don't know how official they are, I just assumed it because " +"they live in the same organization inside GitHub that Jekyll does." +msgstr "" + +msgid "" +"All I did was to wrap the header tag inside an `<a>`, and set the `href` of " +"that `<a>` to the existing id of the header. Before the hook the HTML looks " +"like:" +msgstr "" + +msgid "And after the hook should turn that into:" +msgstr "" + +msgid "" +"The used regexp tries to match only h1-h6 tags, and keep the rest of the " +"HTML attributes untouched, since this isn't a general HTML parser, but the " +"generated HTML is somewhat under your control. Use at your own risk because " +"[you shouldn't parse HTML with " +"regexps](https://stackoverflow.com/questions/1732348/regex-match-open-tags-" +"except-xhtml-self-contained-tags/1732454#1732454). Also I used this strategy" +" in my environment, where no other plugins are installed. I haven't " +"considered how this approach may conflict with other Jekyll plugins." +msgstr "" + +msgid "" +"In the new anchor tag you can add your custom CSS class to style it as you " +"wish." +msgstr "" + +msgid "Anchor on code blocks" +msgstr "" + +msgid "" +"Adding anchors to code blocks needs a little bit of extra work, because line" +" numbers themselves don't have preexisting ids, so we need to generate them " +"without duplications between multiple code blocks in the same page." +msgstr "" + +msgid "" +"Similarly, this Jekyll hook also works on `:documents` in the `:post_render`" +" phase:" +msgstr "" + +msgid "" +"This solution assumes the default Jekyll toolbox with code line numbers " +"turned on in `_config.yml`:" +msgstr "" + +msgid "" +"The anchors go from B1-L1 to BN-LN, using the `code_block_counter` to track " +"which code block we're in and don't duplicate anchor ids. Before the hook " +"the HTML looks like:" +msgstr "" + +msgid "Happy writing :)" +msgstr "" + +msgid "" +"Jekyll::Hooks.register :documents, :post_render do |doc|\n" +" if doc.output_ext == \".html\"\n" +" doc.output =\n" +" doc.output.gsub(\n" +" /<h([1-6])(.*?)id=\"([\\w-]+)\"(.*?)>(.*?)<\\/h[1-6]>/,\n" +" '<a href=\"#\\3\"><h\\1\\2id=\"\\3\"\\4>\\5</h\\1></a>'\n" +" )\n" +" end\n" +"end\n" +msgstr "" + +msgid "" +"...some unmodified text...\n" +"<h2 id=\"my-header\">\n" +" My header\n" +"</h2>\n" +"...more unmodified text...\n" +msgstr "" + +msgid "" +"...some unmodified text...\n" +"<a href=\"#my-header\">\n" +" <h2 id=\"my-header\">\n" +" My header\n" +" </h2>\n" +"</a>\n" +"...more unmodified text...\n" +msgstr "" + +msgid "" +"PREFIX = '<pre class=\"lineno\">'\n" +"POSTFIX = '</pre>'\n" +"Jekyll::Hooks.register :documents, :post_render do |doc|\n" +" if doc.output_ext == \".html\"\n" +" code_block_counter = 1\n" +" doc.output = doc.output.gsub(/<pre class=\"lineno\">[\\n0-9]+<\\/pre>/) do |match|\n" +" line_numbers = match\n" +" .gsub(/<pre class=\"lineno\">([\\n0-9]+)<\\/pre>/, '\\1')\n" +" .split(\"\\n\")\n" +"\n" +" anchored_line_numbers_array = line_numbers.map do |n|\n" +" id = \"B#{code_block_counter}-L#{n}\"\n" +" \"<a id=\\\"#{id}\\\" href=\\\"##{id}\\\">#{n}</a>\"\n" +" end\n" +" code_block_counter += 1\n" +"\n" +" PREFIX + anchored_line_numbers_array.join(\"\\n\") + POSTFIX\n" +" end\n" +" end\n" +"end\n" +msgstr "" + +msgid "" +"kramdown:\n" +" syntax_highlighter_opts:\n" +" span:\n" +" line_numbers: false\n" +" block:\n" +" line_numbers: true\n" +msgstr "" + +msgid "" +"...some unmodified text...\n" +"<pre class=\"lineno\">1\n" +"2\n" +"3\n" +"4\n" +"5\n" +"</pre>\n" +"...more unmodified text...\n" +msgstr "" + +msgid "" +"...some unmodified text...\n" +"<pre class=\"lineno\"><a id=\"B1-L1\" href=\"#B1-L1\">1</a>\n" +"<a id=\"B1-L2\" href=\"#B1-L2\">2</a>\n" +"<a id=\"B1-L3\" href=\"#B1-L3\">3</a>\n" +"<a id=\"B1-L4\" href=\"#B1-L4\">4</a>\n" +"<a id=\"B1-L5\" href=\"#B1-L5\">5</a></pre>\n" +"...more unmodified text...\n" +msgstr "" |