diff --git a/admin/javascripts/admin.js.php b/admin/javascripts/admin.js.php index 8472b01..9dfd85a 100644 --- a/admin/javascripts/admin.js.php +++ b/admin/javascripts/admin.js.php @@ -22,7 +22,8 @@ $(function() { Settings.init(); }); // Adds a master toggle to forms that have multiple checkboxes. -function toggle_all() { +function toggle_all( +) { $("form[data-toggler]").each( function() { var all_on = true; @@ -69,7 +70,8 @@ function toggle_all() { ); } // Validates slug fields. -function validate_slug() { +function validate_slug( +) { $("input[pattern='^[a-z0-9\\\\-]*$']").keyup( function(e) { var slug = $(this).val(); @@ -82,7 +84,8 @@ function validate_slug() { ); } // Validates email fields. -function validate_email() { +function validate_email( +) { $("input[type='email']").keyup( function(e) { var text = $(this).val(); @@ -95,7 +98,8 @@ function validate_email() { ); } // Validates URL fields. -function validate_url() { +function validate_url( +) { $("input[type='url']").keyup( function(e) { var text = $(this).val(); @@ -118,7 +122,8 @@ function validate_url() { ); } // Tests the strength of #password1 and compares #password1 to #password2. -function validate_passwords() { +function validate_passwords( +) { var passwords = $("input[type='password']").filter( function(index) { var id = $(this).attr("id"); @@ -163,7 +168,8 @@ function validate_passwords() { ); } // Asks the user to confirm form submission. -function confirm_submit() { +function confirm_submit( +) { $("form[data-confirm]").on( "submit.confirm", function(e) { @@ -187,7 +193,8 @@ function confirm_submit() { ); } // Prevents forms being submitted multiple times in a short interval. -function solo_submit() { +function solo_submit( +) { $("form").on( "submit.solo", function(e) { @@ -203,7 +210,8 @@ function solo_submit() { } ); } -function test_uploads() { +function test_uploads( +) { $("input[type='file']:not(.toolbar)").on( "change.uploads", function(e) { @@ -247,7 +255,12 @@ var Uploads = { size_err: 'uploads_limit, "admin")); ?>' }, active: 0, - send: function(file, doneCallback, failCallback, alwaysCallback) { + send: function( + file, + doneCallback, + failCallback, + alwaysCallback + ) { Uploads.active++; var form = new FormData(); @@ -278,7 +291,13 @@ var Uploads = { } ); }, - show: function(search, filter, clickCallback, failCallback, alwaysCallback) { + show: function( + search, + filter, + clickCallback, + failCallback, + alwaysCallback + ) { if (Uploads.active) return; @@ -342,13 +361,7 @@ var Uploads = { $(this).parent().remove(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/close.svg', - "alt": '' - } - ) + '' ) ] ).click( @@ -373,7 +386,8 @@ var Uploads = { } } var Help = { - init: function() { + init: function( + ) { $(".help").on( "click", function(e) { @@ -382,7 +396,9 @@ var Help = { } ); }, - show: function(href) { + show: function( + href + ) { $("
", { "role": "dialog", "aria-label": '' @@ -421,13 +437,7 @@ var Help = { $(this).parent().remove(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/close.svg', - "alt": '' - } - ) + '' ) ] ).click( @@ -439,7 +449,8 @@ var Help = { } } var Write = { - init: function() { + init: function( + ) { // Insert toolbar buttons for text formatting. $("#write_form .options_toolbar, #edit_form .options_toolbar").each( function() { @@ -462,13 +473,7 @@ var Write = { Write.formatting(target, "h3"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/heading.svg', - "alt": '' - } - ) + '' ) ); @@ -487,13 +492,7 @@ var Write = { Write.formatting(target, "strong"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/bold.svg', - "alt": '' - } - ) + '' ) ); @@ -512,13 +511,7 @@ var Write = { Write.formatting(target, "em"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/italic.svg', - "alt": '' - } - ) + '' ) ); @@ -537,13 +530,7 @@ var Write = { Write.formatting(target, "del"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/strikethrough.svg', - "alt": '' - } - ) + '' ) ); @@ -562,13 +549,7 @@ var Write = { Write.formatting(target, "mark"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/highlight.svg', - "alt": '' - } - ) + '' ) ); @@ -587,13 +568,7 @@ var Write = { Write.formatting(target, "code"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/code.svg', - "alt": '' - } - ) + '' ) ); @@ -612,13 +587,7 @@ var Write = { Write.formatting(target, "hyperlink"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/link.svg', - "alt": '' - } - ) + '' ) ); @@ -637,13 +606,7 @@ var Write = { Write.formatting(target, "img"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/image.svg', - "alt": '' - } - ) + '' ) ); @@ -709,13 +672,7 @@ var Write = { } } ), - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/upload.svg', - "alt": '' - } - ) + $('') ] ).appendTo(toolbar); @@ -753,11 +710,8 @@ var Write = { ); } ).append( - $("", { - "src": Site.chyrp_url + '/admin/images/icons/storage.svg', - "alt": '' - }) - ) + '' + ) ); } } @@ -796,13 +750,7 @@ var Write = { target.focus(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/view.svg', - "alt": '' - } - ) + '' ) ); } @@ -909,16 +857,24 @@ var Write = { ); } }, - dragenter: function(e) { + dragenter: function( + e + ) { $(e.target).addClass("drag_highlight"); }, - dragleave: function(e) { + dragleave: function( + e + ) { $(e.target).removeClass("drag_highlight"); }, - dragover: function(e) { + dragover: function( + e + ) { e.preventDefault(); }, - drop: function(e) { + drop: function( + e + ) { // Process drag-and-drop image file uploads. e.stopPropagation(); e.preventDefault(); @@ -959,7 +915,11 @@ var Write = { ); } }, - formatting: function(target, effect, fragment = "") { + formatting: function( + target, + effect, + fragment = "" + ) { var markdown = enable_markdown); ?>; var opening = ""; var closing = ""; @@ -1119,7 +1079,12 @@ var Write = { target[0].setRangeText(text); $(target).focus().trigger("input").trigger("change"); }, - show: function(action, safename, field, content) { + show: function( + action, + safename, + field, + content + ) { var uid = Date.now().toString(16); // Build a form targeting a named iframe. @@ -1201,8 +1166,12 @@ var Write = { ).loader().on( "load", function() { - if (!!this.contentWindow.location && this.contentWindow.location != "about:blank") + if ( + !!this.contentWindow.location + && this.contentWindow.location != "about:blank" + ) { $(this).loader(true); + } } ), $( @@ -1221,13 +1190,7 @@ var Write = { $(this).parent().remove(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/close.svg', - "alt": '' - } - ) + '' ) ] ).click( @@ -1242,15 +1205,16 @@ var Write = { } } var Settings = { - init: function() { - $("#email_correspondence").click( + init: function( + ) { + $("input#email_correspondence").click( function() { if ($(this).prop("checked") == false) $("#email_activation").prop("checked", false); } ); - $("#email_activation").click( + $("input#email_activation").click( function() { if ($(this).prop("checked") == true) $("#email_correspondence").prop("checked", true); @@ -1263,7 +1227,10 @@ var Settings = { $("form#route_settings code.syntax").each( function() { var syntax = $(this).html(); - var regexp = new RegExp("(/?|^)" + escapeRegExp(syntax) + "(/?|$)", "g"); + + var regexp = new RegExp( + "(/?|^)" + escapeRegExp(syntax) + "(/?|$)", "g" + ); if ($(e.target).val().match(regexp)) $(this).addClass("tag_added"); diff --git a/admin/layouts/help.twig b/admin/layouts/help.twig index 1acfc09..9e9a6a2 100644 --- a/admin/layouts/help.twig +++ b/admin/layouts/help.twig @@ -80,19 +80,52 @@ table { border-collapse: collapse; border-spacing: 0em; } +:root { + color-scheme: light dark; + --chyrp-pure-white: #ffffff; + --chyrp-pure-black: #000000; + --chyrp-inky-black: #1f1f23; + --chyrp-summer-grey: #fbfbfb; + --chyrp-english-grey: #efefef; + --chyrp-welsh-grey: #dfdfdf; + --chyrp-irish-grey: #cfcfcf; + --chyrp-scottish-grey: #afafaf; + --chyrp-winter-grey: #656565; + --chyrp-strong-yellow: #ffdd00; + --chyrp-strong-orange: #ff7f00; + --chyrp-strong-red: #c11600; + --chyrp-strong-green: #108600; + --chyrp-strong-blue: #1e57ba; + --chyrp-strong-purple: #ba1eba; + --chyrp-light-yellow: #fffde6; + --chyrp-light-red: #faebe4; + --chyrp-light-green: #ebfae4; + --chyrp-light-blue: #f2fbff; + --chyrp-light-purple: #fae4fa; + --chyrp-medium-yellow: #fffbcc; + --chyrp-medium-red: #fcddcf; + --chyrp-medium-green: #daf1d0; + --chyrp-medium-blue: #e1f2fa; + --chyrp-medium-purple: #f6d5f6; + --chyrp-border-yellow: #e5d7a1; + --chyrp-border-red: #d6bdb5; + --chyrp-border-green: #bdd6b5; + --chyrp-border-blue: #b8cdd9; + --chyrp-border-purple: #d6b5d6; +} *::selection { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } body { font-family: "Open Sans webfont", sans-serif; font-size: 1rem; line-height: 1.5; - color: #1f1f23; + color: var(--chyrp-inky-black); tab-size: 4; margin: 2rem; max-width: 1024px; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); } h1, h2, h3, h4, h5, h6 { font-weight: bold; @@ -110,6 +143,7 @@ h2 { h3, h4, h5, h6 { font-size: 1em; font-weight: 600; + border-bottom: 1px solid var(--chyrp-irish-grey); } sup, sub { line-height: 1; @@ -145,8 +179,8 @@ small { font-size: 0.75em; } mark { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } del { font: inherit; @@ -154,8 +188,8 @@ del { } ins { font: inherit; - color: #1f1f23; - background-color: #daf1d0; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-medium-green); } p { margin-bottom: 1rem; @@ -190,20 +224,21 @@ dl dd { hr { border: none; clear: both; - border-top: 1px solid #dddddd; + border-top: 1px solid var(--chyrp-irish-grey); margin: 2rem 0rem; } aside { + box-sizing: border-box; margin-bottom: 1rem; - padding: 0.5rem 1rem; - border: 1px solid #e5d7a1; + padding: 0.5rem; + border: 1px solid var(--chyrp-border-yellow); border-radius: 0.25em; - background-color: #fffde6; + background-color: var(--chyrp-light-yellow); } pre { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; + background-color: var(--chyrp-english-grey); margin: 1rem 0rem; padding: 1rem; overflow-x: auto; @@ -212,9 +247,9 @@ pre { code { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; - padding: 0px 2px; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + padding: 2px 4px 0px 4px; + border: 1px solid var(--chyrp-irish-grey); vertical-align: bottom; white-space: break-spaces; } @@ -234,22 +269,22 @@ table { overflow-x: scroll; } table th { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); padding: 0.5rem; font: inherit; font-weight: 600; text-align: center; vertical-align: middle; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); } table td { padding: 0.5rem; font: inherit; vertical-align: middle; - border: 1px solid #cfcfcf; + border: 1px solid var(--chyrp-irish-grey); } table tbody tr:nth-child(even) td { - background-color: #fbfbfb; + background-color: var(--chyrp-summer-grey); } table tbody tr td.emblem { text-align: center; @@ -262,18 +297,18 @@ td > *:last-child { } a:link, a:visited { - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: underline; text-underline-offset: 0.125em; } a:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 0px; } a:hover, a:focus, a:active { - color: #1e57ba; + color: var(--chyrp-strong-blue); text-decoration: underline; text-underline-offset: 0.125em; } @@ -291,26 +326,29 @@ a.emblem > img { } @media (prefers-color-scheme: dark) { body { - background-color: #efefef; + background-color: var(--chyrp-english-grey); + } + h3, h4, h5, h6 { + border-color: var(--chyrp-scottish-grey); } hr { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } aside { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } pre { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } code { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } table tbody tr td { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } table tbody tr:nth-child(even) td { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } } diff --git a/admin/locale/de_DE/LC_MESSAGES/admin.mo b/admin/locale/de_DE/LC_MESSAGES/admin.mo index 99befe0..c434e89 100644 Binary files a/admin/locale/de_DE/LC_MESSAGES/admin.mo and b/admin/locale/de_DE/LC_MESSAGES/admin.mo differ diff --git a/admin/locale/de_DE/LC_MESSAGES/admin.po b/admin/locale/de_DE/LC_MESSAGES/admin.po index 77611ab..ecc3e20 100644 --- a/admin/locale/de_DE/LC_MESSAGES/admin.po +++ b/admin/locale/de_DE/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "Kanonische URL" @@ -94,8 +94,8 @@ msgstr "" "und dann in aufsteigender Reihenfolge der Blogpost-ID sortieren." #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Markdown" @@ -116,7 +116,7 @@ msgid "## Heading" msgstr "## Kopf" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "Kopf" @@ -128,8 +128,8 @@ msgstr "### Kopf" msgid "**Strong**" msgstr "**Stark**" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "Stark" @@ -137,8 +137,8 @@ msgstr "Stark" msgid "*Emphasis*" msgstr "*Schwerpunkt*" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "Schwerpunkt" @@ -154,8 +154,8 @@ msgstr "Zitat" msgid "~~Strikethrough~~" msgstr "~~Durchgestrichen~~" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "Durchgestrichen" @@ -163,8 +163,8 @@ msgstr "Durchgestrichen" msgid "`Code`" msgstr "`Code`" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "Code" @@ -172,8 +172,8 @@ msgstr "Code" msgid "==Highlight==" msgstr "==Markieren==" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "Markieren" @@ -205,8 +205,8 @@ msgstr "Neuer Absatz" msgid "[title](URL)" msgstr "[title](URL)" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "Hyperlink" @@ -214,8 +214,8 @@ msgstr "Hyperlink" msgid "![description](URL)" msgstr "![description](URL)" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "Bild" @@ -301,7 +301,7 @@ msgstr "" "(“-”) enthalten." #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Unicode-Emoticons" @@ -324,112 +324,67 @@ msgstr "Emoticon" msgid "Emoji" msgstr "Emoji" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "Alle umschalten" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "Sind Sie sicher, dass Sie fortfahren möchten?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "Hochladen..." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "Datei-Upload fehlgeschlagen!" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "Dateityp wird nicht unterstützt!" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "Maximale Dateigröße: %d Megabyte!" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "Modales Fenster" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "Hochladungen" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "Schliessen" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "schliessen" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "Hilfe inhalte" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "kopf" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "stark" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "schwerpunkt" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "durchgestrichen" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "markieren" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "code" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "hyperlink" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "bild" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "Hochladen" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "Einfügen" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "einfügen" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "Vorschau" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "vorschau" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "Wörter:" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "Vorschau inhalt" @@ -457,13 +412,21 @@ msgstr "Beiträge im Feed" #: admin/pages/content_settings.twig:20 msgid "Items Per Admin Page" -msgstr "Beiträge pro Blog-Seite" +msgstr "Beiträge pro Admin-Seite" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "Standard Blogpoststatus" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "Standard Seitestatus" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "Pfad für hochladen" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." @@ -471,56 +434,56 @@ msgstr "" "Das Verzeichnis, in das die Dateien hochgeladen werden, relativ zu Ihrem " "Installationsverzeichnis." -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "Grössenbeschränkung für hochladen" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(Megabytes)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Feed Format" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "Seiten suchen" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "Aufnahme von Seiten in die Suchergebnisse." -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "Webmentions" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "Senden und empfangen Sie Benachrichtigungen, wenn URLs erwähnt werden." -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" -msgstr "hilfe" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" +msgstr "Hilfe" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "Zeige Emoticons als Unicode-Emoji an." -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "Verfassen Sie Blog-Inhalte mithilfe der Markdown-Textformatierung." -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "Aktualisieren" @@ -554,8 +517,8 @@ msgstr "Löschen!" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "Annulieren" @@ -684,7 +647,7 @@ msgstr "Vollständiger Name" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -764,25 +727,25 @@ msgstr "Feathers" msgid "Enabled" msgstr "Ermöglicht" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" -msgstr "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" +msgstr "" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "Deinstallieren" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "Deaktivieren" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "Deaktiviert" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "Aktivieren" @@ -802,37 +765,41 @@ msgstr "Beschreibung" msgid "Chyrp URL" msgstr "Chyrp URL" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "Die Basis-URL für Ihre Website." + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "" "Lassen Sie die URLs Ihrer Website auf eine andere Stelle als Ihr " "Installationsverzeichnis verweisen." -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "Kontakt Email Adresse" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "Zeitzone" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "Sprache" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "Monospace-Schriftart" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "Schreiben Sie mit einer Monospace-Schriftart." -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "Auf Updates prüfen" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "Aktuelle Version: %s." @@ -920,29 +887,29 @@ msgstr "Kontroll" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" -msgstr "ja" +msgid "Yes" +msgstr "Ja" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" -msgstr "ändern" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" +msgstr "Bearbeiten" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" -msgstr "löschen" +msgid "Delete" +msgstr "Löschen" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "Keine Ergebnisse" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "Seite %d von %s" @@ -1001,11 +968,15 @@ msgstr "Neuer Blogpost" msgid "Posted" msgstr "Publiziert" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "Status" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[Keine]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "Hochladungen steuern" @@ -1027,14 +998,14 @@ msgid "Type" msgstr "Typ" #: admin/pages/manage_uploads.twig:61 -msgid "download" -msgstr "herunterladen" +msgid "Download" +msgstr "Herunterladen" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "Sortieren Sie die Ergebnisse nach:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "Sortiere Ergebnisse" @@ -1058,11 +1029,11 @@ msgstr "Angemeldet" msgid "Modules" msgstr "Modul" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "Dieses Modul steht im Konflikt mit den folgenden Modulen:" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "Für dieses Modul müssen die folgenden Modulen aktiviert sein:" @@ -1090,120 +1061,120 @@ msgstr "Clean URLs" msgid "Gives your site prettier URLs." msgstr "Verleiht Ihrer Website pretty URLs." -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "Erfordert Unterstützung für das Umschreiben von URLs." +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "Laden Sie die URL-Rewrite-Dateien herunter." -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "Startseite" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "" "Machen Sie die Standardroute zu einer Homepage anstelle des Blog-Index." -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "Blogpost-ansichts URL" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(braucht clean URLs)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "Syntax:" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "Erstellt im Jahre" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(z.B. 2021)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "Erstellt im Monate" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(z.B. 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "Tag erstellt" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(z.B. 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "Stunde erstellt" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(z.B. 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "Minute erstellt" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(z.B. 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "Sekunde erstellt" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(z.B. 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "Blogpost ID" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "Blogpostautor (Benutzername)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(z.B. Jürgen)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "Die nicht-einzigartige slug" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(z.B. das_hier_ist_einzigartig)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "Die einzigartige Form von (clean)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(z.B.: das_hier_ist_vergeben_2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "Die Blogposts` feather" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(z.B. Text)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "Die Pluralform der Blogpostfeather" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(z.B. Links)" @@ -1215,7 +1186,7 @@ msgstr "Themen" msgid "Blog Themes" msgstr "Blog Themen" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "Selektieren" @@ -1268,58 +1239,54 @@ msgstr "Schreib" msgid "Body" msgstr "Body" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "Slug" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" msgstr "Öffentlich und in der Seitenliste sichtbar" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" msgstr "Öffentlich" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "Privat und in der Seitenliste sichtbar" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "Privat" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "Priorität in der Seitenliste" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "Hoch" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "Medium" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "Untere" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "Elter" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[Keine]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" msgstr "Publizieren" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "Speichern" @@ -1330,30 +1297,30 @@ msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d Datei wurde zuvor mit diesem Beitrag hochgeladen." msgstr[1] "%d Dateien wurden zuvor mit diesem Beitrag hochgeladen." -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "Entwurf" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "Geplant" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "Nur für diese Gruppe von Benutzern sichtbar:" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "Alle registrierten Benutzer" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "Angepinnter Beitrag?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(zeigt diesen Beitrag vor allen anderen)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "Zeitstempel" diff --git a/admin/locale/en_US/LC_MESSAGES/admin.pot b/admin/locale/en_US/LC_MESSAGES/admin.pot index 7c57a51..f0d3e77 100644 --- a/admin/locale/en_US/LC_MESSAGES/admin.pot +++ b/admin/locale/en_US/LC_MESSAGES/admin.pot @@ -2,7 +2,7 @@ #: admin/help/canonical_url.twig:3 #: admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "" @@ -42,9 +42,9 @@ msgstr "" #: admin/help/markdown.twig:3 #: admin/help/markdown.twig:6 #: admin/help/markdown.twig:13 -#: admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 -#: admin/partials/post_fields.twig:52 +#: admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 +#: admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "" @@ -62,8 +62,8 @@ msgstr "" #: admin/help/markdown.twig:20 #: admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 -#: admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 +#: admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "" @@ -76,8 +76,8 @@ msgid "**Strong**" msgstr "" #: admin/help/markdown.twig:28 -#: admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "" @@ -86,8 +86,8 @@ msgid "*Emphasis*" msgstr "" #: admin/help/markdown.twig:32 +#: admin/javascripts/admin.js.php:504 #: admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 msgid "Emphasis" msgstr "" @@ -104,8 +104,8 @@ msgid "~~Strikethrough~~" msgstr "" #: admin/help/markdown.twig:40 -#: admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "" @@ -114,8 +114,8 @@ msgid "`Code`" msgstr "" #: admin/help/markdown.twig:44 -#: admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "" @@ -124,8 +124,8 @@ msgid "==Highlight==" msgstr "" #: admin/help/markdown.twig:48 -#: admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "" @@ -158,8 +158,8 @@ msgid "[title](URL)" msgstr "" #: admin/help/markdown.twig:65 -#: admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "" @@ -168,8 +168,8 @@ msgid "![description](URL)" msgstr "" #: admin/help/markdown.twig:69 -#: admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "" @@ -249,7 +249,7 @@ msgstr "" #: admin/help/unicode_emoticons.twig:3 #: admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "" @@ -265,122 +265,75 @@ msgstr "" msgid "Emoji" msgstr "" -#: admin/javascripts/admin.js.php:55 -#: admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 +#: admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "" -#: admin/javascripts/admin.js.php:171 -#: admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 +#: admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "" -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "" -#: admin/javascripts/admin.js.php:300 -#: admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 +#: admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "" -#: admin/javascripts/admin.js.php:309 +#: admin/javascripts/admin.js.php:328 #: admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "" -#: admin/javascripts/admin.js.php:335 -#: admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 +#: admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "" -#: admin/javascripts/admin.js.php:349 -#: admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "" - -#: admin/javascripts/admin.js.php:644 -#: admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "" - -#: admin/javascripts/admin.js.php:659 -#: admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 +#: admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "" -#: admin/javascripts/admin.js.php:729 -#: admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 +#: admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "" - -#: admin/javascripts/admin.js.php:777 -#: admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 +#: admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "" @@ -412,72 +365,80 @@ msgid "Items Per Admin Page" msgstr "" #: admin/pages/content_settings.twig:25 -msgid "Uploads Path" -msgstr "" - -#: admin/pages/content_settings.twig:29 -msgid "The directory to which files are uploaded, relative to your installation directory." -msgstr "" - -#: admin/pages/content_settings.twig:33 -msgid "Upload Size Limit" +msgid "Default Post Status" msgstr "" #: admin/pages/content_settings.twig:36 -msgid "(Megabytes)" +msgid "Default Page Status" msgstr "" -#: admin/pages/content_settings.twig:39 -msgid "Feed Format" +#: admin/pages/content_settings.twig:47 +msgid "Uploads Path" msgstr "" #: admin/pages/content_settings.twig:51 -msgid "Search Pages" +msgid "The directory to which files are uploaded, relative to your installation directory." msgstr "" -#: admin/pages/content_settings.twig:56 -msgid "Include pages in search results." +#: admin/pages/content_settings.twig:55 +msgid "Upload Size Limit" +msgstr "" + +#: admin/pages/content_settings.twig:58 +msgid "(Megabytes)" msgstr "" #: admin/pages/content_settings.twig:61 -msgid "Webmentions" -msgstr "" - -#: admin/pages/content_settings.twig:66 -msgid "Send and receive notifications when URLs are mentioned." +msgid "Feed Format" msgstr "" #: admin/pages/content_settings.twig:73 -#: admin/pages/content_settings.twig:86 +msgid "Search Pages" +msgstr "" + +#: admin/pages/content_settings.twig:78 +msgid "Include pages in search results." +msgstr "" + +#: admin/pages/content_settings.twig:83 +msgid "Webmentions" +msgstr "" + +#: admin/pages/content_settings.twig:88 +msgid "Send and receive notifications when URLs are mentioned." +msgstr "" + +#: admin/pages/content_settings.twig:95 +#: admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 #: admin/pages/export.twig:39 #: admin/pages/export.twig:57 #: admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 +#: admin/pages/general_settings.twig:38 #: admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 #: admin/pages/manage_users.twig:11 #: admin/pages/route_settings.twig:13 -#: admin/partials/page_fields.twig:25 +#: admin/partials/page_fields.twig:27 #: admin/partials/post_fields.twig:32 -#: admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" +#: admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" msgstr "" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "" -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "" -#: admin/pages/content_settings.twig:97 +#: admin/pages/content_settings.twig:119 #: admin/pages/edit_group.twig:27 #: admin/pages/edit_user.twig:66 -#: admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 +#: admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 #: admin/pages/user_settings.twig:57 msgid "Update" msgstr "" @@ -520,8 +481,8 @@ msgstr "" #: admin/pages/delete_post.twig:17 #: admin/pages/delete_upload.twig:17 #: admin/pages/delete_user.twig:50 -#: admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "" @@ -668,7 +629,7 @@ msgstr "" #: admin/pages/export.twig:55 #: admin/pages/export.twig:73 #: admin/pages/export.twig:94 -#: admin/pages/general_settings.twig:33 +#: admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 #: admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 @@ -754,31 +715,31 @@ msgstr "" msgid "Enabled" msgstr "" -#: admin/pages/feathers.twig:15 -#: admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 -#: admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" +#: admin/pages/feathers.twig:16 +#: admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 +#: admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" msgstr "" -#: admin/pages/feathers.twig:28 -#: admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 +#: admin/pages/modules.twig:49 msgid "Uninstall" msgstr "" -#: admin/pages/feathers.twig:32 -#: admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 +#: admin/pages/modules.twig:53 msgid "Disable" msgstr "" -#: admin/pages/feathers.twig:41 -#: admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 +#: admin/pages/modules.twig:62 msgid "Disabled" msgstr "" -#: admin/pages/feathers.twig:60 -#: admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 +#: admin/pages/modules.twig:103 msgid "Enable" msgstr "" @@ -799,35 +760,39 @@ msgstr "" msgid "Chyrp URL" msgstr "" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "" + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "" -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "" -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "" @@ -925,38 +890,38 @@ msgstr "" #: admin/pages/manage_pages.twig:55 #: admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" +msgid "Yes" msgstr "" #: admin/pages/manage_groups.twig:51 #: admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 +#: admin/pages/manage_posts.twig:56 #: admin/pages/manage_users.twig:63 -msgid "edit" +msgid "Edit" msgstr "" #: admin/pages/manage_groups.twig:54 #: admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 +#: admin/pages/manage_posts.twig:59 #: admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" +msgid "Delete" msgstr "" -#: admin/pages/manage_groups.twig:60 -#: admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 -#: admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 -#: admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 +#: admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 +#: admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 +#: admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "" -#: admin/pages/manage_groups.twig:68 -#: admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 -#: admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 +#: admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 +#: admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "" @@ -1020,11 +985,16 @@ msgid "Posted" msgstr "" #: admin/pages/manage_posts.twig:29 -#: admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "" +#: admin/pages/manage_posts.twig:48 +#: admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "" @@ -1046,14 +1016,14 @@ msgid "Type" msgstr "" #: admin/pages/manage_uploads.twig:61 -msgid "download" +msgid "Download" msgstr "" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "" @@ -1079,13 +1049,13 @@ msgstr "" msgid "Modules" msgstr "" -#: admin/pages/modules.twig:23 -#: admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 +#: admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "" -#: admin/pages/modules.twig:33 -#: admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 +#: admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "" @@ -1115,119 +1085,119 @@ msgstr "" msgid "Gives your site prettier URLs." msgstr "" -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." msgstr "" -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "" -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "" @@ -1239,7 +1209,7 @@ msgstr "" msgid "Blog Themes" msgstr "" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "" @@ -1292,64 +1262,60 @@ msgstr "" msgid "Body" msgstr "" -#: admin/partials/page_fields.twig:23 -#: admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 +#: admin/partials/post_fields.twig:124 msgid "Slug" msgstr "" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" msgstr "" -#: admin/partials/page_fields.twig:36 -#: admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 +#: admin/partials/post_fields.twig:88 msgid "Public" msgstr "" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "" -#: admin/partials/page_fields.twig:40 -#: admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 +#: admin/partials/post_fields.twig:92 msgid "Private" msgstr "" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "" - -#: admin/partials/page_fields.twig:74 -#: admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 +#: admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" msgstr "" -#: admin/partials/page_fields.twig:77 -#: admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 -#: admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 +#: admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 +#: admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "" @@ -1360,31 +1326,31 @@ msgid_plural "%d files previously uploaded with this post." msgstr[0] "" msgstr[1] "" -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "" diff --git a/admin/locale/fr_FR/LC_MESSAGES/admin.mo b/admin/locale/fr_FR/LC_MESSAGES/admin.mo index 527c42d..ec2a1ea 100644 Binary files a/admin/locale/fr_FR/LC_MESSAGES/admin.mo and b/admin/locale/fr_FR/LC_MESSAGES/admin.mo differ diff --git a/admin/locale/fr_FR/LC_MESSAGES/admin.po b/admin/locale/fr_FR/LC_MESSAGES/admin.po index 0c801da..83e0158 100644 --- a/admin/locale/fr_FR/LC_MESSAGES/admin.po +++ b/admin/locale/fr_FR/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "URL canonique" @@ -92,8 +92,8 @@ msgstr "" "filtrer dans l'ordre croissant des index des articles." #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Mardown" @@ -114,7 +114,7 @@ msgid "## Heading" msgstr "## Titre" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "Titre" @@ -126,8 +126,8 @@ msgstr "### Titre" msgid "**Strong**" msgstr "**Gras**" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "Gras" @@ -135,8 +135,8 @@ msgstr "Gras" msgid "*Emphasis*" msgstr "*Emphase*" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "Emphase" @@ -152,8 +152,8 @@ msgstr "Citation" msgid "~~Strikethrough~~" msgstr "~~Barré~~" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "Barré" @@ -161,8 +161,8 @@ msgstr "Barré" msgid "`Code`" msgstr "`Code`" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "Code" @@ -170,8 +170,8 @@ msgstr "Code" msgid "==Highlight==" msgstr "==Surligné==" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "Surligné" @@ -203,8 +203,8 @@ msgstr "Nouveau paragraphe" msgid "[title](URL)" msgstr "[titre](URL)" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "Lien hypertexte" @@ -212,8 +212,8 @@ msgstr "Lien hypertexte" msgid "![description](URL)" msgstr "![description](URL)" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "Image" @@ -295,7 +295,7 @@ msgstr "" "Un Slug est une URL pratique permettant de nommer un article ou une page." #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Émoticônes unicode" @@ -318,112 +318,67 @@ msgstr "Émoticône" msgid "Emoji" msgstr "Émoji" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "Tout basculer" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "Êtes-vous sûr de vouloir continuer ?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "Téléchargement..." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "Le téléchargement du fichier a échoué !" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "Le type de fichier n’est pas pris en charge !" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "Taille maximale du fichier : %d mégaoctets !" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "Fenêtre modale" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "Téléchargements" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "Fermer" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "fermer" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "Contenu de l’aide" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "titre" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "gras" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "italique" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "barré" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "surligné" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "code" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "lien hypertexte" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "image" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "Téléchargement" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "Insérer" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "insérer" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "Prévisualisation" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "prévisualisation" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "Mots :" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "Contenu du prévisualisation" @@ -454,10 +409,18 @@ msgid "Items Per Admin Page" msgstr "Items par page d'administration" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "État de la publication par défaut" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "Statut de la page par défaut" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "Chemin du téléchargement" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." @@ -465,57 +428,57 @@ msgstr "" "Le dossier dans lequel les fichiers sont téléchargés, relativement à votre " "dossier d'installation." -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "Taille limite de téléchargement" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(Megabytes)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Format du flux" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "Pages de recherche" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "Pages incluses dans les résultats de recherche." -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "Webmentions" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "Envoyer et recevoir des notifications quand les URL sont mentionnées." -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" -msgstr "aide" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" +msgstr "Aider" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "Afficher les émoticônes comme des emoji Unicode." -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "" "Écrire le contenu du blog en utilisant le Markdown comme format de texte." -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "Mise à jour" @@ -549,8 +512,8 @@ msgstr "Supprimé !" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "Cancel" @@ -677,7 +640,7 @@ msgstr "Nom complet" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -757,25 +720,25 @@ msgstr "Plumes" msgid "Enabled" msgstr "Activé" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" -msgstr "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" +msgstr "" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "Désinstaller" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "Désactiver" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "Désactivé" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "Activer" @@ -795,37 +758,41 @@ msgstr "Description" msgid "Chyrp URL" msgstr "URL de Chyrp" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "L’URL de base de votre site." + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "" "Faites en sorte que l'URL de votre site pointe vers un autre emplacement que " "votre dossier d'installation." -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "Courriel de contact" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "Time Zone" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "Langue" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "Fonte Monospace" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "Écrire avec une fonte monospace." -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "Vérification des téléchargements" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "Version en cours : %s." @@ -913,29 +880,29 @@ msgstr "Contrôles" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" -msgstr "oui" +msgid "Yes" +msgstr "Oui" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" -msgstr "modifier" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" +msgstr "Modifier" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" -msgstr "supprimer" +msgid "Delete" +msgstr "Supprimer" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "Aucun résultat" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "Page %d sur %s" @@ -994,11 +961,15 @@ msgstr "Nouvel article" msgid "Posted" msgstr "Posté" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "Statut" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[Aucun]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "Gérer les téléchargements" @@ -1020,14 +991,14 @@ msgid "Type" msgstr "Type" #: admin/pages/manage_uploads.twig:61 -msgid "download" -msgstr "télécharger" +msgid "Download" +msgstr "Télécharger" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "Trier les résultats par:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "Trier les résultats" @@ -1051,11 +1022,11 @@ msgstr "Rejoint" msgid "Modules" msgstr "Modules" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "Ce module est en conflit avec les modules suivants :" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "Ce module nécessite les modules suivants pour fonctionner :" @@ -1083,119 +1054,119 @@ msgstr "Nettoyer les URLs" msgid "Gives your site prettier URLs." msgstr "Donnez à votre site des URLs plus jolies." -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "Nécessite la possibilité de réécrire les URLs." +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "Téléchargez les fichiers de réécriture d’URL." -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "Accueil" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "Faire de l'accueil la route par défaut à la place de l'index du blog." -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "URL de visualisation de l'article" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(nécessite un nettoyage des URLs)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "Syntaxe :" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "Année d'envoi" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(exemple : 2007)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "Mois d'envoi" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(exemple : 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "Jour d'envoi" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(exemple : 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "Heure d'envoi" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(exemple : 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "Minute d'envoi" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(exemple : 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "Seconde d'envoi" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(exemple : 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "Index de l'article" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "Auteur de l'article (nom d'utilisateur)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(exemple : Alex)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "Adresse non unique" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(exemple : ceci_est_propre)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "L'unique formulaire de (propre)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(exemple : celui_ci_en_a_pris_2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "La plume d'article" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(exemple : texte)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "La forme plurielle de la plume d'article" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(exemple : liens)" @@ -1207,7 +1178,7 @@ msgstr "Thèmes" msgid "Blog Themes" msgstr "Thèmes de blog" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "Choisir" @@ -1261,58 +1232,54 @@ msgstr "Écrire" msgid "Body" msgstr "Écrire" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "Slug" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" msgstr "Liste des pages publiques et visibles" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" msgstr "Public" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "Liste des pages visibles et privées" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "Privée" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "Priorité dans la liste des pages" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "Haut" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "Moyen" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "Bas" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "Parent" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[Aucun]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" msgstr "Publier" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "Sauvegarder" @@ -1323,30 +1290,30 @@ msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d fichier précédemment téléchargé avec cet article." msgstr[1] "%d fichiers précédemment téléchargés avec cet article." -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "Brouillon" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "Programmé" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "Visible seulement par un groupe d'utilisateurs :" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "Tous les utilisateurs enregistrés" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "Épingler ?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(montrer cet article au-dessus de tous les autres)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "Timestamp" diff --git a/admin/locale/it_IT/LC_MESSAGES/admin.mo b/admin/locale/it_IT/LC_MESSAGES/admin.mo index 4c4da3c..b585b69 100644 Binary files a/admin/locale/it_IT/LC_MESSAGES/admin.mo and b/admin/locale/it_IT/LC_MESSAGES/admin.mo differ diff --git a/admin/locale/it_IT/LC_MESSAGES/admin.po b/admin/locale/it_IT/LC_MESSAGES/admin.po index bd92290..c5bd3f6 100644 --- a/admin/locale/it_IT/LC_MESSAGES/admin.po +++ b/admin/locale/it_IT/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "URL canonico" @@ -92,8 +92,8 @@ msgstr "" "crescente di ID post." #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Markdown" @@ -114,7 +114,7 @@ msgid "## Heading" msgstr "## Intestazione" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "Intestazione" @@ -126,8 +126,8 @@ msgstr "### Intestazione" msgid "**Strong**" msgstr "**Forte**" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "Forte" @@ -135,8 +135,8 @@ msgstr "Forte" msgid "*Emphasis*" msgstr "*Enfasi*" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "Enfasi" @@ -152,8 +152,8 @@ msgstr "Citazione" msgid "~~Strikethrough~~" msgstr "~~Barrato~~" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "Barrato" @@ -161,8 +161,8 @@ msgstr "Barrato" msgid "`Code`" msgstr "`Codice`" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "Codice" @@ -170,8 +170,8 @@ msgstr "Codice" msgid "==Highlight==" msgstr "==Evidenziare==" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "Evidenziare" @@ -203,8 +203,8 @@ msgstr "Nuovo paragrafo" msgid "[title](URL)" msgstr "[titolo](URL)" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "Collegamento ipertestuale" @@ -212,8 +212,8 @@ msgstr "Collegamento ipertestuale" msgid "![description](URL)" msgstr "![descrizione](URL)" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "Immagine" @@ -298,7 +298,7 @@ msgstr "" "numeri 0-9 e trattino-meno (“-”)." #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Emoticon Unicode" @@ -321,112 +321,67 @@ msgstr "Emoticon" msgid "Emoji" msgstr "Emoji" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "Spunta tutto" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "Sei sicuro di volere procedere?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "Caricamento in corso…." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "Caricamento file fallito!" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "Tipo di file non supportato!" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "Dimensione massima del file: %d Megabyte!" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "Finestra modale" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "Caricamenti" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "Chiudi" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "chiudi" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "Contenuto di aiuto" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "intestazione" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "forte" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "enfasi" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "barrato" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "evidenza" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "codice" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "collegamento ipertestuale" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "immagine" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "Carica" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "Inserisci" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "inserisci" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "Anteprima" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "anteprima" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "Parole:" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "Contenuto di anteprima" @@ -457,10 +412,18 @@ msgid "Items Per Admin Page" msgstr "Elementi per pagina nella are di amministrazione" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "Stato Post predefinito" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "Stato pagina predefinito" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "Percorso per i caricamenti dati" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." @@ -468,58 +431,58 @@ msgstr "" "La directory in cui vengono caricati i file relativi alla directory di " "installazione." -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "Limite delle dimensioni per il caricamento dati" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(Megabyte)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Formato feed" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "Cerca Pagine" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "Includi pagine nei risultati della ricerca." -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "Webmention" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "Invia e ricevi notifiche quando vengono menzionati gli URL." -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" -msgstr "aiuto" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" +msgstr "Aiuto" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "Visualizza emoticon come emoji Unicode." -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "" "Comporre il contenuto del blog utilizzando la formattazione del testo " "tramite Markdown." -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "Aggiorna" @@ -553,8 +516,8 @@ msgstr "Elimina!" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "Annulla" @@ -681,7 +644,7 @@ msgstr "Nome completo" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -761,25 +724,25 @@ msgstr "Feather" msgid "Enabled" msgstr "Abilitato" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" -msgstr "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" +msgstr "" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "Disinstalla" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "Disabilita" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "Disabilitato" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "Abilita" @@ -799,37 +762,41 @@ msgstr "Descrizione" msgid "Chyrp URL" msgstr "URL Chyrp" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "L'URL di base del sito." + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "" "Gli URL del tuo sito sono indirizzati in una directory diversa da quella di " "installazione." -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "Contatto di Indirizzo email" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "Fuso orario" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "Lingua" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "Carattere a spaziatura fissa" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "Scrivi con un carattere a spaziatura fissa." -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "Verificare la disponibilità di aggiornamenti" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "Versione corrente: %s." @@ -917,29 +884,29 @@ msgstr "Controlli" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" -msgstr "sì" +msgid "Yes" +msgstr "Sì" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" -msgstr "modifica" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" +msgstr "Modifica" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" -msgstr "elimina" +msgid "Delete" +msgstr "Elimina" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "Nessun risultato" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "Pagina %d di %s" @@ -998,11 +965,15 @@ msgstr "Nuovo post" msgid "Posted" msgstr "Pubblicato" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "Stato" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[Nessuno]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "Gestire i caricamenti" @@ -1024,14 +995,14 @@ msgid "Type" msgstr "Tipo" #: admin/pages/manage_uploads.twig:61 -msgid "download" -msgstr "scaricare" +msgid "Download" +msgstr "Scaricamento" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "Ordina i risultati per:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "Ordina risultati" @@ -1055,11 +1026,11 @@ msgstr "Iscritto" msgid "Modules" msgstr "Moduli" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "Questo modulo è in conflitto con i seguenti moduli:" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "Questo modulo richiede che i seguenti moduli siano abilitati:" @@ -1087,119 +1058,119 @@ msgstr "URL conformati" msgid "Gives your site prettier URLs." msgstr "Fornisce il sito di URL piú ordinati e migliori." -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "Richiede il supporto URL Rewrite." +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "Scarica i file di riscrittura dell'URL." -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "Homepage" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "Rendi il percorso predefinito una homepage anziché l'indice del blog." -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "URL di visualizzazione post" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(richiede URL conformati)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "Sintassi:" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "Anno di creazione" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(es. 2007)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "Mese di crezione" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(es. 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "Giorno di creazione" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(es. 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "Ora di creazione" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(es. 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "Minuto di creazione" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(es. 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "Secondo di creazione" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(es. 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "Post ID" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "Autore del post (nome utente)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(es. Alex)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "Slug non unico" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(es. this_is_clean)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "La forma unica (clean)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(es. this_one_is_taken_2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "Feather del post" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(es. testo)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "La forma plurale della Feather del post" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(es. collegamenti)" @@ -1211,7 +1182,7 @@ msgstr "Temi" msgid "Blog Themes" msgstr "Temi del blog" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "Seleziona" @@ -1263,58 +1234,54 @@ msgstr "Scrivi" msgid "Body" msgstr "Testo" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "Slug" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" msgstr "Pubblico e visibile nell'elenco delle pagine" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" msgstr "Pubblico" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "Privato e visibile nell'elenco delle pagine" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "Privato" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "Priorità nell'elenco delle pagine" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "Alta" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "Medio" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "Bassa" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "Principale" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[Nessuno]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" msgstr "Pubblica" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "Salva" @@ -1325,30 +1292,30 @@ msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d file precedentemente caricato con questo post." msgstr[1] "%d file precedentemente caricato con questo post." -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "Bozza" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "Programmato" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "Visibile solo per un gruppo di utenti:" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "Tutti gli utenti registrati" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "Pinned?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(mostra questo post sopra tutti gli altri)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "Date e ora" diff --git a/admin/locale/nl_NL/LC_MESSAGES/admin.mo b/admin/locale/nl_NL/LC_MESSAGES/admin.mo index 96c7753..5776d95 100644 Binary files a/admin/locale/nl_NL/LC_MESSAGES/admin.mo and b/admin/locale/nl_NL/LC_MESSAGES/admin.mo differ diff --git a/admin/locale/nl_NL/LC_MESSAGES/admin.po b/admin/locale/nl_NL/LC_MESSAGES/admin.po index edd876b..536478c 100644 --- a/admin/locale/nl_NL/LC_MESSAGES/admin.po +++ b/admin/locale/nl_NL/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "Kanonieke URL" @@ -90,8 +90,8 @@ msgstr "" "ID en vervolgens in oplopende volgorde van bericht-ID." #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Markdown" @@ -112,7 +112,7 @@ msgid "## Heading" msgstr "## Kop" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "Kop" @@ -124,8 +124,8 @@ msgstr "### Kop" msgid "**Strong**" msgstr "**Sterk**" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "Sterk" @@ -133,8 +133,8 @@ msgstr "Sterk" msgid "*Emphasis*" msgstr "*Vet*" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "Vet" @@ -150,8 +150,8 @@ msgstr "Citaat" msgid "~~Strikethrough~~" msgstr "~~Doorhalen~~" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "Doorhalen" @@ -159,8 +159,8 @@ msgstr "Doorhalen" msgid "`Code`" msgstr "`Code`" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "Code" @@ -168,8 +168,8 @@ msgstr "Code" msgid "==Highlight==" msgstr "==Markeren==" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "Markeren" @@ -201,8 +201,8 @@ msgstr "Nieuwe paragraaf" msgid "[title](URL)" msgstr "[titel](URL)" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "Hyperlink" @@ -210,8 +210,8 @@ msgstr "Hyperlink" msgid "![description](URL)" msgstr "![beschrijving](URL)" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "Afbeelding" @@ -296,7 +296,7 @@ msgstr "" "0-9, en een liggend-streepje (“-”)." #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Unicode Emoticons" @@ -319,112 +319,67 @@ msgstr "Emoticon" msgid "Emoji" msgstr "Emoji" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "Alles selecteren" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "Weet je zeker dat je wilt doorgaan?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "Aan het uploaden..." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "Het uploaden van bestanden is mislukt!" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "Bestandstype wordt niet ondersteund!" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "Maximale bestandsgrootte: %d Megabytes!" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "Voorscherm" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "Uploads" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "Sluit" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "sluit" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "Help inhoud" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "kop" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "sterk" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "vet" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "doorhalen" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "markeren" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "code" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "hyperlink" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "afbeelding" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "Upload" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "Invoegen" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "invoegen" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "Vooruitblik" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "vooruitblik" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "Woorden:" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "Vooruitblik inhoud" @@ -455,66 +410,74 @@ msgid "Items Per Admin Page" msgstr "Onderdelen per beheerpagina" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "Standaardblogpoststatus" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "Standaard paginastatus" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "Pad voor uploads" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." msgstr "" "De map waarnaar bestanden worden geupload, relatief t.o.v. je installatiemap." -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "Upload grootte limiet" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(Megabytes)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Feed formaat" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "Zoek pagina's" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "Zoekresultaten inclusief pagina's." -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "Webmentions" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "Verzend en ontvang meldingen wanneer URL's worden genoemd." -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" -msgstr "hulp" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" +msgstr "" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "Geef emoticons weer als Unicode emojis." -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "Stel een blogpost samen, gebruik makende van markup syntax." -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "Update" @@ -548,8 +511,8 @@ msgstr "Verwijder!" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "Annuleer" @@ -677,7 +640,7 @@ msgstr "Volledige naam" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -757,25 +720,25 @@ msgstr "Feathers" msgid "Enabled" msgstr "Geactiveerd" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" -msgstr "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" +msgstr "" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "Deïnstalleer" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "De-activeer" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "Gedeactiveerd" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "Activeer" @@ -795,37 +758,41 @@ msgstr "Beschrijving" msgid "Chyrp URL" msgstr "Chyrp URL" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "De basis-URL voor uw site." + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "" "Laat de URLs van je website ergens anders naar verwijzen dan naar de " "installatiemap." -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "Contact Emailadres" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "Tijdzone" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "Taal" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "Monospace-lettertype" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "Schrijf met een monospace-lettertype." -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "Controleer op updates" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "Huidige versie: %s." @@ -913,29 +880,29 @@ msgstr "Beheer" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" -msgstr "ja" +msgid "Yes" +msgstr "Ja" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" -msgstr "wijzig" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" +msgstr "Bewerken" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" -msgstr "verwijder" +msgid "Delete" +msgstr "Verwijderen" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "Geen resultaten" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "%de pagina van %s" @@ -994,11 +961,15 @@ msgstr "Nieuwe Blogpost" msgid "Posted" msgstr "Geplaatst" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "Status" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[Geen]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "Beheer Uploads" @@ -1020,14 +991,14 @@ msgid "Type" msgstr "Type" #: admin/pages/manage_uploads.twig:61 -msgid "download" -msgstr "download" +msgid "Download" +msgstr "Download" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "Sorteer resultaten op:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "Sorteer resultaten" @@ -1051,11 +1022,11 @@ msgstr "Toegevoegd" msgid "Modules" msgstr "Modules" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "Deze module veroorzaakt een conflict met de volgende modules:" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "Voor deze module moeten de volgende modules worden gedeactiveerd:" @@ -1083,120 +1054,120 @@ msgstr "Schone URLs" msgid "Gives your site prettier URLs." msgstr "Geef je website mooiere URLs." -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "Vereist URL rewrite ondersteuning" +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "Download de URL-herschrijfbestanden." -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "Homepagina" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "" "Maak de standaard route een statische pagina in plaats van de blogindex." -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "Blogpost Bekijk URL" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(vereist schone URLs)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "Syntax:" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "Jaar geplaatst" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(bijv. 2021)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "Maand geplaatst" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(bijv. 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "Dag geplaatst" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(bijv. 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "Uur geplaatst" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(bijv. 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "Minuut geplaatst" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(bijv. 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "Seconde geplaatst" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(bijv. 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "Blogpost ID" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "Blogpost schrijver (gebruikersnaam)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(bijv. Alex)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "De niet-unieke slug" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(bijv. dit-is-schoon)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "De unieke vorm van (schoon)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(bijv. deze-is-reeds-bezet-2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "De Blogposts' feather" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(bijv. tekst)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "De meervoudsvorm van de blogposts' feather" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(bijv. links)" @@ -1208,7 +1179,7 @@ msgstr "Thema's" msgid "Blog Themes" msgstr "Blogpost thema's" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "Selecteer" @@ -1261,58 +1232,54 @@ msgstr "Schrijf" msgid "Body" msgstr "Body" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "Slug" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" msgstr "Openbaar en zichtbaar in pagina-lijst" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" msgstr "Openbaar" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "Privé en zichtbaar in pagina-lijst" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "Privé" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "Rangorde in pagina-lijst" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "Hoog" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "Gemiddeld" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "Laag" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "Bovenliggend" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[Geen]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" msgstr "Publiceer" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "Opslaan" @@ -1323,30 +1290,30 @@ msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d bestand eerder al met deze blogpost geupload." msgstr[1] "%d bestanden eerder al met deze blogpost geupload." -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "Concept" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "Geagendeerd" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "Alleen zichtbaar voor een bepaalde groep gebruikers:" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "Alle geregistreerde gebruikers" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "Vastgezet?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(toon deze blogpost helemaal bovenaan)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "Tijdstempel" diff --git a/admin/locale/zh_CN/LC_MESSAGES/admin.mo b/admin/locale/zh_CN/LC_MESSAGES/admin.mo index 1ee285c..be683f6 100644 Binary files a/admin/locale/zh_CN/LC_MESSAGES/admin.mo and b/admin/locale/zh_CN/LC_MESSAGES/admin.mo differ diff --git a/admin/locale/zh_CN/LC_MESSAGES/admin.po b/admin/locale/zh_CN/LC_MESSAGES/admin.po index c540e36..9020b2b 100644 --- a/admin/locale/zh_CN/LC_MESSAGES/admin.po +++ b/admin/locale/zh_CN/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "规范URL" @@ -80,8 +80,8 @@ msgstr "" "将按用户 ID 降序对帖子表进行排序,然后按帖子 ID 升序排序。" #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Markdown" @@ -100,7 +100,7 @@ msgid "## Heading" msgstr "" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "" @@ -112,8 +112,8 @@ msgstr "" msgid "**Strong**" msgstr "" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "" @@ -121,8 +121,8 @@ msgstr "" msgid "*Emphasis*" msgstr "" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "" @@ -138,8 +138,8 @@ msgstr "" msgid "~~Strikethrough~~" msgstr "" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "" @@ -147,8 +147,8 @@ msgstr "" msgid "`Code`" msgstr "" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "" @@ -156,8 +156,8 @@ msgstr "" msgid "==Highlight==" msgstr "" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "" @@ -189,8 +189,8 @@ msgstr "新行" msgid "[title](URL)" msgstr "" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "" @@ -198,8 +198,8 @@ msgstr "" msgid "![description](URL)" msgstr "" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "图像" @@ -282,7 +282,7 @@ msgstr "" "时自动生成。 一个slug 只能包含字母a-z,数字0-9和连字符减号(“ - ”)。" #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Unicode表情符号" @@ -303,112 +303,67 @@ msgstr "表情" msgid "Emoji" msgstr "表情符号" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "全部切换" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "确定继续?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "上传中..." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "文件上传失败!" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "不支持文件类型!" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "最大文件大小:%d兆字节!" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "模态窗口" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "上传" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "关闭" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "关闭" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "帮助内容" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "标题" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "强" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "重点" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "穿越" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "突出" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "代码" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "链接" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "图像" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "上传" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "插入" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "插入" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "预览" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "预览" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "预览内容" @@ -439,65 +394,73 @@ msgid "Items Per Admin Page" msgstr "每个管理员的页面" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "默认帖子状态" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "默认页面状态" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "上传路径" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." msgstr "相对于您安装目录的上传文件的目录。" -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "上传大小限制" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(M)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Feed格式" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "搜索页面" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "在搜索结果中包括页面。" -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "在提及 URL 时发送和接收通知。" -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" msgstr "帮助" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "将表情符号显示为Unicode表情符号。" -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "使用Markdown语法撰写博客内容。" -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "更新" @@ -531,8 +494,8 @@ msgstr "删除!" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "取消" @@ -659,7 +622,7 @@ msgstr "全名" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -737,25 +700,25 @@ msgstr "羽毛" msgid "Enabled" msgstr "已启用" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" msgstr "信息" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "卸载" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "禁用" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "已禁用" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "启用" @@ -775,35 +738,39 @@ msgstr "描述" msgid "Chyrp URL" msgstr "" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "您网站的基 URL。" + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "让您的网站网址指向安装目录以外的其他位置。" -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "联系的邮件地址" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "时区" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "语言" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "等宽字体" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "使用等宽字体书写。" -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "检查更新" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "当前版本: %s。" @@ -891,29 +858,29 @@ msgstr "操作" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" +msgid "Yes" msgstr "是" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" msgstr "编辑" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" +msgid "Delete" msgstr "删除" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "没有结果" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "%d of %s 的页面" @@ -972,11 +939,15 @@ msgstr "新加帖子" msgid "Posted" msgstr "已发布的" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "状态" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[空]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "管理上传" @@ -998,14 +969,14 @@ msgid "Type" msgstr "类型" #: admin/pages/manage_uploads.twig:61 -msgid "download" +msgid "Download" msgstr "下载" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "结果排序依据:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "对结果进行排序" @@ -1029,11 +1000,11 @@ msgstr "加入时间" msgid "Modules" msgstr "模块" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "该模块与以下模块冲突:" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "这个模块需要以下模块启用:" @@ -1061,119 +1032,119 @@ msgstr "优雅链接" msgid "Gives your site prettier URLs." msgstr "为您的网站提供更漂亮的URL。" -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "需要 URL rewrite 支持。" +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "下载 URL 重写文件。" -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "主页" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "使默认路由成为主页而不是博客索引。" -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "帖子查看链接" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(需要优雅链接)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "符号:" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "提交的年份" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(例如:2007)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "提交的月份" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(例如 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "提交的天" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(例如 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "提交的小时" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(例如 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "提交的分" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(例如 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "提交的秒" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(例如 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "帖子ID" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "帖子作者(用户名)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(例如 Alex)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "非独特 slug" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(例如 this_is_clean)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "独特的(优雅)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(例如 this_one_is_taken_2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "帖子的羽毛" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(例如 text)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "帖子羽毛的复数形式" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(例如 links)" @@ -1185,7 +1156,7 @@ msgstr "主题" msgid "Blog Themes" msgstr "博客主题" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "选择" @@ -1237,58 +1208,54 @@ msgstr "写作" msgid "Body" msgstr "正文" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" -msgstr "公开并在页面列表中显示" +msgstr "公共并在页面列表中显示" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" -msgstr "公开" +msgstr "公共" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "隐藏并在页面列表中显示" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "隐藏" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "页面列表中的优先级" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "高" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "中" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "低" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "父级" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[空]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" -msgstr "公开" +msgstr "发布" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "保存" @@ -1298,30 +1265,30 @@ msgid "%d file previously uploaded with this post." msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d之前随此帖子上传的文件。" -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "草稿" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "定时发布" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "仅可见于一组用户:" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "所有注册的用户" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "置顶?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(置顶显示)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "时间戳" diff --git a/admin/pages/content_settings.twig b/admin/pages/content_settings.twig index 4531a08..ed759c5 100644 --- a/admin/pages/content_settings.twig +++ b/admin/pages/content_settings.twig @@ -22,6 +22,28 @@

+ +{#- -#} + +

+

+ +{#- -#} + +

+

{#- -#} @@ -70,7 +92,7 @@ {#- -#} @@ -83,7 +105,7 @@ {#- -#} diff --git a/admin/pages/export.twig b/admin/pages/export.twig index 164152e..411854d 100644 --- a/admin/pages/export.twig +++ b/admin/pages/export.twig @@ -18,7 +18,7 @@ {{ "Filter Posts" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} @@ -36,7 +36,7 @@ {{ "Filter Pages" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} @@ -54,7 +54,7 @@ {{ "Filter Groups" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} @@ -72,7 +72,7 @@ {{ "Filter Users" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} diff --git a/admin/pages/feathers.twig b/admin/pages/feathers.twig index 400fdf5..f34856d 100644 --- a/admin/pages/feathers.twig +++ b/admin/pages/feathers.twig @@ -10,13 +10,15 @@ {% for safename, feather in enabled_feathers %}

  • -{{ feather.name }}{# translation is done in the controller #} +{{ feather.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    -{{ feather.description }}{# translation is done in the controller #} +{{ feather.description }} +{# translation is done in the controller #}

    @@ -43,13 +45,15 @@ {% for safename, feather in disabled_feathers %}
  • -{{ feather.name }}{# translation is done in the controller #} +{{ feather.name }} +{# translation is done in the controller #} -{{- icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    -{{ feather.description }}{# translation is done in the controller #} +{{ feather.description }} +{# translation is done in the controller #}

    diff --git a/admin/pages/general_settings.twig b/admin/pages/general_settings.twig index c25be73..dcc2e09 100644 --- a/admin/pages/general_settings.twig +++ b/admin/pages/general_settings.twig @@ -25,14 +25,17 @@ {{ "Chyrp URL" | translate }} {#- -#} - + + +{{ "The base URL for your site." | translate }} +

    {#- -#} diff --git a/admin/pages/manage_groups.twig b/admin/pages/manage_groups.twig index 78c6ef7..bf77a2d 100644 --- a/admin/pages/manage_groups.twig +++ b/admin/pages/manage_groups.twig @@ -10,7 +10,7 @@ {% if visitor.group.can("add_group") %} -{{ icon_img("add.svg") }}{{ "New Group" | translate }} +{{ icon_svg("add.svg") }}{{ "New Group" | translate }} {% endif %} @@ -38,26 +38,27 @@ {% if group.id == site.default_group %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {% if group.id == site.guest_group %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {{ trigger.call("manage_groups_column", groups) }} -{{ group.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ group.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ group.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ group.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/manage_pages.twig b/admin/pages/manage_pages.twig index b70b816..cc4e253 100644 --- a/admin/pages/manage_pages.twig +++ b/admin/pages/manage_pages.twig @@ -8,14 +8,14 @@ {% if visitor.group.can("add_page") %} -{{ icon_img("add.svg") }}{{ "New Page" | translate }} +{{ icon_svg("add.svg") }}{{ "New Page" | translate }} {% endif %} @@ -52,12 +52,12 @@ {% if page.public %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {% if page.show_in_list %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} @@ -65,16 +65,17 @@ {{ trigger.call("manage_pages_column", page) }} -{{ page.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ page.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ page.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ page.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/manage_posts.twig b/admin/pages/manage_posts.twig index 5792dc6..b4f8e32 100644 --- a/admin/pages/manage_posts.twig +++ b/admin/pages/manage_posts.twig @@ -8,14 +8,14 @@ {% if visitor.group.can("add_post", "add_draft") %} -{{ icon_img("add.svg") }}{{ "New Post" | translate }} +{{ icon_svg("add.svg") }}{{ "New Post" | translate }} {% endif %} @@ -34,7 +34,7 @@ {% for post in posts.paginated %} - + {{ post.title() | striptags | oneof("[Untitled]" | translate) | truncate(40) }} @@ -42,23 +42,27 @@ {{ post.created_at | time }} -{{ post.status_name }} +{% for group in post_statuses.(post.id).groups %} +{{ group.name }} +{% else %} +{{ post_statuses.(post.id).name | oneof("[None]" | translate) }} +{% endfor %} {{ post.author.name }} {{ trigger.call("manage_posts_column", post) }} -{{ post.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ post.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ post.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ post.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} - +{{ icon_svg("failure.svg", false, "emblem") }} {{ "No results" | translate }} diff --git a/admin/pages/manage_uploads.twig b/admin/pages/manage_uploads.twig index e558bb4..b15d114 100644 --- a/admin/pages/manage_uploads.twig +++ b/admin/pages/manage_uploads.twig @@ -10,7 +10,7 @@ {% if visitor.group.can("import_content") %} -{{ icon_img("add.svg") }}{{ "Add Files" | translate }} +{{ icon_svg("add.svg") }}{{ "Add Files" | translate }} {% endif %} @@ -34,15 +34,15 @@ {% if ["jpg", "jpeg", "png", "webp", "gif"] | contains(upload.type) %} {{ upload.name | thumbnail("", false, ["max_width=70", "quality=60", "square=1"], "70px") }} {% elseif ["avif", "tif", "tiff", "heif", "bmp"] | contains(upload.type) %} -{{ icon_img("image.svg", "", "placeholder") }} +{{ icon_svg("image.svg", false, "placeholder") }} {% elseif ["mp3", "m4a", "oga", "ogg", "mka", "flac", "wav", "aiff"] | contains(upload.type) %} -{{ icon_img("audio.svg", "", "placeholder") }} +{{ icon_svg("audio.svg", false, "placeholder") }} {% elseif ["mpg", "mpeg", "mp2", "mp4", "m4v", "ogv", "mkv", "mov", "avi", "webm", "3gp", "ts"] | contains(upload.type) %} -{{ icon_img("video.svg", "", "placeholder") }} +{{ icon_svg("video.svg", false, "placeholder") }} {% elseif ["zip", "tar", "rar", "gz", "bz2", "7z", "dmg", "cab", "iso", "udf"] | contains(upload.type) %} -{{ icon_img("archive.svg", "", "placeholder") }} +{{ icon_svg("archive.svg", false, "placeholder") }} {% else %} -{{ icon_img("file.svg", "", "placeholder") }} +{{ icon_svg("file.svg", false, "placeholder") }} {% endif %} {{ upload.name | fix }} @@ -58,19 +58,20 @@ {{ trigger.call("manage_uploads_column", upload) }} -{{- icon_img("download.svg", "download" | translate) -}} +{{- icon_svg("download.svg", "Download" | translate) -}} -{{- icon_img("delete.svg", "delete" | translate) -}} +{{- icon_svg("delete.svg", "Delete" | translate) -}} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/manage_users.twig b/admin/pages/manage_users.twig index ed00053..9a4243a 100644 --- a/admin/pages/manage_users.twig +++ b/admin/pages/manage_users.twig @@ -8,14 +8,14 @@ {% if visitor.group.can("add_user") %} -{{ icon_img("add.svg") }}{{ "New User" | translate }} +{{ icon_svg("add.svg") }}{{ "New User" | translate }} {% endif %} @@ -43,7 +43,7 @@ {% if user.full_name is not empty %}({{ user.full_name }}){% endif %} -{{ user.group.name }} +{{ user.group.name }} {{ user.joined_at | time }} @@ -54,22 +54,23 @@ {% if site.email_activation %} {% if user.approved %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {% endif %} {{ trigger.call("manage_users_column", user) }} -{{ user.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ user.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ user.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ user.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/modules.twig b/admin/pages/modules.twig index a51ca67..c1814e9 100644 --- a/admin/pages/modules.twig +++ b/admin/pages/modules.twig @@ -10,9 +10,10 @@ {% for safename, module in enabled_modules %}

  • -{{ module.name }}{# translation is done in the controller #} +{{ module.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    @@ -63,9 +64,10 @@ {% for safename, module in disabled_modules %}

  • -{{ module.name }}{# translation is done in the controller #} +{{ module.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    diff --git a/admin/pages/route_settings.twig b/admin/pages/route_settings.twig index bcaa32b..edab292 100644 --- a/admin/pages/route_settings.twig +++ b/admin/pages/route_settings.twig @@ -10,13 +10,14 @@ {#- -#} -{{ "Gives your site prettier URLs." | translate }} {{ "Requires URL rewrite support." | translate }} +{{ "Gives your site prettier URLs." | translate }} +{{ "Download the URL rewrite files." | translate }}

    diff --git a/admin/pages/themes.twig b/admin/pages/themes.twig index 54b8250..13c58e3 100644 --- a/admin/pages/themes.twig +++ b/admin/pages/themes.twig @@ -8,9 +8,10 @@ {% for safename, theme in themes %}

  • -{{ theme.name }}{# translation is done in the controller #} +{{ theme.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    diff --git a/admin/partials/page_fields.twig b/admin/partials/page_fields.twig index d599a62..5488bbc 100644 --- a/admin/partials/page_fields.twig +++ b/admin/partials/page_fields.twig @@ -8,11 +8,13 @@ -{% if field_markdown %} + +{% if field_markdown %} -{{- icon_img("markdown.svg", "Markdown" | translate) -}} +{{- icon_svg("markdown.svg", "Markdown" | translate) -}} -{% endif %} +{% endif %} +

    @@ -22,7 +24,7 @@ @@ -30,13 +32,13 @@

    diff --git a/admin/partials/post_fields.twig b/admin/partials/post_fields.twig index 4c29e4e..6f48adb 100644 --- a/admin/partials/post_fields.twig +++ b/admin/partials/post_fields.twig @@ -29,7 +29,7 @@ {% endif %} {% if field.help is defined %} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {% endif %} @@ -48,10 +48,12 @@ {% endif %} {% elseif field.type == "text_block" %} -{% if field_markdown is not empty %} -{{- icon_img("markdown.svg", "Markdown" | translate) -}} +{% if field_markdown is not empty %} + +{{- icon_svg("markdown.svg", "Markdown" | translate) -}} -{% endif %} +{% endif %} + {% elseif field.type == "checkbox" %} @@ -77,24 +79,24 @@

    @@ -145,7 +147,7 @@ {% endif %} {% if field.help is defined %} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {% endif %} diff --git a/admin/partials/uploads_modal.twig b/admin/partials/uploads_modal.twig index e2e9f95..95d83b5 100644 --- a/admin/partials/uploads_modal.twig +++ b/admin/partials/uploads_modal.twig @@ -7,19 +7,19 @@ {{ upload.name | thumbnail("", false, ["max_width=70", "quality=60", "square=1"], "70px") }} {% set file_url = site.chyrp_url ~ "/includes/thumbnail.php?file=" ~ (upload.name | url_encode) %} {% elseif ["avif", "tif", "tiff", "bmp"] | contains(upload.type) %} -{{ icon_img("image.svg", "", "placeholder") }} +{{ icon_svg("image.svg", false, "placeholder") }} {% set file_url = site.chyrp_url ~ "/includes/thumbnail.php?file=" ~ (upload.name | url_encode) %} {% elseif ["mp3", "m4a", "oga", "ogg", "mka", "flac", "wav"] | contains(upload.type) %} -{{ icon_img("audio.svg", "", "placeholder") }} +{{ icon_svg("audio.svg", false, "placeholder") }} {% set file_url = upload.name | uploaded %} {% elseif ["mpg", "mpeg", "mp2", "mp4", "m4v", "ogv", "mkv", "mov", "avi", "webm", "3gp", "ts"] | contains(upload.type) %} -{{ icon_img("video.svg", "", "placeholder") }} +{{ icon_svg("video.svg", false, "placeholder") }} {% set file_url = upload.name | uploaded %} {% elseif ["zip", "tar", "rar", "gz", "bz2", "7z", "dmg", "cab", "iso", "udf"] | contains(upload.type) %} -{{ icon_img("archive.svg", "", "placeholder") }} +{{ icon_svg("archive.svg", false, "placeholder") }} {% set file_url = upload.name | download %} {% else %} -{{ icon_img("file.svg", "", "placeholder") }} +{{ icon_svg("file.svg", false, "placeholder") }} {% set file_url = upload.name | download %} {% endif %} @@ -30,7 +30,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/stylesheets/all.css b/admin/stylesheets/all.css index f6ad72d..f256ddb 100644 --- a/admin/stylesheets/all.css +++ b/admin/stylesheets/all.css @@ -65,7 +65,7 @@ html, body, div, dl, dt, dd, ul, ol, li, p, h1, h2, h3, h4, h5, h6, img, pre, code, -form, fieldset, input, select, textarea, +form, fieldset, input, select, svg, textarea, table, tbody, tr, th, td, legend, caption, blockquote, aside, figure, figcaption { margin: 0em; @@ -107,30 +107,34 @@ ol { --chyrp-strong-red: #c11600; --chyrp-strong-green: #108600; --chyrp-strong-blue: #1e57ba; + --chyrp-strong-purple: #ba1eba; --chyrp-light-yellow: #fffde6; --chyrp-light-red: #faebe4; --chyrp-light-green: #ebfae4; --chyrp-light-blue: #f2fbff; + --chyrp-light-purple: #fae4fa; --chyrp-medium-yellow: #fffbcc; --chyrp-medium-red: #fcddcf; --chyrp-medium-green: #daf1d0; --chyrp-medium-blue: #e1f2fa; + --chyrp-medium-purple: #f6d5f6; --chyrp-border-yellow: #e5d7a1; --chyrp-border-red: #d6bdb5; --chyrp-border-green: #bdd6b5; --chyrp-border-blue: #b8cdd9; + --chyrp-border-purple: #d6b5d6; } *::selection { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } body { font-family: "Open Sans webfont", sans-serif; font-size: 1rem; line-height: 1.5; - color: #1f1f23; + color: var(--chyrp-inky-black); tab-size: 4; - background-color: #efefef; + background-color: var(--chyrp-english-grey); min-width: 320px; } h1, h2, h3, h4, h5, h6 { @@ -168,8 +172,8 @@ small, .small { font-size: 0.75em; } mark { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } del { font: inherit; @@ -177,8 +181,8 @@ del { } ins { font: inherit; - color: #1f1f23; - background-color: #daf1d0; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-medium-green); } figure, blockquote { margin-bottom: 1rem; @@ -200,18 +204,18 @@ p { } a:link, a:visited { - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: underline; text-underline-offset: 0.125em; } a:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 0px; } a:hover, a:focus, a:active { - color: #1e57ba; + color: var(--chyrp-strong-blue); text-decoration: underline; text-underline-offset: 0.125em; } @@ -227,9 +231,9 @@ a:active { /* Group: Header */ #header { - background-color: #1f1f23; + background-color: var(--chyrp-inky-black); padding: 2rem 0rem 3rem 0rem; - color: #efefef; + color: var(--chyrp-english-grey); text-align: center; position: relative; } @@ -237,7 +241,7 @@ a:active { margin: 0rem 2rem 2rem 2rem; } #header h1 a { - color: #ffffff; + color: var(--chyrp-pure-white); text-decoration: none; } #header #navigation { @@ -273,14 +277,14 @@ a:active { } #header #navigation li a:link, #header #navigation li a:visited { - background-color: #cfcfcf; + background-color: var(--chyrp-irish-grey); } #header #navigation li.selected a:link, #header #navigation li.selected a:visited, #header #navigation li a:hover, #header #navigation li a:focus { outline: none; - background-color: #efefef; + background-color: var(--chyrp-english-grey); } /* Group: Sub-Navigation */ @@ -292,7 +296,7 @@ a:active { column-gap: 4px; margin: 4rem 4rem 0rem 4rem; overflow: hidden; - border-bottom: 1px solid #afafaf; + border-bottom: 1px solid var(--chyrp-scottish-grey); } #sub_nav li { display: block; @@ -313,31 +317,31 @@ a:active { text-overflow: ellipsis; margin: 0rem; padding: 0rem 1rem 100vh 1rem; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); border-bottom: none; border-top-left-radius: 0.75em; border-top-right-radius: 0.75em; } #sub_nav li a:link, #sub_nav li a:visited { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } #sub_nav li.selected a:link, #sub_nav li.selected a:visited, #sub_nav li a:hover, #sub_nav li a:focus { outline: none; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); } /* Group: Content */ #content { clear: both; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); padding: 1rem; margin: 0rem 4rem 4rem 4rem; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); border-top: none; position: relative; overflow: hidden; @@ -345,21 +349,21 @@ a:active { hr { border: none; clear: both; - border-top: 1px solid #cfcfcf; + border-top: 1px solid var(--chyrp-irish-grey); margin: 2rem 0rem; } aside { box-sizing: border-box; margin-bottom: 1rem; - padding: 0.5rem 1rem; - border: 1px solid #e5d7a1; + padding: 0.5rem; + border: 1px solid var(--chyrp-border-yellow); border-radius: 0.25em; - background-color: #fffde6; + background-color: var(--chyrp-light-yellow); } pre { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; + background-color: var(--chyrp-english-grey); margin: 1rem 0rem; padding: 1rem; overflow-x: auto; @@ -368,9 +372,9 @@ pre { code { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; - padding: 0px 2px; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + padding: 2px 4px 0px 4px; + border: 1px solid var(--chyrp-irish-grey); vertical-align: bottom; white-space: break-spaces; } @@ -418,19 +422,19 @@ span.pages { border-radius: 0.5em; } #content ul.extend > li { - background-color: #efefef; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + border: 1px solid var(--chyrp-irish-grey); } #content ul#modules_enabled > li, #content ul#feathers_enabled > li, #content ul.themes > li.current { - background-color: #daf1d0; - border: 1px solid #bdd6b5; + background-color: var(--chyrp-medium-green); + border: 1px solid var(--chyrp-border-green); } #content ul#modules_enabled > li.error, #content ul#modules_disabled > li.error { - background-color: #fcddcf; - border: 1px solid #d6bdb5; + background-color: var(--chyrp-medium-red); + border: 1px solid var(--chyrp-border-red); } li.module ol.module_conflicts_list, li.module ol.module_dependencies_list { @@ -448,20 +452,16 @@ li.theme div.controls { text-align: end; margin-top: 1rem; padding-top: 1rem; - border-top: 1px solid #cfcfcf; + border-top: 1px solid var(--chyrp-irish-grey); } ul#modules_enabled div.controls, ul#feathers_enabled div.controls, li.theme.current div.controls { - border-top: 1px solid #bdd6b5; + border-top: 1px solid var(--chyrp-border-green); } ul#modules_enabled > li.error div.controls, ul#modules_disabled > li.error div.controls { - border-top: 1px solid #d6bdb5; -} -#content ul.extend li a.emblem img, -#content ul.extend > li > h3 a { - text-decoration: none; + border-top: 1px solid var(--chyrp-border-red); } /* Group: Forms */ @@ -478,11 +478,16 @@ textarea { select, input { display: inline-block; } +textarea[readonly], +input[readonly], +select[readonly] { + cursor: not-allowed; +} input[type="checkbox"], input[type="radio"] { appearance: none; box-sizing: border-box; - color: #1f1f23; + color: var(--chyrp-inky-black); font: inherit; font-size: 1.25rem; position: relative; @@ -490,8 +495,8 @@ input[type="radio"] { width: 1em; height: 1em; border-radius: 0em; - border: 1px solid #cfcfcf; - background-color: #ffffff; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-pure-white); } input[type="radio"] { border-radius: 50%; @@ -509,23 +514,23 @@ input[type="range"], input[type="password"] { box-sizing: border-box; width: 20ch; - color: #1f1f23; + color: var(--chyrp-inky-black); font: inherit; font-size: 1.25rem; padding: 0.5rem; border-radius: 0em; - border: 1px solid #cfcfcf; - background-color: #ffffff; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-pure-white); } input[type="file"] { box-sizing: border-box; - color: #1f1f23; + color: var(--chyrp-inky-black); font: inherit; font-size: 1.25rem; padding: 1rem; border-radius: 0em; - border: 1px solid #cfcfcf; - background-color: #ffffff; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-pure-white); } html[dir="ltr"] select { appearance: none; @@ -556,12 +561,12 @@ input[type="radio"]:checked { background-repeat: no-repeat; } input::placeholder { - color: #656565; + color: var(--chyrp-winter-grey); opacity: 1; } input:invalid, textarea:invalid { - border-color: #ff7f00; + border-color: var(--chyrp-strong-orange); } select:focus, textarea:focus, @@ -576,8 +581,8 @@ input[type="number"]:focus, input[type="range"]:focus, input[type="password"]:focus, input[type="file"]:focus { - border-color: #1e57ba; - outline: #1e57ba solid 2px; + border-color: var(--chyrp-strong-blue); + outline: var(--chyrp-strong-blue) solid 2px; outline-offset: -2px; } textarea.error, @@ -593,7 +598,7 @@ input[type="number"].error, input[type="range"].error, input[type="password"].error, input[type="file"].error { - background-color: #faebe4; + background-color: var(--chyrp-light-red); } textarea.error:focus, input[type="checkbox"].error:focus, @@ -608,15 +613,21 @@ input[type="number"].error:focus, input[type="range"].error:focus, input[type="password"].error:focus, input[type="file"].error:focus { - border: 1px solid #c11600; - outline-color: #c11600; + border: 1px solid var(--chyrp-strong-red); + outline-color: var(--chyrp-strong-red); } input[type="password"].strong { - background-color: #ebfae4; + background-color: var(--chyrp-light-green); } input[type="password"].strong:focus { - border: 1px solid #108600; - outline-color: #108600; + border: 1px solid var(--chyrp-strong-green); + outline-color: var(--chyrp-strong-green); +} +textarea[readonly]:focus, +input[readonly]:focus, +select[readonly]:focus { + border-color: var(--chyrp-irish-grey); + outline-color: var(--chyrp-irish-grey); } input.code, textarea.code { @@ -684,21 +695,21 @@ table { width: 100%; } table th { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); padding: 0.5rem; font: inherit; font-weight: 600; vertical-align: middle; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); } table td { padding: 0.5rem; font: inherit; vertical-align: middle; - border: 1px solid #cfcfcf; + border: 1px solid var(--chyrp-irish-grey); } table tbody tr:nth-child(even) td { - background-color: #fbfbfb; + background-color: var(--chyrp-summer-grey); } table tbody tr td.main { min-width: 10em; @@ -745,22 +756,22 @@ table tbody tr td.placeholder { border: none; } table tbody tr td.status { - background-color: #f2fbff; + background-color: var(--chyrp-light-blue); } table tbody tr.private td.status { - background-color: #faebe4; + background-color: var(--chyrp-light-red); } table tbody tr.registered_only td.status { - background-color: #fffde6; + background-color: var(--chyrp-light-purple); } table tbody tr.public td.status { - background-color: #ebfae4; + background-color: var(--chyrp-light-green); } table tbody tr.denied td.status { - background-color: #faebe4; + background-color: var(--chyrp-light-red); } table tbody tr.approved td.status { - background-color: #ebfae4; + background-color: var(--chyrp-light-green); } table tbody tr.comment_excerpt td p { margin: 0rem; @@ -768,7 +779,9 @@ table tbody tr.comment_excerpt td p { th.toggler > label { display: none; } +td.controls svg, td.controls img { + fill: currentColor; position: relative; top: 2px; width: 16px; @@ -779,10 +792,12 @@ td img.image { height: 70px; margin-inline-end: 0.5rem; vertical-align: middle; - outline: #ff7f00 solid 1px; + outline: var(--chyrp-border-blue) solid 1px; outline-offset: 0px; } +td svg.placeholder, td img.placeholder { + fill: var(--chyrp-winter-grey); width: 16px; height: 16px; padding: 27px; @@ -795,19 +810,19 @@ td img.placeholder { div.flash { padding: 0.5rem; margin-bottom: 1rem; - background-color: #1e57ba; - color: #ffffff; + background-color: var(--chyrp-strong-blue); + color: var(--chyrp-pure-white); border: none; border-radius: 0.25em; } div.flash.notice { - background-color: #108600; + background-color: var(--chyrp-strong-green); } div.flash.warning { - background-color: #c11600; + background-color: var(--chyrp-strong-red); } div.flash a { - color: #ffffff; + color: var(--chyrp-pure-white); font-weight: 600; } @@ -822,12 +837,12 @@ a.prev_page { display: inline-block; font: inherit; font-size: 1.25rem; - color: #1f1f23; + color: var(--chyrp-inky-black); text-align: center; margin: 0rem; padding: 0.5rem 1rem; - background-color: #f2fbff; - border: 2px solid #b8cdd9; + background-color: var(--chyrp-light-blue); + border: 2px solid var(--chyrp-border-blue); border-radius: 0.25em; cursor: pointer; text-decoration: none; @@ -850,14 +865,14 @@ input::file-selector-button:active, a.button:active, a.next_page:active, a.prev_page:active { - border-color: #1e57ba; + border-color: var(--chyrp-strong-blue); outline: none; } button.boo, a.button.boo { - color: #1f1f23; - background-color: #faebe4; - border: 2px solid #d6bdb5; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-light-red); + border: 2px solid var(--chyrp-border-red); } button.boo:hover, a.button.boo:hover, @@ -865,13 +880,13 @@ button.boo:focus, a.button.boo:focus, button.boo:active, a.button.boo:active { - border-color: #c11600; + border-color: var(--chyrp-strong-red); } button.yay, a.button.yay { - color: #1f1f23; - background-color: #ebfae4; - border: 2px solid #bdd6b5; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-light-green); + border: 2px solid var(--chyrp-border-green); } button.yay:hover, a.button.yay:hover, @@ -879,10 +894,13 @@ button.yay:focus, a.button.yay:focus, button.yay:active, a.button.yay:active { - border-color: #108600; + border-color: var(--chyrp-strong-green); } +button > svg, button > img, +a.button > svg, a.button > img { + fill: currentColor; display: block; position: relative; top: 0.5rem; @@ -963,9 +981,9 @@ span.options_extra { display: block; width: 100%; max-height: 10rem; - padding: 1rem; - background-color: #fffde6; - border: 1px solid #cfcfcf; + padding: 0.5rem; + background-color: var(--chyrp-light-yellow); + border: 1px solid var(--chyrp-irish-grey); border-top: none; overflow-y: auto; } @@ -979,8 +997,8 @@ span.options_toolbar { gap: 24px; justify-content: flex-start; width: 100%; - background-color: #fbfbfb; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-summer-grey); + border: 1px solid var(--chyrp-irish-grey); border-bottom: none; padding: 0.5rem 0.75rem calc(0.5rem + 0.1875rem) 0.75rem; border-top-left-radius: 0.25rem; @@ -994,8 +1012,8 @@ span.options_tray { display: block; width: 100%; font-size: 0.67rem; - background-color: #fbfbfb; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-summer-grey); + border: 1px solid var(--chyrp-irish-grey); border-top: none; padding: 0.25rem 0.5rem; border-bottom-left-radius: 0.25rem; @@ -1012,21 +1030,26 @@ span.options_tray:empty { margin-top: 0.25rem; padding: 0em 0.25em; border-radius: 0.25em; - border: 1px solid #cfcfcf; - background-color: #efefef; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-english-grey); } *.tag:link, *.tag:visited { text-decoration: none; } +*.tag:focus { + outline: var(--chyrp-strong-purple) solid 2px; + outline-offset: -1px; +} +*.tag:active, *.tag_added { - background-color: #f2fbff; - border-color: #1e57ba; + background-color: var(--chyrp-light-purple); + border-color: var(--chyrp-strong-purple); } table.interactive + div.controls { - background-color: #fffde6; - padding: 1rem; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-light-yellow); + padding: 1rem 0.5rem; + border: 1px solid var(--chyrp-irish-grey); border-top: none; } table.interactive.empty + div.controls { @@ -1039,8 +1062,8 @@ div.confirmation { column-gap: 2rem; justify-content: space-between; padding: 1rem; - background-color: #fbfbfb; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-summer-grey); + border: 1px solid var(--chyrp-irish-grey); border-radius: 0.25rem; } a.emblem { @@ -1054,7 +1077,7 @@ button.emblem { display: inline; font: inherit; font-size: 1em; - color: #1f1f23; + color: var(--chyrp-inky-black); margin: 0rem; padding: 0rem; background-color: transparent; @@ -1062,10 +1085,15 @@ button.emblem { border-radius: 0rem; cursor: pointer; } +svg.emblem, img.emblem, +a.emblem > svg, a.emblem > img, +label.emblem > svg, label.emblem > img, +button.emblem > svg, button.emblem > img { + fill: currentColor; float: none; display: inline; position: relative; @@ -1079,10 +1107,25 @@ label.emblem:focus, button.emblem:focus { outline: none; } -a.emblem:focus > img, -button.emblem:focus > img, -label.emblem.toolbar > input:focus + img { - outline: #ff7f00 dashed 2px; +a.emblem:hover, +a.emblem:focus, +a.emblem:active, +label.emblem:hover, +label.emblem:focus, +label.emblem:active, +button.emblem:hover, +button.emblem:focus, +button.emblem:active { + color: var(--chyrp-strong-blue); +} +a.emblem:focus-visible > svg, +a.emblem:focus-visible > img, +button.emblem:focus-visible > svg, +button.emblem:focus-visible > img, +label.emblem.toolbar > input:focus-visible + svg, +label.emblem.toolbar > input:focus-visible + img { + fill: var(--chyrp-strong-blue); + outline: var(--chyrp-strong-orange) dashed 2px; outline-offset: 1px; } input.toolbar.hidden { @@ -1100,7 +1143,7 @@ input.toolbar.hidden::file-selector-button { display: none !important; } .drag_highlight { - background-color: #fffde6; + background-color: var(--chyrp-light-yellow); } /* Group: iFrames */ @@ -1114,7 +1157,7 @@ input.toolbar.hidden::file-selector-button { left: 0px; /* Prevent other elements overlapping */ z-index: 1; - background-color: rgba(239, 239, 239, 0.75); + backdrop-filter: blur(4px) contrast(33%) brightness(150%); } .iframe_foreground { box-sizing: border-box; @@ -1129,13 +1172,9 @@ input.toolbar.hidden::file-selector-button { overflow-y: auto; overscroll-behavior: contain; border: none; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); box-shadow: 0px 4px 16px 2px rgba(79, 79, 79, 0.5); } -.iframe_foreground:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; -} .iframe_close_gadget { display: block; position: absolute; @@ -1145,7 +1184,18 @@ input.toolbar.hidden::file-selector-button { right: calc(20% - 1.5rem); cursor: pointer; } +.iframe_foreground:focus, +.iframe_close_gadget:focus { + outline: none; +} +.iframe_foreground:focus-visible, +.iframe_close_gadget:focus-visible { + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 1px; +} +.iframe_close_gadget svg, .iframe_close_gadget img { + fill: currentColor; width: 1.5rem; height: 1.5rem; } @@ -1153,11 +1203,11 @@ input.toolbar.hidden::file-selector-button { background-size: 30px 30px; background-image: linear-gradient( -45deg, - #efefef 25%, + var(--chyrp-english-grey) 25%, transparent 25%, transparent 50%, - #efefef 50%, - #efefef 75%, + var(--chyrp-english-grey) 50%, + var(--chyrp-english-grey) 75%, transparent 75%, transparent ) !important; @@ -1231,12 +1281,6 @@ input.toolbar.hidden::file-selector-button { textarea { width: 100% !important; } - input.text + a.help.emblem { - float: right; - position: relative; - top: -2.25rem; - left: -0.5rem; - } #content table tbody tr td { padding: 1rem 0.5rem; } @@ -1262,8 +1306,8 @@ input.toolbar.hidden::file-selector-button { margin: 0rem 0rem 1rem 0rem !important; } } - button:not(.toolbar):has(img), - a.button:not(.toolbar):has(img) { + button:not(.toolbar):has(img, svg), + a.button:not(.toolbar):has(img, svg) { padding-right: calc(16px + 1rem) !important; } div.more_options { @@ -1320,61 +1364,61 @@ input.toolbar.hidden::file-selector-button { @media (prefers-color-scheme: dark) { body { - color: #ffffff; - background-color: #1f1f23; + color: var(--chyrp-pure-white); + background-color: var(--chyrp-inky-black); } #header { - background-color: #656565; + background-color: var(--chyrp-winter-grey); } #header #navigation li a:link, #header #navigation li a:visited { - color: #ffffff; + color: var(--chyrp-pure-white); background-color: #2f2f2f; } #header #navigation li.selected a:link, #header #navigation li.selected a:visited, #header #navigation li a:hover, #header #navigation li a:focus { - background-color: #1f1f23; + background-color: var(--chyrp-inky-black); } #sub_nav { - border-bottom-color: #ffffff; + border-bottom-color: var(--chyrp-pure-white); } #sub_nav li a { - border-color: #ffffff; + border-color: var(--chyrp-pure-white); } #sub_nav li.selected a:link, #sub_nav li.selected a:visited, #sub_nav li a:hover, #sub_nav li a:focus { - background-color: #efefef; + background-color: var(--chyrp-english-grey); } #content { - color: #1f1f23; - background-color: #efefef; - border-color: #ffffff; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-english-grey); + border-color: var(--chyrp-pure-white); } hr { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } aside { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } pre { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } code { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } #content ul.extend > li { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } li.module div.controls, li.feather div.controls, li.theme div.controls { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } select, textarea, @@ -1390,56 +1434,53 @@ input.toolbar.hidden::file-selector-button { input[type="range"], input[type="password"], input[type="file"] { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } input:invalid { - border-color: #ff7f00; + border-color: var(--chyrp-strong-orange); } table tbody tr td { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } table tbody tr:nth-child(even) td { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } span.options_toolbar { background-color: transparent; - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } span.options_tray { background-color: transparent; - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } span.options_extra { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } *.tag { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } *.tag_added { - border-color: #1e57ba; + border-color: var(--chyrp-strong-blue); } table.interactive + div.controls { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } div.confirmation { background-color: transparent; - border-color: #afafaf; - } - .iframe_background { - background-color: rgba(159, 159, 159, 0.75); + border-color: var(--chyrp-scottish-grey); } .iframe_foreground { - background-color: #efefef; + background-color: var(--chyrp-english-grey); } .ajax_loading { background-image: linear-gradient( -45deg, - #dfdfdf 25%, + var(--chyrp-welsh-grey) 25%, transparent 25%, transparent 50%, - #dfdfdf 50%, - #dfdfdf 75%, + var(--chyrp-welsh-grey) 50%, + var(--chyrp-welsh-grey) 75%, transparent 75%, transparent ) !important; diff --git a/admin/stylesheets/monospace.css b/admin/stylesheets/monospace.css index 239a972..fa3d2a8 100644 --- a/admin/stylesheets/monospace.css +++ b/admin/stylesheets/monospace.css @@ -1,5 +1,5 @@ /* Setting: monospace_font */ textarea { - font-family: "Intel One Mono", "Cousine webfont", monospace; + font-family: "Cousine webfont", monospace; } diff --git a/feathers/audio/audio.php b/feathers/audio/audio.php index 57667b8..5353430 100644 --- a/feathers/audio/audio.php +++ b/feathers/audio/audio.php @@ -51,7 +51,8 @@ $this->respondTo("filter_post", "filter_post"); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filename']) and upload_tester($_FILES['filename'])) $filename = upload( $_FILES['filename'], @@ -95,7 +96,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { fallback($_POST['title'], ""); fallback($_POST['description'], ""); fallback($_POST['slug'], ""); @@ -132,22 +135,31 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof( $post->title, $post->title_from_excerpt() ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->description; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->description; } - public function enclose_audio($post, $feed) { + public function enclose_audio( + $post, + $feed + ) { if ($post->feather != "audio") return; @@ -173,14 +185,18 @@ ); } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "audio") return; $post->audio_player = $this->audio_player($post); } - private function audio_player($post): string { + private function audio_player( + $post + ): string { $config = Config::current(); $trigger = Trigger::current(); @@ -212,7 +228,9 @@ return $player; } - private function audio_type($filename): string { + private function audio_type( + $filename + ): string { $extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) ); @@ -237,7 +255,8 @@ } } - private function audio_extensions(): array { + private function audio_extensions( + ): array { return array("mp3", "m4a", "mp4", "oga", "ogg", "webm", "mka"); } } diff --git a/feathers/audio/locale/de_DE/LC_MESSAGES/audio.mo b/feathers/audio/locale/de_DE/LC_MESSAGES/audio.mo index 4033af0..873547c 100644 Binary files a/feathers/audio/locale/de_DE/LC_MESSAGES/audio.mo and b/feathers/audio/locale/de_DE/LC_MESSAGES/audio.mo differ diff --git a/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po b/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po index 49335d6..db82f8e 100644 --- a/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -28,11 +28,11 @@ msgstr "Bildunterschriften" msgid "Description" msgstr "Beschreibung" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "Sie haben kein Audio zum Hochladen ausgewählt." -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "Ihr Webbrowser unterstützt das Audioelement nicht." diff --git a/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot b/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot index 3c4d3c8..92ee354 100644 --- a/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot +++ b/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot @@ -16,11 +16,11 @@ msgstr "" msgid "Description" msgstr "" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "" -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "" diff --git a/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.mo b/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.mo index 4edfbc9..eb036c1 100644 Binary files a/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.mo and b/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.mo differ diff --git a/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.po b/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.po index 7899f64..01f6439 100644 --- a/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -29,11 +29,11 @@ msgstr "Légendes" msgid "Description" msgstr "Description" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "Vous n'avez sélectionné aucun fichier audio à télécharger." -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "Votre navigateur ne supporte pas cet élément audio." diff --git a/feathers/audio/locale/it_IT/LC_MESSAGES/audio.mo b/feathers/audio/locale/it_IT/LC_MESSAGES/audio.mo index 8f5f522..af592ce 100644 Binary files a/feathers/audio/locale/it_IT/LC_MESSAGES/audio.mo and b/feathers/audio/locale/it_IT/LC_MESSAGES/audio.mo differ diff --git a/feathers/audio/locale/it_IT/LC_MESSAGES/audio.po b/feathers/audio/locale/it_IT/LC_MESSAGES/audio.po index fe4d5b2..979c49e 100644 --- a/feathers/audio/locale/it_IT/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/it_IT/LC_MESSAGES/audio.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -29,11 +29,11 @@ msgstr "Didascalie" msgid "Description" msgstr "Descrizione" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "Non è stato selezionato alcun audio da caricare." -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "Il browser web non supporta l'elemento audio." diff --git a/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.mo b/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.mo index 5e01ee9..0452613 100644 Binary files a/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.mo and b/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.mo differ diff --git a/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po b/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po index bb904c6..cf1c482 100644 --- a/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -28,11 +28,11 @@ msgstr "Onderschriften" msgid "Description" msgstr "Beschrijving" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "Je hebt geen audio geselecteerd om te uploaden." -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "Je webbrowser ondersteunt het audio element niet." diff --git a/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.mo b/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.mo index 7378755..4198507 100644 Binary files a/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.mo and b/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.mo differ diff --git a/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po b/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po index 3755c43..00a99e4 100644 --- a/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -29,11 +29,11 @@ msgstr "字幕" msgid "Description" msgstr "描述" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "你灭有选择任何上传的音频文件。" -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "你的浏览器不支持 audio 元素。" diff --git a/feathers/link/link.php b/feathers/link/link.php index 22154c9..62752cf 100644 --- a/feathers/link/link.php +++ b/feathers/link/link.php @@ -36,7 +36,8 @@ $this->respondTo("feed_item", "link_related"); } - public function submit(): Post { + public function submit( + ): Post { if (empty($_POST['source'])) error( __("Error"), @@ -75,7 +76,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { if (empty($_POST['source'])) error( __("Error"), @@ -112,7 +115,9 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof( $post->name, $post->title_from_excerpt(), @@ -120,11 +125,15 @@ ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->description; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { $content = ''. oneof($post->name, $post->source).''; @@ -137,7 +146,10 @@ return '

    '.$content.'
    '; } - public function link_related($post, $feed): void { + public function link_related( + $post, + $feed + ): void { if ($post->feather != "link") return; diff --git a/feathers/link/locale/de_DE/LC_MESSAGES/link.mo b/feathers/link/locale/de_DE/LC_MESSAGES/link.mo index 7d78011..ce699b9 100644 Binary files a/feathers/link/locale/de_DE/LC_MESSAGES/link.mo and b/feathers/link/locale/de_DE/LC_MESSAGES/link.mo differ diff --git a/feathers/link/locale/de_DE/LC_MESSAGES/link.po b/feathers/link/locale/de_DE/LC_MESSAGES/link.po index e4c50ed..5918fab 100644 --- a/feathers/link/locale/de_DE/LC_MESSAGES/link.po +++ b/feathers/link/locale/de_DE/LC_MESSAGES/link.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -32,10 +32,10 @@ msgstr "URL" msgid "Description" msgstr "Beschreibung" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "URL darf nicht leer sein." -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "Ungültige URL." diff --git a/feathers/link/locale/en_US/LC_MESSAGES/link.pot b/feathers/link/locale/en_US/LC_MESSAGES/link.pot index 0cd5f24..ebe720e 100644 --- a/feathers/link/locale/en_US/LC_MESSAGES/link.pot +++ b/feathers/link/locale/en_US/LC_MESSAGES/link.pot @@ -20,13 +20,13 @@ msgstr "" msgid "Description" msgstr "" -#: feathers/link/link.php:43 -#: feathers/link/link.php:82 +#: feathers/link/link.php:44 +#: feathers/link/link.php:85 msgid "URL can't be empty." msgstr "" -#: feathers/link/link.php:50 -#: feathers/link/link.php:89 +#: feathers/link/link.php:51 +#: feathers/link/link.php:92 msgid "Invalid URL." msgstr "" diff --git a/feathers/link/locale/fr_FR/LC_MESSAGES/link.mo b/feathers/link/locale/fr_FR/LC_MESSAGES/link.mo index 838399a..ceb622f 100644 Binary files a/feathers/link/locale/fr_FR/LC_MESSAGES/link.mo and b/feathers/link/locale/fr_FR/LC_MESSAGES/link.mo differ diff --git a/feathers/link/locale/fr_FR/LC_MESSAGES/link.po b/feathers/link/locale/fr_FR/LC_MESSAGES/link.po index 7bef903..8146abe 100644 --- a/feathers/link/locale/fr_FR/LC_MESSAGES/link.po +++ b/feathers/link/locale/fr_FR/LC_MESSAGES/link.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -33,10 +33,10 @@ msgstr "URL" msgid "Description" msgstr "Description" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "L'URL ne peut pas être vide." -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "URL invalide." diff --git a/feathers/link/locale/it_IT/LC_MESSAGES/link.mo b/feathers/link/locale/it_IT/LC_MESSAGES/link.mo index 7b1e49f..efc6521 100644 Binary files a/feathers/link/locale/it_IT/LC_MESSAGES/link.mo and b/feathers/link/locale/it_IT/LC_MESSAGES/link.mo differ diff --git a/feathers/link/locale/it_IT/LC_MESSAGES/link.po b/feathers/link/locale/it_IT/LC_MESSAGES/link.po index e458155..2c37750 100644 --- a/feathers/link/locale/it_IT/LC_MESSAGES/link.po +++ b/feathers/link/locale/it_IT/LC_MESSAGES/link.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -33,10 +33,10 @@ msgstr "URL" msgid "Description" msgstr "Descrizione" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "L'URL non può essere vuoto." -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "URL non valido." diff --git a/feathers/link/locale/nl_NL/LC_MESSAGES/link.mo b/feathers/link/locale/nl_NL/LC_MESSAGES/link.mo index d0e3082..ab3848f 100644 Binary files a/feathers/link/locale/nl_NL/LC_MESSAGES/link.mo and b/feathers/link/locale/nl_NL/LC_MESSAGES/link.mo differ diff --git a/feathers/link/locale/nl_NL/LC_MESSAGES/link.po b/feathers/link/locale/nl_NL/LC_MESSAGES/link.po index a6a1ddd..b60f2e5 100644 --- a/feathers/link/locale/nl_NL/LC_MESSAGES/link.po +++ b/feathers/link/locale/nl_NL/LC_MESSAGES/link.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -32,10 +32,10 @@ msgstr "URL" msgid "Description" msgstr "Beschrijving" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "URL kan niet leeg zijn." -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "Ongeldige URL." diff --git a/feathers/link/locale/zh_CN/LC_MESSAGES/link.mo b/feathers/link/locale/zh_CN/LC_MESSAGES/link.mo index 3a4c2fa..3738e95 100644 Binary files a/feathers/link/locale/zh_CN/LC_MESSAGES/link.mo and b/feathers/link/locale/zh_CN/LC_MESSAGES/link.mo differ diff --git a/feathers/link/locale/zh_CN/LC_MESSAGES/link.po b/feathers/link/locale/zh_CN/LC_MESSAGES/link.po index c491567..dfa00a7 100644 --- a/feathers/link/locale/zh_CN/LC_MESSAGES/link.po +++ b/feathers/link/locale/zh_CN/LC_MESSAGES/link.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -33,10 +33,10 @@ msgstr "URL" msgid "Description" msgstr "描述" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "URL不能为空。" -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "无效的URL。" diff --git a/feathers/photo/locale/de_DE/LC_MESSAGES/photo.mo b/feathers/photo/locale/de_DE/LC_MESSAGES/photo.mo index a4dfd78..0ee220f 100644 Binary files a/feathers/photo/locale/de_DE/LC_MESSAGES/photo.mo and b/feathers/photo/locale/de_DE/LC_MESSAGES/photo.mo differ diff --git a/feathers/photo/locale/de_DE/LC_MESSAGES/photo.po b/feathers/photo/locale/de_DE/LC_MESSAGES/photo.po index dde11ab..37fc395 100644 --- a/feathers/photo/locale/de_DE/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/de_DE/LC_MESSAGES/photo.po @@ -9,11 +9,11 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "Alternativer Text" @@ -55,10 +55,10 @@ msgstr "Titel" msgid "Caption" msgstr "Bildunterschrift" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "Sie haben kein Foto zum Hochladen ausgewählt." -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "Quelle" diff --git a/feathers/photo/locale/en_US/LC_MESSAGES/photo.pot b/feathers/photo/locale/en_US/LC_MESSAGES/photo.pot index 4747cd4..6a948cd 100644 --- a/feathers/photo/locale/en_US/LC_MESSAGES/photo.pot +++ b/feathers/photo/locale/en_US/LC_MESSAGES/photo.pot @@ -2,7 +2,7 @@ #: feathers/photo/admin/help/photo_alt_text.twig:3 #: feathers/photo/admin/help/photo_alt_text.twig:6 -#: feathers/photo/photo.php:156 +#: feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "" @@ -36,11 +36,11 @@ msgstr "" msgid "Caption" msgstr "" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "" -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "" diff --git a/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.mo b/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.mo index f8bfc56..d7bf155 100644 Binary files a/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.mo and b/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.mo differ diff --git a/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po b/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po index 9bd649b..b07af41 100644 --- a/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "Texte alternatif" @@ -55,10 +55,10 @@ msgstr "Titre" msgid "Caption" msgstr "Légende" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "Vous n'avez pas sélectionné de photo à télécharger." -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "Source" diff --git a/feathers/photo/locale/it_IT/LC_MESSAGES/photo.mo b/feathers/photo/locale/it_IT/LC_MESSAGES/photo.mo index 786d956..3cac54e 100644 Binary files a/feathers/photo/locale/it_IT/LC_MESSAGES/photo.mo and b/feathers/photo/locale/it_IT/LC_MESSAGES/photo.mo differ diff --git a/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po b/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po index 46d578e..f32c8a9 100644 --- a/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "Testo Alternative" @@ -55,10 +55,10 @@ msgstr "Titolo" msgid "Caption" msgstr "Didascalia" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "Non é stata selezionata alcuna foto da caricare." -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "Sorgente" diff --git a/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.mo b/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.mo index 4991bbd..21eac73 100644 Binary files a/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.mo and b/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.mo differ diff --git a/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po b/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po index f180210..4308fa4 100644 --- a/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po @@ -9,11 +9,11 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "Alternatieve tekst" @@ -54,10 +54,10 @@ msgstr "Titel" msgid "Caption" msgstr "Toelichting" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "Je hebt geen afbeelding geslecteerd om te uploaden." -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "Bron" diff --git a/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.mo b/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.mo index d458ae1..c4ea706 100644 Binary files a/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.mo and b/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.mo differ diff --git a/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po b/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po index a9afc46..3c3814e 100644 --- a/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "替代文本" @@ -53,10 +53,10 @@ msgstr "标题" msgid "Caption" msgstr "标题" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "您没有选择上传的照片。" -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "来源" diff --git a/feathers/photo/photo.php b/feathers/photo/photo.php index 060e431..b4fab58 100644 --- a/feathers/photo/photo.php +++ b/feathers/photo/photo.php @@ -41,7 +41,8 @@ $this->respondTo("post_options", "add_option"); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filename']) and upload_tester($_FILES['filename'])) $filename = upload( $_FILES['filename'], @@ -115,14 +116,18 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof( $post->title, $post->title_from_excerpt() ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->caption; } @@ -140,14 +145,20 @@ return '
    '.$content.'
    '; } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "photo") return; $post->image = $post->filename; } - public function add_option($options, $post = null, $feather = null): array { + public function add_option( + $options, + $post = null, + $feather = null + ): array { if ($feather != "photo") return $options; @@ -170,7 +181,8 @@ return $options; } - private function image_extensions(): array { + private function image_extensions( + ): array { return array("jpg", "jpeg", "png", "gif", "webp", "avif"); } } diff --git a/feathers/quote/locale/de_DE/LC_MESSAGES/quote.mo b/feathers/quote/locale/de_DE/LC_MESSAGES/quote.mo index 0da4a78..04842c9 100644 Binary files a/feathers/quote/locale/de_DE/LC_MESSAGES/quote.mo and b/feathers/quote/locale/de_DE/LC_MESSAGES/quote.mo differ diff --git a/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po b/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po index ac3949b..58f7458 100644 --- a/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -24,6 +24,6 @@ msgstr "Stelle Zitate ein und gebe Quellen an." msgid "Source" msgstr "Quelle" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "Das Zitat kann nicht leer sein." diff --git a/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot b/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot index eb6c6b4..0a838cc 100644 --- a/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot +++ b/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot @@ -13,8 +13,8 @@ msgstr "" msgid "Source" msgstr "" -#: feathers/quote/quote.php:35 -#: feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 +#: feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "" diff --git a/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.mo b/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.mo index f47c6f2..61fe8ba 100644 Binary files a/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.mo and b/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.mo differ diff --git a/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po b/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po index 4163b2f..cdb5568 100644 --- a/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -25,6 +25,6 @@ msgstr "Poster une citation et donner ses sources." msgid "Source" msgstr "Source" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "La citation ne peut pas être vide." diff --git a/feathers/quote/locale/it_IT/LC_MESSAGES/quote.mo b/feathers/quote/locale/it_IT/LC_MESSAGES/quote.mo index e890b77..5baaef8 100644 Binary files a/feathers/quote/locale/it_IT/LC_MESSAGES/quote.mo and b/feathers/quote/locale/it_IT/LC_MESSAGES/quote.mo differ diff --git a/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po b/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po index 509300f..cecd7d8 100644 --- a/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -25,6 +25,6 @@ msgstr "Pubblicare una citazione e citare fonti." msgid "Source" msgstr "Sorgente" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "La citazione non può essere vuota." diff --git a/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.mo b/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.mo index 7081651..ffeccc2 100644 Binary files a/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.mo and b/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.mo differ diff --git a/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po b/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po index ea428f2..6eba482 100644 --- a/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -24,6 +24,6 @@ msgstr "Blogpost quotes en citeer-bronnen." msgid "Source" msgstr "Bron" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "Quote kan niet leeg zijn." diff --git a/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.mo b/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.mo index 06c1e2a..a068f23 100644 Binary files a/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.mo and b/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.mo differ diff --git a/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.po b/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.po index 247dab5..1320418 100644 --- a/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -25,6 +25,6 @@ msgstr "发表引文和引用来源。" msgid "Source" msgstr "来源" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "Quote 不能为空。" diff --git a/feathers/quote/quote.php b/feathers/quote/quote.php index 1731cf6..f9a610b 100644 --- a/feathers/quote/quote.php +++ b/feathers/quote/quote.php @@ -28,7 +28,8 @@ ); } - public function submit(): Post { + public function submit( + ): Post { if (empty($_POST['quote'])) error( __("Error"), @@ -57,7 +58,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { if (empty($_POST['quote'])) error( __("Error"), @@ -84,15 +87,21 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return $post->title_from_excerpt(); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->quote; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { $content = '
    '. $post->quote. '
    '; diff --git a/feathers/text/locale/de_DE/LC_MESSAGES/text.mo b/feathers/text/locale/de_DE/LC_MESSAGES/text.mo index 11e034a..faabd2f 100644 Binary files a/feathers/text/locale/de_DE/LC_MESSAGES/text.mo and b/feathers/text/locale/de_DE/LC_MESSAGES/text.mo differ diff --git a/feathers/text/locale/de_DE/LC_MESSAGES/text.po b/feathers/text/locale/de_DE/LC_MESSAGES/text.po index a887657..e66c26f 100644 --- a/feathers/text/locale/de_DE/LC_MESSAGES/text.po +++ b/feathers/text/locale/de_DE/LC_MESSAGES/text.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -28,6 +28,6 @@ msgstr "Titel" msgid "Body" msgstr "Body" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Body darf nicht leer sein." diff --git a/feathers/text/locale/en_US/LC_MESSAGES/text.pot b/feathers/text/locale/en_US/LC_MESSAGES/text.pot index 44080be..4662fa1 100644 --- a/feathers/text/locale/en_US/LC_MESSAGES/text.pot +++ b/feathers/text/locale/en_US/LC_MESSAGES/text.pot @@ -16,8 +16,8 @@ msgstr "" msgid "Body" msgstr "" -#: feathers/text/text.php:34 -#: feathers/text/text.php:63 +#: feathers/text/text.php:35 +#: feathers/text/text.php:66 msgid "Body can't be blank." msgstr "" diff --git a/feathers/text/locale/fr_FR/LC_MESSAGES/text.mo b/feathers/text/locale/fr_FR/LC_MESSAGES/text.mo index 389061c..fe56bf4 100644 Binary files a/feathers/text/locale/fr_FR/LC_MESSAGES/text.mo and b/feathers/text/locale/fr_FR/LC_MESSAGES/text.mo differ diff --git a/feathers/text/locale/fr_FR/LC_MESSAGES/text.po b/feathers/text/locale/fr_FR/LC_MESSAGES/text.po index 213cf39..a20a2f5 100644 --- a/feathers/text/locale/fr_FR/LC_MESSAGES/text.po +++ b/feathers/text/locale/fr_FR/LC_MESSAGES/text.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -29,6 +29,6 @@ msgstr "Titre" msgid "Body" msgstr "Corps" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Le corps ne peut pas être vide." diff --git a/feathers/text/locale/it_IT/LC_MESSAGES/text.mo b/feathers/text/locale/it_IT/LC_MESSAGES/text.mo index 196ca13..4ef2ac4 100644 Binary files a/feathers/text/locale/it_IT/LC_MESSAGES/text.mo and b/feathers/text/locale/it_IT/LC_MESSAGES/text.mo differ diff --git a/feathers/text/locale/it_IT/LC_MESSAGES/text.po b/feathers/text/locale/it_IT/LC_MESSAGES/text.po index 9da0f7c..6686097 100644 --- a/feathers/text/locale/it_IT/LC_MESSAGES/text.po +++ b/feathers/text/locale/it_IT/LC_MESSAGES/text.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -29,6 +29,6 @@ msgstr "Titolo" msgid "Body" msgstr "Contenuto di testo" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Il contenuto di testo non può essere vuoto." diff --git a/feathers/text/locale/nl_NL/LC_MESSAGES/text.mo b/feathers/text/locale/nl_NL/LC_MESSAGES/text.mo index f118968..07a2461 100644 Binary files a/feathers/text/locale/nl_NL/LC_MESSAGES/text.mo and b/feathers/text/locale/nl_NL/LC_MESSAGES/text.mo differ diff --git a/feathers/text/locale/nl_NL/LC_MESSAGES/text.po b/feathers/text/locale/nl_NL/LC_MESSAGES/text.po index 66bd7e2..888c9a6 100644 --- a/feathers/text/locale/nl_NL/LC_MESSAGES/text.po +++ b/feathers/text/locale/nl_NL/LC_MESSAGES/text.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -28,6 +28,6 @@ msgstr "Titel" msgid "Body" msgstr "Body" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Body kan niet leeg zijn." diff --git a/feathers/text/locale/zh_CN/LC_MESSAGES/text.mo b/feathers/text/locale/zh_CN/LC_MESSAGES/text.mo index 24bae09..9780ddc 100644 Binary files a/feathers/text/locale/zh_CN/LC_MESSAGES/text.mo and b/feathers/text/locale/zh_CN/LC_MESSAGES/text.mo differ diff --git a/feathers/text/locale/zh_CN/LC_MESSAGES/text.po b/feathers/text/locale/zh_CN/LC_MESSAGES/text.po index 9dd682d..c3a04b6 100644 --- a/feathers/text/locale/zh_CN/LC_MESSAGES/text.po +++ b/feathers/text/locale/zh_CN/LC_MESSAGES/text.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -29,6 +29,6 @@ msgstr "标题" msgid "Body" msgstr "正文" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "正文不能为空。" diff --git a/feathers/text/text.php b/feathers/text/text.php index 9ae5959..0323673 100644 --- a/feathers/text/text.php +++ b/feathers/text/text.php @@ -27,7 +27,8 @@ ); } - public function submit(): Post { + public function submit( + ): Post { if (empty($_POST['body'])) error( __("Error"), @@ -56,7 +57,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { if (empty($_POST['body'])) error( __("Error"), @@ -83,18 +86,24 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof( $post->title, $post->title_from_excerpt() ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->body; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->body; } } diff --git a/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.mo index 5880464..52960d4 100644 Binary files a/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.mo and b/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.mo differ diff --git a/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po b/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po index 37eeae4..5577c74 100644 --- a/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po +++ b/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -41,10 +41,10 @@ msgstr "Dateien" msgid "Caption" msgstr "Unterschrift" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "Sie haben keine Dateien zum hochladen selektiert." -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "Quelle" diff --git a/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot b/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot index 0919cd0..33d6aca 100644 --- a/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot +++ b/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot @@ -29,11 +29,11 @@ msgstr "" msgid "Caption" msgstr "" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "" -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "" diff --git a/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.mo index 58715e7..d914b9d 100644 Binary files a/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.mo and b/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.mo differ diff --git a/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.po b/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.po index 8a492d1..a80d31c 100644 --- a/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.po +++ b/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -42,10 +42,10 @@ msgstr "Fichiers" msgid "Caption" msgstr "Légende" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "Vous n'avez pas sélectionné de fichier à télécharger." -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "Source" diff --git a/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.mo index 8db354d..1445298 100644 Binary files a/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.mo and b/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.mo differ diff --git a/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.po b/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.po index 9d7890e..bf0f826 100644 --- a/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.po +++ b/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -42,10 +42,10 @@ msgstr "File" msgid "Caption" msgstr "Didascalia" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "Non è stato selezionato alcun file da caricare." -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "Sorgente" diff --git a/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.mo index 44b3496..86282a6 100644 Binary files a/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.mo and b/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.mo differ diff --git a/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po b/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po index 8a2b8da..a632b03 100644 --- a/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po +++ b/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -41,10 +41,10 @@ msgstr "Bestanden" msgid "Caption" msgstr "Toelichting" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "Je hebt geen bestanden geselecteerd om te uploaden." -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "Bron" diff --git a/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.mo index b10131c..23b1e60 100644 Binary files a/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.mo and b/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.mo differ diff --git a/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.po b/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.po index 47f7248..59b6b98 100644 --- a/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.po +++ b/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -42,10 +42,10 @@ msgstr "文件" msgid "Caption" msgstr "说明" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "您没有选择任何文件上传。" -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "来源" diff --git a/feathers/uploader/uploader.php b/feathers/uploader/uploader.php index 2a8a3cd..a8c8e07 100644 --- a/feathers/uploader/uploader.php +++ b/feathers/uploader/uploader.php @@ -43,15 +43,20 @@ $this->respondTo("post_options", "add_option"); } - private function filenames_serialize($files) { + private function filenames_serialize( + $files + ) { return json_set($files, JSON_UNESCAPED_SLASHES); } - private function filenames_unserialize($filenames) { + private function filenames_unserialize( + $filenames + ) { return json_get($filenames, true); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filenames']) and upload_tester($_FILES['filenames'])) { $filenames = array(); @@ -105,7 +110,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { fallback($_POST['title'], ""); fallback($_POST['caption'], ""); fallback($_POST['slug'], ""); @@ -151,19 +158,28 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof($post->title, $post->title_from_excerpt()); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->caption; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->caption; } - public function enclose_uploaded($post, $feed): void { + public function enclose_uploaded( + $post, + $feed + ): void { $config = Config::current(); if ($post->feather != "uploader") @@ -182,14 +198,18 @@ } } - public function post($post): void { + public function post( + $post + ): void { if ($post->feather != "uploader") return; $post->filenames = $this->filenames_unserialize($post->filenames); } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "uploader") return; @@ -207,7 +227,11 @@ } } - public function add_option($options, $post = null, $feather = null): array { + public function add_option( + $options, + $post = null, + $feather = null + ): array { if ($feather != "uploader") return $options; @@ -222,7 +246,9 @@ return $options; } - private function list_files($filenames): array { + private function list_files( + $filenames + ): array { $list = array(); foreach ($filenames as $filename) { diff --git a/feathers/video/locale/de_DE/LC_MESSAGES/video.mo b/feathers/video/locale/de_DE/LC_MESSAGES/video.mo index d704b43..e7d0b1f 100644 Binary files a/feathers/video/locale/de_DE/LC_MESSAGES/video.mo and b/feathers/video/locale/de_DE/LC_MESSAGES/video.mo differ diff --git a/feathers/video/locale/de_DE/LC_MESSAGES/video.po b/feathers/video/locale/de_DE/LC_MESSAGES/video.po index 7084e4a..af4aa1b 100644 --- a/feathers/video/locale/de_DE/LC_MESSAGES/video.po +++ b/feathers/video/locale/de_DE/LC_MESSAGES/video.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -40,10 +40,10 @@ msgstr "Plakat-Bild" msgid "Description" msgstr "Beschreibung" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "Sie haben keine Dateien zum hochladen selektiert." -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "Ihr Webbrowser unterstützt das video-Element nicht." diff --git a/feathers/video/locale/en_US/LC_MESSAGES/video.pot b/feathers/video/locale/en_US/LC_MESSAGES/video.pot index e582de5..92638e5 100644 --- a/feathers/video/locale/en_US/LC_MESSAGES/video.pot +++ b/feathers/video/locale/en_US/LC_MESSAGES/video.pot @@ -28,11 +28,11 @@ msgstr "" msgid "Description" msgstr "" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "" -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "" diff --git a/feathers/video/locale/fr_FR/LC_MESSAGES/video.mo b/feathers/video/locale/fr_FR/LC_MESSAGES/video.mo index 8443575..781a093 100644 Binary files a/feathers/video/locale/fr_FR/LC_MESSAGES/video.mo and b/feathers/video/locale/fr_FR/LC_MESSAGES/video.mo differ diff --git a/feathers/video/locale/fr_FR/LC_MESSAGES/video.po b/feathers/video/locale/fr_FR/LC_MESSAGES/video.po index 9cc7605..4e70515 100644 --- a/feathers/video/locale/fr_FR/LC_MESSAGES/video.po +++ b/feathers/video/locale/fr_FR/LC_MESSAGES/video.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -41,10 +41,10 @@ msgstr "Image de remplacement" msgid "Description" msgstr "Description" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "Vous n'avez pas sélectionné de vidéo à télécharger." -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "Votre navigateur ne supporte pas cet élément vidéo." diff --git a/feathers/video/locale/it_IT/LC_MESSAGES/video.mo b/feathers/video/locale/it_IT/LC_MESSAGES/video.mo index 20edc7b..e5c2a24 100644 Binary files a/feathers/video/locale/it_IT/LC_MESSAGES/video.mo and b/feathers/video/locale/it_IT/LC_MESSAGES/video.mo differ diff --git a/feathers/video/locale/it_IT/LC_MESSAGES/video.po b/feathers/video/locale/it_IT/LC_MESSAGES/video.po index 9948189..3f60f96 100644 --- a/feathers/video/locale/it_IT/LC_MESSAGES/video.po +++ b/feathers/video/locale/it_IT/LC_MESSAGES/video.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -41,10 +41,10 @@ msgstr "Immagine Poster" msgid "Description" msgstr "Descrizione" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "Non è stato selezionato alcun video da caricare." -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "Il browser web non supporta l'elemento video." diff --git a/feathers/video/locale/nl_NL/LC_MESSAGES/video.mo b/feathers/video/locale/nl_NL/LC_MESSAGES/video.mo index 2f57cea..558b529 100644 Binary files a/feathers/video/locale/nl_NL/LC_MESSAGES/video.mo and b/feathers/video/locale/nl_NL/LC_MESSAGES/video.mo differ diff --git a/feathers/video/locale/nl_NL/LC_MESSAGES/video.po b/feathers/video/locale/nl_NL/LC_MESSAGES/video.po index 83e779c..0ceb5f7 100644 --- a/feathers/video/locale/nl_NL/LC_MESSAGES/video.po +++ b/feathers/video/locale/nl_NL/LC_MESSAGES/video.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -40,10 +40,10 @@ msgstr "Poster afbeelding" msgid "Description" msgstr "Beschrijving" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "Je hebt geen video geselecteerd om te uploaden." -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "Je webbrowser ondersteunt het video element niet." diff --git a/feathers/video/locale/zh_CN/LC_MESSAGES/video.mo b/feathers/video/locale/zh_CN/LC_MESSAGES/video.mo index f7d9fb0..f13749f 100644 Binary files a/feathers/video/locale/zh_CN/LC_MESSAGES/video.mo and b/feathers/video/locale/zh_CN/LC_MESSAGES/video.mo differ diff --git a/feathers/video/locale/zh_CN/LC_MESSAGES/video.po b/feathers/video/locale/zh_CN/LC_MESSAGES/video.po index f2a7257..06def4d 100644 --- a/feathers/video/locale/zh_CN/LC_MESSAGES/video.po +++ b/feathers/video/locale/zh_CN/LC_MESSAGES/video.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -41,10 +41,10 @@ msgstr "海报图片" msgid "Description" msgstr "描述" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "您没有选择上传的视频。" -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "您的浏览器不支持 video 元素。" diff --git a/feathers/video/video.php b/feathers/video/video.php index 39dbead..5d497b8 100644 --- a/feathers/video/video.php +++ b/feathers/video/video.php @@ -61,7 +61,8 @@ $this->respondTo("filter_post", "filter_post"); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filename']) and upload_tester($_FILES['filename'])) $filename = upload( $_FILES['filename'], @@ -112,7 +113,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { fallback($_POST['title'], ""); fallback($_POST['description'], ""); fallback($_POST['slug'], ""); @@ -157,19 +160,28 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof($post->title, $post->title_from_excerpt()); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->description; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->description; } - public function enclose_video($post, $feed): void { + public function enclose_video( + $post, + $feed + ): void { if ($post->feather != "video") return; @@ -195,7 +207,9 @@ ); } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "video") return; @@ -207,7 +221,9 @@ $post->image = $post->poster_image; } - private function video_player($post): string { + private function video_player( + $post + ): string { $config = Config::current(); $trigger = Trigger::current(); @@ -247,7 +263,9 @@ return $player; } - private function video_type($filename): string { + private function video_type( + $filename + ): string { $extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) ); @@ -270,11 +288,13 @@ } } - private function video_extensions(): array { + private function video_extensions( + ): array { return array("mp4", "ogv", "webm", "3gp", "mkv", "mov"); } - private function image_extensions(): array { + private function image_extensions( + ): array { return array("jpg", "jpeg", "png", "gif", "webp", "avif"); } } diff --git a/fonts/Cousine-Bold.woff b/fonts/Cousine-Bold.woff index 0f49fd4..0c4fc8f 100644 Binary files a/fonts/Cousine-Bold.woff and b/fonts/Cousine-Bold.woff differ diff --git a/fonts/Cousine-BoldItalic.woff b/fonts/Cousine-BoldItalic.woff index cae3306..a34bb06 100644 Binary files a/fonts/Cousine-BoldItalic.woff and b/fonts/Cousine-BoldItalic.woff differ diff --git a/fonts/Cousine-Italic.woff b/fonts/Cousine-Italic.woff index 678ed93..d9d6c35 100644 Binary files a/fonts/Cousine-Italic.woff and b/fonts/Cousine-Italic.woff differ diff --git a/fonts/Cousine-Regular.woff b/fonts/Cousine-Regular.woff index f60a275..065101f 100644 Binary files a/fonts/Cousine-Regular.woff and b/fonts/Cousine-Regular.woff differ diff --git a/fonts/OpenSans-Bold.woff b/fonts/OpenSans-Bold.woff index ff5b7de..ac42360 100644 Binary files a/fonts/OpenSans-Bold.woff and b/fonts/OpenSans-Bold.woff differ diff --git a/fonts/OpenSans-BoldItalic.woff b/fonts/OpenSans-BoldItalic.woff index b62b339..f1ca291 100644 Binary files a/fonts/OpenSans-BoldItalic.woff and b/fonts/OpenSans-BoldItalic.woff differ diff --git a/fonts/OpenSans-Italic.woff b/fonts/OpenSans-Italic.woff index 38e020c..c42fa05 100644 Binary files a/fonts/OpenSans-Italic.woff and b/fonts/OpenSans-Italic.woff differ diff --git a/fonts/OpenSans-Regular.woff b/fonts/OpenSans-Regular.woff index 2511689..e62e31f 100644 Binary files a/fonts/OpenSans-Regular.woff and b/fonts/OpenSans-Regular.woff differ diff --git a/fonts/OpenSans-SemiBold.woff b/fonts/OpenSans-SemiBold.woff index b6142d3..64fff91 100644 Binary files a/fonts/OpenSans-SemiBold.woff and b/fonts/OpenSans-SemiBold.woff differ diff --git a/fonts/OpenSans-SemiBoldItalic.woff b/fonts/OpenSans-SemiBoldItalic.woff index c362a1c..2fe628c 100644 Binary files a/fonts/OpenSans-SemiBoldItalic.woff and b/fonts/OpenSans-SemiBoldItalic.woff differ diff --git a/includes/cacert.pem b/includes/cacert.pem index 86d6cd8..e8cc6c1 100644 --- a/includes/cacert.pem +++ b/includes/cacert.pem @@ -1,7 +1,9 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Tue Jul 2 03:12:04 2024 GMT +## Certificate data from Mozilla as of: Tue Dec 31 04:12:05 2024 GMT +## +## Find updated versions here: https://curl.se/docs/caextract.html ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates @@ -14,7 +16,7 @@ ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.29. -## SHA256: 456ff095dde6dd73354c5c28c73d9c06f53b61a803963414cb91a1d92945cdd3 +## SHA256: c99d6d3f8d3d4e47719ba2b648992f5b58b150128d3aca3c05c566d8dc98e116 ## @@ -582,27 +584,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- -SecureSign RootCA11 -=================== ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi -SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS -b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw -KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 -cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL -TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO -wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq -g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP -O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA -bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX -t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh -OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r -bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ -Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 -y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 -lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - Microsec e-Szigno Root CA 2009 ============================== -----BEGIN CERTIFICATE----- @@ -2317,40 +2298,6 @@ hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB dBb9HxEGmpv0 -----END CERTIFICATE----- -Entrust Root Certification Authority - G4 -========================================= ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu -bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 -dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT -AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D -umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV -3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds -8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ -e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 -ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X -xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV -7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 -dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW -Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n -MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q -jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht -7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK -YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt -jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ -m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW -RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA -JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G -+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT -kcpG2om3PVODLAgfi49T3f+sHw== ------END CERTIFICATE----- - Microsoft ECC Root Certificate Authority 2017 ============================================= -----BEGIN CERTIFICATE----- @@ -2600,6 +2547,36 @@ vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ CAezNIm8BZ/3Hobui3A= -----END CERTIFICATE----- +GLOBALTRUST 2020 +================ +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx +IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT +VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh +BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy +MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi +D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO +VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM +CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm +fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA +A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR +JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG +DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU +clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ +mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud +IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw +4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 +iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS +8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 +HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS +vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 +oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF +YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl +gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + ANF Secure Server Root CA ========================= -----BEGIN CERTIFICATE----- @@ -3138,36 +3115,6 @@ AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8 rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR -----END CERTIFICATE----- -Security Communication RootCA3 -============================== ------BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw -IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD -b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw -CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE -AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r -hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE -NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2 -/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm -npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY -XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK -p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC -3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf -GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw -CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB -/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS -YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu -Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O -H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx -YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ -XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml -+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn -KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9 -dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm -6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg== ------END CERTIFICATE----- - Security Communication ECC RootCA1 ================================== -----BEGIN CERTIFICATE----- @@ -3566,3 +3513,99 @@ Y1w8ndYn81LsF7Kpryz3dvgwHQYDVR0OBBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB cFBTApFwhVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dGXSaQ pYXFuXqUPoeovQA= -----END CERTIFICATE----- + +TWCA CYBER Root CA +================== +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQMQswCQYDVQQG +EwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NB +IENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQG +EwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NB +IENZQkVSIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1s +Ts6P40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxFavcokPFh +V8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/34bKS1PE2Y2yHer43CdT +o0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684iJkXXYJndzk834H/nY62wuFm40AZoNWDT +Nq5xQwTxaWV4fPMf88oon1oglWa0zbfuj3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK +/c/WMw+f+5eesRycnupfXtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkH +IuNZW0CP2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDAS9TM +fAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDAoS/xUgXJP+92ZuJF +2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzCkHDXShi8fgGwsOsVHkQGzaRP6AzR +wyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83 +QOGt4A1WNzAdBgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB +AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0ttGlTITVX1olN +c79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn68xDiBaiA9a5F/gZbG0jAn/x +X9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNnTKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDR +IG4kqIQnoVesqlVYL9zZyvpoBJ7tRCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq +/p1hvIbZv97Tujqxf36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0R +FxbIQh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz8ppy6rBe +Pm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4NxKfKjLji7gh7MMrZQzv +It6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzXxeSDwWrruoBa3lwtcHb4yOWHh8qgnaHl +IhInD0Q9HWzq1MKLL295q39QpsQZp6F6t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X +-----END CERTIFICATE----- + +SecureSign Root CA12 +==================== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT +ZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgwNTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJ +BgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU +U2VjdXJlU2lnbiBSb290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3 +emhFKxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mtp7JIKwcc +J/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zdJ1M3s6oYwlkm7Fsf0uZl +fO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gurFzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBF +EaCeVESE99g2zvVQR9wsMJvuwPWW0v4JhscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1Uef +NzFJM3IFTQy2VYzxV4+Kh9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsFAAOC +AQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6LdmmQOmFxv3Y67ilQi +LUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJmBClnW8Zt7vPemVV2zfrPIpyMpce +mik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPS +vWKErI4cqc1avTc7bgoitPQV55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhga +aaI5gdka9at/yOPiZwud9AzqVN/Ssq+xIvEg37xEHA== +-----END CERTIFICATE----- + +SecureSign Root CA14 +==================== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEMBQAwUTELMAkG +A1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT +ZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgwNzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJ +BgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU +U2VjdXJlU2lnbiBSb290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh +1oq/FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOgvlIfX8xn +bacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy6pJxaeQp8E+BgQQ8sqVb +1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa +/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9JkdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOE +kJTRX45zGRBdAuVwpcAQ0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSx +jVIHvXiby8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac18iz +ju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs0Wq2XSqypWa9a4X0 +dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIABSMbHdPTGrMNASRZhdCyvjG817XsY +AFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVLApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeq +YR3r6/wtbyPk86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E +rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ibed87hwriZLoA +ymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopTzfFP7ELyk+OZpDc8h7hi2/Ds +Hzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHSDCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPG +FrojutzdfhrGe0K22VoF3Jpf1d+42kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6q +nsb58Nn4DSEC5MUoFlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/ +OfVyK4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6dB7h7sxa +OgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtlLor6CZpO2oYofaphNdgO +pygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB365jJ6UeTo3cKXhZ+PmhIIynJkBugnLN +eLLIjzwec+fBH7/PzqUqm9tEZDKgu39cJRNItX+S +-----END CERTIFICATE----- + +SecureSign Root CA15 +==================== +-----BEGIN CERTIFICATE----- +MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMwUTELMAkGA1UE +BhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRTZWN1 +cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMyNTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNV +BAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2Vj +dXJlU2lnbiBSb290IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5G +dCx4wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSRZHX+AezB +2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT9DAKBggqhkjOPQQDAwNoADBlAjEA2S6J +fl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJ +SwdLZrWeqrqgHkHZAXQ6bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= +-----END CERTIFICATE----- diff --git a/includes/caddyfile.conf.php b/includes/caddyfile.conf.php new file mode 100644 index 0000000..fc08967 --- /dev/null +++ b/includes/caddyfile.conf.php @@ -0,0 +1,32 @@ + +# Template to enable clean URLs for the Caddy web server v2. +# +# Usage: +# +# example.com { +# #... +# import filesystem/path/to/caddyfile +# #... +# } + +@twigs { + path *.twig +} + +@admin { + path /{chyrp_path}/admin/* + file { + try_files {path} {path}/ /{chyrp_path}/admin/index.php + } +} + +@chyrp { + path /{chyrp_path}/* + file { + try_files {path} {path}/ /{chyrp_path}/index.php + } +} + +rewrite @twigs /{chyrp_path}/index.php +rewrite @admin {http.matchers.file.relative} +rewrite @chyrp {http.matchers.file.relative} diff --git a/includes/class/Config.php b/includes/class/Config.php index e5d34b8..9451b91 100644 --- a/includes/class/Config.php +++ b/includes/class/Config.php @@ -32,7 +32,9 @@ * Returns: * @mixed@ */ - public function __get($name): mixed { + public function __get( + $name + ): mixed { if (isset($this->data[$name])) return $this->data[$name]; @@ -48,7 +50,9 @@ * Function: __isset * Handles access to the configuration data. */ - public function __isset($name): bool { + public function __isset( + $name + ): bool { return isset($this->data[$name]); } @@ -56,14 +60,21 @@ * Function: read * Reads the configuration file and decodes the settings. */ - private function read(): array|false { + private function read( + ): array|false { $security = "\n"; - $contents = @file_get_contents(INCLUDES_DIR.DIR."config.json.php"); + + $contents = @file_get_contents( + INCLUDES_DIR.DIR."config.json.php" + ); if ($contents === false) return false; - $json = json_get(str_replace($security, "", $contents), true); + $json = json_get( + str_replace($security, "", $contents), + true + ); if (!is_array($json)) return false; @@ -75,14 +86,19 @@ * Function: write * Encodes the settings and writes the configuration file. */ - private function write(): int|false { + private function write( + ): int|false { $contents = "\n"; + $contents.= json_set( $this->data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ); - return @file_put_contents(INCLUDES_DIR.DIR."config.json.php", $contents); + return @file_put_contents( + INCLUDES_DIR.DIR."config.json.php", + $contents + ); } /** @@ -94,7 +110,11 @@ * $value - The value to set. * $fallback - Add the setting only if it doesn't exist. */ - public function set($setting, $value, $fallback = false): int|bool { + public function set( + $setting, + $value, + $fallback = false + ): int|bool { if (isset($this->data[$setting]) and $fallback) return true; @@ -113,7 +133,9 @@ * Parameters: * $setting - The setting name. */ - public function remove($setting): int|false { + public function remove( + $setting + ): int|false { unset($this->data[$setting]); return $this->write(); } @@ -122,7 +144,8 @@ * Function: current * Returns a singleton reference to the current configuration. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Feathers.php b/includes/class/Feathers.php index f28e7a0..6b74e46 100644 --- a/includes/class/Feathers.php +++ b/includes/class/Feathers.php @@ -39,8 +39,14 @@ * See Also: * */ - protected function setFilter($field, $name): void { - self::$filters[get_class($this)][] = array("field" => $field, "name" => $name); + protected function setFilter( + $field, + $name + ): void { + self::$filters[get_class($this)][] = array( + "field" => $field, + "name" => $name + ); if (isset($this->fields[$field])) { foreach ((array) $name as $filter) @@ -59,8 +65,14 @@ * See Also: * */ - protected function customFilter($field, $name): void { - self::$custom_filters[get_class($this)][] = array("field" => $field, "name" => $name); + protected function customFilter( + $field, + $name + ): void { + self::$custom_filters[get_class($this)][] = array( + "field" => $field, + "name" => $name + ); if (isset($this->fields[$field])) { foreach ((array) $name as $filter) @@ -80,7 +92,11 @@ * See Also: * */ - protected function respondTo($name, $function = null, $priority = 10): void { + protected function respondTo( + $name, + $function = null, + $priority = 10 + ): void { fallback($function, $name); Trigger::current()->priorities[$name][] = array( "priority" => $priority, @@ -103,7 +119,9 @@ * extra - Stuff to output after the input field. Can be anything. * note - A minor note to display next to the label text. */ - protected function setField($options): void { + protected function setField( + $options + ): void { $this->fields[$options["attr"]] = $options; } } diff --git a/includes/class/Flash.php b/includes/class/Flash.php index 6acf8f2..b047e7e 100644 --- a/includes/class/Flash.php +++ b/includes/class/Flash.php @@ -34,7 +34,9 @@ * Function: prepare * Prepare the structure of a session value. */ - private static function prepare($type): void { + private static function prepare( + $type + ): void { if ( !isset($_SESSION[$type]) or !is_array($_SESSION[$type]) @@ -52,7 +54,11 @@ * $redirect_to - URL to redirect to after the message is stored. * $code - Numeric HTTP status code to set. */ - public static function message($message, $redirect_to = null, $code = null): void { + public static function message( + $message, + $redirect_to = null, + $code = null + ): void { $trigger = Trigger::current(); $type = self::FLASH_MESSAGE; self::prepare($type); @@ -75,7 +81,11 @@ * $redirect_to - URL to redirect to after the notice is stored. * $code - Numeric HTTP status code to set. */ - public static function notice($message, $redirect_to = null, $code = null): void { + public static function notice( + $message, + $redirect_to = null, + $code = null + ): void { $trigger = Trigger::current(); $type = self::FLASH_NOTICE; self::prepare($type); @@ -98,7 +108,11 @@ * $redirect_to - URL to redirect to after the warning is stored. * $code - Numeric HTTP status code to set. */ - public static function warning($message, $redirect_to = null, $code = null): void { + public static function warning( + $message, + $redirect_to = null, + $code = null + ): void { $trigger = Trigger::current(); $type = self::FLASH_WARNING; self::prepare($type); @@ -116,7 +130,8 @@ * Function: messages * Calls "messages". */ - public function messages(): array { + public function messages( + ): array { return $this->serve(self::FLASH_MESSAGE); } @@ -124,7 +139,8 @@ * Function: notices * Calls "notices". */ - public function notices(): array { + public function notices( + ): array { return $this->serve(self::FLASH_NOTICE); } @@ -132,7 +148,8 @@ * Function: warnings * Calls "warnings". */ - public function warnings(): array { + public function warnings( + ): array { return $this->serve(self::FLASH_WARNING); } @@ -144,7 +161,8 @@ * An array of every flash available, * in the form of [type => [flashes]]. */ - public function all(): array { + public function all( + ): array { return array( "messages" => $this->messages(), "notices" => $this->notices(), @@ -162,7 +180,9 @@ * Returns: * An array of flashes of the requested type. */ - private function serve($type): array { + private function serve( + $type + ): array { self::prepare($type); if (!empty($_SESSION[$type])) { @@ -185,7 +205,9 @@ * Parameters: * $type - Type to check for (optional). */ - public static function exists($type = null): bool { + public static function exists( + $type = null + ): bool { switch ($type) { case self::FLASH_MESSAGE: case self::FLASH_NOTICE: @@ -223,7 +245,9 @@ * Parameters: * $type - Type to check for (optional). */ - public static function count($type = null): int { + public static function count( + $type = null + ): int { $total = 0; switch ($type) { @@ -260,7 +284,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Model.php b/includes/class/Model.php index f1e3df7..37862f6 100644 --- a/includes/class/Model.php +++ b/includes/class/Model.php @@ -38,7 +38,9 @@ * Returns: * @mixed@ */ - public function &__get($name): mixed { + public function &__get( + $name + ): mixed { $trigger = Trigger::current(); $model_name = strtolower(get_class($this)); @@ -164,7 +166,10 @@ * Function __set * Handles dynamic attributes. */ - public function __set($name, $value): void { + public function __set( + $name, + $value + ): void { $this->data[$name] = $value; } @@ -172,7 +177,9 @@ * Function: __isset * Handles model relationships, deferred and dynamic attributes. */ - public function __isset($name): bool { + public function __isset( + $name + ): bool { $trigger = Trigger::current(); $model_name = strtolower(get_class($this)); @@ -228,7 +235,11 @@ * read_from - An array to read from instead of performing another query. * ignore_dupes - An array of columns in which duplicate values will be retained. */ - protected static function grab($model, $id, $options = array()): void { + protected static function grab( + $model, + $id, + $options = array() + ): void { $model_name = strtolower(get_class($model)); if ($model_name == "visitor") @@ -483,7 +494,9 @@ * Function: deletable * Checks if the can delete the object. */ - public function deletable($user = null): bool { + public function deletable( + $user = null + ): bool { if ($this->no_results) return false; @@ -497,7 +510,9 @@ * Function: editable * Checks if the can edit the object. */ - public function editable($user = null): bool { + public function editable( + $user = null + ): bool { if ($this->no_results) return false; @@ -537,7 +552,7 @@ $classes = $classes.' '.$name.'_edit_link edit_link'; - echo $before.''.$text.''.$after; } @@ -571,7 +586,7 @@ $classes = $classes.' '.$name.'_delete_link delete_link'; - echo $before.''.$text.''.$after; } @@ -579,7 +594,8 @@ * Function: etag * Generates an Etag for the object. */ - public function etag(): string|false { + public function etag( + ): string|false { if ($this->no_results) return false; diff --git a/includes/class/Modules.php b/includes/class/Modules.php index b2a1d73..6e44c9f 100644 --- a/includes/class/Modules.php +++ b/includes/class/Modules.php @@ -24,7 +24,10 @@ * $name - Name of the trigger to respond to. * $priority - Priority of the response. */ - protected function setPriority($name, $priority): void { + protected function setPriority( + $name, + $priority + ): void { Trigger::current()->priorities[$name][] = array( "priority" => $priority, "function" => array($this, $name) @@ -40,7 +43,11 @@ * $function - Name of the class function to respond with. * $priority - Priority of the response. */ - protected function addAlias($name, $function, $priority = 10): void { + protected function addAlias( + $name, + $function, + $priority = 10 + ): void { Trigger::current()->priorities[$name][] = array( "priority" => $priority, "function" => array($this, $function) diff --git a/includes/class/Paginator.php b/includes/class/Paginator.php index 024e0c1..dd7ea6e 100644 --- a/includes/class/Paginator.php +++ b/includes/class/Paginator.php @@ -146,7 +146,8 @@ * Function: next * Returns the next pagination sequence. */ - public function next(): self { + public function next( + ): self { return new self( $this->array, $this->per_page, @@ -160,7 +161,8 @@ * Function: prev * Returns the previous pagination sequence. */ - public function prev(): self { + public function prev( + ): self { return new self( $this->array, $this->per_page, @@ -174,7 +176,8 @@ * Function: next_page * Checks whether or not it makes sense to show the Next Page link. */ - public function next_page(): bool { + public function next_page( + ): bool { return ( $this->pages > 1 and $this->page < $this->pages @@ -185,7 +188,8 @@ * Function: prev_page * Checks whether or not it makes sense to show the Previous Page link. */ - public function prev_page(): bool { + public function prev_page( + ): bool { return ( $this->page > 1 and $this->page <= $this->pages @@ -331,7 +335,9 @@ * Parameters: * $page - Page number to link to. */ - public function next_page_url($page = null): string { + public function next_page_url( + $page = null + ): string { $config = Config::current(); $route = Route::current(); $request = unfix(self_url()); @@ -380,7 +386,9 @@ * Parameters: * $page - Page number to link to. */ - public function prev_page_url($page = null): string { + public function prev_page_url( + $page = null + ): string { $config = Config::current(); $route = Route::current(); $request = unfix(self_url()); diff --git a/includes/class/Query.php b/includes/class/Query.php index 71059af..0b013d1 100644 --- a/includes/class/Query.php +++ b/includes/class/Query.php @@ -110,7 +110,9 @@ * Parameters: * $column - The offset of the column to grab. Default 0. */ - public function fetchColumn($column = 0): mixed { + public function fetchColumn( + $column = 0 + ): mixed { return $this->query->fetchColumn($column); } @@ -118,7 +120,9 @@ * Function: fetch * Returns the current row as an array. */ - public function fetch($mode = PDO::FETCH_ASSOC): mixed { # Can be PDO::FETCH_DEFAULT in PHP 8.0.7+ + public function fetch( + $mode = PDO::FETCH_DEFAULT + ): mixed { return $this->query->fetch($mode); } @@ -126,7 +130,8 @@ * Function: fetchObject * Returns the current row as an object. */ - public function fetchObject(): object|false { + public function fetchObject( + ): object|false { return $this->query->fetchObject(); } @@ -134,7 +139,9 @@ * Function: fetchAll * Returns an array of every result. */ - public function fetchAll($mode = PDO::FETCH_ASSOC): array { # Can be PDO::FETCH_DEFAULT in PHP 8.0.7+ + public function fetchAll( + $mode = PDO::FETCH_DEFAULT + ): array { return $this->query->fetchAll($mode); } @@ -148,7 +155,9 @@ * Returns: * An array of all of the values of that column in the result. */ - public function grab($column): array { + public function grab( + $column + ): array { $all = $this->fetchAll(); $result = array(); @@ -162,7 +171,9 @@ * Function: exception_handler * Handles exceptions thrown by failed queries. */ - public function exception_handler($e): void { + public function exception_handler( + $e + ): void { $this->sql->error = $e->getMessage(); # Trigger an error if throws were not requested. diff --git a/includes/class/Route.php b/includes/class/Route.php index 0932edc..9efb115 100644 --- a/includes/class/Route.php +++ b/includes/class/Route.php @@ -39,7 +39,9 @@ * Parameters: * $controller - The controller to use. */ - private function __construct($controller) { + private function __construct( + $controller + ) { if (!in_array("Controller", class_implements($controller))) trigger_error( __("Route was initiated with an invalid Controller."), @@ -95,7 +97,8 @@ * Function: init * Attempt to call a responder until one of them doesn't return false. */ - public function init(): bool { + public function init( + ): bool { $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -206,7 +209,10 @@ * An absolute clean or dirty URL, depending on value of @Config->clean_urls@ * and @controller->clean_urls@. */ - public static function url($url, $controller = null): string { + public static function url( + $url, + $controller = null + ): string { $config = Config::current(); if (!isset($controller)) @@ -277,7 +283,10 @@ * See Also: * */ - public function add($path, $action): void { + public function add( + $path, + $action + ): void { $config = Config::current(); $new_routes = $config->routes; $new_routes[$path] = $action; @@ -294,7 +303,9 @@ * See Also: * */ - public function remove($path): void { + public function remove( + $path + ): void { $config = Config::current(); $new_routes = $config->routes; unset($new_routes[$path]); @@ -308,7 +319,8 @@ * Notes: * The / path strictly requires no request args. */ - public function custom(): void { + public function custom( + ): void { if (!$this->controller instanceof MainController) return; @@ -357,7 +369,9 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current($controller = null): ?self { + public static function & current( + $controller = null + ): ?self { static $instance = null; if (!isset($controller) and empty($instance)) diff --git a/includes/class/SQL.php b/includes/class/SQL.php index 5f4c4cd..96e026f 100644 --- a/includes/class/SQL.php +++ b/includes/class/SQL.php @@ -72,7 +72,9 @@ * Parameters: * $settings - An array of settings (optional). */ - private function __construct($settings = array()) { + private function __construct( + $settings = array() + ) { if (class_exists("Config")) fallback($settings, Config::current()->sql); @@ -98,7 +100,9 @@ * Parameters: * $checking - Return a boolean for failure, instead of triggering an error? */ - public function connect($checking = false): bool { + public function connect( + $checking = false + ): bool { if ($this->connected) return true; @@ -448,7 +452,9 @@ * Parameters: * $string - String to escape. */ - public function escape($string): string { + public function escape( + $string + ): string { if (!isset($this->db)) $this->connect(); @@ -473,7 +479,9 @@ * Function: current * Returns a singleton reference to the current connection. */ - public static function & current($settings = false): self { + public static function & current( + $settings = false + ): self { if ($settings) { $loaded = new self($settings); return $loaded; diff --git a/includes/class/Session.php b/includes/class/Session.php index a6f528a..40058b1 100644 --- a/includes/class/Session.php +++ b/includes/class/Session.php @@ -24,7 +24,10 @@ * $path - Filesystem path. * $name - The session name. */ - public function open($path, $name): bool { + public function open( + $path, + $name + ): bool { $this->created_at = datetime(); $this->deny = (SESSION_DENY_BOT and BOT_UA); @@ -35,7 +38,8 @@ * Function: close * Executed when the session is closed. */ - public function close(): bool { + public function close( + ): bool { return true; } @@ -46,7 +50,9 @@ * Parameters: * $id - Session ID. */ - public function read($id): string|false { + public function read( + $id + ): string|false { $result = SQL::current()->select( tables:"sessions", fields:array("data", "created_at"), @@ -69,7 +75,10 @@ * $id - Session ID. * $data - Data to write. */ - public function write($id, $data): bool { + public function write( + $id, + $data + ): bool { $sql = SQL::current(); $visitor = Visitor::current(); @@ -100,7 +109,9 @@ * Parameters: * $id - Session ID. */ - public function destroy($id): bool { + public function destroy( + $id + ): bool { SQL::current()->delete("sessions", array("id" => $id)); return true; } @@ -112,7 +123,9 @@ * Parameters: * $lifetime - The configured maximum session lifetime in seconds. */ - public function gc($lifetime): int|false { + public function gc( + $lifetime + ): int|false { SQL::current()->delete( "sessions", "updated_at < :expired_cookie OR data = '' OR data IS NULL", @@ -126,7 +139,8 @@ * Function: hash_token * Generates an authentication token for this session. */ - public static function hash_token(): bool|string { + public static function hash_token( + ): bool|string { $id = session_id(); if ($id === "") @@ -142,7 +156,9 @@ * Parameters: * $hash - The token to validate. */ - public static function check_token($hash): bool { + public static function check_token( + $hash + ): bool { $token = self::hash_token(); if ($token === false) diff --git a/includes/class/Theme.php b/includes/class/Theme.php index b2d14d8..dc6937b 100644 --- a/includes/class/Theme.php +++ b/includes/class/Theme.php @@ -40,7 +40,10 @@ * $page_id - Page ID to start from, or zero to return all pages. * $exclude - Page ID/s to exclude, integer or array of integers. */ - public function pages_list($page_id = 0, $exclude = null): array { + public function pages_list( + $page_id = 0, + $exclude = null + ): array { $cache_id = serialize(array($page_id, $exclude)); if ( @@ -92,7 +95,9 @@ * Parameters: * $page - Page to start recursion at. */ - private function recurse_pages($page): void { + private function recurse_pages( + $page + ): void { if (!isset($page->depth)) $page->depth = 1; @@ -119,7 +124,9 @@ * Parameters: * $limit - Maximum number of months to list. */ - public function archives_list($limit = 12): array { + public function archives_list( + $limit = 12 + ): array { if ( isset($this->caches["archives_list"][$limit]) ) { @@ -177,7 +184,9 @@ * Parameters: * $limit - Maximum number of recent posts to list. */ - public function recent_posts($limit = 5): array { + public function recent_posts( + $limit = 5 + ): array { if ( isset($this->caches["recent_posts"][$limit]) ) { @@ -213,7 +222,10 @@ * $post - The post to use as the basis. * $limit - Maximum number of related posts to list. */ - public function related_posts($post, $limit = 5): array { + public function related_posts( + $post, + $limit = 5 + ): array { if ($post->no_results) return array(); @@ -256,7 +268,9 @@ * Parameters: * $name - The filename. */ - public function file_exists($name): bool { + public function file_exists( + $name + ): bool { return file_exists(THEME_DIR.DIR.$name.".twig"); } @@ -264,7 +278,8 @@ * Function: stylesheets * Outputs the stylesheet tags. */ - public function stylesheets(): string { + public function stylesheets( + ): string { $config = Config::current(); $stylesheets = array(); @@ -318,7 +333,8 @@ * Function: javascripts * Outputs the JavaScript tags. */ - public function javascripts(): string { + public function javascripts( + ): string { $config = Config::current(); $route = Route::current(); @@ -374,7 +390,8 @@ * Function: feeds * Outputs the feeds and other general purpose tags. */ - public function feeds(): string { + public function feeds( + ): string { $config = Config::current(); $route = Route::current(); $main = MainController::current(); @@ -451,7 +468,8 @@ * Function: load_time * Returns the total elapsed time for this page load. */ - public function load_time(): string { + public function load_time( + ): string { return timer_stop(); } @@ -459,7 +477,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Translation.php b/includes/class/Translation.php index 2864fc3..8d6403d 100644 --- a/includes/class/Translation.php +++ b/includes/class/Translation.php @@ -33,7 +33,11 @@ * $path - The path to the locale directory. * $reload - Reload the translation if already loaded? */ - public function load($domain, $path, $reload = false): bool { + public function load( + $domain, + $path, + $reload = false + ): bool { $filepath = $path.DIR.$this->locale.DIR."LC_MESSAGES".DIR.$domain.".mo"; if (isset($this->mo[$domain]) and !$reload) @@ -131,7 +135,12 @@ * $plural - Pluralized string (optional). * $number - The number to judge by (optional). */ - public function text($domain, $single, $plural = null, $number = 1): string { + public function text( + $domain, + $single, + $plural = null, + $number = 1 + ): string { if (isset($plural)) { $array = $this->find($domain, $plural); $n = (int) $number; @@ -150,7 +159,10 @@ * Function: find * Returns a translation array from the supplied domain. */ - public function find($domain, $string): array { + public function find( + $domain, + $string + ): array { if (!isset($this->mo[$domain])) return array(); @@ -166,7 +178,9 @@ * Function: nplural * Support for for languages with n != 2 plural forms. */ - private function nplural($n): int { + private function nplural( + $n + ): int { static $base; if (!isset($base)) @@ -199,7 +213,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Trigger.php b/includes/class/Trigger.php index 0dfc793..9319ec2 100644 --- a/includes/class/Trigger.php +++ b/includes/class/Trigger.php @@ -40,7 +40,10 @@ * Function: cmp * Sorts actions by priority when used with usort. */ - private function cmp($a, $b): int { + private function cmp( + $a, + $b + ): int { if (empty($a) or empty($b)) return 0; @@ -54,7 +57,10 @@ * Function: decide * Decides what to do with a call return value. */ - private function decide($return, $val): mixed { + private function decide( + $return, + $val + ): mixed { if ($return === false) return $val; @@ -79,7 +85,9 @@ * Notes: * Any additional arguments are passed on to the trigger responders. */ - public function call($name): mixed { + public function call( + $name + ): mixed { $return = false; if (is_array($name)) { @@ -159,7 +167,10 @@ * Notes: * Any additional arguments are passed on to the trigger responders. */ - public function filter(&$target, $name): mixed { + public function filter( + &$target, + $name + ): mixed { if (is_array($name)) { foreach ($name as $filter) { $args = func_get_args(); @@ -235,7 +246,9 @@ * Returns: * @true@ or @false@ */ - public function exists($name): bool { + public function exists( + $name + ): bool { if (isset($this->exists[$name])) return $this->exists[$name]; @@ -254,7 +267,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Update.php b/includes/class/Update.php index 8c58947..e0c73f9 100644 --- a/includes/class/Update.php +++ b/includes/class/Update.php @@ -8,7 +8,8 @@ * Function: check * Checks the update channel. */ - public static function check(): void { + public static function check( + ): void { $config = Config::current(); $visitor = Visitor::current(); @@ -49,7 +50,9 @@ * Function: validate * Validates the XML dataset. */ - private static function validate($xml): bool { + private static function validate( + $xml + ): bool { if (!$xml instanceof SimpleXMLElement) return false; @@ -74,7 +77,9 @@ * Function: message * Flash the user about the newer version. */ - private static function message($item): void { + private static function message( + $item + ): void { Flash::message( _f("Chyrp Lite “%s” is available.", fix($item->title)). ' '. @@ -86,7 +91,8 @@ * Function: warning * Flash the user about the failed check. */ - private static function warning(): void { + private static function warning( + ): void { Flash::warning( __("Unable to check for new Chyrp Lite versions."). ' '. diff --git a/includes/common.js b/includes/common.js index 5335c85..9431447 100644 --- a/includes/common.js +++ b/includes/common.js @@ -14,7 +14,9 @@ $.fn.loader = function(remove) { } // Award a numeric score for the strength of a password. -function passwordStrength(password) { +function passwordStrength( + password +) { var score = 0; var frequency = new Object(); @@ -48,7 +50,9 @@ function passwordStrength(password) { } // Does the string look like a web URL? -function isURL(text) { +function isURL( + text +) { return ( /^(https?:\/\/)?([a-z0-9]([a-z0-9\-\.]*[a-z0-9])?\.[a-z]{2,63}\.?)(:[0-9]{1,5})?($|\/)/i.test(text) || @@ -59,7 +63,9 @@ function isURL(text) { } // Does the string look like an email address? -function isEmail(text) { +function isEmail( + text +) { return ( /^[^\\ <>@]+@([a-z0-9]([a-z0-9\-\.]*[a-z0-9])?\.[a-z]{2,63}\.?)$/i.test(text) || @@ -70,7 +76,10 @@ function isEmail(text) { } // Prefixes a URL with a scheme if none was detected. -function addScheme(url, scheme) { +function addScheme( + url, + scheme +) { var regexp = /^([a-z]+:\/\/)?(.+)/i; if (!scheme) @@ -83,6 +92,8 @@ function addScheme(url, scheme) { } // Escape strings for regular expressions. -function escapeRegExp(text) { +function escapeRegExp( + text +) { return text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } diff --git a/includes/common.php b/includes/common.php index d24f45e..29adc67 100644 --- a/includes/common.php +++ b/includes/common.php @@ -10,11 +10,11 @@ # Constant: CHYRP_VERSION # Version number for this release. - define('CHYRP_VERSION', "2024.03"); + define('CHYRP_VERSION', "2025.01"); # Constant: CHYRP_CODENAME # The codename for this version. - define('CHYRP_CODENAME', "Oak"); + define('CHYRP_CODENAME', "Boreal"); # Constant: CHYRP_IDENTITY # The string identifying this version. @@ -134,7 +134,7 @@ # Constant: USE_GETTEXT_SHIM # Use a shim for translation support? - define('USE_GETTEXT_SHIM', stripos(PHP_OS, "Win") === 0); + define('USE_GETTEXT_SHIM', true); # Constant: USE_OB # Use output buffering? diff --git a/includes/controller/Admin.php b/includes/controller/Admin.php index ca0c4df..0f2eab9 100644 --- a/includes/controller/Admin.php +++ b/includes/controller/Admin.php @@ -7,17 +7,17 @@ # Array: $urls # An array of clean URL => dirty URL translations. public $urls = array( - '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2=$3&$4=$5', + '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2=$3&$4=$5', - '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2=$3&$4', + '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2=$3&$4', - '|/([^/]+)/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2=$3', + '|/([^/]+)/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2=$3', - '|/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2' + '|/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2' ); # String: $base @@ -94,7 +94,9 @@ * Function: parse * Route constructor calls this to interpret clean URLs and determine the action. */ - public function parse($route): ?string { + public function parse( + $route + ): ?string { $visitor = Visitor::current(); $config = Config::current(); @@ -182,7 +184,9 @@ * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool { + public function exempt( + $action + ): bool { $exemptions = array("login", "logout"); return in_array($action, $exemptions); } @@ -191,7 +195,8 @@ * Function: admin_write_post * Post writing. */ - public function admin_write_post(): void { + public function admin_write_post( + ): void { $visitor = Visitor::current(); $config = Config::current(); $trigger = Trigger::current(); @@ -245,7 +250,8 @@ * Function: admin_add_post * Adds a post when the form is submitted. */ - public function admin_add_post()/*: never */{ + public function admin_add_post( + ): never { $visitor = Visitor::current(); if (!$visitor->group->can("add_post", "add_draft")) @@ -289,7 +295,8 @@ * Function: admin_edit_post * Post editing. */ - public function admin_edit_post(): void { + public function admin_edit_post( + ): void { $trigger = Trigger::current(); if (empty($_GET['id']) or !is_numeric($_GET['id'])) @@ -338,7 +345,8 @@ * Function: admin_update_post * Updates a post when the form is submitted. */ - public function admin_update_post()/*: never */{ + public function admin_update_post( + ): never { $visitor = Visitor::current(); $post_redirect = (Post::any_editable() or Post::any_deletable()) ? @@ -399,7 +407,8 @@ * Function: admin_delete_post * Post deletion (confirm page). */ - public function admin_delete_post(): void { + public function admin_delete_post( + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -434,7 +443,8 @@ * Function: admin_destroy_post * Destroys a post. */ - public function admin_destroy_post()/*: never */{ + public function admin_destroy_post( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -477,7 +487,8 @@ * Function: admin_manage_posts * Post management. */ - public function admin_manage_posts(): void { + public function admin_manage_posts( + ): void { if (!Post::any_editable() and !Post::any_deletable()) show_403( __("Access Denied"), @@ -538,55 +549,64 @@ $posts = new Paginator(array()); } - foreach ($posts->paginated as &$post) { - if ($ids = $post->groups()) { - $group_names = array(); - $group_classes = array(); + $post_statuses = array(); - foreach ($ids as $id) { - $group = new Group($id); + foreach ($posts->paginated as $post) { + $name = ""; + $groups = array(); + $classes = array(); + + if ($group_ids = $post->groups()) { + foreach ($group_ids as $group_id) { + $group = new Group($group_id); if (!$group->no_results) { - $group_names[] = $group->name; - $group_classes[] = "group-".$group->id; + $groups[] = $group; + $classes[] = "group-".$group->id; } } - - $post->status_name = join(", ", $group_names); - $post->status_class = join(" ", $group_classes); } else { switch ($post->status) { case Post::STATUS_DRAFT: - $post->status_name = __("Draft", "admin"); + $name = __("Draft", "admin"); break; case Post::STATUS_PUBLIC: - $post->status_name = __("Public", "admin"); + $name = __("Public", "admin"); break; case Post::STATUS_PRIVATE: - $post->status_name = __("Private", "admin"); + $name = __("Private", "admin"); break; case Post::STATUS_REG_ONLY: - $post->status_name = __("All registered users", "admin"); + $name = __("All registered users", "admin"); break; case Post::STATUS_SCHEDULED: - $post->status_name = __("Scheduled", "admin"); + $name = __("Scheduled", "admin"); break; default: - $post->status_name = camelize($post->status, true); + $name = camelize($post->status, true); } - $post->status_class = $post->status; + $classes[] = $post->status; } + + $post_statuses[$post->id] = array( + "name" => $name, + "groups" => $groups, + "classes" => $classes + ); } $this->display( "pages".DIR."manage_posts", - array("posts" => $posts) + array( + "posts" => $posts, + "post_statuses" => $post_statuses + ) ); } @@ -594,7 +614,8 @@ * Function: admin_write_page * Page creation. */ - public function admin_write_page(): void { + public function admin_write_page( + ): void { if (!Visitor::current()->group->can("add_page")) show_403( __("Access Denied"), @@ -611,7 +632,8 @@ * Function: admin_add_page * Adds a page when the form is submitted. */ - public function admin_add_page()/*: never */{ + public function admin_add_page( + ): never { $visitor = Visitor::current(); if (!$visitor->group->can("add_page")) @@ -682,7 +704,8 @@ * Function: admin_edit_page * Page editing. */ - public function admin_edit_page(): void { + public function admin_edit_page( + ): void { if (!Visitor::current()->group->can("edit_page")) show_403( __("Access Denied"), @@ -725,7 +748,8 @@ * Function: admin_update_page * Updates a page when the form is submitted. */ - public function admin_update_page()/*: never */{ + public function admin_update_page( + ): never { $visitor = Visitor::current(); $page_redirect = ($visitor->group->can("edit_page", "delete_page")) ? @@ -824,7 +848,8 @@ * Function: admin_delete_page * Page deletion (confirm page). */ - public function admin_delete_page(): void { + public function admin_delete_page( + ): void { if (!Visitor::current()->group->can("delete_page")) show_403( __("Access Denied"), @@ -856,7 +881,8 @@ * Function: admin_destroy_page * Destroys a page. */ - public function admin_destroy_page()/*: never */{ + public function admin_destroy_page( + ): never { if (!Visitor::current()->group->can("delete_page")) show_403( __("Access Denied"), @@ -913,7 +939,8 @@ * Function: admin_manage_pages * Page management. */ - public function admin_manage_pages(): void { + public function admin_manage_pages( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("edit_page", "delete_page")) @@ -960,7 +987,8 @@ * Function: admin_new_user * User creation. */ - public function admin_new_user(): void { + public function admin_new_user( + ): void { if (!Visitor::current()->group->can("add_user")) show_403( __("Access Denied"), @@ -988,7 +1016,8 @@ * Function: admin_add_user * Add a user when the form is submitted. */ - public function admin_add_user()/*: never */{ + public function admin_add_user( + ): never { if (!Visitor::current()->group->can("add_user")) show_403( __("Access Denied"), @@ -1001,14 +1030,23 @@ __("Invalid authentication token.") ); - if (empty($_POST['login']) or derezz($_POST['login'])) + if (empty($_POST['login'])) error( __("Error"), __("Please enter a username for the account."), code:422 ); - $check = new User(array("login" => $_POST['login'])); + $login = sanitize_db_string($_POST['login'], 64); + + if (empty($login)) + error( + __("Error"), + __("Invalid username."), + code:422 + ); + + $check = new User(array("login" => $login)); if (!$check->no_results) error( @@ -1079,7 +1117,7 @@ true ; $user = User::add( - login:$_POST['login'], + login:$login, password:User::hash_password($_POST['password1']), email:$_POST['email'], full_name:$_POST['full_name'], @@ -1101,7 +1139,8 @@ * Function: admin_edit_user * User editing. */ - public function admin_edit_user(): void { + public function admin_edit_user( + ): void { if (!Visitor::current()->group->can("edit_user")) show_403( __("Access Denied"), @@ -1138,7 +1177,8 @@ * Function: admin_update_user * Updates a user when the form is submitted. */ - public function admin_update_user()/*: never */{ + public function admin_update_user( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -1161,16 +1201,25 @@ __("You do not have sufficient privileges to edit users.") ); - if (empty($_POST['login']) or derezz($_POST['login'])) + if (empty($_POST['login'])) error( __("Error"), __("Please enter a username for the account."), code:422 ); + $login = sanitize_db_string($_POST['login'], 64); + + if (empty($login)) + error( + __("Error"), + __("Invalid username."), + code:422 + ); + $check = new User( array( - "login" => $_POST['login'], + "login" => $login, "id not" => $_POST['id'] ) ); @@ -1254,7 +1303,7 @@ true ; $user = $user->update( - login:$_POST['login'], + login:$login, password:$password, email:$_POST['email'], full_name:$_POST['full_name'], @@ -1276,7 +1325,8 @@ * Function: admin_delete_user * User deletion (confirm page). */ - public function admin_delete_user(): void { + public function admin_delete_user( + ): void { if (!Visitor::current()->group->can("delete_user")) show_403( __("Access Denied"), @@ -1316,7 +1366,8 @@ * Function: admin_destroy_user * Destroys a user. */ - public function admin_destroy_user()/*: never */{ + public function admin_destroy_user( + ): never { if (!Visitor::current()->group->can("delete_user")) show_403( __("Access Denied"), @@ -1405,7 +1456,8 @@ * Function: admin_manage_users * User management. */ - public function admin_manage_users(): void { + public function admin_manage_users( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("add_user", "edit_user", "delete_user")) @@ -1455,7 +1507,8 @@ * Function: admin_new_group * Group creation. */ - public function admin_new_group(): void { + public function admin_new_group( + ): void { if (!Visitor::current()->group->can("add_group")) show_403( __("Access Denied"), @@ -1472,7 +1525,8 @@ * Function: admin_add_group * Adds a group when the form is submitted. */ - public function admin_add_group()/*: never */{ + public function admin_add_group( + ): never { if (!Visitor::current()->group->can("add_group")) show_403( __("Access Denied"), @@ -1485,17 +1539,26 @@ __("Invalid authentication token.") ); - if (empty($_POST['name']) or derezz($_POST['name'])) + if (empty($_POST['name'])) error( __("Error"), __("Please enter a name for the group."), code:422 ); + $name = sanitize_db_string($_POST['name'], 100); + + if (empty($name)) + error( + __("Error"), + __("Invalid group name."), + code:422 + ); + fallback($_POST['permissions'], array()); $check = new Group( - array("name" => $_POST['name']) + array("name" => $name) ); if (!$check->no_results) @@ -1506,7 +1569,7 @@ ); Group::add( - $_POST['name'], + $name, array_keys($_POST['permissions']) ); @@ -1520,7 +1583,8 @@ * Function: admin_edit_group * Group editing. */ - public function admin_edit_group(): void { + public function admin_edit_group( + ): void { if (!Visitor::current()->group->can("edit_group")) show_403( __("Access Denied"), @@ -1555,7 +1619,8 @@ * Function: admin_update_group * Updates a group when the form is submitted. */ - public function admin_update_group()/*: never */{ + public function admin_update_group( + ): never { if (!Visitor::current()->group->can("edit_group")) show_403( __("Access Denied"), @@ -1575,18 +1640,27 @@ code:400 ); - if (empty($_POST['name']) or derezz($_POST['name'])) + if (empty($_POST['name'])) error( __("Error"), __("Please enter a name for the group."), code:422 ); + $name = sanitize_db_string($_POST['name'], 100); + + if (empty($name)) + error( + __("Error"), + __("Invalid group name."), + code:422 + ); + fallback($_POST['permissions'], array()); $check = new Group( array( - "name" => $_POST['name'], + "name" => $name, "id not" => $_POST['id'] ) ); @@ -1607,7 +1681,7 @@ ); $group = $group->update( - $_POST['name'], + $name, array_keys($_POST['permissions']) ); @@ -1621,7 +1695,8 @@ * Function: admin_delete_group * Group deletion (confirm page). */ - public function admin_delete_group(): void { + public function admin_delete_group( + ): void { if (!Visitor::current()->group->can("delete_group")) show_403( __("Access Denied"), @@ -1667,7 +1742,8 @@ * Function: admin_destroy_group * Destroys a group. */ - public function admin_destroy_group()/*: never */{ + public function admin_destroy_group( + ): never { if (!Visitor::current()->group->can("delete_group")) show_403( __("Access Denied"), @@ -1793,7 +1869,8 @@ * Function: admin_manage_groups * Group management. */ - public function admin_manage_groups(): void { + public function admin_manage_groups( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("add_group", "edit_group", "delete_group")) @@ -1844,7 +1921,8 @@ * Function: admin_delete_upload * Upload deletion (confirm page). */ - public function admin_delete_upload(): void { + public function admin_delete_upload( + ): void { $sql = SQL::current(); if (!Visitor::current()->group->can("edit_post", "edit_page", true)) @@ -1899,7 +1977,8 @@ * Function: admin_destroy_upload * Destroys a post. */ - public function admin_destroy_upload()/*: never */{ + public function admin_destroy_upload( + ): never { if (!Visitor::current()->group->can("edit_post", "edit_page", true)) show_403( __("Access Denied"), @@ -1941,7 +2020,8 @@ * Function: admin_manage_uploads * Upload management. */ - public function admin_manage_uploads(): void { + public function admin_manage_uploads( + ): void { if (!Visitor::current()->group->can("edit_post", "edit_page", true)) show_403( __("Access Denied"), @@ -1994,7 +2074,8 @@ * Function: admin_export * Export content from this installation. */ - public function admin_export(): void { + public function admin_export( + ): void { $config = Config::current(); $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -2333,7 +2414,7 @@ camelize($config->name), false, true - )."_Export_".date("Y-m-d"); + )."_export_".date("Y-m-d"); $archived = zip_archive($exports); file_attachment($archived, $filename.".zip"); @@ -2343,7 +2424,8 @@ * Function: admin_import * Import content to this installation. */ - public function admin_import(): void { + public function admin_import( + ): void { $config = Config::current(); $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -2616,7 +2698,8 @@ * Function: admin_modules * Module enabling/disabling. */ - public function admin_modules(): void { + public function admin_modules( + ): void { if (!Visitor::current()->group->can("toggle_extensions")) show_403( __("Access Denied"), @@ -2709,7 +2792,8 @@ * Function: admin_feathers * Feather enabling/disabling. */ - public function admin_feathers(): void { + public function admin_feathers( + ): void { if (!Visitor::current()->group->can("toggle_extensions")) show_403( __("Access Denied"), @@ -2753,7 +2837,8 @@ * Function: admin_themes * Theme switching/previewing. */ - public function admin_themes(): void { + public function admin_themes( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -2791,7 +2876,8 @@ * Function: admin_enable * Enables a module or feather. */ - public function admin_enable()/*: never */{ + public function admin_enable( + ): never { $config = Config::current(); $visitor = Visitor::current(); @@ -2869,7 +2955,8 @@ * Function: admin_disable * Disables a module or feather. */ - public function admin_disable()/*: never */{ + public function admin_disable( + ): never { $config = Config::current(); $visitor = Visitor::current(); @@ -2944,7 +3031,8 @@ * Function: admin_change_theme * Changes the theme. */ - public function admin_change_theme()/*: never */{ + public function admin_change_theme( + ): never { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -2987,7 +3075,8 @@ * Function: admin_preview_theme * Previews the theme. */ - public function admin_preview_theme()/*: never */{ + public function admin_preview_theme( + ): never { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3025,7 +3114,8 @@ * Function: admin_general_settings * General Settings page. */ - public function admin_general_settings(): void { + public function admin_general_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3064,20 +3154,6 @@ code:422 ); - if (empty($_POST['chyrp_url'])) - error( - __("Error"), - __("Chyrp URL cannot be blank."), - code:422 - ); - - if (!is_url($_POST['chyrp_url'])) - error( - __("Error"), - __("Invalid Chyrp URL."), - code:422 - ); - if (!empty($_POST['url']) and !is_url($_POST['url'])) error( __("Error"), @@ -3097,12 +3173,15 @@ 0 : $config->check_updates_last ; - $chyrp_url = rtrim(add_scheme($_POST['chyrp_url']), "/"); - $url = rtrim(add_scheme(oneof($_POST['url'], $_POST['chyrp_url'])), "/"); + $url = rtrim( + add_scheme( + oneof($_POST['url'], $config->chyrp_url) + ), + "/" + ); $config->set("name", strip_tags($_POST['name'])); $config->set("description", strip_tags($_POST['description'])); - $config->set("chyrp_url", $chyrp_url); $config->set("url", $url); $config->set("email", $_POST['email']); $config->set("timezone", $_POST['timezone']); @@ -3121,13 +3200,56 @@ * Function: admin_content_settings * Content Settings page. */ - public function admin_content_settings(): void { + public function admin_content_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), __("You do not have sufficient privileges to change settings.") ); + $post_statuses = array( + array( + "id" => Post::STATUS_DRAFT, + "name" => __("Draft", "admin") + ), + array( + "id" => Post::STATUS_PUBLIC, + "name" => __("Public", "admin") + ), + array( + "id" => Post::STATUS_PRIVATE, + "name" => __("Private", "admin") + ), + array( + "id" => Post::STATUS_REG_ONLY, + "name" => __("All registered users", "admin") + ), + array( + "id" => Post::STATUS_SCHEDULED, + "name" => __("Scheduled", "admin") + ) + ); + + $page_statuses = array( + array( + "id" => Page::STATUS_LISTED, + "name" => __("Public and visible in pages list", "admin") + ), + array( + "id" => Page::STATUS_PUBLIC, + "name" => __("Public", "admin") + ), + array( + "id" => Page::STATUS_TEASED, + "name" => __("Private and visible in pages list", "admin") + ), + array( + "id" => Page::STATUS_PRIVATE, + "name" => __("Private", "admin") + ) + ); + $feed_formats = array( array( "name" => "Atom", @@ -3146,7 +3268,11 @@ if (empty($_POST)) { $this->display( "pages".DIR."content_settings", - array("feed_formats" => $feed_formats) + array( + "post_statuses" => $post_statuses, + "page_statuses" => $page_statuses, + "feed_formats" => $feed_formats + ) ); return; @@ -3160,6 +3286,8 @@ fallback($_POST['posts_per_page'], 5); fallback($_POST['admin_per_page'], 25); + fallback($_POST['default_post_status'], "public"); + fallback($_POST['default_page_status'], "listed"); fallback($_POST['feed_items'], 20); fallback($_POST['feed_format'], "AtomFeed"); fallback($_POST['uploads_path'], ""); @@ -3180,6 +3308,8 @@ $config = Config::current(); $config->set("posts_per_page", abs((int) $_POST['posts_per_page'])); $config->set("admin_per_page", abs((int) $_POST['admin_per_page'])); + $config->set("default_post_status", $_POST['default_post_status']); + $config->set("default_page_status", $_POST['default_page_status']); $config->set("feed_items", abs((int) $_POST['feed_items'])); $config->set("feed_format", $_POST['feed_format']); $config->set("uploads_path", $matches[1].$matches[2].$matches[3]); @@ -3199,7 +3329,8 @@ * Function: admin_user_settings * User Settings page. */ - public function admin_user_settings(): void { + public function admin_user_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3266,7 +3397,8 @@ * Function: admin_route_settings * Route Settings page. */ - public function admin_route_settings(): void { + public function admin_route_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3290,27 +3422,8 @@ $route = Route::current(); $config = Config::current(); - if (!empty($_POST['clean_urls']) and !$config->clean_urls) { - $conf = array(htaccess_conf(), caddyfile_conf(), nginx_conf()); - - if (in_array(false, $conf, true)) { - Flash::warning( - __("Failed to write file to disk.") - ); - unset($_POST['clean_urls']); - } else { - foreach ($conf as $return) { - if (is_int($return)) { - Flash::message( - __("Files created.").' '. - __("Please read the documentation before enabling clean URLs.") - ); - unset($_POST['clean_urls']); - break; - } - } - } - } + # If clean URLs are already active then rewrite support must be ok. + $rewrites_tested = $config->clean_urls; if (!empty($_POST['enable_homepage']) and !$config->enable_homepage) { $route->add("/", "page;url=home"); @@ -3341,17 +3454,54 @@ $config->set("post_url", trim($_POST['post_url'], "/ ")."/"); $config->set("enable_homepage", !empty($_POST['enable_homepage'])); + # Test URL rewrite support and disable clean URLs if not detected. + if ($config->clean_urls and !$rewrites_tested) { + $dirty_test = get_remote($config->url."/?feed"); + $clean_test = get_remote($config->url."/feed/"); + + if ($dirty_test !== false and $clean_test === false) { + $config->set("clean_urls", false); + + Flash::warning( + __("Clean URLs have been disabled because URL rewriting is not active.") + ); + } + } + Flash::notice( __("Settings updated."), "route_settings" ); } + /** + * Function: admin_download_rewrites + * Downloads the files required for URL rewrite support. + */ + public function admin_download_rewrites( + ): void { + if (!Visitor::current()->group->can("change_settings")) + show_403( + __("Access Denied"), + __("You do not have sufficient privileges to change settings.") + ); + + $conf = array( + "_htaccess" => htaccess_conf(), + "caddyfile" => caddyfile_conf(), + "include.conf" => nginx_conf() + ); + + $archived = zip_archive(array_filter($conf)); + file_attachment($archived, "URL_rewrite_files.zip"); + } + /** * Function: admin_login * Mask for MainController->login(). */ - public function admin_login()/*: never */{ + public function admin_login( + ): never { if (logged_in()) Flash::notice( __("You are already logged in."), @@ -3366,7 +3516,8 @@ * Function: admin_logout * Mask for MainController->logout(). */ - public function admin_logout()/*: never */{ + public function admin_logout( + ): never { redirect(url("logout", MainController::current())); } @@ -3374,7 +3525,8 @@ * Function: admin_help * Serves help pages for core and extensions. */ - public function admin_help(): void { + public function admin_help( + ): void { if (empty($_GET['id'])) error( __("Error"), @@ -3382,7 +3534,11 @@ code:400 ); - $template = str_replace(array(DIR, "/"), "", $_GET['id']); + $template = str_replace( + array(DIR, "/", "<", ">"), + "", + $_GET['id'] + ); $this->display( "help".DIR.$template, @@ -3395,7 +3551,9 @@ * Function: navigation_context * Returns the navigation context for Twig. */ - private function navigation_context($action): array { + private function navigation_context( + $action + ): array { $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -3658,7 +3816,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/controller/Ajax.php b/includes/controller/Ajax.php index ec89ad8..c599719 100644 --- a/includes/controller/Ajax.php +++ b/includes/controller/Ajax.php @@ -20,7 +20,9 @@ * Function: parse * Route constructor calls this to determine the action in the case of a POST request. */ - public function parse($route): ?string { + public function parse( + $route + ): ?string { if ( isset($_SERVER['HTTP_SEC_FETCH_SITE']) and $_SERVER['HTTP_SEC_FETCH_SITE'] != "same-origin" @@ -45,7 +47,9 @@ * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool { + public function exempt( + $action + ): bool { return false; } @@ -53,7 +57,8 @@ * Function: ajax_destroy_post * Destroys a post. */ - public function ajax_destroy_post(): void { + public function ajax_destroy_post( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -91,7 +96,8 @@ * Function: ajax_destroy_page * Destroys a page. */ - public function ajax_destroy_page(): void { + public function ajax_destroy_page( + ): void { if (!Visitor::current()->group->can("delete_page")) show_403( __("Access Denied"), @@ -127,7 +133,8 @@ * Function: ajax_preview_post * Previews a post. */ - public function ajax_preview_post(): void { + public function ajax_preview_post( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -183,7 +190,8 @@ * Function: ajax_preview_page * Previews a page. */ - public function ajax_preview_page(): void { + public function ajax_preview_page( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -224,7 +232,8 @@ * Function: ajax_file_upload * Moves a file to the uploads directory. */ - public function ajax_file_upload(): void { + public function ajax_file_upload( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -265,7 +274,8 @@ } } - public function ajax_uploads_modal(): void { + public function ajax_uploads_modal( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -309,7 +319,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/controller/Main.php b/includes/controller/Main.php index abdf0fb..83fc96f 100644 --- a/includes/controller/Main.php +++ b/includes/controller/Main.php @@ -7,35 +7,35 @@ # Array: $urls # An array of clean URL => dirty URL translations. public $urls = array( - '|/id/post/([0-9]+)/|' - => '/?action=id&post=$1', + '|/id/post/([0-9]+)/|' + => '/?action=id&post=$1', - '|/id/page/([0-9]+)/|' - => '/?action=id&page=$1', + '|/id/page/([0-9]+)/|' + => '/?action=id&page=$1', - '|/author/([0-9]+)/|' - => '/?action=author&id=$1', + '|/author/([0-9]+)/|' + => '/?action=author&id=$1', - '|/random/([^/]+)/|' - => '/?action=random&feather=$1', + '|/random/([^/]+)/|' + => '/?action=random&feather=$1', - '|/matter/([^/]+)/|' - => '/?action=matter&url=$1', + '|/matter/([^/]+)/|' + => '/?action=matter&url=$1', - '|/search/([^/]+)/|' - => '/?action=search&query=$1', + '|/search/([^/]+)/|' + => '/?action=search&query=$1', - '|/archive/([0-9]{4})/([0-9]{2})/([0-9]{2})/|' - => '/?action=archive&year=$1&month=$2&day=$3', + '|/archive/([0-9]{4})/([0-9]{2})/([0-9]{2})/|' + => '/?action=archive&year=$1&month=$2&day=$3', - '|/archive/([0-9]{4})/([0-9]{2})/|' - => '/?action=archive&year=$1&month=$2', + '|/archive/([0-9]{4})/([0-9]{2})/|' + => '/?action=archive&year=$1&month=$2', - '|/archive/([0-9]{4})/|' - => '/?action=archive&year=$1', + '|/archive/([0-9]{4})/|' + => '/?action=archive&year=$1', - '|/([^/]+)/feed/|' - => '/?action=$1&feed' + '|/([^/]+)/feed/|' + => '/?action=$1&feed' ); # Variable: $twig @@ -86,7 +86,9 @@ * Function: parse * Route constructor calls this to interpret clean URLs and determine the action. */ - public function parse($route): ?string { + public function parse( + $route + ): ?string { $config = Config::current(); # Serve the index if the first arg is empty and / is not a route. @@ -208,7 +210,9 @@ * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool { + public function exempt( + $action + ): bool { $exemptions = array( "login", "logout", @@ -224,7 +228,8 @@ * Function: main_index * Grabs the posts for the main index. */ - public function main_index(): void { + public function main_index( + ): void { $this->display( "pages".DIR."index", array( @@ -240,7 +245,8 @@ * Function: main_updated * Grabs the posts that have been updated. */ - public function main_updated(): void { + public function main_updated( + ): void { $this->display( array("pages".DIR."updated", "pages".DIR."index"), array( @@ -263,7 +269,8 @@ * Function: main_author * Grabs the posts created by a user. */ - public function main_author(): void { + public function main_author( + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) Flash::warning( __("You did not specify a user ID."), @@ -308,7 +315,8 @@ * Function: main_archive * Grabs the posts for the archive page. */ - public function main_archive(): void { + public function main_archive( + ): void { $sql = SQL::current(); $statuses = Post::statuses(); $feathers = Post::feathers(); @@ -473,7 +481,8 @@ * Function: main_search * Grabs the posts and pages for a search query. */ - public function main_search(): void { + public function main_search( + ): void { $config = Config::current(); $visitor = Visitor::current(); @@ -563,7 +572,8 @@ * Function: main_drafts * Grabs the posts with draft status created by this user. */ - public function main_drafts(): void { + public function main_drafts( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("view_own_draft", "view_draft")) @@ -596,7 +606,9 @@ * Handles post viewing via dirty URL or clean URL. * E.g. /year/month/day/url/. */ - public function main_view($post = null): bool { + public function main_view( + $post = null + ): bool { if (!isset($post)) $post = new Post( array("url" => fallback($_GET['url'])), @@ -630,7 +642,9 @@ * Handles page viewing via dirty URL or clean URL. * E.g. /parent/child/child-of-child/. */ - public function main_page($page = null): bool { + public function main_page( + $page = null + ): bool { $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -667,7 +681,8 @@ * Function: main_id * Views a post or page by its static ID. */ - public function main_id(): bool { + public function main_id( + ): bool { if (!empty($_GET['post']) and is_numeric($_GET['post'])) { $post = new Post($_GET['post']); @@ -693,7 +708,8 @@ * Function: main_random * Grabs a random post and redirects to it. */ - public function main_random(): bool { + public function main_random( + ): bool { $conds = array(Post::statuses()); if (isset($_GET['feather'])) @@ -737,13 +753,18 @@ * Function: main_matter * Displays a standalone Twig template from the "pages" directory. */ - public function main_matter(): bool { + public function main_matter( + ): bool { $theme = Theme::current(); if (!isset($_GET['url'])) return false; - $matter = str_replace(array(DIR, "/"), "", $_GET['url']); + $matter = str_replace( + array(DIR, "/", "<", ">"), + "", + $_GET['url'] + ); if ($matter == "") return false; @@ -766,7 +787,8 @@ * Function: main_register * Register a visitor as a new user. */ - public function main_register(): void { + public function main_register( + ): void { $config = Config::current(); if (!$config->can_register) @@ -787,13 +809,20 @@ __("Invalid authentication token.") ); - if (empty($_POST['login']) or derezz($_POST['login'])) + if (empty($_POST['login'])) Flash::warning( __("Please enter a username for your account.") ); + $login = sanitize_db_string($_POST['login'], 64); + + if (empty($login)) + Flash::warning( + __("Invalid username.") + ); + $check = new User( - array("login" => $_POST['login']) + array("login" => $login) ); if (!$check->no_results) @@ -841,7 +870,7 @@ if (!Flash::exists("warning")) { $user = User::add( - login:$_POST['login'], + login:$login, password:User::hash_password($_POST['password1']), email:$_POST['email'], full_name:$_POST['full_name'], @@ -878,7 +907,8 @@ * Function: main_activate * Activates (approves) a given login. */ - public function main_activate()/*: never */{ + public function main_activate( + ): never { if (logged_in()) Flash::notice( __("You cannot activate an account because you are already logged in."), @@ -924,7 +954,8 @@ * Function: main_login * Logs in a user if they provide the username and password. */ - public function main_login(): void { + public function main_login( + ): void { $config = Config::current(); $trigger = Trigger::current(); @@ -982,7 +1013,8 @@ * Function: main_logout * Logs out the current user. */ - public function main_logout()/*: never */{ + public function main_logout( + ): never { if (!logged_in()) Flash::notice( __("You aren't logged in."), @@ -1001,7 +1033,8 @@ * Function: main_controls * Updates the current user when the form is submitted. */ - public function main_controls(): void { + public function main_controls( + ): void { $visitor = Visitor::current(); if (!logged_in()) @@ -1085,7 +1118,8 @@ * Function: main_lost_password * Emails a password reset link to the registered address of a user. */ - public function main_lost_password(): void { + public function main_lost_password( + ): void { $config = Config::current(); if (logged_in()) @@ -1137,7 +1171,8 @@ * Function: main_reset_password * Resets the password for a given login. */ - public function main_reset_password(): void { + public function main_reset_password( + ): void { $config = Config::current(); if (logged_in()) @@ -1222,7 +1257,8 @@ * Function: main_webmention * Webmention receiver endpoint. */ - public function main_webmention(): void { + public function main_webmention( + ): void { if (!Config::current()->send_pingbacks) error( __("Error"), @@ -1240,7 +1276,9 @@ * Function: main_feed * Grabs posts and serves a feed. */ - public function main_feed($posts = null): void { + public function main_feed( + $posts = null + ): void { $config = Config::current(); $trigger = Trigger::current(); $theme = Theme::current(); @@ -1436,7 +1474,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/download.php b/includes/download.php index 32f2df6..f29b863 100644 --- a/includes/download.php +++ b/includes/download.php @@ -22,7 +22,11 @@ __("You are not allowed to view this site.") ); - $filename = str_replace(array(DIR, "/"), "", $_GET['file']); + $filename = str_replace( + array(DIR, "/", "<", ">"), + "", + $_GET['file'] + ); if ($filename == "") show_404( diff --git a/includes/error.php b/includes/error.php index 76a62d1..e0ad579 100644 --- a/includes/error.php +++ b/includes/error.php @@ -8,10 +8,17 @@ ini_set("error_log", MAIN_DIR.DIR."error_log.txt"); # Set the appropriate error reporting level. - if (DEBUG) - error_reporting(E_ALL | E_STRICT); - else - error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE); + if (DEBUG) { + error_reporting(E_ALL); + } else { + error_reporting( + E_ALL + & ~E_DEPRECATED + & ~E_USER_DEPRECATED + & ~E_NOTICE + & ~E_USER_NOTICE + ); + } # Set the error and exception handlers. set_error_handler("error_composer"); @@ -21,7 +28,12 @@ * Function: error_composer * Composes a message for the error() function to display. */ - function error_composer($errno, $message, $file, $line) { + function error_composer( + $errno, + $message, + $file, + $line + ) { # Test for suppressed errors and excluded error levels. if (!(error_reporting() & $errno)) return true; @@ -34,18 +46,24 @@ if (DEBUG) error_log( - "ERROR: ".$errno." ".strip_tags($normalized). + "ERROR: ".$errno. + " ".strip_tags($normalized). " (".$file." on line ".$line.")" ); - error(body:$message, backtrace:debug_backtrace()); + error( + body:$message, + backtrace:debug_backtrace() + ); } /** * Function: exception_composer * Composes a message for the error() function to display. */ - function exception_composer($e) { + function exception_composer( + $e + ) { $errno = $e->getCode(); $message = $e->getMessage(); $file = $e->getFile(); @@ -58,11 +76,15 @@ if (DEBUG) error_log( - "ERROR: ".$errno." ".strip_tags($normalized). + "ERROR: ".$errno. + " ".strip_tags($normalized). " (".$file." on line ".$line.")" ); - error(body:$message, backtrace:$e->getTrace()); + error( + body:$message, + backtrace:$e->getTrace() + ); } /** @@ -75,7 +97,12 @@ * $backtrace - The trace of the error. * $code - Numeric HTTP status code to set. */ - function error($title = "", $body = "", $backtrace = array(), $code = 500)/*: never*/{ + function error( + $title = "", + $body = "", + $backtrace = array(), + $code = 500 + ): never { # Discard any additional output buffers. while (OB_BASE_LEVEL < ob_get_level()) ob_end_clean(); @@ -179,16 +206,39 @@ fallback($body, __("An unspecified error has occurred.")); fallback($backtrace, array()); + $allowed_tags = array( + "abbr", "address", + "b", "blockquote", "br", + "cite", "code", + "data", "del", "dfn", + "em", + "h1", "h2", "h3", "h4", "h5", "h6", "hr", + "i", "ins", + "kbd", + "li", + "mark", + "ol", + "p", "pre", + "small", "strong", "sub", "sup", + "time", + "ul" + ); + + # Make title and body safe. + $title = strip_tags($title, $allowed_tags); + $body = strip_tags($body, $allowed_tags); + # Redact and escape the backtrace for display. foreach ($backtrace as $index => &$trace) { - if (!isset($trace["file"]) or !isset($trace["line"])) + if (!isset($trace["file"]) or !isset($trace["line"])) { unset($backtrace[$index]); - else + } else { $trace["file"] = fix( str_replace(MAIN_DIR.DIR, "", $trace["file"]), false, true ); + } } #--------------------------------------------- @@ -264,14 +314,44 @@ } :root { color-scheme: light dark; + --chyrp-pure-white: #ffffff; + --chyrp-pure-black: #000000; + --chyrp-inky-black: #1f1f23; + --chyrp-summer-grey: #fbfbfb; + --chyrp-english-grey: #efefef; + --chyrp-welsh-grey: #dfdfdf; + --chyrp-irish-grey: #cfcfcf; + --chyrp-scottish-grey: #afafaf; + --chyrp-winter-grey: #656565; + --chyrp-strong-yellow: #ffdd00; + --chyrp-strong-orange: #ff7f00; + --chyrp-strong-red: #c11600; + --chyrp-strong-green: #108600; + --chyrp-strong-blue: #1e57ba; + --chyrp-strong-purple: #ba1eba; + --chyrp-light-yellow: #fffde6; + --chyrp-light-red: #faebe4; + --chyrp-light-green: #ebfae4; + --chyrp-light-blue: #f2fbff; + --chyrp-light-purple: #fae4fa; + --chyrp-medium-yellow: #fffbcc; + --chyrp-medium-red: #fcddcf; + --chyrp-medium-green: #daf1d0; + --chyrp-medium-blue: #e1f2fa; + --chyrp-medium-purple: #f6d5f6; + --chyrp-border-yellow: #e5d7a1; + --chyrp-border-red: #d6bdb5; + --chyrp-border-green: #bdd6b5; + --chyrp-border-blue: #b8cdd9; + --chyrp-border-purple: #d6b5d6; } *::selection { - color: #ffffff; - background-color: #ff7f00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } html, body, div, dl, dt, dd, ul, ol, li, p, h1, h2, h3, h4, h5, h6, img, pre, code, - form, fieldset, input, select, textarea, + form, fieldset, input, select, svg, textarea, table, tbody, tr, th, td, legend, caption, blockquote, aside, figure, figcaption { margin: 0em; @@ -285,9 +365,9 @@ font-size: 1rem; font-family: "Open Sans webfont", sans-serif; line-height: 1.5; - color: #1f1f23; + color: var(--chyrp-inky-black); tab-size: 4; - background: #efefef; + background: var(--chyrp-english-grey); margin: 2rem; } h1 { @@ -306,7 +386,7 @@ font-size: 1em; font-weight: 600; margin: 1rem 0rem; - border-bottom: 1px solid #cfcfcf; + border-bottom: 1px solid var(--chyrp-irish-grey); } p { width: fit-content; @@ -315,7 +395,7 @@ pre { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; + background-color: var(--chyrp-english-grey); margin: 1rem 0rem; padding: 1rem; overflow-x: auto; @@ -324,9 +404,9 @@ code { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; - padding: 0px 2px; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + padding: 2px 4px 0px 4px; + border: 1px solid var(--chyrp-irish-grey); vertical-align: bottom; white-space: break-spaces; } @@ -340,7 +420,7 @@ strong { font: inherit; font-weight: bold; - color: #c11600; + color: var(--chyrp-strong-red); } em, dfn, cite, var { font: inherit; @@ -358,18 +438,18 @@ } a:link, a:visited { - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: underline; text-underline-offset: 0.125em; } a:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 0px; } a:hover, a:focus, a:active { - color: #1e57ba; + color: var(--chyrp-strong-blue); text-decoration: underline; text-underline-offset: 0.125em; } @@ -381,12 +461,12 @@ font: inherit; font-size: 1.25em; text-align: center; - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: none; margin: 1rem 0rem; padding: 0.5rem 1rem; - background-color: #f2fbff; - border: 2px solid #b8cdd9; + background-color: var(--chyrp-light-blue); + border: 2px solid var(--chyrp-border-blue); border-radius: 0.25em; cursor: pointer; } @@ -399,25 +479,25 @@ button:focus, a.big:active, button:active { - border-color: #1e57ba; + border-color: var(--chyrp-strong-blue); outline: none; } hr { border: none; clear: both; - border-top: 1px solid #cfcfcf; + border-top: 1px solid var(--chyrp-irish-grey); margin: 2rem 0rem; } aside { margin-bottom: 1rem; - padding: 0.5rem 1rem; - border: 1px solid #e5d7a1; + padding: 0.5rem; + border: 1px solid var(--chyrp-border-yellow); border-radius: 0.25em; - background-color: #fffecd; + background-color: var(--chyrp-light-yellow); } .window { width: 30rem; - background: #ffffff; + background: var(--chyrp-pure-white); padding: 2rem; margin: 0rem auto 0rem auto; border-radius: 2rem; @@ -430,25 +510,28 @@ } @media (prefers-color-scheme: dark) { body { - color: #ffffff; - background-color: #1f1f23; + color: var(--chyrp-pure-white); + background-color: var(--chyrp-inky-black); } .window { - color: #1f1f23; - background-color: #efefef; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-english-grey); + } + h3 { + border-color: var(--chyrp-scottish-grey); } hr { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } aside { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } pre { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } code { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } } diff --git a/includes/helpers.php b/includes/helpers.php index a9ef33c..02f3ea3 100644 --- a/includes/helpers.php +++ b/includes/helpers.php @@ -15,7 +15,9 @@ * Parameters: * $secure - Send the cookie only over HTTPS? */ - function session($secure = null): void { + function session( + $secure = null + ): void { if (session_status() == PHP_SESSION_ACTIVE) { trigger_error( __("Session cannot be started more than once."), @@ -98,7 +100,10 @@ * $url - The absolute or relative URL to redirect to. * $code - Numeric HTTP status code to set (optional). */ - function redirect($url, $code = null)/*: never*/{ + function redirect( + $url, + $code = null + ): never { if (!substr_count($url, "://")) $url = url($url); @@ -131,7 +136,10 @@ * $title - The title for the error dialog (optional). * $body - The message for the error dialog (optional). */ - function show_403($title = "", $body = "")/*: never*/{ + function show_403( + $title = "", + $body = "" + ): never { $title = oneof($title, __("Forbidden")); $body = oneof($body, __("You do not have permission to access this resource.")); @@ -155,7 +163,10 @@ * $title - The title for the error dialog (optional). * $body - The message for the error dialog (optional). */ - function show_404($title = "", $body = "")/*: never*/{ + function show_404( + $title = "", + $body = "" + ): never { $title = oneof($title, __("Not Found")); $body = oneof($body, __("The requested resource was not found.")); @@ -175,7 +186,10 @@ * Function: url * Mask for Route::url(). */ - function url($url, $controller = null): string { + function url( + $url, + $controller = null + ): string { if (!class_exists("Route")) return $url; @@ -199,140 +213,122 @@ /** * Function: htaccess_conf - * Creates the .htaccess file for Chyrp Lite or overwrites an existing file. + * Creates the Apache rewrites for Chyrp Lite. * * Parameters: - * $url_path - The URL path to MAIN_DIR for the RewriteBase directive. + * $url_path - The URL path to MAIN_DIR. * * Returns: - * True if no action was needed, bytes written on success, false on failure. + * The rewrite rules, or false on failure. */ - function htaccess_conf($url_path = null): int|bool { + function htaccess_conf( + $url_path = null + ): string|false { $url_path = oneof( $url_path, parse_url(Config::current()->chyrp_url, PHP_URL_PATH), "/" ); - $filepath = MAIN_DIR.DIR.".htaccess"; - $template = INCLUDES_DIR.DIR."htaccess.conf"; + $security = "\n"; + $template = INCLUDES_DIR.DIR."htaccess.conf.php"; if (!is_file($template) or !is_readable($template)) return false; + $contents = str_replace( + $security, + "", + file_get_contents($template) + ); + $htaccess = preg_replace( '~%\\{CHYRP_PATH\\}/?~', ltrim($url_path."/", "/"), - file_get_contents($template) + $contents ); - if (!file_exists($filepath)) - return @file_put_contents($filepath, $htaccess); - - if (!is_file($filepath) or !is_readable($filepath)) - return false; - - if ( - !preg_match( - "~".preg_quote($htaccess, "~")."~", - file_get_contents($filepath) - ) - ) - return @file_put_contents($filepath, $htaccess); - - return true; + return $htaccess; } /** * Function: caddyfile_conf - * Creates the caddyfile for Chyrp Lite or overwrites an existing file. + * Creates the Caddy rewrites for Chyrp Lite. * * Parameters: - * $url_path - The URL path to MAIN_DIR for the rewrite directive. + * $url_path - The URL path to MAIN_DIR. * * Returns: - * True if no action was needed, bytes written on success, false on failure. + * The rewrite rules, or false on failure. */ - function caddyfile_conf($url_path = null): int|bool { + function caddyfile_conf( + $url_path = null + ): string|false { $url_path = oneof( $url_path, parse_url(Config::current()->chyrp_url, PHP_URL_PATH), "/" ); - $filepath = MAIN_DIR.DIR."caddyfile"; - $template = INCLUDES_DIR.DIR."caddyfile.conf"; + $security = "\n"; + $template = INCLUDES_DIR.DIR."caddyfile.conf.php"; if (!is_file($template) or !is_readable($template)) return false; + $contents = str_replace( + $security, + "", + file_get_contents($template) + ); + $caddyfile = preg_replace( '~\\{chyrp_path\\}/?~', ltrim($url_path."/", "/"), - file_get_contents($template) + $contents ); - if (!file_exists($filepath)) - return @file_put_contents($filepath, $caddyfile); - - if (!is_file($filepath) or !is_readable($filepath)) - return false; - - if ( - !preg_match( - "~".preg_quote($caddyfile, "~")."~", - file_get_contents($filepath) - ) - ) - return @file_put_contents($filepath, $caddyfile); - - return true; + return $caddyfile; } /** * Function: nginx_conf - * Creates the nginx configuration for Chyrp Lite or overwrites an existing file. + * Creates the nginx rewrites for Chyrp Lite. * * Parameters: - * $url_path - The URL path to MAIN_DIR for the location directive. + * $url_path - The URL path to MAIN_DIR. * * Returns: - * True if no action was needed, bytes written on success, false on failure. + * The rewrite rules, or false on failure. */ - function nginx_conf($url_path = null): int|bool { + function nginx_conf( + $url_path = null + ): string|false { $url_path = oneof( $url_path, parse_url(Config::current()->chyrp_url, PHP_URL_PATH), "/" ); - $filepath = MAIN_DIR.DIR."include.conf"; - $template = INCLUDES_DIR.DIR."nginx.conf"; + $security = "\n"; + $template = INCLUDES_DIR.DIR."nginx.conf.php"; if (!is_file($template) or !is_readable($template)) return false; - $caddyfile = preg_replace( - '~\\$chyrp_path/?~', - ltrim($url_path."/", "/"), + $contents = str_replace( + $security, + "", file_get_contents($template) ); - if (!file_exists($filepath)) - return @file_put_contents($filepath, $caddyfile); + $include = preg_replace( + '~\\$chyrp_path/?~', + ltrim($url_path."/", "/"), + $contents + ); - if (!is_file($filepath) or !is_readable($filepath)) - return false; - - if ( - !preg_match( - "~".preg_quote($caddyfile, "~")."~", - file_get_contents($filepath) - ) - ) - return @file_put_contents($filepath, $caddyfile); - - return true; + return $include; } #--------------------------------------------- @@ -361,7 +357,7 @@ if ($dirname == "en_US") continue; - if (preg_match("/^[a-z]{2}(_|-)[a-z]{2}$/i", $dirname)) + if (preg_match("/^[a-z]{2,3}(_|-|$)/i", $dirname)) $locales[] = array( "code" => $dirname, "name" => lang_code($dirname) @@ -379,7 +375,9 @@ * Parameters: * $locale - The locale name, e.g. @en_US@, @uk_UA@, @fr_FR@ */ - function set_locale($locale = "en_US"): void { + function set_locale( + $locale = "en_US" + ): void { $list = array( $locale.".UTF-8", $locale.".utf-8", @@ -434,7 +432,10 @@ * $domain - The name of this translation domain. * $locale - The path to the locale directory. */ - function load_translator($domain, $locale): void { + function load_translator( + $domain, + $locale + ): void { if (USE_GETTEXT_SHIM and class_exists("Translation")) { Translation::current()->load($domain, $locale); return; @@ -457,7 +458,9 @@ * Returns: * A localised display name, e.g. "English (United States)". */ - function lang_code($code): string { + function lang_code( + $code + ): string { return class_exists("Locale") ? Locale::getDisplayName($code, $code) : $code ; @@ -473,10 +476,12 @@ * Returns: * The primary subtag for this code, e.g. "en" from "en_US". */ - function lang_base($code): string { + function lang_base( + $code + ): string { $code = str_replace("_", "-", $code); $tags = explode("-", $code); - return ($tags === false) ? "en" : $tags[0] ; + return $tags[0]; } /** @@ -489,7 +494,9 @@ * Returns: * Either the string "ltr" or "rtl". */ - function text_direction($code): string { + function text_direction( + $code + ): string { $base = lang_base($code); switch ($base) { @@ -515,7 +522,10 @@ * Returns: * The translated string or the original. */ - function __($text, $domain = "chyrp"): string { + function __( + $text, + $domain = "chyrp" + ): string { if (USE_GETTEXT_SHIM) return Translation::current()->text( $domain, @@ -544,7 +554,12 @@ * Returns: * The translated string or the original. */ - function _p($single, $plural, $number, $domain = "chyrp"): string { + function _p( + $single, + $plural, + $number, + $domain = "chyrp" + ): string { $int = (int) $number; if (USE_GETTEXT_SHIM) @@ -580,7 +595,11 @@ * Returns: * The translated string or the original. */ - function _f($string, $args = array(), $domain = "chyrp"): string { + function _f( + $string, + $args = array(), + $domain = "chyrp" + ): string { $args = (array) $args; array_unshift($args, __($string, $domain)); return call_user_func_array("sprintf", $args); @@ -597,7 +616,10 @@ * Returns: * An internationalized time/date string with the supplied formatting. */ - function _w($formatting, $when): string|false { + function _w( + $formatting, + $when + ): string|false { static $locale; $time = is_numeric($when) ? @@ -637,7 +659,10 @@ * Returns: * A time/date string with the supplied formatting. */ - function when($formatting, $when): string|false { + function when( + $formatting, + $when + ): string|false { $time = is_numeric($when) ? $when : strtotime($when) ; @@ -655,7 +680,9 @@ * Returns: * A standard datetime string. */ - function datetime($when = null): string|false { + function datetime( + $when = null + ): string|false { fallback($when, time()); $time = is_numeric($when) ? @@ -669,7 +696,9 @@ * Function: now * Alias to strtotime, for prettiness like now("+1 day"). */ - function now($when): string|false { + function now( + $when + ): string|false { return strtotime($when); } @@ -684,7 +713,9 @@ * https://unicode-org.github.io/icu/userguide/format_parse/datetime/ * https://www.php.net/manual/en/datetime.format.php */ - function convert_datetime($formatting): string { + function convert_datetime( + $formatting + ): string { return strtr($formatting, array( "A" => "'A'", "a" => "a", "B" => "'B'", "b" => "'b'", @@ -746,7 +777,9 @@ * Parameters: * $timezone - The timezone to set. */ - function set_timezone($timezone = "Atlantic/Reykjavik"): bool { + function set_timezone( + $timezone = "Atlantic/Reykjavik" + ): bool { $result = date_default_timezone_set($timezone); if (DEBUG) @@ -782,7 +815,9 @@ * candidate values. The variable will be set to the value of the first * non-empty argument, or the last, or null if no arguments are supplied. */ - function fallback(&$variable): mixed { + function fallback( + &$variable + ): mixed { if (is_bool($variable)) return $variable; @@ -872,28 +907,6 @@ return $last; } - /** - * Function: derezz - * Strips tags and junk from the supplied string and tests it for emptiness. - * - * Parameters: - * &$string - The string, supplied by reference. - * - * Returns: - * Whether or not the stripped string is empty. - * - * Notes: - * Useful for data that will be stripped later on by its model - * but which needs to be tested for uniqueness/emptiness first. - * - * See Also: - * - */ - function derezz(&$string): bool { - $string = str_replace("\x00..\x1f", "", strip_tags($string)); - return ($string == ""); - } - /** * Function: token * Salt and hash a unique token using the supplied data. @@ -904,7 +917,9 @@ * Returns: * A unique token salted with the site's secure hashkey. */ - function token($items): string { + function token( + $items + ): string { return sha1( implode((array) $items). Config::current()->secure_hashkey @@ -924,7 +939,12 @@ * Returns: * The integer value of the check result. */ - function crc24($str, $polynomial = 0x864cfb, $ini = 0xb704ce, $xor = 0): int { + function crc24( + $str, + $polynomial = 0x864cfb, + $ini = 0xb704ce, + $xor = 0 + ): int { $crc = $ini; for ($i = 0; $i < strlen($str); $i++) { @@ -952,7 +972,9 @@ * Returns: * A string of the requested length. */ - function slug($length): string { + function slug( + $length + ): string { return strtolower(random($length)); } @@ -969,7 +991,9 @@ * Notes: * Uses a cryptographically secure pseudo-random method. */ - function random($length): string { + function random( + $length + ): string { $input = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $range = strlen($input) - 1; $chars = ""; @@ -990,7 +1014,9 @@ * Returns: * A byte value or the input if decoding failed. */ - function shorthand_bytes($value): mixed { + function shorthand_bytes( + $value + ): mixed { switch (substr($value, -1)) { case "K": case "k": return (int) $value * 1024; @@ -1053,7 +1079,9 @@ * Returns: * A formatted number with the requested $precision. */ - function timer_stop($precision = 3): string { + function timer_stop( + $precision = 3 + ): string { $elapsed = microtime(true) - timer_start(); return number_format($elapsed, $precision, ".", ""); } @@ -1069,7 +1097,10 @@ * Returns: * Whether or not the match succeeded. */ - function match_any($try, $haystack): bool { + function match_any( + $try, + $haystack + ): bool { foreach ((array) $try as $needle) { if (preg_match($needle, $haystack)) return true; @@ -1085,7 +1116,9 @@ * Parameters: * $class - The name of the class to load. */ - function autoload($class): void { + function autoload( + $class + ): void { $filepath = str_replace( array("_", "\\", "\0"), array(DIR, DIR, ""), @@ -1133,7 +1166,11 @@ * of "WHERE" parameters, and "ORDER BY" clause for the results. * Non-keyword text will be parameterized as array[1][":query"]. */ - function keywords($query, $plain, $table = null): array { + function keywords( + $query, + $plain, + $table = null + ): array { $trimmed = trim($query); if (empty($trimmed)) @@ -1320,7 +1357,10 @@ * The supplied word with a trailing "s" added, * or the correct non-normative pluralization. */ - function pluralize($string, $number = null): string { + function pluralize( + $string, + $number = null + ): string { $uncountable = array( "audio", "equipment", "fish", "information", "money", "moose", "news", "rice", "series", "sheep", "species" @@ -1382,7 +1422,10 @@ * The supplied word with trailing "s" removed, * or the correct non-normative singularization. */ - function depluralize($string, $number = null): string { + function depluralize( + $string, + $number = null + ): string { $uncountable = array("news", "series", "species"); if (isset($number) and $number != 1) @@ -1436,7 +1479,9 @@ * Returns: * The normalized string. */ - function normalize($string): string { + function normalize( + $string + ): string { return trim(preg_replace("/[\s\n\r\t]+/", " ", $string)); } @@ -1454,7 +1499,10 @@ * See Also: * */ - function camelize($string, $keep_spaces = false): string { + function camelize( + $string, + $keep_spaces = false + ): string { $lowercase = strtolower($string); $deunderscore = str_replace("_", " ", $lowercase); $dehyphen = str_replace("-", " ", $deunderscore); @@ -1479,7 +1527,9 @@ * See Also: * */ - function decamelize($string): string { + function decamelize( + $string + ): string { return strtolower( preg_replace("/([a-z])([A-Z])/", "\\1_\\2", $string) ); @@ -1494,36 +1544,42 @@ * $length - Truncate the string to this number of characters. * $ellipsis - A string to place at the truncation point. * $exact - Split words to return the exact length requested? - * $encoding - The character encoding of the string and ellipsis. * * Returns: - * A truncated string with ellipsis appended. + * A truncated string, with ellipsis appended, of or less. */ function truncate( $text, $length = 100, $ellipsis = null, - $exact = false, - $encoding = "UTF-8" + $exact = false ): string { - if (mb_strlen($text, $encoding) <= $length) + if ($length < 1) + return ""; + + if (mb_strlen($text, "UTF-8") <= $length) return $text; if (!isset($ellipsis)) - $ellipsis = mb_chr(0x2026, $encoding); + $ellipsis = mb_chr(0x2026, "UTF-8"); - $breakpoint = $length - mb_strlen($ellipsis, $encoding); - $truncation = mb_substr($text, 0, $breakpoint, $encoding); - $remainder = mb_substr($text, $breakpoint, null, $encoding); + $end = $length - mb_strlen($ellipsis, "UTF-8"); - if (!$exact and !preg_match("/^\s/", $remainder)) - $truncation = preg_replace( - "/(.+)\s.*/s", + if ($end < 1) + return ""; + + if (!$exact) { + $text = preg_replace( + "/^(.{1,$end})\b(?<=[\p{L}\p{N}]).+$/su", "$1", - $truncation + $text ); + } - return $truncation.$ellipsis; + # Hard trim if exact length was requested + # or the approximate regex couldn't match. + $text = mb_substr($text, 0, $end, "UTF-8"); + return $text.$ellipsis; } /** @@ -1542,7 +1598,10 @@ * https://github.github.com/gfm/ * https://chyrplite.net/wiki/Chyrp-Flavoured-Markdown.html */ - function markdown($text, $context = null): string { + function markdown( + $text, + $context = null + ): string { static $parser; if (!isset($parser)) { @@ -1555,6 +1614,9 @@ $parser->enableNewlines = false; $parser->renderCheckboxInputs = false; $parser->disallowedRawHTML = false; + $parser->renderLazyImages = true; + $parser->renderLazyMedia = false; + $parser->enableImageDimensions = true; } if ($context instanceof Model) { @@ -1580,7 +1642,9 @@ * See Also: * http://www.unicode.org/charts/PDF/U1F600.pdf */ - function emote($text): string { + function emote( + $text + ): string { $emoji = array( "o:-)" => "😇", ">:-)" => "😈", @@ -1633,7 +1697,11 @@ * Returns: * A sanitized version of the string. */ - function fix($string, $quotes = false, $double = false): string { + function fix( + $string, + $quotes = false, + $double = false + ): string { $quotes = ($quotes) ? ENT_QUOTES : ENT_NOQUOTES ; @@ -1657,7 +1725,10 @@ * Returns: * An unsanitary version of the string. */ - function unfix($string, $all = false): string { + function unfix( + $string, + $all = false + ): string { return ($all) ? html_entity_decode( (string) $string, @@ -1680,7 +1751,7 @@ * $string - The string to sanitize - must be ASCII or UTF-8! * $lowercase - Force the string to lowercase? * $strict - Remove all characters except "-" and alphanumerics? - * $truncate - Number of characters to truncate to (0 to disable). + * $truncate - Number of bytes to truncate to (0 to disable). * * Returns: * A sanitized version of the string. @@ -1769,12 +1840,14 @@ # E.g. echo implode(",", unpack("C*", "€")); ); - # Strip tags, remove punctuation and HTML entities. - $clean = str_replace( - $strip, - "", - strip_tags($string) - ); + # Strip tags. + $clean = strip_tags($string); + + # Remove punctuation and HTML entities. + $clean = str_replace($strip, "", $clean); + + # Remove unprintable control characters. + $clean = preg_replace("/[\\x00-\\x1f]/u", "", $clean); # Trim. $clean = trim($clean); @@ -1784,8 +1857,7 @@ if ($strict) { # Substitute UTF-8 multi-byte encodings. - if (preg_match("/[\x80-\xff]/", $clean)) - $clean = strtr($clean, $utf8mb); + $clean = strtr($clean, $utf8mb); # Remove non-ASCII characters that remain. $clean = preg_replace("/[^a-zA-Z0-9\\-]/", "", $clean); @@ -1795,47 +1867,66 @@ $clean = mb_strtolower($clean, "UTF-8"); if ($truncate) - $clean = mb_substr($clean, 0, $truncate, "UTF-8"); + $clean = mb_strcut($clean, 0, $truncate, "UTF-8"); return $clean; } + /** + * Function: sanitize_db_string + * Purifies and trims a string for a database column. + * + * Parameters: + * $string - The string. + * $length - The length limit in bytes (optional). + * + * Returns: + * A purified and trimmed version of the string. + * + * See Also: + * + */ + function sanitize_db_string( + $string, + $length = null + ): string { + $string = preg_replace("/[\\x00-\\x1f]/u", "", $string); + $string = strip_tags($string); + $string = mb_strcut($string, 0, $length, "UTF-8"); + return $string; + } + /** * Function: sanitize_html - * Sanitizes HTML to disable scripts and obnoxious attributes. + * Sanitizes HTML to disable styles, scripts, and most attributes. * * Parameters: * $string - String containing HTML to sanitize. * * Returns: - * A version of the string containing only valid tags - * and whitelisted attributes essential to tag function. + * A version of the string containing only valid HTML tags + * and whitelisted attributes essential to tag functionality. */ - function sanitize_html($text): string { + function sanitize_html( + $text + ): string { # Strip invalid tags. $text = preg_replace( - "/<([^a-z\/!]|\/(?![a-z])|!(?!--))[^>]*>/i", - " ", + "/<([^a-z\/!]|\/(?![a-z])|!(?!--))/i", + "<$1", $text ); - # Strip style tags. + # Strip script and style tags. $text = preg_replace( - "/<\/?style[^>]*>/i", - " ", - $text - ); - - # Strip script tags. - $text = preg_replace( - "/<\/?script[^>]*>/i", - " ", + "/<(script|style)(\s|>|\/>)/i", + "<$1$2", $text ); # Strip attributes from each tag, unless essential to its function. return preg_replace_callback( - "/<([a-z][a-z0-9]*)[^>]*?( ?\/)?>/i", + "/<([a-z][^\s>]*)[^>]*?(\s?\/)?>/i", function ($element) { fallback($element[2], ""); @@ -1843,7 +1934,7 @@ $whitelist = ""; preg_match_all( - "/ ([a-z]+)=(\"[^\"]+\"|\'[^\']+\')/i", + "/\s([^\s=\/\"']+)\s*=\s*(\"[^\"]*\"|\'[^\']*\')/i", $element[0], $attributes, PREG_SET_ORDER @@ -1851,50 +1942,136 @@ foreach ($attributes as $attribute) { $label = strtolower($attribute[1]); - $content = trim($attribute[2], "\"'"); + $content = substr($attribute[2], 1, -1); - switch ($label) { - case "src": - $array = array( - "audio", - "iframe", - "img", - "source", - "track", - "video" - ); + switch ($name) { + case "a": + switch ($label) { + case "href": + if (is_url($content)) + $whitelist.= $attribute[0]; - if (in_array($name, $array) and is_url($content)) - $whitelist.= $attribute[0]; + break; + } break; - case "href": - $array = array( - "a", - "area" - ); + case "audio": + case "video": + switch ($label) { + case "controls": + $whitelist.= $attribute[0]; - if (in_array($name, $array) and is_url($content)) - $whitelist.= $attribute[0]; + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } break; - case "alt": - $array = array( - "area", - "img" - ); + case "iframe": + switch ($label) { + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; - if (in_array($name, $array)) - $whitelist.= $attribute[0]; + break; + } break; - case "dir": - case "lang": - $whitelist.= $attribute[0]; + case "img": + switch ($label) { + case "alt": + $whitelist.= $attribute[0]; + + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } + break; + + case "ol": + switch ($label) { + case "reversed": + case "type": + $whitelist.= $attribute[0]; + + break; + + case "start": + if (is_numeric($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + case "source": + switch ($label) { + case "type": + $whitelist.= $attribute[0]; + + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + case "track": + switch ($label) { + case "kind": + case "label": + case "srclang": + $whitelist.= $attribute[0]; + + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + case "td": + case "th": + switch ($label) { + case "colspan": + case "rowspan": + if (is_numeric($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + default: + switch ($label) { + case "dir": + case "lang": + $whitelist.= $attribute[0]; + + break; + } } } @@ -1910,7 +2087,7 @@ /** * Function: get_remote - * Retrieve the contents of a URL. + * Retrieves the contents of a URL. * * Parameters: * $url - The URL of the resource to be retrieved. @@ -1951,10 +2128,10 @@ return false; $opts = array( - CURLOPT_CAINFO => INCLUDES_DIR.DIR."cacert.pem", + CURLOPT_CAINFO => INCLUDES_DIR.DIR.$config->cacert_pem, CURLOPT_RETURNTRANSFER => true, CURLOPT_VERBOSE => false, - CURLOPT_FAILONERROR => false, + CURLOPT_FAILONERROR => true, CURLOPT_HEADER => (bool) $headers, CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => (int) $redirects, @@ -2003,7 +2180,11 @@ * $post - The post this string belongs to. * $limit - Execution time limit in seconds (optional). */ - function webmention_send($string, $post, $limit = 30): void { + function webmention_send( + $string, + $post, + $limit = 30 + ): void { foreach (grab_urls($string) as $url) { # Have we exceeded the time limit? if (timer_stop() > $limit) @@ -2041,7 +2222,10 @@ * $source - The sender's URL. * $target - The URL of our post. */ - function webmention_receive($source, $target): void { + function webmention_receive( + $source, + $target + ): void { $trigger = Trigger::current(); # No need to continue without a responder for the Webmention trigger. @@ -2125,7 +2309,10 @@ * Returns: * The Webmention endpoint URL, or false on failure. */ - function webmention_discover($url, $redirects = 3): string|false { + function webmention_discover( + $url, + $redirects = 3 + ): string|false { $response = get_remote( url:$url, redirects:$redirects, @@ -2210,7 +2397,9 @@ * Returns: * An array of all URLs found in the string. */ - function grab_urls($string): array { + function grab_urls( + $string + ): array { $urls = array(); $regx = "/]* href=(\"[^\"]+\"|\'[^\']+\')[^>]*>.+?<\/a>/i"; @@ -2237,7 +2426,10 @@ * Notes: * Does not attempt to resolve dot segments in the path. */ - function merge_urls($base, $rel) { + function merge_urls( + $base, + $rel + ) { extract(parse_url(add_scheme($base)), EXTR_SKIP); fallback($path, "/"); fallback($scheme, "http"); @@ -2274,7 +2466,9 @@ * Function: load_info * Loads an extension's info.php file and returns an array of attributes. */ - function load_info($filepath): array { + function load_info( + $filepath + ): array { if (is_file($filepath) and is_readable($filepath)) $info = include $filepath; @@ -2400,7 +2594,9 @@ * Returns: * Whether or not the supplied module is enabled. */ - function module_enabled($name): bool { + function module_enabled( + $name + ): bool { return ( !empty(Modules::$instances[$name]) and empty(Modules::$instances[$name]->cancelled) @@ -2417,7 +2613,9 @@ * Returns: * Whether or not the supplied feather is enabled. */ - function feather_enabled($name): bool { + function feather_enabled( + $name + ): bool { return ( !empty(Feathers::$instances[$name]) and empty(Feathers::$instances[$name]->cancelled) @@ -2435,7 +2633,10 @@ * Notes: * A module can cancel itself in its __init() method. */ - function cancel_module($target, $reason = ""): void { + function cancel_module( + $target, + $reason = "" + ): void { $message = empty($reason) ? _f("Execution of %s has been cancelled.", camelize($target)) : $reason ; @@ -2458,7 +2659,10 @@ * Notes: * A feather can cancel itself in its __init() method. */ - function cancel_feather($target, $reason = ""): void { + function cancel_feather( + $target, + $reason = "" + ): void { $message = empty($reason) ? _f("Execution of %s has been cancelled.", camelize($target)) : $reason ; @@ -2485,7 +2689,10 @@ * Returns: * The filename of the upload relative to the uploads directory. */ - function upload($file, $filter = null): string { + function upload( + $file, + $filter = null + ): string { $uploads_path = MAIN_DIR.Config::current()->uploads_path; $filename = upload_filename($file['name'], $filter); @@ -2535,7 +2742,11 @@ * Returns: * The filename of the copied file, or false on failure. */ - function upload_from_url($url, $redirects = 3, $timeout = 10): string|false { + function upload_from_url( + $url, + $redirects = 3, + $timeout = 10 + ): string|false { if (!preg_match("~[^ /\?]+(?=($|\?))~", $url, $match)) return false; @@ -2583,7 +2794,10 @@ * Returns: * The supplied filename prepended with URL or filesystem path. */ - function uploaded($filename, $url = true): string { + function uploaded( + $filename, + $url = true + ): string { $config = Config::current(); return ($url) ? @@ -2683,7 +2897,9 @@ * Notes: * $_POST and $_FILES are empty if post_max_size directive is exceeded. */ - function upload_tester($file): bool { + function upload_tester( + $file + ): bool { $success = false; $results = array(); $maximum = Config::current()->uploads_limit; @@ -2772,7 +2988,10 @@ * Returns: * A sanitized unique filename, or false on failure. */ - function upload_filename($filename, $filter = array()): string|false { + function upload_filename( + $filename, + $filter = array() + ): string|false { if (empty($filter)) $filter = upload_filter_whitelist(); @@ -2839,7 +3058,9 @@ * Returns: * Whether or not the file was deleted successfully. */ - function delete_upload($filename): bool { + function delete_upload( + $filename + ): bool { $filename = str_replace(array(DIR, "/"), "", $filename); if ($filename == "") @@ -2869,7 +3090,9 @@ * Returns: * A numeric score for the strength of the password. */ - function password_strength($password = ""): int { + function password_strength( + $password = "" + ): int { $score = 0; if (empty($password)) @@ -2911,7 +3134,9 @@ * See Also: * */ - function is_url($string): bool { + function is_url( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -2948,7 +3173,10 @@ * See Also: * */ - function add_scheme($url, $scheme = null): string { + function add_scheme( + $url, + $scheme = null + ): string { preg_match('~^([a-z]+://)?(.+)~i', $url, $match); $match[1] = isset($scheme) ? @@ -2971,7 +3199,9 @@ * Returns: * Whether or not the string matches the criteria. */ - function is_email($string): bool { + function is_email( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -3004,7 +3234,9 @@ * Returns: * Whether or not the string matches the criteria. */ - function is_unsafe_ip($string): bool { + function is_unsafe_ip( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -3036,7 +3268,9 @@ * Returns: * Whether or not the string matches the criteria. */ - function is_datetime_zero($string): bool { + function is_datetime_zero( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -3102,7 +3336,9 @@ * Strings are escaped with backslashes, * booleans expanded to "true" or "false". */ - function esce($variable): void { + function esce( + $variable + ): void { if ( !is_scalar($variable) and !$variable instanceof Stringable @@ -3112,10 +3348,91 @@ if (is_bool($variable)) { echo ($variable) ? "true" : "false" ; } else { - echo addslashes((string) $variable); + echo addslashes( + str_replace( + array("\n", "\r"), + "", + (string) $variable + ) + ); } } + /** + * Function: icon_img + * Returns an img tag for the requested icon resource. + * + * Parameters: + * $filename - The icon filename. + * $alt_text - The alternative text for the image. + * $class - The CSS class for the image. + */ + function icon_img( + $filename, + $alt_text = "", + $class = null + ): string { + $url = Config::current()->chyrp_url. + "/admin/images/icons/".$filename; + + $img = ''.fix($alt_text, true);
+
+        if (isset($class) and $class !== false)
+            $img.= ''; + + return $img; + } + + /** + * Function: icon_svg + * Returns an SVG tag for the requested icon resource. + * + * Parameters: + * $filename - The icon filename. + * $label - The ARIA label for the SVG. + * $class - The CSS class for the SVG. + */ + function icon_svg( + $filename, + $label = null, + $class = null + ): string { + $filename = str_replace(array(DIR, "/"), "", $filename); + $id = serialize(array($filename, $label, $class)); + $path = MAIN_DIR.DIR."admin".DIR."images".DIR."icons"; + $attrs = ""; + + static $cache = array(); + + if (isset($cache[$id])) + return $cache[$id]; + + $svg = @file_get_contents($path.DIR.$filename); + + if ($svg === false) + return ""; + + if (isset($label) and $label !== false) { + $attrs.= 'aria-label="'.fix($label, true).'" '; + } else { + $attrs.= 'aria-hidden="true" '; + } + + if (isset($class) and $class !== false) + $attrs.= 'class="'.fix($class, true).'" '; + + $svg = str_replace( + ' $text, "data" => $data)); } @@ -3186,7 +3515,10 @@ * $contents - The bitstream to be delivered to the visitor. * $filename - The name to be applied to the content upon download. */ - function file_attachment($contents = "", $filename = "caconym"): void { + function file_attachment( + $contents = "", + $filename = "caconym" + ): void { $safename = addslashes($filename); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"".$safename."\""); @@ -3210,7 +3542,9 @@ * See Also: * https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT */ - function zip_archive($array): string { + function zip_archive( + $array + ): string { $file = ""; $cdir = ""; $eocd = ""; @@ -3328,7 +3662,9 @@ * Parameters: * $user - The user to receive the email. */ - function email_activate_account($user): bool { + function email_activate_account( + $user + ): bool { $config = Config::current(); $trigger = Trigger::current(); @@ -3366,7 +3702,9 @@ * Parameters: * $user - The user to receive the email. */ - function email_reset_password($user): bool { + function email_reset_password( + $user + ): bool { $config = Config::current(); $trigger = Trigger::current(); $issue = strval(time()); diff --git a/includes/htaccess.conf.php b/includes/htaccess.conf.php new file mode 100644 index 0000000..f5c3d65 --- /dev/null +++ b/includes/htaccess.conf.php @@ -0,0 +1,15 @@ + +# Template to enable clean URLs for the Apache web server. + + +RewriteEngine On +RewriteBase /%{CHYRP_PATH}/ +RewriteRule ^.+\.twig$ index.php [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_URI} ^/%{CHYRP_PATH}/admin/.+ +ReWriteRule ^.+$ /%{CHYRP_PATH}/admin/index.php [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^.+$ index.php [L] + diff --git a/includes/interface/CaptchaProvider.php b/includes/interface/CaptchaProvider.php index fa9107f..bd052f4 100644 --- a/includes/interface/CaptchaProvider.php +++ b/includes/interface/CaptchaProvider.php @@ -8,11 +8,13 @@ * Function: generateCaptcha * Returns the HTML form elements for the captcha challenge. */ - public static function generateCaptcha(): string; + public static function generateCaptcha( + ): string; /** * Function: checkCaptcha * Checks the response and returns true (success) or false (failure). */ - public static function checkCaptcha(): bool; + public static function checkCaptcha( + ): bool; } diff --git a/includes/interface/Controller.php b/includes/interface/Controller.php index 87a7568..ee70841 100644 --- a/includes/interface/Controller.php +++ b/includes/interface/Controller.php @@ -8,11 +8,15 @@ * Function: parse * Route constructor calls this to determine the action. */ - public function parse($route): ?string; + public function parse( + $route + ): ?string; /** * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool; + public function exempt( + $action + ): bool; } diff --git a/includes/interface/Feather.php b/includes/interface/Feather.php index 6dc7128..7f50293 100644 --- a/includes/interface/Feather.php +++ b/includes/interface/Feather.php @@ -11,30 +11,39 @@ * Returns: * The object created. */ - public function submit(): Post; + public function submit( + ): Post; /** * Function: update * Handles updating a post. */ - public function update($post): Post|false; + public function update( + $post + ): Post|false; /** * Function: title * Returns the appropriate source to be treated as a "title" of a post. - * If there is no immediate solution, you may use . + * If there is no immediate solution, you may use . */ - public function title($post): string; + public function title( + $post + ): string; /** * Function: excerpt * Returns the appropriate source, unmodified, to be used as an excerpt of a post. */ - public function excerpt($post): string; + public function excerpt( + $post + ): string; /** * Function: feed_content * Returns the appropriate content for a feed. */ - public function feed_content($post): string; + public function feed_content( + $post + ): string; } diff --git a/includes/interface/FeedGenerator.php b/includes/interface/FeedGenerator.php index d29c07d..3acc39f 100644 --- a/includes/interface/FeedGenerator.php +++ b/includes/interface/FeedGenerator.php @@ -14,7 +14,12 @@ * Function: open * Opens the feed. */ - public function open($title, $subtitle, $id, $updated): bool; + public function open( + $title, + $subtitle, + $id, + $updated + ): bool; /** * Function: entry @@ -36,35 +41,50 @@ * Function: category * Adds a category to an entry or feed. */ - public function category($term, $scheme, $label): bool; + public function category( + $term, + $scheme, + $label + ): bool; /** * Function: rights * Adds human-readable licensing information to an entry or feed. */ - public function rights($text): bool; + public function rights( + $text + ): bool; /** * Function: enclosure * Adds a link for a resource that is potentially large in size. */ - public function enclosure($link, $length, $type, $title): bool; + public function enclosure( + $link, + $length, + $type, + $title + ): bool; /** * Function: related * Adds a link for a resource related to an entry or feed. */ - public function related($link): bool; + public function related( + $link + ): bool; /** * Function: feed * Returns the generated feed. */ - public function feed(): string; + public function feed( + ): string; /** * Function: display * Displays the generated feed. */ - public function display(): bool; + public function display( + ): bool; } diff --git a/includes/lib/AtomFeed.php b/includes/lib/AtomFeed.php index f3b2b2a..cf20f6e 100644 --- a/includes/lib/AtomFeed.php +++ b/includes/lib/AtomFeed.php @@ -23,7 +23,8 @@ * Function: type * Returns the content type of the feed. */ - public static function type(): string { + public static function type( + ): string { return "application/atom+xml"; } @@ -315,7 +316,8 @@ * Function: feed * Returns the generated feed. */ - public function feed(): string { + public function feed( + ): string { $feed = $this->xml["feed"]; $items = $this->xml["items"]; @@ -330,10 +332,11 @@ } /** - * Function: output + * Function: display * Displays the generated feed. */ - public function display(): bool { + public function display( + ): bool { if (headers_sent()) return false; diff --git a/includes/lib/JSONFeed.php b/includes/lib/JSONFeed.php index 93dae59..e0b0579 100644 --- a/includes/lib/JSONFeed.php +++ b/includes/lib/JSONFeed.php @@ -23,7 +23,8 @@ * Function: type * Returns the content type of the feed. */ - public static function type(): string { + public static function type( + ): string { return "application/feed+json"; } @@ -147,7 +148,9 @@ * Function: rights * Not implemented in JSON Feed version 1. */ - public function rights($text): bool { + public function rights( + $text + ): bool { return false; } @@ -202,7 +205,9 @@ * Parameters: * $link - The external URL. */ - public function related($link): bool { + public function related( + $link + ): bool { if (!$this->open) return false; @@ -221,7 +226,8 @@ * Function: feed * Returns the generated feed. */ - public function feed(): string { + public function feed( + ): string { $encoded = json_set( $this->json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES @@ -231,10 +237,11 @@ } /** - * Function: output + * Function: display * Displays the generated feed. */ - public function display(): bool { + public function display( + ): bool { if (headers_sent()) return false; diff --git a/includes/lib/Leaf.php b/includes/lib/Leaf.php index f1ab722..476a012 100644 --- a/includes/lib/Leaf.php +++ b/includes/lib/Leaf.php @@ -20,13 +20,14 @@ new \Twig\TwigFunction("is_url", "is_url"), new \Twig\TwigFunction("is_email", "is_email"), new \Twig\TwigFunction("generate_captcha", "generate_captcha"), + new \Twig\TwigFunction("icon_img", "icon_img"), + new \Twig\TwigFunction("icon_svg", "icon_svg"), new \Twig\TwigFunction("javascripts", "javascripts"), # Custom functions: new \Twig\TwigFunction("paginate", "twig_function_paginate"), new \Twig\TwigFunction("posted", "twig_function_posted"), new \Twig\TwigFunction("mailto", "twig_function_mailto"), - new \Twig\TwigFunction("icon_img", "twig_function_icon_img"), new \Twig\TwigFunction("copyright_notice", "twig_function_copyright_notice"), new \Twig\TwigFunction("uploaded_search", "twig_function_uploaded_search"), new \Twig\TwigFunction("slug_pattern", "twig_function_slug_pattern"), @@ -92,7 +93,9 @@ * Parameters: * $name - The name of the missing Twig function. */ - function twig_callback_missing_function($name): \Twig\TwigFunction|false { + function twig_callback_missing_function( + $name + ): \Twig\TwigFunction|false { foreach (Modules::$instances as $module) { if (is_callable(array($module, "twig_function_".$name))) return new \Twig\TwigFunction( @@ -111,7 +114,9 @@ * Parameters: * $name - The name of the missing Twig filter. */ - function twig_callback_missing_filter($name): \Twig\TwigFilter|false { + function twig_callback_missing_filter( + $name + ): \Twig\TwigFilter|false { foreach (Modules::$instances as $module) { if (is_callable(array($module, "twig_filter_".$name))) return new \Twig\TwigFilter( @@ -175,7 +180,9 @@ * Parameters: * $email - The email address to obfuscate. */ - function twig_function_mailto($email): ?string { + function twig_function_mailto( + $email + ): ?string { if (!is_email($email)) return null; @@ -264,34 +271,6 @@ return $mailto.implode("", $chars); } - /** - * Function: twig_function_icon_img - * Returns a URL to the requested icon resource. - * - * Parameters: - * $filename - The icon filename. - * $alt_text - The alternative text for the image. - * $class - The CSS class for the link. - */ - function twig_function_icon_img( - $filename, - $alt_text = "", - $class = null - ): string { - $url = Config::current()->chyrp_url. - "/admin/images/icons/".$filename; - - $img = ''.fix($alt_text, true);
-
-        if (isset($class) and $class !== false)
-            $img.= ''; - - return $img; - } - /** * Function: twig_function_copyright_notice * Returns a copyright notice. @@ -354,9 +333,10 @@ /** * Function: twig_function_slug_pattern - * Returns a HTML @pattern@ attribute if strict slugs are enabled. + * Returns a HTML @pattern@ attribute according to SLUG_STRICT constant. */ - function twig_function_slug_pattern(): string { + function twig_function_slug_pattern( + ): string { return SLUG_STRICT ? ' pattern="^[a-z0-9\\-]*$"' : ' pattern="^[^\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e]*$"' ; @@ -366,7 +346,8 @@ * Function: twig_function_javascripts_nonce * Returns a nonce value to enable inline JavaScript with a Content Security Policy. */ - function twig_function_javascripts_nonce(): string { + function twig_function_javascripts_nonce( + ): string { $nonce = ""; return Trigger::current()->filter($nonce, "javascripts_nonce"); } @@ -375,7 +356,8 @@ * Function: twig_function_stylesheets_nonce * Returns a nonce value to enable inline stylesheets with a Content Security Policy. */ - function twig_function_stylesheets_nonce(): string { + function twig_function_stylesheets_nonce( + ): string { $nonce = ""; return Trigger::current()->filter($nonce, "stylesheets_nonce"); } @@ -507,7 +489,9 @@ * Parameters: * $bytes - The filesize in bytes. */ - function twig_filter_filesize_format($bytes): string { + function twig_filter_filesize_format( + $bytes + ): string { if (is_array($bytes)) $bytes = max($bytes); @@ -593,7 +577,9 @@ * Parameters: * $variable - The variable to inspect. */ - function twig_filter_inspect($variable): string { + function twig_filter_inspect( + $variable + ): string { return '
    '.
                    fix(var_export($variable, true)).
                    '
    '; @@ -606,7 +592,9 @@ * Parameters: * $test - The variable to test. */ - function twig_filter_checked($test): string { + function twig_filter_checked( + $test + ): string { return ($test) ? " checked" : "" ; } @@ -618,7 +606,9 @@ * Parameters: * $test - The variable to test. */ - function twig_filter_selected($test): string { + function twig_filter_selected( + $test + ): string { $try = func_get_args(); array_shift($try); @@ -641,7 +631,9 @@ * Parameters: * $test - The variable to test. */ - function twig_filter_disabled($test): string { + function twig_filter_disabled( + $test + ): string { $try = func_get_args(); array_shift($try); @@ -663,7 +655,9 @@ * Parameters: * $filename - The uploaded filename. */ - function twig_filter_download($filename): string { + function twig_filter_download( + $filename + ): string { $filepath = Config::current()->chyrp_url. "/includes/download.php?file=". urlencode($filename); diff --git a/includes/lib/RSSFeed.php b/includes/lib/RSSFeed.php index b6cc75c..4addf8f 100644 --- a/includes/lib/RSSFeed.php +++ b/includes/lib/RSSFeed.php @@ -23,7 +23,8 @@ * Function: type * Returns the content type of the feed. */ - public static function type(): string { + public static function type( + ): string { return "application/rss+xml"; } @@ -143,7 +144,11 @@ * $scheme - URI for the categorization scheme (optional). * $label - Human-readable label for the category (optional). */ - public function category($term, $scheme = "", $label = ""): bool { + public function category( + $term, + $scheme = "", + $label = "" + ): bool { if (!$this->open) return false; @@ -166,7 +171,9 @@ * Function: rights * Not implemented in RSS 2.0.11. */ - public function rights($text): bool { + public function rights( + $text + ): bool { return false; } @@ -210,7 +217,9 @@ * Function: related * Not implemented in RSS 2.0.11. */ - public function related($link): bool { + public function related( + $link + ): bool { return false; } @@ -218,7 +227,8 @@ * Function: feed * Returns the generated feed. */ - public function feed(): string { + public function feed( + ): string { $feed = $this->xml["feed"]; $items = $this->xml["items"]; @@ -234,10 +244,11 @@ } /** - * Function: output + * Function: display * Displays the generated feed. */ - public function display(): bool { + public function display( + ): bool { if (headers_sent()) return false; diff --git a/includes/lib/ThumbnailFile.php b/includes/lib/ThumbnailFile.php index 2ed9603..4c01702 100644 --- a/includes/lib/ThumbnailFile.php +++ b/includes/lib/ThumbnailFile.php @@ -32,6 +32,10 @@ # Quality factor for the thumbnail file. private $quality = 80; + # Integer: $orientation + # EXIF orientation tag value. + private $orientation = 1; + # Variable: $type # The original image type detected by GD library. private $type = 0; @@ -67,7 +71,13 @@ * $quality - Quality factor for the thumbnail file. * $square - Create a square crop of the original image? */ - public function __construct($filename, $thumb_w, $thumb_h, $quality, $square) { + public function __construct( + $filename, + $thumb_w, + $thumb_h, + $quality, + $square + ) { $this->thumb_w = (int) $thumb_w; $this->thumb_h = (int) $thumb_h; $this->quality = (int) $quality; @@ -96,6 +106,22 @@ if ($this->quality > 100 or $this->quality < 0) $this->quality = 80; + if (function_exists("exif_read_data")) { + $exif = @exif_read_data($filepath); + + if ($exif !== false) { + if (isset($exif["Orientation"])) + $this->orientation = (int) $exif["Orientation"]; + + if ($this->orientation >= 5) { + $orig_w = $this->orig_w; + $orig_h = $this->orig_h; + $this->orig_w = $orig_h; + $this->orig_h = $orig_w; + } + } + } + $this->resize(); $this->destination = CACHES_DIR.DIR."thumbs".DIR.$this->name(); } @@ -104,7 +130,8 @@ * Function: upscaling * Will the thumbnail be larger than the original? */ - public function upscaling(): bool { + public function upscaling( + ): bool { return ( ($this->thumb_w == 0 or $this->orig_w <= $this->thumb_w) and ($this->thumb_h == 0 or $this->orig_h <= $this->thumb_h) and @@ -116,7 +143,8 @@ * Function: creatable * Can the thumbnail file be created? */ - public function creatable(): bool { + public function creatable( + ): bool { if (isset($this->creatable)) return $this->creatable; @@ -227,7 +255,8 @@ * Function: extension * Returns the correct extension for the image. */ - public function extension(): string|false { + public function extension( + ): string|false { return image_type_to_extension($this->type); } @@ -235,7 +264,8 @@ * Function: mime_type * Returns the correct MIME type for the image. */ - public function mime_type(): string|false { + public function mime_type( + ): string|false { return image_type_to_mime_type($this->type); } @@ -243,7 +273,8 @@ * Function: name * Generates and returns a unique name for the thumbnail file. */ - public function name(): string|false { + public function name( + ): string|false { if (isset($this->name)) return $this->name; @@ -267,7 +298,9 @@ * Parameters: * $overwrite - Overwrite an existing thumbnail file? */ - public function create($overwrite = false): bool { + public function create( + $overwrite = false + ): bool { if (!$this->creatable()) return false; @@ -322,6 +355,61 @@ __("Failed to create image thumbnail.") ); + if ($this->orientation > 1) { + # Transform the original image to correct orientation: + ##################################################### + # 1 # 2 # 3 # 4 # + # # # # # + # XXXXXXX # XXXXXXX # XX # XX # + # XX # XX # XX # XX # + # XXXXX # XXXXX # XXXXX # XXXXX # + # XX # XX # XX # XX # + # XX # XX # XXXXXXX # XXXXXXX # + # # # # # + ##################################################### + # 5 # 6 # 7 # 8 # + # # # # # + # XXXXXXXXXX # # # XXXXXXXXXX # + # XX XX # XX # XX # XX XX # + # XX XX # XX XX # XX XX # XX XX # + # XX # XX XX # XX XX # XX # + # # XXXXXXXXXX # XXXXXXXXXX # # + # # # # # + ##################################################### + + switch ($this->orientation) { + case 2: + imageflip($original, IMG_FLIP_HORIZONTAL); + break; + case 3: + $original = imagerotate($original, 180, 0); + break; + case 4: + imageflip($original, IMG_FLIP_VERTICAL); + break; + case 5: + imageflip($original, IMG_FLIP_VERTICAL); + $original = imagerotate($original, 270, 0); + break; + case 6: + $original = imagerotate($original, 270, 0); + break; + case 7: + imageflip($original, IMG_FLIP_VERTICAL); + $original = imagerotate($original, 90, 0); + break; + case 8: + $original = imagerotate($original, 90, 0); + break; + } + + if ($original === false) + error( + __("Error"), + __("Failed to create image thumbnail.") + ); + } + # Do the crop and resize. imagecopyresampled( $thumb, @@ -392,7 +480,8 @@ * Function: serve * Serves a thumbnail file with correct Content-Type header. */ - public function serve(): bool { + public function serve( + ): bool { if (!file_exists($this->destination)) return false; @@ -409,7 +498,8 @@ * Function: resize * Computes the final dimensions based on supplied parameters. */ - private function resize(): void { + private function resize( + ): void { $scale_x = ($this->thumb_w > 0) ? $this->thumb_w / $this->orig_w : 0 ; diff --git a/includes/lib/Twig/AbstractTwigCallable.php b/includes/lib/Twig/AbstractTwigCallable.php new file mode 100644 index 0000000..d85f0f8 --- /dev/null +++ b/includes/lib/Twig/AbstractTwigCallable.php @@ -0,0 +1,184 @@ + + */ +abstract class AbstractTwigCallable implements TwigCallableInterface +{ + protected $options; + + private $name; + private $dynamicName; + private $callable; + private $arguments; + + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $this->dynamicName = $name; + $this->callable = $callable; + $this->arguments = []; + $this->options = array_merge([ + 'needs_environment' => false, + 'needs_context' => false, + 'needs_charset' => false, + 'is_variadic' => false, + 'deprecation_info' => null, + 'deprecated' => false, + 'deprecating_package' => '', + 'alternative' => null, + ], $options); + + if ($this->options['deprecation_info'] && !$this->options['deprecation_info'] instanceof DeprecatedCallableInfo) { + throw new \LogicException(\sprintf('The "deprecation_info" option must be an instance of "%s".', DeprecatedCallableInfo::class)); + } + + if ($this->options['deprecated']) { + if ($this->options['deprecation_info']) { + throw new \LogicException('When setting the "deprecation_info" option, you need to remove the obsolete deprecated options.'); + } + + trigger_deprecation('twig/twig', '3.15', 'Using the "deprecated", "deprecating_package", and "alternative" options is deprecated, pass a "deprecation_info" one instead.'); + + $this->options['deprecation_info'] = new DeprecatedCallableInfo( + $this->options['deprecating_package'], + $this->options['deprecated'], + null, + $this->options['alternative'], + ); + } + + if ($this->options['deprecation_info']) { + $this->options['deprecation_info']->setName($name); + $this->options['deprecation_info']->setType($this->getType()); + } + } + + public function __toString(): string + { + return \sprintf('%s(%s)', static::class, $this->name); + } + + public function getName(): string + { + return $this->name; + } + + public function getDynamicName(): string + { + return $this->dynamicName; + } + + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function needsCharset(): bool + { + return $this->options['needs_charset']; + } + + public function needsEnvironment(): bool + { + return $this->options['needs_environment']; + } + + public function needsContext(): bool + { + return $this->options['needs_context']; + } + + /** + * @return static + */ + public function withDynamicArguments(string $name, string $dynamicName, array $arguments): self + { + $new = clone $this; + $new->name = $name; + $new->dynamicName = $dynamicName; + $new->arguments = $arguments; + + return $new; + } + + /** + * @deprecated since Twig 3.12, use withDynamicArguments() instead + */ + public function setArguments(array $arguments): void + { + trigger_deprecation('twig/twig', '3.12', 'The "%s::setArguments()" method is deprecated, use "%s::withDynamicArguments()" instead.', static::class, static::class); + + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function isVariadic(): bool + { + return $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecation_info']; + } + + public function triggerDeprecation(?string $file = null, ?int $line = null): void + { + $this->options['deprecation_info']->triggerDeprecation($file, $line); + } + + /** + * @deprecated since Twig 3.15 + */ + public function getDeprecatingPackage(): string + { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + + return $this->options['deprecating_package']; + } + + /** + * @deprecated since Twig 3.15 + */ + public function getDeprecatedVersion(): string + { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + /** + * @deprecated since Twig 3.15 + */ + public function getAlternative(): ?string + { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + + return $this->options['alternative']; + } + + public function getMinimalNumberOfRequiredArguments(): int + { + return ($this->options['needs_charset'] ? 1 : 0) + ($this->options['needs_environment'] ? 1 : 0) + ($this->options['needs_context'] ? 1 : 0) + \count($this->arguments); + } +} diff --git a/includes/lib/Twig/Attribute/FirstClassTwigCallableReady.php b/includes/lib/Twig/Attribute/FirstClassTwigCallableReady.php new file mode 100644 index 0000000..ffd8cff --- /dev/null +++ b/includes/lib/Twig/Attribute/FirstClassTwigCallableReady.php @@ -0,0 +1,20 @@ + */ -final class ChainCache implements CacheInterface +final class ChainCache implements CacheInterface, RemovableCacheInterface { - private $caches; - /** * @param iterable $caches The ordered list of caches used to store and fetch cached items */ - public function __construct(iterable $caches) - { - $this->caches = $caches; + public function __construct( + private iterable $caches, + ) { } public function generateKey(string $name, string $className): string @@ -71,6 +69,15 @@ final class ChainCache implements CacheInterface return 0; } + public function remove(string $name, string $cls): void + { + foreach ($this->caches as $cache) { + if ($cache instanceof RemovableCacheInterface) { + $cache->remove($name, $cls); + } + } + } + /** * @return string[] */ diff --git a/includes/lib/Twig/Cache/FilesystemCache.php b/includes/lib/Twig/Cache/FilesystemCache.php index 2e79fac..5840585 100644 --- a/includes/lib/Twig/Cache/FilesystemCache.php +++ b/includes/lib/Twig/Cache/FilesystemCache.php @@ -16,7 +16,7 @@ namespace Twig\Cache; * * @author Andrew Tch */ -class FilesystemCache implements CacheInterface +class FilesystemCache implements CacheInterface, RemovableCacheInterface { public const FORCE_BYTECODE_INVALIDATION = 1; @@ -76,6 +76,14 @@ class FilesystemCache implements CacheInterface throw new \RuntimeException(\sprintf('Failed to write cache file "%s".', $key)); } + public function remove(string $name, string $cls): void + { + $key = $this->generateKey($name, $cls); + if (!@unlink($key) && file_exists($key)) { + throw new \RuntimeException(\sprintf('Failed to delete cache file "%s".', $key)); + } + } + public function getTimestamp(string $key): int { if (!is_file($key)) { diff --git a/includes/lib/Twig/Cache/NullCache.php b/includes/lib/Twig/Cache/NullCache.php index 8d20d59..1ae2169 100644 --- a/includes/lib/Twig/Cache/NullCache.php +++ b/includes/lib/Twig/Cache/NullCache.php @@ -16,7 +16,7 @@ namespace Twig\Cache; * * @author Fabien Potencier */ -final class NullCache implements CacheInterface +final class NullCache implements CacheInterface, RemovableCacheInterface { public function generateKey(string $name, string $className): string { @@ -35,4 +35,8 @@ final class NullCache implements CacheInterface { return 0; } + + public function remove(string $name, string $cls): void + { + } } diff --git a/includes/lib/Twig/Cache/RemovableCacheInterface.php b/includes/lib/Twig/Cache/RemovableCacheInterface.php new file mode 100644 index 0000000..05da569 --- /dev/null +++ b/includes/lib/Twig/Cache/RemovableCacheInterface.php @@ -0,0 +1,20 @@ + + */ +interface RemovableCacheInterface +{ + public function remove(string $name, string $cls): void; +} diff --git a/includes/lib/Twig/Compiler.php b/includes/lib/Twig/Compiler.php index 1e7ed04..ce8b17c 100644 --- a/includes/lib/Twig/Compiler.php +++ b/includes/lib/Twig/Compiler.php @@ -22,7 +22,6 @@ class Compiler private $lastLine; private $source; private $indentation; - private $env; private $debugInfo = []; private $sourceOffset; private $sourceLine; @@ -30,9 +29,9 @@ class Compiler private $didUseEcho = false; private $didUseEchoStack = []; - public function __construct(Environment $env) - { - $this->env = $env; + public function __construct( + private Environment $env, + ) { } public function getEnvironment(): Environment @@ -75,7 +74,7 @@ class Compiler $node->compile($this); if ($this->didUseEcho) { - trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node)); + trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node)); } return $this; @@ -100,7 +99,7 @@ class Compiler $node->compile($this); if ($this->didUseEcho) { - trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node)); + trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node)); } return $this; @@ -171,7 +170,7 @@ class Compiler } elseif (\is_bool($value)) { $this->raw($value ? 'true' : 'false'); } elseif (\is_array($value)) { - $this->raw('array('); + $this->raw('['); $first = true; foreach ($value as $key => $v) { if (!$first) { @@ -182,7 +181,7 @@ class Compiler $this->raw(' => '); $this->repr($v); } - $this->raw(')'); + $this->raw(']'); } else { $this->string($value); } @@ -244,7 +243,7 @@ class Compiler public function getVarName(): string { - return \sprintf('__internal_compile_%d', $this->varNameSalt++); + return \sprintf('_v%d', $this->varNameSalt++); } private function checkForEcho(string $string): void diff --git a/includes/lib/Twig/DeprecatedCallableInfo.php b/includes/lib/Twig/DeprecatedCallableInfo.php new file mode 100644 index 0000000..2db9f3d --- /dev/null +++ b/includes/lib/Twig/DeprecatedCallableInfo.php @@ -0,0 +1,67 @@ + + */ +final class DeprecatedCallableInfo +{ + private string $type; + private string $name; + + public function __construct( + private string $package, + private string $version, + private ?string $altName = null, + private ?string $altPackage = null, + private ?string $altVersion = null, + ) { + } + + public function setType(string $type): void + { + $this->type = $type; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function triggerDeprecation(?string $file = null, ?int $line = null): void + { + $message = \sprintf('Twig %s "%s" is deprecated', ucfirst($this->type), $this->name); + + if ($this->altName) { + $message .= \sprintf('; use "%s"', $this->altName); + if ($this->altPackage) { + $message .= \sprintf(' from the "%s" package', $this->altPackage); + } + if ($this->altVersion) { + $message .= \sprintf(' (available since version %s)', $this->altVersion); + } + $message .= ' instead'; + } + + if ($file) { + $message .= \sprintf(' in %s', $file); + if ($line) { + $message .= \sprintf(' at line %d', $line); + } + } + + $message .= '.'; + + trigger_deprecation($this->package, $this->version, $message); + } +} diff --git a/includes/lib/Twig/Environment.php b/includes/lib/Twig/Environment.php index 32b1313..66400b0 100644 --- a/includes/lib/Twig/Environment.php +++ b/includes/lib/Twig/Environment.php @@ -14,6 +14,7 @@ namespace Twig; use Twig\Cache\CacheInterface; use Twig\Cache\FilesystemCache; use Twig\Cache\NullCache; +use Twig\Cache\RemovableCacheInterface; use Twig\Error\Error; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; @@ -43,10 +44,10 @@ use Twig\TokenParser\TokenParserInterface; */ class Environment { - public const VERSION = '3.11.0'; - public const VERSION_ID = 301100; - public const MAJOR_VERSION = 4; - public const MINOR_VERSION = 11; + public const VERSION = '3.18.0'; + public const VERSION_ID = 31800; + public const MAJOR_VERSION = 3; + public const MINOR_VERSION = 18; public const RELEASE_VERSION = 0; public const EXTRA_VERSION = ''; @@ -71,6 +72,7 @@ class Environment /** @var bool */ private $useYield; private $defaultRuntimeLoader; + private array $hotCache = []; /** * Constructor. @@ -103,11 +105,11 @@ class Environment * (default to -1 which means that all optimizations are enabled; * set it to 0 to disable). * - * * use_yield: Enable templates to exclusively use "yield" instead of "echo" - * (default to "false", but switch it to "true" when possible - * as this will be the only supported mode in Twig 4.0) + * * use_yield: true: forces templates to exclusively use "yield" instead of "echo" (all extensions must be yield ready) + * false (default): allows templates to use a mix of "yield" and "echo" calls to allow for a progressive migration + * Switch to "true" when possible as this will be the only supported mode in Twig 4.0 */ - public function __construct(LoaderInterface $loader, $options = []) + public function __construct(LoaderInterface $loader, array $options = []) { $this->setLoader($loader); @@ -233,6 +235,18 @@ class Environment return $this->strictVariables; } + public function removeCache(string $name): void + { + $cls = $this->getTemplateClass($name); + $this->hotCache[$name] = $cls.'_'.bin2hex(random_bytes(16)); + + if ($this->cache instanceof RemovableCacheInterface) { + $this->cache->remove($name, $cls); + } else { + throw new \LogicException(\sprintf('The "%s" cache class does not support removing template cache as it does not implement the "RemovableCacheInterface" interface.', \get_class($this->cache))); + } + } + /** * Gets the current cache implementation. * @@ -287,7 +301,7 @@ class Environment */ public function getTemplateClass(string $name, ?int $index = null): string { - $key = $this->getLoader()->getCacheKey($name).$this->optionsHash; + $key = ($this->hotCache[$name] ?? $this->getLoader()->getCacheKey($name)).$this->optionsHash; return '__TwigTemplate_'.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $key).(null === $index ? '' : '___'.$index); } @@ -379,8 +393,10 @@ class Environment if (!class_exists($cls, false)) { $source = $this->getLoader()->getSourceContext($name); $content = $this->compileSource($source); - $this->cache->write($key, $content); - $this->cache->load($key); + if (!isset($this->hotCache[$name])) { + $this->cache->write($key, $content); + $this->cache->load($key); + } if (!class_exists($mainCls, false)) { /* Last line of defense if either $this->bcWriteCacheFile was used, @@ -813,8 +829,6 @@ class Environment } /** - * @internal - * * @return array */ public function getGlobals(): array @@ -830,23 +844,26 @@ class Environment return array_merge($this->extensionSet->getGlobals(), $this->globals); } + public function resetGlobals(): void + { + $this->resolvedGlobals = null; + $this->extensionSet->resetGlobals(); + } + + /** + * @deprecated since Twig 3.14 + */ public function mergeGlobals(array $context): array { - // we don't use array_merge as the context being generally - // bigger than globals, this code is faster. - foreach ($this->getGlobals() as $key => $value) { - if (!\array_key_exists($key, $context)) { - $context[$key] = $value; - } - } + trigger_deprecation('twig/twig', '3.14', 'The "%s" method is deprecated.', __METHOD__); - return $context; + return $context + $this->getGlobals(); } /** * @internal * - * @return array}> + * @return array}> */ public function getUnaryOperators(): array { @@ -856,7 +873,7 @@ class Environment /** * @internal * - * @return array, associativity: ExpressionParser::OPERATOR_*}> + * @return array, associativity: ExpressionParser::OPERATOR_*}> */ public function getBinaryOperators(): array { diff --git a/includes/lib/Twig/Error/Error.php b/includes/lib/Twig/Error/Error.php index 4efd9ca..61c309f 100644 --- a/includes/lib/Twig/Error/Error.php +++ b/includes/lib/Twig/Error/Error.php @@ -142,7 +142,7 @@ class Error extends \Exception } if ($this->name) { - if (\is_string($this->name) || (\is_object($this->name) && method_exists($this->name, '__toString'))) { + if (\is_string($this->name) || $this->name instanceof \Stringable) { $name = \sprintf('"%s"', $this->name); } else { $name = json_encode($this->name); diff --git a/includes/lib/Twig/ExpressionParser.php b/includes/lib/Twig/ExpressionParser.php index 8448440..0f1b0ed 100644 --- a/includes/lib/Twig/ExpressionParser.php +++ b/includes/lib/Twig/ExpressionParser.php @@ -12,26 +12,31 @@ namespace Twig; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\ArrowFunctionExpression; -use Twig\Node\Expression\AssignNameExpression; use Twig\Node\Expression\Binary\AbstractBinary; use Twig\Node\Expression\Binary\ConcatBinary; -use Twig\Node\Expression\BlockReferenceExpression; -use Twig\Node\Expression\ConditionalExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\GetAttrExpression; -use Twig\Node\Expression\MethodCallExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\NameExpression; -use Twig\Node\Expression\ParentExpression; +use Twig\Node\Expression\Ternary\ConditionalTernary; use Twig\Node\Expression\TestExpression; use Twig\Node\Expression\Unary\AbstractUnary; use Twig\Node\Expression\Unary\NegUnary; use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Expression\Unary\PosUnary; +use Twig\Node\Expression\Unary\SpreadUnary; +use Twig\Node\Expression\Variable\AssignContextVariable; +use Twig\Node\Expression\Variable\ContextVariable; +use Twig\Node\Expression\Variable\LocalVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\Node; +use Twig\Node\Nodes; /** * Parses expressions. @@ -48,24 +53,50 @@ class ExpressionParser public const OPERATOR_LEFT = 1; public const OPERATOR_RIGHT = 2; - private $parser; - private $env; - /** @var array}> */ + /** @var array}> */ private $unaryOperators; - /** @var array, associativity: self::OPERATOR_*}> */ + /** @var array, associativity: self::OPERATOR_*}> */ private $binaryOperators; + private $readyNodes = []; + private array $precedenceChanges = []; + private bool $deprecationCheck = true; - public function __construct(Parser $parser, Environment $env) - { - $this->parser = $parser; - $this->env = $env; + public function __construct( + private Parser $parser, + private Environment $env, + ) { $this->unaryOperators = $env->getUnaryOperators(); $this->binaryOperators = $env->getBinaryOperators(); + + $ops = []; + foreach ($this->unaryOperators as $n => $c) { + $ops[] = $c + ['name' => $n, 'type' => 'unary']; + } + foreach ($this->binaryOperators as $n => $c) { + $ops[] = $c + ['name' => $n, 'type' => 'binary']; + } + foreach ($ops as $config) { + if (!isset($config['precedence_change'])) { + continue; + } + $name = $config['type'].'_'.$config['name']; + $min = min($config['precedence_change']->getNewPrecedence(), $config['precedence']); + $max = max($config['precedence_change']->getNewPrecedence(), $config['precedence']); + foreach ($ops as $c) { + if ($c['precedence'] > $min && $c['precedence'] < $max) { + $this->precedenceChanges[$c['type'].'_'.$c['name']][] = $name; + } + } + } } - public function parseExpression($precedence = 0, $allowArrow = false) + public function parseExpression($precedence = 0) { - if ($allowArrow && $arrow = $this->parseArrow()) { + if (\func_num_args() > 1) { + trigger_deprecation('twig/twig', '3.15', 'Passing a second argument ($allowArrow) to "%s()" is deprecated.', __METHOD__); + } + + if ($arrow = $this->parseArrow()) { return $arrow; } @@ -82,11 +113,20 @@ class ExpressionParser } elseif (isset($op['callable'])) { $expr = $op['callable']($this->parser, $expr); } else { - $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence'], true); + $previous = $this->setDeprecationCheck(true); + try { + $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']); + } finally { + $this->setDeprecationCheck($previous); + } $class = $op['class']; $expr = new $class($expr, $expr1, $token->getLine()); } + $expr->setAttribute('operator', 'binary_'.$token->getValue()); + + $this->triggerPrecedenceDeprecations($expr); + $token = $this->parser->getCurrentToken(); } @@ -97,6 +137,43 @@ class ExpressionParser return $expr; } + private function triggerPrecedenceDeprecations(AbstractExpression $expr): void + { + // Check that the all nodes that are between the 2 precedences have explicit parentheses + if (!$expr->hasAttribute('operator') || !isset($this->precedenceChanges[$expr->getAttribute('operator')])) { + return; + } + + if (str_starts_with($unaryOp = $expr->getAttribute('operator'), 'unary')) { + if ($expr->hasExplicitParentheses()) { + return; + } + $target = explode('_', $unaryOp)[1]; + /** @var AbstractExpression $node */ + $node = $expr->getNode('node'); + foreach ($this->precedenceChanges as $operatorName => $changes) { + if (!\in_array($unaryOp, $changes)) { + continue; + } + if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator')) { + $change = $this->unaryOperators[$target]['precedence_change']; + trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" unary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $target, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine())); + } + } + } else { + foreach ($this->precedenceChanges[$expr->getAttribute('operator')] as $operatorName) { + foreach ($expr as $node) { + /** @var AbstractExpression $node */ + if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator') && !$node->hasExplicitParentheses()) { + $op = explode('_', $operatorName)[1]; + $change = $this->binaryOperators[$op]['precedence_change']; + trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" binary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $op, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine())); + } + } + } + } + } + /** * @return ArrowFunctionExpression|null */ @@ -105,54 +182,54 @@ class ExpressionParser $stream = $this->parser->getStream(); // short array syntax (one argument, no parentheses)? - if ($stream->look(1)->test(/* Token::ARROW_TYPE */ 12)) { + if ($stream->look(1)->test(Token::ARROW_TYPE)) { $line = $stream->getCurrent()->getLine(); - $token = $stream->expect(/* Token::NAME_TYPE */ 5); - $names = [new AssignNameExpression($token->getValue(), $token->getLine())]; - $stream->expect(/* Token::ARROW_TYPE */ 12); + $token = $stream->expect(Token::NAME_TYPE); + $names = [new AssignContextVariable($token->getValue(), $token->getLine())]; + $stream->expect(Token::ARROW_TYPE); - return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line); } // first, determine if we are parsing an arrow function by finding => (long form) $i = 0; - if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, '(')) { return null; } ++$i; while (true) { // variable name ++$i; - if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ',')) { break; } ++$i; } - if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ')')) { return null; } ++$i; - if (!$stream->look($i)->test(/* Token::ARROW_TYPE */ 12)) { + if (!$stream->look($i)->test(Token::ARROW_TYPE)) { return null; } // yes, let's parse it properly - $token = $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '('); + $token = $stream->expect(Token::PUNCTUATION_TYPE, '('); $line = $token->getLine(); $names = []; while (true) { - $token = $stream->expect(/* Token::NAME_TYPE */ 5); - $names[] = new AssignNameExpression($token->getValue(), $token->getLine()); + $token = $stream->expect(Token::NAME_TYPE); + $names[] = new AssignContextVariable($token->getValue(), $token->getLine()); - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')'); - $stream->expect(/* Token::ARROW_TYPE */ 12); + $stream->expect(Token::PUNCTUATION_TYPE, ')'); + $stream->expect(Token::ARROW_TYPE); - return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line); } private function getPrimary(): AbstractExpression @@ -165,11 +242,23 @@ class ExpressionParser $expr = $this->parseExpression($operator['precedence']); $class = $operator['class']; - return $this->parsePostfixExpression(new $class($expr, $token->getLine())); - } elseif ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $expr = new $class($expr, $token->getLine()); + $expr->setAttribute('operator', 'unary_'.$token->getValue()); + + if ($this->deprecationCheck) { + $this->triggerPrecedenceDeprecations($expr); + } + + return $this->parsePostfixExpression($expr); + } elseif ($token->test(Token::PUNCTUATION_TYPE, '(')) { $this->parser->getStream()->next(); - $expr = $this->parseExpression(); - $this->parser->getStream()->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'An opened parenthesis is not properly closed'); + $previous = $this->setDeprecationCheck(false); + try { + $expr = $this->parseExpression()->setExplicitParentheses(); + } finally { + $this->setDeprecationCheck($previous); + } + $this->parser->getStream()->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); return $this->parsePostfixExpression($expr); } @@ -179,23 +268,17 @@ class ExpressionParser private function parseConditionalExpression($expr): AbstractExpression { - while ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, '?')) { - if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - $expr2 = $this->parseExpression(); - if ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - // Ternary operator (expr ? expr2 : expr3) - $expr3 = $this->parseExpression(); - } else { - // Ternary without else (expr ? expr2) - $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine()); - } - } else { - // Ternary without then (expr ?: expr3) - $expr2 = $expr; + while ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, '?')) { + $expr2 = $this->parseExpression(); + if ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ':')) { + // Ternary operator (expr ? expr2 : expr3) $expr3 = $this->parseExpression(); + } else { + // Ternary without else (expr ? expr2) + $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine()); } - $expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); + $expr = new ConditionalTernary($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); } return $expr; @@ -203,19 +286,19 @@ class ExpressionParser private function isUnary(Token $token): bool { - return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->unaryOperators[$token->getValue()]); + return $token->test(Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]); } private function isBinary(Token $token): bool { - return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->binaryOperators[$token->getValue()]); + return $token->test(Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->getValue()]); } public function parsePrimaryExpression() { $token = $this->parser->getCurrentToken(); switch ($token->getType()) { - case /* Token::NAME_TYPE */ 5: + case Token::NAME_TYPE: $this->parser->getStream()->next(); switch ($token->getValue()) { case 'true': @@ -239,53 +322,44 @@ class ExpressionParser if ('(' === $this->parser->getCurrentToken()->getValue()) { $node = $this->getFunctionNode($token->getValue(), $token->getLine()); } else { - $node = new NameExpression($token->getValue(), $token->getLine()); + $node = new ContextVariable($token->getValue(), $token->getLine()); } } break; - case /* Token::NUMBER_TYPE */ 6: + case Token::NUMBER_TYPE: $this->parser->getStream()->next(); $node = new ConstantExpression($token->getValue(), $token->getLine()); break; - case /* Token::STRING_TYPE */ 7: - case /* Token::INTERPOLATION_START_TYPE */ 10: + case Token::STRING_TYPE: + case Token::INTERPOLATION_START_TYPE: $node = $this->parseStringExpression(); break; - case /* Token::OPERATOR_TYPE */ 8: + case Token::PUNCTUATION_TYPE: + $node = match ($token->getValue()) { + '[' => $this->parseSequenceExpression(), + '{' => $this->parseMappingExpression(), + default => throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()), + }; + break; + + case Token::OPERATOR_TYPE: if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) { // in this context, string operators are variable names $this->parser->getStream()->next(); - $node = new NameExpression($token->getValue(), $token->getLine()); + $node = new ContextVariable($token->getValue(), $token->getLine()); break; } - if (isset($this->unaryOperators[$token->getValue()])) { - $class = $this->unaryOperators[$token->getValue()]['class']; - if (!\in_array($class, [NegUnary::class, PosUnary::class])) { - throw new SyntaxError(\sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } - - $this->parser->getStream()->next(); - $expr = $this->parsePrimaryExpression(); - - $node = new $class($expr, $token->getLine()); - break; + if ('=' === $token->getValue() && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { + throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } // no break default: - if ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '[')) { - $node = $this->parseSequenceExpression(); - } elseif ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '{')) { - $node = $this->parseMappingExpression(); - } elseif ($token->test(/* Token::OPERATOR_TYPE */ 8, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { - throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } else { - throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } + throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } return $this->parsePostfixExpression($node); @@ -299,12 +373,12 @@ class ExpressionParser // a string cannot be followed by another string in a single expression $nextCanBeString = true; while (true) { - if ($nextCanBeString && $token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) { + if ($nextCanBeString && $token = $stream->nextIf(Token::STRING_TYPE)) { $nodes[] = new ConstantExpression($token->getValue(), $token->getLine()); $nextCanBeString = false; - } elseif ($stream->nextIf(/* Token::INTERPOLATION_START_TYPE */ 10)) { + } elseif ($stream->nextIf(Token::INTERPOLATION_START_TYPE)) { $nodes[] = $this->parseExpression(); - $stream->expect(/* Token::INTERPOLATION_END_TYPE */ 11); + $stream->expect(Token::INTERPOLATION_END_TYPE); $nextCanBeString = true; } else { break; @@ -320,7 +394,7 @@ class ExpressionParser } /** - * @deprecated since 3.11, use parseSequenceExpression() instead + * @deprecated since Twig 3.11, use parseSequenceExpression() instead */ public function parseArrayExpression() { @@ -332,23 +406,22 @@ class ExpressionParser public function parseSequenceExpression() { $stream = $this->parser->getStream(); - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '[', 'A sequence element was expected'); + $stream->expect(Token::PUNCTUATION_TYPE, '[', 'A sequence element was expected'); $node = new ArrayExpression([], $stream->getCurrent()->getLine()); $first = true; - while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + while (!$stream->test(Token::PUNCTUATION_TYPE, ']')) { if (!$first) { - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'A sequence element must be followed by a comma'); + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A sequence element must be followed by a comma'); // trailing ,? - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { break; } } $first = false; - if ($stream->test(/* Token::SPREAD_TYPE */ 13)) { - $stream->next(); + if ($stream->nextIf(Token::SPREAD_TYPE)) { $expr = $this->parseExpression(); $expr->setAttribute('spread', true); $node->addElement($expr); @@ -356,13 +429,13 @@ class ExpressionParser $node->addElement($this->parseExpression()); } } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']', 'An opened sequence is not properly closed'); + $stream->expect(Token::PUNCTUATION_TYPE, ']', 'An opened sequence is not properly closed'); return $node; } /** - * @deprecated since 3.11, use parseMappingExpression() instead + * @deprecated since Twig 3.11, use parseMappingExpression() instead */ public function parseHashExpression() { @@ -374,23 +447,22 @@ class ExpressionParser public function parseMappingExpression() { $stream = $this->parser->getStream(); - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '{', 'A mapping element was expected'); + $stream->expect(Token::PUNCTUATION_TYPE, '{', 'A mapping element was expected'); $node = new ArrayExpression([], $stream->getCurrent()->getLine()); $first = true; - while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + while (!$stream->test(Token::PUNCTUATION_TYPE, '}')) { if (!$first) { - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'A mapping value must be followed by a comma'); + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A mapping value must be followed by a comma'); // trailing ,? - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + if ($stream->test(Token::PUNCTUATION_TYPE, '}')) { break; } } $first = false; - if ($stream->test(/* Token::SPREAD_TYPE */ 13)) { - $stream->next(); + if ($stream->nextIf(Token::SPREAD_TYPE)) { $value = $this->parseExpression(); $value->setAttribute('spread', true); $node->addElement($value); @@ -403,18 +475,18 @@ class ExpressionParser // * a string -- 'a' // * a name, which is equivalent to a string -- a // * an expression, which must be enclosed in parentheses -- (1 + 2) - if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + if ($token = $stream->nextIf(Token::NAME_TYPE)) { $key = new ConstantExpression($token->getValue(), $token->getLine()); // {a} is a shortcut for {a:a} if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) { - $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine()); + $value = new ContextVariable($key->getAttribute('value'), $key->getTemplateLine()); $node->addElement($value, $key); continue; } - } elseif (($token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) || $token = $stream->nextIf(/* Token::NUMBER_TYPE */ 6)) { + } elseif (($token = $stream->nextIf(Token::STRING_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) { $key = new ConstantExpression($token->getValue(), $token->getLine()); - } elseif ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + } elseif ($stream->test(Token::PUNCTUATION_TYPE, '(')) { $key = $this->parseExpression(); } else { $current = $stream->getCurrent(); @@ -422,12 +494,12 @@ class ExpressionParser throw new SyntaxError(\sprintf('A mapping key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s".', Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $stream->getSourceContext()); } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ':', 'A mapping key must be followed by a colon (:)'); + $stream->expect(Token::PUNCTUATION_TYPE, ':', 'A mapping key must be followed by a colon (:)'); $value = $this->parseExpression(); $node->addElement($value, $key); } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '}', 'An opened mapping is not properly closed'); + $stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened mapping is not properly closed'); return $node; } @@ -436,7 +508,7 @@ class ExpressionParser { while (true) { $token = $this->parser->getCurrentToken(); - if (/* Token::PUNCTUATION_TYPE */ 9 == $token->getType()) { + if (Token::PUNCTUATION_TYPE == $token->getType()) { if ('.' == $token->getValue() || '[' == $token->getValue()) { $node = $this->parseSubscriptExpression($node); } elseif ('|' == $token->getValue()) { @@ -454,124 +526,38 @@ class ExpressionParser public function getFunctionNode($name, $line) { - switch ($name) { - case 'parent': - $this->parseArguments(); - if (!\count($this->parser->getBlockStack())) { - throw new SyntaxError('Calling "parent" outside a block is forbidden.', $line, $this->parser->getStream()->getSourceContext()); - } - - if (!$this->parser->getParent() && !$this->parser->hasTraits()) { - throw new SyntaxError('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getStream()->getSourceContext()); - } - - return new ParentExpression($this->parser->peekBlockStack(), $line); - case 'block': - $args = $this->parseArguments(); - if (\count($args) < 1) { - throw new SyntaxError('The "block" function takes one argument (the block name).', $line, $this->parser->getStream()->getSourceContext()); - } - - return new BlockReferenceExpression($args->getNode('0'), \count($args) > 1 ? $args->getNode('1') : null, $line); - case 'attribute': - $args = $this->parseArguments(); - if (\count($args) < 2) { - throw new SyntaxError('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getStream()->getSourceContext()); - } - - return new GetAttrExpression($args->getNode('0'), $args->getNode('1'), \count($args) > 2 ? $args->getNode('2') : null, Template::ANY_CALL, $line); - default: - if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { - $arguments = new ArrayExpression([], $line); - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - - $node = new MethodCallExpression($alias['node'], $alias['name'], $arguments, $line); - $node->setAttribute('safe', true); - - return $node; - } - - $args = $this->parseArguments(true); - $class = $this->getFunctionNodeClass($name, $line); - - return new $class($name, $args, $line); + if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { + return new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], $this->createArguments($line), $line); } + + $args = $this->parseOnlyArguments(); + $function = $this->getFunction($name, $line); + + if ($function->getParserCallable()) { + $fakeNode = new EmptyNode($line); + $fakeNode->setSourceContext($this->parser->getStream()->getSourceContext()); + + return ($function->getParserCallable())($this->parser, $fakeNode, $args, $line); + } + + if (!isset($this->readyNodes[$class = $function->getNodeClass()])) { + $this->readyNodes[$class] = (bool) (new \ReflectionClass($class))->getConstructor()->getAttributes(FirstClassTwigCallableReady::class); + } + + if (!$ready = $this->readyNodes[$class]) { + trigger_deprecation('twig/twig', '3.12', 'Twig node "%s" is not marked as ready for passing a "TwigFunction" in the constructor instead of its name; please update your code and then add #[FirstClassTwigCallableReady] attribute to the constructor.', $class); + } + + return new $class($ready ? $function : $function->getName(), $args, $line); } public function parseSubscriptExpression($node) { - $stream = $this->parser->getStream(); - $token = $stream->next(); - $lineno = $token->getLine(); - $arguments = new ArrayExpression([], $lineno); - $type = Template::ANY_CALL; - if ('.' == $token->getValue()) { - $token = $stream->next(); - if ( - /* Token::NAME_TYPE */ 5 == $token->getType() - || - /* Token::NUMBER_TYPE */ 6 == $token->getType() - || - (/* Token::OPERATOR_TYPE */ 8 == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) - ) { - $arg = new ConstantExpression($token->getValue(), $lineno); - - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { - $type = Template::METHOD_CALL; - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - } - } else { - throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $lineno, $stream->getSourceContext()); - } - - if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { - $name = $arg->getAttribute('value'); - - $node = new MethodCallExpression($node, 'macro_'.$name, $arguments, $lineno); - $node->setAttribute('safe', true); - - return $node; - } - } else { - $type = Template::ARRAY_CALL; - - // slice? - $slice = false; - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - $slice = true; - $arg = new ConstantExpression(0, $token->getLine()); - } else { - $arg = $this->parseExpression(); - } - - if ($stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - $slice = true; - } - - if ($slice) { - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { - $length = new ConstantExpression(null, $token->getLine()); - } else { - $length = $this->parseExpression(); - } - - $class = $this->getFilterNodeClass('slice', $token->getLine()); - $arguments = new Node([$arg, $length]); - $filter = new $class($node, new ConstantExpression('slice', $token->getLine()), $arguments, $token->getLine()); - - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); - - return $filter; - } - - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); + if ('.' === $this->parser->getStream()->next()->getValue()) { + return $this->parseSubscriptExpressionDot($node); } - return new GetAttrExpression($node, $arg, $arguments, $type, $lineno); + return $this->parseSubscriptExpressionArray($node); } public function parseFilterExpression($node) @@ -581,23 +567,35 @@ class ExpressionParser return $this->parseFilterExpressionRaw($node); } - public function parseFilterExpressionRaw($node, $tag = null) + public function parseFilterExpressionRaw($node) { - while (true) { - $token = $this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5); + if (\func_num_args() > 1) { + trigger_deprecation('twig/twig', '3.12', 'Passing a second argument to "%s()" is deprecated.', __METHOD__); + } - $name = new ConstantExpression($token->getValue(), $token->getLine()); - if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { - $arguments = new Node(); + while (true) { + $token = $this->parser->getStream()->expect(Token::NAME_TYPE); + + if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '(')) { + $arguments = new EmptyNode(); } else { - $arguments = $this->parseArguments(true, false, true); + $arguments = $this->parseOnlyArguments(); } - $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine()); + $filter = $this->getFilter($token->getValue(), $token->getLine()); - $node = new $class($node, $name, $arguments, $token->getLine(), $tag); + $ready = true; + if (!isset($this->readyNodes[$class = $filter->getNodeClass()])) { + $this->readyNodes[$class] = (bool) (new \ReflectionClass($class))->getConstructor()->getAttributes(FirstClassTwigCallableReady::class); + } - if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '|')) { + if (!$ready = $this->readyNodes[$class]) { + trigger_deprecation('twig/twig', '3.12', 'Twig node "%s" is not marked as ready for passing a "TwigFilter" in the constructor instead of its name; please update your code and then add #[FirstClassTwigCallableReady] attribute to the constructor.', $class); + } + + $node = new $class($node, $ready ? $filter : new ConstantExpression($filter->getName(), $token->getLine()), $arguments, $token->getLine()); + + if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '|')) { break; } @@ -610,51 +608,66 @@ class ExpressionParser /** * Parses arguments. * - * @param bool $namedArguments Whether to allow named arguments or not - * @param bool $definition Whether we are parsing arguments for a function definition - * * @return Node * * @throws SyntaxError */ - public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false) + public function parseArguments() { + $namedArguments = false; + $definition = false; + if (\func_num_args() > 1) { + $definition = func_get_arg(1); + } + if (\func_num_args() > 0) { + trigger_deprecation('twig/twig', '3.15', 'Passing arguments to "%s()" is deprecated.', __METHOD__); + $namedArguments = func_get_arg(0); + } + $args = []; $stream = $this->parser->getStream(); - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '(', 'A list of arguments must begin with an opening parenthesis'); - while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { - if (!empty($args)) { - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'Arguments must be separated by a comma'); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + $hasSpread = false; + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if ($args) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); // if the comma above was a trailing comma, early exit the argument parse loop - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { break; } } if ($definition) { - $token = $stream->expect(/* Token::NAME_TYPE */ 5, null, 'An argument must be a name'); - $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine()); + $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name'); + $value = new ContextVariable($token->getValue(), $this->parser->getCurrentToken()->getLine()); } else { - $value = $this->parseExpression(0, $allowArrow); + if ($stream->nextIf(Token::SPREAD_TYPE)) { + $hasSpread = true; + $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine()); + } elseif ($hasSpread) { + throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } else { + $value = $this->parseExpression(); + } } $name = null; - if ($namedArguments && $token = $stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + if ($namedArguments && (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || (!$definition && $token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':')))) { if (!$value instanceof NameExpression) { throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext()); } $name = $value->getAttribute('name'); if ($definition) { - $value = $this->parsePrimaryExpression(); + $value = $this->getPrimary(); if (!$this->checkConstantExpression($value)) { throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext()); } } else { - $value = $this->parseExpression(0, $allowArrow); + $value = $this->parseExpression(); } } @@ -662,6 +675,7 @@ class ExpressionParser if (null === $name) { $name = $value->getAttribute('name'); $value = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); + $value->setAttribute('is_implicit', true); } $args[$name] = $value; } else { @@ -672,9 +686,9 @@ class ExpressionParser } } } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'A list of arguments must be closed by a parenthesis'); + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); - return new Node($args); + return new Nodes($args); } public function parseAssignmentExpression() @@ -683,24 +697,20 @@ class ExpressionParser $targets = []; while (true) { $token = $this->parser->getCurrentToken(); - if ($stream->test(/* Token::OPERATOR_TYPE */ 8) && preg_match(Lexer::REGEX_NAME, $token->getValue())) { + if ($stream->test(Token::OPERATOR_TYPE) && preg_match(Lexer::REGEX_NAME, $token->getValue())) { // in this context, string operators are variable names $this->parser->getStream()->next(); } else { - $stream->expect(/* Token::NAME_TYPE */ 5, null, 'Only variables can be assigned to'); + $stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to'); } - $value = $token->getValue(); - if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) { - throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext()); - } - $targets[] = new AssignNameExpression($value, $token->getLine()); + $targets[] = new AssignContextVariable($token->getValue(), $token->getLine()); - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - return new Node($targets); + return new Nodes($targets); } public function parseMultitargetExpression() @@ -708,12 +718,12 @@ class ExpressionParser $targets = []; while (true) { $targets[] = $this->parseExpression(); - if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - return new Node($targets); + return new Nodes($targets); } private function parseNotTestExpression(Node $node): NotUnary @@ -724,71 +734,72 @@ class ExpressionParser private function parseTestExpression(Node $node): TestExpression { $stream = $this->parser->getStream(); - [$name, $test] = $this->getTest($node->getTemplateLine()); + $test = $this->getTest($node->getTemplateLine()); - $class = $this->getTestNodeClass($test); $arguments = null; - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { - $arguments = $this->parseArguments(true); + if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { + $arguments = $this->parseOnlyArguments(); } elseif ($test->hasOneMandatoryArgument()) { - $arguments = new Node([0 => $this->parsePrimaryExpression()]); + $arguments = new Nodes([0 => $this->getPrimary()]); } - if ('defined' === $name && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) { - $node = new MethodCallExpression($alias['node'], $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); - $node->setAttribute('safe', true); + if ('defined' === $test->getName() && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) { + $node = new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); } - return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine()); + $ready = $test instanceof TwigTest; + if (!isset($this->readyNodes[$class = $test->getNodeClass()])) { + $this->readyNodes[$class] = (bool) (new \ReflectionClass($class))->getConstructor()->getAttributes(FirstClassTwigCallableReady::class); + } + + if (!$ready = $this->readyNodes[$class]) { + trigger_deprecation('twig/twig', '3.12', 'Twig node "%s" is not marked as ready for passing a "TwigTest" in the constructor instead of its name; please update your code and then add #[FirstClassTwigCallableReady] attribute to the constructor.', $class); + } + + return new $class($node, $ready ? $test : $test->getName(), $arguments, $this->parser->getCurrentToken()->getLine()); } - private function getTest(int $line): array + private function getTest(int $line): TwigTest { $stream = $this->parser->getStream(); - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); - if ($test = $this->env->getTest($name)) { - return [$name, $test]; - } - - if ($stream->test(/* Token::NAME_TYPE */ 5)) { + if ($stream->test(Token::NAME_TYPE)) { // try 2-words tests $name = $name.' '.$this->parser->getCurrentToken()->getValue(); if ($test = $this->env->getTest($name)) { $stream->next(); - - return [$name, $test]; } + } else { + $test = $this->env->getTest($name); } - $e = new SyntaxError(\sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); - $e->addSuggestions($name, array_keys($this->env->getTests())); + if (!$test) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigTest($name, fn () => ''); + } + $e = new SyntaxError(\sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getTests())); - throw $e; - } + throw $e; + } - private function getTestNodeClass(TwigTest $test): string - { if ($test->isDeprecated()) { $stream = $this->parser->getStream(); - $message = \sprintf('Twig Test "%s" is deprecated', $test->getName()); - - if ($test->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $test->getAlternative()); - } $src = $stream->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine()); - - trigger_deprecation($test->getDeprecatingPackage(), $test->getDeprecatedVersion(), $message); + $test->triggerDeprecation($src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine()); } - return $test->getNodeClass(); + return $test; } - private function getFunctionNodeClass(string $name, int $line): string + private function getFunction(string $name, int $line): TwigFunction { if (!$function = $this->env->getFunction($name)) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigFunction($name, fn () => ''); + } $e = new SyntaxError(\sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFunctions())); @@ -796,22 +807,19 @@ class ExpressionParser } if ($function->isDeprecated()) { - $message = \sprintf('Twig Function "%s" is deprecated', $function->getName()); - if ($function->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $function->getAlternative()); - } $src = $this->parser->getStream()->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line); - - trigger_deprecation($function->getDeprecatingPackage(), $function->getDeprecatedVersion(), $message); + $function->triggerDeprecation($src->getPath() ?: $src->getName(), $line); } - return $function->getNodeClass(); + return $function; } - private function getFilterNodeClass(string $name, int $line): string + private function getFilter(string $name, int $line): TwigFilter { if (!$filter = $this->env->getFilter($name)) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigFilter($name, fn () => ''); + } $e = new SyntaxError(\sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFilters())); @@ -819,20 +827,15 @@ class ExpressionParser } if ($filter->isDeprecated()) { - $message = \sprintf('Twig Filter "%s" is deprecated', $filter->getName()); - if ($filter->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $filter->getAlternative()); - } $src = $this->parser->getStream()->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line); - - trigger_deprecation($filter->getDeprecatingPackage(), $filter->getDeprecatedVersion(), $message); + $filter->triggerDeprecation($src->getPath() ?: $src->getName(), $line); } - return $filter->getNodeClass(); + return $filter; } // checks that the node only contains "constant" elements + // to be removed in 4.0 private function checkConstantExpression(Node $node): bool { if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression @@ -849,4 +852,150 @@ class ExpressionParser return true; } + + private function setDeprecationCheck(bool $deprecationCheck): bool + { + $current = $this->deprecationCheck; + $this->deprecationCheck = $deprecationCheck; + + return $current; + } + + private function createArguments(int $line): ArrayExpression + { + $arguments = new ArrayExpression([], $line); + foreach ($this->parseOnlyArguments() as $k => $n) { + $arguments->addElement($n, new LocalVariable($k, $line)); + } + + return $arguments; + } + + public function parseOnlyArguments() + { + $args = []; + $stream = $this->parser->getStream(); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + $hasSpread = false; + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if ($args) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { + break; + } + } + + if ($stream->nextIf(Token::SPREAD_TYPE)) { + $hasSpread = true; + $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine()); + } elseif ($hasSpread) { + throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } else { + $value = $this->parseExpression(); + } + + $name = null; + if (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || ($token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':'))) { + if (!$value instanceof NameExpression) { + throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext()); + } + $name = $value->getAttribute('name'); + $value = $this->parseExpression(); + } + + if (null === $name) { + $args[] = $value; + } else { + $args[$name] = $value; + } + } + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); + + return new Nodes($args); + } + + private function parseSubscriptExpressionDot(Node $node): AbstractExpression + { + $stream = $this->parser->getStream(); + $token = $stream->getCurrent(); + $lineno = $token->getLine(); + $arguments = new ArrayExpression([], $lineno); + $type = Template::ANY_CALL; + + if ($stream->nextIf(Token::PUNCTUATION_TYPE, '(')) { + $attribute = $this->parseExpression(); + $stream->expect(Token::PUNCTUATION_TYPE, ')'); + } else { + $token = $stream->next(); + if ( + Token::NAME_TYPE == $token->getType() + || Token::NUMBER_TYPE == $token->getType() + || (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) + ) { + $attribute = new ConstantExpression($token->getValue(), $token->getLine()); + } else { + throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $token->getLine(), $stream->getSourceContext()); + } + } + + if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { + $type = Template::METHOD_CALL; + $arguments = $this->createArguments($token->getLine()); + } + + if ( + $node instanceof NameExpression + && ( + null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name')) + || '_self' === $node->getAttribute('name') && $attribute instanceof ConstantExpression + ) + ) { + return new MacroReferenceExpression(new TemplateVariable($node->getAttribute('name'), $node->getTemplateLine()), 'macro_'.$attribute->getAttribute('value'), $arguments, $node->getTemplateLine()); + } + + return new GetAttrExpression($node, $attribute, $arguments, $type, $lineno); + } + + private function parseSubscriptExpressionArray(Node $node): AbstractExpression + { + $stream = $this->parser->getStream(); + $token = $stream->getCurrent(); + $lineno = $token->getLine(); + $arguments = new ArrayExpression([], $lineno); + + // slice? + $slice = false; + if ($stream->test(Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + $attribute = new ConstantExpression(0, $token->getLine()); + } else { + $attribute = $this->parseExpression(); + } + + if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + } + + if ($slice) { + if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { + $length = new ConstantExpression(null, $token->getLine()); + } else { + $length = $this->parseExpression(); + } + + $filter = $this->getFilter('slice', $token->getLine()); + $arguments = new Nodes([$attribute, $length]); + $filter = new ($filter->getNodeClass())($node, $filter, $arguments, $token->getLine()); + + $stream->expect(Token::PUNCTUATION_TYPE, ']'); + + return $filter; + } + + $stream->expect(Token::PUNCTUATION_TYPE, ']'); + + return new GetAttrExpression($node, $attribute, $arguments, Template::ARRAY_CALL, $lineno); + } } diff --git a/includes/lib/Twig/Extension/CoreExtension.php b/includes/lib/Twig/Extension/CoreExtension.php index 5ac8088..01e7285 100644 --- a/includes/lib/Twig/Extension/CoreExtension.php +++ b/includes/lib/Twig/Extension/CoreExtension.php @@ -11,11 +11,14 @@ namespace Twig\Extension; +use Twig\DeprecatedCallableInfo; use Twig\Environment; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; +use Twig\Error\SyntaxError; use Twig\ExpressionParser; use Twig\Markup; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\Binary\AddBinary; use Twig\Node\Expression\Binary\AndBinary; use Twig\Node\Expression\Binary\BitwiseAndBinary; @@ -23,6 +26,7 @@ use Twig\Node\Expression\Binary\BitwiseOrBinary; use Twig\Node\Expression\Binary\BitwiseXorBinary; use Twig\Node\Expression\Binary\ConcatBinary; use Twig\Node\Expression\Binary\DivBinary; +use Twig\Node\Expression\Binary\ElvisBinary; use Twig\Node\Expression\Binary\EndsWithBinary; use Twig\Node\Expression\Binary\EqualBinary; use Twig\Node\Expression\Binary\FloorDivBinary; @@ -38,14 +42,20 @@ use Twig\Node\Expression\Binary\ModBinary; use Twig\Node\Expression\Binary\MulBinary; use Twig\Node\Expression\Binary\NotEqualBinary; use Twig\Node\Expression\Binary\NotInBinary; +use Twig\Node\Expression\Binary\NullCoalesceBinary; use Twig\Node\Expression\Binary\OrBinary; use Twig\Node\Expression\Binary\PowerBinary; use Twig\Node\Expression\Binary\RangeBinary; use Twig\Node\Expression\Binary\SpaceshipBinary; use Twig\Node\Expression\Binary\StartsWithBinary; use Twig\Node\Expression\Binary\SubBinary; +use Twig\Node\Expression\Binary\XorBinary; +use Twig\Node\Expression\BlockReferenceExpression; use Twig\Node\Expression\Filter\DefaultFilter; -use Twig\Node\Expression\NullCoalesceExpression; +use Twig\Node\Expression\FunctionNode\EnumCasesFunction; +use Twig\Node\Expression\FunctionNode\EnumFunction; +use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\ParentExpression; use Twig\Node\Expression\Test\ConstantTest; use Twig\Node\Expression\Test\DefinedTest; use Twig\Node\Expression\Test\DivisiblebyTest; @@ -56,7 +66,11 @@ use Twig\Node\Expression\Test\SameasTest; use Twig\Node\Expression\Unary\NegUnary; use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Expression\Unary\PosUnary; -use Twig\NodeVisitor\MacroAutoImportNodeVisitor; +use Twig\Node\Node; +use Twig\OperatorPrecedenceChange; +use Twig\Parser; +use Twig\Sandbox\SecurityNotAllowedMethodError; +use Twig\Sandbox\SecurityNotAllowedPropertyError; use Twig\Source; use Twig\Template; use Twig\TemplateWrapper; @@ -69,19 +83,38 @@ use Twig\TokenParser\ExtendsTokenParser; use Twig\TokenParser\FlushTokenParser; use Twig\TokenParser\ForTokenParser; use Twig\TokenParser\FromTokenParser; +use Twig\TokenParser\GuardTokenParser; use Twig\TokenParser\IfTokenParser; use Twig\TokenParser\ImportTokenParser; use Twig\TokenParser\IncludeTokenParser; use Twig\TokenParser\MacroTokenParser; use Twig\TokenParser\SetTokenParser; +use Twig\TokenParser\TypesTokenParser; use Twig\TokenParser\UseTokenParser; use Twig\TokenParser\WithTokenParser; use Twig\TwigFilter; use Twig\TwigFunction; use Twig\TwigTest; +use Twig\Util\CallableArgumentsExtractor; final class CoreExtension extends AbstractExtension { + public const ARRAY_LIKE_CLASSES = [ + 'ArrayIterator', + 'ArrayObject', + 'CachingIterator', + 'RecursiveArrayIterator', + 'RecursiveCachingIterator', + 'SplDoublyLinkedList', + 'SplFixedArray', + 'SplObjectStorage', + 'SplQueue', + 'SplStack', + 'WeakMap', + ]; + + private const DEFAULT_TRIM_CHARS = " \t\n\r\0\x0B"; + private $dateFormats = ['F j, Y H:i', '%d days']; private $numberFormat = [0, '.', ',']; private $timezone = null; @@ -173,11 +206,13 @@ final class CoreExtension extends AbstractExtension new ImportTokenParser(), new FromTokenParser(), new SetTokenParser(), + new TypesTokenParser(), new FlushTokenParser(), new DoTokenParser(), new EmbedTokenParser(), new WithTokenParser(), new DeprecatedTokenParser(), + new GuardTokenParser(), ]; } @@ -206,7 +241,7 @@ final class CoreExtension extends AbstractExtension new TwigFilter('striptags', [self::class, 'striptags']), new TwigFilter('trim', [self::class, 'trim']), new TwigFilter('nl2br', [self::class, 'nl2br'], ['pre_escape' => 'html', 'is_safe' => ['html']]), - new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html']]), + new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html'], 'deprecation_info' => new DeprecatedCallableInfo('twig/twig', '3.12')]), // array helpers new TwigFilter('join', [self::class, 'join']), @@ -237,6 +272,9 @@ final class CoreExtension extends AbstractExtension public function getFunctions(): array { return [ + new TwigFunction('parent', null, ['parser_callable' => [self::class, 'parseParentFunction']]), + new TwigFunction('block', null, ['parser_callable' => [self::class, 'parseBlockFunction']]), + new TwigFunction('attribute', null, ['parser_callable' => [self::class, 'parseAttributeFunction']]), new TwigFunction('max', 'max'), new TwigFunction('min', 'min'), new TwigFunction('range', 'range'), @@ -246,6 +284,8 @@ final class CoreExtension extends AbstractExtension new TwigFunction('date', [$this, 'convertDate']), new TwigFunction('include', [self::class, 'include'], ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]), new TwigFunction('source', [self::class, 'source'], ['needs_environment' => true, 'is_safe' => ['all']]), + new TwigFunction('enum_cases', [self::class, 'enumCases'], ['node_class' => EnumCasesFunction::class]), + new TwigFunction('enum', [self::class, 'enum'], ['node_class' => EnumFunction::class]), ]; } @@ -269,19 +309,23 @@ final class CoreExtension extends AbstractExtension public function getNodeVisitors(): array { - return [new MacroAutoImportNodeVisitor()]; + return []; } public function getOperators(): array { return [ [ - 'not' => ['precedence' => 50, 'class' => NotUnary::class], + 'not' => ['precedence' => 50, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 70), 'class' => NotUnary::class], '-' => ['precedence' => 500, 'class' => NegUnary::class], '+' => ['precedence' => 500, 'class' => PosUnary::class], ], [ + '? :' => ['precedence' => 5, 'class' => ElvisBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + '?:' => ['precedence' => 5, 'class' => ElvisBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + '??' => ['precedence' => 300, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 5), 'class' => NullCoalesceBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], 'or' => ['precedence' => 10, 'class' => OrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'xor' => ['precedence' => 12, 'class' => XorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'and' => ['precedence' => 15, 'class' => AndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-or' => ['precedence' => 16, 'class' => BitwiseOrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-xor' => ['precedence' => 17, 'class' => BitwiseXorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], @@ -303,7 +347,7 @@ final class CoreExtension extends AbstractExtension '..' => ['precedence' => 25, 'class' => RangeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '+' => ['precedence' => 30, 'class' => AddBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '-' => ['precedence' => 30, 'class' => SubBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], - '~' => ['precedence' => 40, 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '~' => ['precedence' => 40, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 27), 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '*' => ['precedence' => 60, 'class' => MulBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '/' => ['precedence' => 60, 'class' => DivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '//' => ['precedence' => 60, 'class' => FloorDivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], @@ -311,32 +355,44 @@ final class CoreExtension extends AbstractExtension 'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], '**' => ['precedence' => 200, 'class' => PowerBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], - '??' => ['precedence' => 300, 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], ], ]; } /** - * Cycles over a value. + * Cycles over a sequence. * - * @param \ArrayAccess|array $values - * @param int $position The cycle position + * @param array|\ArrayAccess $values A non-empty sequence of values + * @param int<0, max> $position The position of the value to return in the cycle * - * @return string The next value in the cycle + * @return mixed The value at the given position in the sequence, wrapping around as needed * * @internal */ - public static function cycle($values, $position): string + public static function cycle($values, $position): mixed { - if (!\is_array($values) && !$values instanceof \ArrayAccess) { - return $values; + if (!\is_array($values)) { + if (!$values instanceof \ArrayAccess) { + throw new RuntimeError('The "cycle" function expects an array or "ArrayAccess" as first argument.'); + } + + if (!is_countable($values)) { + // To be uncommented in 4.0 + // throw new RuntimeError('The "cycle" function expects a countable sequence as first argument.'); + + trigger_deprecation('twig/twig', '3.12', 'Passing a non-countable sequence of values to "%s()" is deprecated.', __METHOD__); + + return $values; + } + + $values = self::toArray($values, false); } - if (!\count($values)) { - throw new RuntimeError('The "cycle" function does not work on empty sequences/mappings.'); + if (!$count = \count($values)) { + throw new RuntimeError('The "cycle" function expects a non-empty sequence.'); } - return $values[$position % \count($values)]; + return $values[$position % $count]; } /** @@ -403,7 +459,7 @@ final class CoreExtension extends AbstractExtension $values = self::toArray($values); if (0 === \count($values)) { - throw new RuntimeError('The random function cannot pick from an empty sequence/mapping.'); + throw new RuntimeError('The "random" function cannot pick from an empty sequence or mapping.'); } return $values[array_rand($values, 1)]; @@ -414,9 +470,9 @@ final class CoreExtension extends AbstractExtension * * {{ post.published_at|date("m/d/Y") }} * - * @param \DateTimeInterface|\DateInterval|string $date A date - * @param string|null $format The target format, null to use the default - * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param \DateTimeInterface|\DateInterval|string|int|null $date A date, a timestamp or null to use the current time + * @param string|null $format The target format, null to use the default + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged */ public function formatDate($date, $format = null, $timezone = null): string { @@ -437,8 +493,8 @@ final class CoreExtension extends AbstractExtension * * {{ post.published_at|date_modify("-1day")|date("m/d/Y") }} * - * @param \DateTimeInterface|string $date A date - * @param string $modifier A modifier string + * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time + * @param string $modifier A modifier string * * @return \DateTime|\DateTimeImmutable * @@ -477,8 +533,8 @@ final class CoreExtension extends AbstractExtension * {# do something #} * {% endif %} * - * @param \DateTimeInterface|string|null $date A date or null to use the current time - * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged * * @return \DateTime|\DateTimeImmutable */ @@ -516,7 +572,7 @@ final class CoreExtension extends AbstractExtension } $asString = (string) $date; - if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { + if (ctype_digit($asString) || ('' !== $asString && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { $date = new \DateTime('@'.$date); } else { $date = new \DateTime($date, $this->getTimezone()); @@ -540,7 +596,7 @@ final class CoreExtension extends AbstractExtension public static function replace($str, $from): string { if (!is_iterable($from)) { - throw new RuntimeError(\sprintf('The "replace" filter expects a sequence/mapping or "Traversable" as replace values, got "%s".', \is_object($from) ? \get_class($from) : \gettype($from))); + throw new RuntimeError(\sprintf('The "replace" filter expects a sequence or a mapping, got "%s".', get_debug_type($from))); } return strtr($str ?? '', self::toArray($from)); @@ -549,11 +605,11 @@ final class CoreExtension extends AbstractExtension /** * Rounds a number. * - * @param int|float|string|null $value The value to round - * @param int|float $precision The rounding precision - * @param string $method The method to use for rounding + * @param int|float|string|null $value The value to round + * @param int|float $precision The rounding precision + * @param 'common'|'ceil'|'floor' $method The method to use for rounding * - * @return int|float The rounded number + * @return float The rounded number * * @internal */ @@ -566,7 +622,7 @@ final class CoreExtension extends AbstractExtension } if ('ceil' !== $method && 'floor' !== $method) { - throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); + throw new RuntimeError('The "round" filter only supports the "common", "ceil", and "floor" methods.'); } return $method($value * 10 ** $precision) / 10 ** $precision; @@ -637,7 +693,7 @@ final class CoreExtension extends AbstractExtension foreach ($arrays as $argNumber => $array) { if (!is_iterable($array)) { - throw new RuntimeError(\sprintf('The merge filter only works with sequences/mappings or "Traversable", got "%s" for argument %d.', \gettype($array), $argNumber + 1)); + throw new RuntimeError(\sprintf('The "merge" filter expects a sequence or a mapping, got "%s" for argument %d.', get_debug_type($array), $argNumber + 1)); } $result = array_merge($result, self::toArray($array)); @@ -729,9 +785,9 @@ final class CoreExtension extends AbstractExtension * {{ [1, 2, 3]|join }} * {# returns 123 #} * - * @param array $value An array - * @param string $glue The separator - * @param string|null $and The separator for the last pair + * @param iterable|array|string|float|int|bool|null $value An array + * @param string $glue The separator + * @param string|null $and The separator for the last pair * * @internal */ @@ -804,9 +860,6 @@ final class CoreExtension extends AbstractExtension return $r; } - // The '_default' filter is used internally to avoid using the ternary operator - // which costs a lot for big contexts (before PHP 5.4). So, on average, - // a function call is cheaper. /** * @internal */ @@ -939,6 +992,7 @@ final class CoreExtension extends AbstractExtension * Sorts an array. * * @param array|\Traversable $array + * @param ?\Closure $arrow * * @internal */ @@ -947,11 +1001,11 @@ final class CoreExtension extends AbstractExtension if ($array instanceof \Traversable) { $array = iterator_to_array($array); } elseif (!\is_array($array)) { - throw new RuntimeError(\sprintf('The sort filter only works with sequences/mappings or "Traversable", got "%s".', \gettype($array))); + throw new RuntimeError(\sprintf('The "sort" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); } if (null !== $arrow) { - self::checkArrowInSandbox($env, $arrow, 'sort', 'filter'); + self::checkArrow($env, $arrow, 'sort', 'filter'); uasort($array, $arrow); } else { @@ -1090,30 +1144,29 @@ final class CoreExtension extends AbstractExtension /** * Returns a trimmed string. * - * @param string|null $string - * @param string|null $characterMask - * @param string $side + * @param string|\Stringable|null $string + * @param string|null $characterMask + * @param string $side left, right, or both * - * @throws RuntimeError When an invalid trimming side is used (not a string or not 'left', 'right', or 'both') + * @throws RuntimeError When an invalid trimming side is used * * @internal */ - public static function trim($string, $characterMask = null, $side = 'both'): string + public static function trim($string, $characterMask = null, $side = 'both'): string|\Stringable { if (null === $characterMask) { - $characterMask = " \t\n\r\0\x0B"; + $characterMask = self::DEFAULT_TRIM_CHARS; } - switch ($side) { - case 'both': - return trim($string ?? '', $characterMask); - case 'left': - return ltrim($string ?? '', $characterMask); - case 'right': - return rtrim($string ?? '', $characterMask); - default: - throw new RuntimeError('Trimming side must be "left", "right" or "both".'); - } + $trimmed = match ($side) { + 'both' => trim($string ?? '', $characterMask), + 'left' => ltrim($string ?? '', $characterMask), + 'right' => rtrim($string ?? '', $characterMask), + default => throw new RuntimeError('Trimming side must be "left", "right" or "both".'), + }; + + // trimming a safe string with the default character mask always returns a safe string (independently of the context) + return $string instanceof Markup && self::DEFAULT_TRIM_CHARS === $characterMask ? new Markup($trimmed, $string->getCharset()) : $trimmed; } /** @@ -1181,7 +1234,7 @@ final class CoreExtension extends AbstractExtension return iterator_count($thing); } - if (method_exists($thing, '__toString')) { + if ($thing instanceof \Stringable) { return mb_strlen((string) $thing, $charset); } @@ -1251,6 +1304,8 @@ final class CoreExtension extends AbstractExtension /** * @internal + * + * to be removed in 4.0 */ public static function callMacro(Template $template, string $method, array $args, int $lineno, array $context, Source $source) { @@ -1269,6 +1324,12 @@ final class CoreExtension extends AbstractExtension } /** + * @template TSequence + * + * @param TSequence $seq + * + * @return ($seq is iterable ? TSequence : array{}) + * * @internal */ public static function ensureTraversable($seq) @@ -1318,7 +1379,7 @@ final class CoreExtension extends AbstractExtension return !iterator_count($value); } - if (\is_object($value) && method_exists($value, '__toString')) { + if ($value instanceof \Stringable) { return '' === (string) $value; } @@ -1400,13 +1461,6 @@ final class CoreExtension extends AbstractExtension if (!$alreadySandboxed = $sandbox->isSandboxed()) { $sandbox->enableSandbox(); } - - foreach ((\is_array($template) ? $template : [$template]) as $name) { - // if a Template instance is passed, it might have been instantiated outside of a sandbox, check security - if ($name instanceof TemplateWrapper || $name instanceof Template) { - $name->unwrap()->checkSecurity(); - } - } } try { @@ -1417,9 +1471,15 @@ final class CoreExtension extends AbstractExtension if (!$ignoreMissing) { throw $e; } + + return ''; } - return $loaded ? $loaded->render($variables) : ''; + if ($isSandboxed) { + $loaded->unwrap()->checkSecurity(); + } + + return $loaded->render($variables); } finally { if ($isSandboxed && !$alreadySandboxed) { $sandbox->disableSandbox(); @@ -1450,56 +1510,85 @@ final class CoreExtension extends AbstractExtension } /** - * Provides the ability to get constants from instances as well as class/global constants. + * Returns the list of cases of the enum. * - * @param string $constant The name of the constant - * @param object|null $object The object to get the constant from + * @template T of \UnitEnum * - * @return mixed Class constants can return many types like scalars, arrays, and - * objects depending on the PHP version (\BackedEnum, \UnitEnum, etc.) + * @param class-string $enum + * + * @return list * * @internal */ - public static function constant($constant, $object = null) + public static function enumCases(string $enum): array + { + if (!enum_exists($enum)) { + throw new RuntimeError(\sprintf('Enum "%s" does not exist.', $enum)); + } + + return $enum::cases(); + } + + /** + * Provides the ability to access enums by their class names. + * + * @template T of \UnitEnum + * + * @param class-string $enum + * + * @return T + * + * @internal + */ + public static function enum(string $enum): \UnitEnum + { + if (!enum_exists($enum)) { + throw new RuntimeError(\sprintf('"%s" is not an enum.', $enum)); + } + + if (!$cases = $enum::cases()) { + throw new RuntimeError(\sprintf('"%s" is an empty enum.', $enum)); + } + + return $cases[0]; + } + + /** + * Provides the ability to get constants from instances as well as class/global constants. + * + * @param string $constant The name of the constant + * @param object|null $object The object to get the constant from + * @param bool $checkDefined Whether to check if the constant is defined or not + * + * @return mixed Class constants can return many types like scalars, arrays, and + * objects depending on the PHP version (\BackedEnum, \UnitEnum, etc.) + * When $checkDefined is true, returns true when the constant is defined, false otherwise + * + * @internal + */ + public static function constant($constant, $object = null, bool $checkDefined = false) { if (null !== $object) { if ('class' === $constant) { - return \get_class($object); + return $checkDefined ? true : \get_class($object); } $constant = \get_class($object).'::'.$constant; } if (!\defined($constant)) { + if ($checkDefined) { + return false; + } + if ('::class' === strtolower(substr($constant, -7))) { - throw new RuntimeError(\sprintf('You cannot use the Twig function "constant()" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant)); + throw new RuntimeError(\sprintf('You cannot use the Twig function "constant" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant)); } throw new RuntimeError(\sprintf('Constant "%s" is undefined.', $constant)); } - return \constant($constant); - } - - /** - * Checks if a constant exists. - * - * @param string $constant The name of the constant - * @param object|null $object The object to get the constant from - * - * @internal - */ - public static function constantIsDefined($constant, $object = null): bool - { - if (null !== $object) { - if ('class' === $constant) { - return true; - } - - $constant = \get_class($object).'::'.$constant; - } - - return \defined($constant); + return $checkDefined ? true : \constant($constant); } /** @@ -1514,7 +1603,7 @@ final class CoreExtension extends AbstractExtension public static function batch($items, $size, $fill = null, $preserveKeys = true): array { if (!is_iterable($items)) { - throw new RuntimeError(\sprintf('The "batch" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items))); + throw new RuntimeError(\sprintf('The "batch" filter expects a sequence or a mapping, got "%s".', get_debug_type($items))); } $size = (int) ceil($size); @@ -1550,15 +1639,27 @@ final class CoreExtension extends AbstractExtension * * @internal */ - public static function getAttribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = /* Template::ANY_CALL */ 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) + public static function getAttribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = Template::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) { + $propertyNotAllowedError = null; + // array - if (/* Template::METHOD_CALL */ 'method' !== $type) { + if (Template::METHOD_CALL !== $type) { $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item; - if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object))) - || ($object instanceof \ArrayAccess && isset($object[$arrayItem])) - ) { + if ($sandboxed && $object instanceof \ArrayAccess && !\in_array($object::class, self::ARRAY_LIKE_CLASSES, true)) { + try { + $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $arrayItem, $lineno, $source); + } catch (SecurityNotAllowedPropertyError $propertyNotAllowedError) { + goto methodCheck; + } + } + + if (match (true) { + \is_array($object) => \array_key_exists($arrayItem, $object), + $object instanceof \ArrayAccess => $object->offsetExists($arrayItem), + default => false, + }) { if ($isDefinedTest) { return true; } @@ -1566,7 +1667,7 @@ final class CoreExtension extends AbstractExtension return $object[$arrayItem]; } - if (/* Template::ARRAY_CALL */ 'array' === $type || !\is_object($object)) { + if (Template::ARRAY_CALL === $type || !\is_object($object)) { if ($isDefinedTest) { return false; } @@ -1580,27 +1681,29 @@ final class CoreExtension extends AbstractExtension } elseif (\is_object($object)) { $message = \sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, \get_class($object)); } elseif (\is_array($object)) { - if (empty($object)) { + if (!$object) { $message = \sprintf('Key "%s" does not exist as the sequence/mapping is empty.', $arrayItem); } else { $message = \sprintf('Key "%s" for sequence/mapping with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object))); } - } elseif (/* Template::ARRAY_CALL */ 'array' === $type) { + } elseif (Template::ARRAY_CALL === $type) { if (null === $object) { $message = \sprintf('Impossible to access a key ("%s") on a null variable.', $item); } else { - $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } } elseif (null === $object) { $message = \sprintf('Impossible to access an attribute ("%s") on a null variable.', $item); } else { - $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } throw new RuntimeError($message, $lineno, $source); } } + $item = (string) $item; + if (!\is_object($object)) { if ($isDefinedTest) { return false; @@ -1615,7 +1718,7 @@ final class CoreExtension extends AbstractExtension } elseif (\is_array($object)) { $message = \sprintf('Impossible to invoke a method ("%s") on a sequence/mapping.', $item); } else { - $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } throw new RuntimeError($message, $lineno, $source); @@ -1626,20 +1729,50 @@ final class CoreExtension extends AbstractExtension } // object property - if (/* Template::METHOD_CALL */ 'method' !== $type) { - if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) { + if (Template::METHOD_CALL !== $type) { + if ($sandboxed) { + try { + $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $item, $lineno, $source); + } catch (SecurityNotAllowedPropertyError $propertyNotAllowedError) { + goto methodCheck; + } + } + + static $propertyCheckers = []; + + if ($object instanceof \Closure && '__invoke' === $item) { + return $isDefinedTest ? true : $object(); + } + + if (isset($object->$item) + || ($propertyCheckers[$object::class][$item] ??= self::getPropertyChecker($object::class, $item))($object, $item) + ) { if ($isDefinedTest) { return true; } - if ($sandboxed) { - $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $item, $lineno, $source); - } - return $object->$item; } + + if ($object instanceof \DateTimeInterface && \in_array($item, ['date', 'timezone', 'timezone_type'], true)) { + if ($isDefinedTest) { + return true; + } + + return ((array) $object)[$item]; + } + + if (\defined($object::class.'::'.$item)) { + if ($isDefinedTest) { + return true; + } + + return \constant($object::class.'::'.$item); + } } + methodCheck: + static $cache = []; $class = \get_class($object); @@ -1648,8 +1781,11 @@ final class CoreExtension extends AbstractExtension // precedence: getXxx() > isXxx() > hasXxx() if (!isset($cache[$class])) { $methods = get_class_methods($object); + if ($object instanceof \Closure) { + $methods[] = '__invoke'; + } sort($methods); - $lcMethods = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, $methods); + $lcMethods = array_map('strtolower', $methods); $classCache = []; foreach ($methods as $i => $method) { $classCache[$method] = $method; @@ -1688,7 +1824,7 @@ final class CoreExtension extends AbstractExtension $call = false; if (isset($cache[$class][$item])) { $method = $cache[$class][$item]; - } elseif (isset($cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) { + } elseif (isset($cache[$class][$lcItem = strtolower($item)])) { $method = $cache[$class][$lcItem]; } elseif (isset($cache[$class]['__call'])) { $method = $item; @@ -1698,6 +1834,10 @@ final class CoreExtension extends AbstractExtension return false; } + if ($propertyNotAllowedError) { + throw $propertyNotAllowedError; + } + if ($ignoreStrictCheck || !$env->isStrictVariables()) { return; } @@ -1705,12 +1845,24 @@ final class CoreExtension extends AbstractExtension throw new RuntimeError(\sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()"/"has%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), $lineno, $source); } - if ($isDefinedTest) { - return true; + if ($sandboxed) { + try { + $env->getExtension(SandboxExtension::class)->checkMethodAllowed($object, $method, $lineno, $source); + } catch (SecurityNotAllowedMethodError $e) { + if ($isDefinedTest) { + return false; + } + + if ($propertyNotAllowedError) { + throw $propertyNotAllowedError; + } + + throw $e; + } } - if ($sandboxed) { - $env->getExtension(SandboxExtension::class)->checkMethodAllowed($object, $method, $lineno, $source); + if ($isDefinedTest) { + return true; } // Some objects throw exceptions when they have __call, and the method we try @@ -1748,25 +1900,29 @@ final class CoreExtension extends AbstractExtension */ public static function column($array, $name, $index = null): array { + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "column" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + if ($array instanceof \Traversable) { $array = iterator_to_array($array); - } elseif (!\is_array($array)) { - throw new RuntimeError(\sprintf('The column filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array))); } return array_column($array, $name, $index); } /** + * @param \Closure $arrow + * * @internal */ public static function filter(Environment $env, $array, $arrow) { if (!is_iterable($array)) { - throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array))); + throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', get_debug_type($array))); } - self::checkArrowInSandbox($env, $arrow, 'filter', 'filter'); + self::checkArrow($env, $arrow, 'filter', 'filter'); if (\is_array($array)) { return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH); @@ -1777,11 +1933,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function find(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'find', 'filter'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "find" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'find', 'filter'); foreach ($array as $k => $v) { if ($arrow($v, $k)) { @@ -1793,11 +1955,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function map(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'map', 'filter'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "map" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'map', 'filter'); $r = []; foreach ($array as $k => $v) { @@ -1808,16 +1976,18 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function reduce(Environment $env, $array, $arrow, $initial = null) { - self::checkArrowInSandbox($env, $arrow, 'reduce', 'filter'); - - if (!\is_array($array) && !$array instanceof \Traversable) { - throw new RuntimeError(\sprintf('The "reduce" filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array))); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "reduce" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); } + self::checkArrow($env, $arrow, 'reduce', 'filter'); + $accumulator = $initial; foreach ($array as $key => $value) { $accumulator = $arrow($accumulator, $value, $key); @@ -1827,11 +1997,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function arraySome(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'has some', 'operator'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "has some" test expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'has some', 'operator'); foreach ($array as $k => $v) { if ($arrow($v, $k)) { @@ -1843,11 +2019,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function arrayEvery(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'has every', 'operator'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "has every" test expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'has every', 'operator'); foreach ($array as $k => $v) { if (!$arrow($v, $k)) { @@ -1861,11 +2043,17 @@ final class CoreExtension extends AbstractExtension /** * @internal */ - public static function checkArrowInSandbox(Environment $env, $arrow, $thing, $type) + public static function checkArrow(Environment $env, $arrow, $thing, $type) { - if (!$arrow instanceof \Closure && $env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) { + if ($arrow instanceof \Closure) { + return; + } + + if ($env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) { throw new RuntimeError(\sprintf('The callable passed to the "%s" %s must be a Closure in sandbox mode.', $thing, $type)); } + + trigger_deprecation('twig/twig', '3.15', 'Passing a callable that is not a PHP \Closure as an argument to the "%s" %s is deprecated.', $thing, $type); } /** @@ -1873,29 +2061,91 @@ final class CoreExtension extends AbstractExtension */ public static function captureOutput(iterable $body): string { - $output = ''; $level = ob_get_level(); ob_start(); try { foreach ($body as $data) { - if (ob_get_length()) { - $output .= ob_get_clean(); - ob_start(); - } - - $output .= $data; + echo $data; } - - if (ob_get_length()) { - $output .= ob_get_clean(); - } - } finally { + } catch (\Throwable $e) { while (ob_get_level() > $level) { ob_end_clean(); } + + throw $e; } - return $output; + return ob_get_clean(); + } + + /** + * @internal + */ + public static function parseParentFunction(Parser $parser, Node $fakeNode, $args, int $line): AbstractExpression + { + if (!$blockName = $parser->peekBlockStack()) { + throw new SyntaxError('Calling the "parent" function outside of a block is forbidden.', $line, $parser->getStream()->getSourceContext()); + } + + if (!$parser->hasInheritance()) { + throw new SyntaxError('Calling the "parent" function on a template that does not call "extends" or "use" is forbidden.', $line, $parser->getStream()->getSourceContext()); + } + + return new ParentExpression($blockName, $line); + } + + /** + * @internal + */ + public static function parseBlockFunction(Parser $parser, Node $fakeNode, $args, int $line): AbstractExpression + { + $fakeFunction = new TwigFunction('block', fn ($name, $template = null) => null); + $args = (new CallableArgumentsExtractor($fakeNode, $fakeFunction))->extractArguments($args); + + return new BlockReferenceExpression($args[0], $args[1] ?? null, $line); + } + + /** + * @internal + */ + public static function parseAttributeFunction(Parser $parser, Node $fakeNode, $args, int $line): AbstractExpression + { + $fakeFunction = new TwigFunction('attribute', fn ($variable, $attribute, $arguments = null) => null); + $args = (new CallableArgumentsExtractor($fakeNode, $fakeFunction))->extractArguments($args); + + /* + Deprecation to uncomment sometimes during the lifetime of the 4.x branch + $src = $parser->getStream()->getSourceContext(); + $dep = new DeprecatedCallableInfo('twig/twig', '3.15', 'The "attribute" function is deprecated, use the "." notation instead.'); + $dep->setName('attribute'); + $dep->setType('function'); + $dep->triggerDeprecation($src->getPath() ?: $src->getName(), $line); + */ + + return new GetAttrExpression($args[0], $args[1], $args[2] ?? null, Template::ANY_CALL, $line); + } + + private static function getPropertyChecker(string $class, string $property): \Closure + { + static $classReflectors = []; + + $class = $classReflectors[$class] ??= new \ReflectionClass($class); + + if (!$class->hasProperty($property)) { + static $propertyExists; + + return $propertyExists ??= \Closure::fromCallable('property_exists'); + } + + $property = $class->getProperty($property); + + if (!$property->isPublic()) { + static $false; + + return $false ??= static fn () => false; + } + + return static fn ($object) => $property->isInitialized($object); } } diff --git a/includes/lib/Twig/Extension/DebugExtension.php b/includes/lib/Twig/Extension/DebugExtension.php index cefb44c..dac21c3 100644 --- a/includes/lib/Twig/Extension/DebugExtension.php +++ b/includes/lib/Twig/Extension/DebugExtension.php @@ -22,10 +22,8 @@ final class DebugExtension extends AbstractExtension { // dump is safe if var_dump is overridden by xdebug $isDumpOutputHtmlSafe = \extension_loaded('xdebug') - // false means that it was not set (and the default is on) or it explicitly enabled - && (false === \ini_get('xdebug.overload_var_dump') || \ini_get('xdebug.overload_var_dump')) - // false means that it was not set (and the default is on) or it explicitly enabled - // xdebug.overload_var_dump produces HTML only when html_errors is also enabled + // Xdebug overloads var_dump in develop mode when html_errors is enabled + && str_contains(\ini_get('xdebug.mode'), 'develop') && (false === \ini_get('html_errors') || \ini_get('html_errors')) || 'cli' === \PHP_SAPI ; diff --git a/includes/lib/Twig/Extension/EscaperExtension.php b/includes/lib/Twig/Extension/EscaperExtension.php index d8e9b6e..52531c4 100644 --- a/includes/lib/Twig/Extension/EscaperExtension.php +++ b/includes/lib/Twig/Extension/EscaperExtension.php @@ -60,8 +60,9 @@ final class EscaperExtension extends AbstractExtension /** * @deprecated since Twig 3.10 */ - public function setEnvironment(Environment $environment, bool $triggerDeprecation = true): void + public function setEnvironment(Environment $environment): void { + $triggerDeprecation = \func_num_args() > 1 ? func_get_arg(1) : true; if ($triggerDeprecation) { trigger_deprecation('twig/twig', '3.10', 'The "%s()" method is deprecated and not needed if you are using methods from "Twig\Runtime\EscaperRuntime".', __METHOD__); } diff --git a/includes/lib/Twig/Extension/ExtensionInterface.php b/includes/lib/Twig/Extension/ExtensionInterface.php index 10a42b6..d51cd3e 100644 --- a/includes/lib/Twig/Extension/ExtensionInterface.php +++ b/includes/lib/Twig/Extension/ExtensionInterface.php @@ -12,8 +12,10 @@ namespace Twig\Extension; use Twig\ExpressionParser; -use Twig\Node\Expression\AbstractExpression; +use Twig\Node\Expression\Binary\AbstractBinary; +use Twig\Node\Expression\Unary\AbstractUnary; use Twig\NodeVisitor\NodeVisitorInterface; +use Twig\OperatorPrecedenceChange; use Twig\TokenParser\TokenParserInterface; use Twig\TwigFilter; use Twig\TwigFunction; @@ -67,8 +69,8 @@ interface ExtensionInterface * @return array First array of unary operators, second array of binary operators * * @psalm-return array{ - * array}>, - * array, associativity: ExpressionParser::OPERATOR_*}> + * array}>, + * array, associativity: ExpressionParser::OPERATOR_*}> * } */ public function getOperators(); diff --git a/includes/lib/Twig/Extension/GlobalsInterface.php b/includes/lib/Twig/Extension/GlobalsInterface.php index 6f1dfe8..d52cd10 100644 --- a/includes/lib/Twig/Extension/GlobalsInterface.php +++ b/includes/lib/Twig/Extension/GlobalsInterface.php @@ -12,10 +12,7 @@ namespace Twig\Extension; /** - * Enables usage of the deprecated Twig\Extension\AbstractExtension::getGlobals() method. - * - * Explicitly implement this interface if you really need to implement the - * deprecated getGlobals() method in your extensions. + * Allows Twig extensions to add globals to the context. * * @author Fabien Potencier */ diff --git a/includes/lib/Twig/Extension/OptimizerExtension.php b/includes/lib/Twig/Extension/OptimizerExtension.php index 965bfdb..d3fe46a 100644 --- a/includes/lib/Twig/Extension/OptimizerExtension.php +++ b/includes/lib/Twig/Extension/OptimizerExtension.php @@ -15,11 +15,9 @@ use Twig\NodeVisitor\OptimizerNodeVisitor; final class OptimizerExtension extends AbstractExtension { - private $optimizers; - - public function __construct(int $optimizers = -1) - { - $this->optimizers = $optimizers; + public function __construct( + private int $optimizers = -1, + ) { } public function getNodeVisitors(): array diff --git a/includes/lib/Twig/Extension/SandboxExtension.php b/includes/lib/Twig/Extension/SandboxExtension.php index 921df28..bbf7396 100644 --- a/includes/lib/Twig/Extension/SandboxExtension.php +++ b/includes/lib/Twig/Extension/SandboxExtension.php @@ -119,7 +119,13 @@ final class SandboxExtension extends AbstractExtension public function ensureToStringAllowed($obj, int $lineno = -1, ?Source $source = null) { - if ($this->isSandboxed($source) && \is_object($obj) && method_exists($obj, '__toString')) { + if (\is_array($obj)) { + $this->ensureToStringAllowedForArray($obj, $lineno, $source); + + return $obj; + } + + if ($obj instanceof \Stringable && $this->isSandboxed($source)) { try { $this->policy->checkMethodAllowed($obj, '__toString'); } catch (SecurityNotAllowedMethodError $e) { @@ -132,4 +138,28 @@ final class SandboxExtension extends AbstractExtension return $obj; } + + private function ensureToStringAllowedForArray(array $obj, int $lineno, ?Source $source, array &$stack = []): void + { + foreach ($obj as $k => $v) { + if (!$v) { + continue; + } + + if (!\is_array($v)) { + $this->ensureToStringAllowed($v, $lineno, $source); + continue; + } + + if ($r = \ReflectionReference::fromArrayElement($obj, $k)) { + if (isset($stack[$r->getId()])) { + continue; + } + + $stack[$r->getId()] = true; + } + + $this->ensureToStringAllowedForArray($v, $lineno, $source, $stack); + } + } } diff --git a/includes/lib/Twig/Extension/StringLoaderExtension.php b/includes/lib/Twig/Extension/StringLoaderExtension.php index 12f5c30..698d181 100644 --- a/includes/lib/Twig/Extension/StringLoaderExtension.php +++ b/includes/lib/Twig/Extension/StringLoaderExtension.php @@ -29,12 +29,11 @@ final class StringLoaderExtension extends AbstractExtension * * {{ include(template_from_string("Hello {{ name }}")) }} * - * @param string $template A template as a string or object implementing __toString() - * @param string|null $name An optional name of the template to be used in error messages + * @param string|null $name An optional name of the template to be used in error messages * * @internal */ - public static function templateFromString(Environment $env, $template, ?string $name = null): TemplateWrapper + public static function templateFromString(Environment $env, string|\Stringable $template, ?string $name = null): TemplateWrapper { return $env->createTemplate((string) $template, $name); } diff --git a/includes/lib/Twig/Extension/YieldNotReadyExtension.php b/includes/lib/Twig/Extension/YieldNotReadyExtension.php index 2503c8d..49dfb80 100644 --- a/includes/lib/Twig/Extension/YieldNotReadyExtension.php +++ b/includes/lib/Twig/Extension/YieldNotReadyExtension.php @@ -18,11 +18,9 @@ use Twig\NodeVisitor\YieldNotReadyNodeVisitor; */ final class YieldNotReadyExtension extends AbstractExtension { - private $useYield; - - public function __construct(bool $useYield) - { - $this->useYield = $useYield; + public function __construct( + private bool $useYield, + ) { } public function getNodeVisitors(): array diff --git a/includes/lib/Twig/ExtensionSet.php b/includes/lib/Twig/ExtensionSet.php index 8b59a13..e8b3174 100644 --- a/includes/lib/Twig/ExtensionSet.php +++ b/includes/lib/Twig/ExtensionSet.php @@ -15,7 +15,6 @@ use Twig\Error\RuntimeError; use Twig\Extension\ExtensionInterface; use Twig\Extension\GlobalsInterface; use Twig\Extension\StagingExtension; -use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\Binary\AbstractBinary; use Twig\Node\Expression\Unary\AbstractUnary; use Twig\NodeVisitor\NodeVisitorInterface; @@ -36,15 +35,21 @@ final class ExtensionSet private $visitors; /** @var array */ private $filters; + /** @var array */ + private $dynamicFilters; /** @var array */ private $tests; + /** @var array */ + private $dynamicTests; /** @var array */ private $functions; - /** @var array}> */ + /** @var array */ + private $dynamicFunctions; + /** @var array}> */ private $unaryOperators; - /** @var array, associativity: ExpressionParser::OPERATOR_*}> */ + /** @var array, associativity: ExpressionParser::OPERATOR_*}> */ private $binaryOperators; - /** @var array */ + /** @var array|null */ private $globals; private $functionCallbacks = []; private $filterCallbacks = []; @@ -167,14 +172,11 @@ final class ExtensionSet return $this->functions[$name]; } - foreach ($this->functions as $pattern => $function) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); - - if ($count && preg_match('#^'.$pattern.'$#', $name, $matches)) { + foreach ($this->dynamicFunctions as $pattern => $function) { + if (preg_match($pattern, $name, $matches)) { array_shift($matches); - $function->setArguments($matches); - return $function; + return $function->withDynamicArguments($name, $function->getName(), $matches); } } @@ -223,14 +225,11 @@ final class ExtensionSet return $this->filters[$name]; } - foreach ($this->filters as $pattern => $filter) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); - - if ($count && preg_match('#^'.$pattern.'$#', $name, $matches)) { + foreach ($this->dynamicFilters as $pattern => $filter) { + if (preg_match($pattern, $name, $matches)) { array_shift($matches); - $filter->setArguments($matches); - return $filter; + return $filter->withDynamicArguments($name, $filter->getName(), $matches); } } @@ -329,12 +328,7 @@ final class ExtensionSet continue; } - $extGlobals = $extension->getGlobals(); - if (!\is_array($extGlobals)) { - throw new \UnexpectedValueException(\sprintf('"%s::getGlobals()" must return an array of globals.', \get_class($extension))); - } - - $globals = array_merge($globals, $extGlobals); + $globals = array_merge($globals, $extension->getGlobals()); } if ($this->initialized) { @@ -344,6 +338,11 @@ final class ExtensionSet return $globals; } + public function resetGlobals(): void + { + $this->globals = null; + } + public function addTest(TwigTest $test): void { if ($this->initialized) { @@ -375,16 +374,11 @@ final class ExtensionSet return $this->tests[$name]; } - foreach ($this->tests as $pattern => $test) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); + foreach ($this->dynamicTests as $pattern => $test) { + if (preg_match($pattern, $name, $matches)) { + array_shift($matches); - if ($count) { - if (preg_match('#^'.$pattern.'$#', $name, $matches)) { - array_shift($matches); - $test->setArguments($matches); - - return $test; - } + return $test->withDynamicArguments($name, $test->getName(), $matches); } } @@ -392,7 +386,7 @@ final class ExtensionSet } /** - * @return array}> + * @return array}> */ public function getUnaryOperators(): array { @@ -404,7 +398,7 @@ final class ExtensionSet } /** - * @return array, associativity: ExpressionParser::OPERATOR_*}> + * @return array, associativity: ExpressionParser::OPERATOR_*}> */ public function getBinaryOperators(): array { @@ -421,6 +415,9 @@ final class ExtensionSet $this->filters = []; $this->functions = []; $this->tests = []; + $this->dynamicFilters = []; + $this->dynamicFunctions = []; + $this->dynamicTests = []; $this->visitors = []; $this->unaryOperators = []; $this->binaryOperators = []; @@ -437,17 +434,26 @@ final class ExtensionSet { // filters foreach ($extension->getFilters() as $filter) { - $this->filters[$filter->getName()] = $filter; + $this->filters[$name = $filter->getName()] = $filter; + if (str_contains($name, '*')) { + $this->dynamicFilters['#^'.str_replace('\\*', '(.*?)', preg_quote($name, '#')).'$#'] = $filter; + } } // functions foreach ($extension->getFunctions() as $function) { - $this->functions[$function->getName()] = $function; + $this->functions[$name = $function->getName()] = $function; + if (str_contains($name, '*')) { + $this->dynamicFunctions['#^'.str_replace('\\*', '(.*?)', preg_quote($name, '#')).'$#'] = $function; + } } // tests foreach ($extension->getTests() as $test) { - $this->tests[$test->getName()] = $test; + $this->tests[$name = $test->getName()] = $test; + if (str_contains($name, '*')) { + $this->dynamicTests['#^'.str_replace('\\*', '(.*?)', preg_quote($name, '#')).'$#'] = $test; + } } // token parsers @@ -467,7 +473,7 @@ final class ExtensionSet // operators if ($operators = $extension->getOperators()) { if (!\is_array($operators)) { - throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), \is_object($operators) ? \get_class($operators) : \gettype($operators).(\is_resource($operators) ? '' : '#'.$operators))); + throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), get_debug_type($operators).(\is_resource($operators) ? '' : '#'.$operators))); } if (2 !== \count($operators)) { diff --git a/includes/lib/Twig/FileExtensionEscapingStrategy.php b/includes/lib/Twig/FileExtensionEscapingStrategy.php index 812071b..5308158 100644 --- a/includes/lib/Twig/FileExtensionEscapingStrategy.php +++ b/includes/lib/Twig/FileExtensionEscapingStrategy.php @@ -45,6 +45,7 @@ class FileExtensionEscapingStrategy switch ($extension) { case 'js': + case 'json': return 'js'; case 'css': diff --git a/includes/lib/Twig/Lexer.php b/includes/lib/Twig/Lexer.php index 8973fbb..0338fd8 100644 --- a/includes/lib/Twig/Lexer.php +++ b/includes/lib/Twig/Lexer.php @@ -44,12 +44,29 @@ class Lexer public const STATE_INTERPOLATION = 4; public const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; - public const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A'; public const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; + + public const REGEX_NUMBER = '/(?(DEFINE) + (?[0-9]+(_[0-9]+)*) # Integers (with underscores) 123_456 + (?\.(?&LNUM)) # Fractional part .456 + (?[eE][+-]?(?&LNUM)) # Exponent part E+10 + (?(?&LNUM)(?:(?&FRAC))?) # Decimal number 123_456.456 + )(?:(?&DNUM)(?:(?&EXPONENT))?) # 123_456.456E+10 + /Ax'; + public const REGEX_DQ_STRING_DELIM = '/"/A'; public const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; + public const REGEX_INLINE_COMMENT = '/#[^\n]*/A'; public const PUNCTUATION = '()[]{}?:.,|'; + private const SPECIAL_CHARS = [ + 'f' => "\f", + 'n' => "\n", + 'r' => "\r", + 't' => "\t", + 'v' => "\v", + ]; + public function __construct(Environment $env, array $options = []) { $this->env = $env; @@ -207,9 +224,9 @@ class Lexer } } - $this->pushToken(/* Token::EOF_TYPE */ -1); + $this->pushToken(Token::EOF_TYPE); - if (!empty($this->brackets)) { + if ($this->brackets) { [$expect, $lineno] = array_pop($this->brackets); throw new SyntaxError(\sprintf('Unclosed "%s".', $expect), $lineno, $this->source); } @@ -221,7 +238,7 @@ class Lexer { // if no matches are left we return the rest of the template as simple text token if ($this->position == \count($this->positions[0]) - 1) { - $this->pushToken(/* Token::TEXT_TYPE */ 0, substr($this->code, $this->cursor)); + $this->pushToken(Token::TEXT_TYPE, substr($this->code, $this->cursor)); $this->cursor = $this->end; return; @@ -250,7 +267,7 @@ class Lexer $text = rtrim($text, " \t\0\x0B"); } } - $this->pushToken(/* Token::TEXT_TYPE */ 0, $text); + $this->pushToken(Token::TEXT_TYPE, $text); $this->moveCursor($textContent.$position[0]); switch ($this->positions[1][$this->position][0]) { @@ -268,14 +285,14 @@ class Lexer $this->moveCursor($match[0]); $this->lineno = (int) $match[1]; } else { - $this->pushToken(/* Token::BLOCK_START_TYPE */ 1); + $this->pushToken(Token::BLOCK_START_TYPE); $this->pushState(self::STATE_BLOCK); $this->currentVarBlockLine = $this->lineno; } break; case $this->options['tag_variable'][0]: - $this->pushToken(/* Token::VAR_START_TYPE */ 2); + $this->pushToken(Token::VAR_START_TYPE); $this->pushState(self::STATE_VAR); $this->currentVarBlockLine = $this->lineno; break; @@ -284,8 +301,8 @@ class Lexer private function lexBlock(): void { - if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::BLOCK_END_TYPE */ 3); + if (!$this->brackets && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(Token::BLOCK_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { @@ -295,8 +312,8 @@ class Lexer private function lexVar(): void { - if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::VAR_END_TYPE */ 4); + if (!$this->brackets && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(Token::VAR_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { @@ -327,21 +344,17 @@ class Lexer } // operators elseif (preg_match($this->regexes['operator'], $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::OPERATOR_TYPE */ 8, preg_replace('/\s+/', ' ', $match[0])); + $this->pushToken(Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0])); $this->moveCursor($match[0]); } // names elseif (preg_match(self::REGEX_NAME, $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::NAME_TYPE */ 5, $match[0]); + $this->pushToken(Token::NAME_TYPE, $match[0]); $this->moveCursor($match[0]); } // numbers elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, 0, $this->cursor)) { - $number = (float) $match[0]; // floats - if (ctype_digit($match[0]) && $number <= \PHP_INT_MAX) { - $number = (int) $match[0]; // integers lower than the maximum - } - $this->pushToken(/* Token::NUMBER_TYPE */ 6, $number); + $this->pushToken(Token::NUMBER_TYPE, 0 + str_replace('_', '', $match[0])); $this->moveCursor($match[0]); } // punctuation @@ -352,7 +365,7 @@ class Lexer } // closing bracket elseif (str_contains(')]}', $this->code[$this->cursor])) { - if (empty($this->brackets)) { + if (!$this->brackets) { throw new SyntaxError(\sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } @@ -362,12 +375,12 @@ class Lexer } } - $this->pushToken(/* Token::PUNCTUATION_TYPE */ 9, $this->code[$this->cursor]); + $this->pushToken(Token::PUNCTUATION_TYPE, $this->code[$this->cursor]); ++$this->cursor; } // strings elseif (preg_match(self::REGEX_STRING, $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::STRING_TYPE */ 7, stripcslashes(substr($match[0], 1, -1))); + $this->pushToken(Token::STRING_TYPE, $this->stripcslashes(substr($match[0], 1, -1), substr($match[0], 0, 1))); $this->moveCursor($match[0]); } // opening double quoted string @@ -376,12 +389,73 @@ class Lexer $this->pushState(self::STATE_STRING); $this->moveCursor($match[0]); } + // inline comment + elseif (preg_match(self::REGEX_INLINE_COMMENT, $this->code, $match, 0, $this->cursor)) { + $this->moveCursor($match[0]); + } // unlexable else { throw new SyntaxError(\sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } } + private function stripcslashes(string $str, string $quoteType): string + { + $result = ''; + $length = \strlen($str); + + $i = 0; + while ($i < $length) { + if (false === $pos = strpos($str, '\\', $i)) { + $result .= substr($str, $i); + break; + } + + $result .= substr($str, $i, $pos - $i); + $i = $pos + 1; + + if ($i >= $length) { + $result .= '\\'; + break; + } + + $nextChar = $str[$i]; + + if (isset(self::SPECIAL_CHARS[$nextChar])) { + $result .= self::SPECIAL_CHARS[$nextChar]; + } elseif ('\\' === $nextChar) { + $result .= $nextChar; + } elseif ("'" === $nextChar || '"' === $nextChar) { + if ($nextChar !== $quoteType) { + trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno); + } + $result .= $nextChar; + } elseif ('#' === $nextChar && $i + 1 < $length && '{' === $str[$i + 1]) { + $result .= '#{'; + ++$i; + } elseif ('x' === $nextChar && $i + 1 < $length && ctype_xdigit($str[$i + 1])) { + $hex = $str[++$i]; + if ($i + 1 < $length && ctype_xdigit($str[$i + 1])) { + $hex .= $str[++$i]; + } + $result .= \chr(hexdec($hex)); + } elseif (ctype_digit($nextChar) && $nextChar < '8') { + $octal = $nextChar; + while ($i + 1 < $length && ctype_digit($str[$i + 1]) && $str[$i + 1] < '8' && \strlen($octal) < 3) { + $octal .= $str[++$i]; + } + $result .= \chr(octdec($octal)); + } else { + trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno); + $result .= $nextChar; + } + + ++$i; + } + + return $result; + } + private function lexRawData(): void { if (!preg_match($this->regexes['lex_raw_data'], $this->code, $match, \PREG_OFFSET_CAPTURE, $this->cursor)) { @@ -403,7 +477,7 @@ class Lexer } } - $this->pushToken(/* Token::TEXT_TYPE */ 0, $text); + $this->pushToken(Token::TEXT_TYPE, $text); } private function lexComment(): void @@ -419,11 +493,11 @@ class Lexer { if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) { $this->brackets[] = [$this->options['interpolation'][0], $this->lineno]; - $this->pushToken(/* Token::INTERPOLATION_START_TYPE */ 10); + $this->pushToken(Token::INTERPOLATION_START_TYPE); $this->moveCursor($match[0]); $this->pushState(self::STATE_INTERPOLATION); } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && '' !== $match[0]) { - $this->pushToken(/* Token::STRING_TYPE */ 7, stripcslashes($match[0])); + $this->pushToken(Token::STRING_TYPE, $this->stripcslashes($match[0], '"')); $this->moveCursor($match[0]); } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) { [$expect, $lineno] = array_pop($this->brackets); @@ -444,7 +518,7 @@ class Lexer $bracket = end($this->brackets); if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, 0, $this->cursor)) { array_pop($this->brackets); - $this->pushToken(/* Token::INTERPOLATION_END_TYPE */ 11); + $this->pushToken(Token::INTERPOLATION_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { @@ -455,7 +529,7 @@ class Lexer private function pushToken($type, $value = ''): void { // do not push empty text tokens - if (/* Token::TEXT_TYPE */ 0 === $type && '' === $value) { + if (Token::TEXT_TYPE === $type && '' === $value) { return; } diff --git a/includes/lib/Twig/Loader/ArrayLoader.php b/includes/lib/Twig/Loader/ArrayLoader.php index ce613c9..2bb54b7 100644 --- a/includes/lib/Twig/Loader/ArrayLoader.php +++ b/includes/lib/Twig/Loader/ArrayLoader.php @@ -28,14 +28,12 @@ use Twig\Source; */ final class ArrayLoader implements LoaderInterface { - private $templates = []; - /** * @param array $templates An array of templates (keys are the names, and values are the source code) */ - public function __construct(array $templates = []) - { - $this->templates = $templates; + public function __construct( + private array $templates = [], + ) { } public function setTemplate(string $name, string $template): void diff --git a/includes/lib/Twig/Loader/ChainLoader.php b/includes/lib/Twig/Loader/ChainLoader.php index 163c029..6e4f951 100644 --- a/includes/lib/Twig/Loader/ChainLoader.php +++ b/includes/lib/Twig/Loader/ChainLoader.php @@ -21,22 +21,28 @@ use Twig\Source; */ final class ChainLoader implements LoaderInterface { + /** + * @var array + */ private $hasSourceCache = []; - private $loaders = []; /** - * @param LoaderInterface[] $loaders + * @param iterable $loaders */ - public function __construct(array $loaders = []) - { - foreach ($loaders as $loader) { - $this->addLoader($loader); - } + public function __construct( + private iterable $loaders = [], + ) { } public function addLoader(LoaderInterface $loader): void { - $this->loaders[] = $loader; + $current = $this->loaders; + + $this->loaders = (static function () use ($current, $loader): \Generator { + yield from $current; + yield $loader; + })(); + $this->hasSourceCache = []; } @@ -45,13 +51,18 @@ final class ChainLoader implements LoaderInterface */ public function getLoaders(): array { + if (!\is_array($this->loaders)) { + $this->loaders = iterator_to_array($this->loaders, false); + } + return $this->loaders; } public function getSourceContext(string $name): Source { $exceptions = []; - foreach ($this->loaders as $loader) { + + foreach ($this->getLoaders() as $loader) { if (!$loader->exists($name)) { continue; } @@ -72,7 +83,7 @@ final class ChainLoader implements LoaderInterface return $this->hasSourceCache[$name]; } - foreach ($this->loaders as $loader) { + foreach ($this->getLoaders() as $loader) { if ($loader->exists($name)) { return $this->hasSourceCache[$name] = true; } @@ -84,7 +95,8 @@ final class ChainLoader implements LoaderInterface public function getCacheKey(string $name): string { $exceptions = []; - foreach ($this->loaders as $loader) { + + foreach ($this->getLoaders() as $loader) { if (!$loader->exists($name)) { continue; } @@ -102,7 +114,8 @@ final class ChainLoader implements LoaderInterface public function isFresh(string $name, int $time): bool { $exceptions = []; - foreach ($this->loaders as $loader) { + + foreach ($this->getLoaders() as $loader) { if (!$loader->exists($name)) { continue; } diff --git a/includes/lib/Twig/Loader/FilesystemLoader.php b/includes/lib/Twig/Loader/FilesystemLoader.php index c60964f..49f2b89 100644 --- a/includes/lib/Twig/Loader/FilesystemLoader.php +++ b/includes/lib/Twig/Loader/FilesystemLoader.php @@ -24,6 +24,9 @@ class FilesystemLoader implements LoaderInterface /** Identifier of the main namespace. */ public const MAIN_NAMESPACE = '__main__'; + /** + * @var array> + */ protected $paths = []; protected $cache = []; protected $errorCache = []; @@ -31,8 +34,8 @@ class FilesystemLoader implements LoaderInterface private $rootPath; /** - * @param string|array $paths A path or an array of paths where to look for templates - * @param string|null $rootPath The root path common to all relative paths (null for getcwd()) + * @param string|string[] $paths A path or an array of paths where to look for templates + * @param string|null $rootPath The root path common to all relative paths (null for getcwd()) */ public function __construct($paths = [], ?string $rootPath = null) { @@ -48,6 +51,8 @@ class FilesystemLoader implements LoaderInterface /** * Returns the paths to the templates. + * + * @return list */ public function getPaths(string $namespace = self::MAIN_NAMESPACE): array { @@ -58,6 +63,8 @@ class FilesystemLoader implements LoaderInterface * Returns the path namespaces. * * The main namespace is always defined. + * + * @return list */ public function getNamespaces(): array { @@ -65,7 +72,7 @@ class FilesystemLoader implements LoaderInterface } /** - * @param string|array $paths A path or an array of paths where to look for templates + * @param string|string[] $paths A path or an array of paths where to look for templates */ public function setPaths($paths, string $namespace = self::MAIN_NAMESPACE): void { diff --git a/includes/lib/Twig/Markup.php b/includes/lib/Twig/Markup.php index 1788acc..c7aa65b 100644 --- a/includes/lib/Twig/Markup.php +++ b/includes/lib/Twig/Markup.php @@ -16,10 +16,10 @@ namespace Twig; * * @author Fabien Potencier */ -class Markup implements \Countable, \JsonSerializable +class Markup implements \Countable, \JsonSerializable, \Stringable { private $content; - private $charset; + private ?string $charset; public function __construct($content, $charset) { @@ -32,6 +32,11 @@ class Markup implements \Countable, \JsonSerializable return $this->content; } + public function getCharset(): string + { + return $this->charset; + } + /** * @return int */ diff --git a/includes/lib/Twig/Node/AutoEscapeNode.php b/includes/lib/Twig/Node/AutoEscapeNode.php index f9bc17e..ee80639 100644 --- a/includes/lib/Twig/Node/AutoEscapeNode.php +++ b/includes/lib/Twig/Node/AutoEscapeNode.php @@ -28,9 +28,9 @@ use Twig\Compiler; #[YieldReady] class AutoEscapeNode extends Node { - public function __construct($value, Node $body, int $lineno, string $tag = 'autoescape') + public function __construct($value, Node $body, int $lineno) { - parent::__construct(['body' => $body], ['value' => $value], $lineno, $tag); + parent::__construct(['body' => $body], ['value' => $value], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/BlockNode.php b/includes/lib/Twig/Node/BlockNode.php index 15973a3..b4f939c 100644 --- a/includes/lib/Twig/Node/BlockNode.php +++ b/includes/lib/Twig/Node/BlockNode.php @@ -23,23 +23,26 @@ use Twig\Compiler; #[YieldReady] class BlockNode extends Node { - public function __construct(string $name, Node $body, int $lineno, ?string $tag = null) + public function __construct(string $name, Node $body, int $lineno) { - parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag); + parent::__construct(['body' => $body], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void { $compiler ->addDebugInfo($this) - ->write(\sprintf("public function block_%s(\$context, array \$blocks = [])\n", $this->getAttribute('name')), "{\n") + ->write("/**\n") + ->write(" * @return iterable\n") + ->write(" */\n") + ->write(\sprintf("public function block_%s(array \$context, array \$blocks = []): iterable\n", $this->getAttribute('name')), "{\n") ->indent() ->write("\$macros = \$this->macros;\n") ; $compiler ->subcompile($this->getNode('body')) - ->write("return; yield '';\n") // needed when body doesn't yield anything + ->write("yield from [];\n") ->outdent() ->write("}\n\n") ; diff --git a/includes/lib/Twig/Node/BlockReferenceNode.php b/includes/lib/Twig/Node/BlockReferenceNode.php index 23c73ea..7c313a0 100644 --- a/includes/lib/Twig/Node/BlockReferenceNode.php +++ b/includes/lib/Twig/Node/BlockReferenceNode.php @@ -23,9 +23,9 @@ use Twig\Compiler; #[YieldReady] class BlockReferenceNode extends Node implements NodeOutputInterface { - public function __construct(string $name, int $lineno, ?string $tag = null) + public function __construct(string $name, int $lineno) { - parent::__construct([], ['name' => $name], $lineno, $tag); + parent::__construct([], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/CaptureNode.php b/includes/lib/Twig/Node/CaptureNode.php index b1cb357..3b7f0b6 100644 --- a/includes/lib/Twig/Node/CaptureNode.php +++ b/includes/lib/Twig/Node/CaptureNode.php @@ -22,9 +22,9 @@ use Twig\Compiler; #[YieldReady] class CaptureNode extends Node { - public function __construct(Node $body, int $lineno, ?string $tag = null) + public function __construct(Node $body, int $lineno) { - parent::__construct(['body' => $body], ['raw' => false], $lineno, $tag); + parent::__construct(['body' => $body], ['raw' => false], $lineno); } public function compile(Compiler $compiler): void @@ -39,7 +39,7 @@ class CaptureNode extends Node ->raw("(function () use (&\$context, \$macros, \$blocks) {\n") ->indent() ->subcompile($this->getNode('body')) - ->write("return; yield '';\n") + ->write("yield from [];\n") ->outdent() ->write('})()') ; diff --git a/includes/lib/Twig/Node/CheckToStringNode.php b/includes/lib/Twig/Node/CheckToStringNode.php index 81fb924..937240c 100644 --- a/includes/lib/Twig/Node/CheckToStringNode.php +++ b/includes/lib/Twig/Node/CheckToStringNode.php @@ -30,7 +30,7 @@ class CheckToStringNode extends AbstractExpression { public function __construct(AbstractExpression $expr) { - parent::__construct(['expr' => $expr], [], $expr->getTemplateLine(), $expr->getNodeTag()); + parent::__construct(['expr' => $expr], [], $expr->getTemplateLine()); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/DeprecatedNode.php b/includes/lib/Twig/Node/DeprecatedNode.php index afeb833..0772adf 100644 --- a/includes/lib/Twig/Node/DeprecatedNode.php +++ b/includes/lib/Twig/Node/DeprecatedNode.php @@ -24,9 +24,9 @@ use Twig\Node\Expression\ConstantExpression; #[YieldReady] class DeprecatedNode extends Node { - public function __construct(AbstractExpression $expr, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, int $lineno) { - parent::__construct(['expr' => $expr], [], $lineno, $tag); + parent::__construct(['expr' => $expr], [], $lineno); } public function compile(Compiler $compiler): void @@ -65,7 +65,7 @@ class DeprecatedNode extends Node } $compiler - ->raw(".") + ->raw('.') ->string(\sprintf(' in "%s" at line %d.', $this->getTemplateName(), $this->getTemplateLine())) ->raw(");\n") ; diff --git a/includes/lib/Twig/Node/DoNode.php b/includes/lib/Twig/Node/DoNode.php index 445016a..1593fd0 100644 --- a/includes/lib/Twig/Node/DoNode.php +++ b/includes/lib/Twig/Node/DoNode.php @@ -23,9 +23,9 @@ use Twig\Node\Expression\AbstractExpression; #[YieldReady] class DoNode extends Node { - public function __construct(AbstractExpression $expr, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, int $lineno) { - parent::__construct(['expr' => $expr], [], $lineno, $tag); + parent::__construct(['expr' => $expr], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/EmbedNode.php b/includes/lib/Twig/Node/EmbedNode.php index 5455094..597f95e 100644 --- a/includes/lib/Twig/Node/EmbedNode.php +++ b/includes/lib/Twig/Node/EmbedNode.php @@ -25,18 +25,18 @@ use Twig\Node\Expression\ConstantExpression; class EmbedNode extends IncludeNode { // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module) - public function __construct(string $name, int $index, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, ?string $tag = null) + public function __construct(string $name, int $index, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno) { - parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); + parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno); $this->setAttribute('name', $name); $this->setAttribute('index', $index); } - protected function addGetTemplate(Compiler $compiler): void + protected function addGetTemplate(Compiler $compiler, string $template = ''): void { $compiler - ->write('$this->loadTemplate(') + ->raw('$this->loadTemplate(') ->string($this->getAttribute('name')) ->raw(', ') ->repr($this->getTemplateName()) @@ -46,5 +46,11 @@ class EmbedNode extends IncludeNode ->string($this->getAttribute('index')) ->raw(')') ; + if ($this->getAttribute('ignore_missing')) { + $compiler + ->raw(";\n") + ->write(\sprintf("\$%s->getParent(\$context);\n", $template)) + ; + } } } diff --git a/includes/lib/Twig/Node/EmptyNode.php b/includes/lib/Twig/Node/EmptyNode.php new file mode 100644 index 0000000..fd4717f --- /dev/null +++ b/includes/lib/Twig/Node/EmptyNode.php @@ -0,0 +1,33 @@ + + */ +#[YieldReady] +final class EmptyNode extends Node +{ + public function __construct(int $lineno = 0) + { + parent::__construct([], [], $lineno); + } + + public function setNode(string $name, Node $node): void + { + throw new \LogicException('EmptyNode cannot have children.'); + } +} diff --git a/includes/lib/Twig/Node/Expression/AbstractExpression.php b/includes/lib/Twig/Node/Expression/AbstractExpression.php index 1692f56..22d8617 100644 --- a/includes/lib/Twig/Node/Expression/AbstractExpression.php +++ b/includes/lib/Twig/Node/Expression/AbstractExpression.php @@ -25,4 +25,19 @@ abstract class AbstractExpression extends Node { return $this->hasAttribute('is_generator') && $this->getAttribute('is_generator'); } + + /** + * @return static + */ + public function setExplicitParentheses(): self + { + $this->setAttribute('with_parentheses', true); + + return $this; + } + + public function hasExplicitParentheses(): bool + { + return $this->hasAttribute('with_parentheses') && $this->getAttribute('with_parentheses'); + } } diff --git a/includes/lib/Twig/Node/Expression/ArrayExpression.php b/includes/lib/Twig/Node/Expression/ArrayExpression.php index 5f8b0f6..9769b71 100644 --- a/includes/lib/Twig/Node/Expression/ArrayExpression.php +++ b/includes/lib/Twig/Node/Expression/ArrayExpression.php @@ -12,6 +12,7 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Unary\StringCastUnary; class ArrayExpression extends AbstractExpression { @@ -97,7 +98,17 @@ class ArrayExpression extends AbstractExpression $compiler->raw('...')->subcompile($pair['value']); ++$nextIndex; } else { - $key = $pair['key'] instanceof ConstantExpression ? $pair['key']->getAttribute('value') : null; + $key = null; + if ($pair['key'] instanceof NameExpression) { + $pair['key'] = new StringCastUnary($pair['key'], $pair['key']->getTemplateLine()); + } + if ($pair['key'] instanceof TempNameExpression) { + $key = $pair['key']->getAttribute('name'); + $pair['key'] = new ConstantExpression($key, $pair['key']->getTemplateLine()); + } + if ($pair['key'] instanceof ConstantExpression) { + $key = $pair['key']->getAttribute('value'); + } if ($nextIndex !== $key) { if (\is_int($key)) { diff --git a/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php b/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php index eaad03c..2bae4ed 100644 --- a/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php +++ b/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php @@ -21,9 +21,9 @@ use Twig\Node\Node; */ class ArrowFunctionExpression extends AbstractExpression { - public function __construct(AbstractExpression $expr, Node $names, $lineno, $tag = null) + public function __construct(AbstractExpression $expr, Node $names, $lineno) { - parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno, $tag); + parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/AssignNameExpression.php b/includes/lib/Twig/Node/Expression/AssignNameExpression.php index 7dd1bc4..c2cbb8e 100644 --- a/includes/lib/Twig/Node/Expression/AssignNameExpression.php +++ b/includes/lib/Twig/Node/Expression/AssignNameExpression.php @@ -13,9 +13,25 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Error\SyntaxError; +use Twig\Node\Expression\Variable\AssignContextVariable; class AssignNameExpression extends NameExpression { + public function __construct(string $name, int $lineno) + { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, AssignContextVariable::class); + } + + // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded + if (\in_array(strtolower($name), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno); + } + + parent::__construct($name, $lineno); + } + public function compile(Compiler $compiler): void { $compiler diff --git a/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php b/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php index c424e5c..0953027 100644 --- a/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php +++ b/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php @@ -18,8 +18,19 @@ use Twig\Node\Node; abstract class AbstractBinary extends AbstractExpression { + /** + * @param AbstractExpression $left + * @param AbstractExpression $right + */ public function __construct(Node $left, Node $right, int $lineno) { + if (!$left instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($left)); + } + if (!$right instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($right)); + } + parent::__construct(['left' => $left, 'right' => $right], [], $lineno); } diff --git a/includes/lib/Twig/Node/Expression/Binary/ElvisBinary.php b/includes/lib/Twig/Node/Expression/Binary/ElvisBinary.php new file mode 100644 index 0000000..205d1ff --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Binary/ElvisBinary.php @@ -0,0 +1,50 @@ +setNode('test', clone $left); + $left->setAttribute('always_defined', true); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('((') + ->subcompile($this->getNode('test')) + ->raw(') ? (') + ->subcompile($this->getNode('left')) + ->raw(') : (') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('?:'); + } + + public function getOperandNamesToEscape(): array + { + return ['left', 'right']; + } +} diff --git a/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php b/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php index 4669044..0a523c2 100644 --- a/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php +++ b/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php @@ -12,9 +12,27 @@ namespace Twig\Node\Expression\Binary; use Twig\Compiler; +use Twig\Error\SyntaxError; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Node; class MatchesBinary extends AbstractBinary { + public function __construct(Node $left, Node $right, int $lineno) + { + if ($right instanceof ConstantExpression) { + $regexp = $right->getAttribute('value'); + set_error_handler(static fn ($t, $m) => throw new SyntaxError(\sprintf('Regexp "%s" passed to "matches" is not valid: %s.', $regexp, substr($m, 14)), $lineno)); + try { + preg_match($regexp, ''); + } finally { + restore_error_handler(); + } + } + + parent::__construct($left, $right, $lineno); + } + public function compile(Compiler $compiler): void { $compiler diff --git a/includes/lib/Twig/Node/Expression/Binary/NullCoalesceBinary.php b/includes/lib/Twig/Node/Expression/Binary/NullCoalesceBinary.php new file mode 100644 index 0000000..15b6e8e --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Binary/NullCoalesceBinary.php @@ -0,0 +1,83 @@ +getTemplateLine()); + // for "block()", we don't need the null test as the return value is always a string + if (!$left instanceof BlockReferenceExpression) { + $test = new AndBinary( + $test, + new NotUnary(new NullTest($left, new TwigTest('null'), new EmptyNode(), $left->getTemplateLine()), $left->getTemplateLine()), + $left->getTemplateLine(), + ); + } + + $this->setNode('test', $test); + } else { + $left->setAttribute('always_defined', true); + } + } + + public function compile(Compiler $compiler): void + { + /* + * This optimizes only one case. PHP 7 also supports more complex expressions + * that can return null. So, for instance, if log is defined, log("foo") ?? "..." works, + * but log($a["foo"]) ?? "..." does not if $a["foo"] is not defined. More advanced + * cases might be implemented as an optimizer node visitor, but has not been done + * as benefits are probably not worth the added complexity. + */ + if ($this->hasNode('test')) { + $compiler + ->raw('((') + ->subcompile($this->getNode('test')) + ->raw(') ? (') + ->subcompile($this->getNode('left')) + ->raw(') : (') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + + return; + } + + parent::compile($compiler); + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('??'); + } + + public function getOperandNamesToEscape(): array + { + return $this->hasNode('test') ? ['left', 'right'] : ['right']; + } +} diff --git a/includes/lib/Twig/Node/Expression/Binary/XorBinary.php b/includes/lib/Twig/Node/Expression/Binary/XorBinary.php new file mode 100644 index 0000000..d8ccd78 --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Binary/XorBinary.php @@ -0,0 +1,23 @@ +raw('xor'); + } +} diff --git a/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php b/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php index 6293822..a5a3cee 100644 --- a/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php +++ b/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php @@ -22,14 +22,21 @@ use Twig\Node\Node; */ class BlockReferenceExpression extends AbstractExpression { - public function __construct(Node $name, ?Node $template, int $lineno, ?string $tag = null) + /** + * @param AbstractExpression $name + */ + public function __construct(Node $name, ?Node $template, int $lineno) { + if (!$name instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($name)); + } + $nodes = ['name' => $name]; if (null !== $template) { $nodes['template'] = $template; } - parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno, $tag); + parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/CallExpression.php b/includes/lib/Twig/Node/Expression/CallExpression.php index cd81df4..8e999c7 100644 --- a/includes/lib/Twig/Node/Expression/CallExpression.php +++ b/includes/lib/Twig/Node/Expression/CallExpression.php @@ -15,6 +15,11 @@ use Twig\Compiler; use Twig\Error\SyntaxError; use Twig\Extension\ExtensionInterface; use Twig\Node\Node; +use Twig\TwigCallableInterface; +use Twig\TwigFilter; +use Twig\TwigFunction; +use Twig\TwigTest; +use Twig\Util\CallableArgumentsExtractor; use Twig\Util\ReflectionCallable; abstract class CallExpression extends AbstractExpression @@ -23,12 +28,13 @@ abstract class CallExpression extends AbstractExpression protected function compileCallable(Compiler $compiler) { - $callable = $this->getAttribute('callable'); + $twigCallable = $this->getTwigCallable(); + $callable = $twigCallable->getCallable(); if (\is_string($callable) && !str_contains($callable, '::')) { $compiler->raw($callable); } else { - $rc = $this->reflectCallable($callable); + $rc = $this->reflectCallable($twigCallable); $r = $rc->getReflector(); $callable = $rc->getCallable(); @@ -51,7 +57,7 @@ abstract class CallExpression extends AbstractExpression $compiler->raw(\sprintf('->%s', $callable[1])); } else { - $compiler->raw(\sprintf('$this->env->get%s(\'%s\')->getCallable()', ucfirst($this->getAttribute('type')), $this->getAttribute('name'))); + $compiler->raw(\sprintf('$this->env->get%s(\'%s\')->getCallable()', ucfirst($this->getAttribute('type')), $twigCallable->getDynamicName())); } } @@ -68,12 +74,14 @@ abstract class CallExpression extends AbstractExpression $first = true; - if ($this->hasAttribute('needs_charset') && $this->getAttribute('needs_charset')) { + $twigCallable = $this->getAttribute('twig_callable'); + + if ($twigCallable->needsCharset()) { $compiler->raw('$this->env->getCharset()'); $first = false; } - if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { + if ($twigCallable->needsEnvironment()) { if (!$first) { $compiler->raw(', '); } @@ -81,7 +89,7 @@ abstract class CallExpression extends AbstractExpression $first = false; } - if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { + if ($twigCallable->needsContext()) { if (!$first) { $compiler->raw(', '); } @@ -89,14 +97,12 @@ abstract class CallExpression extends AbstractExpression $first = false; } - if ($this->hasAttribute('arguments')) { - foreach ($this->getAttribute('arguments') as $argument) { - if (!$first) { - $compiler->raw(', '); - } - $compiler->string($argument); - $first = false; + foreach ($twigCallable->getArguments() as $argument) { + if (!$first) { + $compiler->raw(', '); } + $compiler->string($argument); + $first = false; } if ($this->hasNode('node')) { @@ -108,8 +114,7 @@ abstract class CallExpression extends AbstractExpression } if ($this->hasNode('arguments')) { - $callable = $this->getAttribute('callable'); - $arguments = $this->getArguments($callable, $this->getNode('arguments')); + $arguments = (new CallableArgumentsExtractor($this, $this->getTwigCallable()))->extractArguments($this->getNode('arguments')); foreach ($arguments as $node) { if (!$first) { $compiler->raw(', '); @@ -122,8 +127,13 @@ abstract class CallExpression extends AbstractExpression $compiler->raw($isArray ? ']' : ')'); } + /** + * @deprecated since Twig 3.12, use Twig\Util\CallableArgumentsExtractor::getArguments() instead + */ protected function getArguments($callable, $arguments) { + trigger_deprecation('twig/twig', '3.12', 'The "%s()" method is deprecated, use Twig\Util\CallableArgumentsExtractor::getArguments() instead.', __METHOD__); + $callType = $this->getAttribute('type'); $callName = $this->getAttribute('name'); @@ -140,7 +150,7 @@ abstract class CallExpression extends AbstractExpression $parameters[$name] = $node; } - $isVariadic = $this->hasAttribute('is_variadic') && $this->getAttribute('is_variadic'); + $isVariadic = $this->getAttribute('twig_callable')->isVariadic(); if (!$named && !$isVariadic) { return $parameters; } @@ -198,7 +208,7 @@ abstract class CallExpression extends AbstractExpression } elseif ($callableParameter->isDefaultValueAvailable()) { $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1); } elseif ($callableParameter->isOptional()) { - if (empty($parameters)) { + if (!$parameters) { break; } else { $missingArguments[] = $name; @@ -225,7 +235,7 @@ abstract class CallExpression extends AbstractExpression } } - if (!empty($parameters)) { + if ($parameters) { $unknownParameter = null; foreach ($parameters as $parameter) { if ($parameter instanceof Node) { @@ -247,14 +257,21 @@ abstract class CallExpression extends AbstractExpression return $arguments; } + /** + * @deprecated since Twig 3.12 + */ protected function normalizeName(string $name): string { + trigger_deprecation('twig/twig', '3.12', 'The "%s()" method is deprecated.', __METHOD__); + return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name)); } + // To be removed in 4.0 private function getCallableParameters($callable, bool $isVariadic): array { - $rc = $this->reflectCallable($callable); + $twigCallable = $this->getAttribute('twig_callable'); + $rc = $this->reflectCallable($twigCallable); $r = $rc->getReflector(); $callableName = $rc->getName(); @@ -262,20 +279,19 @@ abstract class CallExpression extends AbstractExpression if ($this->hasNode('node')) { array_shift($parameters); } - if ($this->hasAttribute('needs_charset') && $this->getAttribute('needs_charset')) { + if ($twigCallable->needsCharset()) { array_shift($parameters); } - if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { + if ($twigCallable->needsEnvironment()) { array_shift($parameters); } - if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { + if ($twigCallable->needsContext()) { array_shift($parameters); } - if ($this->hasAttribute('arguments') && null !== $this->getAttribute('arguments')) { - foreach ($this->getAttribute('arguments') as $argument) { - array_shift($parameters); - } + foreach ($twigCallable->getArguments() as $argument) { + array_shift($parameters); } + $isPhpVariadic = false; if ($isVariadic) { $argument = end($parameters); @@ -286,19 +302,61 @@ abstract class CallExpression extends AbstractExpression array_pop($parameters); $isPhpVariadic = true; } else { - throw new \LogicException(\sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name'))); + throw new \LogicException(\sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $twigCallable->getName())); } } return [$parameters, $isPhpVariadic]; } - private function reflectCallable($callable): ReflectionCallable + private function reflectCallable(TwigCallableInterface $callable): ReflectionCallable { if (!$this->reflector) { - $this->reflector = new ReflectionCallable($callable, $this->getAttribute('type'), $this->getAttribute('name')); + $this->reflector = new ReflectionCallable($callable); } return $this->reflector; } + + /** + * Overrides the Twig callable based on attributes (as potentially, attributes changed between the creation and the compilation of the node). + * + * To be removed in 4.0 and replace by $this->getAttribute('twig_callable'). + */ + private function getTwigCallable(): TwigCallableInterface + { + $current = $this->getAttribute('twig_callable'); + + $this->setAttribute('twig_callable', match ($this->getAttribute('type')) { + 'test' => (new TwigTest( + $this->getAttribute('name'), + $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), + [ + 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), + ], + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), + 'function' => (new TwigFunction( + $this->hasAttribute('name') ? $this->getAttribute('name') : $current->getName(), + $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), + [ + 'needs_environment' => $this->hasAttribute('needs_environment') ? $this->getAttribute('needs_environment') : $current->needsEnvironment(), + 'needs_context' => $this->hasAttribute('needs_context') ? $this->getAttribute('needs_context') : $current->needsContext(), + 'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(), + 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), + ], + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), + 'filter' => (new TwigFilter( + $this->getAttribute('name'), + $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), + [ + 'needs_environment' => $this->hasAttribute('needs_environment') ? $this->getAttribute('needs_environment') : $current->needsEnvironment(), + 'needs_context' => $this->hasAttribute('needs_context') ? $this->getAttribute('needs_context') : $current->needsContext(), + 'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(), + 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), + ], + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), + }); + + return $this->getAttribute('twig_callable'); + } } diff --git a/includes/lib/Twig/Node/Expression/ConditionalExpression.php b/includes/lib/Twig/Node/Expression/ConditionalExpression.php index d7db993..7fe309c 100644 --- a/includes/lib/Twig/Node/Expression/ConditionalExpression.php +++ b/includes/lib/Twig/Node/Expression/ConditionalExpression.php @@ -13,11 +13,14 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Ternary\ConditionalTernary; -class ConditionalExpression extends AbstractExpression +class ConditionalExpression extends AbstractExpression implements OperatorEscapeInterface { public function __construct(AbstractExpression $expr1, AbstractExpression $expr2, AbstractExpression $expr3, int $lineno) { + trigger_deprecation('twig/twig', '3.17', \sprintf('"%s" is deprecated; use "%s" instead.', __CLASS__, ConditionalTernary::class)); + parent::__construct(['expr1' => $expr1, 'expr2' => $expr2, 'expr3' => $expr3], [], $lineno); } @@ -42,4 +45,9 @@ class ConditionalExpression extends AbstractExpression ->raw('))'); } } + + public function getOperandNamesToEscape(): array + { + return ['expr2', 'expr3']; + } } diff --git a/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php b/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php index 7eb0ea7..cabd2aa 100644 --- a/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php +++ b/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php @@ -11,14 +11,20 @@ namespace Twig\Node\Expression\Filter; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; -use Twig\Node\Expression\ConditionalExpression; +use Twig\Extension\CoreExtension; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\GetAttrExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\Ternary\ConditionalTernary; use Twig\Node\Expression\Test\DefinedTest; use Twig\Node\Node; +use Twig\TwigFilter; +use Twig\TwigTest; /** * Returns the value or the default value when it is undefined or empty. @@ -29,20 +35,34 @@ use Twig\Node\Node; */ class DefaultFilter extends FilterExpression { - public function __construct(Node $node, ConstantExpression $filterName, Node $arguments, int $lineno, ?string $tag = null) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno) { - $default = new FilterExpression($node, new ConstantExpression('default', $node->getTemplateLine()), $arguments, $node->getTemplateLine()); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } - if ('default' === $filterName->getAttribute('value') && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { - $test = new DefinedTest(clone $node, 'defined', new Node(), $node->getTemplateLine()); + if ($filter instanceof TwigFilter) { + $name = $filter->getName(); + $default = new FilterExpression($node, $filter, $arguments, $node->getTemplateLine()); + } else { + $name = $filter->getAttribute('value'); + $default = new FilterExpression($node, new TwigFilter('default', [CoreExtension::class, 'default']), $arguments, $node->getTemplateLine()); + } + + if ('default' === $name && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { + $test = new DefinedTest(clone $node, new TwigTest('defined'), new EmptyNode(), $node->getTemplateLine()); $false = \count($arguments) ? $arguments->getNode('0') : new ConstantExpression('', $node->getTemplateLine()); - $node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine()); + $node = new ConditionalTernary($test, $default, $false, $node->getTemplateLine()); } else { $node = $default; } - parent::__construct($node, $filterName, $arguments, $lineno, $tag); + parent::__construct($node, $filter, $arguments, $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/Filter/RawFilter.php b/includes/lib/Twig/Node/Expression/Filter/RawFilter.php index 5849423..0a49e7c 100644 --- a/includes/lib/Twig/Node/Expression/Filter/RawFilter.php +++ b/includes/lib/Twig/Node/Expression/Filter/RawFilter.php @@ -11,26 +11,31 @@ namespace Twig\Node\Expression\Filter; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; use Twig\Node\Node; +use Twig\TwigFilter; /** * @author Fabien Potencier */ class RawFilter extends FilterExpression { - public function __construct(Node $node, ?ConstantExpression $filterName = null, ?Node $arguments = null, int $lineno = 0, ?string $tag = null) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigFilter|ConstantExpression|null $filter = null, ?Node $arguments = null, int $lineno = 0) { - if (null === $filterName) { - $filterName = new ConstantExpression('raw', $node->getTemplateLine()); - } - if (null === $arguments) { - $arguments = new Node(); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); } - parent::__construct($node, $filterName, $arguments, $lineno ?: $node->getTemplateLine(), $tag ?: $node->getNodeTag()); + parent::__construct($node, $filter ?: new TwigFilter('raw', null, ['is_safe' => ['all']]), $arguments ?: new EmptyNode(), $lineno ?: $node->getTemplateLine()); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/FilterExpression.php b/includes/lib/Twig/Node/Expression/FilterExpression.php index 251870a..6e0c486 100644 --- a/includes/lib/Twig/Node/Expression/FilterExpression.php +++ b/includes/lib/Twig/Node/Expression/FilterExpression.php @@ -12,22 +12,56 @@ namespace Twig\Node\Expression; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; +use Twig\Node\NameDeprecation; use Twig\Node\Node; +use Twig\TwigFilter; class FilterExpression extends CallExpression { - public function __construct(Node $node, ConstantExpression $filterName, Node $arguments, int $lineno, ?string $tag = null) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno) { - parent::__construct(['node' => $node, 'filter' => $filterName, 'arguments' => $arguments], ['name' => $filterName->getAttribute('value'), 'type' => 'filter'], $lineno, $tag); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + + if ($filter instanceof TwigFilter) { + $name = $filter->getName(); + $filterName = new ConstantExpression($name, $lineno); + } else { + $name = $filter->getAttribute('value'); + $filterName = $filter; + trigger_deprecation('twig/twig', '3.12', 'Not passing an instance of "TwigFilter" when creating a "%s" filter of type "%s" is deprecated.', $name, static::class); + } + + parent::__construct(['node' => $node, 'filter' => $filterName, 'arguments' => $arguments], ['name' => $name, 'type' => 'filter'], $lineno); + + if ($filter instanceof TwigFilter) { + $this->setAttribute('twig_callable', $filter); + } + + $this->deprecateNode('filter', new NameDeprecation('twig/twig', '3.12')); + + $this->deprecateAttribute('needs_charset', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_environment', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_context', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('arguments', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('callable', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('is_variadic', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('dynamic_name', new NameDeprecation('twig/twig', '3.12')); } public function compile(Compiler $compiler): void { - $name = $this->getNode('filter')->getAttribute('value'); + $name = $this->getNode('filter', false)->getAttribute('value'); if ($name !== $this->getAttribute('name')) { trigger_deprecation('twig/twig', '3.11', 'Changing the value of a "filter" node in a NodeVisitor class is not supported anymore.'); - $this->setAttribute('name', $name); + $this->removeAttribute('twig_callable'); } if ('raw' === $name) { trigger_deprecation('twig/twig', '3.11', 'Creating the "raw" filter via "FilterExpression" is deprecated; use "RawFilter" instead.'); @@ -36,14 +70,10 @@ class FilterExpression extends CallExpression return; } - $filter = $compiler->getEnvironment()->getFilter($name); - $this->setAttribute('needs_charset', $filter->needsCharset()); - $this->setAttribute('needs_environment', $filter->needsEnvironment()); - $this->setAttribute('needs_context', $filter->needsContext()); - $this->setAttribute('arguments', $filter->getArguments()); - $this->setAttribute('callable', $filter->getCallable()); - $this->setAttribute('is_variadic', $filter->isVariadic()); + if (!$this->hasAttribute('twig_callable')) { + $this->setAttribute('twig_callable', $compiler->getEnvironment()->getFilter($name)); + } $this->compileCallable($compiler); } diff --git a/includes/lib/Twig/Node/Expression/FunctionExpression.php b/includes/lib/Twig/Node/Expression/FunctionExpression.php index ef99c40..6215c6a 100644 --- a/includes/lib/Twig/Node/Expression/FunctionExpression.php +++ b/includes/lib/Twig/Node/Expression/FunctionExpression.php @@ -11,32 +11,57 @@ namespace Twig\Node\Expression; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; -use Twig\Extension\CoreExtension; +use Twig\Node\NameDeprecation; use Twig\Node\Node; +use Twig\TwigFunction; class FunctionExpression extends CallExpression { - public function __construct(string $name, Node $arguments, int $lineno) + #[FirstClassTwigCallableReady] + public function __construct(TwigFunction|string $function, Node $arguments, int $lineno) { + if ($function instanceof TwigFunction) { + $name = $function->getName(); + } else { + $name = $function; + trigger_deprecation('twig/twig', '3.12', 'Not passing an instance of "TwigFunction" when creating a "%s" function of type "%s" is deprecated.', $name, static::class); + } + parent::__construct(['arguments' => $arguments], ['name' => $name, 'type' => 'function', 'is_defined_test' => false], $lineno); + + if ($function instanceof TwigFunction) { + $this->setAttribute('twig_callable', $function); + } + + $this->deprecateAttribute('needs_charset', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_environment', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_context', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('arguments', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('callable', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('is_variadic', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('dynamic_name', new NameDeprecation('twig/twig', '3.12')); } public function compile(Compiler $compiler) { $name = $this->getAttribute('name'); - $function = $compiler->getEnvironment()->getFunction($name); - - $this->setAttribute('needs_charset', $function->needsCharset()); - $this->setAttribute('needs_environment', $function->needsEnvironment()); - $this->setAttribute('needs_context', $function->needsContext()); - $this->setAttribute('arguments', $function->getArguments()); - $callable = $function->getCallable(); - if ('constant' === $name && $this->getAttribute('is_defined_test')) { - $callable = [CoreExtension::class, 'constantIsDefined']; + if ($this->hasAttribute('twig_callable')) { + $name = $this->getAttribute('twig_callable')->getName(); + if ($name !== $this->getAttribute('name')) { + trigger_deprecation('twig/twig', '3.12', 'Changing the value of a "function" node in a NodeVisitor class is not supported anymore.'); + $this->removeAttribute('twig_callable'); + } + } + + if (!$this->hasAttribute('twig_callable')) { + $this->setAttribute('twig_callable', $compiler->getEnvironment()->getFunction($name)); + } + + if ('constant' === $name && $this->getAttribute('is_defined_test')) { + $this->getNode('arguments')->setNode('checkDefined', new ConstantExpression(true, $this->getTemplateLine())); } - $this->setAttribute('callable', $callable); - $this->setAttribute('is_variadic', $function->isVariadic()); $this->compileCallable($compiler); } diff --git a/includes/lib/Twig/Node/Expression/FunctionNode/EnumCasesFunction.php b/includes/lib/Twig/Node/Expression/FunctionNode/EnumCasesFunction.php new file mode 100644 index 0000000..7e5c25f --- /dev/null +++ b/includes/lib/Twig/Node/Expression/FunctionNode/EnumCasesFunction.php @@ -0,0 +1,41 @@ +getNode('arguments'); + if ($arguments->hasNode('enum')) { + $firstArgument = $arguments->getNode('enum'); + } elseif ($arguments->hasNode('0')) { + $firstArgument = $arguments->getNode('0'); + } else { + $firstArgument = null; + } + + if (!$firstArgument instanceof ConstantExpression || 1 !== \count($arguments)) { + parent::compile($compiler); + + return; + } + + $value = $firstArgument->getAttribute('value'); + + if (!\is_string($value)) { + throw new SyntaxError('The first argument of the "enum_cases" function must be a string.', $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!enum_exists($value)) { + throw new SyntaxError(\sprintf('The first argument of the "enum_cases" function must be the name of an enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + $compiler->raw(\sprintf('%s::cases()', $value)); + } +} diff --git a/includes/lib/Twig/Node/Expression/FunctionNode/EnumFunction.php b/includes/lib/Twig/Node/Expression/FunctionNode/EnumFunction.php new file mode 100644 index 0000000..1f8b0ec --- /dev/null +++ b/includes/lib/Twig/Node/Expression/FunctionNode/EnumFunction.php @@ -0,0 +1,45 @@ +getNode('arguments'); + if ($arguments->hasNode('enum')) { + $firstArgument = $arguments->getNode('enum'); + } elseif ($arguments->hasNode('0')) { + $firstArgument = $arguments->getNode('0'); + } else { + $firstArgument = null; + } + + if (!$firstArgument instanceof ConstantExpression || 1 !== \count($arguments)) { + parent::compile($compiler); + + return; + } + + $value = $firstArgument->getAttribute('value'); + + if (!\is_string($value)) { + throw new SyntaxError('The first argument of the "enum" function must be a string.', $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!enum_exists($value)) { + throw new SyntaxError(\sprintf('The first argument of the "enum" function must be the name of an enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!$cases = $value::cases()) { + throw new SyntaxError(\sprintf('The first argument of the "enum" function must be a non-empty enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + $compiler->raw(\sprintf('%s::%s', $value, $cases[0]->name)); + } +} diff --git a/includes/lib/Twig/Node/Expression/GetAttrExpression.php b/includes/lib/Twig/Node/Expression/GetAttrExpression.php index 29a446b..0d4b96b 100644 --- a/includes/lib/Twig/Node/Expression/GetAttrExpression.php +++ b/includes/lib/Twig/Node/Expression/GetAttrExpression.php @@ -18,6 +18,9 @@ use Twig\Template; class GetAttrExpression extends AbstractExpression { + /** + * @param ArrayExpression|NameExpression|null $arguments + */ public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno) { $nodes = ['node' => $node, 'attribute' => $attribute]; @@ -25,12 +28,17 @@ class GetAttrExpression extends AbstractExpression $nodes['arguments'] = $arguments; } + if ($arguments && !$arguments instanceof ArrayExpression && !$arguments instanceof NameExpression) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class)); + } + parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'optimizable' => true], $lineno); } public function compile(Compiler $compiler): void { $env = $compiler->getEnvironment(); + $arrayAccessSandbox = false; // optimize array calls if ( @@ -44,17 +52,35 @@ class GetAttrExpression extends AbstractExpression ->raw('(('.$var.' = ') ->subcompile($this->getNode('node')) ->raw(') && is_array(') - ->raw($var) + ->raw($var); + + if (!$env->hasExtension(SandboxExtension::class)) { + $compiler + ->raw(') || ') + ->raw($var) + ->raw(' instanceof ArrayAccess ? (') + ->raw($var) + ->raw('[') + ->subcompile($this->getNode('attribute')) + ->raw('] ?? null) : null)') + ; + + return; + } + + $arrayAccessSandbox = true; + + $compiler ->raw(') || ') ->raw($var) - ->raw(' instanceof ArrayAccess ? (') + ->raw(' instanceof ArrayAccess && in_array(') + ->raw($var.'::class') + ->raw(', CoreExtension::ARRAY_LIKE_CLASSES, true) ? (') ->raw($var) ->raw('[') ->subcompile($this->getNode('attribute')) - ->raw('] ?? null) : null)') + ->raw('] ?? null) : ') ; - - return; } $compiler->raw('CoreExtension::getAttribute($this->env, $this->source, '); @@ -83,5 +109,9 @@ class GetAttrExpression extends AbstractExpression ->raw(', ')->repr($this->getNode('node')->getTemplateLine()) ->raw(')') ; + + if ($arrayAccessSandbox) { + $compiler->raw(')'); + } } } diff --git a/includes/lib/Twig/Node/Expression/InlinePrint.php b/includes/lib/Twig/Node/Expression/InlinePrint.php index 0a3c2e4..5509f79 100644 --- a/includes/lib/Twig/Node/Expression/InlinePrint.php +++ b/includes/lib/Twig/Node/Expression/InlinePrint.php @@ -19,8 +19,13 @@ use Twig\Node\Node; */ final class InlinePrint extends AbstractExpression { + /** + * @param AbstractExpression $node + */ public function __construct(Node $node, int $lineno) { + trigger_deprecation('twig/twig', '3.16', \sprintf('The "%s" class is deprecated with no replacement.', static::class)); + parent::__construct(['node' => $node], [], $lineno); } diff --git a/includes/lib/Twig/Node/Expression/MacroReferenceExpression.php b/includes/lib/Twig/Node/Expression/MacroReferenceExpression.php new file mode 100644 index 0000000..abe99aa --- /dev/null +++ b/includes/lib/Twig/Node/Expression/MacroReferenceExpression.php @@ -0,0 +1,56 @@ + + */ +class MacroReferenceExpression extends AbstractExpression +{ + public function __construct(TemplateVariable $template, string $name, AbstractExpression $arguments, int $lineno) + { + parent::__construct(['template' => $template, 'arguments' => $arguments], ['name' => $name, 'is_defined_test' => false], $lineno); + } + + public function compile(Compiler $compiler): void + { + if ($this->getAttribute('is_defined_test')) { + $compiler + ->subcompile($this->getNode('template')) + ->raw('->hasMacro(') + ->repr($this->getAttribute('name')) + ->raw(', $context') + ->raw(')') + ; + + return; + } + + $compiler + ->subcompile($this->getNode('template')) + ->raw('->getTemplateForMacro(') + ->repr($this->getAttribute('name')) + ->raw(', $context, ') + ->repr($this->getTemplateLine()) + ->raw(', $this->getSourceContext())') + ->raw(\sprintf('->%s', $this->getAttribute('name'))) + ->raw('(...') + ->subcompile($this->getNode('arguments')) + ->raw(')') + ; + } +} diff --git a/includes/lib/Twig/Node/Expression/MethodCallExpression.php b/includes/lib/Twig/Node/Expression/MethodCallExpression.php index 01806f9..9aede82 100644 --- a/includes/lib/Twig/Node/Expression/MethodCallExpression.php +++ b/includes/lib/Twig/Node/Expression/MethodCallExpression.php @@ -17,6 +17,8 @@ class MethodCallExpression extends AbstractExpression { public function __construct(AbstractExpression $node, string $method, ArrayExpression $arguments, int $lineno) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', __CLASS__, MacroReferenceExpression::class); + parent::__construct(['node' => $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false, 'is_defined_test' => false], $lineno); if ($node instanceof NameExpression) { @@ -43,21 +45,9 @@ class MethodCallExpression extends AbstractExpression ->repr($this->getNode('node')->getAttribute('name')) ->raw('], ') ->repr($this->getAttribute('method')) - ->raw(', [') - ; - $first = true; - /** @var ArrayExpression */ - $args = $this->getNode('arguments'); - foreach ($args->getKeyValuePairs() as $pair) { - if (!$first) { - $compiler->raw(', '); - } - $first = false; - - $compiler->subcompile($pair['value']); - } - $compiler - ->raw('], ') + ->raw(', ') + ->subcompile($this->getNode('arguments')) + ->raw(', ') ->repr($this->getTemplateLine()) ->raw(', $context, $this->getSourceContext())'); } diff --git a/includes/lib/Twig/Node/Expression/NameExpression.php b/includes/lib/Twig/Node/Expression/NameExpression.php index 286aa5a..78ae51f 100644 --- a/includes/lib/Twig/Node/Expression/NameExpression.php +++ b/includes/lib/Twig/Node/Expression/NameExpression.php @@ -13,6 +13,7 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Variable\ContextVariable; class NameExpression extends AbstractExpression { @@ -24,6 +25,10 @@ class NameExpression extends AbstractExpression public function __construct(string $name, int $lineno) { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, ContextVariable::class); + } + parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno); } diff --git a/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php b/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php index a72bc4f..c07bb36 100644 --- a/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php +++ b/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php @@ -12,22 +12,38 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\EmptyNode; use Twig\Node\Expression\Binary\AndBinary; +use Twig\Node\Expression\Binary\NullCoalesceBinary; use Twig\Node\Expression\Test\DefinedTest; use Twig\Node\Expression\Test\NullTest; use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Node; +use Twig\TwigTest; class NullCoalesceExpression extends ConditionalExpression { + /** + * @param AbstractExpression $left + * @param AbstractExpression $right + */ public function __construct(Node $left, Node $right, int $lineno) { - $test = new DefinedTest(clone $left, 'defined', new Node(), $left->getTemplateLine()); + trigger_deprecation('twig/twig', '3.17', \sprintf('"%s" is deprecated; use "%s" instead.', __CLASS__, NullCoalesceBinary::class)); + + if (!$left instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($left)); + } + if (!$right instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($right)); + } + + $test = new DefinedTest(clone $left, new TwigTest('defined'), new EmptyNode(), $left->getTemplateLine()); // for "block()", we don't need the null test as the return value is always a string if (!$left instanceof BlockReferenceExpression) { $test = new AndBinary( $test, - new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()), + new NotUnary(new NullTest($left, new TwigTest('null'), new EmptyNode(), $left->getTemplateLine()), $left->getTemplateLine()), $left->getTemplateLine() ); } diff --git a/includes/lib/Twig/Node/Expression/OperatorEscapeInterface.php b/includes/lib/Twig/Node/Expression/OperatorEscapeInterface.php new file mode 100644 index 0000000..06db6c6 --- /dev/null +++ b/includes/lib/Twig/Node/Expression/OperatorEscapeInterface.php @@ -0,0 +1,25 @@ + 1. + * + * @author Fabien Potencier + */ +interface OperatorEscapeInterface +{ + /** + * @return string[] + */ + public function getOperandNamesToEscape(): array; +} diff --git a/includes/lib/Twig/Node/Expression/ParentExpression.php b/includes/lib/Twig/Node/Expression/ParentExpression.php index 59d833a..22fe38f 100644 --- a/includes/lib/Twig/Node/Expression/ParentExpression.php +++ b/includes/lib/Twig/Node/Expression/ParentExpression.php @@ -21,9 +21,9 @@ use Twig\Compiler; */ class ParentExpression extends AbstractExpression { - public function __construct(string $name, int $lineno, ?string $tag = null) + public function __construct(string $name, int $lineno) { - parent::__construct([], ['output' => false, 'name' => $name], $lineno, $tag); + parent::__construct([], ['output' => false, 'name' => $name], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/TempNameExpression.php b/includes/lib/Twig/Node/Expression/TempNameExpression.php index 004c704..8cb66a1 100644 --- a/includes/lib/Twig/Node/Expression/TempNameExpression.php +++ b/includes/lib/Twig/Node/Expression/TempNameExpression.php @@ -12,20 +12,38 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Error\SyntaxError; class TempNameExpression extends AbstractExpression { - public function __construct(string $name, int $lineno) + public const RESERVED_NAMES = ['varargs', 'context', 'macros', 'blocks', 'this']; + + public function __construct(string|int|null $name, int $lineno) { + // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded + if ($name && \in_array(strtolower($name), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno); + } + + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated.', self::class); + } + + if (null !== $name && (\is_int($name) || ctype_digit($name))) { + $name = (int) $name; + } elseif (\in_array($name, self::RESERVED_NAMES)) { + $name = "\u{035C}".$name; + } + parent::__construct([], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->raw('$_') - ->raw($this->getAttribute('name')) - ->raw('_') - ; + if (null === $this->getAttribute('name')) { + $this->setAttribute('name', $compiler->getVarName()); + } + + $compiler->raw('$'.$this->getAttribute('name')); } } diff --git a/includes/lib/Twig/Node/Expression/Ternary/ConditionalTernary.php b/includes/lib/Twig/Node/Expression/Ternary/ConditionalTernary.php new file mode 100644 index 0000000..627da7a --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Ternary/ConditionalTernary.php @@ -0,0 +1,42 @@ + $test, 'left' => $left, 'right' => $right], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('((') + ->subcompile($this->getNode('test')) + ->raw(') ? (') + ->subcompile($this->getNode('left')) + ->raw(') : (') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function getOperandNamesToEscape(): array + { + return ['left', 'right']; + } +} diff --git a/includes/lib/Twig/Node/Expression/Test/DefinedTest.php b/includes/lib/Twig/Node/Expression/Test/DefinedTest.php index 3953bbb..7a0150d 100644 --- a/includes/lib/Twig/Node/Expression/Test/DefinedTest.php +++ b/includes/lib/Twig/Node/Expression/Test/DefinedTest.php @@ -11,17 +11,21 @@ namespace Twig\Node\Expression\Test; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; use Twig\Error\SyntaxError; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\BlockReferenceExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\MethodCallExpression; use Twig\Node\Expression\NameExpression; use Twig\Node\Expression\TestExpression; use Twig\Node\Node; +use Twig\TwigTest; /** * Checks if a variable is defined in the current context. @@ -35,8 +39,16 @@ use Twig\Node\Node; */ class DefinedTest extends TestExpression { - public function __construct(Node $node, string $name, ?Node $arguments, int $lineno) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigTest|string $name, ?Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + if ($node instanceof NameExpression) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof GetAttrExpression) { @@ -44,6 +56,8 @@ class DefinedTest extends TestExpression $this->changeIgnoreStrictCheck($node); } elseif ($node instanceof BlockReferenceExpression) { $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof MacroReferenceExpression) { + $node->setAttribute('is_defined_test', true); } elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) { @@ -54,6 +68,10 @@ class DefinedTest extends TestExpression throw new SyntaxError('The "defined" test only works with simple variables.', $lineno); } + if (\is_string($name) && 'defined' !== $name) { + trigger_deprecation('twig/twig', '3.12', 'Creating a "DefinedTest" instance with a test name that is not "defined" is deprecated.'); + } + parent::__construct($node, $name, $arguments, $lineno); } diff --git a/includes/lib/Twig/Node/Expression/TestExpression.php b/includes/lib/Twig/Node/Expression/TestExpression.php index 29c5a52..7b9a541 100644 --- a/includes/lib/Twig/Node/Expression/TestExpression.php +++ b/includes/lib/Twig/Node/Expression/TestExpression.php @@ -11,28 +11,62 @@ namespace Twig\Node\Expression; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; +use Twig\Node\NameDeprecation; use Twig\Node\Node; +use Twig\TwigTest; class TestExpression extends CallExpression { - public function __construct(Node $node, string $name, ?Node $arguments, int $lineno) + #[FirstClassTwigCallableReady] + /** + * @param AbstractExpression $node + */ + public function __construct(Node $node, string|TwigTest $test, ?Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + $nodes = ['node' => $node]; if (null !== $arguments) { $nodes['arguments'] = $arguments; } + if ($test instanceof TwigTest) { + $name = $test->getName(); + } else { + $name = $test; + trigger_deprecation('twig/twig', '3.12', 'Not passing an instance of "TwigTest" when creating a "%s" test of type "%s" is deprecated.', $name, static::class); + } + parent::__construct($nodes, ['name' => $name, 'type' => 'test'], $lineno); + + if ($test instanceof TwigTest) { + $this->setAttribute('twig_callable', $test); + } + + $this->deprecateAttribute('arguments', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('callable', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('is_variadic', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('dynamic_name', new NameDeprecation('twig/twig', '3.12')); } public function compile(Compiler $compiler): void { - $test = $compiler->getEnvironment()->getTest($this->getAttribute('name')); + $name = $this->getAttribute('name'); + if ($this->hasAttribute('twig_callable')) { + $name = $this->getAttribute('twig_callable')->getName(); + if ($name !== $this->getAttribute('name')) { + trigger_deprecation('twig/twig', '3.12', 'Changing the value of a "test" node in a NodeVisitor class is not supported anymore.'); + $this->removeAttribute('twig_callable'); + } + } - $this->setAttribute('arguments', $test->getArguments()); - $this->setAttribute('callable', $test->getCallable()); - $this->setAttribute('is_variadic', $test->isVariadic()); + if (!$this->hasAttribute('twig_callable')) { + $this->setAttribute('twig_callable', $compiler->getEnvironment()->getTest($this->getAttribute('name'))); + } $this->compileCallable($compiler); } diff --git a/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php b/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php index e31e3f8..d4746e7 100644 --- a/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php +++ b/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php @@ -18,16 +18,30 @@ use Twig\Node\Node; abstract class AbstractUnary extends AbstractExpression { + /** + * @param AbstractExpression $node + */ public function __construct(Node $node, int $lineno) { - parent::__construct(['node' => $node], [], $lineno); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance argument to "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + + parent::__construct(['node' => $node], ['with_parentheses' => false], $lineno); } public function compile(Compiler $compiler): void { - $compiler->raw(' '); + if ($this->hasExplicitParentheses()) { + $compiler->raw('('); + } else { + $compiler->raw(' '); + } $this->operator($compiler); $compiler->subcompile($this->getNode('node')); + if ($this->hasExplicitParentheses()) { + $compiler->raw(')'); + } } abstract public function operator(Compiler $compiler): Compiler; diff --git a/includes/lib/Twig/Node/Expression/Unary/SpreadUnary.php b/includes/lib/Twig/Node/Expression/Unary/SpreadUnary.php new file mode 100644 index 0000000..f99072c --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Unary/SpreadUnary.php @@ -0,0 +1,22 @@ +raw('...'); + } +} diff --git a/includes/lib/Twig/Node/Expression/Unary/StringCastUnary.php b/includes/lib/Twig/Node/Expression/Unary/StringCastUnary.php new file mode 100644 index 0000000..87ea17c --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Unary/StringCastUnary.php @@ -0,0 +1,22 @@ +raw('(string)'); + } +} diff --git a/includes/lib/Twig/Node/Expression/Variable/AssignContextVariable.php b/includes/lib/Twig/Node/Expression/Variable/AssignContextVariable.php new file mode 100644 index 0000000..30d8106 --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Variable/AssignContextVariable.php @@ -0,0 +1,18 @@ + $var], ['global' => $global], $var->getTemplateLine()); + } + + public function compile(Compiler $compiler): void + { + /** @var TemplateVariable $var */ + $var = $this->nodes['var']; + + $compiler + ->addDebugInfo($this) + ->write('$macros[') + ->string($var->getName($compiler)) + ->raw('] = ') + ; + + if ($this->getAttribute('global')) { + $compiler + ->raw('$this->macros[') + ->string($var->getName($compiler)) + ->raw('] = ') + ; + } + } +} diff --git a/includes/lib/Twig/Node/Expression/Variable/ContextVariable.php b/includes/lib/Twig/Node/Expression/Variable/ContextVariable.php new file mode 100644 index 0000000..cabc16a --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Variable/ContextVariable.php @@ -0,0 +1,18 @@ +getAttribute('name')) { + $this->setAttribute('name', $compiler->getVarName()); + } + + return $this->getAttribute('name'); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getName($compiler); + + if ('_self' === $name) { + $compiler->raw('$this'); + } else { + $compiler + ->raw('$macros[') + ->string($name) + ->raw(']') + ; + } + } +} diff --git a/includes/lib/Twig/Node/FlushNode.php b/includes/lib/Twig/Node/FlushNode.php index 8a3dde6..ff3bd1c 100644 --- a/includes/lib/Twig/Node/FlushNode.php +++ b/includes/lib/Twig/Node/FlushNode.php @@ -22,16 +22,19 @@ use Twig\Compiler; #[YieldReady] class FlushNode extends Node { - public function __construct(int $lineno, string $tag) + public function __construct(int $lineno) { - parent::__construct([], [], $lineno, $tag); + parent::__construct([], [], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->addDebugInfo($this) - ->write("flush();\n") - ; + $compiler->addDebugInfo($this); + + if ($compiler->getEnvironment()->useYield()) { + $compiler->write("yield '';\n"); + } + + $compiler->write("flush();\n"); } } diff --git a/includes/lib/Twig/Node/ForLoopNode.php b/includes/lib/Twig/Node/ForLoopNode.php index 503687c..1f0a4f3 100644 --- a/includes/lib/Twig/Node/ForLoopNode.php +++ b/includes/lib/Twig/Node/ForLoopNode.php @@ -22,9 +22,9 @@ use Twig\Compiler; #[YieldReady] class ForLoopNode extends Node { - public function __construct(int $lineno, ?string $tag = null) + public function __construct(int $lineno) { - parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno, $tag); + parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno); } public function compile(Compiler $compiler): void @@ -38,7 +38,7 @@ class ForLoopNode extends Node ->write("++\$context['loop']['index0'];\n") ->write("++\$context['loop']['index'];\n") ->write("\$context['loop']['first'] = false;\n") - ->write("if (isset(\$context['loop']['length'])) {\n") + ->write("if (isset(\$context['loop']['revindex0'], \$context['loop']['revindex'])) {\n") ->indent() ->write("--\$context['loop']['revindex0'];\n") ->write("--\$context['loop']['revindex'];\n") diff --git a/includes/lib/Twig/Node/ForNode.php b/includes/lib/Twig/Node/ForNode.php index 5222cf9..4346afe 100644 --- a/includes/lib/Twig/Node/ForNode.php +++ b/includes/lib/Twig/Node/ForNode.php @@ -15,7 +15,7 @@ namespace Twig\Node; use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Expression\AbstractExpression; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; /** * Represents a for node. @@ -27,16 +27,16 @@ class ForNode extends Node { private $loop; - public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno, ?string $tag = null) + public function __construct(AssignContextVariable $keyTarget, AssignContextVariable $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno) { - $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]); + $body = new Nodes([$body, $this->loop = new ForLoopNode($lineno)]); $nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body]; if (null !== $else) { $nodes['else'] = $else; } - parent::__construct($nodes, ['with_loop' => true], $lineno, $tag); + parent::__construct($nodes, ['with_loop' => true], $lineno); } public function compile(Compiler $compiler): void @@ -101,7 +101,14 @@ class ForNode extends Node $compiler->write("\$_parent = \$context['_parent'];\n"); // remove some "private" loop variables (needed for nested loops) - $compiler->write('unset($context[\'_seq\'], $context[\'_iterated\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\'], $context[\'loop\']);'."\n"); + $compiler->write('unset($context[\'_seq\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\']'); + if ($this->hasNode('else')) { + $compiler->raw(', $context[\'_iterated\']'); + } + if ($this->getAttribute('with_loop')) { + $compiler->raw(', $context[\'loop\']'); + } + $compiler->raw(");\n"); // keep the values set in the inner context for variables defined in the outer context $compiler->write("\$context = array_intersect_key(\$context, \$_parent) + \$_parent;\n"); diff --git a/includes/lib/Twig/Node/IfNode.php b/includes/lib/Twig/Node/IfNode.php index 1b88330..2af48fa 100644 --- a/includes/lib/Twig/Node/IfNode.php +++ b/includes/lib/Twig/Node/IfNode.php @@ -23,14 +23,14 @@ use Twig\Compiler; #[YieldReady] class IfNode extends Node { - public function __construct(Node $tests, ?Node $else, int $lineno, ?string $tag = null) + public function __construct(Node $tests, ?Node $else, int $lineno) { $nodes = ['tests' => $tests]; if (null !== $else) { $nodes['else'] = $else; } - parent::__construct($nodes, [], $lineno, $tag); + parent::__construct($nodes, [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/ImportNode.php b/includes/lib/Twig/Node/ImportNode.php index db47bfe..124c41b 100644 --- a/includes/lib/Twig/Node/ImportNode.php +++ b/includes/lib/Twig/Node/ImportNode.php @@ -15,6 +15,7 @@ use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; /** * Represents an import node. @@ -24,27 +25,24 @@ use Twig\Node\Expression\NameExpression; #[YieldReady] class ImportNode extends Node { - public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, ?string $tag = null, bool $global = true) + public function __construct(AbstractExpression $expr, AbstractExpression|AssignTemplateVariable $var, int $lineno) { - parent::__construct(['expr' => $expr, 'var' => $var], ['global' => $global], $lineno, $tag); + if (\func_num_args() > 3) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Passing more than 3 arguments to "%s()" is deprecated.', __METHOD__)); + } + + if (!$var instanceof AssignTemplateVariable) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Passing a "%s" instance as the second argument of "%s" is deprecated, pass a "%s" instead.', $var::class, __CLASS__, AssignTemplateVariable::class)); + + $var = new AssignTemplateVariable($var->getAttribute('name'), $lineno); + } + + parent::__construct(['expr' => $expr, 'var' => $var], [], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->addDebugInfo($this) - ->write('$macros[') - ->repr($this->getNode('var')->getAttribute('name')) - ->raw('] = ') - ; - - if ($this->getAttribute('global')) { - $compiler - ->raw('$this->macros[') - ->repr($this->getNode('var')->getAttribute('name')) - ->raw('] = ') - ; - } + $compiler->subcompile($this->getNode('var')); if ($this->getNode('expr') instanceof NameExpression && '_self' === $this->getNode('expr')->getAttribute('name')) { $compiler->raw('$this'); diff --git a/includes/lib/Twig/Node/IncludeNode.php b/includes/lib/Twig/Node/IncludeNode.php index 7073fa4..5e0c6de 100644 --- a/includes/lib/Twig/Node/IncludeNode.php +++ b/includes/lib/Twig/Node/IncludeNode.php @@ -24,14 +24,14 @@ use Twig\Node\Expression\AbstractExpression; #[YieldReady] class IncludeNode extends Node implements NodeOutputInterface { - public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno) { $nodes = ['expr' => $expr]; if (null !== $variables) { $nodes['variables'] = $variables; } - parent::__construct($nodes, ['only' => $only, 'ignore_missing' => $ignoreMissing], $lineno, $tag); + parent::__construct($nodes, ['only' => $only, 'ignore_missing' => $ignoreMissing], $lineno); } public function compile(Compiler $compiler): void @@ -42,13 +42,12 @@ class IncludeNode extends Node implements NodeOutputInterface $template = $compiler->getVarName(); $compiler - ->write(\sprintf("$%s = null;\n", $template)) ->write("try {\n") ->indent() ->write(\sprintf('$%s = ', $template)) ; - $this->addGetTemplate($compiler); + $this->addGetTemplate($compiler, $template); $compiler ->raw(";\n") @@ -56,6 +55,7 @@ class IncludeNode extends Node implements NodeOutputInterface ->write("} catch (LoaderError \$e) {\n") ->indent() ->write("// ignore missing template\n") + ->write(\sprintf("\$$template = null;\n", $template)) ->outdent() ->write("}\n") ->write(\sprintf("if ($%s) {\n", $template)) @@ -78,10 +78,10 @@ class IncludeNode extends Node implements NodeOutputInterface } } - protected function addGetTemplate(Compiler $compiler) + protected function addGetTemplate(Compiler $compiler/* , string $template = '' */) { $compiler - ->write('$this->loadTemplate(') + ->raw('$this->loadTemplate(') ->subcompile($this->getNode('expr')) ->raw(', ') ->repr($this->getTemplateName()) diff --git a/includes/lib/Twig/Node/MacroNode.php b/includes/lib/Twig/Node/MacroNode.php index a6048de..db3ca45 100644 --- a/includes/lib/Twig/Node/MacroNode.php +++ b/includes/lib/Twig/Node/MacroNode.php @@ -14,6 +14,8 @@ namespace Twig\Node; use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Error\SyntaxError; +use Twig\Node\Expression\ArrayExpression; +use Twig\Node\Expression\Variable\LocalVariable; /** * Represents a macro node. @@ -25,15 +27,33 @@ class MacroNode extends Node { public const VARARGS_NAME = 'varargs'; - public function __construct(string $name, Node $body, Node $arguments, int $lineno, ?string $tag = null) + /** + * @param BodyNode $body + * @param ArrayExpression $arguments + */ + public function __construct(string $name, Node $body, Node $arguments, int $lineno) { - foreach ($arguments as $argumentName => $argument) { - if (self::VARARGS_NAME === $argumentName) { - throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getTemplateLine(), $argument->getSourceContext()); + if (!$body instanceof BodyNode) { + trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated ("%s" given).', BodyNode::class, static::class, $body::class)); + } + + if (!$arguments instanceof ArrayExpression) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class)); + + $args = new ArrayExpression([], $arguments->getTemplateLine()); + foreach ($arguments as $n => $default) { + $args->addElement($default, new LocalVariable($n, $default->getTemplateLine())); + } + $arguments = $args; + } + + foreach ($arguments->getKeyValuePairs() as $pair) { + if ("\u{035C}".self::VARARGS_NAME === $pair['key']->getAttribute('name')) { + throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $pair['value']->getTemplateLine(), $pair['value']->getSourceContext()); } } - parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno, $tag); + parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void @@ -43,51 +63,53 @@ class MacroNode extends Node ->write(\sprintf('public function macro_%s(', $this->getAttribute('name'))) ; - $count = \count($this->getNode('arguments')); - $pos = 0; - foreach ($this->getNode('arguments') as $name => $default) { + /** @var ArrayExpression $arguments */ + $arguments = $this->getNode('arguments'); + foreach ($arguments->getKeyValuePairs() as $pair) { + $name = $pair['key']; + $default = $pair['value']; $compiler - ->raw('$__'.$name.'__ = ') + ->subcompile($name) + ->raw(' = ') ->subcompile($default) + ->raw(', ') ; - - if (++$pos < $count) { - $compiler->raw(', '); - } - } - - if ($count) { - $compiler->raw(', '); } $compiler - ->raw('...$__varargs__') - ->raw(")\n") + ->raw('...$varargs') + ->raw("): string|Markup\n") ->write("{\n") ->indent() ->write("\$macros = \$this->macros;\n") - ->write("\$context = \$this->env->mergeGlobals([\n") + ->write("\$context = [\n") ->indent() ; - foreach ($this->getNode('arguments') as $name => $default) { + foreach ($arguments->getKeyValuePairs() as $pair) { + $name = $pair['key']; + $var = $name->getAttribute('name'); + if (str_starts_with($var, "\u{035C}")) { + $var = substr($var, \strlen("\u{035C}")); + } $compiler ->write('') - ->string($name) - ->raw(' => $__'.$name.'__') + ->string($var) + ->raw(' => ') + ->subcompile($name) ->raw(",\n") ; } - $node = new CaptureNode($this->getNode('body'), $this->getNode('body')->lineno, $this->getNode('body')->tag); + $node = new CaptureNode($this->getNode('body'), $this->getNode('body')->lineno); $compiler ->write('') ->string(self::VARARGS_NAME) ->raw(' => ') - ->raw("\$__varargs__,\n") + ->raw("\$varargs,\n") ->outdent() - ->write("]);\n\n") + ->write("] + \$this->env->getGlobals();\n\n") ->write("\$blocks = [];\n\n") ->write('return ') ->subcompile($node) diff --git a/includes/lib/Twig/Node/ModuleNode.php b/includes/lib/Twig/Node/ModuleNode.php index fb85cd8..17840dd 100644 --- a/includes/lib/Twig/Node/ModuleNode.php +++ b/includes/lib/Twig/Node/ModuleNode.php @@ -21,27 +21,34 @@ use Twig\Source; /** * Represents a module node. * - * Consider this class as being final. If you need to customize the behavior of - * the generated class, consider adding nodes to the following nodes: display_start, - * display_end, constructor_start, constructor_end, and class_end. + * If you need to customize the behavior of the generated class, add nodes to + * the following nodes: display_start, display_end, constructor_start, + * constructor_end, and class_end. * * @author Fabien Potencier */ #[YieldReady] final class ModuleNode extends Node { + /** + * @param BodyNode $body + */ public function __construct(Node $body, ?AbstractExpression $parent, Node $blocks, Node $macros, Node $traits, $embeddedTemplates, Source $source) { + if (!$body instanceof BodyNode) { + trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated.', BodyNode::class, static::class)); + } + $nodes = [ 'body' => $body, 'blocks' => $blocks, 'macros' => $macros, 'traits' => $traits, - 'display_start' => new Node(), - 'display_end' => new Node(), - 'constructor_start' => new Node(), - 'constructor_end' => new Node(), - 'class_end' => new Node(), + 'display_start' => new Nodes(), + 'display_end' => new Nodes(), + 'constructor_start' => new Nodes(), + 'constructor_end' => new Nodes(), + 'class_end' => new Nodes(), ]; if (null !== $parent) { $nodes['parent'] = $parent; @@ -108,7 +115,7 @@ final class ModuleNode extends Node $parent = $this->getNode('parent'); $compiler - ->write("protected function doGetParent(array \$context)\n", "{\n") + ->write("protected function doGetParent(array \$context): bool|string|Template|TemplateWrapper\n", "{\n") ->indent() ->addDebugInfo($parent) ->write('return ') @@ -153,7 +160,9 @@ final class ModuleNode extends Node ->write("use Twig\Sandbox\SecurityNotAllowedFilterError;\n") ->write("use Twig\Sandbox\SecurityNotAllowedFunctionError;\n") ->write("use Twig\Source;\n") - ->write("use Twig\Template;\n\n") + ->write("use Twig\Template;\n") + ->write("use Twig\TemplateWrapper;\n") + ->write("\n") ; } $compiler @@ -163,8 +172,11 @@ final class ModuleNode extends Node ->raw(" extends Template\n") ->write("{\n") ->indent() - ->write("private \$source;\n") - ->write("private \$macros = [];\n\n") + ->write("private Source \$source;\n") + ->write("/**\n") + ->write(" * @var array\n") + ->write(" */\n") + ->write("private array \$macros = [];\n\n") ; } @@ -232,7 +244,11 @@ final class ModuleNode extends Node ->string($key) ->raw(\sprintf(']; unset($_trait_%s_blocks[', $i)) ->string($key) - ->raw("]);\n\n") + ->raw(']); $this->traitAliases[') + ->subcompile($value) + ->raw('] = ') + ->string($key) + ->raw(";\n\n") ; } } @@ -306,7 +322,7 @@ final class ModuleNode extends Node protected function compileDisplay(Compiler $compiler) { $compiler - ->write("protected function doDisplay(array \$context, array \$blocks = [])\n", "{\n") + ->write("protected function doDisplay(array \$context, array \$blocks = []): iterable\n", "{\n") ->indent() ->write("\$macros = \$this->macros;\n") ->subcompile($this->getNode('display_start')) @@ -341,7 +357,7 @@ final class ModuleNode extends Node $compiler->subcompile($this->getNode('display_end')); if (!$this->hasNode('parent')) { - $compiler->write("return; yield '';\n"); // ensure at least one yield call even for templates with no output + $compiler->write("yield from [];\n"); } $compiler @@ -370,7 +386,7 @@ final class ModuleNode extends Node ->write("/**\n") ->write(" * @codeCoverageIgnore\n") ->write(" */\n") - ->write("public function getTemplateName()\n", "{\n") + ->write("public function getTemplateName(): string\n", "{\n") ->indent() ->write('return ') ->repr($this->getSourceContext()->getName()) @@ -398,7 +414,7 @@ final class ModuleNode extends Node } if (!\count($nodes)) { - $nodes = new Node([$nodes]); + $nodes = new Nodes([$nodes]); } foreach ($nodes as $node) { @@ -406,14 +422,6 @@ final class ModuleNode extends Node continue; } - if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { - continue; - } - - if ($node instanceof BlockReferenceNode) { - continue; - } - $traitable = false; break; } @@ -427,7 +435,7 @@ final class ModuleNode extends Node ->write("/**\n") ->write(" * @codeCoverageIgnore\n") ->write(" */\n") - ->write("public function isTraitable()\n", "{\n") + ->write("public function isTraitable(): bool\n", "{\n") ->indent() ->write("return false;\n") ->outdent() @@ -441,7 +449,7 @@ final class ModuleNode extends Node ->write("/**\n") ->write(" * @codeCoverageIgnore\n") ->write(" */\n") - ->write("public function getDebugInfo()\n", "{\n") + ->write("public function getDebugInfo(): array\n", "{\n") ->indent() ->write(\sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true)))) ->outdent() @@ -452,7 +460,7 @@ final class ModuleNode extends Node protected function compileGetSourceContext(Compiler $compiler) { $compiler - ->write("public function getSourceContext()\n", "{\n") + ->write("public function getSourceContext(): Source\n", "{\n") ->indent() ->write('return new Source(') ->string($compiler->getEnvironment()->isDebug() ? $this->getSourceContext()->getCode() : '') @@ -482,19 +490,4 @@ final class ModuleNode extends Node throw new \LogicException('Trait templates can only be constant nodes.'); } } - - private function hasNodeOutputNodes(Node $node): bool - { - if ($node instanceof NodeOutputInterface) { - return true; - } - - foreach ($node as $child) { - if ($this->hasNodeOutputNodes($child)) { - return true; - } - } - - return false; - } } diff --git a/includes/lib/Twig/Node/Node.php b/includes/lib/Twig/Node/Node.php index 5ef661f..7b4044c 100644 --- a/includes/lib/Twig/Node/Node.php +++ b/includes/lib/Twig/Node/Node.php @@ -20,10 +20,15 @@ use Twig\Source; * Represents a node in the AST. * * @author Fabien Potencier + * + * @implements \IteratorAggregate */ #[YieldReady] class Node implements \Countable, \IteratorAggregate { + /** + * @var array + */ protected $nodes; protected $attributes; protected $lineno; @@ -36,50 +41,68 @@ class Node implements \Countable, \IteratorAggregate private $attributeNameDeprecations = []; /** - * @param array $nodes An array of named nodes - * @param array $attributes An array of attributes (should not be nodes) - * @param int $lineno The line number - * @param string $tag The tag name associated with the Node + * @param array $nodes An array of named nodes + * @param array $attributes An array of attributes (should not be nodes) + * @param int $lineno The line number */ - public function __construct(array $nodes = [], array $attributes = [], int $lineno = 0, ?string $tag = null) + public function __construct(array $nodes = [], array $attributes = [], int $lineno = 0) { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Instantiating "%s" directly is deprecated; the class will become abstract in 4.0.', self::class)); + } + foreach ($nodes as $name => $node) { if (!$node instanceof self) { - throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class)); + throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', get_debug_type($node), $name, static::class)); } } $this->nodes = $nodes; $this->attributes = $attributes; $this->lineno = $lineno; - $this->tag = $tag; + + if (\func_num_args() > 3) { + trigger_deprecation('twig/twig', '3.12', \sprintf('The "tag" constructor argument of the "%s" class is deprecated and ignored (check which TokenParser class set it to "%s"), the tag is now automatically set by the Parser when needed.', static::class, func_get_arg(3) ?: 'null')); + } } public function __toString() { - $attributes = []; - foreach ($this->attributes as $name => $value) { - $attributes[] = \sprintf('%s: %s', $name, \is_callable($value) ? '\Closure' : str_replace("\n", '', var_export($value, true))); + $repr = static::class; + + if ($this->tag) { + $repr .= \sprintf("\n tag: %s", $this->tag); } - $repr = [static::class.'('.implode(', ', $attributes)]; + $attributes = []; + foreach ($this->attributes as $name => $value) { + if (\is_callable($value)) { + $v = '\Closure'; + } elseif ($value instanceof \Stringable) { + $v = (string) $value; + } else { + $v = str_replace("\n", '', var_export($value, true)); + } + $attributes[] = \sprintf('%s: %s', $name, $v); + } + + if ($attributes) { + $repr .= \sprintf("\n attributes:\n %s", implode("\n ", $attributes)); + } if (\count($this->nodes)) { + $repr .= "\n nodes:"; foreach ($this->nodes as $name => $node) { - $len = \strlen($name) + 4; + $len = \strlen($name) + 6; $noderepr = []; foreach (explode("\n", (string) $node) as $line) { $noderepr[] = str_repeat(' ', $len).$line; } - $repr[] = \sprintf(' %s: %s', $name, ltrim(implode("\n", $noderepr))); + $repr .= \sprintf("\n %s: %s", $name, ltrim(implode("\n", $noderepr))); } - - $repr[] = ')'; - } else { - $repr[0] .= ')'; } - return implode("\n", $repr); + return $repr; } /** @@ -102,6 +125,18 @@ class Node implements \Countable, \IteratorAggregate return $this->tag; } + /** + * @internal + */ + public function setNodeTag(string $tag): void + { + if ($this->tag) { + throw new \LogicException('The tag of a node can only be set once.'); + } + + $this->tag = $tag; + } + public function hasAttribute(string $name): bool { return \array_key_exists($name, $this->attributes); @@ -151,11 +186,17 @@ class Node implements \Countable, \IteratorAggregate unset($this->attributes[$name]); } + /** + * @param string|int $name + */ public function hasNode(string $name): bool { return isset($this->nodes[$name]); } + /** + * @param string|int $name + */ public function getNode(string $name): self { if (!isset($this->nodes[$name])) { @@ -175,6 +216,9 @@ class Node implements \Countable, \IteratorAggregate return $this->nodes[$name]; } + /** + * @param string|int $name + */ public function setNode(string $name, self $node): void { $triggerDeprecation = \func_num_args() > 2 ? func_get_arg(2) : true; @@ -193,11 +237,17 @@ class Node implements \Countable, \IteratorAggregate $this->nodes[$name] = $node; } + /** + * @param string|int $name + */ public function removeNode(string $name): void { unset($this->nodes[$name]); } + /** + * @param string|int $name + */ public function deprecateNode(string $name, NameDeprecation $dep): void { $this->nodeNameDeprecations[$name] = $dep; diff --git a/includes/lib/Twig/Node/Nodes.php b/includes/lib/Twig/Node/Nodes.php new file mode 100644 index 0000000..bd67053 --- /dev/null +++ b/includes/lib/Twig/Node/Nodes.php @@ -0,0 +1,28 @@ + + */ +#[YieldReady] +final class Nodes extends Node +{ + public function __construct(array $nodes = [], int $lineno = 0) + { + parent::__construct($nodes, [], $lineno); + } +} diff --git a/includes/lib/Twig/Node/PrintNode.php b/includes/lib/Twig/Node/PrintNode.php index da442d8..e3c23bb 100644 --- a/includes/lib/Twig/Node/PrintNode.php +++ b/includes/lib/Twig/Node/PrintNode.php @@ -24,9 +24,9 @@ use Twig\Node\Expression\AbstractExpression; #[YieldReady] class PrintNode extends Node implements NodeOutputInterface { - public function __construct(AbstractExpression $expr, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, int $lineno) { - parent::__construct(['expr' => $expr], [], $lineno, $tag); + parent::__construct(['expr' => $expr], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/SandboxNode.php b/includes/lib/Twig/Node/SandboxNode.php index 80aecbd..d51cea4 100644 --- a/includes/lib/Twig/Node/SandboxNode.php +++ b/includes/lib/Twig/Node/SandboxNode.php @@ -22,9 +22,9 @@ use Twig\Compiler; #[YieldReady] class SandboxNode extends Node { - public function __construct(Node $body, int $lineno, ?string $tag = null) + public function __construct(Node $body, int $lineno) { - parent::__construct(['body' => $body], [], $lineno, $tag); + parent::__construct(['body' => $body], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/SetNode.php b/includes/lib/Twig/Node/SetNode.php index 0900f15..4d97adb 100644 --- a/includes/lib/Twig/Node/SetNode.php +++ b/includes/lib/Twig/Node/SetNode.php @@ -23,7 +23,7 @@ use Twig\Node\Expression\ConstantExpression; #[YieldReady] class SetNode extends Node implements NodeCaptureInterface { - public function __construct(bool $capture, Node $names, Node $values, int $lineno, ?string $tag = null) + public function __construct(bool $capture, Node $names, Node $values, int $lineno) { /* * Optimizes the node when capture is used for a large block of text. @@ -33,15 +33,22 @@ class SetNode extends Node implements NodeCaptureInterface $safe = false; if ($capture) { $safe = true; - if ($values instanceof TextNode) { + // Node::class === get_class($values) should be removed in Twig 4.0 + if (($values instanceof Nodes || Node::class === \get_class($values)) && !\count($values)) { + $values = new ConstantExpression('', $values->getTemplateLine()); + $capture = false; + } elseif ($values instanceof TextNode) { $values = new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine()); $capture = false; + } elseif ($values instanceof PrintNode && $values->getNode('expr') instanceof ConstantExpression) { + $values = $values->getNode('expr'); + $capture = false; } else { $values = new CaptureNode($values, $values->getTemplateLine()); } } - parent::__construct(['names' => $names, 'values' => $values], ['capture' => $capture, 'safe' => $safe], $lineno, $tag); + parent::__construct(['names' => $names, 'values' => $values], ['capture' => $capture, 'safe' => $safe], $lineno); } public function compile(Compiler $compiler): void @@ -78,11 +85,23 @@ class SetNode extends Node implements NodeCaptureInterface $compiler->raw(']'); } else { if ($this->getAttribute('safe')) { - $compiler - ->raw("('' === \$tmp = ") - ->subcompile($this->getNode('values')) - ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())") - ; + if ($this->getNode('values') instanceof ConstantExpression) { + if ('' === $this->getNode('values')->getAttribute('value')) { + $compiler->raw('""'); + } else { + $compiler + ->raw('new Markup(') + ->subcompile($this->getNode('values')) + ->raw(', $this->env->getCharset())') + ; + } + } else { + $compiler + ->raw("('' === \$tmp = ") + ->subcompile($this->getNode('values')) + ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())") + ; + } } else { $compiler->subcompile($this->getNode('values')); } diff --git a/includes/lib/Twig/Node/TypesNode.php b/includes/lib/Twig/Node/TypesNode.php new file mode 100644 index 0000000..ebb304d --- /dev/null +++ b/includes/lib/Twig/Node/TypesNode.php @@ -0,0 +1,28 @@ + + */ +#[YieldReady] +class TypesNode extends Node +{ + /** + * @param array $types + */ + public function __construct(array $types, int $lineno) + { + parent::__construct([], ['mapping' => $types], $lineno); + } + + public function compile(Compiler $compiler) + { + // Don't compile anything. + } +} diff --git a/includes/lib/Twig/Node/WithNode.php b/includes/lib/Twig/Node/WithNode.php index a7b7e70..487e280 100644 --- a/includes/lib/Twig/Node/WithNode.php +++ b/includes/lib/Twig/Node/WithNode.php @@ -22,14 +22,14 @@ use Twig\Compiler; #[YieldReady] class WithNode extends Node { - public function __construct(Node $body, ?Node $variables, bool $only, int $lineno, ?string $tag = null) + public function __construct(Node $body, ?Node $variables, bool $only, int $lineno) { $nodes = ['body' => $body]; if (null !== $variables) { $nodes['variables'] = $variables; } - parent::__construct($nodes, ['only' => $only], $lineno, $tag); + parent::__construct($nodes, ['only' => $only], $lineno); } public function compile(Compiler $compiler): void @@ -61,7 +61,7 @@ class WithNode extends Node $compiler->write("\$context = [];\n"); } - $compiler->write(\sprintf("\$context = \$this->env->mergeGlobals(array_merge(\$context, \$%s));\n", $varsName)); + $compiler->write(\sprintf("\$context = \$%s + \$context + \$this->env->getGlobals();\n", $varsName)); } $compiler diff --git a/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php b/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php index 91e2ea8..a70726b 100644 --- a/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php @@ -16,14 +16,14 @@ use Twig\Extension\EscaperExtension; use Twig\Node\AutoEscapeNode; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; -use Twig\Node\DoNode; -use Twig\Node\Expression\ConditionalExpression; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; -use Twig\Node\Expression\InlinePrint; +use Twig\Node\Expression\OperatorEscapeInterface; use Twig\Node\ImportNode; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\NodeTraverser; @@ -59,7 +59,7 @@ final class EscaperNodeVisitor implements NodeVisitorInterface } elseif ($node instanceof BlockNode) { $this->statusStack[] = $this->blocks[$node->getAttribute('name')] ?? $this->needEscaping(); } elseif ($node instanceof ImportNode) { - $this->safeVars[] = $node->getNode('var')->getAttribute('name'); + $this->safeVars[] = $node->getNode('var')->getNode('var')->getAttribute('name'); } return $node; @@ -75,11 +75,13 @@ final class EscaperNodeVisitor implements NodeVisitorInterface return $this->preEscapeFilterNode($node, $env); } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping()) { $expression = $node->getNode('expr'); - if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) { - return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine()); + if ($expression instanceof OperatorEscapeInterface) { + $this->escapeConditional($expression, $env, $type); + } else { + $node->setNode('expr', $this->escapeExpression($expression, $env, $type)); } - return $this->escapePrintNode($node, $env, $type); + return $node; } if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) { @@ -91,81 +93,57 @@ final class EscaperNodeVisitor implements NodeVisitorInterface return $node; } - private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, string $type): bool + /** + * @param AbstractExpression&OperatorEscapeInterface $expression + */ + private function escapeConditional($expression, Environment $env, string $type): void { - $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env); - $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env); - - return $expr2Safe !== $expr3Safe; + foreach ($expression->getOperandNamesToEscape() as $name) { + /** @var AbstractExpression $operand */ + $operand = $expression->getNode($name); + if ($operand instanceof OperatorEscapeInterface) { + $this->escapeConditional($operand, $env, $type); + } else { + $expression->setNode($name, $this->escapeExpression($operand, $env, $type)); + } + } } - private function unwrapConditional(ConditionalExpression $expression, Environment $env, string $type): ConditionalExpression + private function escapeExpression(AbstractExpression $expression, Environment $env, string $type): AbstractExpression { - // convert "echo a ? b : c" to "a ? echo b : echo c" recursively - $expr2 = $expression->getNode('expr2'); - if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) { - $expr2 = $this->unwrapConditional($expr2, $env, $type); - } else { - $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type); - } - $expr3 = $expression->getNode('expr3'); - if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) { - $expr3 = $this->unwrapConditional($expr3, $env, $type); - } else { - $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type); - } - - return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine()); - } - - private function escapeInlinePrintNode(InlinePrint $node, Environment $env, string $type): Node - { - $expression = $node->getNode('node'); - - if ($this->isSafeFor($type, $expression, $env)) { - return $node; - } - - return new InlinePrint($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); - } - - private function escapePrintNode(PrintNode $node, Environment $env, string $type): Node - { - $expression = $node->getNode('expr'); - - if ($this->isSafeFor($type, $expression, $env)) { - return $node; - } - - $class = \get_class($node); - - return new $class($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); + return $this->isSafeFor($type, $expression, $env) ? $expression : $this->getEscaperFilter($env, $type, $expression); } private function preEscapeFilterNode(FilterExpression $filter, Environment $env): FilterExpression { - $name = $filter->getNode('filter')->getAttribute('value'); + if ($filter->hasAttribute('twig_callable')) { + $type = $filter->getAttribute('twig_callable')->getPreEscape(); + } else { + // legacy + $name = $filter->getNode('filter', false)->getAttribute('value'); + $type = $env->getFilter($name)->getPreEscape(); + } - $type = $env->getFilter($name)->getPreEscape(); if (null === $type) { return $filter; } + /** @var AbstractExpression $node */ $node = $filter->getNode('node'); if ($this->isSafeFor($type, $node, $env)) { return $filter; } - $filter->setNode('node', $this->getEscaperFilter($type, $node)); + $filter->setNode('node', $this->getEscaperFilter($env, $type, $node)); return $filter; } - private function isSafeFor(string $type, Node $expression, Environment $env): bool + private function isSafeFor(string $type, AbstractExpression $expression, Environment $env): bool { $safe = $this->safeAnalysis->getSafe($expression); - if (null === $safe) { + if (!$safe) { if (null === $this->traverser) { $this->traverser = new NodeTraverser($env, [$this->safeAnalysis]); } @@ -188,13 +166,13 @@ final class EscaperNodeVisitor implements NodeVisitorInterface return $this->defaultStrategy ?: false; } - private function getEscaperFilter(string $type, Node $node): FilterExpression + private function getEscaperFilter(Environment $env, string $type, AbstractExpression $node): FilterExpression { $line = $node->getTemplateLine(); - $name = new ConstantExpression('escape', $line); - $args = new Node([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); + $filter = $env->getFilter('escape'); + $args = new Nodes([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); - return new FilterExpression($node, $name, $args, $line); + return new FilterExpression($node, $filter, $args, $line); } public function getPriority(): int diff --git a/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php b/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php index 55f5d6e..a943f45 100644 --- a/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php @@ -47,13 +47,13 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface private $loops = []; private $loopsTargets = []; - private $optimizers; /** * @param int $optimizers The optimizer mode */ - public function __construct(int $optimizers = -1) - { + public function __construct( + private int $optimizers = -1, + ) { if ($optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER | self::OPTIMIZE_TEXT_NODES)) { throw new \InvalidArgumentException(\sprintf('Optimizer mode "%s" is not valid.', $optimizers)); } @@ -62,7 +62,9 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface trigger_deprecation('twig/twig', '3.11', 'The "Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_RAW_FILTER" option is deprecated and does nothing.'); } - $this->optimizers = $optimizers; + if (-1 !== $optimizers && self::OPTIMIZE_TEXT_NODES === (self::OPTIMIZE_TEXT_NODES & $optimizers)) { + trigger_deprecation('twig/twig', '3.12', 'The "Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES" option is deprecated and does nothing.'); + } } public function enterNode(Node $node, Environment $env): Node @@ -82,42 +84,6 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface $node = $this->optimizePrintNode($node); - if (self::OPTIMIZE_TEXT_NODES === (self::OPTIMIZE_TEXT_NODES & $this->optimizers)) { - $node = $this->mergeTextNodeCalls($node); - } - - return $node; - } - - private function mergeTextNodeCalls(Node $node): Node - { - $text = ''; - $names = []; - foreach ($node as $k => $n) { - if (!$n instanceof TextNode) { - return $node; - } - - $text .= $n->getAttribute('data'); - $names[] = $k; - } - - if (!$text) { - return $node; - } - - if (Node::class === \get_class($node)) { - return new TextNode($text, $node->getTemplateLine()); - } - - foreach ($names as $i => $name) { - if (0 === $i) { - $node->setNode($name, new TextNode($text, $node->getTemplateLine())); - } else { - $node->removeNode($name); - } - } - return $node; } diff --git a/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php b/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php index 6df046e..3be8230 100644 --- a/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php @@ -13,13 +13,14 @@ namespace Twig\NodeVisitor; use Twig\Environment; use Twig\Node\Expression\BlockReferenceExpression; -use Twig\Node\Expression\ConditionalExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\MethodCallExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\OperatorEscapeInterface; use Twig\Node\Expression\ParentExpression; use Twig\Node\Node; @@ -36,11 +37,14 @@ final class SafeAnalysisNodeVisitor implements NodeVisitorInterface $this->safeVars = $safeVars; } + /** + * @return array + */ public function getSafe(Node $node) { $hash = spl_object_hash($node); if (!isset($this->data[$hash])) { - return; + return []; } foreach ($this->data[$hash] as $bucket) { @@ -54,6 +58,8 @@ final class SafeAnalysisNodeVisitor implements NodeVisitorInterface return $bucket['value']; } + + return []; } private function setSafe(Node $node, array $safe): void @@ -90,55 +96,69 @@ final class SafeAnalysisNodeVisitor implements NodeVisitorInterface } elseif ($node instanceof ParentExpression) { // parent block is safe by definition $this->setSafe($node, ['all']); - } elseif ($node instanceof ConditionalExpression) { - // intersect safeness of both operands - $safe = $this->intersectSafe($this->getSafe($node->getNode('expr2')), $this->getSafe($node->getNode('expr3'))); - $this->setSafe($node, $safe); + } elseif ($node instanceof OperatorEscapeInterface) { + // intersect safeness of operands + $operands = $node->getOperandNamesToEscape(); + if (2 < \count($operands)) { + throw new \LogicException(\sprintf('Operators with more than 2 operands are not supported yet, got %d.', \count($operands))); + } elseif (2 === \count($operands)) { + $safe = $this->intersectSafe($this->getSafe($node->getNode($operands[0])), $this->getSafe($node->getNode($operands[1]))); + $this->setSafe($node, $safe); + } } elseif ($node instanceof FilterExpression) { // filter expression is safe when the filter is safe - $name = $node->getNode('filter')->getAttribute('value'); - $args = $node->getNode('arguments'); - if ($filter = $env->getFilter($name)) { - $safe = $filter->getSafe($args); + if ($node->hasAttribute('twig_callable')) { + $filter = $node->getAttribute('twig_callable'); + } else { + // legacy + $filter = $env->getFilter($node->getAttribute('name')); + } + + if ($filter) { + $safe = $filter->getSafe($node->getNode('arguments')); if (null === $safe) { + trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $filter::class); + $safe = []; + } + + if (!$safe) { $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety()); } $this->setSafe($node, $safe); - } else { - $this->setSafe($node, []); } } elseif ($node instanceof FunctionExpression) { // function expression is safe when the function is safe - $name = $node->getAttribute('name'); - $args = $node->getNode('arguments'); - if ($function = $env->getFunction($name)) { - $this->setSafe($node, $function->getSafe($args)); + if ($node->hasAttribute('twig_callable')) { + $function = $node->getAttribute('twig_callable'); } else { - $this->setSafe($node, []); + // legacy + $function = $env->getFunction($node->getAttribute('name')); } - } elseif ($node instanceof MethodCallExpression) { - if ($node->getAttribute('safe')) { - $this->setSafe($node, ['all']); - } else { - $this->setSafe($node, []); + + if ($function) { + $safe = $function->getSafe($node->getNode('arguments')); + if (null === $safe) { + trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $function::class); + $safe = []; + } + $this->setSafe($node, $safe); } + } elseif ($node instanceof MethodCallExpression || $node instanceof MacroReferenceExpression) { + // all macro calls are safe + $this->setSafe($node, ['all']); } elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) { $name = $node->getNode('node')->getAttribute('name'); if (\in_array($name, $this->safeVars)) { $this->setSafe($node, ['all']); - } else { - $this->setSafe($node, []); } - } else { - $this->setSafe($node, []); } return $node; } - private function intersectSafe(?array $a = null, ?array $b = null): array + private function intersectSafe(array $a, array $b): array { - if (null === $a || null === $b) { + if (!$a || !$b) { return []; } diff --git a/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php b/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php index 6802088..74b686f 100644 --- a/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php @@ -15,14 +15,17 @@ use Twig\Environment; use Twig\Node\CheckSecurityCallNode; use Twig\Node\CheckSecurityNode; use Twig\Node\CheckToStringNode; +use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\Binary\ConcatBinary; use Twig\Node\Expression\Binary\RangeBinary; use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\Unary\SpreadUnary; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\SetNode; @@ -58,8 +61,8 @@ final class SandboxNodeVisitor implements NodeVisitorInterface } // look for filters - if ($node instanceof FilterExpression && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) { - $this->filters[$node->getNode('filter')->getAttribute('value')] = $node->getTemplateLine(); + if ($node instanceof FilterExpression && !isset($this->filters[$node->getAttribute('name')])) { + $this->filters[$node->getAttribute('name')] = $node->getTemplateLine(); } // look for functions @@ -105,8 +108,8 @@ final class SandboxNodeVisitor implements NodeVisitorInterface if ($node instanceof ModuleNode) { $this->inAModule = false; - $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); - $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); + $node->setNode('constructor_end', new Nodes([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); + $node->setNode('class_end', new Nodes([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); } elseif ($this->inAModule) { if ($node instanceof PrintNode || $node instanceof SetNode) { $this->needsToStringWrap = false; @@ -120,7 +123,18 @@ final class SandboxNodeVisitor implements NodeVisitorInterface { $expr = $node->getNode($name); if (($expr instanceof NameExpression || $expr instanceof GetAttrExpression) && !$expr->isGenerator()) { - $node->setNode($name, new CheckToStringNode($expr)); + // Simplify in 4.0 as the spread attribute has been removed there + $new = new CheckToStringNode($expr); + if ($expr->hasAttribute('spread')) { + $new->setAttribute('spread', $expr->getAttribute('spread')); + } + $node->setNode($name, $new); + } elseif ($expr instanceof SpreadUnary) { + $this->wrapNode($expr, 'node'); + } elseif ($expr instanceof ArrayExpression) { + foreach ($expr as $name => $_) { + $this->wrapNode($expr, $name); + } } } diff --git a/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php b/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php index 6470bda..3c97862 100644 --- a/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php @@ -21,12 +21,11 @@ use Twig\Node\Node; */ final class YieldNotReadyNodeVisitor implements NodeVisitorInterface { - private $useYield; private $yieldReadyNodes = []; - public function __construct(bool $useYield) - { - $this->useYield = $useYield; + public function __construct( + private bool $useYield, + ) { } public function enterNode(Node $node, Environment $env): Node @@ -39,10 +38,10 @@ final class YieldNotReadyNodeVisitor implements NodeVisitorInterface if (!$this->yieldReadyNodes[$class] = (bool) (new \ReflectionClass($class))->getAttributes(YieldReady::class)) { if ($this->useYield) { - throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[YieldReady] attribute.', $class)); + throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class)); } - trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[YieldReady] attribute.', $class); + trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class); } return $node; diff --git a/includes/lib/Twig/OperatorPrecedenceChange.php b/includes/lib/Twig/OperatorPrecedenceChange.php new file mode 100644 index 0000000..1d9edef --- /dev/null +++ b/includes/lib/Twig/OperatorPrecedenceChange.php @@ -0,0 +1,42 @@ + + */ +class OperatorPrecedenceChange +{ + public function __construct( + private string $package, + private string $version, + private int $newPrecedence, + ) { + } + + public function getPackage(): string + { + return $this->package; + } + + public function getVersion(): string + { + return $this->version; + } + + public function getNewPrecedence(): int + { + return $this->newPrecedence; + } +} diff --git a/includes/lib/Twig/Parser.php b/includes/lib/Twig/Parser.php index 7cfc205..7bf51b7 100644 --- a/includes/lib/Twig/Parser.php +++ b/includes/lib/Twig/Parser.php @@ -16,12 +16,16 @@ use Twig\Error\SyntaxError; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; use Twig\Node\BodyNode; +use Twig\Node\EmptyNode; use Twig\Node\Expression\AbstractExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\MacroNode; use Twig\Node\ModuleNode; use Twig\Node\Node; use Twig\Node\NodeCaptureInterface; use Twig\Node\NodeOutputInterface; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\TextNode; use Twig\TokenParser\TokenParserInterface; @@ -40,19 +44,26 @@ class Parser private $blocks; private $blockStack; private $macros; - private $env; private $importedSymbols; private $traits; private $embeddedTemplates = []; private $varNameSalt = 0; + private $ignoreUnknownTwigCallables = false; - public function __construct(Environment $env) + public function __construct( + private Environment $env, + ) { + } + + public function getEnvironment(): Environment { - $this->env = $env; + return $this->env; } public function getVarName(): string { + trigger_deprecation('twig/twig', '3.15', 'The "%s()" method is deprecated.', __METHOD__); + return \sprintf('__internal_parse_%d', $this->varNameSalt++); } @@ -84,7 +95,7 @@ class Parser $body = $this->subparse($test, $dropNeedle); if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) { - $body = new Node(); + $body = new EmptyNode(); } } catch (SyntaxError $e) { if (!$e->getSourceContext()) { @@ -92,13 +103,13 @@ class Parser } if (!$e->getTemplateLine()) { - $e->setTemplateLine($this->stream->getCurrent()->getLine()); + $e->setTemplateLine($this->getCurrentToken()->getLine()); } throw $e; } - $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); + $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Nodes($this->blocks), new Nodes($this->macros), new Nodes($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); $traverser = new NodeTraverser($this->env, $this->visitors); @@ -115,29 +126,45 @@ class Parser return $node; } + public function shouldIgnoreUnknownTwigCallables(): bool + { + return $this->ignoreUnknownTwigCallables; + } + + public function subparseIgnoreUnknownTwigCallables($test, bool $dropNeedle = false): void + { + $previous = $this->ignoreUnknownTwigCallables; + $this->ignoreUnknownTwigCallables = true; + try { + $this->subparse($test, $dropNeedle); + } finally { + $this->ignoreUnknownTwigCallables = $previous; + } + } + public function subparse($test, bool $dropNeedle = false): Node { $lineno = $this->getCurrentToken()->getLine(); $rv = []; while (!$this->stream->isEOF()) { switch ($this->getCurrentToken()->getType()) { - case /* Token::TEXT_TYPE */ 0: + case Token::TEXT_TYPE: $token = $this->stream->next(); $rv[] = new TextNode($token->getValue(), $token->getLine()); break; - case /* Token::VAR_START_TYPE */ 2: + case Token::VAR_START_TYPE: $token = $this->stream->next(); $expr = $this->expressionParser->parseExpression(); - $this->stream->expect(/* Token::VAR_END_TYPE */ 4); + $this->stream->expect(Token::VAR_END_TYPE); $rv[] = new PrintNode($expr, $token->getLine()); break; - case /* Token::BLOCK_START_TYPE */ 1: + case Token::BLOCK_START_TYPE: $this->stream->next(); $token = $this->getCurrentToken(); - if (/* Token::NAME_TYPE */ 5 !== $token->getType()) { + if (Token::NAME_TYPE !== $token->getType()) { throw new SyntaxError('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext()); } @@ -150,14 +177,14 @@ class Parser return $rv[0]; } - return new Node($rv, [], $lineno); + return new Nodes($rv, $lineno); } if (!$subparser = $this->env->getTokenParser($token->getValue())) { if (null !== $test) { $e = new SyntaxError(\sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); - $callable = (new ReflectionCallable($test))->getCallable(); + $callable = (new ReflectionCallable(new TwigTest('decision', $test)))->getCallable(); if (\is_array($callable) && $callable[0] instanceof TokenParserInterface) { $e->appendMessage(\sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $callable[0]->getTag(), $lineno)); } @@ -173,13 +200,16 @@ class Parser $subparser->setParser($this); $node = $subparser->parse($token); - if (null !== $node) { + if (!$node) { + trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class); + } else { + $node->setNodeTag($subparser->getTag()); $rv[] = $node; } break; default: - throw new SyntaxError('Lexer or parser ended up in unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); + throw new SyntaxError('The lexer or the parser ended up in an unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); } } @@ -187,11 +217,13 @@ class Parser return $rv[0]; } - return new Node($rv, [], $lineno); + return new Nodes($rv, $lineno); } public function getBlockStack(): array { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return $this->blockStack; } @@ -212,21 +244,31 @@ class Parser public function hasBlock(string $name): bool { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return isset($this->blocks[$name]); } public function getBlock(string $name): Node { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return $this->blocks[$name]; } public function setBlock(string $name, BlockNode $value): void { + if (isset($this->blocks[$name])) { + throw new SyntaxError(\sprintf("The block '%s' has already been defined line %d.", $name, $this->blocks[$name]->getTemplateLine()), $this->getCurrentToken()->getLine(), $this->blocks[$name]->getSourceContext()); + } + $this->blocks[$name] = new BodyNode([$value], [], $value->getTemplateLine()); } public function hasMacro(string $name): bool { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return isset($this->macros[$name]); } @@ -242,6 +284,8 @@ class Parser public function hasTraits(): bool { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return \count($this->traits) > 0; } @@ -252,9 +296,15 @@ class Parser $this->embeddedTemplates[] = $template; } - public function addImportedSymbol(string $type, string $alias, ?string $name = null, ?AbstractExpression $node = null): void + public function addImportedSymbol(string $type, string $alias, ?string $name = null, AbstractExpression|AssignTemplateVariable|null $internalRef = null): void { - $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node]; + if ($internalRef && !$internalRef instanceof AssignTemplateVariable) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance as an internal reference is deprecated ("%s" given).', __METHOD__, AssignTemplateVariable::class, $internalRef::class); + + $internalRef = new AssignTemplateVariable(new TemplateVariable($internalRef->getAttribute('name'), $internalRef->getTemplateLine()), $internalRef->getAttribute('global')); + } + + $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $internalRef]; } public function getImportedSymbol(string $type, string $alias) @@ -285,11 +335,26 @@ class Parser public function getParent(): ?Node { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return $this->parent; } + public function hasInheritance() + { + return $this->parent || 0 < \count($this->traits); + } + public function setParent(?Node $parent): void { + if (null === $parent) { + trigger_deprecation('twig/twig', '3.12', 'Passing "null" to "%s()" is deprecated.', __METHOD__); + } + + if (null !== $this->parent) { + throw new SyntaxError('Multiple extends tags are forbidden.', $parent->getTemplateLine(), $parent->getSourceContext()); + } + $this->parent = $parent; } @@ -340,7 +405,8 @@ class Parser // here, $nested means "being at the root level of a child template" // we need to discard the wrapping "Node" for the "body" node - $nested = $nested || Node::class !== \get_class($node); + // Node::class !== \get_class($node) should be removed in Twig 4.0 + $nested = $nested || (Node::class !== \get_class($node) && !$node instanceof Nodes); foreach ($node as $k => $n) { if (null !== $n && null === $this->filterBodyNodes($n, $nested)) { $node->removeNode($k); diff --git a/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php b/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php index 4d2a581..4c5c200 100644 --- a/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php +++ b/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php @@ -17,6 +17,7 @@ use Twig\Node\BodyNode; use Twig\Node\MacroNode; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\NodeVisitor\NodeVisitorInterface; use Twig\Profiler\Node\EnterProfileNode; use Twig\Profiler\Node\LeaveProfileNode; @@ -27,12 +28,11 @@ use Twig\Profiler\Profile; */ final class ProfilerNodeVisitor implements NodeVisitorInterface { - private $extensionName; private $varName; - public function __construct(string $extensionName) - { - $this->extensionName = $extensionName; + public function __construct( + private string $extensionName, + ) { $this->varName = \sprintf('__internal_%s', hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $extensionName)); } @@ -44,8 +44,8 @@ final class ProfilerNodeVisitor implements NodeVisitorInterface public function leaveNode(Node $node, Environment $env): ?Node { if ($node instanceof ModuleNode) { - $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); - $node->setNode('display_end', new Node([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); + $node->setNode('display_start', new Nodes([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); + $node->setNode('display_end', new Nodes([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); } elseif ($node instanceof BlockNode) { $node->setNode('body', new BodyNode([ new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $this->varName), diff --git a/includes/lib/Twig/Profiler/Profile.php b/includes/lib/Twig/Profiler/Profile.php index 72506b7..a3c6ee0 100644 --- a/includes/lib/Twig/Profiler/Profile.php +++ b/includes/lib/Twig/Profiler/Profile.php @@ -20,18 +20,15 @@ final class Profile implements \IteratorAggregate, \Serializable public const BLOCK = 'block'; public const TEMPLATE = 'template'; public const MACRO = 'macro'; - - private $template; - private $name; - private $type; private $starts = []; private $ends = []; private $profiles = []; - public function __construct(string $template = 'main', string $type = self::ROOT, string $name = 'main') - { - $this->template = $template; - $this->type = $type; + public function __construct( + private string $template = 'main', + private string $type = self::ROOT, + private string $name = 'main', + ) { $this->name = str_starts_with($name, '__internal_') ? 'INTERNAL' : $name; $this->enter(); } @@ -102,6 +99,22 @@ final class Profile implements \IteratorAggregate, \Serializable return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0; } + /** + * Returns the start time in microseconds. + */ + public function getStartTime(): float + { + return $this->starts['wt'] ?? 0.0; + } + + /** + * Returns the end time in microseconds. + */ + public function getEndTime(): float + { + return $this->ends['wt'] ?? 0.0; + } + /** * Returns the memory usage in bytes. */ diff --git a/includes/lib/Twig/Resources/core.php b/includes/lib/Twig/Resources/core.php index e5372cd..bc0b271 100644 --- a/includes/lib/Twig/Resources/core.php +++ b/includes/lib/Twig/Resources/core.php @@ -441,7 +441,7 @@ function twig_constant_is_defined($constant, $object = null) { trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); - return CoreExtension::constantIsDefined($constant, $object); + return CoreExtension::constant($constant, $object, true); } /** @@ -537,5 +537,5 @@ function twig_check_arrow_in_sandbox(Environment $env, $arrow, $thing, $type) { trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); - return CoreExtension::checkArrowInSandbox($env, $arrow, $thing, $type); + CoreExtension::checkArrow($env, $arrow, $thing, $type); } diff --git a/includes/lib/Twig/Runtime/EscaperRuntime.php b/includes/lib/Twig/Runtime/EscaperRuntime.php index b1dac96..ce41e0a 100644 --- a/includes/lib/Twig/Runtime/EscaperRuntime.php +++ b/includes/lib/Twig/Runtime/EscaperRuntime.php @@ -26,11 +26,9 @@ final class EscaperRuntime implements RuntimeExtensionInterface /** @internal */ public $safeLookup = []; - private $charset; - - public function __construct($charset = 'UTF-8') - { - $this->charset = $charset; + public function __construct( + private $charset = 'UTF-8', + ) { } /** @@ -54,6 +52,9 @@ final class EscaperRuntime implements RuntimeExtensionInterface return $this->escapers; } + /** + * @param array, string[]> $safeClasses + */ public function setSafeClasses(array $safeClasses = []) { $this->safeClasses = []; @@ -63,6 +64,10 @@ final class EscaperRuntime implements RuntimeExtensionInterface } } + /** + * @param class-string<\Stringable> $class + * @param string[] $strategies + */ public function addSafeClass(string $class, array $strategies) { $class = ltrim($class, '\\'); @@ -93,7 +98,7 @@ final class EscaperRuntime implements RuntimeExtensionInterface } if (!\is_string($string)) { - if (\is_object($string) && method_exists($string, '__toString')) { + if ($string instanceof \Stringable) { if ($autoescape) { $c = \get_class($string); if (!isset($this->safeClasses[$c])) { diff --git a/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php b/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php index b360d7b..0510668 100644 --- a/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php +++ b/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php @@ -23,11 +23,9 @@ use Psr\Container\ContainerInterface; */ class ContainerRuntimeLoader implements RuntimeLoaderInterface { - private $container; - - public function __construct(ContainerInterface $container) - { - $this->container = $container; + public function __construct( + private ContainerInterface $container, + ) { } public function load(string $class) diff --git a/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php b/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php index 1306483..5d4e70b 100644 --- a/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php +++ b/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php @@ -18,14 +18,12 @@ namespace Twig\RuntimeLoader; */ class FactoryRuntimeLoader implements RuntimeLoaderInterface { - private $map; - /** * @param array $map An array where keys are class names and values factory callables */ - public function __construct(array $map = []) - { - $this->map = $map; + public function __construct( + private array $map = [], + ) { } public function load(string $class) diff --git a/includes/lib/Twig/Sandbox/SecurityPolicy.php b/includes/lib/Twig/Sandbox/SecurityPolicy.php index 417d38a..b0d0542 100644 --- a/includes/lib/Twig/Sandbox/SecurityPolicy.php +++ b/includes/lib/Twig/Sandbox/SecurityPolicy.php @@ -50,7 +50,7 @@ final class SecurityPolicy implements SecurityPolicyInterface { $this->allowedMethods = []; foreach ($methods as $class => $m) { - $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]); + $this->allowedMethods[$class] = array_map('strtolower', \is_array($m) ? $m : [$m]); } } @@ -68,7 +68,13 @@ final class SecurityPolicy implements SecurityPolicyInterface { foreach ($tags as $tag) { if (!\in_array($tag, $this->allowedTags)) { - throw new SecurityNotAllowedTagError(\sprintf('Tag "%s" is not allowed.', $tag), $tag); + if ('extends' === $tag) { + trigger_deprecation('twig/twig', '3.12', 'The "extends" tag is always allowed in sandboxes, but won\'t be in 4.0, please enable it explicitly in your sandbox policy if needed.'); + } elseif ('use' === $tag) { + trigger_deprecation('twig/twig', '3.12', 'The "use" tag is always allowed in sandboxes, but won\'t be in 4.0, please enable it explicitly in your sandbox policy if needed.'); + } else { + throw new SecurityNotAllowedTagError(\sprintf('Tag "%s" is not allowed.', $tag), $tag); + } } } @@ -92,7 +98,7 @@ final class SecurityPolicy implements SecurityPolicyInterface } $allowed = false; - $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); + $method = strtolower($method); foreach ($this->allowedMethods as $class => $methods) { if ($obj instanceof $class && \in_array($method, $methods)) { $allowed = true; diff --git a/includes/lib/Twig/Source.php b/includes/lib/Twig/Source.php index 3cb0240..0f626b6 100644 --- a/includes/lib/Twig/Source.php +++ b/includes/lib/Twig/Source.php @@ -18,20 +18,16 @@ namespace Twig; */ final class Source { - private $code; - private $name; - private $path; - /** * @param string $code The template source code * @param string $name The template logical name * @param string $path The filesystem path of the template if any */ - public function __construct(string $code, string $name, string $path = '') - { - $this->code = $code; - $this->name = $name; - $this->path = $path; + public function __construct( + private string $code, + private string $name, + private string $path = '', + ) { } public function getCode(): string diff --git a/includes/lib/Twig/Template.php b/includes/lib/Twig/Template.php index 04c530c..26f5b5d 100644 --- a/includes/lib/Twig/Template.php +++ b/includes/lib/Twig/Template.php @@ -13,7 +13,6 @@ namespace Twig; use Twig\Error\Error; -use Twig\Error\LoaderError; use Twig\Error\RuntimeError; /** @@ -35,41 +34,37 @@ abstract class Template protected $parent; protected $parents = []; - protected $env; protected $blocks = []; protected $traits = []; + protected $traitAliases = []; protected $extensions = []; protected $sandbox; private $useYield; - public function __construct(Environment $env) - { - $this->env = $env; + public function __construct( + protected Environment $env, + ) { $this->useYield = $env->useYield(); $this->extensions = $env->getExtensions(); } /** * Returns the template name. - * - * @return string The template name */ - abstract public function getTemplateName(); + abstract public function getTemplateName(): string; /** * Returns debug information about the template. * - * @return array Debug information + * @return array Debug information */ - abstract public function getDebugInfo(); + abstract public function getDebugInfo(): array; /** * Returns information about the original template source code. - * - * @return Source */ - abstract public function getSourceContext(); + abstract public function getSourceContext(): Source; /** * Returns the parent template. @@ -79,40 +74,33 @@ abstract class Template * * @return self|TemplateWrapper|false The parent template or false if there is no parent */ - public function getParent(array $context) + public function getParent(array $context): self|TemplateWrapper|false { if (null !== $this->parent) { return $this->parent; } - try { - if (!$parent = $this->doGetParent($context)) { - return false; - } + if (!$parent = $this->doGetParent($context)) { + return false; + } - if ($parent instanceof self || $parent instanceof TemplateWrapper) { - return $this->parents[$parent->getSourceContext()->getName()] = $parent; - } + if ($parent instanceof self || $parent instanceof TemplateWrapper) { + return $this->parents[$parent->getSourceContext()->getName()] = $parent; + } - if (!isset($this->parents[$parent])) { - $this->parents[$parent] = $this->loadTemplate($parent); - } - } catch (LoaderError $e) { - $e->setSourceContext(null); - $e->guess(); - - throw $e; + if (!isset($this->parents[$parent])) { + $this->parents[$parent] = $this->loadTemplate($parent); } return $this->parents[$parent]; } - protected function doGetParent(array $context) + protected function doGetParent(array $context): bool|string|self|TemplateWrapper { return false; } - public function isTraitable() + public function isTraitable(): bool { return true; } @@ -127,7 +115,7 @@ abstract class Template * @param array $context The context * @param array $blocks The current set of blocks */ - public function displayParentBlock($name, array $context, array $blocks = []) + public function displayParentBlock($name, array $context, array $blocks = []): void { foreach ($this->yieldParentBlock($name, $context, $blocks) as $data) { echo $data; @@ -145,7 +133,7 @@ abstract class Template * @param array $blocks The current set of blocks * @param bool $useBlocks Whether to use the current set of blocks */ - public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null) + public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null): void { foreach ($this->yieldBlock($name, $context, $blocks, $useBlocks, $templateContext) as $data) { echo $data; @@ -164,8 +152,19 @@ abstract class Template * * @return string The rendered block */ - public function renderParentBlock($name, array $context, array $blocks = []) + public function renderParentBlock($name, array $context, array $blocks = []): string { + if (!$this->useYield) { + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + $this->displayParentBlock($name, $context, $blocks); + + return ob_get_clean(); + } + $content = ''; foreach ($this->yieldParentBlock($name, $context, $blocks) as $data) { $content .= $data; @@ -187,8 +186,28 @@ abstract class Template * * @return string The rendered block */ - public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true) + public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true): string { + if (!$this->useYield) { + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->displayBlock($name, $context, $blocks, $useBlocks); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + $content = ''; foreach ($this->yieldBlock($name, $context, $blocks, $useBlocks) as $data) { $content .= $data; @@ -209,7 +228,7 @@ abstract class Template * * @return bool true if the block exists, false otherwise */ - public function hasBlock($name, array $context, array $blocks = []) + public function hasBlock($name, array $context, array $blocks = []): bool { if (isset($blocks[$name])) { return $blocks[$name][0] instanceof self; @@ -235,9 +254,9 @@ abstract class Template * @param array $context The context * @param array $blocks The current set of blocks * - * @return array An array of block names + * @return array An array of block names */ - public function getBlockNames(array $context, array $blocks = []) + public function getBlockNames(array $context, array $blocks = []): array { $names = array_merge(array_keys($blocks), array_keys($this->blocks)); @@ -250,10 +269,8 @@ abstract class Template /** * @param string|TemplateWrapper|array $template - * - * @return self|TemplateWrapper */ - protected function loadTemplate($template, $templateName = null, $line = null, $index = null) + protected function loadTemplate($template, $templateName = null, $line = null, $index = null): self|TemplateWrapper { try { if (\is_array($template)) { @@ -301,10 +318,9 @@ abstract class Template /** * @internal - * - * @return self + * @return $this */ - public function unwrap() + public function unwrap(): self { return $this; } @@ -317,7 +333,7 @@ abstract class Template * * @return array An array of blocks */ - public function getBlocks() + public function getBlocks(): array { return $this->blocks; } @@ -331,6 +347,26 @@ abstract class Template public function render(array $context): string { + if (!$this->useYield) { + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->display($context); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + $content = ''; foreach ($this->yield($context) as $data) { $content .= $data; @@ -340,35 +376,15 @@ abstract class Template } /** - * @return iterable + * @return iterable */ public function yield(array $context, array $blocks = []): iterable { - $context = $this->env->mergeGlobals($context); + $context += $this->env->getGlobals(); $blocks = array_merge($this->blocks, $blocks); try { - if ($this->useYield) { - yield from $this->doDisplay($context, $blocks); - - return; - } - - $level = ob_get_level(); - ob_start(); - - foreach ($this->doDisplay($context, $blocks) as $data) { - if (ob_get_length()) { - $data = ob_get_clean().$data; - ob_start(); - } - - yield $data; - } - - if (ob_get_length()) { - yield ob_get_clean(); - } + yield from $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); @@ -386,19 +402,13 @@ abstract class Template $e->guess(); throw $e; - } finally { - if (!$this->useYield) { - while (ob_get_level() > $level) { - ob_end_clean(); - } - } } } /** - * @return iterable + * @return iterable */ - public function yieldBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null) + public function yieldBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null): iterable { if ($useBlocks && isset($blocks[$name])) { $template = $blocks[$name][0]; @@ -418,27 +428,7 @@ abstract class Template if (null !== $template) { try { - if ($this->useYield) { - yield from $template->$block($context, $blocks); - - return; - } - - $level = ob_get_level(); - ob_start(); - - foreach ($template->$block($context, $blocks) as $data) { - if (ob_get_length()) { - $data = ob_get_clean().$data; - ob_start(); - } - - yield $data; - } - - if (ob_get_length()) { - yield ob_get_clean(); - } + yield from $template->$block($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($template->getSourceContext()); @@ -456,12 +446,6 @@ abstract class Template $e->guess(); throw $e; - } finally { - if (!$this->useYield) { - while (ob_get_level() > $level) { - ob_end_clean(); - } - } } } elseif ($parent = $this->getParent($context)) { yield from $parent->unwrap()->yieldBlock($name, $context, array_merge($this->blocks, $blocks), false, $templateContext ?? $this); @@ -482,12 +466,12 @@ abstract class Template * @param array $context The context * @param array $blocks The current set of blocks * - * @return iterable + * @return iterable */ - public function yieldParentBlock($name, array $context, array $blocks = []) + public function yieldParentBlock($name, array $context, array $blocks = []): iterable { if (isset($this->traits[$name])) { - yield from $this->traits[$name][0]->yieldBlock($name, $context, $blocks, false); + yield from $this->traits[$name][0]->yieldBlock($this->traitAliases[$name] ?? $name, $context, $blocks, false); } elseif ($parent = $this->getParent($context)) { yield from $parent->unwrap()->yieldBlock($name, $context, $blocks, false); } else { @@ -495,11 +479,42 @@ abstract class Template } } + protected function hasMacro(string $name, array $context): bool + { + if (method_exists($this, $name)) { + return true; + } + + if (!$parent = $this->getParent($context)) { + return false; + } + + return $parent->hasMacro($name, $context); + } + + protected function getTemplateForMacro(string $name, array $context, int $line, Source $source): Template + { + if (method_exists($this, $name)) { + return $this; + } + + $parent = $this; + while ($parent = $parent->getParent($context)) { + if (method_exists($parent, $name)) { + return $parent; + } + } + + throw new RuntimeError(\sprintf('Macro "%s" is not defined in template "%s".', substr($name, \strlen('macro_')), $this->getTemplateName()), $line, $source); + } + /** * Auto-generated method to display the template with the given context. * * @param array $context An array of parameters to pass to the template * @param array $blocks An array of blocks to pass to the template + * + * @return iterable */ - abstract protected function doDisplay(array $context, array $blocks = []); + abstract protected function doDisplay(array $context, array $blocks = []): iterable; } diff --git a/includes/lib/Twig/TemplateWrapper.php b/includes/lib/Twig/TemplateWrapper.php index fcfb070..5528037 100644 --- a/includes/lib/Twig/TemplateWrapper.php +++ b/includes/lib/Twig/TemplateWrapper.php @@ -18,19 +18,32 @@ namespace Twig; */ final class TemplateWrapper { - private $env; - private $template; - /** * This method is for internal use only and should never be called * directly (use Twig\Environment::load() instead). * * @internal */ - public function __construct(Environment $env, Template $template) + public function __construct( + private Environment $env, + private Template $template, + ) { + } + + /** + * @return iterable + */ + public function stream(array $context = []): iterable { - $this->env = $env; - $this->template = $template; + yield from $this->template->yield($context); + } + + /** + * @return iterable + */ + public function streamBlock(string $name, array $context = []): iterable + { + yield from $this->template->yieldBlock($name, $context); } public function render(array $context = []): string @@ -60,12 +73,12 @@ final class TemplateWrapper public function renderBlock(string $name, array $context = []): string { - return $this->template->renderBlock($name, $this->env->mergeGlobals($context)); + return $this->template->renderBlock($name, $context + $this->env->getGlobals()); } public function displayBlock(string $name, array $context = []) { - $context = $this->env->mergeGlobals($context); + $context += $this->env->getGlobals(); foreach ($this->template->yieldBlock($name, $context) as $data) { echo $data; } diff --git a/includes/lib/Twig/Test/IntegrationTestCase.php b/includes/lib/Twig/Test/IntegrationTestCase.php index 5519dd0..8c9d41f 100644 --- a/includes/lib/Twig/Test/IntegrationTestCase.php +++ b/includes/lib/Twig/Test/IntegrationTestCase.php @@ -30,9 +30,19 @@ use Twig\TwigTest; abstract class IntegrationTestCase extends TestCase { /** + * @deprecated since Twig 3.13, use getFixturesDirectory() instead. + * * @return string */ - abstract protected function getFixturesDir(); + protected function getFixturesDir() + { + throw new \BadMethodCallException('Not implemented.'); + } + + protected static function getFixturesDirectory(): string + { + throw new \BadMethodCallException('Not implemented.'); + } /** * @return RuntimeLoaderInterface[] @@ -92,9 +102,19 @@ abstract class IntegrationTestCase extends TestCase $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation); } + /** + * @final since Twig 3.13 + */ public function getTests($name, $legacyTests = false) { - $fixturesDir = realpath($this->getFixturesDir()); + try { + $fixturesDir = static::getFixturesDirectory(); + } catch (\BadMethodCallException) { + trigger_deprecation('twig/twig', '3.13', 'Not overriding "%s::getFixturesDirectory()" in "%s" is deprecated. This method will be abstract in 4.0.', self::class, static::class); + $fixturesDir = $this->getFixturesDir(); + } + + $fixturesDir = realpath($fixturesDir); $tests = []; foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($fixturesDir), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) { @@ -126,10 +146,10 @@ abstract class IntegrationTestCase extends TestCase throw new \InvalidArgumentException(\sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file))); } - $tests[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; + $tests[str_replace($fixturesDir.'/', '', $file)] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; } - if ($legacyTests && empty($tests)) { + if ($legacyTests && !$tests) { // add a dummy test to avoid a PHPUnit message return [['not', '-', '', [], '', []]]; } @@ -137,6 +157,9 @@ abstract class IntegrationTestCase extends TestCase return $tests; } + /** + * @final since Twig 3.13 + */ public function getLegacyTests() { return $this->getTests('testLegacyIntegration', true); @@ -156,13 +179,16 @@ abstract class IntegrationTestCase extends TestCase } } - $loader = new ArrayLoader($templates); - foreach ($outputs as $i => $match) { $config = array_merge([ 'cache' => false, 'strict_variables' => true, ], $match[2] ? eval($match[2].';') : []); + // make sure that template are always compiled even if they are the same (useful when testing with more than one data/expect sections) + foreach ($templates as $j => $template) { + $templates[$j] = $template.str_repeat(' ', $i); + } + $loader = new ArrayLoader($templates); $twig = new Environment($loader, $config); $twig->addGlobal('global', 'global'); foreach ($this->getRuntimeLoaders() as $runtimeLoader) { @@ -219,7 +245,7 @@ abstract class IntegrationTestCase extends TestCase $output = trim($template->render(eval($match[1].';')), "\n "); } catch (\Exception $e) { if (false !== $exception) { - $this->assertSame(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage()))); + $this->assertStringMatchesFormat(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage()))); return; } diff --git a/includes/lib/Twig/Test/NodeTestCase.php b/includes/lib/Twig/Test/NodeTestCase.php index 4046f08..bac0ea6 100644 --- a/includes/lib/Twig/Test/NodeTestCase.php +++ b/includes/lib/Twig/Test/NodeTestCase.php @@ -11,6 +11,8 @@ namespace Twig\Test; +use PHPUnit\Framework\Attributes\BeforeClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Twig\Compiler; use Twig\Environment; @@ -24,11 +26,26 @@ abstract class NodeTestCase extends TestCase */ private $currentEnv; - abstract public function getTests(); + public function getTests() + { + return []; + } + + /** + * @return iterable + */ + public static function provideTests(): iterable + { + trigger_deprecation('twig/twig', '3.13', 'Not implementing "%s()" in "%s" is deprecated. This method will be abstract in 4.0.', __METHOD__, static::class); + + return []; + } /** * @dataProvider getTests + * @dataProvider provideTests */ + #[DataProvider('getTests'), DataProvider('provideTests')] public function testCompile($node, $source, $environment = null, $isPattern = false) { $this->assertNodeCompilation($source, $node, $environment, $isPattern); @@ -51,24 +68,58 @@ abstract class NodeTestCase extends TestCase return new Compiler($environment ?? $this->getEnvironment()); } + /** + * @final since Twig 3.13 + */ protected function getEnvironment() { - if (!$this->currentEnv) { - $this->currentEnv = new Environment(new ArrayLoader()); - } - - return $this->currentEnv; + return $this->currentEnv ??= static::createEnvironment(); } + protected static function createEnvironment(): Environment + { + return new Environment(new ArrayLoader()); + } + + /** + * @deprecated since Twig 3.13, use createVariableGetter() instead. + */ protected function getVariableGetter($name, $line = false) + { + trigger_deprecation('twig/twig', '3.13', 'Method "%s()" is deprecated, use "createVariableGetter()" instead.', __METHOD__); + + return self::createVariableGetter($name, $line); + } + + final protected static function createVariableGetter(string $name, bool $line = false): string { $line = $line > 0 ? "// line $line\n" : ''; return \sprintf('%s($context["%s"] ?? null)', $line, $name); } + /** + * @deprecated since Twig 3.13, use createAttributeGetter() instead. + */ protected function getAttributeGetter() + { + trigger_deprecation('twig/twig', '3.13', 'Method "%s()" is deprecated, use "createAttributeGetter()" instead.', __METHOD__); + + return self::createAttributeGetter(); + } + + final protected static function createAttributeGetter(): string { return 'CoreExtension::getAttribute($this->env, $this->source, '; } + + /** @beforeClass */ + #[BeforeClass] + final public static function checkDataProvider(): void + { + $r = new \ReflectionMethod(static::class, 'getTests'); + if (self::class !== $r->getDeclaringClass()->getName()) { + trigger_deprecation('twig/twig', '3.13', 'Implementing "%s::getTests()" in "%s" is deprecated, implement "provideTests()" instead.', self::class, static::class); + } + } } diff --git a/includes/lib/Twig/Token.php b/includes/lib/Twig/Token.php index 5be39bd..237634a 100644 --- a/includes/lib/Twig/Token.php +++ b/includes/lib/Twig/Token.php @@ -17,10 +17,6 @@ namespace Twig; */ final class Token { - private $value; - private $type; - private $lineno; - public const EOF_TYPE = -1; public const TEXT_TYPE = 0; public const BLOCK_START_TYPE = 1; @@ -37,11 +33,11 @@ final class Token public const ARROW_TYPE = 12; public const SPREAD_TYPE = 13; - public function __construct(int $type, $value, int $lineno) - { - $this->type = $type; - $this->value = $value; - $this->lineno = $lineno; + public function __construct( + private int $type, + private $value, + private int $lineno, + ) { } public function __toString() diff --git a/includes/lib/Twig/TokenParser/ApplyTokenParser.php b/includes/lib/Twig/TokenParser/ApplyTokenParser.php index 4dbf304..0c95074 100644 --- a/includes/lib/Twig/TokenParser/ApplyTokenParser.php +++ b/includes/lib/Twig/TokenParser/ApplyTokenParser.php @@ -11,8 +11,9 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\TempNameExpression; +use Twig\Node\Expression\Variable\LocalVariable; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\SetNode; use Twig\Token; @@ -31,21 +32,17 @@ final class ApplyTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $lineno = $token->getLine(); - $name = $this->parser->getVarName(); - - $ref = new TempNameExpression($name, $lineno); - $ref->setAttribute('always_defined', true); - - $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); + $ref = new LocalVariable(null, $lineno); + $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideApplyEnd'], true); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); - return new Node([ - new SetNode(true, $ref, $body, $lineno, $this->getTag()), - new PrintNode($filter, $lineno, $this->getTag()), - ]); + return new Nodes([ + new SetNode(true, $ref, $body, $lineno), + new PrintNode($filter, $lineno), + ], $lineno); } public function decideApplyEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php b/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php index b674bea..b50b29e 100644 --- a/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php +++ b/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php @@ -29,7 +29,7 @@ final class AutoEscapeTokenParser extends AbstractTokenParser $lineno = $token->getLine(); $stream = $this->parser->getStream(); - if ($stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + if ($stream->test(Token::BLOCK_END_TYPE)) { $value = 'html'; } else { $expr = $this->parser->getExpressionParser()->parseExpression(); @@ -39,11 +39,11 @@ final class AutoEscapeTokenParser extends AbstractTokenParser $value = $expr->getAttribute('value'); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new AutoEscapeNode($value, $body, $lineno, $this->getTag()); + return new AutoEscapeNode($value, $body, $lineno); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/BlockTokenParser.php b/includes/lib/Twig/TokenParser/BlockTokenParser.php index c654d31..3561b99 100644 --- a/includes/lib/Twig/TokenParser/BlockTokenParser.php +++ b/includes/lib/Twig/TokenParser/BlockTokenParser.php @@ -15,7 +15,9 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; +use Twig\Node\EmptyNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Token; @@ -35,17 +37,14 @@ final class BlockTokenParser extends AbstractTokenParser { $lineno = $token->getLine(); $stream = $this->parser->getStream(); - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); - if ($this->parser->hasBlock($name)) { - throw new SyntaxError(\sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getTemplateLine()), $stream->getCurrent()->getLine(), $stream->getSourceContext()); - } - $this->parser->setBlock($name, $block = new BlockNode($name, new Node([]), $lineno)); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); + $this->parser->setBlock($name, $block = new BlockNode($name, new EmptyNode(), $lineno)); $this->parser->pushLocalScope(); $this->parser->pushBlockStack($name); - if ($stream->nextIf(/* Token::BLOCK_END_TYPE */ 3)) { + if ($stream->nextIf(Token::BLOCK_END_TYPE)) { $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + if ($token = $stream->nextIf(Token::NAME_TYPE)) { $value = $token->getValue(); if ($value != $name) { @@ -53,17 +52,17 @@ final class BlockTokenParser extends AbstractTokenParser } } } else { - $body = new Node([ + $body = new Nodes([ new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno), ]); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $block->setNode('body', $body); $this->parser->popBlockStack(); $this->parser->popLocalScope(); - return new BlockReferenceNode($name, $lineno, $this->getTag()); + return new BlockReferenceNode($name, $lineno); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php b/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php index c17c4aa..164ef26 100644 --- a/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php +++ b/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php @@ -35,7 +35,7 @@ final class DeprecatedTokenParser extends AbstractTokenParser $stream = $this->parser->getStream(); $expressionParser = $this->parser->getExpressionParser(); $expr = $expressionParser->parseExpression(); - $node = new DeprecatedNode($expr, $token->getLine(), $this->getTag()); + $node = new DeprecatedNode($expr, $token->getLine()); while ($stream->test(Token::NAME_TYPE)) { $k = $stream->getCurrent()->getValue(); diff --git a/includes/lib/Twig/TokenParser/DoTokenParser.php b/includes/lib/Twig/TokenParser/DoTokenParser.php index 32c8f12..8afd485 100644 --- a/includes/lib/Twig/TokenParser/DoTokenParser.php +++ b/includes/lib/Twig/TokenParser/DoTokenParser.php @@ -26,9 +26,9 @@ final class DoTokenParser extends AbstractTokenParser { $expr = $this->parser->getExpressionParser()->parseExpression(); - $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); - return new DoNode($expr, $token->getLine(), $this->getTag()); + return new DoNode($expr, $token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/EmbedTokenParser.php b/includes/lib/Twig/TokenParser/EmbedTokenParser.php index adf683c..7bf3233 100644 --- a/includes/lib/Twig/TokenParser/EmbedTokenParser.php +++ b/includes/lib/Twig/TokenParser/EmbedTokenParser.php @@ -32,19 +32,19 @@ final class EmbedTokenParser extends IncludeTokenParser [$variables, $only, $ignoreMissing] = $this->parseArguments(); - $parentToken = $fakeParentToken = new Token(/* Token::STRING_TYPE */ 7, '__parent__', $token->getLine()); + $parentToken = $fakeParentToken = new Token(Token::STRING_TYPE, '__parent__', $token->getLine()); if ($parent instanceof ConstantExpression) { - $parentToken = new Token(/* Token::STRING_TYPE */ 7, $parent->getAttribute('value'), $token->getLine()); + $parentToken = new Token(Token::STRING_TYPE, $parent->getAttribute('value'), $token->getLine()); } elseif ($parent instanceof NameExpression) { - $parentToken = new Token(/* Token::NAME_TYPE */ 5, $parent->getAttribute('name'), $token->getLine()); + $parentToken = new Token(Token::NAME_TYPE, $parent->getAttribute('name'), $token->getLine()); } // inject a fake parent to make the parent() function work $stream->injectTokens([ - new Token(/* Token::BLOCK_START_TYPE */ 1, '', $token->getLine()), - new Token(/* Token::NAME_TYPE */ 5, 'extends', $token->getLine()), + new Token(Token::BLOCK_START_TYPE, '', $token->getLine()), + new Token(Token::NAME_TYPE, 'extends', $token->getLine()), $parentToken, - new Token(/* Token::BLOCK_END_TYPE */ 3, '', $token->getLine()), + new Token(Token::BLOCK_END_TYPE, '', $token->getLine()), ]); $module = $this->parser->parse($stream, [$this, 'decideBlockEnd'], true); @@ -56,9 +56,9 @@ final class EmbedTokenParser extends IncludeTokenParser $this->parser->embedTemplate($module); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine()); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/ExtendsTokenParser.php b/includes/lib/Twig/TokenParser/ExtendsTokenParser.php index 0ca46dd..a93afe8 100644 --- a/includes/lib/Twig/TokenParser/ExtendsTokenParser.php +++ b/includes/lib/Twig/TokenParser/ExtendsTokenParser.php @@ -13,6 +13,7 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Node; use Twig\Token; @@ -35,14 +36,11 @@ final class ExtendsTokenParser extends AbstractTokenParser throw new SyntaxError('Cannot use "extend" in a macro.', $token->getLine(), $stream->getSourceContext()); } - if (null !== $this->parser->getParent()) { - throw new SyntaxError('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); - } $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new Node(); + return new EmptyNode($token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/FlushTokenParser.php b/includes/lib/Twig/TokenParser/FlushTokenParser.php index 02c74aa..0d23887 100644 --- a/includes/lib/Twig/TokenParser/FlushTokenParser.php +++ b/includes/lib/Twig/TokenParser/FlushTokenParser.php @@ -26,9 +26,9 @@ final class FlushTokenParser extends AbstractTokenParser { public function parse(Token $token): Node { - $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); - return new FlushNode($token->getLine(), $this->getTag()); + return new FlushNode($token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/ForTokenParser.php b/includes/lib/Twig/TokenParser/ForTokenParser.php index 1af6da8..c0a0e3c 100644 --- a/includes/lib/Twig/TokenParser/ForTokenParser.php +++ b/includes/lib/Twig/TokenParser/ForTokenParser.php @@ -12,7 +12,7 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; use Twig\Node\ForNode; use Twig\Node\Node; use Twig\Token; @@ -35,30 +35,30 @@ final class ForTokenParser extends AbstractTokenParser $lineno = $token->getLine(); $stream = $this->parser->getStream(); $targets = $this->parser->getExpressionParser()->parseAssignmentExpression(); - $stream->expect(/* Token::OPERATOR_TYPE */ 8, 'in'); + $stream->expect(Token::OPERATOR_TYPE, 'in'); $seq = $this->parser->getExpressionParser()->parseExpression(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideForFork']); if ('else' == $stream->next()->getValue()) { - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $else = $this->parser->subparse([$this, 'decideForEnd'], true); } else { $else = null; } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); if (\count($targets) > 1) { $keyTarget = $targets->getNode('0'); - $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); + $keyTarget = new AssignContextVariable($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); $valueTarget = $targets->getNode('1'); } else { - $keyTarget = new AssignNameExpression('_key', $lineno); + $keyTarget = new AssignContextVariable('_key', $lineno); $valueTarget = $targets->getNode('0'); } - $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); + $valueTarget = new AssignContextVariable($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); - return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno, $this->getTag()); + return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno); } public function decideForFork(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/FromTokenParser.php b/includes/lib/Twig/TokenParser/FromTokenParser.php index 31b6cde..c8732df 100644 --- a/includes/lib/Twig/TokenParser/FromTokenParser.php +++ b/includes/lib/Twig/TokenParser/FromTokenParser.php @@ -11,7 +11,9 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\ImportNode; use Twig\Node\Node; use Twig\Token; @@ -19,7 +21,7 @@ use Twig\Token; /** * Imports macros. * - * {% from 'forms.html' import forms %} + * {% from 'forms.html.twig' import forms %} * * @internal */ @@ -29,31 +31,32 @@ final class FromTokenParser extends AbstractTokenParser { $macro = $this->parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); - $stream->expect(/* Token::NAME_TYPE */ 5, 'import'); + $stream->expect(Token::NAME_TYPE, 'import'); $targets = []; while (true) { - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); - $alias = $name; if ($stream->nextIf('as')) { - $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $alias = new AssignContextVariable($stream->expect(Token::NAME_TYPE)->getValue(), $token->getLine()); + } else { + $alias = new AssignContextVariable($name, $token->getLine()); } $targets[$name] = $alias; - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine()); - $node = new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + $internalRef = new AssignTemplateVariable(new TemplateVariable(null, $token->getLine()), $this->parser->isMainScope()); + $node = new ImportNode($macro, $internalRef, $token->getLine()); foreach ($targets as $name => $alias) { - $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $var); + $this->parser->addImportedSymbol('function', $alias->getAttribute('name'), 'macro_'.$name, $internalRef); } return $node; diff --git a/includes/lib/Twig/TokenParser/GuardTokenParser.php b/includes/lib/Twig/TokenParser/GuardTokenParser.php new file mode 100644 index 0000000..1fcf76c --- /dev/null +++ b/includes/lib/Twig/TokenParser/GuardTokenParser.php @@ -0,0 +1,73 @@ +parser->getStream(); + $typeToken = $stream->expect(Token::NAME_TYPE); + if (!\in_array($typeToken->getValue(), ['function', 'filter', 'test'])) { + throw new SyntaxError(\sprintf('Supported guard types are function, filter and test, "%s" given.', $typeToken->getValue()), $typeToken->getLine(), $stream->getSourceContext()); + } + $method = 'get'.$typeToken->getValue(); + + $nameToken = $stream->expect(Token::NAME_TYPE); + + try { + $exists = null !== $this->parser->getEnvironment()->$method($nameToken->getValue()); + } catch (SyntaxError) { + $exists = false; + } + + $stream->expect(Token::BLOCK_END_TYPE); + if ($exists) { + $body = $this->parser->subparse([$this, 'decideGuardFork']); + } else { + $body = new EmptyNode(); + $this->parser->subparseIgnoreUnknownTwigCallables([$this, 'decideGuardFork']); + } + $else = new EmptyNode(); + if ('else' === $stream->next()->getValue()) { + $stream->expect(Token::BLOCK_END_TYPE); + $else = $this->parser->subparse([$this, 'decideGuardEnd'], true); + } + $stream->expect(Token::BLOCK_END_TYPE); + + return new Nodes([$exists ? $body : $else]); + } + + public function decideGuardFork(Token $token): bool + { + return $token->test(['else', 'endguard']); + } + + public function decideGuardEnd(Token $token): bool + { + return $token->test(['endguard']); + } + + public function getTag(): string + { + return 'guard'; + } +} diff --git a/includes/lib/Twig/TokenParser/IfTokenParser.php b/includes/lib/Twig/TokenParser/IfTokenParser.php index 569ccfa..6b90105 100644 --- a/includes/lib/Twig/TokenParser/IfTokenParser.php +++ b/includes/lib/Twig/TokenParser/IfTokenParser.php @@ -15,6 +15,7 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; use Twig\Node\IfNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Token; /** @@ -37,7 +38,7 @@ final class IfTokenParser extends AbstractTokenParser $lineno = $token->getLine(); $expr = $this->parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideIfFork']); $tests = [$expr, $body]; $else = null; @@ -46,13 +47,13 @@ final class IfTokenParser extends AbstractTokenParser while (!$end) { switch ($stream->next()->getValue()) { case 'else': - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $else = $this->parser->subparse([$this, 'decideIfEnd']); break; case 'elseif': $expr = $this->parser->getExpressionParser()->parseExpression(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideIfFork']); $tests[] = $expr; $tests[] = $body; @@ -67,9 +68,9 @@ final class IfTokenParser extends AbstractTokenParser } } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new IfNode(new Node($tests), $else, $lineno, $this->getTag()); + return new IfNode(new Nodes($tests), $else, $lineno); } public function decideIfFork(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/ImportTokenParser.php b/includes/lib/Twig/TokenParser/ImportTokenParser.php index 44cb4da..f23584a 100644 --- a/includes/lib/Twig/TokenParser/ImportTokenParser.php +++ b/includes/lib/Twig/TokenParser/ImportTokenParser.php @@ -11,7 +11,8 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\ImportNode; use Twig\Node\Node; use Twig\Token; @@ -19,7 +20,7 @@ use Twig\Token; /** * Imports macros. * - * {% import 'forms.html' as forms %} + * {% import 'forms.html.twig' as forms %} * * @internal */ @@ -28,13 +29,13 @@ final class ImportTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $macro = $this->parser->getExpressionParser()->parseExpression(); - $this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5, 'as'); - $var = new AssignNameExpression($this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5)->getValue(), $token->getLine()); - $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->getStream()->expect(Token::NAME_TYPE, 'as'); + $name = $this->parser->getStream()->expect(Token::NAME_TYPE)->getValue(); + $var = new AssignTemplateVariable(new TemplateVariable($name, $token->getLine()), $this->parser->isMainScope()); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + $this->parser->addImportedSymbol('template', $name); - $this->parser->addImportedSymbol('template', $var->getAttribute('name')); - - return new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + return new ImportNode($macro, $var, $token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/IncludeTokenParser.php b/includes/lib/Twig/TokenParser/IncludeTokenParser.php index fda5bfd..a72250c 100644 --- a/includes/lib/Twig/TokenParser/IncludeTokenParser.php +++ b/includes/lib/Twig/TokenParser/IncludeTokenParser.php @@ -19,9 +19,9 @@ use Twig\Token; /** * Includes a template. * - * {% include 'header.html' %} + * {% include 'header.html.twig' %} * Body - * {% include 'footer.html' %} + * {% include 'footer.html.twig' %} * * @internal */ @@ -33,7 +33,7 @@ class IncludeTokenParser extends AbstractTokenParser [$variables, $only, $ignoreMissing] = $this->parseArguments(); - return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine()); } protected function parseArguments() @@ -41,23 +41,23 @@ class IncludeTokenParser extends AbstractTokenParser $stream = $this->parser->getStream(); $ignoreMissing = false; - if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'ignore')) { - $stream->expect(/* Token::NAME_TYPE */ 5, 'missing'); + if ($stream->nextIf(Token::NAME_TYPE, 'ignore')) { + $stream->expect(Token::NAME_TYPE, 'missing'); $ignoreMissing = true; } $variables = null; - if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'with')) { + if ($stream->nextIf(Token::NAME_TYPE, 'with')) { $variables = $this->parser->getExpressionParser()->parseExpression(); } $only = false; - if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'only')) { + if ($stream->nextIf(Token::NAME_TYPE, 'only')) { $only = true; } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); return [$variables, $only, $ignoreMissing]; } diff --git a/includes/lib/Twig/TokenParser/MacroTokenParser.php b/includes/lib/Twig/TokenParser/MacroTokenParser.php index 1f0e3e9..33379be 100644 --- a/includes/lib/Twig/TokenParser/MacroTokenParser.php +++ b/includes/lib/Twig/TokenParser/MacroTokenParser.php @@ -13,6 +13,12 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; use Twig\Node\BodyNode; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\ArrayExpression; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Expression\Unary\NegUnary; +use Twig\Node\Expression\Unary\PosUnary; +use Twig\Node\Expression\Variable\LocalVariable; use Twig\Node\MacroNode; use Twig\Node\Node; use Twig\Token; @@ -32,14 +38,13 @@ final class MacroTokenParser extends AbstractTokenParser { $lineno = $token->getLine(); $stream = $this->parser->getStream(); - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); + $arguments = $this->parseDefinition(); - $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); - - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $this->parser->pushLocalScope(); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + if ($token = $stream->nextIf(Token::NAME_TYPE)) { $value = $token->getValue(); if ($value != $name) { @@ -47,11 +52,11 @@ final class MacroTokenParser extends AbstractTokenParser } } $this->parser->popLocalScope(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno, $this->getTag())); + $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno)); - return new Node(); + return new EmptyNode($lineno); } public function decideBlockEnd(Token $token): bool @@ -63,4 +68,56 @@ final class MacroTokenParser extends AbstractTokenParser { return 'macro'; } + + private function parseDefinition(): ArrayExpression + { + $arguments = new ArrayExpression([], $this->parser->getCurrentToken()->getLine()); + $stream = $this->parser->getStream(); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if (\count($arguments)) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { + break; + } + } + + $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name'); + $name = new LocalVariable($token->getValue(), $this->parser->getCurrentToken()->getLine()); + if ($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) { + $default = $this->parser->getExpressionParser()->parseExpression(); + } else { + $default = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); + $default->setAttribute('is_implicit', true); + } + + if (!$this->checkConstantExpression($default)) { + throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext()); + } + $arguments->addElement($default, $name); + } + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); + + return $arguments; + } + + // checks that the node only contains "constant" elements + private function checkConstantExpression(Node $node): bool + { + if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression + || $node instanceof NegUnary || $node instanceof PosUnary + )) { + return false; + } + + foreach ($node as $n) { + if (!$this->checkConstantExpression($n)) { + return false; + } + } + + return true; + } } diff --git a/includes/lib/Twig/TokenParser/SandboxTokenParser.php b/includes/lib/Twig/TokenParser/SandboxTokenParser.php index c919556..536c14f 100644 --- a/includes/lib/Twig/TokenParser/SandboxTokenParser.php +++ b/includes/lib/Twig/TokenParser/SandboxTokenParser.php @@ -22,7 +22,7 @@ use Twig\Token; * Marks a section of a template as untrusted code that must be evaluated in the sandbox mode. * * {% sandbox %} - * {% include 'user.html' %} + * {% include 'user.html.twig' %} * {% endsandbox %} * * @see https://twig.symfony.com/doc/api.html#sandbox-extension for details @@ -34,9 +34,11 @@ final class SandboxTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $stream = $this->parser->getStream(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + trigger_deprecation('twig/twig', '3.15', \sprintf('The "sandbox" tag is deprecated in "%s" at line %d.', $stream->getSourceContext()->getName(), $token->getLine())); + + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); // in a sandbox tag, only include tags are allowed if (!$body instanceof IncludeNode) { @@ -51,7 +53,7 @@ final class SandboxTokenParser extends AbstractTokenParser } } - return new SandboxNode($body, $token->getLine(), $this->getTag()); + return new SandboxNode($body, $token->getLine()); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/SetTokenParser.php b/includes/lib/Twig/TokenParser/SetTokenParser.php index 2fbdfe0..bb43907 100644 --- a/includes/lib/Twig/TokenParser/SetTokenParser.php +++ b/includes/lib/Twig/TokenParser/SetTokenParser.php @@ -37,10 +37,10 @@ final class SetTokenParser extends AbstractTokenParser $names = $this->parser->getExpressionParser()->parseAssignmentExpression(); $capture = false; - if ($stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + if ($stream->nextIf(Token::OPERATOR_TYPE, '=')) { $values = $this->parser->getExpressionParser()->parseMultitargetExpression(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); if (\count($names) !== \count($values)) { throw new SyntaxError('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); @@ -52,13 +52,13 @@ final class SetTokenParser extends AbstractTokenParser throw new SyntaxError('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $values = $this->parser->subparse([$this, 'decideBlockEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); } - return new SetNode($capture, $names, $values, $lineno, $this->getTag()); + return new SetNode($capture, $names, $values, $lineno); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/TypesTokenParser.php b/includes/lib/Twig/TokenParser/TypesTokenParser.php new file mode 100644 index 0000000..02aef81 --- /dev/null +++ b/includes/lib/Twig/TokenParser/TypesTokenParser.php @@ -0,0 +1,90 @@ + + * + * @internal + */ +final class TypesTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $stream = $this->parser->getStream(); + + $types = $this->parseSimpleMappingExpression($stream); + + $stream->expect(Token::BLOCK_END_TYPE); + + return new TypesNode($types, $token->getLine()); + } + + /** + * @return array + * + * @throws SyntaxError + */ + private function parseSimpleMappingExpression(TokenStream $stream): array + { + $stream->expect(Token::PUNCTUATION_TYPE, '{', 'A mapping element was expected'); + + $types = []; + + $first = true; + while (!$stream->test(Token::PUNCTUATION_TYPE, '}')) { + if (!$first) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A type string must be followed by a comma'); + + // trailing ,? + if ($stream->test(Token::PUNCTUATION_TYPE, '}')) { + break; + } + } + $first = false; + + $nameToken = $stream->expect(Token::NAME_TYPE); + + if ($stream->nextIf(Token::OPERATOR_TYPE, '?:')) { + $isOptional = true; + } else { + $isOptional = null !== $stream->nextIf(Token::PUNCTUATION_TYPE, '?'); + $stream->expect(Token::PUNCTUATION_TYPE, ':', 'A type name must be followed by a colon (:)'); + } + + $valueToken = $stream->expect(Token::STRING_TYPE); + + $types[$nameToken->getValue()] = [ + 'type' => $valueToken->getValue(), + 'optional' => $isOptional, + ]; + } + $stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened mapping is not properly closed'); + + return $types; + } + + public function getTag(): string + { + return 'types'; + } +} diff --git a/includes/lib/Twig/TokenParser/UseTokenParser.php b/includes/lib/Twig/TokenParser/UseTokenParser.php index 3cdbb98..ebd95aa 100644 --- a/includes/lib/Twig/TokenParser/UseTokenParser.php +++ b/includes/lib/Twig/TokenParser/UseTokenParser.php @@ -12,8 +12,10 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Token; /** @@ -44,26 +46,26 @@ final class UseTokenParser extends AbstractTokenParser $targets = []; if ($stream->nextIf('with')) { while (true) { - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); $alias = $name; if ($stream->nextIf('as')) { - $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $alias = $stream->expect(Token::NAME_TYPE)->getValue(); } $targets[$name] = new ConstantExpression($alias, -1); - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)])); + $this->parser->addTrait(new Nodes(['template' => $template, 'targets' => new Nodes($targets)])); - return new Node(); + return new EmptyNode($token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/WithTokenParser.php b/includes/lib/Twig/TokenParser/WithTokenParser.php index 7d8cbe2..8ce4f02 100644 --- a/includes/lib/Twig/TokenParser/WithTokenParser.php +++ b/includes/lib/Twig/TokenParser/WithTokenParser.php @@ -30,18 +30,18 @@ final class WithTokenParser extends AbstractTokenParser $variables = null; $only = false; - if (!$stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + if (!$stream->test(Token::BLOCK_END_TYPE)) { $variables = $this->parser->getExpressionParser()->parseExpression(); - $only = (bool) $stream->nextIf(/* Token::NAME_TYPE */ 5, 'only'); + $only = (bool) $stream->nextIf(Token::NAME_TYPE, 'only'); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideWithEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new WithNode($body, $variables, $only, $token->getLine(), $this->getTag()); + return new WithNode($body, $variables, $only, $token->getLine()); } public function decideWithEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenStream.php b/includes/lib/Twig/TokenStream.php index 9921f78..35aa971 100644 --- a/includes/lib/Twig/TokenStream.php +++ b/includes/lib/Twig/TokenStream.php @@ -21,14 +21,17 @@ use Twig\Error\SyntaxError; */ final class TokenStream { - private $tokens; private $current = 0; - private $source; - public function __construct(array $tokens, ?Source $source = null) - { - $this->tokens = $tokens; - $this->source = $source ?: new Source('', ''); + public function __construct( + private array $tokens, + private ?Source $source = null, + ) { + if (null === $this->source) { + trigger_deprecation('twig/twig', '3.16', \sprintf('Not passing a "%s" object to "%s" constructor is deprecated.', Source::class, __CLASS__)); + + $this->source = new Source('', ''); + } } public function __toString() @@ -110,7 +113,7 @@ final class TokenStream */ public function isEOF(): bool { - return /* Token::EOF_TYPE */ -1 === $this->tokens[$this->current]->getType(); + return Token::EOF_TYPE === $this->tokens[$this->current]->getType(); } public function getCurrent(): Token @@ -118,11 +121,6 @@ final class TokenStream return $this->tokens[$this->current]; } - /** - * Gets the source associated with this stream. - * - * @internal - */ public function getSourceContext(): Source { return $this->source; diff --git a/includes/lib/Twig/TwigCallableInterface.php b/includes/lib/Twig/TwigCallableInterface.php new file mode 100644 index 0000000..2a8ff61 --- /dev/null +++ b/includes/lib/Twig/TwigCallableInterface.php @@ -0,0 +1,53 @@ + + */ +interface TwigCallableInterface extends \Stringable +{ + public function getName(): string; + + public function getType(): string; + + public function getDynamicName(): string; + + /** + * @return callable|array{class-string, string}|null + */ + public function getCallable(); + + public function getNodeClass(): string; + + public function needsCharset(): bool; + + public function needsEnvironment(): bool; + + public function needsContext(): bool; + + public function withDynamicArguments(string $name, string $dynamicName, array $arguments): self; + + public function getArguments(): array; + + public function isVariadic(): bool; + + public function isDeprecated(): bool; + + public function getDeprecatingPackage(): string; + + public function getDeprecatedVersion(): string; + + public function getAlternative(): ?string; + + public function getMinimalNumberOfRequiredArguments(): int; +} diff --git a/includes/lib/Twig/TwigFilter.php b/includes/lib/Twig/TwigFilter.php index 2b80df9..dece518 100644 --- a/includes/lib/Twig/TwigFilter.php +++ b/includes/lib/Twig/TwigFilter.php @@ -21,79 +21,27 @@ use Twig\Node\Node; * * @see https://twig.symfony.com/doc/templates.html#filters */ -final class TwigFilter +final class TwigFilter extends AbstractTwigCallable { - private $name; - private $callable; - private $options; - private $arguments = []; - /** * @param callable|array{class-string, string}|null $callable A callable implementing the filter. If null, you need to overwrite the "node_class" option to customize compilation. */ public function __construct(string $name, $callable = null, array $options = []) { - $this->name = $name; - $this->callable = $callable; + parent::__construct($name, $callable, $options); + $this->options = array_merge([ - 'needs_environment' => false, - 'needs_context' => false, - 'needs_charset' => false, - 'is_variadic' => false, 'is_safe' => null, 'is_safe_callback' => null, 'pre_escape' => null, 'preserves_safety' => null, 'node_class' => FilterExpression::class, - 'deprecated' => false, - 'deprecating_package' => '', - 'alternative' => null, - ], $options); + ], $this->options); } - public function getName(): string + public function getType(): string { - return $this->name; - } - - /** - * Returns the callable to execute for this filter. - * - * @return callable|array{class-string, string}|null - */ - public function getCallable() - { - return $this->callable; - } - - public function getNodeClass(): string - { - return $this->options['node_class']; - } - - public function setArguments(array $arguments): void - { - $this->arguments = $arguments; - } - - public function getArguments(): array - { - return $this->arguments; - } - - public function needsCharset(): bool - { - return $this->options['needs_charset']; - } - - public function needsEnvironment(): bool - { - return $this->options['needs_environment']; - } - - public function needsContext(): bool - { - return $this->options['needs_context']; + return 'filter'; } public function getSafe(Node $filterArgs): ?array @@ -106,12 +54,12 @@ final class TwigFilter return $this->options['is_safe_callback']($filterArgs); } - return null; + return []; } - public function getPreservesSafety(): ?array + public function getPreservesSafety(): array { - return $this->options['preserves_safety']; + return $this->options['preserves_safety'] ?? []; } public function getPreEscape(): ?string @@ -119,28 +67,8 @@ final class TwigFilter return $this->options['pre_escape']; } - public function isVariadic(): bool + public function getMinimalNumberOfRequiredArguments(): int { - return $this->options['is_variadic']; - } - - public function isDeprecated(): bool - { - return (bool) $this->options['deprecated']; - } - - public function getDeprecatingPackage(): string - { - return $this->options['deprecating_package']; - } - - public function getDeprecatedVersion(): string - { - return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; - } - - public function getAlternative(): ?string - { - return $this->options['alternative']; + return parent::getMinimalNumberOfRequiredArguments() + 1; } } diff --git a/includes/lib/Twig/TwigFunction.php b/includes/lib/Twig/TwigFunction.php index bfee7eb..4a10df9 100644 --- a/includes/lib/Twig/TwigFunction.php +++ b/includes/lib/Twig/TwigFunction.php @@ -21,77 +21,31 @@ use Twig\Node\Node; * * @see https://twig.symfony.com/doc/templates.html#functions */ -final class TwigFunction +final class TwigFunction extends AbstractTwigCallable { - private $name; - private $callable; - private $options; - private $arguments = []; - /** * @param callable|array{class-string, string}|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation. */ public function __construct(string $name, $callable = null, array $options = []) { - $this->name = $name; - $this->callable = $callable; + parent::__construct($name, $callable, $options); + $this->options = array_merge([ - 'needs_environment' => false, - 'needs_context' => false, - 'needs_charset' => false, - 'is_variadic' => false, 'is_safe' => null, 'is_safe_callback' => null, 'node_class' => FunctionExpression::class, - 'deprecated' => false, - 'deprecating_package' => '', - 'alternative' => null, - ], $options); + 'parser_callable' => null, + ], $this->options); } - public function getName(): string + public function getType(): string { - return $this->name; + return 'function'; } - /** - * Returns the callable to execute for this function. - * - * @return callable|array{class-string, string}|null - */ - public function getCallable() + public function getParserCallable(): ?callable { - return $this->callable; - } - - public function getNodeClass(): string - { - return $this->options['node_class']; - } - - public function setArguments(array $arguments): void - { - $this->arguments = $arguments; - } - - public function getArguments(): array - { - return $this->arguments; - } - - public function needsCharset(): bool - { - return $this->options['needs_charset']; - } - - public function needsEnvironment(): bool - { - return $this->options['needs_environment']; - } - - public function needsContext(): bool - { - return $this->options['needs_context']; + return $this->options['parser_callable']; } public function getSafe(Node $functionArgs): ?array @@ -106,29 +60,4 @@ final class TwigFunction return []; } - - public function isVariadic(): bool - { - return (bool) $this->options['is_variadic']; - } - - public function isDeprecated(): bool - { - return (bool) $this->options['deprecated']; - } - - public function getDeprecatingPackage(): string - { - return $this->options['deprecating_package']; - } - - public function getDeprecatedVersion(): string - { - return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; - } - - public function getAlternative(): ?string - { - return $this->options['alternative']; - } } diff --git a/includes/lib/Twig/TwigTest.php b/includes/lib/Twig/TwigTest.php index 0b43a28..5e58ad8 100644 --- a/includes/lib/Twig/TwigTest.php +++ b/includes/lib/Twig/TwigTest.php @@ -20,87 +20,48 @@ use Twig\Node\Expression\TestExpression; * * @see https://twig.symfony.com/doc/templates.html#test-operator */ -final class TwigTest +final class TwigTest extends AbstractTwigCallable { - private $name; - private $callable; - private $options; - private $arguments = []; - /** * @param callable|array{class-string, string}|null $callable A callable implementing the test. If null, you need to overwrite the "node_class" option to customize compilation. */ public function __construct(string $name, $callable = null, array $options = []) { - $this->name = $name; - $this->callable = $callable; + parent::__construct($name, $callable, $options); + $this->options = array_merge([ - 'is_variadic' => false, 'node_class' => TestExpression::class, - 'deprecated' => false, - 'deprecating_package' => '', - 'alternative' => null, 'one_mandatory_argument' => false, - ], $options); + ], $this->options); } - public function getName(): string + public function getType(): string { - return $this->name; + return 'test'; } - /** - * Returns the callable to execute for this test. - * - * @return callable|array{class-string, string}|null - */ - public function getCallable() + public function needsCharset(): bool { - return $this->callable; + return false; } - public function getNodeClass(): string + public function needsEnvironment(): bool { - return $this->options['node_class']; + return false; } - public function setArguments(array $arguments): void + public function needsContext(): bool { - $this->arguments = $arguments; - } - - public function getArguments(): array - { - return $this->arguments; - } - - public function isVariadic(): bool - { - return (bool) $this->options['is_variadic']; - } - - public function isDeprecated(): bool - { - return (bool) $this->options['deprecated']; - } - - public function getDeprecatingPackage(): string - { - return $this->options['deprecating_package']; - } - - public function getDeprecatedVersion(): string - { - return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; - } - - public function getAlternative(): ?string - { - return $this->options['alternative']; + return false; } public function hasOneMandatoryArgument(): bool { return (bool) $this->options['one_mandatory_argument']; } + + public function getMinimalNumberOfRequiredArguments(): int + { + return parent::getMinimalNumberOfRequiredArguments() + 1; + } } diff --git a/includes/lib/Twig/Util/CallableArgumentsExtractor.php b/includes/lib/Twig/Util/CallableArgumentsExtractor.php new file mode 100644 index 0000000..d862516 --- /dev/null +++ b/includes/lib/Twig/Util/CallableArgumentsExtractor.php @@ -0,0 +1,219 @@ + + * + * @internal + */ +final class CallableArgumentsExtractor +{ + private ReflectionCallable $rc; + + public function __construct( + private Node $node, + private TwigCallableInterface $twigCallable, + ) { + $this->rc = new ReflectionCallable($twigCallable); + } + + /** + * @return array + */ + public function extractArguments(Node $arguments): array + { + $extractedArguments = []; + $extractedArgumentNameMap = []; + $named = false; + foreach ($arguments as $name => $node) { + if (!\is_int($name)) { + $named = true; + } elseif ($named) { + throw new SyntaxError(\sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + $extractedArguments[$normalizedName = $this->normalizeName($name)] = $node; + $extractedArgumentNameMap[$normalizedName] = $name; + } + + if (!$named && !$this->twigCallable->isVariadic()) { + $min = $this->twigCallable->getMinimalNumberOfRequiredArguments(); + if (\count($extractedArguments) < $this->rc->getReflector()->getNumberOfRequiredParameters() - $min) { + $argName = $this->toSnakeCase($this->rc->getReflector()->getParameters()[$min + \count($extractedArguments)]->getName()); + + throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $argName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + return $extractedArguments; + } + + if (!$callable = $this->twigCallable->getCallable()) { + if ($named) { + throw new SyntaxError(\sprintf('Named arguments are not supported for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName())); + } + + throw new SyntaxError(\sprintf('Arbitrary positional arguments are not supported for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName())); + } + + [$callableParameters, $isPhpVariadic] = $this->getCallableParameters(); + $arguments = []; + $callableParameterNames = []; + $missingArguments = []; + $optionalArguments = []; + $pos = 0; + foreach ($callableParameters as $callableParameter) { + $callableParameterName = $callableParameter->name; + if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) { + if ('start' === $callableParameterName) { + $callableParameterName = 'low'; + } elseif ('end' === $callableParameterName) { + $callableParameterName = 'high'; + } + } + + $callableParameterNames[] = $callableParameterName; + $normalizedCallableParameterName = $this->normalizeName($callableParameterName); + + if (\array_key_exists($normalizedCallableParameterName, $extractedArguments)) { + if (\array_key_exists($pos, $extractedArguments)) { + throw new SyntaxError(\sprintf('Argument "%s" is defined twice for %s "%s".', $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + if (\count($missingArguments)) { + throw new SyntaxError(\sprintf( + 'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".', + $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames)), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments) + ), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $extractedArguments[$normalizedCallableParameterName]; + unset($extractedArguments[$normalizedCallableParameterName]); + $optionalArguments = []; + } elseif (\array_key_exists($pos, $extractedArguments)) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $extractedArguments[$pos]; + unset($extractedArguments[$pos]); + $optionalArguments = []; + ++$pos; + } elseif ($callableParameter->isDefaultValueAvailable()) { + $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), $this->node->getTemplateLine()); + } elseif ($callableParameter->isOptional()) { + if (!$extractedArguments) { + break; + } + + $missingArguments[] = $callableParameterName; + } else { + throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $this->toSnakeCase($callableParameterName), $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + } + + if ($this->twigCallable->isVariadic()) { + $arbitraryArguments = $isPhpVariadic ? new VariadicExpression([], $this->node->getTemplateLine()) : new ArrayExpression([], $this->node->getTemplateLine()); + foreach ($extractedArguments as $key => $value) { + if (\is_int($key)) { + $arbitraryArguments->addElement($value); + } else { + $originalKey = $extractedArgumentNameMap[$key]; + if ($originalKey !== $this->toSnakeCase($originalKey)) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Using "snake_case" for variadic arguments is required for a smooth upgrade with Twig 4.0; rename "%s" to "%s" in "%s" at line %d.', $originalKey, $this->toSnakeCase($originalKey), $this->node->getSourceContext()->getName(), $this->node->getTemplateLine())); + } + $arbitraryArguments->addElement($value, new ConstantExpression($this->toSnakeCase($originalKey), $this->node->getTemplateLine())); + // I Twig 4.0, don't convert the key: + // $arbitraryArguments->addElement($value, new ConstantExpression($originalKey, $this->node->getTemplateLine())); + } + unset($extractedArguments[$key]); + } + + if ($arbitraryArguments->count()) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $arbitraryArguments; + } + } + + if ($extractedArguments) { + $unknownArgument = null; + foreach ($extractedArguments as $extractedArgument) { + if ($extractedArgument instanceof Node) { + $unknownArgument = $extractedArgument; + break; + } + } + + throw new SyntaxError( + \sprintf( + 'Unknown argument%s "%s" for %s "%s(%s)".', + \count($extractedArguments) > 1 ? 's' : '', implode('", "', array_keys($extractedArguments)), $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames)) + ), + $unknownArgument ? $unknownArgument->getTemplateLine() : $this->node->getTemplateLine(), + $unknownArgument ? $unknownArgument->getSourceContext() : $this->node->getSourceContext() + ); + } + + return $arguments; + } + + private function normalizeName(string $name): string + { + return strtolower(str_replace('_', '', $name)); + } + + private function toSnakeCase(string $name): string + { + return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z0-9])([A-Z])/'], '\1_\2', $name)); + } + + private function getCallableParameters(): array + { + $parameters = $this->rc->getReflector()->getParameters(); + if ($this->node->hasNode('node')) { + array_shift($parameters); + } + if ($this->twigCallable->needsCharset()) { + array_shift($parameters); + } + if ($this->twigCallable->needsEnvironment()) { + array_shift($parameters); + } + if ($this->twigCallable->needsContext()) { + array_shift($parameters); + } + foreach ($this->twigCallable->getArguments() as $argument) { + array_shift($parameters); + } + + $isPhpVariadic = false; + if ($this->twigCallable->isVariadic()) { + $argument = end($parameters); + $isArray = $argument && $argument->hasType() && $argument->getType() instanceof \ReflectionNamedType && 'array' === $argument->getType()->getName(); + if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) { + array_pop($parameters); + } elseif ($argument && $argument->isVariadic()) { + array_pop($parameters); + $isPhpVariadic = true; + } else { + throw new SyntaxError(\sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $this->rc->getName(), $this->twigCallable->getType(), $this->twigCallable->getName())); + } + } + + return [$parameters, $isPhpVariadic]; + } +} diff --git a/includes/lib/Twig/Util/DeprecationCollector.php b/includes/lib/Twig/Util/DeprecationCollector.php index ad53106..0ea26ed 100644 --- a/includes/lib/Twig/Util/DeprecationCollector.php +++ b/includes/lib/Twig/Util/DeprecationCollector.php @@ -20,11 +20,9 @@ use Twig\Source; */ final class DeprecationCollector { - private $twig; - - public function __construct(Environment $twig) - { - $this->twig = $twig; + public function __construct( + private Environment $twig, + ) { } /** diff --git a/includes/lib/Twig/Util/ReflectionCallable.php b/includes/lib/Twig/Util/ReflectionCallable.php index 54384e1..16734d9 100644 --- a/includes/lib/Twig/Util/ReflectionCallable.php +++ b/includes/lib/Twig/Util/ReflectionCallable.php @@ -11,6 +11,8 @@ namespace Twig\Util; +use Twig\TwigCallableInterface; + /** * @author Fabien Potencier * @@ -19,11 +21,13 @@ namespace Twig\Util; final class ReflectionCallable { private $reflector; - private $callable = null; + private $callable; private $name; - public function __construct($callable, string $debugType = 'unknown', string $debugName = 'unknown') - { + public function __construct( + TwigCallableInterface $twigCallable, + ) { + $callable = $twigCallable->getCallable(); if (\is_string($callable) && false !== $pos = strpos($callable, '::')) { $callable = [substr($callable, 0, $pos), substr($callable, 2 + $pos)]; } @@ -40,7 +44,7 @@ final class ReflectionCallable try { $closure = \Closure::fromCallable($callable); } catch (\TypeError $e) { - throw new \LogicException(\sprintf('Callback for %s "%s" is not callable in the current scope.', $debugType, $debugName), 0, $e); + throw new \LogicException(\sprintf('Callback for %s "%s" is not callable in the current scope.', $twigCallable->getType(), $twigCallable->getName()), 0, $e); } $this->reflector = $r = new \ReflectionFunction($closure); diff --git a/includes/lib/xenocrat/markdown/ChyrpMarkdown.php b/includes/lib/xenocrat/markdown/ChyrpMarkdown.php index c41a3ee..58570be 100644 --- a/includes/lib/xenocrat/markdown/ChyrpMarkdown.php +++ b/includes/lib/xenocrat/markdown/ChyrpMarkdown.php @@ -25,6 +25,7 @@ class ChyrpMarkdown extends GithubMarkdown // Include inline element parsing using traits. use inline\CiteTrait; use inline\HighlightTrait; + use inline\MediaLinkTrait; use inline\SupSubTrait; /** diff --git a/includes/lib/xenocrat/markdown/GithubMarkdown.php b/includes/lib/xenocrat/markdown/GithubMarkdown.php index 7249adb..a19540c 100644 --- a/includes/lib/xenocrat/markdown/GithubMarkdown.php +++ b/includes/lib/xenocrat/markdown/GithubMarkdown.php @@ -40,21 +40,6 @@ class GithubMarkdown extends Markdown 'Headline', ]; - /** - * @var boolean Whether to interpret newlines as `
    ` tags. - * - * This feature is useful for comments where newlines are often - * meant to be hard line breaks. - */ - public $enableNewlines = false; - - /** - * @var boolean Whether to sanitize disallowed raw HTML tags. - * - * This toggles section 6.11 of the GFM specification on or off. - */ - public $disallowedRawHTML = true; - /** * @var array Disallowed HTML elements defined in GFM spec * @see https://github.github.com/gfm/#disallowed-raw-html-extension- @@ -71,6 +56,21 @@ class GithubMarkdown extends Markdown 'xmp', ]; + /** + * @var boolean Whether to sanitize disallowed raw HTML tags. + * + * This toggles section 6.11 of the GFM specification on or off. + */ + public $disallowedRawHTML = true; + + /** + * @var boolean Whether to interpret newlines as `
    ` tags. + * + * This feature is useful for comments where newlines are often + * meant to be hard line breaks. + */ + public $enableNewlines = false; + /** * @inheritDoc */ diff --git a/includes/lib/xenocrat/markdown/Parser.php b/includes/lib/xenocrat/markdown/Parser.php index 8b75bd5..7671c37 100644 --- a/includes/lib/xenocrat/markdown/Parser.php +++ b/includes/lib/xenocrat/markdown/Parser.php @@ -18,8 +18,9 @@ use RuntimeException; */ abstract class Parser { - const VERSION_MAJOR = 3; - const VERSION_MINOR = 8; + const VERSION_MAJOR = 4; + const VERSION_MINOR = 0; + const VERSION_PATCH = 0; /** * @var integer - The maximum nesting level for language elements. @@ -175,7 +176,7 @@ abstract class Parser public function setContextId($string): string { $id = str_replace( - ['&', '<', '>', '"'], + ['&', '<', '>', '"', ' '], '', strval($string) ); diff --git a/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php b/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php index 34e7108..baed763 100644 --- a/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php +++ b/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php @@ -60,8 +60,10 @@ trait EmphStrongTrait // First and last chars of the strong text // cannot be whitespace. if ( - strspn($content, " \t\n", 0, 1) === 0 - && strspn($content, " \t\n", -1) === 0 + preg_match( + '/^(?![\s\p{Zs}]).+(?context, 1)) - && ($parts = $this->parseLinkOrImage($markdown)) !== false + && ( + $parts = $this->parseLinkOrImage($markdown) + ) !== false ) { list($text, $url, $title, $offset, $key) = $parts; return [ @@ -79,10 +94,28 @@ trait LinkTrait protected function parseImage($markdown): array { if ( - ($parts = $this->parseLinkOrImage(substr($markdown, 1))) - !== false + ( + $parts = $this->parseLinkOrImage(substr($markdown, 1)) + ) !== false ) { list($text, $url, $title, $offset, $key) = $parts; + if ( + $this->enableImageDimensions + && str_starts_with( + ($dimensions = substr($markdown, $offset + 1, 21)), + '{' + ) + && preg_match( + '/^\{([0-9]{1,9})(:([0-9]{1,9}))?\}/', + $dimensions, + $dimensionMatches + ) + ) { + // Intrinsic dimensions. + $width = $dimensionMatches[1]; + $height = $dimensionMatches[3] ?? false; + $offset += strlen($dimensionMatches[0]); + } return [ [ 'image', @@ -90,6 +123,8 @@ trait LinkTrait 'url' => $url, 'title' => $title, 'refkey' => $key, + 'width' => $width ?? false, + 'height' => $height ?? false, 'orig' => substr($markdown, 0, $offset + 1), ], $offset + 1 @@ -313,6 +348,21 @@ REGEXP; ENT_COMPAT | ENT_SUBSTITUTE ) . '"' + . ( + empty($block['width']) ? + '' : + ' width="' . $block['width'] . '"' + ) + . ( + empty($block['height']) ? + '' : + ' height="' . $block['height'] . '"' + ) + . ( + $this->renderLazyImages ? + ' loading="lazy"' : + '' + ) . ( empty($block['title']) ? '' : diff --git a/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php b/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php index d3709c2..073257e 100644 --- a/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php +++ b/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php @@ -13,6 +13,11 @@ namespace xenocrat\markdown\inline; */ trait MediaLinkTrait { + /** + * @var bool Render video and audio with a deferred loading attribute. + */ + public $renderLazyMedia = false; + protected function renderImage($block): string { if (isset($block['refkey'])) { @@ -31,8 +36,23 @@ trait MediaLinkTrait if ( preg_match('/\.(mpe?g|mp4|m4v|mov|webm|ogv)$/i', $block['url']) ) { - return '
    -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} -{{ icon_img("add.svg") }}{{ "New Category" | translate("categorize") }} +{{ icon_svg("add.svg") }}{{ "New Category" | translate("categorize") }} @@ -34,7 +34,7 @@ {% if category.show_on_home %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} @@ -44,16 +44,17 @@ {{ category.post_count }} -{{ category.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ category.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ category.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ category.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/modules/categorize/categorize.php b/modules/categorize/categorize.php index 2846249..22fbac5 100644 --- a/modules/categorize/categorize.php +++ b/modules/categorize/categorize.php @@ -6,14 +6,17 @@ # Query caches for methods. private $caches = array(); - public static function __install(): void { + public static function __install( + ): void { Category::install(); Group::add_permission("manage_categorize", "Manage Categories"); Route::current()->add("category/(name)/", "category"); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { if ($confirm) Category::uninstall(); @@ -21,12 +24,17 @@ Route::current()->remove("category/(name)/"); } - public function list_permissions($names = array()): array { + public function list_permissions( + $names = array() + ): array { $names["manage_categorize"] = __("Manage Categories", "categorize"); return $names; } - public function feed_item($post, $feed): void { + public function feed_item( + $post, + $feed + ): void { if (!empty($post->category)) $feed->category( $post->category->clean, @@ -35,7 +43,11 @@ ); } - public function related_posts($ids, $post, $limit): array { + public function related_posts( + $ids, + $post, + $limit + ): array { if (empty($post->category_id)) return $ids; @@ -57,17 +69,22 @@ return $ids; } - public function parse_urls($urls): array { + public function parse_urls( + $urls + ): array { $urls['|/category/([^/]+)/|'] = '/?action=category&name=$1'; return $urls; } - public function manage_posts_column_header(): string { + public function manage_posts_column_header( + ): string { return ''. __("Category", "categorize").''; } - public function manage_posts_column($post): string { + public function manage_posts_column( + $post + ): string { $td = ''; if (isset($post->category->name)) @@ -82,7 +99,10 @@ return $td; } - public function post_options($fields, $post = null): array { + public function post_options( + $fields, + $post = null + ): array { $options[0]["value"] = "0"; $options[0]["name"] = __("[None]", "categorize"); $options[0]["selected"] = empty($post->category_id); @@ -107,7 +127,9 @@ return $fields; } - public function post($post): void { + public function post( + $post + ): void { if (!empty($post->category_id)) { $category = new Category($post->category_id); @@ -116,7 +138,9 @@ } } - private function get_category_post_count($category_id): int { + private function get_category_post_count( + $category_id + ): int { if (!isset($this->caches["category_post_counts"])) { $counts = SQL::current()->select( tables:"post_attributes", @@ -137,14 +161,19 @@ return fallback($this->caches["category_post_counts"][$category_id], 0); } - public function category_post_count_attr($attr, $category): int { + public function category_post_count_attr( + $attr, + $category + ): int { if ($category->no_results) return 0; return $this->get_category_post_count($category->id); } - public function twig_context_main($context): array { + public function twig_context_main( + $context + ): array { $context["categorize"] = array(); foreach (Category::find() as $category) { @@ -155,7 +184,9 @@ return $context; } - public function main_category($main): void { + public function main_category( + $main + ): void { if (!isset($_GET['name'])) Flash::warning( __("You did not specify a category.", "categorize"), @@ -218,7 +249,9 @@ ); } - public function manage_nav($navs): array { + public function manage_nav( + $navs + ): array { if (Visitor::current()->group->can("manage_categorize")) $navs["manage_category"] = array( "title" => __("Categories", "categorize"), @@ -232,7 +265,9 @@ return $navs; } - public function admin_determine_action($action): ?string { + public function admin_determine_action( + $action + ): ?string { $visitor = Visitor::current(); if ($action == "manage" and $visitor->group->can("manage_categorize")) @@ -241,7 +276,9 @@ return null; } - public function admin_manage_category($admin): void { + public function admin_manage_category( + $admin + ): void { if (!Visitor::current()->group->can("manage_categorize")) show_403( __("Access Denied"), @@ -281,7 +318,9 @@ ); } - public function admin_new_category($admin): void { + public function admin_new_category( + $admin + ): void { if (!Visitor::current()->group->can("manage_categorize")) show_403( __("Access Denied"), @@ -291,7 +330,9 @@ $admin->display("pages".DIR."new_category"); } - public function admin_add_category($admin)/*: never */ { + public function admin_add_category( + $admin + ): never { if (!Visitor::current()->group->can("manage_categorize")) show_403( __("Access Denied"), @@ -311,16 +352,14 @@ code:400 ); - $clean = empty($_POST['clean']) ? - $_POST['name'] : - $_POST['clean'] ; + fallback($_POST['clean'], $_POST['name']); - $clean = sanitize($clean, true, SLUG_STRICT, 128); - - if (!preg_match("/[^\-0-9]+/", $clean)) - $clean = md5($clean); - - $clean = Category::check_clean($clean); + $clean = Category::check_clean( + oneof( + sanitize($_POST['clean'], true, SLUG_STRICT, 128), + md5($_POST['name']) + ) + ); Category::add( name:$_POST['name'], @@ -334,7 +373,9 @@ ); } - public function admin_edit_category($admin): void { + public function admin_edit_category( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -362,7 +403,9 @@ ); } - public function admin_update_category($admin)/*: never */ { + public function admin_update_category( + $admin + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -397,18 +440,18 @@ __("You do not have sufficient privileges to edit this category.", "categorize") ); - $clean = empty($_POST['clean']) ? - $_POST['name'] : - $_POST['clean'] ; + fallback($_POST['clean'], $_POST['name']); - if ($clean != $category->clean) { - $clean = sanitize($clean, true, SLUG_STRICT, 128); - - if (!preg_match("/[^\-0-9]+/", $clean)) - $clean = md5($clean); - - $clean = Category::check_clean($clean); - } + $clean = ($_POST['clean'] != $category->clean) ? + Category::check_clean( + oneof( + sanitize($_POST['clean'], true, SLUG_STRICT, 128), + md5($_POST['name']) + ) + ) + : + $category->clean + ; $category = $category->update( name:$_POST['name'], @@ -422,7 +465,9 @@ ); } - public function admin_delete_category($admin): void { + public function admin_delete_category( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -450,7 +495,8 @@ ); } - public function admin_destroy_category()/*: never */ { + public function admin_destroy_category( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), diff --git a/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.mo b/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.mo index 81983e6..58d5596 100644 Binary files a/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.mo and b/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.mo differ diff --git a/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po b/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po index 0779339..80953af 100644 --- a/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po +++ b/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/categorize/admin/help/categorizing_posts.twig:3 @@ -92,7 +92,7 @@ msgid "Update" msgstr "Aktualisieren" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "Kategorien steuern" @@ -103,7 +103,7 @@ msgid "New Category" msgstr "Neuer Kategorie" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "Kategorien" @@ -115,93 +115,93 @@ msgstr "Blogposts" msgid "Add Category" msgstr "Kategorie Hinzufügen" -#: modules/categorize/categorize.php:67 modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 modules/categorize/categorize.php:121 msgid "Category" msgstr "Kategorie" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "[Keine]" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "Sie haben keine Dateien zum hochladen selektiert." -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "Die von Ihnen angegebene Kategorie wurde nicht gefunden." -#: modules/categorize/categorize.php:192 modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "Die von Ihnen angegebene Kategorie wurde nicht gefunden." -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "Blogposts in Kategorie “%s”" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kategorien." -#: modules/categorize/categorize.php:288 modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen um Kategorien hinfügen " "zu können." -#: modules/categorize/categorize.php:309 modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "Kein Name specifiziert" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "Zum Hinzufügen einer Kategorie ist ein Name erforderlich." -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "Kategorie hinzugefügt." -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "Zum Bearbeiten einer Kategorie ist eine ID erforderlich." -#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:391 modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 modules/categorize/categorize.php:521 msgid "Category not found." msgstr "Kategorie nicht gefunden." -#: modules/categorize/categorize.php:356 modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:397 modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kategorien." -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "Zum Bearbeiten einer Kategorie ist eine ID erforderlich." -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "Zum Hinzufügen einer Kategorie ist ein Name erforderlich." -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "Kategorie aktualisiert." -#: modules/categorize/categorize.php:429 modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "Zum Bearbeiten einer Kategorie ist eine ID erforderlich." -#: modules/categorize/categorize.php:444 modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kategorien." -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "Kategorie gelöscht." diff --git a/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot b/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot index 752b2f8..342537c 100644 --- a/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot +++ b/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot @@ -64,7 +64,7 @@ msgid "Update" msgstr "" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "" @@ -75,7 +75,7 @@ msgid "New Category" msgstr "" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "" @@ -87,94 +87,94 @@ msgstr "" msgid "Add Category" msgstr "" -#: modules/categorize/categorize.php:67 -#: modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 +#: modules/categorize/categorize.php:121 msgid "Category" msgstr "" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "" -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "" -#: modules/categorize/categorize.php:192 -#: modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 +#: modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "" -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "" -#: modules/categorize/categorize.php:288 -#: modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 +#: modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "" -#: modules/categorize/categorize.php:309 -#: modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 +#: modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "" -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "" -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "" -#: modules/categorize/categorize.php:350 #: modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 -#: modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 +#: modules/categorize/categorize.php:521 msgid "Category not found." msgstr "" -#: modules/categorize/categorize.php:356 #: modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "" -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "" -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "" -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "" -#: modules/categorize/categorize.php:429 -#: modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 +#: modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "" -#: modules/categorize/categorize.php:444 -#: modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 +#: modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "" -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "" diff --git a/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.mo b/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.mo index 5d36363..2fe001a 100644 Binary files a/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.mo and b/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.mo differ diff --git a/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po b/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po index 90dbd05..fa48230 100644 --- a/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po +++ b/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/categorize/admin/help/categorizing_posts.twig:3 @@ -92,7 +92,7 @@ msgid "Update" msgstr "Aggiorna" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "Gestisci categorie" @@ -103,7 +103,7 @@ msgid "New Category" msgstr "Nuova Categoria" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "Categorie" @@ -115,87 +115,87 @@ msgstr "Post" msgid "Add Category" msgstr "Aggiungi categoria" -#: modules/categorize/categorize.php:67 modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 modules/categorize/categorize.php:121 msgid "Category" msgstr "Categoria" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "[Nessuno]" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "Non è stata specificata una categoria." -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "La categoria specificata non è stata trovata." -#: modules/categorize/categorize.php:192 modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "Non sono presenti post nella categoria specificata." -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "Post nella categoria “%s”" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "Non si dispone di privilegi sufficienti per gestire le categorie." -#: modules/categorize/categorize.php:288 modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "Non si dispone di privilegi sufficienti per aggiungere categorie." -#: modules/categorize/categorize.php:309 modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "Nessun titolo specificato" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "Per aggiungere una categoria è necessario un titolo." -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "Categoria aggiunta." -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "Per modificare una categoria è necessario un ID." -#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:391 modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 modules/categorize/categorize.php:521 msgid "Category not found." msgstr "Categoria non trovata." -#: modules/categorize/categorize.php:356 modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:397 modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "" "Non si dispone di privilegi sufficienti per modificare questa categoria." -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "Per aggiornare una categoria è necessario un ID." -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "Per aggiornare una categoria è necessario un titolo." -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "Categoria aggiornata." -#: modules/categorize/categorize.php:429 modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "Per eliminare una categoria è necessario un ID." -#: modules/categorize/categorize.php:444 modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "" "Non si dispone di privilegi sufficienti per eliminare questa categoria." -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "Categoria eliminata." diff --git a/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.mo b/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.mo index 88fd4ff..ef98160 100644 Binary files a/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.mo and b/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.mo differ diff --git a/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.po b/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.po index 9f3ede5..250f9b1 100644 --- a/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.po +++ b/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/categorize/admin/help/categorizing_posts.twig:3 @@ -90,7 +90,7 @@ msgid "Update" msgstr "Update" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "Beheer categorieën" @@ -101,7 +101,7 @@ msgid "New Category" msgstr "Nieuwe categorie" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "Categorieën" @@ -113,85 +113,85 @@ msgstr "Blogposts" msgid "Add Category" msgstr "Categorie toevoegen" -#: modules/categorize/categorize.php:67 modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 modules/categorize/categorize.php:121 msgid "Category" msgstr "Categorie" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "[Geen]" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "Je hebt geen categorie gespecificeerd." -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "De gekozen categorie kan niet worden gevonden." -#: modules/categorize/categorize.php:192 modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "Er zijn geen blogposts in de gekozen categorie." -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "Blogposts in categorie “%s”" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "Je hebt onvoldoende rechten om categorieën te beheren." -#: modules/categorize/categorize.php:288 modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "Je hebt onvoldoende rechten om categorieën toe te voegen." -#: modules/categorize/categorize.php:309 modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "Geen naam gespecificeerd" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "Een naam is verplicht om een categorie toe te voegen." -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "Categorie toegevoegd." -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "Een ID is nodig om een categorie te wijzigen." -#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:391 modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 modules/categorize/categorize.php:521 msgid "Category not found." msgstr "Categorie niet gevonden." -#: modules/categorize/categorize.php:356 modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:397 modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "Je hebt onvoldoende rechten om deze categorie te wijzigen." -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "Een ID is verplicht om een categorie te updaten." -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "Een naam is verplicht om een categorie te updaten." -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "Categorie bijgewerkt." -#: modules/categorize/categorize.php:429 modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "Een ID is verplicht om een categorie te verwijderen." -#: modules/categorize/categorize.php:444 modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "Je hebt onvoldoende rechten om deze categorie te verwijderen." -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "Categorie verwijderd." diff --git a/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.mo b/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.mo index b36005e..b7a0871 100644 Binary files a/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.mo and b/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.mo differ diff --git a/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po b/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po index f6c3e70..4088e2f 100644 --- a/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po +++ b/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/categorize/admin/help/categorizing_posts.twig:3 @@ -88,7 +88,7 @@ msgid "Update" msgstr "更新" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "管理类别" @@ -99,7 +99,7 @@ msgid "New Category" msgstr "新类别" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "类别" @@ -111,85 +111,85 @@ msgstr "所有帖子" msgid "Add Category" msgstr "添加类别" -#: modules/categorize/categorize.php:67 modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 modules/categorize/categorize.php:121 msgid "Category" msgstr "类别" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "[空]" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "您没有指定类别。" -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "没有找到您指定的类别。" -#: modules/categorize/categorize.php:192 modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "您指定的类别中没有帖子。" -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "“%s” 类别中的帖子" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "您没有足够的权限来管理类别。" -#: modules/categorize/categorize.php:288 modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "您没有足够的权限来添加类别。" -#: modules/categorize/categorize.php:309 modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "没有指定名称" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "添加类别需要名字。" -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "类别已添加。" -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "编辑类别需要ID。" -#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:391 modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 modules/categorize/categorize.php:521 msgid "Category not found." msgstr "类别未找到。" -#: modules/categorize/categorize.php:356 modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:397 modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "您没有足够的权限来编辑这个类别。" -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "更新类别需要ID。" -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "更新类别需要名字。" -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "类别已更新。" -#: modules/categorize/categorize.php:429 modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "删除类别需要ID。" -#: modules/categorize/categorize.php:444 modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "您没有足够的权限来删除这个类别。" -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "类别已删除。" diff --git a/modules/categorize/model/Category.php b/modules/categorize/model/Category.php index bee4200..6543ecc 100644 --- a/modules/categorize/model/Category.php +++ b/modules/categorize/model/Category.php @@ -13,7 +13,10 @@ * See Also: * */ - public function __construct($category_id, $options = array()) { + public function __construct( + $category_id, + $options = array() + ) { $options["from"] = "categorize"; parent::grab($this, $category_id, $options); } @@ -51,14 +54,21 @@ * See Also: * */ - public static function add($name, $clean, $show_on_home): self { + public static function add( + $name, + $clean = null, + $show_on_home = true + ): self { $sql = SQL::current(); + fallback($clean, self::check_clean(slug(8))); + fallback($show_on_home, true); + $sql->insert( table:"categorize", data:array( - "name" => strip_tags($name), - "clean" => $clean, + "name" => sanitize_db_string($name, 128), + "clean" => sanitize_db_string($clean, 128), "show_on_home" => $show_on_home ) ); @@ -80,13 +90,20 @@ * Returns: * The updated . */ - public function update($name, $clean, $show_on_home): self|false { + public function update( + $name, + $clean = null, + $show_on_home = null + ): self|false { if ($this->no_results) return false; + fallback($clean, $this->clean); + fallback($show_on_home, $this->show_on_home); + $new_values = array( - "name" => strip_tags($name), - "clean" => $clean, + "name" => sanitize_db_string($name, 128), + "clean" => sanitize_db_string($clean, 128), "show_on_home" => $show_on_home ); @@ -114,7 +131,9 @@ * Function: delete * Deletes a category from the database. */ - public static function delete($category_id): void { + public static function delete( + $category_id + ): void { $trigger = Trigger::current(); $sql = SQL::current(); @@ -141,7 +160,9 @@ * Function: deletable * Checks if the can delete the category. */ - public function deletable($user = null): bool { + public function deletable( + $user = null + ): bool { if ($this->no_results) return false; @@ -153,7 +174,9 @@ * Function: editable * Checks if the can edit the category. */ - public function editable($user = null): bool { + public function editable( + $user = null + ): bool { if ($this->no_results) return false; @@ -172,7 +195,9 @@ * The unique version of the slug. * If it's not used, it's the same as $clean. If it is, a number is appended. */ - public static function check_clean($clean): string { + public static function check_clean( + $clean + ): string { if (empty($clean)) return $clean; @@ -185,10 +210,14 @@ conds:array("clean" => $unique) ) ) { - $count++; - $unique = substr($clean, 0, (127 - strlen($count))). - "-". - $count; + $unique = mb_strcut( + $clean, + 0, + (127 - strlen($count)), + "UTF-8" + ). + "-". + $count; } return $unique; @@ -198,7 +227,8 @@ * Function: url * Returns a category's URL. */ - public function url(): string|false { + public function url( + ): string|false { if ($this->no_results) return false; @@ -212,7 +242,8 @@ * Function: install * Creates the database table. */ - public static function install(): void { + public static function install( + ): void { SQL::current()->create( table:"categorize", cols:array( @@ -228,7 +259,8 @@ * Function: uninstall * Drops the database table. */ - public static function uninstall(): void { + public static function uninstall( + ): void { $sql = SQL::current(); $sql->drop("categorize"); diff --git a/modules/comments/admin/pages/edit_comment.twig b/modules/comments/admin/pages/edit_comment.twig index 9671bac..15fbb37 100644 --- a/modules/comments/admin/pages/edit_comment.twig +++ b/modules/comments/admin/pages/edit_comment.twig @@ -11,11 +11,13 @@ -{% if site.enable_markdown %} + +{% if site.enable_markdown %} -{{- icon_img("markdown.svg", "Markdown" | translate) -}} +{{- icon_svg("markdown.svg", "Markdown" | translate) -}} -{% endif %} +{% endif %} +

    diff --git a/modules/comments/admin/pages/manage_comments.twig b/modules/comments/admin/pages/manage_comments.twig index 8f58f92..eb33e7b 100644 --- a/modules/comments/admin/pages/manage_comments.twig +++ b/modules/comments/admin/pages/manage_comments.twig @@ -8,7 +8,7 @@ @@ -51,10 +51,10 @@ {{ trigger.call("manage_comments_column", comment) }} -{{ comment.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ comment.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ comment.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ comment.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} @@ -63,7 +63,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} @@ -86,7 +87,7 @@ {{ "Delete" | translate("comments") }} - +
  • {% endif %} diff --git a/modules/comments/admin/pages/manage_spam.twig b/modules/comments/admin/pages/manage_spam.twig index ffd614e..9b4890b 100644 --- a/modules/comments/admin/pages/manage_spam.twig +++ b/modules/comments/admin/pages/manage_spam.twig @@ -8,7 +8,7 @@ @@ -41,10 +41,10 @@ {{ trigger.call("manage_comments_column", comment) }} -{{ comment.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ comment.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ comment.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ comment.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} @@ -53,7 +53,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} @@ -72,7 +73,7 @@ {{ "Delete" | translate("comments") }} - +
  • diff --git a/modules/comments/comments.php b/modules/comments/comments.php index 9fa942e..ff36fa0 100644 --- a/modules/comments/comments.php +++ b/modules/comments/comments.php @@ -16,7 +16,15 @@ "notify_post_author" => false, "default_comment_status" => Comment::STATUS_DENIED, "allowed_comment_html" => array( - "strong", "em", "blockquote", "code", "pre", "a" + "a", + "blockquote", + "code", + "em", + "li", + "ol", + "pre", + "strong", + "ul" ), "comments_per_page" => 25, "enable_reload_comments" => false, @@ -30,12 +38,14 @@ Group::add_permission("edit_own_comment", "Edit Own Comments"); Group::add_permission("delete_comment", "Delete Comments"); Group::add_permission("delete_own_comment", "Delete Own Comments"); - Group::add_permission("code_in_comments", "Can Use HTML in Comments"); + Group::add_permission("code_in_comments", "Use HTML in Comments"); Route::current()->add("comment/(id)/", "comment"); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { if ($confirm) Comment::uninstall(); @@ -52,30 +62,41 @@ Route::current()->remove("comment/(id)/"); } - public function user_logged_in($user): void { + public function user_logged_in( + $user + ): void { + unset($_SESSION['commenter']); $_SESSION['comments'] = array(); } - public function user($user): void { + public function user( + $user + ): void { $user->has_many[] = "comments"; } - public function post($post): void { + public function post( + $post + ): void { $post->has_many[] = "comments"; } - public function list_permissions($names = array()): array { + public function list_permissions( + $names = array() + ): array { $names["add_comment"] = __("Add Comments", "comments"); $names["add_comment_private"] = __("Add Comments to Private Posts", "comments"); $names["edit_comment"] = __("Edit Comments", "comments"); $names["edit_own_comment"] = __("Edit Own Comments", "comments"); $names["delete_comment"] = __("Delete Comments", "comments"); $names["delete_own_comment"] = __("Delete Own Comments", "comments"); - $names["code_in_comments"] = __("Can Use HTML in Comments", "comments"); + $names["code_in_comments"] = __("Use HTML in Comments", "comments"); return $names; } - public function main_comment($main): bool { + public function main_comment( + $main + ): bool { if (empty($_GET['id']) or !is_numeric($_GET['id'])) Flash::warning( __("Please enter an ID to find a comment.", "comments"), @@ -93,7 +114,9 @@ redirect($comment->post->url()."#comment_".$comment->id); } - public function main_most_comments($main): void { + public function main_most_comments( + $main + ): void { $posts = Post::find(array("placeholders" => true)); usort($posts[0], function ($a, $b) { @@ -113,12 +136,15 @@ ); } - public function parse_urls($urls): array { + public function parse_urls( + $urls + ): array { $urls['|/comment/([0-9]+)/|'] = '/?action=comment&id=$1'; return $urls; } - private function add_comment(): array { + private function add_comment( + ): array { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -151,7 +177,7 @@ __("Message can't be blank.", "comments") ); - if (empty($_POST['author']) or derezz($_POST['author'])) + if (empty($_POST['author'])) return array( false, __("Author can't be blank.", "comments") @@ -198,6 +224,18 @@ notify:$notify ); + if (!logged_in()) { + if (!empty($_POST['remember_me'])) { + $_SESSION['commenter'] = array( + "author" => $_POST['author'], + "author_email" => $_POST['author_email'], + "author_url" => $_POST['author_url'] + ); + } else { + unset($_SESSION['commenter']); + } + } + return array( true, ($comment->status == Comment::STATUS_APPROVED) ? @@ -206,7 +244,8 @@ ); } - private function update_comment(): array { + private function update_comment( + ): array { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -245,7 +284,7 @@ __("Message can't be blank.", "comments") ); - if (empty($_POST['author']) or derezz($_POST['author'])) + if (empty($_POST['author'])) return array( false, __("Author can't be blank.", "comments") @@ -300,7 +339,8 @@ ); } - public function admin_update_comment()/*: never */{ + public function admin_update_comment( + ): never { list($success, $message) = $this->update_comment(); if (!$success) @@ -316,17 +356,21 @@ ); } - public function ajax_add_comment(): void { + public function ajax_add_comment( + ): void { list($success, $message) = $this->add_comment(); json_response($message, $success); } - public function ajax_update_comment(): void { + public function ajax_update_comment( + ): void { list($success, $message) = $this->update_comment(); json_response($message, $success); } - public function admin_edit_comment($admin): void { + public function admin_edit_comment( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -357,7 +401,9 @@ ); } - public function admin_delete_comment($admin): void { + public function admin_delete_comment( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -385,7 +431,8 @@ ); } - public function admin_destroy_comment()/*: never */{ + public function admin_destroy_comment( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -425,7 +472,9 @@ Flash::notice(__("Comment deleted.", "comments"), $redirect); } - public function admin_manage_comments($admin): void { + public function admin_manage_comments( + $admin + ): void { if (!Comment::any_editable() and !Comment::any_deletable()) show_403( __("Access Denied"), @@ -477,7 +526,9 @@ ); } - public function admin_manage_spam($admin): void { + public function admin_manage_spam( + $admin + ): void { if (!Visitor::current()->group->can("edit_comment", "delete_comment", true)) show_403( __("Access Denied"), @@ -524,7 +575,8 @@ ); } - public function admin_bulk_comments()/*: never */{ + public function admin_bulk_comments( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -682,7 +734,9 @@ redirect("manage_comments"); } - public function admin_comment_settings($admin): void { + public function admin_comment_settings( + $admin + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -755,7 +809,9 @@ ); } - public function admin_determine_action($action): ?string { + public function admin_determine_action( + $action + ): ?string { if ( $action == "manage" and (Comment::any_editable() or Comment::any_deletable()) @@ -765,7 +821,9 @@ return null; } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["comment_settings"] = array( "title" => __("Comments", "comments") @@ -774,7 +832,9 @@ return $navs; } - public function manage_nav($navs): array { + public function manage_nav( + $navs + ): array { if (!Comment::any_editable() and !Comment::any_deletable()) return $navs; @@ -801,13 +861,16 @@ return $navs; } - public function manage_posts_column_header(): string { + public function manage_posts_column_header( + ): string { return ''. __("Comments", "comments"). ''; } - public function manage_posts_column($post): string { + public function manage_posts_column( + $post + ): string { return 'id)). '">'. @@ -815,13 +878,16 @@ ''; } - public function manage_users_column_header(): string { + public function manage_users_column_header( + ): string { return ''. __("Comments", "comments"). ''; } - public function manage_users_column($user): string { + public function manage_users_column( + $user + ): string { return 'id)). '">'. @@ -829,7 +895,8 @@ ''; } - public function ajax_reload_comments(): void { + public function ajax_reload_comments( + ): void { if (empty($_POST['post_id']) or !is_numeric($_POST['post_id'])) error( __("No ID Specified"), @@ -879,7 +946,8 @@ ); } - public function ajax_show_comment(): void { + public function ajax_show_comment( + ): void { if (empty($_POST['comment_id']) or !is_numeric($_POST['comment_id'])) error( __("Error"), @@ -902,7 +970,8 @@ ); } - public function ajax_edit_comment(): void { + public function ajax_edit_comment( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -940,7 +1009,8 @@ ); } - public function ajax_destroy_comment(): void { + public function ajax_destroy_comment( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -975,7 +1045,9 @@ ); } - public function links($links): array { + public function links( + $links + ): array { $config = Config::current(); $route = Route::current(); $main = MainController::current(); @@ -1002,7 +1074,8 @@ return $links; } - public function main_view(): bool { + public function main_view( + ): bool { if (isset($_POST['action'])) { if ($_POST['action'] == "add_comment") { list($success, $message) = $this->add_comment(); @@ -1029,12 +1102,22 @@ unset($_POST['author_url']); } } + } else { + if (!logged_in() and isset($_SESSION['commenter'])) { + $commenter = $_SESSION['commenter']; + $_POST['author'] = $commenter['author']; + $_POST['author_email'] = $commenter['author_email']; + $_POST['author_url'] = $commenter['author_url']; + $_POST['remember_me'] = "on"; + } } return false; } - public function main_unsubscribe($main)/*: never */{ + public function main_unsubscribe( + $main + ): never { fallback($_GET['email']); fallback($_GET['token']); @@ -1081,7 +1164,9 @@ ); } - public function view_feed($context): void { + public function view_feed( + $context + ): void { $trigger = Trigger::current(); if (!isset($context["post"])) @@ -1133,7 +1218,11 @@ $feed->display(); } - public function webmention($post, $from, $to): void { + public function webmention( + $post, + $from, + $to + ): void { $count = SQL::current()->count( tables:"comments", conds:array( @@ -1169,12 +1258,16 @@ ); } - public function javascript(): void { + public function javascript( + ): void { $config = Config::current(); include MODULES_DIR.DIR."comments".DIR."javascript.php"; } - public function post_options($fields, $post = null): array { + public function post_options( + $fields, + $post = null + ): array { $statuses = array( array( "name" => __("Open", "comments"), @@ -1216,14 +1309,18 @@ return $fields; } - public function delete_post($post): void { + public function delete_post( + $post + ): void { SQL::current()->delete( table:"comments", conds:array("post_id" => $post->id) ); } - public function delete_user($user): void { + public function delete_user( + $user + ): void { SQL::current()->update( table:"comments", conds:array("user_id" => $user->id), @@ -1231,7 +1328,9 @@ ); } - private function get_post_comment_count($post_id): int { + private function get_post_comment_count( + $post_id + ): int { if (!isset($this->caches["post_comment_counts"])) { $counts = SQL::current()->select( tables:"comments", @@ -1252,14 +1351,19 @@ return fallback($this->caches["post_comment_counts"][$post_id], 0); } - public function post_comment_count_attr($attr, $post): int { + public function post_comment_count_attr( + $attr, + $post + ): int { if ($post->no_results) return 0; return $this->get_post_comment_count($post->id); } - private function get_latest_comments($post_id): ?string { + private function get_latest_comments( + $post_id + ): ?string { if (!isset($this->caches["latest_comments"])) { $times = SQL::current()->select( tables:"comments", @@ -1280,14 +1384,19 @@ return fallback($this->caches["latest_comments"][$post_id], null); } - public function post_latest_comment_attr($attr, $post): ?string { + public function post_latest_comment_attr( + $attr, + $post + ): ?string { if ($post->no_results) return null; return $this->get_latest_comments($post->id); } - private function get_user_comment_count($user_id): int { + private function get_user_comment_count( + $user_id + ): int { if (!isset($this->caches["user_comment_counts"])) { $this->caches["user_comment_counts"] = array(); @@ -1308,27 +1417,39 @@ return fallback($this->caches["user_comment_counts"][$user_id], 0); } - public function user_comment_count_attr($attr, $user): int { + public function user_comment_count_attr( + $attr, + $user + ): int { if ($user->no_results) return 0; return $this->get_user_comment_count($user->id); } - public function visitor_comment_count_attr($attr, $visitor): int { + public function visitor_comment_count_attr( + $attr, + $visitor + ): int { return ($visitor->id == 0) ? count(fallback($_SESSION['comments'], array())) : $this->user_comment_count_attr($attr, $visitor) ; } - public function post_commentable_attr($attr, $post): bool { + public function post_commentable_attr( + $attr, + $post + ): bool { if ($post->no_results) return false; return Comment::creatable($post); } - public function import_chyrp_post($entry, $post): void { + public function import_chyrp_post( + $entry, + $post + ): void { $chyrp = $entry->children("http://chyrp.net/export/1.0/"); if (!isset($chyrp->comment)) @@ -1368,7 +1489,10 @@ } } - public function posts_export($atom, $post): string { + public function posts_export( + $atom, + $post + ): string { $comments = Comment::find( array("where" => array("post_id" => $post->id)), array("filter" => false) @@ -1418,7 +1542,9 @@ return $atom; } - public static function email_site_new_comment($comment): bool { + public static function email_site_new_comment( + $comment + ): bool { $config = Config::current(); $trigger = Trigger::current(); $mailto = $config->email; @@ -1443,7 +1569,10 @@ return email($mailto, $subject, $message, $headers); } - public static function email_user_new_comment($comment, $user): bool { + public static function email_user_new_comment( + $comment, + $user + ): bool { $config = Config::current(); $trigger = Trigger::current(); $mailto = $user->email; @@ -1468,7 +1597,10 @@ return email($mailto, $subject, $message, $headers); } - public static function email_peer_new_comment($comment, $peer): bool { + public static function email_peer_new_comment( + $comment, + $peer + ): bool { $config = Config::current(); $trigger = Trigger::current(); $mailto = $peer->author_email; diff --git a/modules/comments/info.php b/modules/comments/info.php index 7525eab..76be16d 100644 --- a/modules/comments/info.php +++ b/modules/comments/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Comments", "comments"), "url" => "http://chyrplite.net/", - "version" => "2024.03", + "version" => "2025.01", "description" => __("Adds commenting functionality to your posts, with webmention support.", "comments"), "author" => array( "name" => "Chyrp Team", diff --git a/modules/comments/javascript.php b/modules/comments/javascript.php index 6e5637e..b4b20e4 100644 --- a/modules/comments/javascript.php +++ b/modules/comments/javascript.php @@ -10,7 +10,8 @@ var ChyrpComment = { reload: module_comments["enable_reload_comments"]); ?>, delay: Math.abs(module_comments["auto_reload_comments"] * 1000); ?>), per_page: module_comments["comments_per_page"]); ?>, - init: function() { + init: function( + ) { if (ChyrpComment.reload && ChyrpComment.delay > 0) ChyrpComment.interval = setInterval(ChyrpComment.fetch, ChyrpComment.delay); @@ -76,7 +77,8 @@ var ChyrpComment = { } ); }, - fetch: function() { + fetch: function( + ) { if ( ChyrpComment.failed || $("ol.comments").attr("data-post_id") == undefined @@ -129,7 +131,9 @@ var ChyrpComment = { ); } }, - edit: function(id) { + edit: function( + id + ) { ChyrpComment.editing++; var thisItem = $("#comment_" + id).loader(); @@ -235,7 +239,9 @@ var ChyrpComment = { "html" ).fail(ChyrpComment.panic); }, - destroy: function(id) { + destroy: function( + id + ) { var thisItem = $("#comment_" + id).loader(); $.post( @@ -257,7 +263,9 @@ var ChyrpComment = { "json" ).fail(ChyrpComment.panic); }, - panic: function(message) { + panic: function( + message + ) { message = (typeof message === "string") ? message : Oops.message ; diff --git a/modules/comments/locale/de_DE/LC_MESSAGES/comments.mo b/modules/comments/locale/de_DE/LC_MESSAGES/comments.mo index 0ee2d45..aebea92 100644 Binary files a/modules/comments/locale/de_DE/LC_MESSAGES/comments.mo and b/modules/comments/locale/de_DE/LC_MESSAGES/comments.mo differ diff --git a/modules/comments/locale/de_DE/LC_MESSAGES/comments.po b/modules/comments/locale/de_DE/LC_MESSAGES/comments.po index 4045754..223427a 100644 --- a/modules/comments/locale/de_DE/LC_MESSAGES/comments.po +++ b/modules/comments/locale/de_DE/LC_MESSAGES/comments.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/comments/admin/pages/comment_settings.twig:3 @@ -24,6 +24,8 @@ msgstr "Email Notifikationen" #: modules/comments/admin/pages/comment_settings.twig:14 msgid "Notify the site contact by email when a comment is added." msgstr "" +"Benachrichtigen Sie den Site-Kontakt per E-Mail, wenn ein Kommentar " +"hinzugefügt wird." #: modules/comments/admin/pages/comment_settings.twig:18 msgid "Author Notifications" @@ -32,6 +34,8 @@ msgstr "Email Notifikationen" #: modules/comments/admin/pages/comment_settings.twig:21 msgid "Notify the post author by email when a comment is added." msgstr "" +"Benachrichtigen Sie den Autor des Blogpost per E-Mail, wenn ein Kommentar " +"hinzugefügt wird." #: modules/comments/admin/pages/comment_settings.twig:24 msgid "Default Comment Status" @@ -93,54 +97,54 @@ msgstr "Kommentar “%s” in bearbeitung;" msgid "Body" msgstr "Body" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "Autor" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "Autor Email" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "Autor Webseite" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "Zeitstempel" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "Status" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "Genehmigt" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "Bestritten" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "Spam" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "Email Notifikationen" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "Speichern" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "Löschen" @@ -149,8 +153,8 @@ msgid "Manage Comments" msgstr "Kommentare bearbeiten" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 modules/comments/comments.php:806 -#: modules/comments/comments.php:820 modules/comments/info.php:3 +#: modules/comments/comments.php:829 modules/comments/comments.php:867 +#: modules/comments/comments.php:884 modules/comments/info.php:3 msgid "Comments" msgstr "Kommentare" @@ -168,256 +172,256 @@ msgstr "Hinzugefügt" msgid "Webmention" msgstr "Webmention" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "Mit Ausgewählten:" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "Leugnen" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "Genehmigen" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "Als Spam markieren" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" -msgstr "Ausführen" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" +msgstr "Batch-Prozess" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "Spam bearbeiten" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "Kommentare hinfügen" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "Kommentare hunfügen zu private Blogposts" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "Kommentare ändern" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "Eigener Kommentare ändern" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "Kommentare löschen" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "Eigener Kommentare löschen" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" -msgstr "Darf HTML in Kommentare benutzen" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" +msgstr "HTML in Kommentaren verwenden" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "Bitte gebe ein ID ein um ein Kommentar zu finden." -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "Die meisten Kommentare zu Beiträgen" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "Zum Bearbeiten einer Kommentar ist eine ID erforderlich." -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "Sie dürfen nicht auf dieser Blogpost reagieren." -#: modules/comments/comments.php:151 modules/comments/comments.php:245 +#: modules/comments/comments.php:177 modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "Nachricht darf nicht leer sein." -#: modules/comments/comments.php:157 modules/comments/comments.php:251 +#: modules/comments/comments.php:183 modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "Autor darf nicht leer sein." -#: modules/comments/comments.php:163 modules/comments/comments.php:257 +#: modules/comments/comments.php:189 modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "Email Adresse darf nicht leer sein." -#: modules/comments/comments.php:169 modules/comments/comments.php:263 +#: modules/comments/comments.php:195 modules/comments/comments.php:302 msgid "Invalid email address." msgstr "Ungültige Email Adresse." -#: modules/comments/comments.php:175 modules/comments/comments.php:269 +#: modules/comments/comments.php:201 modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "Ungültige Webseite URL." -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "Falsche Captcha-Antwort." -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "Kommentar hinzugefügt." -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "Ihr Beitrag wartet auf Moderation." -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "Zum Bearbeiten einer Kommentar ist eine ID erforderlich." -#: modules/comments/comments.php:228 modules/comments/comments.php:345 -#: modules/comments/comments.php:373 modules/comments/comments.php:410 -#: modules/comments/comments.php:895 modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 modules/comments/comments.php:389 +#: modules/comments/comments.php:419 modules/comments/comments.php:457 +#: modules/comments/comments.php:963 modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "Kommentar nicht gefunden." -#: modules/comments/comments.php:234 modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kommentaren." -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "Kommentar aktualisiert." -#: modules/comments/comments.php:333 modules/comments/comments.php:915 +#: modules/comments/comments.php:377 modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "Zum Bearbeiten einer Kommentar ist eine ID erforderlich." -#: modules/comments/comments.php:364 modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "Zum löschen einer Kommentar ist eine ID erforderlich." -#: modules/comments/comments.php:379 modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen um Kommentaren löschen " "zu können." -#: modules/comments/comments.php:425 modules/comments/comments.php:973 +#: modules/comments/comments.php:472 modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "Kommentar gelöscht." -#: modules/comments/comments.php:432 modules/comments/comments.php:484 +#: modules/comments/comments.php:481 modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kommentaren." -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "Selektierte Kommentare gelöscht." -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "Selektierte Kommentare bestritten." -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "Selektierte Kommentare genehmigt." -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "Selektierte Kommentare als Spam markiert." -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "Kommentare (%d)" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "Spam (%d)" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "Zum wiederladen einer Kommentar ist eine ID erforderlich." -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "Kommentare hinzugefügt seit %s" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "Zum schauen einer Kommentar ist eine ID erforderlich." -#: modules/comments/comments.php:992 modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "Kommentare auf “%s”" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "Sie haben sich von der Unterhaltung abgemeldet." -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "Kommentar #%d" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "Ein Ping von Ihrer URL ist bereits registriert." -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "Ihre URL ist zu lang, um in unserer Datenbank gespeichert zu werden." -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "Hatte diesen Beitrag erwähnt." -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "Geöffnet" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "Geschlossen" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "Privat" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "Nur registriert" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "Kommentarstatus" -#: modules/comments/comments.php:1435 modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "Neuer Kommentar auf %s" -#: modules/comments/comments.php:1436 modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "%s hat einen Blogbeitrag kommentiert:" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "Von dieser Konversation abmelden:" @@ -437,10 +441,10 @@ msgstr "" msgid "Do you want to remove comments from the database?" msgstr "Möchten Sie Kommentare aus der Datenbank entfernen?" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "Sind Sie sicher, dass Sie diesen Kommentar dauerhaft löschen möchten?" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "Anon" diff --git a/modules/comments/locale/en_US/LC_MESSAGES/comments.pot b/modules/comments/locale/en_US/LC_MESSAGES/comments.pot index 8c3e990..d8332d6 100644 --- a/modules/comments/locale/en_US/LC_MESSAGES/comments.pot +++ b/modules/comments/locale/en_US/LC_MESSAGES/comments.pot @@ -80,54 +80,54 @@ msgstr "" msgid "Body" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "" @@ -136,9 +136,9 @@ msgid "Manage Comments" msgstr "" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 -#: modules/comments/comments.php:806 -#: modules/comments/comments.php:820 +#: modules/comments/comments.php:829 +#: modules/comments/comments.php:867 +#: modules/comments/comments.php:884 #: modules/comments/info.php:3 msgid "Comments" msgstr "" @@ -157,267 +157,267 @@ msgstr "" msgid "Webmention" msgstr "" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" msgstr "" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" msgstr "" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "" -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "" -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "" -#: modules/comments/comments.php:151 -#: modules/comments/comments.php:245 +#: modules/comments/comments.php:177 +#: modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "" -#: modules/comments/comments.php:157 -#: modules/comments/comments.php:251 +#: modules/comments/comments.php:183 +#: modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "" -#: modules/comments/comments.php:163 -#: modules/comments/comments.php:257 +#: modules/comments/comments.php:189 +#: modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "" -#: modules/comments/comments.php:169 -#: modules/comments/comments.php:263 +#: modules/comments/comments.php:195 +#: modules/comments/comments.php:302 msgid "Invalid email address." msgstr "" -#: modules/comments/comments.php:175 -#: modules/comments/comments.php:269 +#: modules/comments/comments.php:201 +#: modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "" -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "" -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "" -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "" -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "" -#: modules/comments/comments.php:228 -#: modules/comments/comments.php:345 -#: modules/comments/comments.php:373 -#: modules/comments/comments.php:410 -#: modules/comments/comments.php:895 -#: modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 +#: modules/comments/comments.php:389 +#: modules/comments/comments.php:419 +#: modules/comments/comments.php:457 +#: modules/comments/comments.php:963 +#: modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "" -#: modules/comments/comments.php:234 -#: modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 +#: modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "" -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "" -#: modules/comments/comments.php:333 -#: modules/comments/comments.php:915 +#: modules/comments/comments.php:377 +#: modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "" -#: modules/comments/comments.php:364 -#: modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 +#: modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "" -#: modules/comments/comments.php:379 -#: modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 +#: modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "" -#: modules/comments/comments.php:425 -#: modules/comments/comments.php:973 +#: modules/comments/comments.php:472 +#: modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "" -#: modules/comments/comments.php:432 -#: modules/comments/comments.php:484 +#: modules/comments/comments.php:481 +#: modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "" -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "" -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "" -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "" -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "" -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "" -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "" -#: modules/comments/comments.php:992 -#: modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 +#: modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "" -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "" -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "" -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "" -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "" -#: modules/comments/comments.php:1435 -#: modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 +#: modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "" -#: modules/comments/comments.php:1436 -#: modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 +#: modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "" @@ -433,11 +433,11 @@ msgstr "" msgid "Do you want to remove comments from the database?" msgstr "" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "" diff --git a/modules/comments/locale/it_IT/LC_MESSAGES/comments.mo b/modules/comments/locale/it_IT/LC_MESSAGES/comments.mo index e9a10ae..fdfea5d 100644 Binary files a/modules/comments/locale/it_IT/LC_MESSAGES/comments.mo and b/modules/comments/locale/it_IT/LC_MESSAGES/comments.mo differ diff --git a/modules/comments/locale/it_IT/LC_MESSAGES/comments.po b/modules/comments/locale/it_IT/LC_MESSAGES/comments.po index 78cd110..bea4006 100644 --- a/modules/comments/locale/it_IT/LC_MESSAGES/comments.po +++ b/modules/comments/locale/it_IT/LC_MESSAGES/comments.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/comments/admin/pages/comment_settings.twig:3 @@ -94,54 +94,54 @@ msgstr "Modifica del commento “%s”" msgid "Body" msgstr "Testo" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "Autore" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "Email dell'autore" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "Sito dell'autore" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "Date e ora" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "Stato" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "Approvato" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "Negato" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "Spam" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "Notifiche email" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "Salva" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "Elimina" @@ -150,8 +150,8 @@ msgid "Manage Comments" msgstr "Gestisci commenti" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 modules/comments/comments.php:806 -#: modules/comments/comments.php:820 modules/comments/info.php:3 +#: modules/comments/comments.php:829 modules/comments/comments.php:867 +#: modules/comments/comments.php:884 modules/comments/info.php:3 msgid "Comments" msgstr "Commenti" @@ -169,252 +169,252 @@ msgstr "Aggiunto" msgid "Webmention" msgstr "Webmention" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "Selezionati:" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "Rifiutare" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "Approva" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "Contrassegna come spam" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" -msgstr "Esegui" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" +msgstr "Processo batch" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "Gestire spam" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "Aggiungi commenti" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "Aggiungere commenti ai post privati" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "Modifica commenti" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "Modificare i propri commenti" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "Elimina commenti" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "Eliminare i propri commenti" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" -msgstr "Si può usare HTML nei commenti" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" +msgstr "Usa HTML nei commenti" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "Si prega di inserire un ID per trovare un commento." -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "I post più commentati" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "Per aggiungere un commento è necessario un ID." -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "Non puoi commentare questo post." -#: modules/comments/comments.php:151 modules/comments/comments.php:245 +#: modules/comments/comments.php:177 modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "Il messaggio non può essere vuoto." -#: modules/comments/comments.php:157 modules/comments/comments.php:251 +#: modules/comments/comments.php:183 modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "La casella dell'autore non può essere vuota." -#: modules/comments/comments.php:163 modules/comments/comments.php:257 +#: modules/comments/comments.php:189 modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "La casella dell'indirizzo email non può essere vuota." -#: modules/comments/comments.php:169 modules/comments/comments.php:263 +#: modules/comments/comments.php:195 modules/comments/comments.php:302 msgid "Invalid email address." msgstr "Indirizzo email non valido." -#: modules/comments/comments.php:175 modules/comments/comments.php:269 +#: modules/comments/comments.php:201 modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "URL del sito web non valido." -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "Risposta Captcha errata." -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "Commento aggiunto." -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "Questo commento è in attesa di verifica da un moderatore." -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "Per aggiornare un commento è necessario un ID." -#: modules/comments/comments.php:228 modules/comments/comments.php:345 -#: modules/comments/comments.php:373 modules/comments/comments.php:410 -#: modules/comments/comments.php:895 modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 modules/comments/comments.php:389 +#: modules/comments/comments.php:419 modules/comments/comments.php:457 +#: modules/comments/comments.php:963 modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "Il commento non è stato trovato." -#: modules/comments/comments.php:234 modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "" "Non si dispone di privilegi sufficienti per modificare questo commento." -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "Commento aggiornato." -#: modules/comments/comments.php:333 modules/comments/comments.php:915 +#: modules/comments/comments.php:377 modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "Per modificare un commento è necessario un ID." -#: modules/comments/comments.php:364 modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "Per eliminare un commento è necessario un ID." -#: modules/comments/comments.php:379 modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "Non si dispone di privilegi sufficienti per eliminare questo commento." -#: modules/comments/comments.php:425 modules/comments/comments.php:973 +#: modules/comments/comments.php:472 modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "Commento cancellato." -#: modules/comments/comments.php:432 modules/comments/comments.php:484 +#: modules/comments/comments.php:481 modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "" "Non si dispone di privilegi sufficienti per gestire eventuali commenti." -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "I commenti selezionati sono stati cancellati." -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "Commenti selezionati negati." -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "Commenti selezionati approvati." -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "Commenti selezionati contrassegnati come spam." -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "Commenti (%d)" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "Spam (%d)" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "Per ricaricare i commenti è necessario un ID." -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "Commenti aggiunti dal %s" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "È necessario un ID per visualizzare un commento." -#: modules/comments/comments.php:992 modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "Commenti “%s”" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "Hai annullato l'iscrizione a questa conversazione." -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "Commento #%d" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "Un ping dall'URL è già registrato." -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "Il tuo URL è troppo lungo per essere memorizzato nel nostro database." -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "Menzionato questo post." -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "Aperto" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "Chiuso" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "Privato" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "Solo utenti registrati" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "Stato del commento" -#: modules/comments/comments.php:1435 modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "Nuovo commento a %s" -#: modules/comments/comments.php:1436 modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "%s ha aggiunto un commento sul blog post:" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "Annulla l'iscrizione a questa conversazione:" @@ -433,10 +433,10 @@ msgstr "" msgid "Do you want to remove comments from the database?" msgstr "Si desidera rimuovere i commenti dal database?" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "Sei sicuro di voler eliminare definitivamente questo commento?" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "Anonimo" diff --git a/modules/comments/locale/nl_NL/LC_MESSAGES/comments.mo b/modules/comments/locale/nl_NL/LC_MESSAGES/comments.mo index 718acc8..d36c36b 100644 Binary files a/modules/comments/locale/nl_NL/LC_MESSAGES/comments.mo and b/modules/comments/locale/nl_NL/LC_MESSAGES/comments.mo differ diff --git a/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po b/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po index ccff94a..27ca806 100644 --- a/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po +++ b/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/comments/admin/pages/comment_settings.twig:3 @@ -96,54 +96,54 @@ msgstr "Wijzigen Opmerking op “%s”" msgid "Body" msgstr "Body" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "Schrijver" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "Schrijver email" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "Schrijver website" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "Tijdstempel" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "Status" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "Goedgekeurd" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "Verworpen" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "Spam" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "Notificaties per email" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "Sla op" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "Verwijder" @@ -152,8 +152,8 @@ msgid "Manage Comments" msgstr "Beheer Opmerkingen" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 modules/comments/comments.php:806 -#: modules/comments/comments.php:820 modules/comments/info.php:3 +#: modules/comments/comments.php:829 modules/comments/comments.php:867 +#: modules/comments/comments.php:884 modules/comments/info.php:3 msgid "Comments" msgstr "Opmerkingen" @@ -171,250 +171,250 @@ msgstr "Toegevoegd" msgid "Webmention" msgstr "Webmention" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "Met geselecteerd:" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "Verwerp" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "Keur goed" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "Markeer als spam" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" -msgstr "Uitvoeren" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" +msgstr "Batch-proces" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "Beheer spam" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "Voeg opmerkingen toe" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "Opmerkingen toevoegen aan privé-berichten" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "Wijzig Opmerkingen" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "Wijzig Eigen Opmerkingen" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "Verwijder Opmerkingen" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "Verwijder Eigen Opmerkingen" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" -msgstr "Kan HTML gebruiken in opmerkingen" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" +msgstr "Gebruik HTML in opmerkingen" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "Geef alsjeblieft een ID in om een opmerking te vinden." -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "Meeste opmerkingen op blogposts" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "Een ID is verplicht om een opmerking toe te voegen." -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "Je kunt niet reageren op deze blogpost." -#: modules/comments/comments.php:151 modules/comments/comments.php:245 +#: modules/comments/comments.php:177 modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "Bericht kan niet leeg zijn." -#: modules/comments/comments.php:157 modules/comments/comments.php:251 +#: modules/comments/comments.php:183 modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "Schrijver kan niet leeg zijn." -#: modules/comments/comments.php:163 modules/comments/comments.php:257 +#: modules/comments/comments.php:189 modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "Emailadres kan niet leeg zijn." -#: modules/comments/comments.php:169 modules/comments/comments.php:263 +#: modules/comments/comments.php:195 modules/comments/comments.php:302 msgid "Invalid email address." msgstr "Ongeldig emailadres." -#: modules/comments/comments.php:175 modules/comments/comments.php:269 +#: modules/comments/comments.php:201 modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "Ongeldige website URL." -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "Onjuiste Captcha reactie." -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "Opmerking toegevoegd." -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "Je opmerking is in afwachting van goedkeuring." -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "Een ID is noodzakelijk om een opmerking te updaten." -#: modules/comments/comments.php:228 modules/comments/comments.php:345 -#: modules/comments/comments.php:373 modules/comments/comments.php:410 -#: modules/comments/comments.php:895 modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 modules/comments/comments.php:389 +#: modules/comments/comments.php:419 modules/comments/comments.php:457 +#: modules/comments/comments.php:963 modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "Opmerking niet gevonden." -#: modules/comments/comments.php:234 modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "Je hebt onvoldoende rechten om deze opmerking te wijzigen." -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "Opmerking bijgewerkt." -#: modules/comments/comments.php:333 modules/comments/comments.php:915 +#: modules/comments/comments.php:377 modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "Een ID is noodzakelijk om een opmerking te wijzigen." -#: modules/comments/comments.php:364 modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "Een ID is noodzakelijk om een opmerking te verwijderen." -#: modules/comments/comments.php:379 modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "Je hebt onvoldoende rechten om deze opmerking te verwijderen." -#: modules/comments/comments.php:425 modules/comments/comments.php:973 +#: modules/comments/comments.php:472 modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "Opmerking verwijderd." -#: modules/comments/comments.php:432 modules/comments/comments.php:484 +#: modules/comments/comments.php:481 modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "Je hebt onvoldoende rechten om opmerkingen te beheren." -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "Geselecteerde opmerkingen verwijderd." -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "Geselecteerde opmerkingen verworpen." -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "Geselecteerde opmerkingen goedgekeurd." -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "Geselecteerde opmerkingen als spam gemarkeerd." -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "Opmerkingen (%d)" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "Spam (%d)" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "Een ID is noodzakelijk om opmerkingen te herladen." -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "Opmerkingen toegevoegd vanaf %s" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "Een ID is noodzakelijk om een opmerking te tonen." -#: modules/comments/comments.php:992 modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "Opmerkingen op “%s”" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "Je bent uitgeschreven van deze conversatie." -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "Opmerking #%d" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "Een ping van je URL is reeds geregistreerd." -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "Je URL is te lang om in de database te worden opgeslagen." -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "Heeft deze blogpost genoemd." -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "Open" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "Gesloten" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "Privé" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "Uitsluitend geregistreerden" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "Status Opmerking" -#: modules/comments/comments.php:1435 modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "Nieuwe opmerking op %s" -#: modules/comments/comments.php:1436 modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "%s heeft een opmerking geplaatst op een blogpost:" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "Schrijf je uit van deze conversatie:" @@ -434,10 +434,10 @@ msgstr "" msgid "Do you want to remove comments from the database?" msgstr "Wil je opmerkingen uit de database verwijderen?" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "Weet je zeker dat je deze opmerking definitief wilt verwijderen?" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "Anoniem" diff --git a/modules/comments/locale/zh_CN/LC_MESSAGES/comments.mo b/modules/comments/locale/zh_CN/LC_MESSAGES/comments.mo index ca5eb25..8bc8001 100644 Binary files a/modules/comments/locale/zh_CN/LC_MESSAGES/comments.mo and b/modules/comments/locale/zh_CN/LC_MESSAGES/comments.mo differ diff --git a/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po b/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po index 73c2198..df287af 100644 --- a/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po +++ b/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/comments/admin/pages/comment_settings.twig:3 @@ -93,54 +93,54 @@ msgstr "编辑评论 “%s”" msgid "Body" msgstr "正文" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "作者" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "作者的电子邮件" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "作者的网站" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "时间戳" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "状态" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "已批准的" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "已否决的" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "垃圾评论" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "邮件通知" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "保存" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "删除" @@ -149,8 +149,8 @@ msgid "Manage Comments" msgstr "管理评论" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 modules/comments/comments.php:806 -#: modules/comments/comments.php:820 modules/comments/info.php:3 +#: modules/comments/comments.php:829 modules/comments/comments.php:867 +#: modules/comments/comments.php:884 modules/comments/info.php:3 msgid "Comments" msgstr "评论" @@ -168,250 +168,250 @@ msgstr "增加" msgid "Webmention" msgstr "Webmention" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "选择:" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "否决" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "批准" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "标记为垃圾评论" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" -msgstr "执行" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" +msgstr "批处理" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "管理垃圾评论" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "增加评论" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "增加评论到私人帖子" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "编辑评论" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "编辑自己的评论" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "删除评论" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "删除自己的评论" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" -msgstr "可以在评论中使用HTML" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" +msgstr "在评论中使用 HTML" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "请输入需要查找的评论ID。" -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "对帖子的评论最多" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "添加评论必须要一个ID。" -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "您不能评论这篇帖子。" -#: modules/comments/comments.php:151 modules/comments/comments.php:245 +#: modules/comments/comments.php:177 modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "消息不能为空。" -#: modules/comments/comments.php:157 modules/comments/comments.php:251 +#: modules/comments/comments.php:183 modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "作者不能为空。" -#: modules/comments/comments.php:163 modules/comments/comments.php:257 +#: modules/comments/comments.php:189 modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "邮件地址不能为空。" -#: modules/comments/comments.php:169 modules/comments/comments.php:263 +#: modules/comments/comments.php:195 modules/comments/comments.php:302 msgid "Invalid email address." msgstr "无效的邮件地址。" -#: modules/comments/comments.php:175 modules/comments/comments.php:269 +#: modules/comments/comments.php:201 modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "无效的网站URL。" -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "验证码不正确。" -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "评论已增加。" -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "您的评论正在等待审核。" -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "更新评论必须要一个ID。" -#: modules/comments/comments.php:228 modules/comments/comments.php:345 -#: modules/comments/comments.php:373 modules/comments/comments.php:410 -#: modules/comments/comments.php:895 modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 modules/comments/comments.php:389 +#: modules/comments/comments.php:419 modules/comments/comments.php:457 +#: modules/comments/comments.php:963 modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "评论未找到。" -#: modules/comments/comments.php:234 modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "你没有足够的权限来编辑这段评论。" -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "评论已更新。" -#: modules/comments/comments.php:333 modules/comments/comments.php:915 +#: modules/comments/comments.php:377 modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "编辑评论必须要一个ID。" -#: modules/comments/comments.php:364 modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "删除评论必须要一个ID。" -#: modules/comments/comments.php:379 modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "你没有足够的权限来删除这段评论。" -#: modules/comments/comments.php:425 modules/comments/comments.php:973 +#: modules/comments/comments.php:472 modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "评论已删除。" -#: modules/comments/comments.php:432 modules/comments/comments.php:484 +#: modules/comments/comments.php:481 modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "你没有足够的权限来管理任何评论。" -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "选择的评论已删除。" -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "选择的评论已否决。" -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "选择的评论已批准。" -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "选择的评论已标记为垃圾评论。" -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "评论数 (%d)" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "垃圾评论数 (%d)" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "重新加载评论必须要一个ID。" -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "自 %s 添加了评论" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "显示评论必须要一个ID。" -#: modules/comments/comments.php:992 modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "对 “%s” 的评论" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "您已取消订阅对话。" -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "评论 #%d" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "您的URL中的ping已被注册。" -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "您的网址太长,无法存储在我们的数据库中。" -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "提到了这个帖子。" -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "打开" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "已关闭" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "私人" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "仅注册" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "评论状态" -#: modules/comments/comments.php:1435 modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "%s 上的新注释" -#: modules/comments/comments.php:1436 modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "%s 在博客文章上评论:" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "取消订阅此对话:" @@ -427,10 +427,10 @@ msgstr "请记住更新每个组的权限设置。" msgid "Do you want to remove comments from the database?" msgstr "您想从数据库中删除评论吗?" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "您确定要永久删除这个评论?" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "不久" diff --git a/modules/comments/model/Comment.php b/modules/comments/model/Comment.php index fa5ead8..85af445 100644 --- a/modules/comments/model/Comment.php +++ b/modules/comments/model/Comment.php @@ -26,7 +26,10 @@ * See Also: * */ - public function __construct($comment_id, $options = array()) { + public function __construct( + $comment_id, + $options = array() + ) { $skip_where = ( ADMIN or (isset($options["skip_where"]) and $options["skip_where"]) @@ -198,9 +201,9 @@ table:"comments", data:array( "body" => $body, - "author" => strip_tags($author), - "author_url" => strip_tags($author_url), - "author_email" => strip_tags($author_email), + "author" => sanitize_db_string($author, 250), + "author_url" => sanitize_db_string($author_url, 2048), + "author_email" => sanitize_db_string($author_email, 128), "author_ip" => $ip, "author_agent" => $agent, "status" => $status, @@ -321,9 +324,9 @@ $new_values = array( "body" => $body, - "author" => strip_tags($author), - "author_url" => strip_tags($author_url), - "author_email" => strip_tags($author_email), + "author" => sanitize_db_string($author, 250), + "author_url" => sanitize_db_string($author_url, 2048), + "author_email" => sanitize_db_string($author_email, 128), "status" => fallback($status, $this->status), "notify" => fallback($notify, $this->notify), "created_at" => fallback($created_at, $this->created_at), @@ -395,7 +398,9 @@ * See Also: * */ - public static function delete($comment_id): void { + public static function delete( + $comment_id + ): void { parent::destroy( self::class, $comment_id, @@ -407,7 +412,9 @@ * Function: editable * Checks if the can edit the comment. */ - public function editable($user = null): bool { + public function editable( + $user = null + ): bool { if ($this->no_results) return false; @@ -426,7 +433,9 @@ * Function: deletable * Checks if the can delete the comment. */ - public function deletable($user = null): bool { + public function deletable( + $user = null + ): bool { if ($this->no_results) return false; @@ -445,7 +454,8 @@ * Function: any_editable * Checks if the can edit any comments. */ - public static function any_editable(): bool { + public static function any_editable( + ): bool { $visitor = Visitor::current(); # Can they edit comments? @@ -469,7 +479,8 @@ * Function: any_deletable * Checks if the can delete any comments. */ - public static function any_deletable(): bool { + public static function any_deletable( + ): bool { $visitor = Visitor::current(); # Can they delete comments? @@ -493,7 +504,9 @@ * Function: creatable * Checks if the can comment on a post. */ - public static function creatable($post): bool { + public static function creatable( + $post + ): bool { $visitor = Visitor::current(); if (!$visitor->group->can("add_comment")) @@ -520,7 +533,8 @@ * Function: redactions * Returns a SQL query "chunk" that hides some comments from the . */ - public static function redactions(): string { + public static function redactions( + ): string { $user_id = (int) Visitor::current()->id; $id_list = "(0)"; @@ -547,7 +561,8 @@ * Function: url * Returns a comment's URL. */ - public function url(): string|false { + public function url( + ): string|false { if ($this->no_results) return false; @@ -560,33 +575,36 @@ * Function: author_link * Returns the commenter's name enclosed in a hyperlink to their website. */ - public function author_link(): string|false { + public function author_link( + ): string|false { if ($this->no_results) return false; if (empty($this->author)) return __("Anon", "comments"); - if (is_url($this->author_url)) - return ''. - $this->author. - ''; - else - return $this->author; + return is_url($this->author_url) ? + ''. + $this->author. + '' + : + $this->author + ; } /** * Function: filter * Filters the comment through filter_comment and markup filters. */ - private function filter(): void { + private function filter( + ): void { $trigger = Trigger::current(); $trigger->filter($this, "filter_comment"); $this->body_unfiltered = $this->body; - $trigger->filter($this->body, array("markup_comment_text", "markup_text")); + $trigger->filter($this->body, array("markup_comment_text", "markup_text"), $this); $config = Config::current(); @@ -594,16 +612,19 @@ $this->user->group : new Group($config->guest_group) ; - if ( - $this->status != "pingback" and - !$group->can("code_in_comments") - ) { - $allowed = $config->module_comments["allowed_comment_html"]; - $this->body = strip_tags( - $this->body, - "<".implode("><", $allowed).">" - ); - } + $allowed_basic_html = array("br", "p"); + + $allowed_extra_html = array_merge( + $allowed_basic_html, + $config->module_comments["allowed_comment_html"] + ); + + $this->body = strip_tags( + $this->body, + $group->can("code_in_comments") ? + $allowed_extra_html : + $allowed_basic_html + ); $this->body = sanitize_html($this->body); } @@ -612,7 +633,8 @@ * Function: install * Creates the database table. */ - public static function install(): void { + public static function install( + ): void { SQL::current()->create( table:"comments", cols:array( @@ -638,7 +660,8 @@ * Function: uninstall * Drops the database table. */ - public static function uninstall(): void { + public static function uninstall( + ): void { $sql = SQL::current(); $sql->drop("comments"); diff --git a/modules/comments/upgrades.php b/modules/comments/upgrades.php index 487eb90..bd9e658 100644 --- a/modules/comments/upgrades.php +++ b/modules/comments/upgrades.php @@ -8,7 +8,8 @@ * * Versions: 2017.01 => 2017.02 */ - function comments_migrate_config(): void { + function comments_migrate_config( + ): void { $config = Config::current(); if ( @@ -56,7 +57,8 @@ * * Versions: 2022.01 => 2022.02, 2024.01 */ - function fix_comment_updated(): void { + function fix_comment_updated( + ): void { $sql = SQL::current(); $values = ($sql->adapter == "pgsql") ? @@ -90,7 +92,8 @@ * * Versions: 2023.02 => 2023.03 */ - function comments_update_config(): void { + function comments_update_config( + ): void { $config = Config::current(); $array = $config->module_comments; diff --git a/modules/easy_embed/easy_embed.php b/modules/easy_embed/easy_embed.php index 35a2afe..d3bc46b 100644 --- a/modules/easy_embed/easy_embed.php +++ b/modules/easy_embed/easy_embed.php @@ -1,34 +1,117 @@ setPriority("markup_text", 4); } - public function markup_text($text): string { + public function markup_text( + $text + ): string { $urls = array( - '||i' - => 'https://www.youtube.com/embed/$1', + # YouTube: + '||i' + => '', - '||i' - => 'https://www.youtube.com/embed/$1', + '||i' + => '', - '||i' - => 'https://player.vimeo.com/video/$1', + '||i' + => '', - '||i' - => 'https://player.twitch.tv/?video=v$1', + # Vimeo: + '||i' + => '', - '||i' - => 'https://archive.org/embed/$1' + '||i' + => '', + + # Twitch: + '||i' + => '', + + '||i' + => '', + + # Internet Archive: + '||i' + => '', + + '||i' + => '', + + # Spotify: + '||i' + => '', + + # Bandcamp: + '||i' + => '', + + '||i' + => '', + + '||i' + => '' ); - foreach ($urls as $view => &$embed) { - $embed = ''; - } - - return preg_replace(array_keys($urls), array_values($urls), $text); + return preg_replace( + array_keys($urls), + array_values($urls), + $text + ); } } diff --git a/modules/easy_embed/info.php b/modules/easy_embed/info.php index af62e41..a95bceb 100644 --- a/modules/easy_embed/info.php +++ b/modules/easy_embed/info.php @@ -2,8 +2,8 @@ return array( "name" => __("Easy Embed", "easy_embed"), "url" => "http://chyrplite.net/", - "version" => "2023.01", - "description" => __("Embed a video in your blog content by pasting its URL surrounded by <!-- and -->.", "easy_embed"), + "version" => "2025.01", + "description" => __("Embed content in your blog by pasting its URL surrounded by <!-- and -->.", "easy_embed"), "author" => array( "name" => "Daniel Pimley", "url" => "http://www.pimley.net/" diff --git a/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.mo index 5809795..500a26b 100644 Binary files a/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.mo and b/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.mo differ diff --git a/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po index bdaa809..533dcb6 100644 --- a/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po @@ -9,17 +9,43 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "Eingebettete Inhalte von YouTube" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "Eingebettete Inhalte von Vimeo" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "Eingebettete Inhalte von Twitch" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "Eingebettete Inhalte aus dem Internetarchiv" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "Eingebettete Inhalte von Spotify" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "Eingebettete Inhalte von Bandcamp" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "Einfach Einschliessen" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"Betten Sie ein Video in Ihren Blog-Inhalt ein, indem Sie dessen URL " -"umgeben von <!-- und --> einfügen." +"Betten Sie Inhalte in Ihren Blog ein, indem Sie dessen URL umgeben von " +"<!-- und --> einfügen." diff --git a/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot b/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot index 94d4aba..ff2e573 100644 --- a/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot +++ b/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot @@ -1,10 +1,41 @@ #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 +#: modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "" + +#: modules/easy_embed/easy_embed.php:40 +#: modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "" + +#: modules/easy_embed/easy_embed.php:55 +#: modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "" + +#: modules/easy_embed/easy_embed.php:70 +#: modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "" + +#: modules/easy_embed/easy_embed.php:93 +#: modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "" #: modules/easy_embed/info.php:6 -msgid "Embed a video in your blog content by pasting its URL surrounded by <!-- and -->." +msgid "Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" diff --git a/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.mo index ae25b03..114b91d 100644 Binary files a/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.mo and b/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.mo differ diff --git a/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po index a4b6bfa..d9f65d7 100644 --- a/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po @@ -10,17 +10,43 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "Contenuti incorporati da YouTube" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "Contenuto incorporato da Vimeo" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "Contenuti incorporati da Twitch" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "Contenuto incorporato da Internet Archive" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "Contenuto incorporato da Spotify" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "Contenuto incorporato da Bandcamp" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "Facile Embed" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"Incorporare un video nel contenuto del blog aggiungendo l'URL circondato da " +"Incorpora contenuti nel tuo blog aggiungendo l'URL circondato da " "<!-- e -->." diff --git a/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.mo index a2e71eb..e7ce4f5 100644 Binary files a/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.mo and b/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.mo differ diff --git a/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po index 2f8263f..c57ed12 100644 --- a/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po @@ -9,17 +9,43 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "Ingesloten content van YouTube" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "Ingesloten inhoud van Vimeo" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "Ingesloten inhoud van Twitch" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "Ingesloten inhoud van Internet Archive" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "Ingesloten inhoud van Spotify" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "Ingesloten inhoud van Bandcamp" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "Eenvoudig insluiten" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"Sluit een video in, in je blogcontent door de URL te plakken, " -"omgeven door <!-- en -->." +"Sluit inhoud in uw blog in door de URL te plakken, omgeven door <!--" +" en -->." diff --git a/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.mo index 3cf5a7c..f208551 100644 Binary files a/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.mo and b/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.mo differ diff --git a/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po index 2fdfa64..d4a0e9f 100644 --- a/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po @@ -10,17 +10,43 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "来自 YouTube 的嵌入内容" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "来自 Vimeo 的嵌入式内容" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "来自 Twitch 的嵌入式内容" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "来自 Internet Archive 的嵌入内容" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "来自 Spotify 的嵌入式内容" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "来自 Bandcamp 的嵌入式内容" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" -msgstr "" +msgstr "轻松嵌入" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"通过粘贴 <!----> 包括的URL,将视" -"频嵌入到您的博客内容中。" +"通过粘贴被 <!----> 包围的 URL,将内容嵌" +"入到您的博客中。" diff --git a/modules/highlighter/highlight.min.js b/modules/highlighter/highlight.min.js index e63d91b..24fbe17 100644 --- a/modules/highlighter/highlight.min.js +++ b/modules/highlighter/highlight.min.js @@ -1,6 +1,6 @@ /*! - Highlight.js v11.9.0 (git: f47103d4f1) - (c) 2006-2023 undefined and other contributors + Highlight.js v11.10.0 (git: 366a8bd012) + (c) 2006-2024 Josh Goebel and other contributors License: BSD-3-Clause */ var hljs=function(){"use strict";function e(t){ @@ -302,33 +302,34 @@ e["before:highlightBlock"](Object.assign({block:t.el},t)) }),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)}, removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{ -r=!1},n.safeMode=()=>{r=!0},n.versionString="11.9.0",n.regex={concat:h, +r=!1},n.safeMode=()=>{r=!0},n.versionString="11.10.0",n.regex={concat:h, lookahead:g,either:f,optional:d,anyNumberOfTimes:u} ;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n },ne=te({});return ne.newInstance=()=>te({}),ne}() -;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.9.0 */ +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ className:"variable",variants:[{ begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ -className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE] +},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={ begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, -end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$?\(\(/, +end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/, end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] -},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 -}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ -name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], literal:["true","false"], -built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] -},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{ -match:/\\"/},{className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() -;hljs.registerLanguage("bash",e)})();/*! `c` grammar compiled for Highlight.js 11.9.0 */ +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{ +className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() +;hljs.registerLanguage("bash",e)})();/*! `c` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,t=e.COMMENT("//","$",{ contains:[{begin:/\\\n/}] -}),s="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",r="("+s+"|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",i={ +}),a="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",i="("+a+"|"+n.optional(s)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ match:/\batomic_[a-z]{3,6}\b/}]},l={className:"string",variants:[{ begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ @@ -340,31 +341,31 @@ begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l| },{ begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" }],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ -keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include" },contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{ className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={ -className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 -},g=n.optional(a)+e.IDENT_RE+"\\s*\\(",u={ -keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], -type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +className:"title",begin:n.optional(s)+e.IDENT_RE,relevance:0 +},_=n.optional(s)+e.IDENT_RE+"\\s*\\(",u={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"], literal:"true false NULL", built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" -},m=[c,i,t,e.C_BLOCK_COMMENT_MODE,o,l],_={variants:[{begin:/=/,end:/;/},{ +},g=[c,r,t,e.C_BLOCK_COMMENT_MODE,o,l],m={variants:[{begin:/=/,end:/;/},{ begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], -keywords:u,contains:m.concat([{begin:/\(/,end:/\)/,keywords:u, -contains:m.concat(["self"]),relevance:0}]),relevance:0},p={ -begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, -keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:u,relevance:0},{ -begin:g,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})], +keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:g.concat(["self"]),relevance:0}]),relevance:0},p={ +begin:"("+i+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{ +begin:_,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})], relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/, -keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,l,o,i,{begin:/\(/, -end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,l,o,i] -}]},i,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:u, -disableAutodetect:!0,illegal:"=]/,contains:[{ beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c, -strings:l,keywords:u}}}})();hljs.registerLanguage("c",e)})();/*! `cpp` grammar compiled for Highlight.js 11.9.0 */ +strings:l,keywords:u}}}})();hljs.registerLanguage("c",e)})();/*! `cpp` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,a=e.COMMENT("//","$",{ contains:[{begin:/\\\n/}] }),n="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",i="(?!struct)("+n+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",s={ @@ -373,16 +374,16 @@ begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ -className:"number",variants:[{begin:"\\b(0b[01']+)"},{ -begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +className:"number",variants:[{ +begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)" },{ -begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)" }],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" },contains:[{begin:/\\\n/,relevance:0},e.inherit(c,{className:"string"}),{ -className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},d={ +className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},u={ className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0 -},u=t.optional(r)+e.IDENT_RE+"\\s*\\(",p={ +},d=t.optional(r)+e.IDENT_RE+"\\s*\\(",p={ type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"], keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"], literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"], @@ -391,13 +392,13 @@ _type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","c _hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"] }, begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/)) -},m=[_,l,s,a,e.C_BLOCK_COMMENT_MODE,o,c],g={variants:[{begin:/=/,end:/;/},{ +},m=[_,l,s,a,e.C_BLOCK_COMMENT_MODE,o,c],f={variants:[{begin:/=/,end:/;/},{ begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], keywords:p,contains:m.concat([{begin:/\(/,end:/\)/,keywords:p, -contains:m.concat(["self"]),relevance:0}]),relevance:0},f={className:"function", -begin:"("+i+"[\\*&\\s]+)+"+u,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +contains:m.concat(["self"]),relevance:0}]),relevance:0},g={className:"function", +begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, keywords:p,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:p,relevance:0},{ -begin:u,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{ +begin:d,returnBegin:!0,contains:[u],relevance:0},{begin:/::/,relevance:0},{ begin:/:/,endsWithParent:!0,contains:[c,o]},{relevance:0,match:/,/},{ className:"params",begin:/\(/,end:/\)/,keywords:p,relevance:0, contains:[a,e.C_BLOCK_COMMENT_MODE,c,o,s,{begin:/\(/,end:/\)/,keywords:p, @@ -405,12 +406,12 @@ relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,c,o,s]}] },s,a,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++", aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:p,illegal:"",keywords:p,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:p},{ match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/], className:{1:"keyword",3:"title.class"}}])}}})();hljs.registerLanguage("cpp",e) -})();/*! `csharp` grammar compiled for Highlight.js 11.9.0 */ +})();/*! `csharp` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n={ keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"], @@ -428,8 +429,10 @@ begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) ;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ -illegal:/\n/})];const g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +illegal:/\n/})];const g={variants:[{className:"string", +begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1 +},o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={begin:"<",end:">", +contains:[{beginKeywords:"in out"},a] },_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={ begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"], keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0, @@ -456,9 +459,9 @@ contains:[e.TITLE_MODE,E],relevance:0},{match:/\(\)/},{className:"params", begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0, contains:[g,i,e.C_BLOCK_COMMENT_MODE] },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})() -;hljs.registerLanguage("csharp",e)})();/*! `css` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("csharp",e)})();/*! `css` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" -;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],i=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],r=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],t=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),t=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),o=["accent-color","align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-end-end-radius","border-end-start-radius","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","kerning","justify-content","justify-items","justify-self","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-offset","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse() ;return n=>{const a=n.regex,l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ @@ -475,7 +478,7 @@ begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l.CSS_NUMBER_MODE,{ className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{ className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 },l.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ -begin:":("+r.join("|")+")"},{begin:":(:)?("+t.join("|")+")"}]},l.CSS_VARIABLE,{ +begin:":("+t.join("|")+")"},{begin:":(:)?("+i.join("|")+")"}]},l.CSS_VARIABLE,{ className:"attribute",begin:"\\b("+o.join("|")+")\\b"},{begin:/:/,end:/[;}{]/, contains:[l.BLOCK_COMMENT,l.HEXCOLOR,l.IMPORTANT,l.CSS_NUMBER_MODE,...s,{ begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" @@ -483,10 +486,10 @@ begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" excludeEnd:!0}]},l.FUNCTION_DISPATCH]},{begin:a.lookahead(/@/),end:"[{;]", relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/ },{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ -$pattern:/[a-z-]+/,keyword:"and or not only",attribute:i.join(" ")},contains:[{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:r.join(" ")},contains:[{ begin:/[a-z-]+(?=:)/,className:"attribute"},...s,l.CSS_NUMBER_MODE]}]},{ className:"selector-tag",begin:"\\b("+e.join("|")+")\\b"}]}}})() -;hljs.registerLanguage("css",e)})();/*! `diff` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("css",e)})();/*! `diff` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"Diff", aliases:["patch"],contains:[{className:"meta",relevance:10, match:a.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) @@ -494,20 +497,26 @@ match:a.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^-- begin:a.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, -end:/$/}]}}})();hljs.registerLanguage("diff",e)})();/*! `go` grammar compiled for Highlight.js 11.9.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const n={ +end:/$/}]}}})();hljs.registerLanguage("diff",e)})();/*! `go` grammar compiled for Highlight.js 11.10.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const a={ keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"], type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"], literal:["true","false","iota","nil"], built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"] -};return{name:"Go",aliases:["golang"],keywords:n,illegal:"{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"GraphQL", aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{ keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"], @@ -518,7 +527,7 @@ begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/, end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{ scope:"symbol",begin:a.concat(/[_A-Za-z][_0-9A-Za-z]*/,a.lookahead(/\s*:/)), relevance:0}],illegal:[/[;<']/,/BEGIN/]}}})();hljs.registerLanguage("graphql",e) -})();/*! `ini` grammar compiled for Highlight.js 11.9.0 */ +})();/*! `ini` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={className:"number", relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}] },s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={ @@ -532,7 +541,7 @@ name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/, contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{ begin:n.concat(c,"(\\s*\\.\\s*",c,")*",n.lookahead(/\s*=\s*[^#\s]/)), className:"attr",starts:{end:/$/,contains:[s,l,t,i,r,a]}}]}}})() -;hljs.registerLanguage("ini",e)})();/*! `java` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("ini",e)})();/*! `java` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;var e="[0-9](_*[0-9])*",a=`\\.(${e})`,n="[0-9a-fA-F](_*[0-9a-fA-F])*",s={ className:"number",variants:[{ @@ -545,7 +554,7 @@ begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], relevance:0};function t(e,a,n){return-1===n?"":e.replace(a,(s=>t(e,a,n-1)))} return e=>{ const a=e.regex,n="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",i=n+t("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),r={ -keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"], +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto"], literal:["false","true","null"], type:["char","boolean","long","float","int","byte","short","double"], built_in:["super","this"]},l={className:"meta",begin:"@"+n,contains:[{ @@ -569,7 +578,7 @@ begin:["(?:"+i+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ end:/\)/,keywords:r,relevance:0, contains:[l,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.C_BLOCK_COMMENT_MODE] },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},s,l]}}})() -;hljs.registerLanguage("java",e)})();/*! `javascript` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("java",e)})();/*! `javascript` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],i=[].concat(r,t,s) ;return o=>{const l=o.regex,b=e,d={begin:/<[A-Za-z0-9\\._:-]+/, @@ -589,24 +598,24 @@ begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{ begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{ begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{ begin:"\\b0[0-7]+n?\\b"}],relevance:0},y={className:"subst",begin:"\\$\\{", -end:"\\}",keywords:g,contains:[]},h={begin:"html`",end:"",starts:{end:"`", +end:"\\}",keywords:g,contains:[]},h={begin:".?html`",end:"",starts:{end:"`", returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"xml"}},N={ -begin:"css`",end:"",starts:{end:"`",returnEnd:!1, -contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},_={begin:"gql`",end:"", +begin:".?css`",end:"",starts:{end:"`",returnEnd:!1, +contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},_={begin:".?gql`",end:"", starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y], subLanguage:"graphql"}},f={className:"string",begin:"`",end:"`", -contains:[o.BACKSLASH_ESCAPE,y]},v={className:"comment", +contains:[o.BACKSLASH_ESCAPE,y]},p={className:"comment", variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{ begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag", begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0, excludeBegin:!0,relevance:0},{className:"variable",begin:b+"(?=\\s*(-)|$)", endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}] }),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE] -},p=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,{match:/\$\d+/},A] -;y.contains=p.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(p) -});const S=[].concat(v,y.contains),w=S.concat([{begin:/\(/,end:/\)/,keywords:g, -contains:["self"].concat(S)}]),R={className:"params",begin:/\(/,end:/\)/, -excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},O={variants:[{ +},v=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,{match:/\$\d+/},A] +;y.contains=v.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(v) +});const S=[].concat(p,y.contains),w=S.concat([{begin:/(\s*)\(/,end:/\)/, +keywords:g,contains:["self"].concat(S)}]),R={className:"params",begin:/(\s*)\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},O={variants:[{ match:[/class/,/\s+/,b,/\s+/,/extends/,/\s+/,l.concat(b,"(",l.concat(/\./,b),")*")], scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{ match:[/class/,/\s+/,b],scope:{1:"keyword",3:"title.class"}}]},k={relevance:0, @@ -615,7 +624,8 @@ className:"title.class",keywords:{_:[...t,...s]}},I={variants:[{ match:[/function/,/\s+/,b,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R], illegal:/%/},x={ -match:l.concat(/\b/,(T=[...r,"super","import"],l.concat("(?!",T.join("|"),")")),b,l.lookahead(/\(/)), +match:l.concat(/\b/,(T=[...r,"super","import"].map((e=>e+"\\s*\\(")), +l.concat("(?!",T.join("|"),")")),b,l.lookahead(/\s*\(/)), className:"title.function",relevance:0};var T;const C={ begin:l.concat(/\./,l.lookahead(l.concat(b,/(?![0-9A-Za-z$_(])/))),end:b, excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},M={ @@ -629,15 +639,15 @@ PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/, contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ label:"use_strict",className:"meta",relevance:10, begin:/^\s*['"]use (strict|asm)['"]/ -},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,v,{match:/\$\d+/},A,k,{ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,p,{match:/\$\d+/},A,k,{ className:"attr",begin:b+l.lookahead(":"),relevance:0},$,{ begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", -keywords:"return throw case",relevance:0,contains:[v,o.REGEXP_MODE,{ +keywords:"return throw case",relevance:0,contains:[p,o.REGEXP_MODE,{ className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{ className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ -className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, -excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0},{match:/\s+/, -relevance:0},{variants:[{begin:"<>",end:""},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0 +},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{ match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:d.begin, "on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{ begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},I,{ @@ -648,13 +658,14 @@ className:"title.function"})]},{match:/\.\.\./,relevance:0},C,{match:"\\$"+b, relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, contains:[R]},x,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, className:"variable.constant"},O,M,{match:/\$[(.]/}]}}})() -;hljs.registerLanguage("javascript",e)})();/*! `json` grammar compiled for Highlight.js 11.9.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],n={ -scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",keywords:{ -literal:a},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/, -relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0 -},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], -illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `kotlin` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("javascript",e)})();/*! `json` grammar compiled for Highlight.js 11.10.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],s={ +scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",aliases:["jsonc"], +keywords:{literal:a},contains:[{className:"attr", +begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/, +className:"punctuation",relevance:0 +},e.QUOTE_STRING_MODE,s,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], +illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `kotlin` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;var e="[0-9](_*[0-9])*",n=`\\.(${e})`,a="[0-9a-fA-F](_*[0-9a-fA-F])*",i={ className:"number",variants:[{ @@ -699,9 +710,9 @@ beginKeywords:"public protected internal private constructor" },e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/, excludeBegin:!0,returnEnd:!0},l,c]},r,{className:"meta",begin:"^#!/usr/bin/env", -end:"$",illegal:"\n"},o]}}})();hljs.registerLanguage("kotlin",e)})();/*! `less` grammar compiled for Highlight.js 11.9.0 */ +end:"$",illegal:"\n"},o]}}})();hljs.registerLanguage("kotlin",e)})();/*! `less` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" -;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],r=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),n=r.concat(i) +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),r=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),o=["accent-color","align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-end-end-radius","border-end-start-radius","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","kerning","justify-content","justify-items","justify-self","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-offset","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse(),n=r.concat(i).sort().reverse() ;return a=>{const l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ @@ -713,25 +724,25 @@ begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|ra relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/} }))(a),s=n,d="[\\w-]+",c="("+d+"|@\\{"+d+"\\})",g=[],b=[],m=e=>({ className:"string",begin:"~?"+e+".*?"+e}),p=(e,t,r)=>({className:e,begin:t, -relevance:r}),u={$pattern:/[a-z-]+/,keyword:"and or not only", -attribute:t.join(" ")},h={begin:"\\(",end:"\\)",contains:b,keywords:u, +relevance:r}),f={$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},u={begin:"\\(",end:"\\)",contains:b,keywords:f, relevance:0} ;b.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,m("'"),m('"'),l.CSS_NUMBER_MODE,{ begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]", excludeEnd:!0} -},l.HEXCOLOR,h,p("variable","@@?"+d,10),p("variable","@\\{"+d+"\\}"),p("built_in","~?`[^`]*?`"),{ +},l.HEXCOLOR,u,p("variable","@@?"+d,10),p("variable","@\\{"+d+"\\}"),p("built_in","~?`[^`]*?`"),{ className:"attribute",begin:d+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0 -},l.IMPORTANT,{beginKeywords:"and not"},l.FUNCTION_DISPATCH);const f=b.concat({ +},l.IMPORTANT,{beginKeywords:"and not"},l.FUNCTION_DISPATCH);const h=b.concat({ begin:/\{/,end:/\}/,contains:g}),k={beginKeywords:"when",endsWithParent:!0, contains:[{beginKeywords:"and not"}].concat(b)},v={begin:c+"\\s*:", returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/ },l.CSS_VARIABLE,{className:"attribute",begin:"\\b("+o.join("|")+")\\b", end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:b}}] -},w={className:"keyword", +},y={className:"keyword", begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", -starts:{end:"[;{}]",keywords:u,returnEnd:!0,contains:b,relevance:0}},y={ +starts:{end:"[;{}]",keywords:f,returnEnd:!0,contains:b,relevance:0}},w={ className:"variable",variants:[{begin:"@"+d+"\\s*:",relevance:15},{begin:"@"+d -}],starts:{end:"[;}]",returnEnd:!0,contains:f}},x={variants:[{ +}],starts:{end:"[;}]",returnEnd:!0,contains:h}},x={variants:[{ begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:c,end:/\{/}],returnBegin:!0, returnEnd:!0,illegal:"[<='$\"]",relevance:0, contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,k,p("keyword","all\\b"),p("variable","@\\{"+d+"\\}"),{ @@ -739,11 +750,11 @@ begin:"\\b("+e.join("|")+")\\b",className:"selector-tag" },l.CSS_NUMBER_MODE,p("selector-tag",c,0),p("selector-id","#"+c),p("selector-class","\\."+c,0),p("selector-tag","&",0),l.ATTRIBUTE_SELECTOR_MODE,{ className:"selector-pseudo",begin:":("+r.join("|")+")"},{ className:"selector-pseudo",begin:":(:)?("+i.join("|")+")"},{begin:/\(/, -end:/\)/,relevance:0,contains:f},{begin:"!important"},l.FUNCTION_DISPATCH]},_={ +end:/\)/,relevance:0,contains:h},{begin:"!important"},l.FUNCTION_DISPATCH]},_={ begin:d+":(:)?"+`(${s.join("|")})`,returnBegin:!0,contains:[x]} -;return g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,w,y,_,v,x,k,l.FUNCTION_DISPATCH), +;return g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,y,w,_,v,x,k,l.FUNCTION_DISPATCH), {name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:g}}})() -;hljs.registerLanguage("less",e)})();/*! `lua` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("less",e)})();/*! `lua` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const t="\\[=*\\[",a="\\]=*\\]",n={ begin:t,end:a,contains:["self"] },o=[e.COMMENT("--(?!"+t+")","$"),e.COMMENT("--"+t,a,{contains:[n],relevance:10 @@ -757,7 +768,7 @@ begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params", begin:"\\(",endsWithParent:!0,contains:o}].concat(o) },e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", begin:t,end:a,contains:[n],relevance:5}])}}})();hljs.registerLanguage("lua",e) -})();/*! `makefile` grammar compiled for Highlight.js 11.9.0 */ +})();/*! `makefile` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const i={className:"variable", variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, relevance:0},{ @@ -799,8 +810,9 @@ begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ -className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() -;hljs.registerLanguage("markdown",e)})();/*! `objectivec` grammar compiled for Highlight.js 11.9.0 */ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},{scope:"literal", +match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}})() +;hljs.registerLanguage("markdown",e)})();/*! `objectivec` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={ $pattern:n,keyword:["@interface","@class","@protocol","@implementation"]} ;return{name:"Objective-C", @@ -822,42 +834,47 @@ className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n" },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", begin:"("+_.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:_, contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, -relevance:0}]}}})();hljs.registerLanguage("objectivec",e)})();/*! `perl` grammar compiled for Highlight.js 11.9.0 */ +relevance:0}]}}})();hljs.registerLanguage("objectivec",e)})();/*! `perl` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ -const n=e.regex,t=/[dualxmsipngr]{0,12}/,r={$pattern:/[\w.]+/, -keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" -},s={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:r},i={begin:/->\{/, -end:/\}/},a={variants:[{begin:/\$\d/},{ -begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") -},{begin:/[$%@][^\s\w{]/,relevance:0}] -},c=[e.BACKSLASH_ESCAPE,s,a],o=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],g=(e,r,s="\\1")=>{ -const i="\\1"===s?s:n.concat(s,r) -;return n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,t) -},l=(e,r,s)=>n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,s,t),d=[a,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ -endsWithParent:!0}),i,{className:"string",contains:c,variants:[{ +const n=e.regex,t=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot class close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl field fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map method mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},r={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},i={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},c={scope:"variable", +variants:[{begin:/\$\d/},{ +begin:n.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[i]},o={ +className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{ +match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{ +match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{ +match:/\b0b[0-1][0-1_]*\b/}],relevance:0 +},l=[e.BACKSLASH_ESCAPE,r,c],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],d=(e,s,r="\\1")=>{ +const a="\\1"===r?r:n.concat(r,s) +;return n.concat(n.concat("(?:",e,")"),s,/(?:\\.|[^\\\/])*?/,a,/(?:\\.|[^\\\/])*?/,r,t) +},m=(e,s,r)=>n.concat(n.concat("(?:",e,")"),s,/(?:\\.|[^\\\/])*?/,r,t),p=[c,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:l,variants:[{ begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[", end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{ begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">", relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'", contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`", contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{ -begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number", -begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", -relevance:0},{ +begin:"-?\\w+\\s*=>",relevance:0}]},o,{ begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*", keywords:"split return print reverse grep",relevance:0, contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{ -begin:g("s|tr|y",n.either(...o,{capture:!0}))},{begin:g("s|tr|y","\\(","\\)")},{ -begin:g("s|tr|y","\\[","\\]")},{begin:g("s|tr|y","\\{","\\}")}],relevance:2},{ +begin:d("s|tr|y",n.either(...g,{capture:!0}))},{begin:d("s|tr|y","\\(","\\)")},{ +begin:d("s|tr|y","\\[","\\]")},{begin:d("s|tr|y","\\{","\\}")}],relevance:2},{ className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ -begin:l("(?:m|qr)?",/\//,/\//)},{begin:l("m|qr",n.either(...o,{capture:!0 -}),/\1/)},{begin:l("m|qr",/\(/,/\)/)},{begin:l("m|qr",/\[/,/\]/)},{ -begin:l("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub", -end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{ -begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$", -subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}] -}];return s.contains=d,i.contains=d,{name:"Perl",aliases:["pl","pm"],keywords:r, -contains:d}}})();hljs.registerLanguage("perl",e)})();/*! `php` grammar compiled for Highlight.js 11.9.0 */ +begin:m("(?:m|qr)?",/\//,/\//)},{begin:m("m|qr",n.either(...g,{capture:!0 +}),/\1/)},{begin:m("m|qr",/\(/,/\)/)},{begin:m("m|qr",/\[/,/\]/)},{ +begin:m("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method", +end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,i] +},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5, +contains:[e.TITLE_MODE,i,o]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$", +end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$", +className:"comment"}]}];return r.contains=p,a.contains=p,{name:"Perl", +aliases:["pl","pm"],keywords:s,contains:p}}})();hljs.registerLanguage("perl",e) +})();/*! `php` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const t=e.regex,a=/(?![A-Za-z0-9])(?![$])/,r=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,a),n=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,a),o={ scope:"variable",match:"\\$+"+r},c={scope:"subst",variants:[{begin:/\$\w+/},{ @@ -914,61 +931,62 @@ beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/, contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{ beginKeywords:"use",relevance:0,end:";",contains:[{ match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},l,d]} -}})();hljs.registerLanguage("php",e)})();/*! `php-template` grammar compiled for Highlight.js 11.9.0 */ +}})();hljs.registerLanguage("php",e)})();/*! `php-template` grammar compiled for Highlight.js 11.10.0 */ (()=>{var n=(()=>{"use strict";return n=>({name:"PHP template", subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php", contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{ begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null, className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{ illegal:null,className:null,contains:null,skip:!0})]}]})})() -;hljs.registerLanguage("php-template",n)})();/*! `plaintext` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("php-template",n)})();/*! `plaintext` grammar compiled for Highlight.js 11.10.0 */ (()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", aliases:["text","txt"],disableAutodetect:!0})})() -;hljs.registerLanguage("plaintext",t)})();/*! `python` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("plaintext",t)})();/*! `python` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ -const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={ -$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i, +const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],t={ +$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s, built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] -},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, -end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={ +},i={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, +end:/\}/,keywords:t,illegal:/#/},l={begin:/\{\{/,relevance:0},o={ className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, -end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,i,l,r]},{begin:/([uU]|[rR])'/,end:/'/, relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={ +},b="[0-9](_?[0-9])*",c=`(\\b(${b}))?\\.(${b})|\\b(${b})\\.`,d="\\b|"+s.join("|"),g={ className:"number",relevance:0,variants:[{ -begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ +begin:`(\\b(${b})|(${c}))[eE][+-]?(${b})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{ begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})` -},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})` -}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s, +},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${b})[jJ](?=${d})` +}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:t, contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={ className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, -end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s, -contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{ -name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s, -illegal:/(<\/|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if", -relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{ -1:"keyword",3:"title.function"},contains:[m]},{variants:[{ +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t, +contains:["self",i,g,o,e.HASH_COMMENT_MODE]}]};return r.contains=[o,g,i],{ +name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:t, +illegal:/(<\/|\?)|=>/,contains:[i,g,{scope:"variable.language",match:/\bself\b/ +},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword" +},o,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{1:"keyword", +3:"title.function"},contains:[m]},{variants:[{ match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}], scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ -className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})() -;hljs.registerLanguage("python",e)})();/*! `python-repl` grammar compiled for Highlight.js 11.9.0 */ +className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,o]}]}}})() +;hljs.registerLanguage("python",e)})();/*! `python-repl` grammar compiled for Highlight.js 11.10.0 */ (()=>{var a=(()=>{"use strict";return a=>({aliases:["pycon"],contains:[{ className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"} },variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]})})() -;hljs.registerLanguage("python-repl",a)})();/*! `r` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("python-repl",a)})();/*! `r` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,i=a.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),s=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,t=a.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/) ;return{name:"R",keywords:{$pattern:n, @@ -993,7 +1011,7 @@ match:[/%[^%]*%/,i]},{scope:{1:"punctuation",2:"number"},match:[t,i]},{scope:{ 2:"number"},match:[/[^a-zA-Z0-9._]|^/,i]}]},{scope:{3:"operator"}, match:[n,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:s},{ match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:t},{begin:"`",end:"`", -contains:[{begin:/\\./}]}]}}})();hljs.registerLanguage("r",e)})();/*! `ruby` grammar compiled for Highlight.js 11.9.0 */ +contains:[{begin:/\\./}]}]}}})();hljs.registerLanguage("r",e)})();/*! `ruby` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(s,/(::\w+)*/),t={ "variable.constant":["__FILE__","__LINE__","__ENCODING__"], @@ -1046,36 +1064,35 @@ begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+) starts:{end:"$",keywords:t,contains:u}}];return b.unshift(r),{name:"Ruby", aliases:["rb","gemspec","podspec","thor","irb"],keywords:t,illegal:/\/\*/, contains:[e.SHEBANG({binary:"ruby"})].concat(m).concat(b).concat(u)}}})() -;hljs.registerLanguage("ruby",e)})();/*! `rust` grammar compiled for Highlight.js 11.9.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,n={ +;hljs.registerLanguage("ruby",e)})();/*! `rust` grammar compiled for Highlight.js 11.10.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t=e.regex,n=/(r#)?/,a=t.concat(n,e.UNDERSCORE_IDENT_RE),i=t.concat(n,e.IDENT_RE),r={ className:"title.function.invoke",relevance:0, -begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,e.IDENT_RE,t.lookahead(/\s*\(/)) -},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],r=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"] -;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:r, -keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"], -literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:""},n]}}})() -;hljs.registerLanguage("rust",e)})();/*! `scss` grammar compiled for Highlight.js 11.9.0 */ +keyword:"Self",built_in:l,type:o}},{className:"punctuation",begin:"->"},r]}}})() +;hljs.registerLanguage("rust",e)})();/*! `scss` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" -;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],t=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),t=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),o=["accent-color","align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-end-end-radius","border-end-start-radius","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","kerning","justify-content","justify-items","justify-self","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-offset","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse() ;return n=>{const a=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ @@ -1085,7 +1102,7 @@ contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ scope:"number", begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/} -}))(n),l=t,s=i,d="@[a-z-]+",c={className:"variable", +}))(n),l=i,s=t,d="@[a-z-]+",c={className:"variable", begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS", case_insensitive:!0,illegal:"[=/|']", contains:[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,a.CSS_NUMBER_MODE,{ @@ -1105,11 +1122,11 @@ begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/, keyword:"and or not only",attribute:r.join(" ")},contains:[{begin:d, className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute" },c,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,a.HEXCOLOR,a.CSS_NUMBER_MODE] -},a.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})();/*! `shell` grammar compiled for Highlight.js 11.9.0 */ +},a.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})();/*! `shell` grammar compiled for Highlight.js 11.10.0 */ (()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", aliases:["console","shellsession"],contains:[{className:"meta.prompt", begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, -subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `sql` grammar compiled for Highlight.js 11.9.0 */ +subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `sql` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const r=e.regex,t=e.COMMENT("--","$"),n=["true","false","unknown"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],i=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=i,c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!i.includes(e))),l={ begin:r.concat(/\b/,r.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} @@ -1125,71 +1142,72 @@ begin:r.either("double precision","large object","with timezone","without timezo variants:[{begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/, contains:[{begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{ className:"operator",begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/, -relevance:0}]}}})();hljs.registerLanguage("sql",e)})();/*! `swift` grammar compiled for Highlight.js 11.9.0 */ +relevance:0}]}}})();hljs.registerLanguage("sql",e)})();/*! `swift` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";function e(e){ return e?"string"==typeof e?e:e.source:null}function n(e){return t("(?=",e,")")} function t(...n){return n.map((n=>e(n))).join("")}function a(...n){const t=(e=>{ const n=e[e.length-1] ;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} })(n);return"("+(t.capture?"":"?:")+n.map((n=>e(n))).join("|")+")"} -const i=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),s=["Protocol","Type"].map(i),c=["init","self"].map(i),u=["Any","Self"],r=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],o=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],d=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),F=a(d,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(d,F,"*"),h=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),f=a(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w=t(h,f,"*"),g=t(/[A-Z]/,f,"*"),y=["attached","autoclosure",t(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,w,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],E=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +const i=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),s=["Protocol","Type"].map(i),c=["init","self"].map(i),u=["Any","Self"],o=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],r=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],d=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),F=a(d,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(d,F,"*"),h=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),f=a(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w=t(h,f,"*"),g=t(/[A-Z]/,f,"*"),y=["attached","autoclosure",t(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,w,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],v=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] ;return e=>{const d={match:/\s+/,relevance:0},h=e.COMMENT("/\\*","\\*/",{ -contains:["self"]}),A=[e.C_LINE_COMMENT_MODE,h],v={match:[/\./,a(...s,...c)], -className:{2:"keyword"}},C={match:t(/\./,a(...r)),relevance:0 -},N=r.filter((e=>"string"==typeof e)).concat(["_|0"]),k={variants:[{ +contains:["self"]}),E=[e.C_LINE_COMMENT_MODE,h],A={match:[/\./,a(...s,...c)], +className:{2:"keyword"}},C={match:t(/\./,a(...o)),relevance:0 +},k=o.filter((e=>"string"==typeof e)).concat(["_|0"]),N={variants:[{ className:"keyword", -match:a(...r.filter((e=>"string"!=typeof e)).concat(u).map(i),...c)}]},B={ -$pattern:a(/\b\w+/,/#\w+/),keyword:N.concat(m),literal:o},S=[v,C,k],D=[{ +match:a(...o.filter((e=>"string"!=typeof e)).concat(u).map(i),...c)}]},S={ +$pattern:a(/\b\w+/,/#\w+/),keyword:k.concat(m),literal:r},B=[A,C,N],D=[{ match:t(/\./,a(...p)),relevance:0},{className:"built_in", match:t(/\b/,a(...p),/(?=\()/)}],_={match:/->/,relevance:0},M=[_,{ className:"operator",relevance:0,variants:[{match:b},{match:`\\.(\\.|${F})+`}] -}],x="([0-9]_*)+",$="([0-9a-fA-F]_*)+",L={className:"number",relevance:0, +}],x="([0-9]_*)+",L="([0-9a-fA-F]_*)+",$={className:"number",relevance:0, variants:[{match:`\\b(${x})(\\.(${x}))?([eE][+-]?(${x}))?\\b`},{ -match:`\\b0x(${$})(\\.(${$}))?([pP][+-]?(${x}))?\\b`},{match:/\b0o([0-7]_*)+\b/ +match:`\\b0x(${L})(\\.(${L}))?([pP][+-]?(${x}))?\\b`},{match:/\b0o([0-7]_*)+\b/ },{match:/\b0b([01]_*)+\b/}]},I=(e="")=>({className:"subst",variants:[{ match:t(/\\/,e,/[0\\tnr"']/)},{match:t(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}] }),O=(e="")=>({className:"subst",match:t(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/) }),P=(e="")=>({className:"subst",label:"interpol",begin:t(/\\/,e,/\(/),end:/\)/ -}),T=(e="")=>({begin:t(e,/"""/),end:t(/"""/,e),contains:[I(e),O(e),P(e)] -}),K=(e="")=>({begin:t(e,/"/),end:t(/"/,e),contains:[I(e),P(e)]}),j={ +}),j=(e="")=>({begin:t(e,/"""/),end:t(/"""/,e),contains:[I(e),O(e),P(e)] +}),K=(e="")=>({begin:t(e,/"/),end:t(/"/,e),contains:[I(e),P(e)]}),T={ className:"string", -variants:[T(),T("#"),T("##"),T("###"),K(),K("#"),K("##"),K("###")] -},z=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0, -contains:[e.BACKSLASH_ESCAPE]}],q={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//, -contains:z},U=e=>{const n=t(e,/\//),a=t(/\//,e);return{begin:n,end:a, -contains:[...z,{scope:"comment",begin:`#(?!.*${a})`,end:/$/}]}},Z={ -scope:"regexp",variants:[U("###"),U("##"),U("#"),q]},V={match:t(/`/,w,/`/) -},W=[V,{className:"variable",match:/\$\d+/},{className:"variable", +variants:[j(),j("#"),j("##"),j("###"),K(),K("#"),K("##"),K("###")] +},q=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0, +contains:[e.BACKSLASH_ESCAPE]}],U={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//, +contains:q},z=e=>{const n=t(e,/\//),a=t(/\//,e);return{begin:n,end:a, +contains:[...q,{scope:"comment",begin:`#(?!.*${a})`,end:/$/}]}},V={ +scope:"regexp",variants:[z("###"),z("##"),z("#"),U]},W={match:t(/`/,w,/`/) +},Z=[W,{className:"variable",match:/\$\d+/},{className:"variable", match:`\\$${f}+`}],G=[{match:/(@|#(un)?)available/,scope:"keyword",starts:{ -contains:[{begin:/\(/,end:/\)/,keywords:E,contains:[...M,L,j]}]}},{ -scope:"keyword",match:t(/@/,a(...y))},{scope:"meta",match:t(/@/,w)}],H={ -match:n(/\b[A-Z]/),relevance:0,contains:[{className:"type", +contains:[{begin:/\(/,end:/\)/,keywords:v,contains:[...M,$,T]}]}},{ +scope:"keyword",match:t(/@/,a(...y),n(a(/\(/,/\s+/)))},{scope:"meta", +match:t(/@/,w)}],H={match:n(/\b[A-Z]/),relevance:0,contains:[{className:"type", match:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,"+") },{className:"type",match:g,relevance:0},{match:/[?!]+/,relevance:0},{ match:/\.\.\./,relevance:0},{match:t(/\s+&\s+/,n(g)),relevance:0}]},R={ -begin://,keywords:B,contains:[...A,...S,...G,_,H]};H.contains.push(R) -;const X={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",{ +begin://,keywords:S,contains:[...E,...B,...G,_,H]};H.contains.push(R) +;const X={begin:/\(/,end:/\)/,relevance:0,keywords:S,contains:["self",{ match:t(w,/\s*:/),keywords:"_|0",relevance:0 -},...A,Z,...S,...D,...M,L,j,...W,...G,H]},J={begin://, -keywords:"repeat each",contains:[...A,H]},Q={begin:/\(/,end:/\)/,keywords:B, +},...E,V,...B,...D,...M,$,T,...Z,...G,H]},J={begin://, +keywords:"repeat each",contains:[...E,H]},Q={begin:/\(/,end:/\)/,keywords:S, contains:[{begin:a(n(t(w,/\s*:/)),n(t(w,/\s+/,w,/\s*:/))),end:/:/,relevance:0, contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:w}] -},...A,...S,...M,L,j,...G,H,X],endsParent:!0,illegal:/["']/},Y={ -match:[/(func|macro)/,/\s+/,a(V.match,w,b)],className:{1:"keyword", +},...E,...B,...M,$,T,...G,H,X],endsParent:!0,illegal:/["']/},Y={ +match:[/(func|macro)/,/\s+/,a(W.match,w,b)],className:{1:"keyword", 3:"title.function"},contains:[J,Q,d],illegal:[/\[/,/%/]},ee={ match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, contains:[J,Q,d],illegal:/\[|%/},ne={match:[/operator/,/\s+/,b],className:{ 1:"keyword",3:"title"}},te={begin:[/precedencegroup/,/\s+/,g],className:{ -1:"keyword",3:"title"},contains:[H],keywords:[...l,...o],end:/}/} -;for(const e of j.variants){const n=e.contains.find((e=>"interpol"===e.label)) -;n.keywords=B;const t=[...S,...D,...M,L,j,...W];n.contains=[...t,{begin:/\(/, -end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:B, -contains:[...A,Y,ee,{beginKeywords:"struct protocol class extension enum actor", -end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{ -className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...S] -},ne,te,{beginKeywords:"import",end:/$/,contains:[...A],relevance:0 -},Z,...S,...D,...M,L,j,...W,...G,H,X]}}})();hljs.registerLanguage("swift",e) -})();/*! `twig` grammar compiled for Highlight.js 11.9.0 */ +1:"keyword",3:"title"},contains:[H],keywords:[...l,...r],end:/}/},ae={ +begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,w,/\s*/], +beginScope:{1:"keyword",3:"title.class"},keywords:S,contains:[J,...B,{begin:/:/, +end:/\{/,keywords:S,contains:[{scope:"title.class.inherited",match:g},...B], +relevance:0}]};for(const e of T.variants){ +const n=e.contains.find((e=>"interpol"===e.label));n.keywords=S +;const t=[...B,...D,...M,$,T,...Z];n.contains=[...t,{begin:/\(/,end:/\)/, +contains:["self",...t]}]}return{name:"Swift",keywords:S, +contains:[...E,Y,ee,ae,ne,te,{beginKeywords:"import",end:/$/,contains:[...E], +relevance:0},V,...B,...D,...M,$,T,...Z,...G,H,X]}}})() +;hljs.registerLanguage("swift",e)})();/*! `twig` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,t=["absolute_url","asset|0","asset_version","attribute","block","constant","controller|0","country_timezones","csrf_token","cycle","date","dump","expression","form|0","form_end","form_errors","form_help","form_label","form_rest","form_row","form_start","form_widget","html_classes","include","is_granted","logout_path","logout_url","max","min","parent","path|0","random","range","relative_path","render","render_esi","source","template_from_string","url|0"] ;let r=["apply","autoescape","block","cache","deprecated","do","embed","extends","filter","flush","for","form_theme","from","if","import","include","macro","sandbox","set","stopwatch","trans","trans_default_domain","transchoice","use","verbatim","with"] @@ -1206,7 +1224,7 @@ end:/%\}/,keywords:"in",contains:[m,c,n,o]}),l=i(r,{relevance:2 }),_=i([/[a-z_]+/],{relevance:1});return{name:"Twig",aliases:["craftcms"], case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#\}/),l,_,{ className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:["self",m,c,n,o] -}]}}})();hljs.registerLanguage("twig",e)})();/*! `typescript` grammar compiled for Highlight.js 11.9.0 */ +}]}}})();hljs.registerLanguage("twig",e)})();/*! `typescript` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],i=[].concat(r,t,s) ;function o(o){const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/, @@ -1218,42 +1236,43 @@ const a=e[0].length+e.index,t=e.input[a] ;const r=e.input.substring(a) ;((s=r.match(/^\s*=/))||(s=r.match(/^\s+extends\s+/))&&0===s.index)&&n.ignoreMatch() }},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c -},u="[0-9](_?[0-9])*",m=`\\.(${u})`,E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",y={ +},u="[0-9](_?[0-9])*",m=`\\.(${u})`,E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",A={ className:"number",variants:[{ begin:`(\\b(${E})((${m})|\\.)?|(${m}))[eE][+-]?(${u})\\b`},{ begin:`\\b(${E})\\b((${m})\\b|\\.)?|(${m})\\b`},{ begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{ begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{ begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{ -begin:"\\b0[0-7]+n?\\b"}],relevance:0},A={className:"subst",begin:"\\$\\{", -end:"\\}",keywords:g,contains:[]},p={begin:"html`",end:"",starts:{end:"`", -returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"xml"}},N={ -begin:"css`",end:"",starts:{end:"`",returnEnd:!1, -contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"css"}},f={begin:"gql`",end:"", -starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A], +begin:"\\b0[0-7]+n?\\b"}],relevance:0},y={className:"subst",begin:"\\$\\{", +end:"\\}",keywords:g,contains:[]},p={begin:".?html`",end:"",starts:{end:"`", +returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"xml"}},N={ +begin:".?css`",end:"",starts:{end:"`",returnEnd:!1, +contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},f={begin:".?gql`",end:"", +starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y], subLanguage:"graphql"}},_={className:"string",begin:"`",end:"`", -contains:[o.BACKSLASH_ESCAPE,A]},h={className:"comment", +contains:[o.BACKSLASH_ESCAPE,y]},h={className:"comment", variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{ begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag", begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0, excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)", endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}] }),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE] -},S=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,{match:/\$\d+/},y] -;A.contains=S.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(S) -});const v=[].concat(h,A.contains),w=v.concat([{begin:/\(/,end:/\)/,keywords:g, -contains:["self"].concat(v)}]),R={className:"params",begin:/\(/,end:/\)/, -excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},x={variants:[{ +},S=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,{match:/\$\d+/},A] +;y.contains=S.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(S) +});const v=[].concat(h,y.contains),w=v.concat([{begin:/(\s*)\(/,end:/\)/, +keywords:g,contains:["self"].concat(v)}]),R={className:"params",begin:/(\s*)\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},k={variants:[{ match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,l.concat(d,"(",l.concat(/\./,d),")*")], scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{ -match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},k={relevance:0, +match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},x={relevance:0, match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/), className:"title.class",keywords:{_:[...t,...s]}},O={variants:[{ match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R], -illegal:/%/},C={ -match:l.concat(/\b/,(I=[...r,"super","import"],l.concat("(?!",I.join("|"),")")),d,l.lookahead(/\(/)), -className:"title.function",relevance:0};var I;const T={ +illegal:/%/},I={ +match:l.concat(/\b/,(C=[...r,"super","import"].map((e=>e+"\\s*\\(")), +l.concat("(?!",C.join("|"),")")),d,l.lookahead(/\s*\(/)), +className:"title.function",relevance:0};var C;const T={ begin:l.concat(/\./,l.lookahead(l.concat(d,/(?![0-9A-Za-z$_(])/))),end:d, excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},M={ match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"}, @@ -1262,19 +1281,19 @@ contains:[{begin:/\(\)/},R] match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(B)], keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]} ;return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{ -PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/, +PARAMS_CONTAINS:w,CLASS_REFERENCE:x},illegal:/#(?![$_A-z])/, contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ label:"use_strict",className:"meta",relevance:10, begin:/^\s*['"]use (strict|asm)['"]/ -},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,h,{match:/\$\d+/},y,k,{ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,h,{match:/\$\d+/},A,x,{ className:"attr",begin:d+l.lookahead(":"),relevance:0},$,{ begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", keywords:"return throw case",relevance:0,contains:[h,o.REGEXP_MODE,{ className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{ className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ -className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, -excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0},{match:/\s+/, -relevance:0},{variants:[{begin:"<>",end:""},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0 +},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{ match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin, "on:begin":b.isTrulyOpeningTag,end:b.end}],subLanguage:"xml",contains:[{ begin:b.begin,end:b.end,skip:!0,contains:["self"]}]}]},O,{ @@ -1283,24 +1302,26 @@ begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[ returnBegin:!0,label:"func.def",contains:[R,o.inherit(o.TITLE_MODE,{begin:d, className:"title.function"})]},{match:/\.\.\./,relevance:0},T,{match:"\\$"+d, relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, -contains:[R]},C,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, -className:"variable.constant"},x,M,{match:/\$[(.]/}]}}return t=>{ +contains:[R]},I,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},k,M,{match:/\$[(.]/}]}}return t=>{ const s=o(t),r=e,l=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],d={ -beginKeywords:"namespace",end:/\{/,excludeEnd:!0, -contains:[s.exports.CLASS_REFERENCE]},b={beginKeywords:"interface",end:/\{/, -excludeEnd:!0,keywords:{keyword:"interface extends",built_in:l}, -contains:[s.exports.CLASS_REFERENCE]},g={$pattern:e, -keyword:n.concat(["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"]), +begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"} +},b={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{ +keyword:"interface extends",built_in:l},contains:[s.exports.CLASS_REFERENCE] +},g={$pattern:e, +keyword:n.concat(["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"]), literal:a,built_in:i.concat(l),"variable.language":c},u={className:"meta", begin:"@"+r},m=(e,n,a)=>{const t=e.contains.findIndex((e=>e.label===n)) ;if(-1===t)throw Error("can not find mode to replace");e.contains.splice(t,1,a)} -;return Object.assign(s.keywords,g), -s.exports.PARAMS_CONTAINS.push(u),s.contains=s.contains.concat([u,d,b]), +;Object.assign(s.keywords,g),s.exports.PARAMS_CONTAINS.push(u) +;const E=s.contains.find((e=>"attr"===e.className)) +;return s.exports.PARAMS_CONTAINS.push([s.exports.CLASS_REFERENCE,E]), +s.contains=s.contains.concat([u,d,b]), m(s,"shebang",t.SHEBANG()),m(s,"use_strict",{className:"meta",relevance:10, begin:/^\s*['"]use strict['"]/ }),s.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(s,{ name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),s}})() -;hljs.registerLanguage("typescript",e)})();/*! `vbnet` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("typescript",e)})();/*! `vbnet` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,s=/\d{1,2}(:\d{1,2}){1,2}/,r={ className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{ @@ -1324,7 +1345,7 @@ className:"label",begin:/^\w+:/},l,o,{className:"meta", begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, end:/$/,keywords:{ keyword:"const disable else elseif enable end externalsource if region then"}, -contains:[o]}]}}})();hljs.registerLanguage("vbnet",e)})();/*! `wasm` grammar compiled for Highlight.js 11.9.0 */ +contains:[o]}]}}})();hljs.registerLanguage("vbnet",e)})();/*! `wasm` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{e.regex;const a=e.COMMENT(/\(;/,/;\)/) ;return a.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/, keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"] @@ -1337,7 +1358,7 @@ className:"type"},{className:"keyword", match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/ },{className:"number",relevance:0, match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/ -}]}}})();hljs.registerLanguage("wasm",e)})();/*! `xml` grammar compiled for Highlight.js 11.9.0 */ +}]}}})();hljs.registerLanguage("wasm",e)})();/*! `xml` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, @@ -1365,7 +1386,7 @@ begin:a.concat(//,/>/,/\s/)))), end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:r}]},{ className:"tag",begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{ className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}} -})();hljs.registerLanguage("xml",e)})();/*! `yaml` grammar compiled for Highlight.js 11.9.0 */ +})();hljs.registerLanguage("xml",e)})();/*! `yaml` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={ className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ @@ -1375,8 +1396,8 @@ variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={ end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\{/, end:/\}/,contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]", contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{ -begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ -begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", +begin:/\w[\w :()\./-]*:(?=[ \t]|$)/},{begin:/"\w[\w :()\./-]*":(?=[ \t]|$)/},{ +begin:/'\w[\w :()\./-]*':(?=[ \t]|$)/}]},{className:"meta",begin:"^---\\s*$", relevance:10},{className:"string", begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, diff --git a/modules/highlighter/highlighter.php b/modules/highlighter/highlighter.php index 9ad5e74..e88337f 100644 --- a/modules/highlighter/highlighter.php +++ b/modules/highlighter/highlighter.php @@ -1,6 +1,7 @@ set( @@ -9,22 +10,28 @@ ); } - public static function __uninstall(): void { + public static function __uninstall( + ): void { Config::current()->remove("module_highlighter"); } - public function scripts($scripts): array { + public function scripts( + $scripts + ): array { $scripts[] = Config::current()->chyrp_url. "/modules/highlighter/highlight.min.js"; return $scripts; } - public function javascript(): void { + public function javascript( + ): void { include MODULES_DIR.DIR."highlighter".DIR."javascript.php"; } - public function stylesheets($stylesheets): array { + public function stylesheets( + $stylesheets + ): array { $config = Config::current(); $stylesheet = $config->module_highlighter["stylesheet"]; @@ -35,7 +42,9 @@ return $stylesheets; } - public function admin_highlighter_settings($admin): void { + public function admin_highlighter_settings( + $admin + ): void { $config = Config::current(); if (!Visitor::current()->group->can("change_settings")) @@ -74,7 +83,9 @@ ); } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["highlighter_settings"] = array( "title" => __("Syntax Highlighting", "highlighter") @@ -83,7 +94,10 @@ return $navs; } - private function highlighter_stylesheets($base = null, $prefix = ""): array { + private function highlighter_stylesheets( + $base = null, + $prefix = "" + ): array { fallback($base, MODULES_DIR.DIR."highlighter".DIR."styles"); $styles = array(); $dir = new DirectoryIterator($base); diff --git a/modules/highlighter/javascript.php b/modules/highlighter/javascript.php index 8dc3099..ffc6da2 100644 --- a/modules/highlighter/javascript.php +++ b/modules/highlighter/javascript.php @@ -3,7 +3,8 @@ exit; ?> var ChyrpHighlighter = { - init: function() { + init: function( + ) { $("pre > code").each( function(index, block) { hljs.highlightElement(block); @@ -11,7 +12,8 @@ var ChyrpHighlighter = { ); ChyrpHighlighter.watch(); }, - watch: function() { + watch: function( + ) { // Watch for DOM additions on blog pages. if (!!window.MutationObserver && $(".post").length) { var target = $(".post").last().parent()[0]; diff --git a/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.mo index 85f91ff..3c792fa 100644 Binary files a/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.mo and b/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.mo differ diff --git a/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po index 0e4f064..1cba1d2 100644 --- a/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -21,7 +21,7 @@ msgstr "Einstellungen für die Syntaxhervorhebung" msgid "Stylesheet" msgstr "Stylesheet" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "Syntaxhervorhebung" diff --git a/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot b/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot index a2f09df..e12396f 100644 --- a/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot +++ b/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot @@ -9,7 +9,7 @@ msgstr "" msgid "Stylesheet" msgstr "" -#: modules/highlighter/highlighter.php:80 +#: modules/highlighter/highlighter.php:91 #: modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "" diff --git a/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.mo index 33f8d58..476726b 100644 Binary files a/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.mo and b/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.mo differ diff --git a/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po index 1be3b78..d18ff91 100644 --- a/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -22,7 +22,7 @@ msgstr "Impostazioni di evidenziazione della sintassi" msgid "Stylesheet" msgstr "Foglio di stile" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "Evidenziazione della sintassi" diff --git a/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.mo index fde9a24..9c84b0f 100644 Binary files a/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.mo and b/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.mo differ diff --git a/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po index e9305dc..b3e5a33 100644 --- a/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -21,7 +21,7 @@ msgstr "Instellingen voor syntaxismarkering" msgid "Stylesheet" msgstr "Stijlbestand" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "Syntax Markering" @@ -30,5 +30,5 @@ msgid "" "Adds syntax highlighting to nested <pre><code> " "blocks." msgstr "" -"Pas syntaxmarkering toe aan geneste <pre><code> blokken." +"Pas syntaxmarkering toe aan geneste <pre><code> " +"blokken." diff --git a/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.mo index fd8493a..e7a45e0 100644 Binary files a/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.mo and b/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.mo differ diff --git a/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po index 5e79277..7644ffa 100644 --- a/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -22,7 +22,7 @@ msgstr "语法高亮设置" msgid "Stylesheet" msgstr "样式表" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "语法高亮" diff --git a/modules/highlighter/styles/1c-light.css b/modules/highlighter/styles/1c-light.css new file mode 100644 index 0000000..e35ff89 --- /dev/null +++ b/modules/highlighter/styles/1c-light.css @@ -0,0 +1,107 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: 1c-light + Description: Style IDE 1C:Enterprise 8 + Author: (c) Barilko Vitaliy + Maintainer: @Diversus23 + Website: https://softonit.ru/ + License: see project LICENSE + Touched: 2023 +*/ +/* end baseline CSS */ +.hljs { + color: #0000ff; + background: #ffffff +} +/* Base color: saturation 0; */ +.hljs-subst { + /* default */ + +} +/* purposely ignored */ +.hljs-formula, +.hljs-attr, +.hljs-property { + +} +.hljs-comment { + color: #008000 +} +.hljs-tag { + color: #444a +} +.hljs-tag .hljs-name, +.hljs-tag .hljs-attr { + color: #444 +} +.hljs-punctuation, +.hljs-function, +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #ff0000 +} +.hljs-type, +.hljs-params { + color: #0000ff +} +/* User color: hue: 0 */ +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-symbol, +.hljs-deletion { + color: #000000 +} +.hljs-title, +.hljs-section { + color: #0000ff +} +.hljs-regexp, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-operator, +.hljs-selector-pseudo { + color: #ab5656 +} +/* Language color: hue: 90; */ +.hljs-literal { + color: #ff0000 +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0000ff +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #963200 +} +.hljs-meta .hljs-string { + color: #963200 +} +.hljs-meta .hljs-keyword { + color: #963200 +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/1c-light.min.css b/modules/highlighter/styles/1c-light.min.css new file mode 100644 index 0000000..a9d9bf9 --- /dev/null +++ b/modules/highlighter/styles/1c-light.min.css @@ -0,0 +1,9 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: 1c-light + Description: Style IDE 1C:Enterprise 8 + Author: (c) Barilko Vitaliy + Maintainer: @Diversus23 + Website: https://softonit.ru/ + License: see project LICENSE + Touched: 2023 +*/.hljs{color:#00f;background:#fff}.hljs-comment{color:green}.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-function,.hljs-keyword,.hljs-name,.hljs-punctuation,.hljs-selector-tag{color:red}.hljs-params,.hljs-type{color:#00f}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-symbol,.hljs-template-tag{color:#000}.hljs-section,.hljs-title{color:#00f}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:red}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#00f}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#963200}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/modules/highlighter/styles/a11y-dark.css b/modules/highlighter/styles/a11y-dark.css new file mode 100644 index 0000000..0d11216 --- /dev/null +++ b/modules/highlighter/styles/a11y-dark.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/ +.hljs { + background: #2b2b2b; + color: #f8f8f2 +} +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #d4d0ab +} +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ffa07a +} +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5ab35 +} +/* Yellow */ +.hljs-attribute { + color: #ffd700 +} +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #abe338 +} +/* Blue */ +.hljs-title, +.hljs-section { + color: #00e0e0 +} +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #dcc6e0 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +@media screen and (-ms-high-contrast: active) { + .hljs-addition, + .hljs-attribute, + .hljs-built_in, + .hljs-bullet, + .hljs-comment, + .hljs-link, + .hljs-literal, + .hljs-meta, + .hljs-number, + .hljs-params, + .hljs-string, + .hljs-symbol, + .hljs-type, + .hljs-quote { + color: highlight + } + .hljs-keyword, + .hljs-selector-tag { + font-weight: bold + } +} \ No newline at end of file diff --git a/modules/highlighter/styles/a11y-light.css b/modules/highlighter/styles/a11y-light.css new file mode 100644 index 0000000..a8af1d1 --- /dev/null +++ b/modules/highlighter/styles/a11y-light.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: a11y-light + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/ +.hljs { + background: #fefefe; + color: #545454 +} +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #696969 +} +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d91e18 +} +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #aa5d00 +} +/* Yellow */ +.hljs-attribute { + color: #aa5d00 +} +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #008000 +} +/* Blue */ +.hljs-title, +.hljs-section { + color: #007faa +} +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7928a1 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +@media screen and (-ms-high-contrast: active) { + .hljs-addition, + .hljs-attribute, + .hljs-built_in, + .hljs-bullet, + .hljs-comment, + .hljs-link, + .hljs-literal, + .hljs-meta, + .hljs-number, + .hljs-params, + .hljs-string, + .hljs-symbol, + .hljs-type, + .hljs-quote { + color: highlight + } + .hljs-keyword, + .hljs-selector-tag { + font-weight: bold + } +} \ No newline at end of file diff --git a/modules/highlighter/styles/agate.css b/modules/highlighter/styles/agate.css new file mode 100644 index 0000000..8da5740 --- /dev/null +++ b/modules/highlighter/styles/agate.css @@ -0,0 +1,127 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Agate + Author: (c) Taufik Nurrohman + Maintainer: @taufik-nurrohman + Updated: 2021-04-24 + + #333 + #62c8f3 + #7bd694 + #888 + #a2fca2 + #ade5fc + #b8d8a2 + #c6b4f0 + #d36363 + #fc9b9b + #fcc28c + #ffa + #fff +*/ +.hljs { + background: #333; + color: #fff +} +.hljs-doctag, +.hljs-meta-keyword, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-code, +.hljs-emphasis { + font-style: italic +} +.hljs-section, +.hljs-tag { + color: #62c8f3 +} +.hljs-selector-class, +.hljs-selector-id, +.hljs-template-variable, +.hljs-variable { + color: #ade5fc +} +.hljs-meta-string, +.hljs-string { + color: #a2fca2 +} +.hljs-attr, +.hljs-quote, +.hljs-selector-attr { + color: #7bd694 +} +.hljs-tag .hljs-attr { + color: inherit +} +.hljs-attribute, +.hljs-title, +.hljs-type { + color: #ffa +} +.hljs-number, +.hljs-symbol { + color: #d36363 +} +.hljs-bullet, +.hljs-template-tag { + color: #b8d8a2 +} +.hljs-built_in, +.hljs-keyword, +.hljs-literal, +.hljs-selector-tag { + color: #fcc28c +} +.hljs-code, +.hljs-comment, +.hljs-formula { + color: #888 +} +.hljs-link, +.hljs-selector-pseudo, +.hljs-regexp { + color: #c6b4f0 +} +.hljs-meta { + color: #fc9b9b +} +.hljs-deletion { + background: #fc9b9b; + color: #333 +} +.hljs-addition { + background: #a2fca2; + color: #333 +} +/* Purposely ignored */ +.hljs-operator, +.hljs-params, +.hljs-property, +.hljs-punctuation { + +} +.hljs-subst { + color: #fff +} +/* This applies only if HTML auto-merging plugin is enabled by user (#2889) */ +.hljs a { + color: inherit +} +.hljs a:focus, +.hljs a:hover { + color: inherit; + text-decoration: underline +} +.hljs mark { + background: #555; + color: inherit +} \ No newline at end of file diff --git a/modules/highlighter/styles/an-old-hope.css b/modules/highlighter/styles/an-old-hope.css new file mode 100644 index 0000000..6ecfe53 --- /dev/null +++ b/modules/highlighter/styles/an-old-hope.css @@ -0,0 +1,75 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: An Old Hope – Star Wars Syntax + Author: (c) Gustavo Costa + Maintainer: @gusbemacbe + + Original theme - Ocean Dark Theme – by https://github.com/gavsiu + Based on Jesse Leite's Atom syntax theme 'An Old Hope' + https://github.com/JesseLeite/an-old-hope-syntax-atom +*/ +/* Millenium Falcon */ +.hljs { + background: #1C1D21; + color: #c0c5ce +} +/* Death Star Comment */ +.hljs-comment, +.hljs-quote { + color: #B6B18B +} +/* Darth Vader */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #EB3C54 +} +/* Threepio */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #E7CE56 +} +/* Luke Skywalker */ +.hljs-attribute { + color: #EE7C2B +} +/* Obi Wan Kenobi */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #4FB4D7 +} +/* Yoda */ +.hljs-title, +.hljs-section { + color: #78BB65 +} +/* Mace Windu */ +.hljs-keyword, +.hljs-selector-tag { + color: #B45EA4 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/androidstudio.css b/modules/highlighter/styles/androidstudio.css new file mode 100644 index 0000000..979dad2 --- /dev/null +++ b/modules/highlighter/styles/androidstudio.css @@ -0,0 +1,60 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Date: 24 Fev 2015 +Author: Pedro Oliveira +*/ +.hljs { + color: #a9b7c6; + background: #282b2e +} +.hljs-number, +.hljs-literal, +.hljs-symbol, +.hljs-bullet { + color: #6897BB +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-deletion { + color: #cc7832 +} +.hljs-variable, +.hljs-template-variable, +.hljs-link { + color: #629755 +} +.hljs-comment, +.hljs-quote { + color: #808080 +} +.hljs-meta { + color: #bbb529 +} +.hljs-string, +.hljs-attribute, +.hljs-addition { + color: #6A8759 +} +.hljs-section, +.hljs-title, +.hljs-type { + color: #ffc66d +} +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e8bf6a +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/arduino-light.css b/modules/highlighter/styles/arduino-light.css new file mode 100644 index 0000000..743ce34 --- /dev/null +++ b/modules/highlighter/styles/arduino-light.css @@ -0,0 +1,78 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Arduino® Light Theme - Stefania Mellai + +*/ +.hljs { + background: white; + color: #434f54 +} +.hljs-subst { + color: #434f54 +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #00979D +} +.hljs-built_in, +.hljs-literal, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #D35400 +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #00979D +} +.hljs-type, +.hljs-string, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #005C5F +} +.hljs-comment { + color: rgba(149,165,166,.8) +} +.hljs-meta .hljs-keyword { + color: #728E00 +} +.hljs-meta { + color: #434f54 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-function { + color: #728E00 +} +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold +} +.hljs-number { + color: #8A7B52 +} \ No newline at end of file diff --git a/modules/highlighter/styles/arta.css b/modules/highlighter/styles/arta.css new file mode 100644 index 0000000..98a5b2b --- /dev/null +++ b/modules/highlighter/styles/arta.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Date: 17.V.2011 +Author: pumbur +*/ +.hljs { + background: #222; + color: #aaa +} +.hljs-subst { + color: #aaa +} +.hljs-section { + color: #fff +} +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #444 +} +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-regexp { + color: #ffcc33 +} +.hljs-number, +.hljs-addition { + color: #00cc66 +} +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-template-variable, +.hljs-attribute, +.hljs-link { + color: #32aaee +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #6644aa +} +.hljs-title, +.hljs-variable, +.hljs-deletion, +.hljs-template-tag { + color: #bb1166 +} +.hljs-section, +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/ascetic.css b/modules/highlighter/styles/ascetic.css new file mode 100644 index 0000000..27a4dbe --- /dev/null +++ b/modules/highlighter/styles/ascetic.css @@ -0,0 +1,45 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ +.hljs { + background: white; + color: black +} +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-symbol, +.hljs-bullet, +.hljs-section, +.hljs-addition, +.hljs-attribute, +.hljs-link { + color: #888 +} +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #ccc +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-name, +.hljs-type, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/atom-one-dark-reasonable.css b/modules/highlighter/styles/atom-one-dark-reasonable.css new file mode 100644 index 0000000..ccfab91 --- /dev/null +++ b/modules/highlighter/styles/atom-one-dark-reasonable.css @@ -0,0 +1,105 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage + +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +*/ +.hljs { + color: #abb2bf; + background: #282c34 +} +.hljs-keyword, +.hljs-operator { + color: #F92672 +} +.hljs-pattern-match { + color: #F92672 +} +.hljs-pattern-match .hljs-constructor { + color: #61aeee +} +.hljs-function { + color: #61aeee +} +.hljs-function .hljs-params { + color: #A6E22E +} +.hljs-function .hljs-params .hljs-typing { + color: #FD971F +} +.hljs-module-access .hljs-module { + color: #7e57c2 +} +.hljs-constructor { + color: #e2b93d +} +.hljs-constructor .hljs-string { + color: #9CCC65 +} +.hljs-comment, +.hljs-quote { + color: #b18eb1; + font-style: italic +} +.hljs-doctag, +.hljs-formula { + color: #c678dd +} +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75 +} +.hljs-literal { + color: #56b6c2 +} +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta .hljs-string { + color: #98c379 +} +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #e6c07b +} +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} \ No newline at end of file diff --git a/modules/highlighter/styles/atom-one-dark.css b/modules/highlighter/styles/atom-one-dark.css new file mode 100644 index 0000000..3c51ce6 --- /dev/null +++ b/modules/highlighter/styles/atom-one-dark.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Atom One Dark by Daniel Gamage +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +base: #282c34 +mono-1: #abb2bf +mono-2: #818896 +mono-3: #5c6370 +hue-1: #56b6c2 +hue-2: #61aeee +hue-3: #c678dd +hue-4: #98c379 +hue-5: #e06c75 +hue-5-2: #be5046 +hue-6: #d19a66 +hue-6-2: #e6c07b + +*/ +.hljs { + color: #abb2bf; + background: #282c34 +} +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic +} +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c678dd +} +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75 +} +.hljs-literal { + color: #56b6c2 +} +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta .hljs-string { + color: #98c379 +} +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee +} +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #e6c07b +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} \ No newline at end of file diff --git a/modules/highlighter/styles/atom-one-light.css b/modules/highlighter/styles/atom-one-light.css new file mode 100644 index 0000000..26dd7ec --- /dev/null +++ b/modules/highlighter/styles/atom-one-light.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ +.hljs { + color: #383a42; + background: #fafafa +} +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic +} +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4 +} +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649 +} +.hljs-literal { + color: #0184bb +} +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta .hljs-string { + color: #50a14f +} +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2 +} +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #c18401 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/3024.css b/modules/highlighter/styles/base16/3024.css new file mode 100644 index 0000000..b7f4ea3 --- /dev/null +++ b/modules/highlighter/styles/base16/3024.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: 3024 + Author: Jan T. Sott (http://github.com/idleberg) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme 3024 + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #090300 Default Background +base01 #3a3432 Lighter Background (Used for status bars, line number and folding marks) +base02 #4a4543 Selection Background +base03 #5c5855 Comments, Invisibles, Line Highlighting +base04 #807d7c Dark Foreground (Used for status bars) +base05 #a5a2a2 Default Foreground, Caret, Delimiters, Operators +base06 #d6d5d4 Light Foreground (Not often used) +base07 #f7f7f7 Light Background (Not often used) +base08 #db2d20 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e8bbd0 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fded02 Classes, Markup Bold, Search Text Background +base0B #01a252 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #b5e4f4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #01a0e4 Functions, Methods, Attribute IDs, Headings +base0E #a16a94 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cdab53 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a5a2a2; + background: #090300 +} +.hljs::selection, +.hljs ::selection { + background-color: #4a4543; + color: #a5a2a2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5c5855 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5c5855 +} +/* base04 - #807d7c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #807d7c +} +/* base05 - #a5a2a2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a5a2a2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #db2d20 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e8bbd0 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fded02 +} +.hljs-strong { + font-weight: bold; + color: #fded02 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #01a252 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #b5e4f4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #01a0e4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a16a94 +} +.hljs-emphasis { + color: #a16a94; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cdab53 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/apathy.css b/modules/highlighter/styles/base16/apathy.css new file mode 100644 index 0000000..7aa2b7b --- /dev/null +++ b/modules/highlighter/styles/base16/apathy.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Apathy + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme apathy + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #031A16 Default Background +base01 #0B342D Lighter Background (Used for status bars, line number and folding marks) +base02 #184E45 Selection Background +base03 #2B685E Comments, Invisibles, Line Highlighting +base04 #5F9C92 Dark Foreground (Used for status bars) +base05 #81B5AC Default Foreground, Caret, Delimiters, Operators +base06 #A7CEC8 Light Foreground (Not often used) +base07 #D2E7E4 Light Background (Not often used) +base08 #3E9688 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #3E7996 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #3E4C96 Classes, Markup Bold, Search Text Background +base0B #883E96 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #963E4C Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #96883E Functions, Methods, Attribute IDs, Headings +base0E #4C963E Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3E965B Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #81B5AC; + background: #031A16 +} +.hljs::selection, +.hljs ::selection { + background-color: #184E45; + color: #81B5AC +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #2B685E - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #2B685E +} +/* base04 - #5F9C92 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5F9C92 +} +/* base05 - #81B5AC - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #81B5AC +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #3E9688 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #3E7996 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #3E4C96 +} +.hljs-strong { + font-weight: bold; + color: #3E4C96 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #883E96 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #963E4C +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #96883E +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4C963E +} +.hljs-emphasis { + color: #4C963E; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3E965B +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/apprentice.css b/modules/highlighter/styles/base16/apprentice.css new file mode 100644 index 0000000..6f92cfd --- /dev/null +++ b/modules/highlighter/styles/base16/apprentice.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Apprentice + Author: romainl + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme apprentice + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #262626 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #333333 Selection Background +base03 #6C6C6C Comments, Invisibles, Line Highlighting +base04 #787878 Dark Foreground (Used for status bars) +base05 #BCBCBC Default Foreground, Caret, Delimiters, Operators +base06 #C9C9C9 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #5F8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FF8700 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #5F8787 Classes, Markup Bold, Search Text Background +base0B #87AF87 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5F875F Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #FFFFAF Functions, Methods, Attribute IDs, Headings +base0E #87AFD7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5F87AF Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #BCBCBC; + background: #262626 +} +.hljs::selection, +.hljs ::selection { + background-color: #333333; + color: #BCBCBC +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6C6C6C - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6C6C6C +} +/* base04 - #787878 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #787878 +} +/* base05 - #BCBCBC - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #BCBCBC +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5F8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FF8700 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #5F8787 +} +.hljs-strong { + font-weight: bold; + color: #5F8787 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #87AF87 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5F875F +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #FFFFAF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #87AFD7 +} +.hljs-emphasis { + color: #87AFD7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5F87AF +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ashes.css b/modules/highlighter/styles/base16/ashes.css new file mode 100644 index 0000000..84a6ab4 --- /dev/null +++ b/modules/highlighter/styles/base16/ashes.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Ashes + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ashes + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1C2023 Default Background +base01 #393F45 Lighter Background (Used for status bars, line number and folding marks) +base02 #565E65 Selection Background +base03 #747C84 Comments, Invisibles, Line Highlighting +base04 #ADB3BA Dark Foreground (Used for status bars) +base05 #C7CCD1 Default Foreground, Caret, Delimiters, Operators +base06 #DFE2E5 Light Foreground (Not often used) +base07 #F3F4F5 Light Background (Not often used) +base08 #C7AE95 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #C7C795 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #AEC795 Classes, Markup Bold, Search Text Background +base0B #95C7AE Strings, Inherited Class, Markup Code, Diff Inserted +base0C #95AEC7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #AE95C7 Functions, Methods, Attribute IDs, Headings +base0E #C795AE Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #C79595 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C7CCD1; + background: #1C2023 +} +.hljs::selection, +.hljs ::selection { + background-color: #565E65; + color: #C7CCD1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #747C84 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #747C84 +} +/* base04 - #ADB3BA - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ADB3BA +} +/* base05 - #C7CCD1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C7CCD1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #C7AE95 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #C7C795 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #AEC795 +} +.hljs-strong { + font-weight: bold; + color: #AEC795 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #95C7AE +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #95AEC7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #AE95C7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C795AE +} +.hljs-emphasis { + color: #C795AE; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #C79595 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-cave-light.css b/modules/highlighter/styles/base16/atelier-cave-light.css new file mode 100644 index 0000000..d38a679 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-cave-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Cave Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-cave-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #efecf4 Default Background +base01 #e2dfe7 Lighter Background (Used for status bars, line number and folding marks) +base02 #8b8792 Selection Background +base03 #7e7887 Comments, Invisibles, Line Highlighting +base04 #655f6d Dark Foreground (Used for status bars) +base05 #585260 Default Foreground, Caret, Delimiters, Operators +base06 #26232a Light Foreground (Not often used) +base07 #19171c Light Background (Not often used) +base08 #be4678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aa573c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #2a9292 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #398bc6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #576ddb Functions, Methods, Attribute IDs, Headings +base0E #955ae7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf40bf Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #585260; + background: #efecf4 +} +.hljs::selection, +.hljs ::selection { + background-color: #8b8792; + color: #585260 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7e7887 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7e7887 +} +/* base04 - #655f6d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #655f6d +} +/* base05 - #585260 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #585260 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #be4678 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aa573c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2a9292 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #398bc6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #576ddb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #955ae7 +} +.hljs-emphasis { + color: #955ae7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf40bf +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-cave.css b/modules/highlighter/styles/base16/atelier-cave.css new file mode 100644 index 0000000..74374e3 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-cave.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Cave + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-cave + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #19171c Default Background +base01 #26232a Lighter Background (Used for status bars, line number and folding marks) +base02 #585260 Selection Background +base03 #655f6d Comments, Invisibles, Line Highlighting +base04 #7e7887 Dark Foreground (Used for status bars) +base05 #8b8792 Default Foreground, Caret, Delimiters, Operators +base06 #e2dfe7 Light Foreground (Not often used) +base07 #efecf4 Light Background (Not often used) +base08 #be4678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aa573c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #2a9292 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #398bc6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #576ddb Functions, Methods, Attribute IDs, Headings +base0E #955ae7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf40bf Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8b8792; + background: #19171c +} +.hljs::selection, +.hljs ::selection { + background-color: #585260; + color: #8b8792 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #655f6d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #655f6d +} +/* base04 - #7e7887 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7887 +} +/* base05 - #8b8792 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8b8792 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #be4678 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aa573c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2a9292 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #398bc6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #576ddb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #955ae7 +} +.hljs-emphasis { + color: #955ae7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf40bf +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-dune-light.css b/modules/highlighter/styles/base16/atelier-dune-light.css new file mode 100644 index 0000000..7a1123e --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-dune-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Dune Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-dune-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fefbec Default Background +base01 #e8e4cf Lighter Background (Used for status bars, line number and folding marks) +base02 #a6a28c Selection Background +base03 #999580 Comments, Invisibles, Line Highlighting +base04 #7d7a68 Dark Foreground (Used for status bars) +base05 #6e6b5e Default Foreground, Caret, Delimiters, Operators +base06 #292824 Light Foreground (Not often used) +base07 #20201d Light Background (Not often used) +base08 #d73737 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b65611 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ae9513 Classes, Markup Bold, Search Text Background +base0B #60ac39 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1fad83 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6684e1 Functions, Methods, Attribute IDs, Headings +base0E #b854d4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d43552 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #6e6b5e; + background: #fefbec +} +.hljs::selection, +.hljs ::selection { + background-color: #a6a28c; + color: #6e6b5e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #999580 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #999580 +} +/* base04 - #7d7a68 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7d7a68 +} +/* base05 - #6e6b5e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #6e6b5e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d73737 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b65611 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ae9513 +} +.hljs-strong { + font-weight: bold; + color: #ae9513 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #60ac39 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1fad83 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6684e1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b854d4 +} +.hljs-emphasis { + color: #b854d4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d43552 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-dune.css b/modules/highlighter/styles/base16/atelier-dune.css new file mode 100644 index 0000000..d3b3388 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-dune.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Dune + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-dune + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #20201d Default Background +base01 #292824 Lighter Background (Used for status bars, line number and folding marks) +base02 #6e6b5e Selection Background +base03 #7d7a68 Comments, Invisibles, Line Highlighting +base04 #999580 Dark Foreground (Used for status bars) +base05 #a6a28c Default Foreground, Caret, Delimiters, Operators +base06 #e8e4cf Light Foreground (Not often used) +base07 #fefbec Light Background (Not often used) +base08 #d73737 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b65611 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ae9513 Classes, Markup Bold, Search Text Background +base0B #60ac39 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1fad83 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6684e1 Functions, Methods, Attribute IDs, Headings +base0E #b854d4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d43552 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a6a28c; + background: #20201d +} +.hljs::selection, +.hljs ::selection { + background-color: #6e6b5e; + color: #a6a28c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7d7a68 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7d7a68 +} +/* base04 - #999580 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999580 +} +/* base05 - #a6a28c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a6a28c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d73737 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b65611 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ae9513 +} +.hljs-strong { + font-weight: bold; + color: #ae9513 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #60ac39 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1fad83 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6684e1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b854d4 +} +.hljs-emphasis { + color: #b854d4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d43552 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-estuary-light.css b/modules/highlighter/styles/base16/atelier-estuary-light.css new file mode 100644 index 0000000..02128ac --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-estuary-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Estuary Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-estuary-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f4f3ec Default Background +base01 #e7e6df Lighter Background (Used for status bars, line number and folding marks) +base02 #929181 Selection Background +base03 #878573 Comments, Invisibles, Line Highlighting +base04 #6c6b5a Dark Foreground (Used for status bars) +base05 #5f5e4e Default Foreground, Caret, Delimiters, Operators +base06 #302f27 Light Foreground (Not often used) +base07 #22221b Light Background (Not often used) +base08 #ba6236 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ae7313 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a5980d Classes, Markup Bold, Search Text Background +base0B #7d9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5b9d48 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #36a166 Functions, Methods, Attribute IDs, Headings +base0E #5f9182 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9d6c7c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5f5e4e; + background: #f4f3ec +} +.hljs::selection, +.hljs ::selection { + background-color: #929181; + color: #5f5e4e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #878573 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #878573 +} +/* base04 - #6c6b5a - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6c6b5a +} +/* base05 - #5f5e4e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5f5e4e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ba6236 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ae7313 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a5980d +} +.hljs-strong { + font-weight: bold; + color: #a5980d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7d9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5b9d48 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #36a166 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #5f9182 +} +.hljs-emphasis { + color: #5f9182; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9d6c7c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-estuary.css b/modules/highlighter/styles/base16/atelier-estuary.css new file mode 100644 index 0000000..07e1506 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-estuary.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Estuary + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-estuary + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #22221b Default Background +base01 #302f27 Lighter Background (Used for status bars, line number and folding marks) +base02 #5f5e4e Selection Background +base03 #6c6b5a Comments, Invisibles, Line Highlighting +base04 #878573 Dark Foreground (Used for status bars) +base05 #929181 Default Foreground, Caret, Delimiters, Operators +base06 #e7e6df Light Foreground (Not often used) +base07 #f4f3ec Light Background (Not often used) +base08 #ba6236 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ae7313 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a5980d Classes, Markup Bold, Search Text Background +base0B #7d9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5b9d48 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #36a166 Functions, Methods, Attribute IDs, Headings +base0E #5f9182 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9d6c7c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #929181; + background: #22221b +} +.hljs::selection, +.hljs ::selection { + background-color: #5f5e4e; + color: #929181 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6c6b5a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6c6b5a +} +/* base04 - #878573 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #878573 +} +/* base05 - #929181 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #929181 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ba6236 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ae7313 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a5980d +} +.hljs-strong { + font-weight: bold; + color: #a5980d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7d9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5b9d48 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #36a166 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #5f9182 +} +.hljs-emphasis { + color: #5f9182; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9d6c7c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-forest-light.css b/modules/highlighter/styles/base16/atelier-forest-light.css new file mode 100644 index 0000000..ecff451 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-forest-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Forest Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-forest-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f1efee Default Background +base01 #e6e2e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #a8a19f Selection Background +base03 #9c9491 Comments, Invisibles, Line Highlighting +base04 #766e6b Dark Foreground (Used for status bars) +base05 #68615e Default Foreground, Caret, Delimiters, Operators +base06 #2c2421 Light Foreground (Not often used) +base07 #1b1918 Light Background (Not often used) +base08 #f22c40 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5320 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c38418 Classes, Markup Bold, Search Text Background +base0B #7b9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3d97b8 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #407ee7 Functions, Methods, Attribute IDs, Headings +base0E #6666ea Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c33ff3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #68615e; + background: #f1efee +} +.hljs::selection, +.hljs ::selection { + background-color: #a8a19f; + color: #68615e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9c9491 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9c9491 +} +/* base04 - #766e6b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #766e6b +} +/* base05 - #68615e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #68615e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f22c40 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5320 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c38418 +} +.hljs-strong { + font-weight: bold; + color: #c38418 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7b9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3d97b8 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #407ee7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6666ea +} +.hljs-emphasis { + color: #6666ea; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c33ff3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-forest.css b/modules/highlighter/styles/base16/atelier-forest.css new file mode 100644 index 0000000..3ab07be --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-forest.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Forest + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-forest + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1b1918 Default Background +base01 #2c2421 Lighter Background (Used for status bars, line number and folding marks) +base02 #68615e Selection Background +base03 #766e6b Comments, Invisibles, Line Highlighting +base04 #9c9491 Dark Foreground (Used for status bars) +base05 #a8a19f Default Foreground, Caret, Delimiters, Operators +base06 #e6e2e0 Light Foreground (Not often used) +base07 #f1efee Light Background (Not often used) +base08 #f22c40 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5320 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c38418 Classes, Markup Bold, Search Text Background +base0B #7b9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3d97b8 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #407ee7 Functions, Methods, Attribute IDs, Headings +base0E #6666ea Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c33ff3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a8a19f; + background: #1b1918 +} +.hljs::selection, +.hljs ::selection { + background-color: #68615e; + color: #a8a19f +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #766e6b - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #766e6b +} +/* base04 - #9c9491 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9c9491 +} +/* base05 - #a8a19f - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a8a19f +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f22c40 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5320 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c38418 +} +.hljs-strong { + font-weight: bold; + color: #c38418 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7b9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3d97b8 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #407ee7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6666ea +} +.hljs-emphasis { + color: #6666ea; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c33ff3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-heath-light.css b/modules/highlighter/styles/base16/atelier-heath-light.css new file mode 100644 index 0000000..4add108 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-heath-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Heath Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-heath-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f7f3f7 Default Background +base01 #d8cad8 Lighter Background (Used for status bars, line number and folding marks) +base02 #ab9bab Selection Background +base03 #9e8f9e Comments, Invisibles, Line Highlighting +base04 #776977 Dark Foreground (Used for status bars) +base05 #695d69 Default Foreground, Caret, Delimiters, Operators +base06 #292329 Light Foreground (Not often used) +base07 #1b181b Light Background (Not often used) +base08 #ca402b Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a65926 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8a35 Classes, Markup Bold, Search Text Background +base0B #918b3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #159393 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #516aec Functions, Methods, Attribute IDs, Headings +base0E #7b59c0 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cc33cc Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #695d69; + background: #f7f3f7 +} +.hljs::selection, +.hljs ::selection { + background-color: #ab9bab; + color: #695d69 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9e8f9e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9e8f9e +} +/* base04 - #776977 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #776977 +} +/* base05 - #695d69 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #695d69 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca402b +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a65926 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8a35 +} +.hljs-strong { + font-weight: bold; + color: #bb8a35 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #918b3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #159393 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #516aec +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7b59c0 +} +.hljs-emphasis { + color: #7b59c0; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cc33cc +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-heath.css b/modules/highlighter/styles/base16/atelier-heath.css new file mode 100644 index 0000000..a95e42a --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-heath.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Heath + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-heath + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1b181b Default Background +base01 #292329 Lighter Background (Used for status bars, line number and folding marks) +base02 #695d69 Selection Background +base03 #776977 Comments, Invisibles, Line Highlighting +base04 #9e8f9e Dark Foreground (Used for status bars) +base05 #ab9bab Default Foreground, Caret, Delimiters, Operators +base06 #d8cad8 Light Foreground (Not often used) +base07 #f7f3f7 Light Background (Not often used) +base08 #ca402b Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a65926 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8a35 Classes, Markup Bold, Search Text Background +base0B #918b3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #159393 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #516aec Functions, Methods, Attribute IDs, Headings +base0E #7b59c0 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cc33cc Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #ab9bab; + background: #1b181b +} +.hljs::selection, +.hljs ::selection { + background-color: #695d69; + color: #ab9bab +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #776977 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #776977 +} +/* base04 - #9e8f9e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9e8f9e +} +/* base05 - #ab9bab - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #ab9bab +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca402b +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a65926 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8a35 +} +.hljs-strong { + font-weight: bold; + color: #bb8a35 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #918b3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #159393 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #516aec +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7b59c0 +} +.hljs-emphasis { + color: #7b59c0; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cc33cc +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-lakeside-light.css b/modules/highlighter/styles/base16/atelier-lakeside-light.css new file mode 100644 index 0000000..8355cbe --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-lakeside-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Lakeside Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-lakeside-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ebf8ff Default Background +base01 #c1e4f6 Lighter Background (Used for status bars, line number and folding marks) +base02 #7ea2b4 Selection Background +base03 #7195a8 Comments, Invisibles, Line Highlighting +base04 #5a7b8c Dark Foreground (Used for status bars) +base05 #516d7b Default Foreground, Caret, Delimiters, Operators +base06 #1f292e Light Foreground (Not often used) +base07 #161b1d Light Background (Not often used) +base08 #d22d72 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #935c25 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8a8a0f Classes, Markup Bold, Search Text Background +base0B #568c3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d8f6f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #257fad Functions, Methods, Attribute IDs, Headings +base0E #6b6bb8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b72dd2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #516d7b; + background: #ebf8ff +} +.hljs::selection, +.hljs ::selection { + background-color: #7ea2b4; + color: #516d7b +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7195a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7195a8 +} +/* base04 - #5a7b8c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5a7b8c +} +/* base05 - #516d7b - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #516d7b +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d22d72 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #935c25 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8a8a0f +} +.hljs-strong { + font-weight: bold; + color: #8a8a0f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #568c3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d8f6f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #257fad +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6b6bb8 +} +.hljs-emphasis { + color: #6b6bb8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b72dd2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-lakeside.css b/modules/highlighter/styles/base16/atelier-lakeside.css new file mode 100644 index 0000000..b25999c --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-lakeside.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Lakeside + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-lakeside + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #161b1d Default Background +base01 #1f292e Lighter Background (Used for status bars, line number and folding marks) +base02 #516d7b Selection Background +base03 #5a7b8c Comments, Invisibles, Line Highlighting +base04 #7195a8 Dark Foreground (Used for status bars) +base05 #7ea2b4 Default Foreground, Caret, Delimiters, Operators +base06 #c1e4f6 Light Foreground (Not often used) +base07 #ebf8ff Light Background (Not often used) +base08 #d22d72 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #935c25 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8a8a0f Classes, Markup Bold, Search Text Background +base0B #568c3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d8f6f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #257fad Functions, Methods, Attribute IDs, Headings +base0E #6b6bb8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b72dd2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #7ea2b4; + background: #161b1d +} +.hljs::selection, +.hljs ::selection { + background-color: #516d7b; + color: #7ea2b4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5a7b8c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5a7b8c +} +/* base04 - #7195a8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7195a8 +} +/* base05 - #7ea2b4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #7ea2b4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d22d72 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #935c25 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8a8a0f +} +.hljs-strong { + font-weight: bold; + color: #8a8a0f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #568c3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d8f6f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #257fad +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6b6bb8 +} +.hljs-emphasis { + color: #6b6bb8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b72dd2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-plateau-light.css b/modules/highlighter/styles/base16/atelier-plateau-light.css new file mode 100644 index 0000000..307bfa7 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-plateau-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Plateau Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-plateau-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f4ecec Default Background +base01 #e7dfdf Lighter Background (Used for status bars, line number and folding marks) +base02 #8a8585 Selection Background +base03 #7e7777 Comments, Invisibles, Line Highlighting +base04 #655d5d Dark Foreground (Used for status bars) +base05 #585050 Default Foreground, Caret, Delimiters, Operators +base06 #292424 Light Foreground (Not often used) +base07 #1b1818 Light Background (Not often used) +base08 #ca4949 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b45a3c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #4b8b8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5485b6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7272ca Functions, Methods, Attribute IDs, Headings +base0E #8464c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bd5187 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #585050; + background: #f4ecec +} +.hljs::selection, +.hljs ::selection { + background-color: #8a8585; + color: #585050 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7e7777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7e7777 +} +/* base04 - #655d5d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #655d5d +} +/* base05 - #585050 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #585050 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca4949 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b45a3c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4b8b8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5485b6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7272ca +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8464c4 +} +.hljs-emphasis { + color: #8464c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bd5187 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-plateau.css b/modules/highlighter/styles/base16/atelier-plateau.css new file mode 100644 index 0000000..53aeebd --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-plateau.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Plateau + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-plateau + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1b1818 Default Background +base01 #292424 Lighter Background (Used for status bars, line number and folding marks) +base02 #585050 Selection Background +base03 #655d5d Comments, Invisibles, Line Highlighting +base04 #7e7777 Dark Foreground (Used for status bars) +base05 #8a8585 Default Foreground, Caret, Delimiters, Operators +base06 #e7dfdf Light Foreground (Not often used) +base07 #f4ecec Light Background (Not often used) +base08 #ca4949 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b45a3c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #4b8b8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5485b6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7272ca Functions, Methods, Attribute IDs, Headings +base0E #8464c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bd5187 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8a8585; + background: #1b1818 +} +.hljs::selection, +.hljs ::selection { + background-color: #585050; + color: #8a8585 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #655d5d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #655d5d +} +/* base04 - #7e7777 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7777 +} +/* base05 - #8a8585 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8a8585 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca4949 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b45a3c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4b8b8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5485b6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7272ca +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8464c4 +} +.hljs-emphasis { + color: #8464c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bd5187 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-savanna-light.css b/modules/highlighter/styles/base16/atelier-savanna-light.css new file mode 100644 index 0000000..b26d6f7 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-savanna-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Savanna Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-savanna-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ecf4ee Default Background +base01 #dfe7e2 Lighter Background (Used for status bars, line number and folding marks) +base02 #87928a Selection Background +base03 #78877d Comments, Invisibles, Line Highlighting +base04 #5f6d64 Dark Foreground (Used for status bars) +base05 #526057 Default Foreground, Caret, Delimiters, Operators +base06 #232a25 Light Foreground (Not often used) +base07 #171c19 Light Background (Not often used) +base08 #b16139 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #9f713c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a07e3b Classes, Markup Bold, Search Text Background +base0B #489963 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1c9aa0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #478c90 Functions, Methods, Attribute IDs, Headings +base0E #55859b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #867469 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #526057; + background: #ecf4ee +} +.hljs::selection, +.hljs ::selection { + background-color: #87928a; + color: #526057 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #78877d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #78877d +} +/* base04 - #5f6d64 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5f6d64 +} +/* base05 - #526057 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #526057 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b16139 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #9f713c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a07e3b +} +.hljs-strong { + font-weight: bold; + color: #a07e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #489963 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1c9aa0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #478c90 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #55859b +} +.hljs-emphasis { + color: #55859b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #867469 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-savanna.css b/modules/highlighter/styles/base16/atelier-savanna.css new file mode 100644 index 0000000..47998da --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-savanna.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Savanna + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-savanna + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #171c19 Default Background +base01 #232a25 Lighter Background (Used for status bars, line number and folding marks) +base02 #526057 Selection Background +base03 #5f6d64 Comments, Invisibles, Line Highlighting +base04 #78877d Dark Foreground (Used for status bars) +base05 #87928a Default Foreground, Caret, Delimiters, Operators +base06 #dfe7e2 Light Foreground (Not often used) +base07 #ecf4ee Light Background (Not often used) +base08 #b16139 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #9f713c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a07e3b Classes, Markup Bold, Search Text Background +base0B #489963 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1c9aa0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #478c90 Functions, Methods, Attribute IDs, Headings +base0E #55859b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #867469 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #87928a; + background: #171c19 +} +.hljs::selection, +.hljs ::selection { + background-color: #526057; + color: #87928a +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f6d64 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f6d64 +} +/* base04 - #78877d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #78877d +} +/* base05 - #87928a - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #87928a +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b16139 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #9f713c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a07e3b +} +.hljs-strong { + font-weight: bold; + color: #a07e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #489963 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1c9aa0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #478c90 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #55859b +} +.hljs-emphasis { + color: #55859b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #867469 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-seaside-light.css b/modules/highlighter/styles/base16/atelier-seaside-light.css new file mode 100644 index 0000000..c95fffb --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-seaside-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Seaside Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-seaside-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f4fbf4 Default Background +base01 #cfe8cf Lighter Background (Used for status bars, line number and folding marks) +base02 #8ca68c Selection Background +base03 #809980 Comments, Invisibles, Line Highlighting +base04 #687d68 Dark Foreground (Used for status bars) +base05 #5e6e5e Default Foreground, Caret, Delimiters, Operators +base06 #242924 Light Foreground (Not often used) +base07 #131513 Light Background (Not often used) +base08 #e6193c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #87711d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #98981b Classes, Markup Bold, Search Text Background +base0B #29a329 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1999b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d62f5 Functions, Methods, Attribute IDs, Headings +base0E #ad2bee Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e619c3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5e6e5e; + background: #f4fbf4 +} +.hljs::selection, +.hljs ::selection { + background-color: #8ca68c; + color: #5e6e5e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #809980 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #809980 +} +/* base04 - #687d68 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #687d68 +} +/* base05 - #5e6e5e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5e6e5e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e6193c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #87711d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #98981b +} +.hljs-strong { + font-weight: bold; + color: #98981b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #29a329 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1999b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d62f5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ad2bee +} +.hljs-emphasis { + color: #ad2bee; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e619c3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-seaside.css b/modules/highlighter/styles/base16/atelier-seaside.css new file mode 100644 index 0000000..7144e8b --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-seaside.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Seaside + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-seaside + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #131513 Default Background +base01 #242924 Lighter Background (Used for status bars, line number and folding marks) +base02 #5e6e5e Selection Background +base03 #687d68 Comments, Invisibles, Line Highlighting +base04 #809980 Dark Foreground (Used for status bars) +base05 #8ca68c Default Foreground, Caret, Delimiters, Operators +base06 #cfe8cf Light Foreground (Not often used) +base07 #f4fbf4 Light Background (Not often used) +base08 #e6193c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #87711d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #98981b Classes, Markup Bold, Search Text Background +base0B #29a329 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1999b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d62f5 Functions, Methods, Attribute IDs, Headings +base0E #ad2bee Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e619c3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8ca68c; + background: #131513 +} +.hljs::selection, +.hljs ::selection { + background-color: #5e6e5e; + color: #8ca68c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #687d68 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #687d68 +} +/* base04 - #809980 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #809980 +} +/* base05 - #8ca68c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8ca68c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e6193c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #87711d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #98981b +} +.hljs-strong { + font-weight: bold; + color: #98981b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #29a329 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1999b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d62f5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ad2bee +} +.hljs-emphasis { + color: #ad2bee; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e619c3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-sulphurpool-light.css b/modules/highlighter/styles/base16/atelier-sulphurpool-light.css new file mode 100644 index 0000000..77e7847 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-sulphurpool-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Sulphurpool Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-sulphurpool-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f5f7ff Default Background +base01 #dfe2f1 Lighter Background (Used for status bars, line number and folding marks) +base02 #979db4 Selection Background +base03 #898ea4 Comments, Invisibles, Line Highlighting +base04 #6b7394 Dark Foreground (Used for status bars) +base05 #5e6687 Default Foreground, Caret, Delimiters, Operators +base06 #293256 Light Foreground (Not often used) +base07 #202746 Light Background (Not often used) +base08 #c94922 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c76b29 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c08b30 Classes, Markup Bold, Search Text Background +base0B #ac9739 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #22a2c9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d8fd1 Functions, Methods, Attribute IDs, Headings +base0E #6679cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9c637a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5e6687; + background: #f5f7ff +} +.hljs::selection, +.hljs ::selection { + background-color: #979db4; + color: #5e6687 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #898ea4 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #898ea4 +} +/* base04 - #6b7394 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6b7394 +} +/* base05 - #5e6687 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5e6687 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c94922 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c76b29 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c08b30 +} +.hljs-strong { + font-weight: bold; + color: #c08b30 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ac9739 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #22a2c9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d8fd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6679cc +} +.hljs-emphasis { + color: #6679cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9c637a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-sulphurpool.css b/modules/highlighter/styles/base16/atelier-sulphurpool.css new file mode 100644 index 0000000..fb95c32 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-sulphurpool.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Sulphurpool + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-sulphurpool + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #202746 Default Background +base01 #293256 Lighter Background (Used for status bars, line number and folding marks) +base02 #5e6687 Selection Background +base03 #6b7394 Comments, Invisibles, Line Highlighting +base04 #898ea4 Dark Foreground (Used for status bars) +base05 #979db4 Default Foreground, Caret, Delimiters, Operators +base06 #dfe2f1 Light Foreground (Not often used) +base07 #f5f7ff Light Background (Not often used) +base08 #c94922 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c76b29 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c08b30 Classes, Markup Bold, Search Text Background +base0B #ac9739 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #22a2c9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d8fd1 Functions, Methods, Attribute IDs, Headings +base0E #6679cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9c637a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #979db4; + background: #202746 +} +.hljs::selection, +.hljs ::selection { + background-color: #5e6687; + color: #979db4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6b7394 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6b7394 +} +/* base04 - #898ea4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #898ea4 +} +/* base05 - #979db4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #979db4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c94922 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c76b29 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c08b30 +} +.hljs-strong { + font-weight: bold; + color: #c08b30 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ac9739 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #22a2c9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d8fd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6679cc +} +.hljs-emphasis { + color: #6679cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9c637a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atlas.css b/modules/highlighter/styles/base16/atlas.css new file mode 100644 index 0000000..e0c83aa --- /dev/null +++ b/modules/highlighter/styles/base16/atlas.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atlas + Author: Alex Lende (https://ajlende.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atlas + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #002635 Default Background +base01 #00384d Lighter Background (Used for status bars, line number and folding marks) +base02 #517F8D Selection Background +base03 #6C8B91 Comments, Invisibles, Line Highlighting +base04 #869696 Dark Foreground (Used for status bars) +base05 #a1a19a Default Foreground, Caret, Delimiters, Operators +base06 #e6e6dc Light Foreground (Not often used) +base07 #fafaf8 Light Background (Not often used) +base08 #ff5a67 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f08e48 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffcc1b Classes, Markup Bold, Search Text Background +base0B #7fc06e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #14747e Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5dd7b9 Functions, Methods, Attribute IDs, Headings +base0E #9a70a4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c43060 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a1a19a; + background: #002635 +} +.hljs::selection, +.hljs ::selection { + background-color: #517F8D; + color: #a1a19a +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6C8B91 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6C8B91 +} +/* base04 - #869696 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #869696 +} +/* base05 - #a1a19a - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a1a19a +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff5a67 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f08e48 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffcc1b +} +.hljs-strong { + font-weight: bold; + color: #ffcc1b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7fc06e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #14747e +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5dd7b9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9a70a4 +} +.hljs-emphasis { + color: #9a70a4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c43060 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/bespin.css b/modules/highlighter/styles/base16/bespin.css new file mode 100644 index 0000000..02c08cc --- /dev/null +++ b/modules/highlighter/styles/base16/bespin.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Bespin + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme bespin + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #28211c Default Background +base01 #36312e Lighter Background (Used for status bars, line number and folding marks) +base02 #5e5d5c Selection Background +base03 #666666 Comments, Invisibles, Line Highlighting +base04 #797977 Dark Foreground (Used for status bars) +base05 #8a8986 Default Foreground, Caret, Delimiters, Operators +base06 #9d9b97 Light Foreground (Not often used) +base07 #baae9e Light Background (Not often used) +base08 #cf6a4c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cf7d34 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f9ee98 Classes, Markup Bold, Search Text Background +base0B #54be0d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #afc4db Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5ea6ea Functions, Methods, Attribute IDs, Headings +base0E #9b859d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #937121 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8a8986; + background: #28211c +} +.hljs::selection, +.hljs ::selection { + background-color: #5e5d5c; + color: #8a8986 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #666666 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #666666 +} +/* base04 - #797977 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #797977 +} +/* base05 - #8a8986 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8a8986 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cf6a4c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cf7d34 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f9ee98 +} +.hljs-strong { + font-weight: bold; + color: #f9ee98 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #54be0d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #afc4db +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5ea6ea +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9b859d +} +.hljs-emphasis { + color: #9b859d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #937121 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-bathory.css b/modules/highlighter/styles/base16/black-metal-bathory.css new file mode 100644 index 0000000..05265a6 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-bathory.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Bathory) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-bathory + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e78a53 Classes, Markup Bold, Search Text Background +base0B #fbcb97 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e78a53 +} +.hljs-strong { + font-weight: bold; + color: #e78a53 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #fbcb97 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-burzum.css b/modules/highlighter/styles/base16/black-metal-burzum.css new file mode 100644 index 0000000..1ec27ec --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-burzum.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Burzum) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-burzum + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #99bbaa Classes, Markup Bold, Search Text Background +base0B #ddeecc Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #99bbaa +} +.hljs-strong { + font-weight: bold; + color: #99bbaa +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ddeecc +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-dark-funeral.css b/modules/highlighter/styles/base16/black-metal-dark-funeral.css new file mode 100644 index 0000000..97d59f3 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-dark-funeral.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Dark Funeral) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-dark-funeral + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #5f81a5 Classes, Markup Bold, Search Text Background +base0B #d0dfee Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #5f81a5 +} +.hljs-strong { + font-weight: bold; + color: #5f81a5 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #d0dfee +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-gorgoroth.css b/modules/highlighter/styles/base16/black-metal-gorgoroth.css new file mode 100644 index 0000000..a819c58 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-gorgoroth.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Gorgoroth) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-gorgoroth + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8c7f70 Classes, Markup Bold, Search Text Background +base0B #9b8d7f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8c7f70 +} +.hljs-strong { + font-weight: bold; + color: #8c7f70 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #9b8d7f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-immortal.css b/modules/highlighter/styles/base16/black-metal-immortal.css new file mode 100644 index 0000000..b6ed971 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-immortal.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Immortal) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-immortal + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #556677 Classes, Markup Bold, Search Text Background +base0B #7799bb Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #556677 +} +.hljs-strong { + font-weight: bold; + color: #556677 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7799bb +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-khold.css b/modules/highlighter/styles/base16/black-metal-khold.css new file mode 100644 index 0000000..645949a --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-khold.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Khold) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-khold + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #974b46 Classes, Markup Bold, Search Text Background +base0B #eceee3 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #974b46 +} +.hljs-strong { + font-weight: bold; + color: #974b46 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #eceee3 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-marduk.css b/modules/highlighter/styles/base16/black-metal-marduk.css new file mode 100644 index 0000000..23bd563 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-marduk.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Marduk) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-marduk + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #626b67 Classes, Markup Bold, Search Text Background +base0B #a5aaa7 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #626b67 +} +.hljs-strong { + font-weight: bold; + color: #626b67 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a5aaa7 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-mayhem.css b/modules/highlighter/styles/base16/black-metal-mayhem.css new file mode 100644 index 0000000..29537c9 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-mayhem.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Mayhem) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-mayhem + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #eecc6c Classes, Markup Bold, Search Text Background +base0B #f3ecd4 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #eecc6c +} +.hljs-strong { + font-weight: bold; + color: #eecc6c +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f3ecd4 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-nile.css b/modules/highlighter/styles/base16/black-metal-nile.css new file mode 100644 index 0000000..25cd2a7 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-nile.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Nile) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-nile + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #777755 Classes, Markup Bold, Search Text Background +base0B #aa9988 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #777755 +} +.hljs-strong { + font-weight: bold; + color: #777755 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #aa9988 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-venom.css b/modules/highlighter/styles/base16/black-metal-venom.css new file mode 100644 index 0000000..9148f3e --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-venom.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Venom) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-venom + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #79241f Classes, Markup Bold, Search Text Background +base0B #f8f7f2 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #79241f +} +.hljs-strong { + font-weight: bold; + color: #79241f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f8f7f2 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal.css b/modules/highlighter/styles/base16/black-metal.css new file mode 100644 index 0000000..cf86944 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06666 Classes, Markup Bold, Search Text Background +base0B #dd9999 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06666 +} +.hljs-strong { + font-weight: bold; + color: #a06666 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #dd9999 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brewer.css b/modules/highlighter/styles/base16/brewer.css new file mode 100644 index 0000000..900e867 --- /dev/null +++ b/modules/highlighter/styles/base16/brewer.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brewer + Author: Timothée Poisot (http://github.com/tpoisot) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brewer + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0c0d0e Default Background +base01 #2e2f30 Lighter Background (Used for status bars, line number and folding marks) +base02 #515253 Selection Background +base03 #737475 Comments, Invisibles, Line Highlighting +base04 #959697 Dark Foreground (Used for status bars) +base05 #b7b8b9 Default Foreground, Caret, Delimiters, Operators +base06 #dadbdc Light Foreground (Not often used) +base07 #fcfdfe Light Background (Not often used) +base08 #e31a1c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e6550d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dca060 Classes, Markup Bold, Search Text Background +base0B #31a354 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #80b1d3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3182bd Functions, Methods, Attribute IDs, Headings +base0E #756bb1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b15928 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b7b8b9; + background: #0c0d0e +} +.hljs::selection, +.hljs ::selection { + background-color: #515253; + color: #b7b8b9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #737475 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #737475 +} +/* base04 - #959697 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #959697 +} +/* base05 - #b7b8b9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b7b8b9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e31a1c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e6550d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dca060 +} +.hljs-strong { + font-weight: bold; + color: #dca060 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #31a354 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #80b1d3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3182bd +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #756bb1 +} +.hljs-emphasis { + color: #756bb1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b15928 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/bright.css b/modules/highlighter/styles/base16/bright.css new file mode 100644 index 0000000..a320ce8 --- /dev/null +++ b/modules/highlighter/styles/base16/bright.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Bright + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme bright + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #505050 Selection Background +base03 #b0b0b0 Comments, Invisibles, Line Highlighting +base04 #d0d0d0 Dark Foreground (Used for status bars) +base05 #e0e0e0 Default Foreground, Caret, Delimiters, Operators +base06 #f5f5f5 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #fb0120 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fc6d24 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fda331 Classes, Markup Bold, Search Text Background +base0B #a1c659 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #76c7b7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6fb3d2 Functions, Methods, Attribute IDs, Headings +base0E #d381c3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #be643c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0e0e0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #505050; + color: #e0e0e0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b0b0b0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b0b0b0 +} +/* base04 - #d0d0d0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #d0d0d0 +} +/* base05 - #e0e0e0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0e0e0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb0120 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fc6d24 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fda331 +} +.hljs-strong { + font-weight: bold; + color: #fda331 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1c659 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #76c7b7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6fb3d2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d381c3 +} +.hljs-emphasis { + color: #d381c3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #be643c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brogrammer.css b/modules/highlighter/styles/base16/brogrammer.css new file mode 100644 index 0000000..ee6cc74 --- /dev/null +++ b/modules/highlighter/styles/base16/brogrammer.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brogrammer + Author: Vik Ramanujam (http://github.com/piggyslasher) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brogrammer + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1f1f1f Default Background +base01 #f81118 Lighter Background (Used for status bars, line number and folding marks) +base02 #2dc55e Selection Background +base03 #ecba0f Comments, Invisibles, Line Highlighting +base04 #2a84d2 Dark Foreground (Used for status bars) +base05 #4e5ab7 Default Foreground, Caret, Delimiters, Operators +base06 #1081d6 Light Foreground (Not often used) +base07 #d6dbe5 Light Background (Not often used) +base08 #d6dbe5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #de352e Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #1dd361 Classes, Markup Bold, Search Text Background +base0B #f3bd09 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1081d6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5350b9 Functions, Methods, Attribute IDs, Headings +base0E #0f7ddb Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ffffff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #4e5ab7; + background: #1f1f1f +} +.hljs::selection, +.hljs ::selection { + background-color: #2dc55e; + color: #4e5ab7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #ecba0f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #ecba0f +} +/* base04 - #2a84d2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #2a84d2 +} +/* base05 - #4e5ab7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #4e5ab7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d6dbe5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #de352e +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #1dd361 +} +.hljs-strong { + font-weight: bold; + color: #1dd361 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f3bd09 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1081d6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5350b9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #0f7ddb +} +.hljs-emphasis { + color: #0f7ddb; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ffffff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brush-trees-dark.css b/modules/highlighter/styles/base16/brush-trees-dark.css new file mode 100644 index 0000000..d3e310e --- /dev/null +++ b/modules/highlighter/styles/base16/brush-trees-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brush Trees Dark + Author: Abraham White + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brush-trees-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #485867 Default Background +base01 #5A6D7A Lighter Background (Used for status bars, line number and folding marks) +base02 #6D828E Selection Background +base03 #8299A1 Comments, Invisibles, Line Highlighting +base04 #98AFB5 Dark Foreground (Used for status bars) +base05 #B0C5C8 Default Foreground, Caret, Delimiters, Operators +base06 #C9DBDC Light Foreground (Not often used) +base07 #E3EFEF Light Background (Not often used) +base08 #b38686 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d8bba2 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #aab386 Classes, Markup Bold, Search Text Background +base0B #87b386 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86b3b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #868cb3 Functions, Methods, Attribute IDs, Headings +base0E #b386b2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b39f9f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #B0C5C8; + background: #485867 +} +.hljs::selection, +.hljs ::selection { + background-color: #6D828E; + color: #B0C5C8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #8299A1 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #8299A1 +} +/* base04 - #98AFB5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #98AFB5 +} +/* base05 - #B0C5C8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #B0C5C8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b38686 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d8bba2 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #aab386 +} +.hljs-strong { + font-weight: bold; + color: #aab386 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #87b386 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86b3b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #868cb3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b386b2 +} +.hljs-emphasis { + color: #b386b2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b39f9f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brush-trees.css b/modules/highlighter/styles/base16/brush-trees.css new file mode 100644 index 0000000..15ecfc5 --- /dev/null +++ b/modules/highlighter/styles/base16/brush-trees.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brush Trees + Author: Abraham White + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brush-trees + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #E3EFEF Default Background +base01 #C9DBDC Lighter Background (Used for status bars, line number and folding marks) +base02 #B0C5C8 Selection Background +base03 #98AFB5 Comments, Invisibles, Line Highlighting +base04 #8299A1 Dark Foreground (Used for status bars) +base05 #6D828E Default Foreground, Caret, Delimiters, Operators +base06 #5A6D7A Light Foreground (Not often used) +base07 #485867 Light Background (Not often used) +base08 #b38686 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d8bba2 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #aab386 Classes, Markup Bold, Search Text Background +base0B #87b386 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86b3b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #868cb3 Functions, Methods, Attribute IDs, Headings +base0E #b386b2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b39f9f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #6D828E; + background: #E3EFEF +} +.hljs::selection, +.hljs ::selection { + background-color: #B0C5C8; + color: #6D828E +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #98AFB5 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #98AFB5 +} +/* base04 - #8299A1 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8299A1 +} +/* base05 - #6D828E - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #6D828E +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b38686 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d8bba2 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #aab386 +} +.hljs-strong { + font-weight: bold; + color: #aab386 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #87b386 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86b3b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #868cb3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b386b2 +} +.hljs-emphasis { + color: #b386b2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b39f9f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/chalk.css b/modules/highlighter/styles/base16/chalk.css new file mode 100644 index 0000000..c0dfadd --- /dev/null +++ b/modules/highlighter/styles/base16/chalk.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Chalk + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme chalk + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151515 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #b0b0b0 Dark Foreground (Used for status bars) +base05 #d0d0d0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #f5f5f5 Light Background (Not often used) +base08 #fb9fb1 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eda987 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ddb26f Classes, Markup Bold, Search Text Background +base0B #acc267 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #12cfc0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6fc2ef Functions, Methods, Attribute IDs, Headings +base0E #e1a3ee Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #deaf8f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0d0d0; + background: #151515 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #d0d0d0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #b0b0b0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b0b0b0 +} +/* base05 - #d0d0d0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0d0d0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb9fb1 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eda987 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ddb26f +} +.hljs-strong { + font-weight: bold; + color: #ddb26f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #acc267 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #12cfc0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6fc2ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #e1a3ee +} +.hljs-emphasis { + color: #e1a3ee; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #deaf8f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/circus.css b/modules/highlighter/styles/base16/circus.css new file mode 100644 index 0000000..25efd46 --- /dev/null +++ b/modules/highlighter/styles/base16/circus.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Circus + Author: Stephan Boyer (https://github.com/stepchowfun) and Esther Wang (https://github.com/ewang12) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme circus + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #191919 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #5f5a60 Comments, Invisibles, Line Highlighting +base04 #505050 Dark Foreground (Used for status bars) +base05 #a7a7a7 Default Foreground, Caret, Delimiters, Operators +base06 #808080 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dc657d Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #4bb1a7 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c3ba63 Classes, Markup Bold, Search Text Background +base0B #84b97c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4bb1a7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #639ee4 Functions, Methods, Attribute IDs, Headings +base0E #b888e2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b888e2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a7a7a7; + background: #191919 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #a7a7a7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f5a60 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f5a60 +} +/* base04 - #505050 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #505050 +} +/* base05 - #a7a7a7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a7a7a7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dc657d +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #4bb1a7 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c3ba63 +} +.hljs-strong { + font-weight: bold; + color: #c3ba63 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #84b97c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4bb1a7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #639ee4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b888e2 +} +.hljs-emphasis { + color: #b888e2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b888e2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/classic-dark.css b/modules/highlighter/styles/base16/classic-dark.css new file mode 100644 index 0000000..ca1ea2d --- /dev/null +++ b/modules/highlighter/styles/base16/classic-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Classic Dark + Author: Jason Heeris (http://heeris.id.au) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme classic-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151515 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #B0B0B0 Dark Foreground (Used for status bars) +base05 #D0D0D0 Default Foreground, Caret, Delimiters, Operators +base06 #E0E0E0 Light Foreground (Not often used) +base07 #F5F5F5 Light Background (Not often used) +base08 #AC4142 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D28445 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F4BF75 Classes, Markup Bold, Search Text Background +base0B #90A959 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #75B5AA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6A9FB5 Functions, Methods, Attribute IDs, Headings +base0E #AA759F Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8F5536 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0D0; + background: #151515 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #D0D0D0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #B0B0B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B0B0B0 +} +/* base05 - #D0D0D0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0D0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #AC4142 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D28445 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F4BF75 +} +.hljs-strong { + font-weight: bold; + color: #F4BF75 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #90A959 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #75B5AA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6A9FB5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AA759F +} +.hljs-emphasis { + color: #AA759F; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8F5536 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/classic-light.css b/modules/highlighter/styles/base16/classic-light.css new file mode 100644 index 0000000..3e9a627 --- /dev/null +++ b/modules/highlighter/styles/base16/classic-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Classic Light + Author: Jason Heeris (http://heeris.id.au) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme classic-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #F5F5F5 Default Background +base01 #E0E0E0 Lighter Background (Used for status bars, line number and folding marks) +base02 #D0D0D0 Selection Background +base03 #B0B0B0 Comments, Invisibles, Line Highlighting +base04 #505050 Dark Foreground (Used for status bars) +base05 #303030 Default Foreground, Caret, Delimiters, Operators +base06 #202020 Light Foreground (Not often used) +base07 #151515 Light Background (Not often used) +base08 #AC4142 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D28445 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F4BF75 Classes, Markup Bold, Search Text Background +base0B #90A959 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #75B5AA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6A9FB5 Functions, Methods, Attribute IDs, Headings +base0E #AA759F Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8F5536 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #303030; + background: #F5F5F5 +} +.hljs::selection, +.hljs ::selection { + background-color: #D0D0D0; + color: #303030 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #B0B0B0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #B0B0B0 +} +/* base04 - #505050 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #505050 +} +/* base05 - #303030 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #303030 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #AC4142 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D28445 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F4BF75 +} +.hljs-strong { + font-weight: bold; + color: #F4BF75 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #90A959 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #75B5AA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6A9FB5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AA759F +} +.hljs-emphasis { + color: #AA759F; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8F5536 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/codeschool.css b/modules/highlighter/styles/base16/codeschool.css new file mode 100644 index 0000000..1ae0db7 --- /dev/null +++ b/modules/highlighter/styles/base16/codeschool.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Codeschool + Author: blockloop + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme codeschool + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #232c31 Default Background +base01 #1c3657 Lighter Background (Used for status bars, line number and folding marks) +base02 #2a343a Selection Background +base03 #3f4944 Comments, Invisibles, Line Highlighting +base04 #84898c Dark Foreground (Used for status bars) +base05 #9ea7a6 Default Foreground, Caret, Delimiters, Operators +base06 #a7cfa3 Light Foreground (Not often used) +base07 #b5d8f6 Light Background (Not often used) +base08 #2a5491 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #43820d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a03b1e Classes, Markup Bold, Search Text Background +base0B #237986 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #b02f30 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #484d79 Functions, Methods, Attribute IDs, Headings +base0E #c59820 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c98344 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #9ea7a6; + background: #232c31 +} +.hljs::selection, +.hljs ::selection { + background-color: #2a343a; + color: #9ea7a6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #3f4944 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #3f4944 +} +/* base04 - #84898c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #84898c +} +/* base05 - #9ea7a6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #9ea7a6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #2a5491 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #43820d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a03b1e +} +.hljs-strong { + font-weight: bold; + color: #a03b1e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #237986 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #b02f30 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #484d79 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c59820 +} +.hljs-emphasis { + color: #c59820; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c98344 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/colors.css b/modules/highlighter/styles/base16/colors.css new file mode 100644 index 0000000..12bf433 --- /dev/null +++ b/modules/highlighter/styles/base16/colors.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Colors + Author: mrmrs (http://clrs.cc) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme colors + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #111111 Default Background +base01 #333333 Lighter Background (Used for status bars, line number and folding marks) +base02 #555555 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #bbbbbb Default Foreground, Caret, Delimiters, Operators +base06 #dddddd Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff4136 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff851b Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffdc00 Classes, Markup Bold, Search Text Background +base0B #2ecc40 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7fdbff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0074d9 Functions, Methods, Attribute IDs, Headings +base0E #b10dc9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #85144b Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #bbbbbb; + background: #111111 +} +.hljs::selection, +.hljs ::selection { + background-color: #555555; + color: #bbbbbb +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #bbbbbb - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #bbbbbb +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff4136 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff851b +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffdc00 +} +.hljs-strong { + font-weight: bold; + color: #ffdc00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2ecc40 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7fdbff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0074d9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b10dc9 +} +.hljs-emphasis { + color: #b10dc9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #85144b +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/cupcake.css b/modules/highlighter/styles/base16/cupcake.css new file mode 100644 index 0000000..a292e27 --- /dev/null +++ b/modules/highlighter/styles/base16/cupcake.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Cupcake + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme cupcake + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fbf1f2 Default Background +base01 #f2f1f4 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d5dd Selection Background +base03 #bfb9c6 Comments, Invisibles, Line Highlighting +base04 #a59daf Dark Foreground (Used for status bars) +base05 #8b8198 Default Foreground, Caret, Delimiters, Operators +base06 #72677E Light Foreground (Not often used) +base07 #585062 Light Background (Not often used) +base08 #D57E85 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #EBB790 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #DCB16C Classes, Markup Bold, Search Text Background +base0B #A3B367 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #69A9A7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7297B9 Functions, Methods, Attribute IDs, Headings +base0E #BB99B4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #BAA58C Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8b8198; + background: #fbf1f2 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d5dd; + color: #8b8198 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bfb9c6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bfb9c6 +} +/* base04 - #a59daf - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a59daf +} +/* base05 - #8b8198 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8b8198 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #D57E85 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #EBB790 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #DCB16C +} +.hljs-strong { + font-weight: bold; + color: #DCB16C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #A3B367 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #69A9A7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7297B9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #BB99B4 +} +.hljs-emphasis { + color: #BB99B4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #BAA58C +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/cupertino.css b/modules/highlighter/styles/base16/cupertino.css new file mode 100644 index 0000000..53e947c --- /dev/null +++ b/modules/highlighter/styles/base16/cupertino.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Cupertino + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme cupertino + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #c0c0c0 Lighter Background (Used for status bars, line number and folding marks) +base02 #c0c0c0 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #404040 Default Foreground, Caret, Delimiters, Operators +base06 #404040 Light Foreground (Not often used) +base07 #5e5e5e Light Background (Not often used) +base08 #c41a15 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb8500 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #826b28 Classes, Markup Bold, Search Text Background +base0B #007400 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #318495 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000ff Functions, Methods, Attribute IDs, Headings +base0E #a90d91 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #826b28 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #404040; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c0c0c0; + color: #404040 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #404040 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #404040 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c41a15 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb8500 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #826b28 +} +.hljs-strong { + font-weight: bold; + color: #826b28 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #007400 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #318495 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a90d91 +} +.hljs-emphasis { + color: #a90d91; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #826b28 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/danqing.css b/modules/highlighter/styles/base16/danqing.css new file mode 100644 index 0000000..aa8cd17 --- /dev/null +++ b/modules/highlighter/styles/base16/danqing.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: DanQing + Author: Wenhan Zhu (Cosmos) (zhuwenhan950913@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme danqing + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d302f Default Background +base01 #434846 Lighter Background (Used for status bars, line number and folding marks) +base02 #5a605d Selection Background +base03 #9da8a3 Comments, Invisibles, Line Highlighting +base04 #cad8d2 Dark Foreground (Used for status bars) +base05 #e0f0eF Default Foreground, Caret, Delimiters, Operators +base06 #ecf6f2 Light Foreground (Not often used) +base07 #fcfefd Light Background (Not often used) +base08 #F9906F Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #B38A61 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F0C239 Classes, Markup Bold, Search Text Background +base0B #8AB361 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #30DFF3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #B0A4E3 Functions, Methods, Attribute IDs, Headings +base0E #CCA4E3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #CA6924 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0f0eF; + background: #2d302f +} +.hljs::selection, +.hljs ::selection { + background-color: #5a605d; + color: #e0f0eF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9da8a3 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9da8a3 +} +/* base04 - #cad8d2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #cad8d2 +} +/* base05 - #e0f0eF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0f0eF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F9906F +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #B38A61 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F0C239 +} +.hljs-strong { + font-weight: bold; + color: #F0C239 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8AB361 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #30DFF3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #B0A4E3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #CCA4E3 +} +.hljs-emphasis { + color: #CCA4E3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #CA6924 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/darcula.css b/modules/highlighter/styles/base16/darcula.css new file mode 100644 index 0000000..e9fa32d --- /dev/null +++ b/modules/highlighter/styles/base16/darcula.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Darcula + Author: jetbrains + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme darcula + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2b2b2b Default Background +base01 #323232 Lighter Background (Used for status bars, line number and folding marks) +base02 #323232 Selection Background +base03 #606366 Comments, Invisibles, Line Highlighting +base04 #a4a3a3 Dark Foreground (Used for status bars) +base05 #a9b7c6 Default Foreground, Caret, Delimiters, Operators +base06 #ffc66d Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #4eade5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #689757 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bbb529 Classes, Markup Bold, Search Text Background +base0B #6a8759 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #629755 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #9876aa Functions, Methods, Attribute IDs, Headings +base0E #cc7832 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #808080 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a9b7c6; + background: #2b2b2b +} +.hljs::selection, +.hljs ::selection { + background-color: #323232; + color: #a9b7c6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #606366 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #606366 +} +/* base04 - #a4a3a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a4a3a3 +} +/* base05 - #a9b7c6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a9b7c6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #4eade5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #689757 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bbb529 +} +.hljs-strong { + font-weight: bold; + color: #bbb529 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6a8759 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #629755 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #9876aa +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc7832 +} +.hljs-emphasis { + color: #cc7832; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #808080 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/dark-violet.css b/modules/highlighter/styles/base16/dark-violet.css new file mode 100644 index 0000000..8f6e6cf --- /dev/null +++ b/modules/highlighter/styles/base16/dark-violet.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Dark Violet + Author: ruler501 (https://github.com/ruler501/base16-darkviolet) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme dark-violet + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #231a40 Lighter Background (Used for status bars, line number and folding marks) +base02 #432d59 Selection Background +base03 #593380 Comments, Invisibles, Line Highlighting +base04 #00ff00 Dark Foreground (Used for status bars) +base05 #b08ae6 Default Foreground, Caret, Delimiters, Operators +base06 #9045e6 Light Foreground (Not often used) +base07 #a366ff Light Background (Not often used) +base08 #a82ee6 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bb66cc Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f29df2 Classes, Markup Bold, Search Text Background +base0B #4595e6 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #40dfff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4136d9 Functions, Methods, Attribute IDs, Headings +base0E #7e5ce6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a886bf Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b08ae6; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #432d59; + color: #b08ae6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #593380 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #593380 +} +/* base04 - #00ff00 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #00ff00 +} +/* base05 - #b08ae6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b08ae6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #a82ee6 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bb66cc +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f29df2 +} +.hljs-strong { + font-weight: bold; + color: #f29df2 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4595e6 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #40dfff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4136d9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7e5ce6 +} +.hljs-emphasis { + color: #7e5ce6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a886bf +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/darkmoss.css b/modules/highlighter/styles/base16/darkmoss.css new file mode 100644 index 0000000..5a619df --- /dev/null +++ b/modules/highlighter/styles/base16/darkmoss.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: darkmoss + Author: Gabriel Avanzi (https://github.com/avanzzzi) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme darkmoss + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #171e1f Default Background +base01 #252c2d Lighter Background (Used for status bars, line number and folding marks) +base02 #373c3d Selection Background +base03 #555e5f Comments, Invisibles, Line Highlighting +base04 #818f80 Dark Foreground (Used for status bars) +base05 #c7c7a5 Default Foreground, Caret, Delimiters, Operators +base06 #e3e3c8 Light Foreground (Not often used) +base07 #e1eaef Light Background (Not often used) +base08 #ff4658 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e6db74 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fdb11f Classes, Markup Bold, Search Text Background +base0B #499180 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #66d9ef Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #498091 Functions, Methods, Attribute IDs, Headings +base0E #9bc0c8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d27b53 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c7c7a5; + background: #171e1f +} +.hljs::selection, +.hljs ::selection { + background-color: #373c3d; + color: #c7c7a5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555e5f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555e5f +} +/* base04 - #818f80 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #818f80 +} +/* base05 - #c7c7a5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c7c7a5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff4658 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e6db74 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fdb11f +} +.hljs-strong { + font-weight: bold; + color: #fdb11f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #499180 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #66d9ef +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #498091 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9bc0c8 +} +.hljs-emphasis { + color: #9bc0c8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d27b53 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/darktooth.css b/modules/highlighter/styles/base16/darktooth.css new file mode 100644 index 0000000..bffff9c --- /dev/null +++ b/modules/highlighter/styles/base16/darktooth.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Darktooth + Author: Jason Milkins (https://github.com/jasonm23) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme darktooth + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1D2021 Default Background +base01 #32302F Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665C54 Comments, Invisibles, Line Highlighting +base04 #928374 Dark Foreground (Used for status bars) +base05 #A89984 Default Foreground, Caret, Delimiters, Operators +base06 #D5C4A1 Light Foreground (Not often used) +base07 #FDF4C1 Light Background (Not often used) +base08 #FB543F Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FE8625 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FAC03B Classes, Markup Bold, Search Text Background +base0B #95C085 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8BA59B Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0D6678 Functions, Methods, Attribute IDs, Headings +base0E #8F4673 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #A87322 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #A89984; + background: #1D2021 +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #A89984 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665C54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665C54 +} +/* base04 - #928374 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #928374 +} +/* base05 - #A89984 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #A89984 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FB543F +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FE8625 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FAC03B +} +.hljs-strong { + font-weight: bold; + color: #FAC03B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #95C085 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8BA59B +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0D6678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8F4673 +} +.hljs-emphasis { + color: #8F4673; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #A87322 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/decaf.css b/modules/highlighter/styles/base16/decaf.css new file mode 100644 index 0000000..bccfa1c --- /dev/null +++ b/modules/highlighter/styles/base16/decaf.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Decaf + Author: Alex Mirrington (https://github.com/alexmirrington) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme decaf + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff7f7b Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffbf70 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffd67c Classes, Markup Bold, Search Text Background +base0B #beda78 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #bed6ff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #90bee1 Functions, Methods, Attribute IDs, Headings +base0E #efb3f7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ff93b3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff7f7b +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffbf70 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffd67c +} +.hljs-strong { + font-weight: bold; + color: #ffd67c +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #beda78 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #bed6ff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #90bee1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #efb3f7 +} +.hljs-emphasis { + color: #efb3f7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ff93b3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/default-dark.css b/modules/highlighter/styles/base16/default-dark.css new file mode 100644 index 0000000..0b7cb99 --- /dev/null +++ b/modules/highlighter/styles/base16/default-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Default Dark + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme default-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #181818 Default Background +base01 #282828 Lighter Background (Used for status bars, line number and folding marks) +base02 #383838 Selection Background +base03 #585858 Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #d8d8d8 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #ab4642 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f7ca88 Classes, Markup Bold, Search Text Background +base0B #a1b56c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86c1b9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cafc2 Functions, Methods, Attribute IDs, Headings +base0E #ba8baf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d8d8d8; + background: #181818 +} +.hljs::selection, +.hljs ::selection { + background-color: #383838; + color: #d8d8d8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #585858 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #585858 +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #d8d8d8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d8d8d8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ab4642 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f7ca88 +} +.hljs-strong { + font-weight: bold; + color: #f7ca88 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1b56c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86c1b9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cafc2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ba8baf +} +.hljs-emphasis { + color: #ba8baf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/default-light.css b/modules/highlighter/styles/base16/default-light.css new file mode 100644 index 0000000..16d5e9e --- /dev/null +++ b/modules/highlighter/styles/base16/default-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Default Light + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme default-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f8 Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d8d8 Selection Background +base03 #b8b8b8 Comments, Invisibles, Line Highlighting +base04 #585858 Dark Foreground (Used for status bars) +base05 #383838 Default Foreground, Caret, Delimiters, Operators +base06 #282828 Light Foreground (Not often used) +base07 #181818 Light Background (Not often used) +base08 #ab4642 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f7ca88 Classes, Markup Bold, Search Text Background +base0B #a1b56c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86c1b9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cafc2 Functions, Methods, Attribute IDs, Headings +base0E #ba8baf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383838; + background: #f8f8f8 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d8d8; + color: #383838 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b8b8b8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b8b8b8 +} +/* base04 - #585858 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #585858 +} +/* base05 - #383838 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383838 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ab4642 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f7ca88 +} +.hljs-strong { + font-weight: bold; + color: #f7ca88 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1b56c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86c1b9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cafc2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ba8baf +} +.hljs-emphasis { + color: #ba8baf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/dirtysea.css b/modules/highlighter/styles/base16/dirtysea.css new file mode 100644 index 0000000..6011c9e --- /dev/null +++ b/modules/highlighter/styles/base16/dirtysea.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: dirtysea + Author: Kahlil (Kal) Hodgson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme dirtysea + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #e0e0e0 Default Background +base01 #d0dad0 Lighter Background (Used for status bars, line number and folding marks) +base02 #d0d0d0 Selection Background +base03 #707070 Comments, Invisibles, Line Highlighting +base04 #202020 Dark Foreground (Used for status bars) +base05 #000000 Default Foreground, Caret, Delimiters, Operators +base06 #f8f8f8 Light Foreground (Not often used) +base07 #c4d9c4 Light Background (Not often used) +base08 #840000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #006565 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #755B00 Classes, Markup Bold, Search Text Background +base0B #730073 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #755B00 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #007300 Functions, Methods, Attribute IDs, Headings +base0E #000090 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #755B00 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #000000; + background: #e0e0e0 +} +.hljs::selection, +.hljs ::selection { + background-color: #d0d0d0; + color: #000000 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #707070 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #707070 +} +/* base04 - #202020 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #202020 +} +/* base05 - #000000 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #000000 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #840000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #006565 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #755B00 +} +.hljs-strong { + font-weight: bold; + color: #755B00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #730073 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #755B00 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #007300 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #000090 +} +.hljs-emphasis { + color: #000090; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #755B00 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/dracula.css b/modules/highlighter/styles/base16/dracula.css new file mode 100644 index 0000000..d29e4b3 --- /dev/null +++ b/modules/highlighter/styles/base16/dracula.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Dracula + Author: Mike Barkmin (http://github.com/mikebarkmin) based on Dracula Theme (http://github.com/dracula) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme dracula + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282936 Default Background +base01 #3a3c4e Lighter Background (Used for status bars, line number and folding marks) +base02 #4d4f68 Selection Background +base03 #626483 Comments, Invisibles, Line Highlighting +base04 #62d6e8 Dark Foreground (Used for status bars) +base05 #e9e9f4 Default Foreground, Caret, Delimiters, Operators +base06 #f1f2f8 Light Foreground (Not often used) +base07 #f7f7fb Light Background (Not often used) +base08 #ea51b2 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b45bcf Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #00f769 Classes, Markup Bold, Search Text Background +base0B #ebff87 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #a1efe4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #62d6e8 Functions, Methods, Attribute IDs, Headings +base0E #b45bcf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #00f769 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e9e9f4; + background: #282936 +} +.hljs::selection, +.hljs ::selection { + background-color: #4d4f68; + color: #e9e9f4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #626483 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #626483 +} +/* base04 - #62d6e8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #62d6e8 +} +/* base05 - #e9e9f4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e9e9f4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ea51b2 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b45bcf +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #00f769 +} +.hljs-strong { + font-weight: bold; + color: #00f769 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ebff87 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #a1efe4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #62d6e8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b45bcf +} +.hljs-emphasis { + color: #b45bcf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #00f769 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/edge-dark.css b/modules/highlighter/styles/base16/edge-dark.css new file mode 100644 index 0000000..76b650b --- /dev/null +++ b/modules/highlighter/styles/base16/edge-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Edge Dark + Author: cjayross (https://github.com/cjayross) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme edge-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #262729 Default Background +base01 #88909f Lighter Background (Used for status bars, line number and folding marks) +base02 #b7bec9 Selection Background +base03 #3e4249 Comments, Invisibles, Line Highlighting +base04 #73b3e7 Dark Foreground (Used for status bars) +base05 #b7bec9 Default Foreground, Caret, Delimiters, Operators +base06 #d390e7 Light Foreground (Not often used) +base07 #3e4249 Light Background (Not often used) +base08 #e77171 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e77171 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dbb774 Classes, Markup Bold, Search Text Background +base0B #a1bf78 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5ebaa5 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #73b3e7 Functions, Methods, Attribute IDs, Headings +base0E #d390e7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5ebaa5 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b7bec9; + background: #262729 +} +.hljs::selection, +.hljs ::selection { + background-color: #b7bec9; + color: #b7bec9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #3e4249 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #3e4249 +} +/* base04 - #73b3e7 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #73b3e7 +} +/* base05 - #b7bec9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b7bec9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e77171 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e77171 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dbb774 +} +.hljs-strong { + font-weight: bold; + color: #dbb774 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1bf78 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5ebaa5 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #73b3e7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d390e7 +} +.hljs-emphasis { + color: #d390e7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5ebaa5 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/edge-light.css b/modules/highlighter/styles/base16/edge-light.css new file mode 100644 index 0000000..1f85ab2 --- /dev/null +++ b/modules/highlighter/styles/base16/edge-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Edge Light + Author: cjayross (https://github.com/cjayross) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme edge-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fafafa Default Background +base01 #7c9f4b Lighter Background (Used for status bars, line number and folding marks) +base02 #d69822 Selection Background +base03 #5e646f Comments, Invisibles, Line Highlighting +base04 #6587bf Dark Foreground (Used for status bars) +base05 #5e646f Default Foreground, Caret, Delimiters, Operators +base06 #b870ce Light Foreground (Not often used) +base07 #5e646f Light Background (Not often used) +base08 #db7070 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #db7070 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #d69822 Classes, Markup Bold, Search Text Background +base0B #7c9f4b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #509c93 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6587bf Functions, Methods, Attribute IDs, Headings +base0E #b870ce Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #509c93 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5e646f; + background: #fafafa +} +.hljs::selection, +.hljs ::selection { + background-color: #d69822; + color: #5e646f +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5e646f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5e646f +} +/* base04 - #6587bf - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6587bf +} +/* base05 - #5e646f - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5e646f +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #db7070 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #db7070 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #d69822 +} +.hljs-strong { + font-weight: bold; + color: #d69822 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7c9f4b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #509c93 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6587bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b870ce +} +.hljs-emphasis { + color: #b870ce; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #509c93 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/eighties.css b/modules/highlighter/styles/base16/eighties.css new file mode 100644 index 0000000..149acef --- /dev/null +++ b/modules/highlighter/styles/base16/eighties.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Eighties + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme eighties + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #747369 Comments, Invisibles, Line Highlighting +base04 #a09f93 Dark Foreground (Used for status bars) +base05 #d3d0c8 Default Foreground, Caret, Delimiters, Operators +base06 #e8e6df Light Foreground (Not often used) +base07 #f2f0ec Light Background (Not often used) +base08 #f2777a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f99157 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffcc66 Classes, Markup Bold, Search Text Background +base0B #99cc99 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #66cccc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6699cc Functions, Methods, Attribute IDs, Headings +base0E #cc99cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d27b53 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d3d0c8; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #d3d0c8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #747369 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #747369 +} +/* base04 - #a09f93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a09f93 +} +/* base05 - #d3d0c8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d3d0c8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f2777a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f99157 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffcc66 +} +.hljs-strong { + font-weight: bold; + color: #ffcc66 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99cc99 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #66cccc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6699cc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc99cc +} +.hljs-emphasis { + color: #cc99cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d27b53 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/embers.css b/modules/highlighter/styles/base16/embers.css new file mode 100644 index 0000000..4172ef6 --- /dev/null +++ b/modules/highlighter/styles/base16/embers.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Embers + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme embers + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #16130F Default Background +base01 #2C2620 Lighter Background (Used for status bars, line number and folding marks) +base02 #433B32 Selection Background +base03 #5A5047 Comments, Invisibles, Line Highlighting +base04 #8A8075 Dark Foreground (Used for status bars) +base05 #A39A90 Default Foreground, Caret, Delimiters, Operators +base06 #BEB6AE Light Foreground (Not often used) +base07 #DBD6D1 Light Background (Not often used) +base08 #826D57 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #828257 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #6D8257 Classes, Markup Bold, Search Text Background +base0B #57826D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #576D82 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6D5782 Functions, Methods, Attribute IDs, Headings +base0E #82576D Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #825757 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #A39A90; + background: #16130F +} +.hljs::selection, +.hljs ::selection { + background-color: #433B32; + color: #A39A90 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5A5047 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5A5047 +} +/* base04 - #8A8075 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8A8075 +} +/* base05 - #A39A90 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #A39A90 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #826D57 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #828257 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #6D8257 +} +.hljs-strong { + font-weight: bold; + color: #6D8257 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #57826D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #576D82 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6D5782 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #82576D +} +.hljs-emphasis { + color: #82576D; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #825757 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-dark.css b/modules/highlighter/styles/base16/equilibrium-dark.css new file mode 100644 index 0000000..608a02e --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Dark + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0c1118 Default Background +base01 #181c22 Lighter Background (Used for status bars, line number and folding marks) +base02 #22262d Selection Background +base03 #7b776e Comments, Invisibles, Line Highlighting +base04 #949088 Dark Foreground (Used for status bars) +base05 #afaba2 Default Foreground, Caret, Delimiters, Operators +base06 #cac6bd Light Foreground (Not often used) +base07 #e7e2d9 Light Background (Not often used) +base08 #f04339 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5923 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8801 Classes, Markup Bold, Search Text Background +base0B #7f8b00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00948b Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #008dd1 Functions, Methods, Attribute IDs, Headings +base0E #6a7fd2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e3488e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #afaba2; + background: #0c1118 +} +.hljs::selection, +.hljs ::selection { + background-color: #22262d; + color: #afaba2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7b776e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7b776e +} +/* base04 - #949088 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #949088 +} +/* base05 - #afaba2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #afaba2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f04339 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5923 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8801 +} +.hljs-strong { + font-weight: bold; + color: #bb8801 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7f8b00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00948b +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #008dd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6a7fd2 +} +.hljs-emphasis { + color: #6a7fd2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e3488e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-gray-dark.css b/modules/highlighter/styles/base16/equilibrium-gray-dark.css new file mode 100644 index 0000000..5e4b619 --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-gray-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Gray Dark + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-gray-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #111111 Default Background +base01 #1b1b1b Lighter Background (Used for status bars, line number and folding marks) +base02 #262626 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #919191 Dark Foreground (Used for status bars) +base05 #ababab Default Foreground, Caret, Delimiters, Operators +base06 #c6c6c6 Light Foreground (Not often used) +base07 #e2e2e2 Light Background (Not often used) +base08 #f04339 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5923 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8801 Classes, Markup Bold, Search Text Background +base0B #7f8b00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00948b Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #008dd1 Functions, Methods, Attribute IDs, Headings +base0E #6a7fd2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e3488e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #ababab; + background: #111111 +} +.hljs::selection, +.hljs ::selection { + background-color: #262626; + color: #ababab +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #919191 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #919191 +} +/* base05 - #ababab - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #ababab +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f04339 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5923 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8801 +} +.hljs-strong { + font-weight: bold; + color: #bb8801 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7f8b00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00948b +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #008dd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6a7fd2 +} +.hljs-emphasis { + color: #6a7fd2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e3488e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-gray-light.css b/modules/highlighter/styles/base16/equilibrium-gray-light.css new file mode 100644 index 0000000..6f50e3d --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-gray-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Gray Light + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-gray-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f1f1f1 Default Background +base01 #e2e2e2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d4d4d4 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #5e5e5e Dark Foreground (Used for status bars) +base05 #474747 Default Foreground, Caret, Delimiters, Operators +base06 #303030 Light Foreground (Not often used) +base07 #1b1b1b Light Background (Not often used) +base08 #d02023 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bf3e05 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #9d6f00 Classes, Markup Bold, Search Text Background +base0B #637200 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #007a72 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0073b5 Functions, Methods, Attribute IDs, Headings +base0E #4e66b6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c42775 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #474747; + background: #f1f1f1 +} +.hljs::selection, +.hljs ::selection { + background-color: #d4d4d4; + color: #474747 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #5e5e5e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5e5e5e +} +/* base05 - #474747 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #474747 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d02023 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bf3e05 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #9d6f00 +} +.hljs-strong { + font-weight: bold; + color: #9d6f00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #637200 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #007a72 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0073b5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4e66b6 +} +.hljs-emphasis { + color: #4e66b6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c42775 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-light.css b/modules/highlighter/styles/base16/equilibrium-light.css new file mode 100644 index 0000000..23341cb --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Light + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f5f0e7 Default Background +base01 #e7e2d9 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d4cb Selection Background +base03 #73777f Comments, Invisibles, Line Highlighting +base04 #5a5f66 Dark Foreground (Used for status bars) +base05 #43474e Default Foreground, Caret, Delimiters, Operators +base06 #2c3138 Light Foreground (Not often used) +base07 #181c22 Light Background (Not often used) +base08 #d02023 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bf3e05 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #9d6f00 Classes, Markup Bold, Search Text Background +base0B #637200 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #007a72 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0073b5 Functions, Methods, Attribute IDs, Headings +base0E #4e66b6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c42775 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #43474e; + background: #f5f0e7 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d4cb; + color: #43474e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #73777f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #73777f +} +/* base04 - #5a5f66 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5a5f66 +} +/* base05 - #43474e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #43474e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d02023 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bf3e05 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #9d6f00 +} +.hljs-strong { + font-weight: bold; + color: #9d6f00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #637200 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #007a72 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0073b5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4e66b6 +} +.hljs-emphasis { + color: #4e66b6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c42775 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/espresso.css b/modules/highlighter/styles/base16/espresso.css new file mode 100644 index 0000000..ca25f04 --- /dev/null +++ b/modules/highlighter/styles/base16/espresso.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Espresso + Author: Unknown. Maintained by Alex Mirrington (https://github.com/alexmirrington) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme espresso + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #d25252 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f9a959 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffc66d Classes, Markup Bold, Search Text Background +base0B #a5c261 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #bed6ff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6c99bb Functions, Methods, Attribute IDs, Headings +base0E #d197d9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #f97394 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d25252 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f9a959 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffc66d +} +.hljs-strong { + font-weight: bold; + color: #ffc66d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a5c261 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #bed6ff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6c99bb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d197d9 +} +.hljs-emphasis { + color: #d197d9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #f97394 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/eva-dim.css b/modules/highlighter/styles/base16/eva-dim.css new file mode 100644 index 0000000..fca06f4 --- /dev/null +++ b/modules/highlighter/styles/base16/eva-dim.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Eva Dim + Author: kjakapat (https://github.com/kjakapat) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme eva-dim + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2a3b4d Default Background +base01 #3d566f Lighter Background (Used for status bars, line number and folding marks) +base02 #4b6988 Selection Background +base03 #55799c Comments, Invisibles, Line Highlighting +base04 #7e90a3 Dark Foreground (Used for status bars) +base05 #9fa2a6 Default Foreground, Caret, Delimiters, Operators +base06 #d6d7d9 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #c4676c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9966 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #cfd05d Classes, Markup Bold, Search Text Background +base0B #5de561 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4b8f77 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #1ae1dc Functions, Methods, Attribute IDs, Headings +base0E #9c6cd3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bb64a9 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #9fa2a6; + background: #2a3b4d +} +.hljs::selection, +.hljs ::selection { + background-color: #4b6988; + color: #9fa2a6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #55799c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #55799c +} +/* base04 - #7e90a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e90a3 +} +/* base05 - #9fa2a6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #9fa2a6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c4676c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9966 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #cfd05d +} +.hljs-strong { + font-weight: bold; + color: #cfd05d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5de561 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4b8f77 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #1ae1dc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9c6cd3 +} +.hljs-emphasis { + color: #9c6cd3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bb64a9 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/eva.css b/modules/highlighter/styles/base16/eva.css new file mode 100644 index 0000000..46f1955 --- /dev/null +++ b/modules/highlighter/styles/base16/eva.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Eva + Author: kjakapat (https://github.com/kjakapat) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme eva + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2a3b4d Default Background +base01 #3d566f Lighter Background (Used for status bars, line number and folding marks) +base02 #4b6988 Selection Background +base03 #55799c Comments, Invisibles, Line Highlighting +base04 #7e90a3 Dark Foreground (Used for status bars) +base05 #9fa2a6 Default Foreground, Caret, Delimiters, Operators +base06 #d6d7d9 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #c4676c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9966 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffff66 Classes, Markup Bold, Search Text Background +base0B #66ff66 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4b8f77 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #15f4ee Functions, Methods, Attribute IDs, Headings +base0E #9c6cd3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bb64a9 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #9fa2a6; + background: #2a3b4d +} +.hljs::selection, +.hljs ::selection { + background-color: #4b6988; + color: #9fa2a6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #55799c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #55799c +} +/* base04 - #7e90a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e90a3 +} +/* base05 - #9fa2a6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #9fa2a6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c4676c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9966 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffff66 +} +.hljs-strong { + font-weight: bold; + color: #ffff66 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #66ff66 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4b8f77 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #15f4ee +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9c6cd3 +} +.hljs-emphasis { + color: #9c6cd3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bb64a9 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/flat.css b/modules/highlighter/styles/base16/flat.css new file mode 100644 index 0000000..0859bad --- /dev/null +++ b/modules/highlighter/styles/base16/flat.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Flat + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme flat + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2C3E50 Default Background +base01 #34495E Lighter Background (Used for status bars, line number and folding marks) +base02 #7F8C8D Selection Background +base03 #95A5A6 Comments, Invisibles, Line Highlighting +base04 #BDC3C7 Dark Foreground (Used for status bars) +base05 #e0e0e0 Default Foreground, Caret, Delimiters, Operators +base06 #f5f5f5 Light Foreground (Not often used) +base07 #ECF0F1 Light Background (Not often used) +base08 #E74C3C Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E67E22 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F1C40F Classes, Markup Bold, Search Text Background +base0B #2ECC71 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1ABC9C Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3498DB Functions, Methods, Attribute IDs, Headings +base0E #9B59B6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #be643c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0e0e0; + background: #2C3E50 +} +.hljs::selection, +.hljs ::selection { + background-color: #7F8C8D; + color: #e0e0e0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #95A5A6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #95A5A6 +} +/* base04 - #BDC3C7 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #BDC3C7 +} +/* base05 - #e0e0e0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0e0e0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #E74C3C +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E67E22 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F1C40F +} +.hljs-strong { + font-weight: bold; + color: #F1C40F +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2ECC71 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1ABC9C +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3498DB +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9B59B6 +} +.hljs-emphasis { + color: #9B59B6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #be643c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/framer.css b/modules/highlighter/styles/base16/framer.css new file mode 100644 index 0000000..3c90bf9 --- /dev/null +++ b/modules/highlighter/styles/base16/framer.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Framer + Author: Framer (Maintained by Jesse Hoyos) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme framer + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #181818 Default Background +base01 #151515 Lighter Background (Used for status bars, line number and folding marks) +base02 #464646 Selection Background +base03 #747474 Comments, Invisibles, Line Highlighting +base04 #B9B9B9 Dark Foreground (Used for status bars) +base05 #D0D0D0 Default Foreground, Caret, Delimiters, Operators +base06 #E8E8E8 Light Foreground (Not often used) +base07 #EEEEEE Light Background (Not often used) +base08 #FD886B Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FC4769 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FECB6E Classes, Markup Bold, Search Text Background +base0B #32CCDC Strings, Inherited Class, Markup Code, Diff Inserted +base0C #ACDDFD Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #20BCFC Functions, Methods, Attribute IDs, Headings +base0E #BA8CFC Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #B15F4A Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0D0; + background: #181818 +} +.hljs::selection, +.hljs ::selection { + background-color: #464646; + color: #D0D0D0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #747474 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #747474 +} +/* base04 - #B9B9B9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B9B9B9 +} +/* base05 - #D0D0D0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0D0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FD886B +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FC4769 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FECB6E +} +.hljs-strong { + font-weight: bold; + color: #FECB6E +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #32CCDC +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #ACDDFD +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #20BCFC +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #BA8CFC +} +.hljs-emphasis { + color: #BA8CFC; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #B15F4A +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/fruit-soda.css b/modules/highlighter/styles/base16/fruit-soda.css new file mode 100644 index 0000000..396faaa --- /dev/null +++ b/modules/highlighter/styles/base16/fruit-soda.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Fruit Soda + Author: jozip + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme fruit-soda + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f1ecf1 Default Background +base01 #e0dee0 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d5d5 Selection Background +base03 #b5b4b6 Comments, Invisibles, Line Highlighting +base04 #979598 Dark Foreground (Used for status bars) +base05 #515151 Default Foreground, Caret, Delimiters, Operators +base06 #474545 Light Foreground (Not often used) +base07 #2d2c2c Light Background (Not often used) +base08 #fe3e31 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe6d08 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f7e203 Classes, Markup Bold, Search Text Background +base0B #47f74c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0f9cfd Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #2931df Functions, Methods, Attribute IDs, Headings +base0E #611fce Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b16f40 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #515151; + background: #f1ecf1 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d5d5; + color: #515151 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b5b4b6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b5b4b6 +} +/* base04 - #979598 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #979598 +} +/* base05 - #515151 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #515151 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fe3e31 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe6d08 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f7e203 +} +.hljs-strong { + font-weight: bold; + color: #f7e203 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #47f74c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0f9cfd +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #2931df +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #611fce +} +.hljs-emphasis { + color: #611fce; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b16f40 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gigavolt.css b/modules/highlighter/styles/base16/gigavolt.css new file mode 100644 index 0000000..89de247 --- /dev/null +++ b/modules/highlighter/styles/base16/gigavolt.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gigavolt + Author: Aidan Swope (http://github.com/Whillikers) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gigavolt + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #202126 Default Background +base01 #2d303d Lighter Background (Used for status bars, line number and folding marks) +base02 #5a576e Selection Background +base03 #a1d2e6 Comments, Invisibles, Line Highlighting +base04 #cad3ff Dark Foreground (Used for status bars) +base05 #e9e7e1 Default Foreground, Caret, Delimiters, Operators +base06 #eff0f9 Light Foreground (Not often used) +base07 #f2fbff Light Background (Not often used) +base08 #ff661a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #19f988 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffdc2d Classes, Markup Bold, Search Text Background +base0B #f2e6a9 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #fb6acb Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #40bfff Functions, Methods, Attribute IDs, Headings +base0E #ae94f9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #6187ff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e9e7e1; + background: #202126 +} +.hljs::selection, +.hljs ::selection { + background-color: #5a576e; + color: #e9e7e1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a1d2e6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a1d2e6 +} +/* base04 - #cad3ff - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #cad3ff +} +/* base05 - #e9e7e1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e9e7e1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff661a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #19f988 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffdc2d +} +.hljs-strong { + font-weight: bold; + color: #ffdc2d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f2e6a9 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #fb6acb +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #40bfff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ae94f9 +} +.hljs-emphasis { + color: #ae94f9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #6187ff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/github.css b/modules/highlighter/styles/base16/github.css new file mode 100644 index 0000000..b3aa5d0 --- /dev/null +++ b/modules/highlighter/styles/base16/github.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Github + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme github + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #f5f5f5 Lighter Background (Used for status bars, line number and folding marks) +base02 #c8c8fa Selection Background +base03 #969896 Comments, Invisibles, Line Highlighting +base04 #e8e8e8 Dark Foreground (Used for status bars) +base05 #333333 Default Foreground, Caret, Delimiters, Operators +base06 #ffffff Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ed6a43 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #0086b3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #795da3 Classes, Markup Bold, Search Text Background +base0B #183691 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #183691 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #795da3 Functions, Methods, Attribute IDs, Headings +base0E #a71d5d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #333333 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #333333; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c8c8fa; + color: #333333 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #969896 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #969896 +} +/* base04 - #e8e8e8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #e8e8e8 +} +/* base05 - #333333 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #333333 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ed6a43 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #0086b3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #795da3 +} +.hljs-strong { + font-weight: bold; + color: #795da3 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #183691 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #183691 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #795da3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a71d5d +} +.hljs-emphasis { + color: #a71d5d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #333333 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/google-dark.css b/modules/highlighter/styles/base16/google-dark.css new file mode 100644 index 0000000..e43136f --- /dev/null +++ b/modules/highlighter/styles/base16/google-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Google Dark + Author: Seth Wright (http://sethawright.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme google-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1d1f21 Default Background +base01 #282a2e Lighter Background (Used for status bars, line number and folding marks) +base02 #373b41 Selection Background +base03 #969896 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #c5c8c6 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #CC342B Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F96A38 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FBA922 Classes, Markup Bold, Search Text Background +base0B #198844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3971ED Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3971ED Functions, Methods, Attribute IDs, Headings +base0E #A36AC7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3971ED Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c5c8c6; + background: #1d1f21 +} +.hljs::selection, +.hljs ::selection { + background-color: #373b41; + color: #c5c8c6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #969896 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #969896 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #c5c8c6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c5c8c6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #CC342B +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F96A38 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FBA922 +} +.hljs-strong { + font-weight: bold; + color: #FBA922 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #198844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3971ED +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3971ED +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A36AC7 +} +.hljs-emphasis { + color: #A36AC7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3971ED +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/google-light.css b/modules/highlighter/styles/base16/google-light.css new file mode 100644 index 0000000..ff94198 --- /dev/null +++ b/modules/highlighter/styles/base16/google-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Google Light + Author: Seth Wright (http://sethawright.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme google-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #c5c8c6 Selection Background +base03 #b4b7b4 Comments, Invisibles, Line Highlighting +base04 #969896 Dark Foreground (Used for status bars) +base05 #373b41 Default Foreground, Caret, Delimiters, Operators +base06 #282a2e Light Foreground (Not often used) +base07 #1d1f21 Light Background (Not often used) +base08 #CC342B Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F96A38 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FBA922 Classes, Markup Bold, Search Text Background +base0B #198844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3971ED Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3971ED Functions, Methods, Attribute IDs, Headings +base0E #A36AC7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3971ED Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #373b41; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c5c8c6; + color: #373b41 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b4b7b4 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b4b7b4 +} +/* base04 - #969896 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #969896 +} +/* base05 - #373b41 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #373b41 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #CC342B +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F96A38 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FBA922 +} +.hljs-strong { + font-weight: bold; + color: #FBA922 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #198844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3971ED +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3971ED +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A36AC7 +} +.hljs-emphasis { + color: #A36AC7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3971ED +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/grayscale-dark.css b/modules/highlighter/styles/base16/grayscale-dark.css new file mode 100644 index 0000000..c97e81e --- /dev/null +++ b/modules/highlighter/styles/base16/grayscale-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Grayscale Dark + Author: Alexandre Gavioli (https://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme grayscale-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #101010 Default Background +base01 #252525 Lighter Background (Used for status bars, line number and folding marks) +base02 #464646 Selection Background +base03 #525252 Comments, Invisibles, Line Highlighting +base04 #ababab Dark Foreground (Used for status bars) +base05 #b9b9b9 Default Foreground, Caret, Delimiters, Operators +base06 #e3e3e3 Light Foreground (Not often used) +base07 #f7f7f7 Light Background (Not often used) +base08 #7c7c7c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #999999 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a0a0a0 Classes, Markup Bold, Search Text Background +base0B #8e8e8e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #868686 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #686868 Functions, Methods, Attribute IDs, Headings +base0E #747474 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5e5e5e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b9b9b9; + background: #101010 +} +.hljs::selection, +.hljs ::selection { + background-color: #464646; + color: #b9b9b9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #525252 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #525252 +} +/* base04 - #ababab - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ababab +} +/* base05 - #b9b9b9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b9b9b9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #7c7c7c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #999999 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a0a0a0 +} +.hljs-strong { + font-weight: bold; + color: #a0a0a0 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8e8e8e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #868686 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #686868 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #747474 +} +.hljs-emphasis { + color: #747474; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5e5e5e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/grayscale-light.css b/modules/highlighter/styles/base16/grayscale-light.css new file mode 100644 index 0000000..af0c2f5 --- /dev/null +++ b/modules/highlighter/styles/base16/grayscale-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Grayscale Light + Author: Alexandre Gavioli (https://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme grayscale-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f7f7f7 Default Background +base01 #e3e3e3 Lighter Background (Used for status bars, line number and folding marks) +base02 #b9b9b9 Selection Background +base03 #ababab Comments, Invisibles, Line Highlighting +base04 #525252 Dark Foreground (Used for status bars) +base05 #464646 Default Foreground, Caret, Delimiters, Operators +base06 #252525 Light Foreground (Not often used) +base07 #101010 Light Background (Not often used) +base08 #7c7c7c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #999999 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a0a0a0 Classes, Markup Bold, Search Text Background +base0B #8e8e8e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #868686 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #686868 Functions, Methods, Attribute IDs, Headings +base0E #747474 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5e5e5e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #464646; + background: #f7f7f7 +} +.hljs::selection, +.hljs ::selection { + background-color: #b9b9b9; + color: #464646 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #ababab - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #ababab +} +/* base04 - #525252 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #525252 +} +/* base05 - #464646 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #464646 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #7c7c7c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #999999 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a0a0a0 +} +.hljs-strong { + font-weight: bold; + color: #a0a0a0 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8e8e8e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #868686 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #686868 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #747474 +} +.hljs-emphasis { + color: #747474; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5e5e5e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/green-screen.css b/modules/highlighter/styles/base16/green-screen.css new file mode 100644 index 0000000..884ee20 --- /dev/null +++ b/modules/highlighter/styles/base16/green-screen.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Green Screen + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme green-screen + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #001100 Default Background +base01 #003300 Lighter Background (Used for status bars, line number and folding marks) +base02 #005500 Selection Background +base03 #007700 Comments, Invisibles, Line Highlighting +base04 #009900 Dark Foreground (Used for status bars) +base05 #00bb00 Default Foreground, Caret, Delimiters, Operators +base06 #00dd00 Light Foreground (Not often used) +base07 #00ff00 Light Background (Not often used) +base08 #007700 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #009900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #007700 Classes, Markup Bold, Search Text Background +base0B #00bb00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #005500 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #009900 Functions, Methods, Attribute IDs, Headings +base0E #00bb00 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #005500 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #00bb00; + background: #001100 +} +.hljs::selection, +.hljs ::selection { + background-color: #005500; + color: #00bb00 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #007700 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #007700 +} +/* base04 - #009900 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #009900 +} +/* base05 - #00bb00 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #00bb00 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #007700 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #009900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #007700 +} +.hljs-strong { + font-weight: bold; + color: #007700 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00bb00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #005500 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #009900 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #00bb00 +} +.hljs-emphasis { + color: #00bb00; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #005500 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-hard.css b/modules/highlighter/styles/base16/gruvbox-dark-hard.css new file mode 100644 index 0000000..0c3e7e6 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-hard.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, hard + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-hard + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1d2021 Default Background +base01 #3c3836 Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #bdae93 Dark Foreground (Used for status bars) +base05 #d5c4a1 Default Foreground, Caret, Delimiters, Operators +base06 #ebdbb2 Light Foreground (Not often used) +base07 #fbf1c7 Light Background (Not often used) +base08 #fb4934 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe8019 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fabd2f Classes, Markup Bold, Search Text Background +base0B #b8bb26 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8ec07c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d3869b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5c4a1; + background: #1d2021 +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #d5c4a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #bdae93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #bdae93 +} +/* base05 - #d5c4a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5c4a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb4934 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe8019 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fabd2f +} +.hljs-strong { + font-weight: bold; + color: #fabd2f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b8bb26 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8ec07c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3869b +} +.hljs-emphasis { + color: #d3869b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-medium.css b/modules/highlighter/styles/base16/gruvbox-dark-medium.css new file mode 100644 index 0000000..9e76d5a --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-medium.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, medium + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-medium + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282828 Default Background +base01 #3c3836 Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #bdae93 Dark Foreground (Used for status bars) +base05 #d5c4a1 Default Foreground, Caret, Delimiters, Operators +base06 #ebdbb2 Light Foreground (Not often used) +base07 #fbf1c7 Light Background (Not often used) +base08 #fb4934 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe8019 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fabd2f Classes, Markup Bold, Search Text Background +base0B #b8bb26 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8ec07c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d3869b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5c4a1; + background: #282828 +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #d5c4a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #bdae93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #bdae93 +} +/* base05 - #d5c4a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5c4a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb4934 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe8019 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fabd2f +} +.hljs-strong { + font-weight: bold; + color: #fabd2f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b8bb26 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8ec07c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3869b +} +.hljs-emphasis { + color: #d3869b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-pale.css b/modules/highlighter/styles/base16/gruvbox-dark-pale.css new file mode 100644 index 0000000..4377322 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-pale.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, pale + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-pale + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #262626 Default Background +base01 #3a3a3a Lighter Background (Used for status bars, line number and folding marks) +base02 #4e4e4e Selection Background +base03 #8a8a8a Comments, Invisibles, Line Highlighting +base04 #949494 Dark Foreground (Used for status bars) +base05 #dab997 Default Foreground, Caret, Delimiters, Operators +base06 #d5c4a1 Light Foreground (Not often used) +base07 #ebdbb2 Light Background (Not often used) +base08 #d75f5f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff8700 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffaf00 Classes, Markup Bold, Search Text Background +base0B #afaf00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #85ad85 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83adad Functions, Methods, Attribute IDs, Headings +base0E #d485ad Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #dab997; + background: #262626 +} +.hljs::selection, +.hljs ::selection { + background-color: #4e4e4e; + color: #dab997 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #8a8a8a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #8a8a8a +} +/* base04 - #949494 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #949494 +} +/* base05 - #dab997 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #dab997 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d75f5f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff8700 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffaf00 +} +.hljs-strong { + font-weight: bold; + color: #ffaf00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #afaf00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #85ad85 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83adad +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d485ad +} +.hljs-emphasis { + color: #d485ad; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-soft.css b/modules/highlighter/styles/base16/gruvbox-dark-soft.css new file mode 100644 index 0000000..d56d820 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-soft.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, soft + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-soft + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #32302f Default Background +base01 #3c3836 Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #bdae93 Dark Foreground (Used for status bars) +base05 #d5c4a1 Default Foreground, Caret, Delimiters, Operators +base06 #ebdbb2 Light Foreground (Not often used) +base07 #fbf1c7 Light Background (Not often used) +base08 #fb4934 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe8019 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fabd2f Classes, Markup Bold, Search Text Background +base0B #b8bb26 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8ec07c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d3869b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5c4a1; + background: #32302f +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #d5c4a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #bdae93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #bdae93 +} +/* base05 - #d5c4a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5c4a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb4934 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe8019 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fabd2f +} +.hljs-strong { + font-weight: bold; + color: #fabd2f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b8bb26 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8ec07c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3869b +} +.hljs-emphasis { + color: #d3869b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-light-hard.css b/modules/highlighter/styles/base16/gruvbox-light-hard.css new file mode 100644 index 0000000..4bcf047 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-light-hard.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox light, hard + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-light-hard + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f9f5d7 Default Background +base01 #ebdbb2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d5c4a1 Selection Background +base03 #bdae93 Comments, Invisibles, Line Highlighting +base04 #665c54 Dark Foreground (Used for status bars) +base05 #504945 Default Foreground, Caret, Delimiters, Operators +base06 #3c3836 Light Foreground (Not often used) +base07 #282828 Light Background (Not often used) +base08 #9d0006 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #af3a03 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b57614 Classes, Markup Bold, Search Text Background +base0B #79740e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #427b58 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #076678 Functions, Methods, Attribute IDs, Headings +base0E #8f3f71 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #504945; + background: #f9f5d7 +} +.hljs::selection, +.hljs ::selection { + background-color: #d5c4a1; + color: #504945 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bdae93 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bdae93 +} +/* base04 - #665c54 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #665c54 +} +/* base05 - #504945 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #504945 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9d0006 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #af3a03 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b57614 +} +.hljs-strong { + font-weight: bold; + color: #b57614 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #79740e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #427b58 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #076678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8f3f71 +} +.hljs-emphasis { + color: #8f3f71; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-light-medium.css b/modules/highlighter/styles/base16/gruvbox-light-medium.css new file mode 100644 index 0000000..f9ef0b5 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-light-medium.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox light, medium + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-light-medium + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fbf1c7 Default Background +base01 #ebdbb2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d5c4a1 Selection Background +base03 #bdae93 Comments, Invisibles, Line Highlighting +base04 #665c54 Dark Foreground (Used for status bars) +base05 #504945 Default Foreground, Caret, Delimiters, Operators +base06 #3c3836 Light Foreground (Not often used) +base07 #282828 Light Background (Not often used) +base08 #9d0006 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #af3a03 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b57614 Classes, Markup Bold, Search Text Background +base0B #79740e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #427b58 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #076678 Functions, Methods, Attribute IDs, Headings +base0E #8f3f71 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #504945; + background: #fbf1c7 +} +.hljs::selection, +.hljs ::selection { + background-color: #d5c4a1; + color: #504945 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bdae93 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bdae93 +} +/* base04 - #665c54 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #665c54 +} +/* base05 - #504945 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #504945 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9d0006 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #af3a03 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b57614 +} +.hljs-strong { + font-weight: bold; + color: #b57614 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #79740e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #427b58 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #076678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8f3f71 +} +.hljs-emphasis { + color: #8f3f71; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-light-soft.css b/modules/highlighter/styles/base16/gruvbox-light-soft.css new file mode 100644 index 0000000..35a6aed --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-light-soft.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox light, soft + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-light-soft + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f2e5bc Default Background +base01 #ebdbb2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d5c4a1 Selection Background +base03 #bdae93 Comments, Invisibles, Line Highlighting +base04 #665c54 Dark Foreground (Used for status bars) +base05 #504945 Default Foreground, Caret, Delimiters, Operators +base06 #3c3836 Light Foreground (Not often used) +base07 #282828 Light Background (Not often used) +base08 #9d0006 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #af3a03 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b57614 Classes, Markup Bold, Search Text Background +base0B #79740e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #427b58 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #076678 Functions, Methods, Attribute IDs, Headings +base0E #8f3f71 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #504945; + background: #f2e5bc +} +.hljs::selection, +.hljs ::selection { + background-color: #d5c4a1; + color: #504945 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bdae93 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bdae93 +} +/* base04 - #665c54 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #665c54 +} +/* base05 - #504945 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #504945 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9d0006 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #af3a03 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b57614 +} +.hljs-strong { + font-weight: bold; + color: #b57614 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #79740e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #427b58 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #076678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8f3f71 +} +.hljs-emphasis { + color: #8f3f71; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/hardcore.css b/modules/highlighter/styles/base16/hardcore.css new file mode 100644 index 0000000..666d145 --- /dev/null +++ b/modules/highlighter/styles/base16/hardcore.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Hardcore + Author: Chris Caller + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme hardcore + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #212121 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #353535 Selection Background +base03 #4A4A4A Comments, Invisibles, Line Highlighting +base04 #707070 Dark Foreground (Used for status bars) +base05 #cdcdcd Default Foreground, Caret, Delimiters, Operators +base06 #e5e5e5 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #f92672 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fd971f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e6db74 Classes, Markup Bold, Search Text Background +base0B #a6e22e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #708387 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #66d9ef Functions, Methods, Attribute IDs, Headings +base0E #9e6ffe Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e8b882 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cdcdcd; + background: #212121 +} +.hljs::selection, +.hljs ::selection { + background-color: #353535; + color: #cdcdcd +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4A4A4A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4A4A4A +} +/* base04 - #707070 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #707070 +} +/* base05 - #cdcdcd - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cdcdcd +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f92672 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fd971f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e6db74 +} +.hljs-strong { + font-weight: bold; + color: #e6db74 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a6e22e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #708387 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #66d9ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9e6ffe +} +.hljs-emphasis { + color: #9e6ffe; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e8b882 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/harmonic16-dark.css b/modules/highlighter/styles/base16/harmonic16-dark.css new file mode 100644 index 0000000..7f194a0 --- /dev/null +++ b/modules/highlighter/styles/base16/harmonic16-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Harmonic16 Dark + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme harmonic16-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0b1c2c Default Background +base01 #223b54 Lighter Background (Used for status bars, line number and folding marks) +base02 #405c79 Selection Background +base03 #627e99 Comments, Invisibles, Line Highlighting +base04 #aabcce Dark Foreground (Used for status bars) +base05 #cbd6e2 Default Foreground, Caret, Delimiters, Operators +base06 #e5ebf1 Light Foreground (Not often used) +base07 #f7f9fb Light Background (Not often used) +base08 #bf8b56 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bfbf56 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8bbf56 Classes, Markup Bold, Search Text Background +base0B #56bf8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #568bbf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8b56bf Functions, Methods, Attribute IDs, Headings +base0E #bf568b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf5656 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cbd6e2; + background: #0b1c2c +} +.hljs::selection, +.hljs ::selection { + background-color: #405c79; + color: #cbd6e2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #627e99 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #627e99 +} +/* base04 - #aabcce - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #aabcce +} +/* base05 - #cbd6e2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cbd6e2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bf8b56 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bfbf56 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8bbf56 +} +.hljs-strong { + font-weight: bold; + color: #8bbf56 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #56bf8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #568bbf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8b56bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bf568b +} +.hljs-emphasis { + color: #bf568b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf5656 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/harmonic16-light.css b/modules/highlighter/styles/base16/harmonic16-light.css new file mode 100644 index 0000000..71bd4b6 --- /dev/null +++ b/modules/highlighter/styles/base16/harmonic16-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Harmonic16 Light + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme harmonic16-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f7f9fb Default Background +base01 #e5ebf1 Lighter Background (Used for status bars, line number and folding marks) +base02 #cbd6e2 Selection Background +base03 #aabcce Comments, Invisibles, Line Highlighting +base04 #627e99 Dark Foreground (Used for status bars) +base05 #405c79 Default Foreground, Caret, Delimiters, Operators +base06 #223b54 Light Foreground (Not often used) +base07 #0b1c2c Light Background (Not often used) +base08 #bf8b56 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bfbf56 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8bbf56 Classes, Markup Bold, Search Text Background +base0B #56bf8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #568bbf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8b56bf Functions, Methods, Attribute IDs, Headings +base0E #bf568b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf5656 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #405c79; + background: #f7f9fb +} +.hljs::selection, +.hljs ::selection { + background-color: #cbd6e2; + color: #405c79 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #aabcce - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #aabcce +} +/* base04 - #627e99 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #627e99 +} +/* base05 - #405c79 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #405c79 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bf8b56 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bfbf56 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8bbf56 +} +.hljs-strong { + font-weight: bold; + color: #8bbf56 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #56bf8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #568bbf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8b56bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bf568b +} +.hljs-emphasis { + color: #bf568b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf5656 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/heetch-dark.css b/modules/highlighter/styles/base16/heetch-dark.css new file mode 100644 index 0000000..628c66f --- /dev/null +++ b/modules/highlighter/styles/base16/heetch-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Heetch Dark + Author: Geoffrey Teale (tealeg@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme heetch-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #190134 Default Background +base01 #392551 Lighter Background (Used for status bars, line number and folding marks) +base02 #5A496E Selection Background +base03 #7B6D8B Comments, Invisibles, Line Highlighting +base04 #9C92A8 Dark Foreground (Used for status bars) +base05 #BDB6C5 Default Foreground, Caret, Delimiters, Operators +base06 #DEDAE2 Light Foreground (Not often used) +base07 #FEFFFF Light Background (Not often used) +base08 #27D9D5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #5BA2B6 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8F6C97 Classes, Markup Bold, Search Text Background +base0B #C33678 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #F80059 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #BD0152 Functions, Methods, Attribute IDs, Headings +base0E #82034C Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #470546 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #BDB6C5; + background: #190134 +} +.hljs::selection, +.hljs ::selection { + background-color: #5A496E; + color: #BDB6C5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7B6D8B - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7B6D8B +} +/* base04 - #9C92A8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9C92A8 +} +/* base05 - #BDB6C5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #BDB6C5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #27D9D5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #5BA2B6 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8F6C97 +} +.hljs-strong { + font-weight: bold; + color: #8F6C97 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C33678 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #F80059 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #BD0152 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #82034C +} +.hljs-emphasis { + color: #82034C; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #470546 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/heetch-light.css b/modules/highlighter/styles/base16/heetch-light.css new file mode 100644 index 0000000..b41d5e9 --- /dev/null +++ b/modules/highlighter/styles/base16/heetch-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Heetch Light + Author: Geoffrey Teale (tealeg@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme heetch-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #feffff Default Background +base01 #392551 Lighter Background (Used for status bars, line number and folding marks) +base02 #7b6d8b Selection Background +base03 #9c92a8 Comments, Invisibles, Line Highlighting +base04 #ddd6e5 Dark Foreground (Used for status bars) +base05 #5a496e Default Foreground, Caret, Delimiters, Operators +base06 #470546 Light Foreground (Not often used) +base07 #190134 Light Background (Not often used) +base08 #27d9d5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bdb6c5 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #5ba2b6 Classes, Markup Bold, Search Text Background +base0B #f80059 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #c33678 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #47f9f5 Functions, Methods, Attribute IDs, Headings +base0E #bd0152 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #dedae2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5a496e; + background: #feffff +} +.hljs::selection, +.hljs ::selection { + background-color: #7b6d8b; + color: #5a496e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9c92a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9c92a8 +} +/* base04 - #ddd6e5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ddd6e5 +} +/* base05 - #5a496e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5a496e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #27d9d5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bdb6c5 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #5ba2b6 +} +.hljs-strong { + font-weight: bold; + color: #5ba2b6 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f80059 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #c33678 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #47f9f5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bd0152 +} +.hljs-emphasis { + color: #bd0152; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #dedae2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/helios.css b/modules/highlighter/styles/base16/helios.css new file mode 100644 index 0000000..572dc41 --- /dev/null +++ b/modules/highlighter/styles/base16/helios.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Helios + Author: Alex Meyer (https://github.com/reyemxela) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme helios + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1d2021 Default Background +base01 #383c3e Lighter Background (Used for status bars, line number and folding marks) +base02 #53585b Selection Background +base03 #6f7579 Comments, Invisibles, Line Highlighting +base04 #cdcdcd Dark Foreground (Used for status bars) +base05 #d5d5d5 Default Foreground, Caret, Delimiters, Operators +base06 #dddddd Light Foreground (Not often used) +base07 #e5e5e5 Light Background (Not often used) +base08 #d72638 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb8413 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f19d1a Classes, Markup Bold, Search Text Background +base0B #88b92d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1ba595 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #1e8bac Functions, Methods, Attribute IDs, Headings +base0E #be4264 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c85e0d Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5d5d5; + background: #1d2021 +} +.hljs::selection, +.hljs ::selection { + background-color: #53585b; + color: #d5d5d5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6f7579 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6f7579 +} +/* base04 - #cdcdcd - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #cdcdcd +} +/* base05 - #d5d5d5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5d5d5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d72638 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb8413 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f19d1a +} +.hljs-strong { + font-weight: bold; + color: #f19d1a +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #88b92d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1ba595 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #1e8bac +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #be4264 +} +.hljs-emphasis { + color: #be4264; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c85e0d +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/hopscotch.css b/modules/highlighter/styles/base16/hopscotch.css new file mode 100644 index 0000000..6742d89 --- /dev/null +++ b/modules/highlighter/styles/base16/hopscotch.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Hopscotch + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme hopscotch + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #322931 Default Background +base01 #433b42 Lighter Background (Used for status bars, line number and folding marks) +base02 #5c545b Selection Background +base03 #797379 Comments, Invisibles, Line Highlighting +base04 #989498 Dark Foreground (Used for status bars) +base05 #b9b5b8 Default Foreground, Caret, Delimiters, Operators +base06 #d5d3d5 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dd464c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fd8b19 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fdcc59 Classes, Markup Bold, Search Text Background +base0B #8fc13e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #149b93 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #1290bf Functions, Methods, Attribute IDs, Headings +base0E #c85e7c Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b33508 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b9b5b8; + background: #322931 +} +.hljs::selection, +.hljs ::selection { + background-color: #5c545b; + color: #b9b5b8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #797379 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #797379 +} +/* base04 - #989498 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #989498 +} +/* base05 - #b9b5b8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b9b5b8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dd464c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fd8b19 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fdcc59 +} +.hljs-strong { + font-weight: bold; + color: #fdcc59 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8fc13e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #149b93 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #1290bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c85e7c +} +.hljs-emphasis { + color: #c85e7c; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b33508 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/horizon-dark.css b/modules/highlighter/styles/base16/horizon-dark.css new file mode 100644 index 0000000..c4c77f7 --- /dev/null +++ b/modules/highlighter/styles/base16/horizon-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Horizon Dark + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme horizon-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1C1E26 Default Background +base01 #232530 Lighter Background (Used for status bars, line number and folding marks) +base02 #2E303E Selection Background +base03 #6F6F70 Comments, Invisibles, Line Highlighting +base04 #9DA0A2 Dark Foreground (Used for status bars) +base05 #CBCED0 Default Foreground, Caret, Delimiters, Operators +base06 #DCDFE4 Light Foreground (Not often used) +base07 #E3E6EE Light Background (Not often used) +base08 #E93C58 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E58D7D Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #EFB993 Classes, Markup Bold, Search Text Background +base0B #EFAF8E Strings, Inherited Class, Markup Code, Diff Inserted +base0C #24A8B4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #DF5273 Functions, Methods, Attribute IDs, Headings +base0E #B072D1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #E4A382 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #CBCED0; + background: #1C1E26 +} +.hljs::selection, +.hljs ::selection { + background-color: #2E303E; + color: #CBCED0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6F6F70 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6F6F70 +} +/* base04 - #9DA0A2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9DA0A2 +} +/* base05 - #CBCED0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #CBCED0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #E93C58 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E58D7D +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #EFB993 +} +.hljs-strong { + font-weight: bold; + color: #EFB993 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #EFAF8E +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #24A8B4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #DF5273 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #B072D1 +} +.hljs-emphasis { + color: #B072D1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #E4A382 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/horizon-light.css b/modules/highlighter/styles/base16/horizon-light.css new file mode 100644 index 0000000..91b6c4a --- /dev/null +++ b/modules/highlighter/styles/base16/horizon-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Horizon Light + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme horizon-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #FDF0ED Default Background +base01 #FADAD1 Lighter Background (Used for status bars, line number and folding marks) +base02 #F9CBBE Selection Background +base03 #BDB3B1 Comments, Invisibles, Line Highlighting +base04 #948C8A Dark Foreground (Used for status bars) +base05 #403C3D Default Foreground, Caret, Delimiters, Operators +base06 #302C2D Light Foreground (Not often used) +base07 #201C1D Light Background (Not often used) +base08 #E95678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F9CEC3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FADAD1 Classes, Markup Bold, Search Text Background +base0B #29D398 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #59E1E3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #26BBD9 Functions, Methods, Attribute IDs, Headings +base0E #EE64AC Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F9CBBE Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #403C3D; + background: #FDF0ED +} +.hljs::selection, +.hljs ::selection { + background-color: #F9CBBE; + color: #403C3D +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #BDB3B1 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #BDB3B1 +} +/* base04 - #948C8A - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #948C8A +} +/* base05 - #403C3D - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #403C3D +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #E95678 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F9CEC3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FADAD1 +} +.hljs-strong { + font-weight: bold; + color: #FADAD1 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #29D398 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #59E1E3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #26BBD9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #EE64AC +} +.hljs-emphasis { + color: #EE64AC; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F9CBBE +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/humanoid-dark.css b/modules/highlighter/styles/base16/humanoid-dark.css new file mode 100644 index 0000000..6fc6bcf --- /dev/null +++ b/modules/highlighter/styles/base16/humanoid-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Humanoid dark + Author: Thomas (tasmo) Friese + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme humanoid-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #232629 Default Background +base01 #333b3d Lighter Background (Used for status bars, line number and folding marks) +base02 #484e54 Selection Background +base03 #60615d Comments, Invisibles, Line Highlighting +base04 #c0c0bd Dark Foreground (Used for status bars) +base05 #f8f8f2 Default Foreground, Caret, Delimiters, Operators +base06 #fcfcf6 Light Foreground (Not often used) +base07 #fcfcfc Light Background (Not often used) +base08 #f11235 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9505 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffb627 Classes, Markup Bold, Search Text Background +base0B #02d849 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0dd9d6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #00a6fb Functions, Methods, Attribute IDs, Headings +base0E #f15ee3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b27701 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #f8f8f2; + background: #232629 +} +.hljs::selection, +.hljs ::selection { + background-color: #484e54; + color: #f8f8f2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #60615d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #60615d +} +/* base04 - #c0c0bd - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #c0c0bd +} +/* base05 - #f8f8f2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #f8f8f2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f11235 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9505 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffb627 +} +.hljs-strong { + font-weight: bold; + color: #ffb627 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #02d849 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0dd9d6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #00a6fb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #f15ee3 +} +.hljs-emphasis { + color: #f15ee3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b27701 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/humanoid-light.css b/modules/highlighter/styles/base16/humanoid-light.css new file mode 100644 index 0000000..c702d22 --- /dev/null +++ b/modules/highlighter/styles/base16/humanoid-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Humanoid light + Author: Thomas (tasmo) Friese + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme humanoid-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f2 Default Background +base01 #efefe9 Lighter Background (Used for status bars, line number and folding marks) +base02 #deded8 Selection Background +base03 #c0c0bd Comments, Invisibles, Line Highlighting +base04 #60615d Dark Foreground (Used for status bars) +base05 #232629 Default Foreground, Caret, Delimiters, Operators +base06 #2f3337 Light Foreground (Not often used) +base07 #070708 Light Background (Not often used) +base08 #b0151a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff3d00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffb627 Classes, Markup Bold, Search Text Background +base0B #388e3c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #008e8e Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0082c9 Functions, Methods, Attribute IDs, Headings +base0E #700f98 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b27701 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #232629; + background: #f8f8f2 +} +.hljs::selection, +.hljs ::selection { + background-color: #deded8; + color: #232629 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #c0c0bd - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #c0c0bd +} +/* base04 - #60615d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #60615d +} +/* base05 - #232629 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #232629 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b0151a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff3d00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffb627 +} +.hljs-strong { + font-weight: bold; + color: #ffb627 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #388e3c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #008e8e +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0082c9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #700f98 +} +.hljs-emphasis { + color: #700f98; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b27701 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ia-dark.css b/modules/highlighter/styles/base16/ia-dark.css new file mode 100644 index 0000000..77014c2 --- /dev/null +++ b/modules/highlighter/styles/base16/ia-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: iA Dark + Author: iA Inc. (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ia-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1a1a1a Default Background +base01 #222222 Lighter Background (Used for status bars, line number and folding marks) +base02 #1d414d Selection Background +base03 #767676 Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #d88568 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d86868 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b99353 Classes, Markup Bold, Search Text Background +base0B #83a471 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7c9cae Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8eccdd Functions, Methods, Attribute IDs, Headings +base0E #b98eb2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8b6c37 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #1a1a1a +} +.hljs::selection, +.hljs ::selection { + background-color: #1d414d; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #767676 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #767676 +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d88568 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d86868 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b99353 +} +.hljs-strong { + font-weight: bold; + color: #b99353 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #83a471 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7c9cae +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8eccdd +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b98eb2 +} +.hljs-emphasis { + color: #b98eb2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8b6c37 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ia-light.css b/modules/highlighter/styles/base16/ia-light.css new file mode 100644 index 0000000..d39fff4 --- /dev/null +++ b/modules/highlighter/styles/base16/ia-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: iA Light + Author: iA Inc. (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ia-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f6f6f6 Default Background +base01 #dedede Lighter Background (Used for status bars, line number and folding marks) +base02 #bde5f2 Selection Background +base03 #898989 Comments, Invisibles, Line Highlighting +base04 #767676 Dark Foreground (Used for status bars) +base05 #181818 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #9c5a02 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c43e18 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c48218 Classes, Markup Bold, Search Text Background +base0B #38781c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d6bb1 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #48bac2 Functions, Methods, Attribute IDs, Headings +base0E #a94598 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8b6c37 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #181818; + background: #f6f6f6 +} +.hljs::selection, +.hljs ::selection { + background-color: #bde5f2; + color: #181818 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #898989 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #898989 +} +/* base04 - #767676 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #767676 +} +/* base05 - #181818 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #181818 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9c5a02 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c43e18 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c48218 +} +.hljs-strong { + font-weight: bold; + color: #c48218 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #38781c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d6bb1 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #48bac2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a94598 +} +.hljs-emphasis { + color: #a94598; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8b6c37 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/icy-dark.css b/modules/highlighter/styles/base16/icy-dark.css new file mode 100644 index 0000000..491cfd4 --- /dev/null +++ b/modules/highlighter/styles/base16/icy-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Icy Dark + Author: icyphox (https://icyphox.ga) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme icy-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #021012 Default Background +base01 #031619 Lighter Background (Used for status bars, line number and folding marks) +base02 #041f23 Selection Background +base03 #052e34 Comments, Invisibles, Line Highlighting +base04 #064048 Dark Foreground (Used for status bars) +base05 #095b67 Default Foreground, Caret, Delimiters, Operators +base06 #0c7c8c Light Foreground (Not often used) +base07 #109cb0 Light Background (Not often used) +base08 #16c1d9 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b3ebf2 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #80deea Classes, Markup Bold, Search Text Background +base0B #4dd0e1 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #26c6da Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #00bcd4 Functions, Methods, Attribute IDs, Headings +base0E #00acc1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #0097a7 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #095b67; + background: #021012 +} +.hljs::selection, +.hljs ::selection { + background-color: #041f23; + color: #095b67 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #052e34 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #052e34 +} +/* base04 - #064048 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #064048 +} +/* base05 - #095b67 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #095b67 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #16c1d9 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b3ebf2 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #80deea +} +.hljs-strong { + font-weight: bold; + color: #80deea +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4dd0e1 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #26c6da +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #00bcd4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #00acc1 +} +.hljs-emphasis { + color: #00acc1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #0097a7 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ir-black.css b/modules/highlighter/styles/base16/ir-black.css new file mode 100644 index 0000000..65653e5 --- /dev/null +++ b/modules/highlighter/styles/base16/ir-black.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: IR Black + Author: Timothée Poisot (http://timotheepoisot.fr) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ir-black + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #242422 Lighter Background (Used for status bars, line number and folding marks) +base02 #484844 Selection Background +base03 #6c6c66 Comments, Invisibles, Line Highlighting +base04 #918f88 Dark Foreground (Used for status bars) +base05 #b5b3aa Default Foreground, Caret, Delimiters, Operators +base06 #d9d7cc Light Foreground (Not often used) +base07 #fdfbee Light Background (Not often used) +base08 #ff6c60 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e9c062 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffffb6 Classes, Markup Bold, Search Text Background +base0B #a8ff60 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #c6c5fe Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #96cbfe Functions, Methods, Attribute IDs, Headings +base0E #ff73fd Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b18a3d Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b5b3aa; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #484844; + color: #b5b3aa +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6c6c66 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6c6c66 +} +/* base04 - #918f88 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #918f88 +} +/* base05 - #b5b3aa - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b5b3aa +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff6c60 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e9c062 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffffb6 +} +.hljs-strong { + font-weight: bold; + color: #ffffb6 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a8ff60 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #c6c5fe +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #96cbfe +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff73fd +} +.hljs-emphasis { + color: #ff73fd; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b18a3d +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/isotope.css b/modules/highlighter/styles/base16/isotope.css new file mode 100644 index 0000000..0bad052 --- /dev/null +++ b/modules/highlighter/styles/base16/isotope.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Isotope + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme isotope + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #404040 Lighter Background (Used for status bars, line number and folding marks) +base02 #606060 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #c0c0c0 Dark Foreground (Used for status bars) +base05 #d0d0d0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff0000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ff0099 Classes, Markup Bold, Search Text Background +base0B #33ff00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00ffff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0066ff Functions, Methods, Attribute IDs, Headings +base0E #cc00ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3300ff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0d0d0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #606060; + color: #d0d0d0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #c0c0c0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #c0c0c0 +} +/* base05 - #d0d0d0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0d0d0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff0000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ff0099 +} +.hljs-strong { + font-weight: bold; + color: #ff0099 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #33ff00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00ffff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0066ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc00ff +} +.hljs-emphasis { + color: #cc00ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3300ff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/kimber.css b/modules/highlighter/styles/base16/kimber.css new file mode 100644 index 0000000..9a8d97d --- /dev/null +++ b/modules/highlighter/styles/base16/kimber.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Kimber + Author: Mishka Nguyen (https://github.com/akhsiM) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme kimber + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #222222 Default Background +base01 #313131 Lighter Background (Used for status bars, line number and folding marks) +base02 #555D55 Selection Background +base03 #644646 Comments, Invisibles, Line Highlighting +base04 #5A5A5A Dark Foreground (Used for status bars) +base05 #DEDEE7 Default Foreground, Caret, Delimiters, Operators +base06 #C3C3B4 Light Foreground (Not often used) +base07 #FFFFE6 Light Background (Not often used) +base08 #C88C8C Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #476C88 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #D8B56D Classes, Markup Bold, Search Text Background +base0B #99C899 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #78B4B4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #537C9C Functions, Methods, Attribute IDs, Headings +base0E #86CACD Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #704F4F Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #DEDEE7; + background: #222222 +} +.hljs::selection, +.hljs ::selection { + background-color: #555D55; + color: #DEDEE7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #644646 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #644646 +} +/* base04 - #5A5A5A - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5A5A5A +} +/* base05 - #DEDEE7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #DEDEE7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #C88C8C +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #476C88 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #D8B56D +} +.hljs-strong { + font-weight: bold; + color: #D8B56D +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99C899 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #78B4B4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #537C9C +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #86CACD +} +.hljs-emphasis { + color: #86CACD; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #704F4F +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/london-tube.css b/modules/highlighter/styles/base16/london-tube.css new file mode 100644 index 0000000..2b285b2 --- /dev/null +++ b/modules/highlighter/styles/base16/london-tube.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: London Tube + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme london-tube + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #231f20 Default Background +base01 #1c3f95 Lighter Background (Used for status bars, line number and folding marks) +base02 #5a5758 Selection Background +base03 #737171 Comments, Invisibles, Line Highlighting +base04 #959ca1 Dark Foreground (Used for status bars) +base05 #d9d8d8 Default Foreground, Caret, Delimiters, Operators +base06 #e7e7e8 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ee2e24 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f386a1 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffd204 Classes, Markup Bold, Search Text Background +base0B #00853e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #85cebc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #009ddc Functions, Methods, Attribute IDs, Headings +base0E #98005d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b06110 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d9d8d8; + background: #231f20 +} +.hljs::selection, +.hljs ::selection { + background-color: #5a5758; + color: #d9d8d8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #737171 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #737171 +} +/* base04 - #959ca1 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #959ca1 +} +/* base05 - #d9d8d8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d9d8d8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ee2e24 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f386a1 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffd204 +} +.hljs-strong { + font-weight: bold; + color: #ffd204 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00853e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #85cebc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #009ddc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #98005d +} +.hljs-emphasis { + color: #98005d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b06110 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/macintosh.css b/modules/highlighter/styles/base16/macintosh.css new file mode 100644 index 0000000..9895b7b --- /dev/null +++ b/modules/highlighter/styles/base16/macintosh.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Macintosh + Author: Rebecca Bettencourt (http://www.kreativekorp.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme macintosh + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #404040 Lighter Background (Used for status bars, line number and folding marks) +base02 #404040 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #c0c0c0 Default Foreground, Caret, Delimiters, Operators +base06 #c0c0c0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dd0907 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff6403 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fbf305 Classes, Markup Bold, Search Text Background +base0B #1fb714 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #02abea Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000d3 Functions, Methods, Attribute IDs, Headings +base0E #4700a5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #90713a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c0c0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #404040; + color: #c0c0c0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #c0c0c0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c0c0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dd0907 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff6403 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fbf305 +} +.hljs-strong { + font-weight: bold; + color: #fbf305 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #1fb714 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #02abea +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000d3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4700a5 +} +.hljs-emphasis { + color: #4700a5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #90713a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/marrakesh.css b/modules/highlighter/styles/base16/marrakesh.css new file mode 100644 index 0000000..5f86b58 --- /dev/null +++ b/modules/highlighter/styles/base16/marrakesh.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Marrakesh + Author: Alexandre Gavioli (http://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme marrakesh + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #201602 Default Background +base01 #302e00 Lighter Background (Used for status bars, line number and folding marks) +base02 #5f5b17 Selection Background +base03 #6c6823 Comments, Invisibles, Line Highlighting +base04 #86813b Dark Foreground (Used for status bars) +base05 #948e48 Default Foreground, Caret, Delimiters, Operators +base06 #ccc37a Light Foreground (Not often used) +base07 #faf0a5 Light Background (Not often used) +base08 #c35359 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b36144 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a88339 Classes, Markup Bold, Search Text Background +base0B #18974e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #75a738 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #477ca1 Functions, Methods, Attribute IDs, Headings +base0E #8868b3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b3588e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #948e48; + background: #201602 +} +.hljs::selection, +.hljs ::selection { + background-color: #5f5b17; + color: #948e48 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6c6823 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6c6823 +} +/* base04 - #86813b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #86813b +} +/* base05 - #948e48 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #948e48 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c35359 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b36144 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a88339 +} +.hljs-strong { + font-weight: bold; + color: #a88339 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #18974e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #75a738 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #477ca1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8868b3 +} +.hljs-emphasis { + color: #8868b3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b3588e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/materia.css b/modules/highlighter/styles/base16/materia.css new file mode 100644 index 0000000..1a24854 --- /dev/null +++ b/modules/highlighter/styles/base16/materia.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Materia + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme materia + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #263238 Default Background +base01 #2C393F Lighter Background (Used for status bars, line number and folding marks) +base02 #37474F Selection Background +base03 #707880 Comments, Invisibles, Line Highlighting +base04 #C9CCD3 Dark Foreground (Used for status bars) +base05 #CDD3DE Default Foreground, Caret, Delimiters, Operators +base06 #D5DBE5 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #EC5F67 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #EA9560 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCC00 Classes, Markup Bold, Search Text Background +base0B #8BD649 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #80CBC4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #89DDFF Functions, Methods, Attribute IDs, Headings +base0E #82AAFF Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #EC5F67 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #CDD3DE; + background: #263238 +} +.hljs::selection, +.hljs ::selection { + background-color: #37474F; + color: #CDD3DE +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #707880 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #707880 +} +/* base04 - #C9CCD3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #C9CCD3 +} +/* base05 - #CDD3DE - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #CDD3DE +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EC5F67 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #EA9560 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCC00 +} +.hljs-strong { + font-weight: bold; + color: #FFCC00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8BD649 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #80CBC4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #89DDFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #82AAFF +} +.hljs-emphasis { + color: #82AAFF; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #EC5F67 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-darker.css b/modules/highlighter/styles/base16/material-darker.css new file mode 100644 index 0000000..95c9063 --- /dev/null +++ b/modules/highlighter/styles/base16/material-darker.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Darker + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-darker + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #212121 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #353535 Selection Background +base03 #4A4A4A Comments, Invisibles, Line Highlighting +base04 #B2CCD6 Dark Foreground (Used for status bars) +base05 #EEFFFF Default Foreground, Caret, Delimiters, Operators +base06 #EEFFFF Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #F07178 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F78C6C Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCB6B Classes, Markup Bold, Search Text Background +base0B #C3E88D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #89DDFF Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #82AAFF Functions, Methods, Attribute IDs, Headings +base0E #C792EA Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #FF5370 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #EEFFFF; + background: #212121 +} +.hljs::selection, +.hljs ::selection { + background-color: #353535; + color: #EEFFFF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4A4A4A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4A4A4A +} +/* base04 - #B2CCD6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B2CCD6 +} +/* base05 - #EEFFFF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #EEFFFF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F07178 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F78C6C +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCB6B +} +.hljs-strong { + font-weight: bold; + color: #FFCB6B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C3E88D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #89DDFF +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #82AAFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C792EA +} +.hljs-emphasis { + color: #C792EA; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #FF5370 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-lighter.css b/modules/highlighter/styles/base16/material-lighter.css new file mode 100644 index 0000000..548688c --- /dev/null +++ b/modules/highlighter/styles/base16/material-lighter.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Lighter + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-lighter + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #FAFAFA Default Background +base01 #E7EAEC Lighter Background (Used for status bars, line number and folding marks) +base02 #CCEAE7 Selection Background +base03 #CCD7DA Comments, Invisibles, Line Highlighting +base04 #8796B0 Dark Foreground (Used for status bars) +base05 #80CBC4 Default Foreground, Caret, Delimiters, Operators +base06 #80CBC4 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #FF5370 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F76D47 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFB62C Classes, Markup Bold, Search Text Background +base0B #91B859 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #39ADB5 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6182B8 Functions, Methods, Attribute IDs, Headings +base0E #7C4DFF Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #E53935 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #80CBC4; + background: #FAFAFA +} +.hljs::selection, +.hljs ::selection { + background-color: #CCEAE7; + color: #80CBC4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #CCD7DA - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #CCD7DA +} +/* base04 - #8796B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8796B0 +} +/* base05 - #80CBC4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #80CBC4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF5370 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F76D47 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFB62C +} +.hljs-strong { + font-weight: bold; + color: #FFB62C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #91B859 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #39ADB5 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6182B8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7C4DFF +} +.hljs-emphasis { + color: #7C4DFF; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #E53935 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-palenight.css b/modules/highlighter/styles/base16/material-palenight.css new file mode 100644 index 0000000..53177cb --- /dev/null +++ b/modules/highlighter/styles/base16/material-palenight.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Palenight + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-palenight + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #292D3E Default Background +base01 #444267 Lighter Background (Used for status bars, line number and folding marks) +base02 #32374D Selection Background +base03 #676E95 Comments, Invisibles, Line Highlighting +base04 #8796B0 Dark Foreground (Used for status bars) +base05 #959DCB Default Foreground, Caret, Delimiters, Operators +base06 #959DCB Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #F07178 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F78C6C Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCB6B Classes, Markup Bold, Search Text Background +base0B #C3E88D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #89DDFF Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #82AAFF Functions, Methods, Attribute IDs, Headings +base0E #C792EA Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #FF5370 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #959DCB; + background: #292D3E +} +.hljs::selection, +.hljs ::selection { + background-color: #32374D; + color: #959DCB +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #676E95 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #676E95 +} +/* base04 - #8796B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8796B0 +} +/* base05 - #959DCB - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #959DCB +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F07178 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F78C6C +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCB6B +} +.hljs-strong { + font-weight: bold; + color: #FFCB6B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C3E88D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #89DDFF +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #82AAFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C792EA +} +.hljs-emphasis { + color: #C792EA; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #FF5370 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-vivid.css b/modules/highlighter/styles/base16/material-vivid.css new file mode 100644 index 0000000..002917e --- /dev/null +++ b/modules/highlighter/styles/base16/material-vivid.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Vivid + Author: joshyrobot + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-vivid + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #202124 Default Background +base01 #27292c Lighter Background (Used for status bars, line number and folding marks) +base02 #323639 Selection Background +base03 #44464d Comments, Invisibles, Line Highlighting +base04 #676c71 Dark Foreground (Used for status bars) +base05 #80868b Default Foreground, Caret, Delimiters, Operators +base06 #9e9e9e Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #f44336 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9800 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffeb3b Classes, Markup Bold, Search Text Background +base0B #00e676 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00bcd4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #2196f3 Functions, Methods, Attribute IDs, Headings +base0E #673ab7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8d6e63 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #80868b; + background: #202124 +} +.hljs::selection, +.hljs ::selection { + background-color: #323639; + color: #80868b +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #44464d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #44464d +} +/* base04 - #676c71 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #676c71 +} +/* base05 - #80868b - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #80868b +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f44336 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9800 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffeb3b +} +.hljs-strong { + font-weight: bold; + color: #ffeb3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00e676 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00bcd4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #2196f3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #673ab7 +} +.hljs-emphasis { + color: #673ab7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8d6e63 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material.css b/modules/highlighter/styles/base16/material.css new file mode 100644 index 0000000..ae72cfc --- /dev/null +++ b/modules/highlighter/styles/base16/material.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #263238 Default Background +base01 #2E3C43 Lighter Background (Used for status bars, line number and folding marks) +base02 #314549 Selection Background +base03 #546E7A Comments, Invisibles, Line Highlighting +base04 #B2CCD6 Dark Foreground (Used for status bars) +base05 #EEFFFF Default Foreground, Caret, Delimiters, Operators +base06 #EEFFFF Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #F07178 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F78C6C Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCB6B Classes, Markup Bold, Search Text Background +base0B #C3E88D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #89DDFF Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #82AAFF Functions, Methods, Attribute IDs, Headings +base0E #C792EA Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #FF5370 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #EEFFFF; + background: #263238 +} +.hljs::selection, +.hljs ::selection { + background-color: #314549; + color: #EEFFFF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #546E7A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #546E7A +} +/* base04 - #B2CCD6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B2CCD6 +} +/* base05 - #EEFFFF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #EEFFFF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F07178 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F78C6C +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCB6B +} +.hljs-strong { + font-weight: bold; + color: #FFCB6B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C3E88D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #89DDFF +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #82AAFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C792EA +} +.hljs-emphasis { + color: #C792EA; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #FF5370 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/mellow-purple.css b/modules/highlighter/styles/base16/mellow-purple.css new file mode 100644 index 0000000..41f3706 --- /dev/null +++ b/modules/highlighter/styles/base16/mellow-purple.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Mellow Purple + Author: gidsi + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme mellow-purple + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1e0528 Default Background +base01 #1A092D Lighter Background (Used for status bars, line number and folding marks) +base02 #331354 Selection Background +base03 #320f55 Comments, Invisibles, Line Highlighting +base04 #873582 Dark Foreground (Used for status bars) +base05 #ffeeff Default Foreground, Caret, Delimiters, Operators +base06 #ffeeff Light Foreground (Not often used) +base07 #f8c0ff Light Background (Not often used) +base08 #00d9e9 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aa00a3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #955ae7 Classes, Markup Bold, Search Text Background +base0B #05cb0d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #b900b1 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #550068 Functions, Methods, Attribute IDs, Headings +base0E #8991bb Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #4d6fff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #ffeeff; + background: #1e0528 +} +.hljs::selection, +.hljs ::selection { + background-color: #331354; + color: #ffeeff +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #320f55 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #320f55 +} +/* base04 - #873582 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #873582 +} +/* base05 - #ffeeff - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #ffeeff +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #00d9e9 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aa00a3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #955ae7 +} +.hljs-strong { + font-weight: bold; + color: #955ae7 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #05cb0d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #b900b1 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #550068 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8991bb +} +.hljs-emphasis { + color: #8991bb; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #4d6fff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/mexico-light.css b/modules/highlighter/styles/base16/mexico-light.css new file mode 100644 index 0000000..8560231 --- /dev/null +++ b/modules/highlighter/styles/base16/mexico-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Mexico Light + Author: Sheldon Johnson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme mexico-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f8 Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d8d8 Selection Background +base03 #b8b8b8 Comments, Invisibles, Line Highlighting +base04 #585858 Dark Foreground (Used for status bars) +base05 #383838 Default Foreground, Caret, Delimiters, Operators +base06 #282828 Light Foreground (Not often used) +base07 #181818 Light Background (Not often used) +base08 #ab4642 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f79a0e Classes, Markup Bold, Search Text Background +base0B #538947 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4b8093 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cafc2 Functions, Methods, Attribute IDs, Headings +base0E #96609e Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383838; + background: #f8f8f8 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d8d8; + color: #383838 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b8b8b8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b8b8b8 +} +/* base04 - #585858 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #585858 +} +/* base05 - #383838 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383838 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ab4642 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f79a0e +} +.hljs-strong { + font-weight: bold; + color: #f79a0e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #538947 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4b8093 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cafc2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #96609e +} +.hljs-emphasis { + color: #96609e; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/mocha.css b/modules/highlighter/styles/base16/mocha.css new file mode 100644 index 0000000..908f3bb --- /dev/null +++ b/modules/highlighter/styles/base16/mocha.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Mocha + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme mocha + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #3B3228 Default Background +base01 #534636 Lighter Background (Used for status bars, line number and folding marks) +base02 #645240 Selection Background +base03 #7e705a Comments, Invisibles, Line Highlighting +base04 #b8afad Dark Foreground (Used for status bars) +base05 #d0c8c6 Default Foreground, Caret, Delimiters, Operators +base06 #e9e1dd Light Foreground (Not often used) +base07 #f5eeeb Light Background (Not often used) +base08 #cb6077 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d28b71 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f4bc87 Classes, Markup Bold, Search Text Background +base0B #beb55b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7bbda4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8ab3b5 Functions, Methods, Attribute IDs, Headings +base0E #a89bb9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bb9584 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0c8c6; + background: #3B3228 +} +.hljs::selection, +.hljs ::selection { + background-color: #645240; + color: #d0c8c6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7e705a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7e705a +} +/* base04 - #b8afad - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8afad +} +/* base05 - #d0c8c6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0c8c6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cb6077 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d28b71 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f4bc87 +} +.hljs-strong { + font-weight: bold; + color: #f4bc87 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #beb55b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7bbda4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8ab3b5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a89bb9 +} +.hljs-emphasis { + color: #a89bb9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bb9584 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/monokai.css b/modules/highlighter/styles/base16/monokai.css new file mode 100644 index 0000000..097ce34 --- /dev/null +++ b/modules/highlighter/styles/base16/monokai.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Monokai + Author: Wimer Hazenberg (http://www.monokai.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme monokai + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #272822 Default Background +base01 #383830 Lighter Background (Used for status bars, line number and folding marks) +base02 #49483e Selection Background +base03 #75715e Comments, Invisibles, Line Highlighting +base04 #a59f85 Dark Foreground (Used for status bars) +base05 #f8f8f2 Default Foreground, Caret, Delimiters, Operators +base06 #f5f4f1 Light Foreground (Not often used) +base07 #f9f8f5 Light Background (Not often used) +base08 #f92672 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fd971f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f4bf75 Classes, Markup Bold, Search Text Background +base0B #a6e22e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #a1efe4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #66d9ef Functions, Methods, Attribute IDs, Headings +base0E #ae81ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cc6633 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #f8f8f2; + background: #272822 +} +.hljs::selection, +.hljs ::selection { + background-color: #49483e; + color: #f8f8f2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #75715e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #75715e +} +/* base04 - #a59f85 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a59f85 +} +/* base05 - #f8f8f2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #f8f8f2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f92672 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fd971f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f4bf75 +} +.hljs-strong { + font-weight: bold; + color: #f4bf75 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a6e22e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #a1efe4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #66d9ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ae81ff +} +.hljs-emphasis { + color: #ae81ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cc6633 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/nebula.css b/modules/highlighter/styles/base16/nebula.css new file mode 100644 index 0000000..eb04d2b --- /dev/null +++ b/modules/highlighter/styles/base16/nebula.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Nebula + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme nebula + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #22273b Default Background +base01 #414f60 Lighter Background (Used for status bars, line number and folding marks) +base02 #5a8380 Selection Background +base03 #6e6f72 Comments, Invisibles, Line Highlighting +base04 #87888b Dark Foreground (Used for status bars) +base05 #a4a6a9 Default Foreground, Caret, Delimiters, Operators +base06 #c7c9cd Light Foreground (Not often used) +base07 #8dbdaa Light Background (Not often used) +base08 #777abc Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #94929e Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #4f9062 Classes, Markup Bold, Search Text Background +base0B #6562a8 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #226f68 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4d6bb6 Functions, Methods, Attribute IDs, Headings +base0E #716cae Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8c70a7 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a4a6a9; + background: #22273b +} +.hljs::selection, +.hljs ::selection { + background-color: #5a8380; + color: #a4a6a9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6e6f72 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6e6f72 +} +/* base04 - #87888b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #87888b +} +/* base05 - #a4a6a9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a4a6a9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #777abc +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #94929e +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #4f9062 +} +.hljs-strong { + font-weight: bold; + color: #4f9062 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6562a8 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #226f68 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4d6bb6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #716cae +} +.hljs-emphasis { + color: #716cae; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8c70a7 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/nord.css b/modules/highlighter/styles/base16/nord.css new file mode 100644 index 0000000..6227706 --- /dev/null +++ b/modules/highlighter/styles/base16/nord.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Nord + Author: arcticicestudio + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme nord + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2E3440 Default Background +base01 #3B4252 Lighter Background (Used for status bars, line number and folding marks) +base02 #434C5E Selection Background +base03 #4C566A Comments, Invisibles, Line Highlighting +base04 #D8DEE9 Dark Foreground (Used for status bars) +base05 #E5E9F0 Default Foreground, Caret, Delimiters, Operators +base06 #ECEFF4 Light Foreground (Not often used) +base07 #8FBCBB Light Background (Not often used) +base08 #BF616A Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D08770 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #EBCB8B Classes, Markup Bold, Search Text Background +base0B #A3BE8C Strings, Inherited Class, Markup Code, Diff Inserted +base0C #88C0D0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #81A1C1 Functions, Methods, Attribute IDs, Headings +base0E #B48EAD Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5E81AC Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #E5E9F0; + background: #2E3440 +} +.hljs::selection, +.hljs ::selection { + background-color: #434C5E; + color: #E5E9F0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4C566A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4C566A +} +/* base04 - #D8DEE9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #D8DEE9 +} +/* base05 - #E5E9F0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #E5E9F0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #BF616A +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D08770 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #EBCB8B +} +.hljs-strong { + font-weight: bold; + color: #EBCB8B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #A3BE8C +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #88C0D0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #81A1C1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #B48EAD +} +.hljs-emphasis { + color: #B48EAD; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5E81AC +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/nova.css b/modules/highlighter/styles/base16/nova.css new file mode 100644 index 0000000..3343e9f --- /dev/null +++ b/modules/highlighter/styles/base16/nova.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Nova + Author: George Essig (https://github.com/gessig), Trevor D. Miller (https://trevordmiller.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme nova + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #3C4C55 Default Background +base01 #556873 Lighter Background (Used for status bars, line number and folding marks) +base02 #6A7D89 Selection Background +base03 #899BA6 Comments, Invisibles, Line Highlighting +base04 #899BA6 Dark Foreground (Used for status bars) +base05 #C5D4DD Default Foreground, Caret, Delimiters, Operators +base06 #899BA6 Light Foreground (Not often used) +base07 #556873 Light Background (Not often used) +base08 #83AFE5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #7FC1CA Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #A8CE93 Classes, Markup Bold, Search Text Background +base0B #7FC1CA Strings, Inherited Class, Markup Code, Diff Inserted +base0C #F2C38F Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83AFE5 Functions, Methods, Attribute IDs, Headings +base0E #9A93E1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F2C38F Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C5D4DD; + background: #3C4C55 +} +.hljs::selection, +.hljs ::selection { + background-color: #6A7D89; + color: #C5D4DD +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #899BA6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #899BA6 +} +/* base04 - #899BA6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #899BA6 +} +/* base05 - #C5D4DD - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C5D4DD +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #83AFE5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #7FC1CA +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #A8CE93 +} +.hljs-strong { + font-weight: bold; + color: #A8CE93 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7FC1CA +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #F2C38F +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83AFE5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9A93E1 +} +.hljs-emphasis { + color: #9A93E1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F2C38F +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ocean.css b/modules/highlighter/styles/base16/ocean.css new file mode 100644 index 0000000..5ed9f6c --- /dev/null +++ b/modules/highlighter/styles/base16/ocean.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Ocean + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ocean + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2b303b Default Background +base01 #343d46 Lighter Background (Used for status bars, line number and folding marks) +base02 #4f5b66 Selection Background +base03 #65737e Comments, Invisibles, Line Highlighting +base04 #a7adba Dark Foreground (Used for status bars) +base05 #c0c5ce Default Foreground, Caret, Delimiters, Operators +base06 #dfe1e8 Light Foreground (Not often used) +base07 #eff1f5 Light Background (Not often used) +base08 #bf616a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d08770 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ebcb8b Classes, Markup Bold, Search Text Background +base0B #a3be8c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #96b5b4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8fa1b3 Functions, Methods, Attribute IDs, Headings +base0E #b48ead Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ab7967 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c5ce; + background: #2b303b +} +.hljs::selection, +.hljs ::selection { + background-color: #4f5b66; + color: #c0c5ce +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #65737e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #65737e +} +/* base04 - #a7adba - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a7adba +} +/* base05 - #c0c5ce - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c5ce +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bf616a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d08770 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ebcb8b +} +.hljs-strong { + font-weight: bold; + color: #ebcb8b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a3be8c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #96b5b4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8fa1b3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b48ead +} +.hljs-emphasis { + color: #b48ead; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ab7967 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/oceanicnext.css b/modules/highlighter/styles/base16/oceanicnext.css new file mode 100644 index 0000000..a2f8214 --- /dev/null +++ b/modules/highlighter/styles/base16/oceanicnext.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: OceanicNext + Author: https://github.com/voronianski/oceanic-next-color-scheme + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme oceanicnext + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1B2B34 Default Background +base01 #343D46 Lighter Background (Used for status bars, line number and folding marks) +base02 #4F5B66 Selection Background +base03 #65737E Comments, Invisibles, Line Highlighting +base04 #A7ADBA Dark Foreground (Used for status bars) +base05 #C0C5CE Default Foreground, Caret, Delimiters, Operators +base06 #CDD3DE Light Foreground (Not often used) +base07 #D8DEE9 Light Background (Not often used) +base08 #EC5f67 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F99157 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FAC863 Classes, Markup Bold, Search Text Background +base0B #99C794 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5FB3B3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6699CC Functions, Methods, Attribute IDs, Headings +base0E #C594C5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #AB7967 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C0C5CE; + background: #1B2B34 +} +.hljs::selection, +.hljs ::selection { + background-color: #4F5B66; + color: #C0C5CE +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #65737E - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #65737E +} +/* base04 - #A7ADBA - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #A7ADBA +} +/* base05 - #C0C5CE - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C0C5CE +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EC5f67 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F99157 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FAC863 +} +.hljs-strong { + font-weight: bold; + color: #FAC863 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99C794 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5FB3B3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6699CC +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C594C5 +} +.hljs-emphasis { + color: #C594C5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #AB7967 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/one-light.css b/modules/highlighter/styles/base16/one-light.css new file mode 100644 index 0000000..a7241d0 --- /dev/null +++ b/modules/highlighter/styles/base16/one-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: One Light + Author: Daniel Pfeifer (http://github.com/purpleKarrot) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme one-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fafafa Default Background +base01 #f0f0f1 Lighter Background (Used for status bars, line number and folding marks) +base02 #e5e5e6 Selection Background +base03 #a0a1a7 Comments, Invisibles, Line Highlighting +base04 #696c77 Dark Foreground (Used for status bars) +base05 #383a42 Default Foreground, Caret, Delimiters, Operators +base06 #202227 Light Foreground (Not often used) +base07 #090a0b Light Background (Not often used) +base08 #ca1243 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d75f00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c18401 Classes, Markup Bold, Search Text Background +base0B #50a14f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0184bc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4078f2 Functions, Methods, Attribute IDs, Headings +base0E #a626a4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #986801 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383a42; + background: #fafafa +} +.hljs::selection, +.hljs ::selection { + background-color: #e5e5e6; + color: #383a42 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a0a1a7 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a0a1a7 +} +/* base04 - #696c77 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #696c77 +} +/* base05 - #383a42 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383a42 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca1243 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d75f00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c18401 +} +.hljs-strong { + font-weight: bold; + color: #c18401 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #50a14f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0184bc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4078f2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a626a4 +} +.hljs-emphasis { + color: #a626a4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #986801 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/onedark.css b/modules/highlighter/styles/base16/onedark.css new file mode 100644 index 0000000..58a8a16 --- /dev/null +++ b/modules/highlighter/styles/base16/onedark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: OneDark + Author: Lalit Magant (http://github.com/tilal6991) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme onedark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282c34 Default Background +base01 #353b45 Lighter Background (Used for status bars, line number and folding marks) +base02 #3e4451 Selection Background +base03 #545862 Comments, Invisibles, Line Highlighting +base04 #565c64 Dark Foreground (Used for status bars) +base05 #abb2bf Default Foreground, Caret, Delimiters, Operators +base06 #b6bdca Light Foreground (Not often used) +base07 #c8ccd4 Light Background (Not often used) +base08 #e06c75 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d19a66 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e5c07b Classes, Markup Bold, Search Text Background +base0B #98c379 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #56b6c2 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #61afef Functions, Methods, Attribute IDs, Headings +base0E #c678dd Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #be5046 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #abb2bf; + background: #282c34 +} +.hljs::selection, +.hljs ::selection { + background-color: #3e4451; + color: #abb2bf +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #545862 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #545862 +} +/* base04 - #565c64 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #565c64 +} +/* base05 - #abb2bf - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #abb2bf +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e06c75 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d19a66 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e5c07b +} +.hljs-strong { + font-weight: bold; + color: #e5c07b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #98c379 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #56b6c2 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #61afef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c678dd +} +.hljs-emphasis { + color: #c678dd; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #be5046 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/outrun-dark.css b/modules/highlighter/styles/base16/outrun-dark.css new file mode 100644 index 0000000..ab941ef --- /dev/null +++ b/modules/highlighter/styles/base16/outrun-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Outrun Dark + Author: Hugo Delahousse (http://github.com/hugodelahousse/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme outrun-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #00002A Default Background +base01 #20204A Lighter Background (Used for status bars, line number and folding marks) +base02 #30305A Selection Background +base03 #50507A Comments, Invisibles, Line Highlighting +base04 #B0B0DA Dark Foreground (Used for status bars) +base05 #D0D0FA Default Foreground, Caret, Delimiters, Operators +base06 #E0E0FF Light Foreground (Not often used) +base07 #F5F5FF Light Background (Not often used) +base08 #FF4242 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FC8D28 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F3E877 Classes, Markup Bold, Search Text Background +base0B #59F176 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0EF0F0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #66B0FF Functions, Methods, Attribute IDs, Headings +base0E #F10596 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F003EF Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0FA; + background: #00002A +} +.hljs::selection, +.hljs ::selection { + background-color: #30305A; + color: #D0D0FA +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #50507A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #50507A +} +/* base04 - #B0B0DA - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B0B0DA +} +/* base05 - #D0D0FA - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0FA +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF4242 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FC8D28 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F3E877 +} +.hljs-strong { + font-weight: bold; + color: #F3E877 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #59F176 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0EF0F0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #66B0FF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #F10596 +} +.hljs-emphasis { + color: #F10596; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F003EF +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/papercolor-dark.css b/modules/highlighter/styles/base16/papercolor-dark.css new file mode 100644 index 0000000..3b84413 --- /dev/null +++ b/modules/highlighter/styles/base16/papercolor-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: PaperColor Dark + Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme papercolor-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1c1c1c Default Background +base01 #af005f Lighter Background (Used for status bars, line number and folding marks) +base02 #5faf00 Selection Background +base03 #d7af5f Comments, Invisibles, Line Highlighting +base04 #5fafd7 Dark Foreground (Used for status bars) +base05 #808080 Default Foreground, Caret, Delimiters, Operators +base06 #d7875f Light Foreground (Not often used) +base07 #d0d0d0 Light Background (Not often used) +base08 #585858 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #5faf5f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #afd700 Classes, Markup Bold, Search Text Background +base0B #af87d7 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #ffaf00 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #ff5faf Functions, Methods, Attribute IDs, Headings +base0E #00afaf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5f8787 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #808080; + background: #1c1c1c +} +.hljs::selection, +.hljs ::selection { + background-color: #5faf00; + color: #808080 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #d7af5f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #d7af5f +} +/* base04 - #5fafd7 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5fafd7 +} +/* base05 - #808080 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #808080 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #585858 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #5faf5f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #afd700 +} +.hljs-strong { + font-weight: bold; + color: #afd700 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #af87d7 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #ffaf00 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #ff5faf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #00afaf +} +.hljs-emphasis { + color: #00afaf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5f8787 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/papercolor-light.css b/modules/highlighter/styles/base16/papercolor-light.css new file mode 100644 index 0000000..6fe0125 --- /dev/null +++ b/modules/highlighter/styles/base16/papercolor-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: PaperColor Light + Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme papercolor-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #eeeeee Default Background +base01 #af0000 Lighter Background (Used for status bars, line number and folding marks) +base02 #008700 Selection Background +base03 #5f8700 Comments, Invisibles, Line Highlighting +base04 #0087af Dark Foreground (Used for status bars) +base05 #444444 Default Foreground, Caret, Delimiters, Operators +base06 #005f87 Light Foreground (Not often used) +base07 #878787 Light Background (Not often used) +base08 #bcbcbc Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d70000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #d70087 Classes, Markup Bold, Search Text Background +base0B #8700af Strings, Inherited Class, Markup Code, Diff Inserted +base0C #d75f00 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #d75f00 Functions, Methods, Attribute IDs, Headings +base0E #005faf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #005f87 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #444444; + background: #eeeeee +} +.hljs::selection, +.hljs ::selection { + background-color: #008700; + color: #444444 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f8700 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f8700 +} +/* base04 - #0087af - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #0087af +} +/* base05 - #444444 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #444444 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bcbcbc +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d70000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #d70087 +} +.hljs-strong { + font-weight: bold; + color: #d70087 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8700af +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #d75f00 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #d75f00 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #005faf +} +.hljs-emphasis { + color: #005faf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #005f87 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/paraiso.css b/modules/highlighter/styles/base16/paraiso.css new file mode 100644 index 0000000..962104e --- /dev/null +++ b/modules/highlighter/styles/base16/paraiso.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Paraiso + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme paraiso + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2f1e2e Default Background +base01 #41323f Lighter Background (Used for status bars, line number and folding marks) +base02 #4f424c Selection Background +base03 #776e71 Comments, Invisibles, Line Highlighting +base04 #8d8687 Dark Foreground (Used for status bars) +base05 #a39e9b Default Foreground, Caret, Delimiters, Operators +base06 #b9b6b0 Light Foreground (Not often used) +base07 #e7e9db Light Background (Not often used) +base08 #ef6155 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f99b15 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fec418 Classes, Markup Bold, Search Text Background +base0B #48b685 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5bc4bf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #06b6ef Functions, Methods, Attribute IDs, Headings +base0E #815ba4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e96ba8 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a39e9b; + background: #2f1e2e +} +.hljs::selection, +.hljs ::selection { + background-color: #4f424c; + color: #a39e9b +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #776e71 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #776e71 +} +/* base04 - #8d8687 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8d8687 +} +/* base05 - #a39e9b - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a39e9b +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ef6155 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f99b15 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fec418 +} +.hljs-strong { + font-weight: bold; + color: #fec418 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #48b685 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5bc4bf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #06b6ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #815ba4 +} +.hljs-emphasis { + color: #815ba4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e96ba8 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/pasque.css b/modules/highlighter/styles/base16/pasque.css new file mode 100644 index 0000000..92f5c18 --- /dev/null +++ b/modules/highlighter/styles/base16/pasque.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Pasque + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme pasque + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #271C3A Default Background +base01 #100323 Lighter Background (Used for status bars, line number and folding marks) +base02 #3E2D5C Selection Background +base03 #5D5766 Comments, Invisibles, Line Highlighting +base04 #BEBCBF Dark Foreground (Used for status bars) +base05 #DEDCDF Default Foreground, Caret, Delimiters, Operators +base06 #EDEAEF Light Foreground (Not often used) +base07 #BBAADD Light Background (Not often used) +base08 #A92258 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #918889 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #804ead Classes, Markup Bold, Search Text Background +base0B #C6914B Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7263AA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8E7DC6 Functions, Methods, Attribute IDs, Headings +base0E #953B9D Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #59325C Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #DEDCDF; + background: #271C3A +} +.hljs::selection, +.hljs ::selection { + background-color: #3E2D5C; + color: #DEDCDF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5D5766 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5D5766 +} +/* base04 - #BEBCBF - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #BEBCBF +} +/* base05 - #DEDCDF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #DEDCDF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #A92258 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #918889 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #804ead +} +.hljs-strong { + font-weight: bold; + color: #804ead +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C6914B +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7263AA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8E7DC6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #953B9D +} +.hljs-emphasis { + color: #953B9D; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #59325C +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/phd.css b/modules/highlighter/styles/base16/phd.css new file mode 100644 index 0000000..4bcdde9 --- /dev/null +++ b/modules/highlighter/styles/base16/phd.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: PhD + Author: Hennig Hasemann (http://leetless.de/vim.html) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme phd + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #061229 Default Background +base01 #2a3448 Lighter Background (Used for status bars, line number and folding marks) +base02 #4d5666 Selection Background +base03 #717885 Comments, Invisibles, Line Highlighting +base04 #9a99a3 Dark Foreground (Used for status bars) +base05 #b8bbc2 Default Foreground, Caret, Delimiters, Operators +base06 #dbdde0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #d07346 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f0a000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fbd461 Classes, Markup Bold, Search Text Background +base0B #99bf52 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #72b9bf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5299bf Functions, Methods, Attribute IDs, Headings +base0E #9989cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b08060 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b8bbc2; + background: #061229 +} +.hljs::selection, +.hljs ::selection { + background-color: #4d5666; + color: #b8bbc2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #717885 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #717885 +} +/* base04 - #9a99a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9a99a3 +} +/* base05 - #b8bbc2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b8bbc2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d07346 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f0a000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fbd461 +} +.hljs-strong { + font-weight: bold; + color: #fbd461 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99bf52 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #72b9bf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5299bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9989cc +} +.hljs-emphasis { + color: #9989cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b08060 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/pico.css b/modules/highlighter/styles/base16/pico.css new file mode 100644 index 0000000..42aec9d --- /dev/null +++ b/modules/highlighter/styles/base16/pico.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Pico + Author: PICO-8 (http://www.lexaloffle.com/pico-8.php) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme pico + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #1d2b53 Lighter Background (Used for status bars, line number and folding marks) +base02 #7e2553 Selection Background +base03 #008751 Comments, Invisibles, Line Highlighting +base04 #ab5236 Dark Foreground (Used for status bars) +base05 #5f574f Default Foreground, Caret, Delimiters, Operators +base06 #c2c3c7 Light Foreground (Not often used) +base07 #fff1e8 Light Background (Not often used) +base08 #ff004d Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffa300 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fff024 Classes, Markup Bold, Search Text Background +base0B #00e756 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #29adff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83769c Functions, Methods, Attribute IDs, Headings +base0E #ff77a8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ffccaa Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5f574f; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #7e2553; + color: #5f574f +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #008751 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #008751 +} +/* base04 - #ab5236 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ab5236 +} +/* base05 - #5f574f - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5f574f +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff004d +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffa300 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fff024 +} +.hljs-strong { + font-weight: bold; + color: #fff024 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00e756 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #29adff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83769c +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff77a8 +} +.hljs-emphasis { + color: #ff77a8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ffccaa +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/pop.css b/modules/highlighter/styles/base16/pop.css new file mode 100644 index 0000000..d8b2cb7 --- /dev/null +++ b/modules/highlighter/styles/base16/pop.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Pop + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme pop + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #b0b0b0 Dark Foreground (Used for status bars) +base05 #d0d0d0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #eb008a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f29333 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f8ca12 Classes, Markup Bold, Search Text Background +base0B #37b349 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00aabb Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0e5a94 Functions, Methods, Attribute IDs, Headings +base0E #b31e8d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #7a2d00 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0d0d0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #d0d0d0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #b0b0b0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b0b0b0 +} +/* base05 - #d0d0d0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0d0d0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #eb008a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f29333 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f8ca12 +} +.hljs-strong { + font-weight: bold; + color: #f8ca12 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #37b349 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00aabb +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0e5a94 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b31e8d +} +.hljs-emphasis { + color: #b31e8d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #7a2d00 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/porple.css b/modules/highlighter/styles/base16/porple.css new file mode 100644 index 0000000..59d319c --- /dev/null +++ b/modules/highlighter/styles/base16/porple.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Porple + Author: Niek den Breeje (https://github.com/AuditeMarlow) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme porple + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #292c36 Default Background +base01 #333344 Lighter Background (Used for status bars, line number and folding marks) +base02 #474160 Selection Background +base03 #65568a Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #d8d8d8 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #f84547 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d28e5d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #efa16b Classes, Markup Bold, Search Text Background +base0B #95c76f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #64878f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8485ce Functions, Methods, Attribute IDs, Headings +base0E #b74989 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #986841 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d8d8d8; + background: #292c36 +} +.hljs::selection, +.hljs ::selection { + background-color: #474160; + color: #d8d8d8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #65568a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #65568a +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #d8d8d8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d8d8d8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f84547 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d28e5d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #efa16b +} +.hljs-strong { + font-weight: bold; + color: #efa16b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #95c76f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #64878f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8485ce +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b74989 +} +.hljs-emphasis { + color: #b74989; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #986841 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/qualia.css b/modules/highlighter/styles/base16/qualia.css new file mode 100644 index 0000000..f518a3e --- /dev/null +++ b/modules/highlighter/styles/base16/qualia.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Qualia + Author: isaacwhanson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme qualia + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #101010 Default Background +base01 #454545 Lighter Background (Used for status bars, line number and folding marks) +base02 #454545 Selection Background +base03 #454545 Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #C0C0C0 Default Foreground, Caret, Delimiters, Operators +base06 #C0C0C0 Light Foreground (Not often used) +base07 #454545 Light Background (Not often used) +base08 #EFA6A2 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #A3B8EF Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #E6A3DC Classes, Markup Bold, Search Text Background +base0B #80C990 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #C8C874 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #50CACD Functions, Methods, Attribute IDs, Headings +base0E #E0AF85 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #808080 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C0C0C0; + background: #101010 +} +.hljs::selection, +.hljs ::selection { + background-color: #454545; + color: #C0C0C0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #454545 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #454545 +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #C0C0C0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C0C0C0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EFA6A2 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #A3B8EF +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #E6A3DC +} +.hljs-strong { + font-weight: bold; + color: #E6A3DC +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #80C990 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #C8C874 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #50CACD +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #E0AF85 +} +.hljs-emphasis { + color: #E0AF85; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #808080 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/railscasts.css b/modules/highlighter/styles/base16/railscasts.css new file mode 100644 index 0000000..00c7c61 --- /dev/null +++ b/modules/highlighter/styles/base16/railscasts.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Railscasts + Author: Ryan Bates (http://railscasts.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme railscasts + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2b2b2b Default Background +base01 #272935 Lighter Background (Used for status bars, line number and folding marks) +base02 #3a4055 Selection Background +base03 #5a647e Comments, Invisibles, Line Highlighting +base04 #d4cfc9 Dark Foreground (Used for status bars) +base05 #e6e1dc Default Foreground, Caret, Delimiters, Operators +base06 #f4f1ed Light Foreground (Not often used) +base07 #f9f7f3 Light Background (Not often used) +base08 #da4939 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cc7833 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffc66d Classes, Markup Bold, Search Text Background +base0B #a5c261 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #519f50 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6d9cbe Functions, Methods, Attribute IDs, Headings +base0E #b6b3eb Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bc9458 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e6e1dc; + background: #2b2b2b +} +.hljs::selection, +.hljs ::selection { + background-color: #3a4055; + color: #e6e1dc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5a647e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5a647e +} +/* base04 - #d4cfc9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #d4cfc9 +} +/* base05 - #e6e1dc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e6e1dc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #da4939 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cc7833 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffc66d +} +.hljs-strong { + font-weight: bold; + color: #ffc66d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a5c261 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #519f50 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6d9cbe +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b6b3eb +} +.hljs-emphasis { + color: #b6b3eb; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bc9458 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/rebecca.css b/modules/highlighter/styles/base16/rebecca.css new file mode 100644 index 0000000..c9ac8d3 --- /dev/null +++ b/modules/highlighter/styles/base16/rebecca.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rebecca + Author: Victor Borja (http://github.com/vic) based on Rebecca Theme (http://github.com/vic/rebecca-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme rebecca + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #292a44 Default Background +base01 #663399 Lighter Background (Used for status bars, line number and folding marks) +base02 #383a62 Selection Background +base03 #666699 Comments, Invisibles, Line Highlighting +base04 #a0a0c5 Dark Foreground (Used for status bars) +base05 #f1eff8 Default Foreground, Caret, Delimiters, Operators +base06 #ccccff Light Foreground (Not often used) +base07 #53495d Light Background (Not often used) +base08 #a0a0c5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #efe4a1 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ae81ff Classes, Markup Bold, Search Text Background +base0B #6dfedf Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8eaee0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #2de0a7 Functions, Methods, Attribute IDs, Headings +base0E #7aa5ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ff79c6 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #f1eff8; + background: #292a44 +} +.hljs::selection, +.hljs ::selection { + background-color: #383a62; + color: #f1eff8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #666699 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #666699 +} +/* base04 - #a0a0c5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a0a0c5 +} +/* base05 - #f1eff8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #f1eff8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #a0a0c5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #efe4a1 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ae81ff +} +.hljs-strong { + font-weight: bold; + color: #ae81ff +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6dfedf +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8eaee0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #2de0a7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7aa5ff +} +.hljs-emphasis { + color: #7aa5ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ff79c6 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ros-pine-dawn.css b/modules/highlighter/styles/base16/ros-pine-dawn.css new file mode 100644 index 0000000..7509d0b --- /dev/null +++ b/modules/highlighter/styles/base16/ros-pine-dawn.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rosé Pine Dawn + Author: Emilia Dunfelt + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ros-pine-dawn + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #faf4ed Default Background +base01 #fffaf3 Lighter Background (Used for status bars, line number and folding marks) +base02 #f2e9de Selection Background +base03 #9893a5 Comments, Invisibles, Line Highlighting +base04 #6e6a86 Dark Foreground (Used for status bars) +base05 #575279 Default Foreground, Caret, Delimiters, Operators +base06 #555169 Light Foreground (Not often used) +base07 #26233a Light Background (Not often used) +base08 #1f1d2e Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b4637a Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ea9d34 Classes, Markup Bold, Search Text Background +base0B #d7827e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #286983 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #56949f Functions, Methods, Attribute IDs, Headings +base0E #907aa9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c5c3ce Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #575279; + background: #faf4ed +} +.hljs::selection, +.hljs ::selection { + background-color: #f2e9de; + color: #575279 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9893a5 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9893a5 +} +/* base04 - #6e6a86 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6e6a86 +} +/* base05 - #575279 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #575279 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #1f1d2e +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b4637a +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ea9d34 +} +.hljs-strong { + font-weight: bold; + color: #ea9d34 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #d7827e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #286983 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #56949f +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #907aa9 +} +.hljs-emphasis { + color: #907aa9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c5c3ce +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ros-pine-moon.css b/modules/highlighter/styles/base16/ros-pine-moon.css new file mode 100644 index 0000000..57e81ac --- /dev/null +++ b/modules/highlighter/styles/base16/ros-pine-moon.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rosé Pine Moon + Author: Emilia Dunfelt + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ros-pine-moon + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #232136 Default Background +base01 #2a273f Lighter Background (Used for status bars, line number and folding marks) +base02 #393552 Selection Background +base03 #59546d Comments, Invisibles, Line Highlighting +base04 #817c9c Dark Foreground (Used for status bars) +base05 #e0def4 Default Foreground, Caret, Delimiters, Operators +base06 #f5f5f7 Light Foreground (Not often used) +base07 #d9d7e1 Light Background (Not often used) +base08 #ecebf0 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb6f92 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f6c177 Classes, Markup Bold, Search Text Background +base0B #ea9a97 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3e8fb0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #9ccfd8 Functions, Methods, Attribute IDs, Headings +base0E #c4a7e7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b9b9bc Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0def4; + background: #232136 +} +.hljs::selection, +.hljs ::selection { + background-color: #393552; + color: #e0def4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #59546d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #59546d +} +/* base04 - #817c9c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #817c9c +} +/* base05 - #e0def4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0def4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ecebf0 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb6f92 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f6c177 +} +.hljs-strong { + font-weight: bold; + color: #f6c177 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ea9a97 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3e8fb0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #9ccfd8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c4a7e7 +} +.hljs-emphasis { + color: #c4a7e7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b9b9bc +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ros-pine.css b/modules/highlighter/styles/base16/ros-pine.css new file mode 100644 index 0000000..da0e230 --- /dev/null +++ b/modules/highlighter/styles/base16/ros-pine.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rosé Pine + Author: Emilia Dunfelt + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ros-pine + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #191724 Default Background +base01 #1f1d2e Lighter Background (Used for status bars, line number and folding marks) +base02 #26233a Selection Background +base03 #555169 Comments, Invisibles, Line Highlighting +base04 #6e6a86 Dark Foreground (Used for status bars) +base05 #e0def4 Default Foreground, Caret, Delimiters, Operators +base06 #f0f0f3 Light Foreground (Not often used) +base07 #c5c3ce Light Background (Not often used) +base08 #e2e1e7 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb6f92 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f6c177 Classes, Markup Bold, Search Text Background +base0B #ebbcba Strings, Inherited Class, Markup Code, Diff Inserted +base0C #31748f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #9ccfd8 Functions, Methods, Attribute IDs, Headings +base0E #c4a7e7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e5e5e5 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0def4; + background: #191724 +} +.hljs::selection, +.hljs ::selection { + background-color: #26233a; + color: #e0def4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555169 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555169 +} +/* base04 - #6e6a86 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6e6a86 +} +/* base05 - #e0def4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0def4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e2e1e7 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb6f92 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f6c177 +} +.hljs-strong { + font-weight: bold; + color: #f6c177 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ebbcba +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #31748f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #9ccfd8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c4a7e7 +} +.hljs-emphasis { + color: #c4a7e7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e5e5e5 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/sagelight.css b/modules/highlighter/styles/base16/sagelight.css new file mode 100644 index 0000000..0baedb9 --- /dev/null +++ b/modules/highlighter/styles/base16/sagelight.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Sagelight + Author: Carter Veldhuizen + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme sagelight + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f8 Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d8d8 Selection Background +base03 #b8b8b8 Comments, Invisibles, Line Highlighting +base04 #585858 Dark Foreground (Used for status bars) +base05 #383838 Default Foreground, Caret, Delimiters, Operators +base06 #282828 Light Foreground (Not often used) +base07 #181818 Light Background (Not often used) +base08 #fa8480 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffaa61 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffdc61 Classes, Markup Bold, Search Text Background +base0B #a0d2c8 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #a2d6f5 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #a0a7d2 Functions, Methods, Attribute IDs, Headings +base0E #c8a0d2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d2b2a0 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383838; + background: #f8f8f8 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d8d8; + color: #383838 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b8b8b8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b8b8b8 +} +/* base04 - #585858 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #585858 +} +/* base05 - #383838 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383838 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fa8480 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffaa61 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffdc61 +} +.hljs-strong { + font-weight: bold; + color: #ffdc61 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a0d2c8 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #a2d6f5 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #a0a7d2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c8a0d2 +} +.hljs-emphasis { + color: #c8a0d2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d2b2a0 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/sandcastle.css b/modules/highlighter/styles/base16/sandcastle.css new file mode 100644 index 0000000..eba306d --- /dev/null +++ b/modules/highlighter/styles/base16/sandcastle.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Sandcastle + Author: George Essig (https://github.com/gessig) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme sandcastle + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282c34 Default Background +base01 #2c323b Lighter Background (Used for status bars, line number and folding marks) +base02 #3e4451 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #928374 Dark Foreground (Used for status bars) +base05 #a89984 Default Foreground, Caret, Delimiters, Operators +base06 #d5c4a1 Light Foreground (Not often used) +base07 #fdf4c1 Light Background (Not often used) +base08 #83a598 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a07e3b Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a07e3b Classes, Markup Bold, Search Text Background +base0B #528b8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #83a598 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d75f5f Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a87322 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a89984; + background: #282c34 +} +.hljs::selection, +.hljs ::selection { + background-color: #3e4451; + color: #a89984 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #928374 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #928374 +} +/* base05 - #a89984 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a89984 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #83a598 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a07e3b +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a07e3b +} +.hljs-strong { + font-weight: bold; + color: #a07e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #528b8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #83a598 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d75f5f +} +.hljs-emphasis { + color: #d75f5f; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a87322 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/seti-ui.css b/modules/highlighter/styles/base16/seti-ui.css new file mode 100644 index 0000000..ed897ce --- /dev/null +++ b/modules/highlighter/styles/base16/seti-ui.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Seti UI + Author: + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme seti-ui + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151718 Default Background +base01 #282a2b Lighter Background (Used for status bars, line number and folding marks) +base02 #3B758C Selection Background +base03 #41535B Comments, Invisibles, Line Highlighting +base04 #43a5d5 Dark Foreground (Used for status bars) +base05 #d6d6d6 Default Foreground, Caret, Delimiters, Operators +base06 #eeeeee Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #Cd3f45 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #db7b55 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e6cd69 Classes, Markup Bold, Search Text Background +base0B #9fca56 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #55dbbe Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #55b5db Functions, Methods, Attribute IDs, Headings +base0E #a074c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8a553f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d6d6d6; + background: #151718 +} +.hljs::selection, +.hljs ::selection { + background-color: #3B758C; + color: #d6d6d6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #41535B - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #41535B +} +/* base04 - #43a5d5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #43a5d5 +} +/* base05 - #d6d6d6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d6d6d6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #Cd3f45 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #db7b55 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e6cd69 +} +.hljs-strong { + font-weight: bold; + color: #e6cd69 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #9fca56 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #55dbbe +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #55b5db +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a074c4 +} +.hljs-emphasis { + color: #a074c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8a553f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/shapeshifter.css b/modules/highlighter/styles/base16/shapeshifter.css new file mode 100644 index 0000000..ab56c01 --- /dev/null +++ b/modules/highlighter/styles/base16/shapeshifter.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Shapeshifter + Author: Tyler Benziger (http://tybenz.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme shapeshifter + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f9f9f9 Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #ababab Selection Background +base03 #555555 Comments, Invisibles, Line Highlighting +base04 #343434 Dark Foreground (Used for status bars) +base05 #102015 Default Foreground, Caret, Delimiters, Operators +base06 #040404 Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #e92f2f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e09448 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dddd13 Classes, Markup Bold, Search Text Background +base0B #0ed839 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #23edda Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3b48e3 Functions, Methods, Attribute IDs, Headings +base0E #f996e2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #69542d Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #102015; + background: #f9f9f9 +} +.hljs::selection, +.hljs ::selection { + background-color: #ababab; + color: #102015 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555555 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555555 +} +/* base04 - #343434 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #343434 +} +/* base05 - #102015 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #102015 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e92f2f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e09448 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dddd13 +} +.hljs-strong { + font-weight: bold; + color: #dddd13 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #0ed839 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #23edda +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3b48e3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #f996e2 +} +.hljs-emphasis { + color: #f996e2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #69542d +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/silk-dark.css b/modules/highlighter/styles/base16/silk-dark.css new file mode 100644 index 0000000..a008a7b --- /dev/null +++ b/modules/highlighter/styles/base16/silk-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Silk Dark + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme silk-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0e3c46 Default Background +base01 #1D494E Lighter Background (Used for status bars, line number and folding marks) +base02 #2A5054 Selection Background +base03 #587073 Comments, Invisibles, Line Highlighting +base04 #9DC8CD Dark Foreground (Used for status bars) +base05 #C7DBDD Default Foreground, Caret, Delimiters, Operators +base06 #CBF2F7 Light Foreground (Not often used) +base07 #D2FAFF Light Background (Not often used) +base08 #fb6953 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fcab74 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fce380 Classes, Markup Bold, Search Text Background +base0B #73d8ad Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3fb2b9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #46bddd Functions, Methods, Attribute IDs, Headings +base0E #756b8a Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9b647b Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C7DBDD; + background: #0e3c46 +} +.hljs::selection, +.hljs ::selection { + background-color: #2A5054; + color: #C7DBDD +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #587073 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #587073 +} +/* base04 - #9DC8CD - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9DC8CD +} +/* base05 - #C7DBDD - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C7DBDD +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb6953 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fcab74 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fce380 +} +.hljs-strong { + font-weight: bold; + color: #fce380 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #73d8ad +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3fb2b9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #46bddd +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #756b8a +} +.hljs-emphasis { + color: #756b8a; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9b647b +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/silk-light.css b/modules/highlighter/styles/base16/silk-light.css new file mode 100644 index 0000000..0b081ca --- /dev/null +++ b/modules/highlighter/styles/base16/silk-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Silk Light + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme silk-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #E9F1EF Default Background +base01 #CCD4D3 Lighter Background (Used for status bars, line number and folding marks) +base02 #90B7B6 Selection Background +base03 #5C787B Comments, Invisibles, Line Highlighting +base04 #4B5B5F Dark Foreground (Used for status bars) +base05 #385156 Default Foreground, Caret, Delimiters, Operators +base06 #0e3c46 Light Foreground (Not often used) +base07 #D2FAFF Light Background (Not often used) +base08 #CF432E Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D27F46 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #CFAD25 Classes, Markup Bold, Search Text Background +base0B #6CA38C Strings, Inherited Class, Markup Code, Diff Inserted +base0C #329CA2 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #39AAC9 Functions, Methods, Attribute IDs, Headings +base0E #6E6582 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #865369 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #385156; + background: #E9F1EF +} +.hljs::selection, +.hljs ::selection { + background-color: #90B7B6; + color: #385156 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5C787B - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5C787B +} +/* base04 - #4B5B5F - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #4B5B5F +} +/* base05 - #385156 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #385156 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #CF432E +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D27F46 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #CFAD25 +} +.hljs-strong { + font-weight: bold; + color: #CFAD25 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6CA38C +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #329CA2 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #39AAC9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6E6582 +} +.hljs-emphasis { + color: #6E6582; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #865369 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/snazzy.css b/modules/highlighter/styles/base16/snazzy.css new file mode 100644 index 0000000..335abd9 --- /dev/null +++ b/modules/highlighter/styles/base16/snazzy.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Snazzy + Author: Chawye Hsu (https://github.com/chawyehsu) based on Hyper Snazzy Theme (https://github.com/sindresorhus/hyper-snazzy) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme snazzy + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282a36 Default Background +base01 #34353e Lighter Background (Used for status bars, line number and folding marks) +base02 #43454f Selection Background +base03 #78787e Comments, Invisibles, Line Highlighting +base04 #a5a5a9 Dark Foreground (Used for status bars) +base05 #e2e4e5 Default Foreground, Caret, Delimiters, Operators +base06 #eff0eb Light Foreground (Not often used) +base07 #f1f1f0 Light Background (Not often used) +base08 #ff5c57 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9f43 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f3f99d Classes, Markup Bold, Search Text Background +base0B #5af78e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #9aedfe Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #57c7ff Functions, Methods, Attribute IDs, Headings +base0E #ff6ac1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b2643c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e2e4e5; + background: #282a36 +} +.hljs::selection, +.hljs ::selection { + background-color: #43454f; + color: #e2e4e5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #78787e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #78787e +} +/* base04 - #a5a5a9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a5a5a9 +} +/* base05 - #e2e4e5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e2e4e5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff5c57 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9f43 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f3f99d +} +.hljs-strong { + font-weight: bold; + color: #f3f99d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5af78e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #9aedfe +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #57c7ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff6ac1 +} +.hljs-emphasis { + color: #ff6ac1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b2643c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solar-flare-light.css b/modules/highlighter/styles/base16/solar-flare-light.css new file mode 100644 index 0000000..d8124db --- /dev/null +++ b/modules/highlighter/styles/base16/solar-flare-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solar Flare Light + Author: Chuck Harmston (https://chuck.harmston.ch) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solar-flare-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #F5F7FA Default Background +base01 #E8E9ED Lighter Background (Used for status bars, line number and folding marks) +base02 #A6AFB8 Selection Background +base03 #85939E Comments, Invisibles, Line Highlighting +base04 #667581 Dark Foreground (Used for status bars) +base05 #586875 Default Foreground, Caret, Delimiters, Operators +base06 #222E38 Light Foreground (Not often used) +base07 #18262F Light Background (Not often used) +base08 #EF5253 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E66B2B Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #E4B51C Classes, Markup Bold, Search Text Background +base0B #7CC844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #52CBB0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #33B5E1 Functions, Methods, Attribute IDs, Headings +base0E #A363D5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #D73C9A Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #586875; + background: #F5F7FA +} +.hljs::selection, +.hljs ::selection { + background-color: #A6AFB8; + color: #586875 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #85939E - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #85939E +} +/* base04 - #667581 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #667581 +} +/* base05 - #586875 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #586875 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EF5253 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E66B2B +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #E4B51C +} +.hljs-strong { + font-weight: bold; + color: #E4B51C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7CC844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #52CBB0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #33B5E1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A363D5 +} +.hljs-emphasis { + color: #A363D5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #D73C9A +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solar-flare.css b/modules/highlighter/styles/base16/solar-flare.css new file mode 100644 index 0000000..0763f0c --- /dev/null +++ b/modules/highlighter/styles/base16/solar-flare.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solar Flare + Author: Chuck Harmston (https://chuck.harmston.ch) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solar-flare + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #18262F Default Background +base01 #222E38 Lighter Background (Used for status bars, line number and folding marks) +base02 #586875 Selection Background +base03 #667581 Comments, Invisibles, Line Highlighting +base04 #85939E Dark Foreground (Used for status bars) +base05 #A6AFB8 Default Foreground, Caret, Delimiters, Operators +base06 #E8E9ED Light Foreground (Not often used) +base07 #F5F7FA Light Background (Not often used) +base08 #EF5253 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E66B2B Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #E4B51C Classes, Markup Bold, Search Text Background +base0B #7CC844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #52CBB0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #33B5E1 Functions, Methods, Attribute IDs, Headings +base0E #A363D5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #D73C9A Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #A6AFB8; + background: #18262F +} +.hljs::selection, +.hljs ::selection { + background-color: #586875; + color: #A6AFB8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #667581 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #667581 +} +/* base04 - #85939E - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #85939E +} +/* base05 - #A6AFB8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #A6AFB8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EF5253 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E66B2B +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #E4B51C +} +.hljs-strong { + font-weight: bold; + color: #E4B51C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7CC844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #52CBB0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #33B5E1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A363D5 +} +.hljs-emphasis { + color: #A363D5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #D73C9A +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solarized-dark.css b/modules/highlighter/styles/base16/solarized-dark.css new file mode 100644 index 0000000..6437cf5 --- /dev/null +++ b/modules/highlighter/styles/base16/solarized-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solarized Dark + Author: Ethan Schoonover (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solarized-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #002b36 Default Background +base01 #073642 Lighter Background (Used for status bars, line number and folding marks) +base02 #586e75 Selection Background +base03 #657b83 Comments, Invisibles, Line Highlighting +base04 #839496 Dark Foreground (Used for status bars) +base05 #93a1a1 Default Foreground, Caret, Delimiters, Operators +base06 #eee8d5 Light Foreground (Not often used) +base07 #fdf6e3 Light Background (Not often used) +base08 #dc322f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cb4b16 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b58900 Classes, Markup Bold, Search Text Background +base0B #859900 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2aa198 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #268bd2 Functions, Methods, Attribute IDs, Headings +base0E #6c71c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d33682 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #93a1a1; + background: #002b36 +} +.hljs::selection, +.hljs ::selection { + background-color: #586e75; + color: #93a1a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #657b83 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #657b83 +} +/* base04 - #839496 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #839496 +} +/* base05 - #93a1a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #93a1a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dc322f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cb4b16 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b58900 +} +.hljs-strong { + font-weight: bold; + color: #b58900 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #859900 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2aa198 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #268bd2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6c71c4 +} +.hljs-emphasis { + color: #6c71c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d33682 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solarized-light.css b/modules/highlighter/styles/base16/solarized-light.css new file mode 100644 index 0000000..4c71ce0 --- /dev/null +++ b/modules/highlighter/styles/base16/solarized-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solarized Light + Author: Ethan Schoonover (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solarized-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fdf6e3 Default Background +base01 #eee8d5 Lighter Background (Used for status bars, line number and folding marks) +base02 #93a1a1 Selection Background +base03 #839496 Comments, Invisibles, Line Highlighting +base04 #657b83 Dark Foreground (Used for status bars) +base05 #586e75 Default Foreground, Caret, Delimiters, Operators +base06 #073642 Light Foreground (Not often used) +base07 #002b36 Light Background (Not often used) +base08 #dc322f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cb4b16 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b58900 Classes, Markup Bold, Search Text Background +base0B #859900 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2aa198 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #268bd2 Functions, Methods, Attribute IDs, Headings +base0E #6c71c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d33682 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #586e75; + background: #fdf6e3 +} +.hljs::selection, +.hljs ::selection { + background-color: #93a1a1; + color: #586e75 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #839496 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #839496 +} +/* base04 - #657b83 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #657b83 +} +/* base05 - #586e75 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #586e75 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dc322f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cb4b16 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b58900 +} +.hljs-strong { + font-weight: bold; + color: #b58900 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #859900 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2aa198 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #268bd2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6c71c4 +} +.hljs-emphasis { + color: #6c71c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d33682 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/spacemacs.css b/modules/highlighter/styles/base16/spacemacs.css new file mode 100644 index 0000000..19a2403 --- /dev/null +++ b/modules/highlighter/styles/base16/spacemacs.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Spacemacs + Author: Nasser Alshammari (https://github.com/nashamri/spacemacs-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme spacemacs + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1f2022 Default Background +base01 #282828 Lighter Background (Used for status bars, line number and folding marks) +base02 #444155 Selection Background +base03 #585858 Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #a3a3a3 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #f2241f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffa500 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b1951d Classes, Markup Bold, Search Text Background +base0B #67b11d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d9574 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4f97d7 Functions, Methods, Attribute IDs, Headings +base0E #a31db1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b03060 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a3a3a3; + background: #1f2022 +} +.hljs::selection, +.hljs ::selection { + background-color: #444155; + color: #a3a3a3 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #585858 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #585858 +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #a3a3a3 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a3a3a3 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f2241f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffa500 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b1951d +} +.hljs-strong { + font-weight: bold; + color: #b1951d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #67b11d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d9574 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4f97d7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a31db1 +} +.hljs-emphasis { + color: #a31db1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b03060 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/summercamp.css b/modules/highlighter/styles/base16/summercamp.css new file mode 100644 index 0000000..f462fd7 --- /dev/null +++ b/modules/highlighter/styles/base16/summercamp.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: summercamp + Author: zoe firi (zoefiri.github.io) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme summercamp + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1c1810 Default Background +base01 #2a261c Lighter Background (Used for status bars, line number and folding marks) +base02 #3a3527 Selection Background +base03 #504b38 Comments, Invisibles, Line Highlighting +base04 #5f5b45 Dark Foreground (Used for status bars) +base05 #736e55 Default Foreground, Caret, Delimiters, Operators +base06 #bab696 Light Foreground (Not often used) +base07 #f8f5de Light Background (Not often used) +base08 #e35142 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fba11b Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f2ff27 Classes, Markup Bold, Search Text Background +base0B #5ceb5a Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5aebbc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #489bf0 Functions, Methods, Attribute IDs, Headings +base0E #FF8080 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F69BE7 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #736e55; + background: #1c1810 +} +.hljs::selection, +.hljs ::selection { + background-color: #3a3527; + color: #736e55 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #504b38 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #504b38 +} +/* base04 - #5f5b45 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5f5b45 +} +/* base05 - #736e55 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #736e55 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e35142 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fba11b +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f2ff27 +} +.hljs-strong { + font-weight: bold; + color: #f2ff27 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5ceb5a +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5aebbc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #489bf0 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #FF8080 +} +.hljs-emphasis { + color: #FF8080; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F69BE7 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/summerfruit-dark.css b/modules/highlighter/styles/base16/summerfruit-dark.css new file mode 100644 index 0000000..57e9cdd --- /dev/null +++ b/modules/highlighter/styles/base16/summerfruit-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Summerfruit Dark + Author: Christopher Corley (http://christop.club/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme summerfruit-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151515 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #B0B0B0 Dark Foreground (Used for status bars) +base05 #D0D0D0 Default Foreground, Caret, Delimiters, Operators +base06 #E0E0E0 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #FF0086 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FD8900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ABA800 Classes, Markup Bold, Search Text Background +base0B #00C918 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1FAAAA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3777E6 Functions, Methods, Attribute IDs, Headings +base0E #AD00A1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #CC6633 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0D0; + background: #151515 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #D0D0D0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #B0B0B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B0B0B0 +} +/* base05 - #D0D0D0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0D0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF0086 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FD8900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ABA800 +} +.hljs-strong { + font-weight: bold; + color: #ABA800 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00C918 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1FAAAA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3777E6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AD00A1 +} +.hljs-emphasis { + color: #AD00A1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #CC6633 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/summerfruit-light.css b/modules/highlighter/styles/base16/summerfruit-light.css new file mode 100644 index 0000000..224f6e3 --- /dev/null +++ b/modules/highlighter/styles/base16/summerfruit-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Summerfruit Light + Author: Christopher Corley (http://christop.club/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme summerfruit-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #FFFFFF Default Background +base01 #E0E0E0 Lighter Background (Used for status bars, line number and folding marks) +base02 #D0D0D0 Selection Background +base03 #B0B0B0 Comments, Invisibles, Line Highlighting +base04 #000000 Dark Foreground (Used for status bars) +base05 #101010 Default Foreground, Caret, Delimiters, Operators +base06 #151515 Light Foreground (Not often used) +base07 #202020 Light Background (Not often used) +base08 #FF0086 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FD8900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ABA800 Classes, Markup Bold, Search Text Background +base0B #00C918 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1FAAAA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3777E6 Functions, Methods, Attribute IDs, Headings +base0E #AD00A1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #CC6633 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #101010; + background: #FFFFFF +} +.hljs::selection, +.hljs ::selection { + background-color: #D0D0D0; + color: #101010 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #B0B0B0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #B0B0B0 +} +/* base04 - #000000 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #000000 +} +/* base05 - #101010 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #101010 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF0086 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FD8900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ABA800 +} +.hljs-strong { + font-weight: bold; + color: #ABA800 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00C918 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1FAAAA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3777E6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AD00A1 +} +.hljs-emphasis { + color: #AD00A1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #CC6633 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/synth-midnight-terminal-dark.css b/modules/highlighter/styles/base16/synth-midnight-terminal-dark.css new file mode 100644 index 0000000..a13e3e2 --- /dev/null +++ b/modules/highlighter/styles/base16/synth-midnight-terminal-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Synth Midnight Terminal Dark + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme synth-midnight-terminal-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #050608 Default Background +base01 #1a1b1c Lighter Background (Used for status bars, line number and folding marks) +base02 #28292a Selection Background +base03 #474849 Comments, Invisibles, Line Highlighting +base04 #a3a5a6 Dark Foreground (Used for status bars) +base05 #c1c3c4 Default Foreground, Caret, Delimiters, Operators +base06 #cfd1d2 Light Foreground (Not often used) +base07 #dddfe0 Light Background (Not often used) +base08 #b53b50 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ea770d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c9d364 Classes, Markup Bold, Search Text Background +base0B #06ea61 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #42fff9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #03aeff Functions, Methods, Attribute IDs, Headings +base0E #ea5ce2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cd6320 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c3c4; + background: #050608 +} +.hljs::selection, +.hljs ::selection { + background-color: #28292a; + color: #c1c3c4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #474849 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #474849 +} +/* base04 - #a3a5a6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a3a5a6 +} +/* base05 - #c1c3c4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c3c4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b53b50 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ea770d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c9d364 +} +.hljs-strong { + font-weight: bold; + color: #c9d364 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #06ea61 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #42fff9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #03aeff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ea5ce2 +} +.hljs-emphasis { + color: #ea5ce2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cd6320 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/synth-midnight-terminal-light.css b/modules/highlighter/styles/base16/synth-midnight-terminal-light.css new file mode 100644 index 0000000..de3d8e1 --- /dev/null +++ b/modules/highlighter/styles/base16/synth-midnight-terminal-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Synth Midnight Terminal Light + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme synth-midnight-terminal-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #dddfe0 Default Background +base01 #cfd1d2 Lighter Background (Used for status bars, line number and folding marks) +base02 #c1c3c4 Selection Background +base03 #a3a5a6 Comments, Invisibles, Line Highlighting +base04 #474849 Dark Foreground (Used for status bars) +base05 #28292a Default Foreground, Caret, Delimiters, Operators +base06 #1a1b1c Light Foreground (Not often used) +base07 #050608 Light Background (Not often used) +base08 #b53b50 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ea770d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c9d364 Classes, Markup Bold, Search Text Background +base0B #06ea61 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #42fff9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #03aeff Functions, Methods, Attribute IDs, Headings +base0E #ea5ce2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cd6320 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #28292a; + background: #dddfe0 +} +.hljs::selection, +.hljs ::selection { + background-color: #c1c3c4; + color: #28292a +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a3a5a6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a3a5a6 +} +/* base04 - #474849 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #474849 +} +/* base05 - #28292a - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #28292a +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b53b50 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ea770d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c9d364 +} +.hljs-strong { + font-weight: bold; + color: #c9d364 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #06ea61 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #42fff9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #03aeff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ea5ce2 +} +.hljs-emphasis { + color: #ea5ce2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cd6320 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tango.css b/modules/highlighter/styles/base16/tango.css new file mode 100644 index 0000000..3a91f4e --- /dev/null +++ b/modules/highlighter/styles/base16/tango.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tango + Author: @Schnouki, based on the Tango Desktop Project + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tango + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2e3436 Default Background +base01 #8ae234 Lighter Background (Used for status bars, line number and folding marks) +base02 #fce94f Selection Background +base03 #555753 Comments, Invisibles, Line Highlighting +base04 #729fcf Dark Foreground (Used for status bars) +base05 #d3d7cf Default Foreground, Caret, Delimiters, Operators +base06 #ad7fa8 Light Foreground (Not often used) +base07 #eeeeec Light Background (Not often used) +base08 #cc0000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ef2929 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c4a000 Classes, Markup Bold, Search Text Background +base0B #4e9a06 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #06989a Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3465a4 Functions, Methods, Attribute IDs, Headings +base0E #75507b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #34e2e2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d3d7cf; + background: #2e3436 +} +.hljs::selection, +.hljs ::selection { + background-color: #fce94f; + color: #d3d7cf +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555753 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555753 +} +/* base04 - #729fcf - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #729fcf +} +/* base05 - #d3d7cf - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d3d7cf +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cc0000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ef2929 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c4a000 +} +.hljs-strong { + font-weight: bold; + color: #c4a000 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4e9a06 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #06989a +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3465a4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #75507b +} +.hljs-emphasis { + color: #75507b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #34e2e2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tender.css b/modules/highlighter/styles/base16/tender.css new file mode 100644 index 0000000..5c9ec77 --- /dev/null +++ b/modules/highlighter/styles/base16/tender.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: tender + Author: Jacobo Tabernero (https://github/com/jacoborus/tender.vim) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tender + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282828 Default Background +base01 #383838 Lighter Background (Used for status bars, line number and folding marks) +base02 #484848 Selection Background +base03 #4c4c4c Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #eeeeee Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #feffff Light Background (Not often used) +base08 #f43753 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffc24b Classes, Markup Bold, Search Text Background +base0B #c9d05c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #73cef4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #b3deef Functions, Methods, Attribute IDs, Headings +base0E #d3b987 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #eeeeee; + background: #282828 +} +.hljs::selection, +.hljs ::selection { + background-color: #484848; + color: #eeeeee +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4c4c4c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4c4c4c +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #eeeeee - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #eeeeee +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f43753 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffc24b +} +.hljs-strong { + font-weight: bold; + color: #ffc24b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #c9d05c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #73cef4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #b3deef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3b987 +} +.hljs-emphasis { + color: #d3b987; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tomorrow-night.css b/modules/highlighter/styles/base16/tomorrow-night.css new file mode 100644 index 0000000..2c3750e --- /dev/null +++ b/modules/highlighter/styles/base16/tomorrow-night.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tomorrow Night + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tomorrow-night + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #999999 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #f2777a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f99157 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffcc66 Classes, Markup Bold, Search Text Background +base0B #99cc99 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #66cccc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6699cc Functions, Methods, Attribute IDs, Headings +base0E #cc99cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a3685a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #999999 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #999999 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f2777a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f99157 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffcc66 +} +.hljs-strong { + font-weight: bold; + color: #ffcc66 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99cc99 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #66cccc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6699cc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc99cc +} +.hljs-emphasis { + color: #cc99cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a3685a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tomorrow.css b/modules/highlighter/styles/base16/tomorrow.css new file mode 100644 index 0000000..bda285d --- /dev/null +++ b/modules/highlighter/styles/base16/tomorrow.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tomorrow + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tomorrow + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #d6d6d6 Selection Background +base03 #8e908c Comments, Invisibles, Line Highlighting +base04 #969896 Dark Foreground (Used for status bars) +base05 #4d4d4c Default Foreground, Caret, Delimiters, Operators +base06 #282a2e Light Foreground (Not often used) +base07 #1d1f21 Light Background (Not often used) +base08 #c82829 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f5871f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #eab700 Classes, Markup Bold, Search Text Background +base0B #718c00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3e999f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4271ae Functions, Methods, Attribute IDs, Headings +base0E #8959a8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a3685a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #4d4d4c; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #d6d6d6; + color: #4d4d4c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #8e908c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #8e908c +} +/* base04 - #969896 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #969896 +} +/* base05 - #4d4d4c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #4d4d4c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c82829 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f5871f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #eab700 +} +.hljs-strong { + font-weight: bold; + color: #eab700 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #718c00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3e999f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4271ae +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8959a8 +} +.hljs-emphasis { + color: #8959a8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a3685a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/twilight.css b/modules/highlighter/styles/base16/twilight.css new file mode 100644 index 0000000..0bde680 --- /dev/null +++ b/modules/highlighter/styles/base16/twilight.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Twilight + Author: David Hart (https://github.com/hartbit) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme twilight + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1e1e1e Default Background +base01 #323537 Lighter Background (Used for status bars, line number and folding marks) +base02 #464b50 Selection Background +base03 #5f5a60 Comments, Invisibles, Line Highlighting +base04 #838184 Dark Foreground (Used for status bars) +base05 #a7a7a7 Default Foreground, Caret, Delimiters, Operators +base06 #c3c3c3 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #cf6a4c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cda869 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f9ee98 Classes, Markup Bold, Search Text Background +base0B #8f9d6a Strings, Inherited Class, Markup Code, Diff Inserted +base0C #afc4db Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7587a6 Functions, Methods, Attribute IDs, Headings +base0E #9b859d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9b703f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a7a7a7; + background: #1e1e1e +} +.hljs::selection, +.hljs ::selection { + background-color: #464b50; + color: #a7a7a7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f5a60 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f5a60 +} +/* base04 - #838184 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #838184 +} +/* base05 - #a7a7a7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a7a7a7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cf6a4c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cda869 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f9ee98 +} +.hljs-strong { + font-weight: bold; + color: #f9ee98 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8f9d6a +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #afc4db +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7587a6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9b859d +} +.hljs-emphasis { + color: #9b859d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9b703f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/unikitty-dark.css b/modules/highlighter/styles/base16/unikitty-dark.css new file mode 100644 index 0000000..02bb32d --- /dev/null +++ b/modules/highlighter/styles/base16/unikitty-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Unikitty Dark + Author: Josh W Lewis (@joshwlewis) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme unikitty-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2e2a31 Default Background +base01 #4a464d Lighter Background (Used for status bars, line number and folding marks) +base02 #666369 Selection Background +base03 #838085 Comments, Invisibles, Line Highlighting +base04 #9f9da2 Dark Foreground (Used for status bars) +base05 #bcbabe Default Foreground, Caret, Delimiters, Operators +base06 #d8d7da Light Foreground (Not often used) +base07 #f5f4f7 Light Background (Not often used) +base08 #d8137f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d65407 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dc8a0e Classes, Markup Bold, Search Text Background +base0B #17ad98 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #149bda Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #796af5 Functions, Methods, Attribute IDs, Headings +base0E #bb60ea Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c720ca Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #bcbabe; + background: #2e2a31 +} +.hljs::selection, +.hljs ::selection { + background-color: #666369; + color: #bcbabe +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #838085 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #838085 +} +/* base04 - #9f9da2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9f9da2 +} +/* base05 - #bcbabe - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #bcbabe +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d8137f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d65407 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dc8a0e +} +.hljs-strong { + font-weight: bold; + color: #dc8a0e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #17ad98 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #149bda +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #796af5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bb60ea +} +.hljs-emphasis { + color: #bb60ea; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c720ca +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/unikitty-light.css b/modules/highlighter/styles/base16/unikitty-light.css new file mode 100644 index 0000000..a1ba697 --- /dev/null +++ b/modules/highlighter/styles/base16/unikitty-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Unikitty Light + Author: Josh W Lewis (@joshwlewis) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme unikitty-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #e1e1e2 Lighter Background (Used for status bars, line number and folding marks) +base02 #c4c3c5 Selection Background +base03 #a7a5a8 Comments, Invisibles, Line Highlighting +base04 #89878b Dark Foreground (Used for status bars) +base05 #6c696e Default Foreground, Caret, Delimiters, Operators +base06 #4f4b51 Light Foreground (Not often used) +base07 #322d34 Light Background (Not often used) +base08 #d8137f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d65407 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dc8a0e Classes, Markup Bold, Search Text Background +base0B #17ad98 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #149bda Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #775dff Functions, Methods, Attribute IDs, Headings +base0E #aa17e6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e013d0 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #6c696e; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c4c3c5; + color: #6c696e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a7a5a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a7a5a8 +} +/* base04 - #89878b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #89878b +} +/* base05 - #6c696e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #6c696e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d8137f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d65407 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dc8a0e +} +.hljs-strong { + font-weight: bold; + color: #dc8a0e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #17ad98 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #149bda +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #775dff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #aa17e6 +} +.hljs-emphasis { + color: #aa17e6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e013d0 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/vulcan.css b/modules/highlighter/styles/base16/vulcan.css new file mode 100644 index 0000000..dc2ac1a --- /dev/null +++ b/modules/highlighter/styles/base16/vulcan.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: vulcan + Author: Andrey Varfolomeev + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme vulcan + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #041523 Default Background +base01 #122339 Lighter Background (Used for status bars, line number and folding marks) +base02 #003552 Selection Background +base03 #7a5759 Comments, Invisibles, Line Highlighting +base04 #6b6977 Dark Foreground (Used for status bars) +base05 #5b778c Default Foreground, Caret, Delimiters, Operators +base06 #333238 Light Foreground (Not often used) +base07 #214d68 Light Background (Not often used) +base08 #818591 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #9198a3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #adb4b9 Classes, Markup Bold, Search Text Background +base0B #977d7c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #977d7c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #977d7c Functions, Methods, Attribute IDs, Headings +base0E #9198a3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #977d7c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5b778c; + background: #041523 +} +.hljs::selection, +.hljs ::selection { + background-color: #003552; + color: #5b778c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7a5759 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7a5759 +} +/* base04 - #6b6977 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6b6977 +} +/* base05 - #5b778c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5b778c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #818591 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #9198a3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #adb4b9 +} +.hljs-strong { + font-weight: bold; + color: #adb4b9 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #977d7c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #977d7c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #977d7c +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9198a3 +} +.hljs-emphasis { + color: #9198a3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #977d7c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-10-light.css b/modules/highlighter/styles/base16/windows-10-light.css new file mode 100644 index 0000000..022e40a --- /dev/null +++ b/modules/highlighter/styles/base16/windows-10-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 10 Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-10-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f2f2f2 Default Background +base01 #e5e5e5 Lighter Background (Used for status bars, line number and folding marks) +base02 #d9d9d9 Selection Background +base03 #cccccc Comments, Invisibles, Line Highlighting +base04 #ababab Dark Foreground (Used for status bars) +base05 #767676 Default Foreground, Caret, Delimiters, Operators +base06 #414141 Light Foreground (Not often used) +base07 #0c0c0c Light Background (Not often used) +base08 #c50f1f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f9f1a5 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c19c00 Classes, Markup Bold, Search Text Background +base0B #13a10e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3a96dd Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0037da Functions, Methods, Attribute IDs, Headings +base0E #881798 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #16c60c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #767676; + background: #f2f2f2 +} +.hljs::selection, +.hljs ::selection { + background-color: #d9d9d9; + color: #767676 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #cccccc - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #cccccc +} +/* base04 - #ababab - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ababab +} +/* base05 - #767676 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #767676 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c50f1f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f9f1a5 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c19c00 +} +.hljs-strong { + font-weight: bold; + color: #c19c00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #13a10e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3a96dd +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0037da +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #881798 +} +.hljs-emphasis { + color: #881798; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #16c60c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-10.css b/modules/highlighter/styles/base16/windows-10.css new file mode 100644 index 0000000..f0f0e2d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-10.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 10 + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-10 + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0c0c0c Default Background +base01 #2f2f2f Lighter Background (Used for status bars, line number and folding marks) +base02 #535353 Selection Background +base03 #767676 Comments, Invisibles, Line Highlighting +base04 #b9b9b9 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #dfdfdf Light Foreground (Not often used) +base07 #f2f2f2 Light Background (Not often used) +base08 #e74856 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c19c00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f9f1a5 Classes, Markup Bold, Search Text Background +base0B #16c60c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #61d6d6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3b78ff Functions, Methods, Attribute IDs, Headings +base0E #b4009e Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #13a10e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #0c0c0c +} +.hljs::selection, +.hljs ::selection { + background-color: #535353; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #767676 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #767676 +} +/* base04 - #b9b9b9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b9b9b9 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e74856 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c19c00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f9f1a5 +} +.hljs-strong { + font-weight: bold; + color: #f9f1a5 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #16c60c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #61d6d6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3b78ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b4009e +} +.hljs-emphasis { + color: #b4009e; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #13a10e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-95-light.css b/modules/highlighter/styles/base16/windows-95-light.css new file mode 100644 index 0000000..bbf034d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-95-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 95 Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-95-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fcfcfc Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #c4c4c4 Selection Background +base03 #a8a8a8 Comments, Invisibles, Line Highlighting +base04 #7e7e7e Dark Foreground (Used for status bars) +base05 #545454 Default Foreground, Caret, Delimiters, Operators +base06 #2a2a2a Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #a80000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fcfc54 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a85400 Classes, Markup Bold, Search Text Background +base0B #00a800 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00a8a8 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000a8 Functions, Methods, Attribute IDs, Headings +base0E #a800a8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #54fc54 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #545454; + background: #fcfcfc +} +.hljs::selection, +.hljs ::selection { + background-color: #c4c4c4; + color: #545454 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a8a8a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a8a8a8 +} +/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7e7e +} +/* base05 - #545454 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #545454 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #a80000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fcfc54 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a85400 +} +.hljs-strong { + font-weight: bold; + color: #a85400 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00a800 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00a8a8 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000a8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a800a8 +} +.hljs-emphasis { + color: #a800a8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #54fc54 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-95.css b/modules/highlighter/styles/base16/windows-95.css new file mode 100644 index 0000000..002d6f9 --- /dev/null +++ b/modules/highlighter/styles/base16/windows-95.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 95 + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-95 + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #1C1C1C Lighter Background (Used for status bars, line number and folding marks) +base02 #383838 Selection Background +base03 #545454 Comments, Invisibles, Line Highlighting +base04 #7e7e7e Dark Foreground (Used for status bars) +base05 #a8a8a8 Default Foreground, Caret, Delimiters, Operators +base06 #d2d2d2 Light Foreground (Not often used) +base07 #fcfcfc Light Background (Not often used) +base08 #fc5454 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a85400 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fcfc54 Classes, Markup Bold, Search Text Background +base0B #54fc54 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #54fcfc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5454fc Functions, Methods, Attribute IDs, Headings +base0E #fc54fc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #00a800 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a8a8a8; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #383838; + color: #a8a8a8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #545454 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #545454 +} +/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7e7e +} +/* base05 - #a8a8a8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a8a8a8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fc5454 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a85400 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fcfc54 +} +.hljs-strong { + font-weight: bold; + color: #fcfc54 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #54fc54 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #54fcfc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5454fc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #fc54fc +} +.hljs-emphasis { + color: #fc54fc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #00a800 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-high-contrast-light.css b/modules/highlighter/styles/base16/windows-high-contrast-light.css new file mode 100644 index 0000000..5589678 --- /dev/null +++ b/modules/highlighter/styles/base16/windows-high-contrast-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows High Contrast Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-high-contrast-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fcfcfc Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d4d4d4 Selection Background +base03 #c0c0c0 Comments, Invisibles, Line Highlighting +base04 #7e7e7e Dark Foreground (Used for status bars) +base05 #545454 Default Foreground, Caret, Delimiters, Operators +base06 #2a2a2a Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #800000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fcfc54 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #808000 Classes, Markup Bold, Search Text Background +base0B #008000 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #008080 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #000080 Functions, Methods, Attribute IDs, Headings +base0E #800080 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #54fc54 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #545454; + background: #fcfcfc +} +.hljs::selection, +.hljs ::selection { + background-color: #d4d4d4; + color: #545454 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #c0c0c0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #c0c0c0 +} +/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7e7e +} +/* base05 - #545454 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #545454 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #800000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fcfc54 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #808000 +} +.hljs-strong { + font-weight: bold; + color: #808000 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #008000 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #008080 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #000080 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #800080 +} +.hljs-emphasis { + color: #800080; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #54fc54 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-high-contrast.css b/modules/highlighter/styles/base16/windows-high-contrast.css new file mode 100644 index 0000000..1ad278d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-high-contrast.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows High Contrast + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-high-contrast + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #1C1C1C Lighter Background (Used for status bars, line number and folding marks) +base02 #383838 Selection Background +base03 #545454 Comments, Invisibles, Line Highlighting +base04 #a2a2a2 Dark Foreground (Used for status bars) +base05 #c0c0c0 Default Foreground, Caret, Delimiters, Operators +base06 #dedede Light Foreground (Not often used) +base07 #fcfcfc Light Background (Not often used) +base08 #fc5454 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #808000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fcfc54 Classes, Markup Bold, Search Text Background +base0B #54fc54 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #54fcfc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5454fc Functions, Methods, Attribute IDs, Headings +base0E #fc54fc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #008000 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c0c0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #383838; + color: #c0c0c0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #545454 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #545454 +} +/* base04 - #a2a2a2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a2a2a2 +} +/* base05 - #c0c0c0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c0c0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fc5454 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #808000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fcfc54 +} +.hljs-strong { + font-weight: bold; + color: #fcfc54 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #54fc54 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #54fcfc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5454fc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #fc54fc +} +.hljs-emphasis { + color: #fc54fc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #008000 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-nt-light.css b/modules/highlighter/styles/base16/windows-nt-light.css new file mode 100644 index 0000000..a029d7d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-nt-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows NT Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-nt-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #eaeaea Lighter Background (Used for status bars, line number and folding marks) +base02 #d5d5d5 Selection Background +base03 #c0c0c0 Comments, Invisibles, Line Highlighting +base04 #a0a0a0 Dark Foreground (Used for status bars) +base05 #808080 Default Foreground, Caret, Delimiters, Operators +base06 #404040 Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #800000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffff00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #808000 Classes, Markup Bold, Search Text Background +base0B #008000 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #008080 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #000080 Functions, Methods, Attribute IDs, Headings +base0E #800080 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #00ff00 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #808080; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #d5d5d5; + color: #808080 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #c0c0c0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #c0c0c0 +} +/* base04 - #a0a0a0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a0a0a0 +} +/* base05 - #808080 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #808080 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #800000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffff00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #808000 +} +.hljs-strong { + font-weight: bold; + color: #808000 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #008000 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #008080 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #000080 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #800080 +} +.hljs-emphasis { + color: #800080; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #00ff00 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-nt.css b/modules/highlighter/styles/base16/windows-nt.css new file mode 100644 index 0000000..4a2608b --- /dev/null +++ b/modules/highlighter/styles/base16/windows-nt.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows NT + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-nt + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #2a2a2a Lighter Background (Used for status bars, line number and folding marks) +base02 #555555 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #a1a1a1 Dark Foreground (Used for status bars) +base05 #c0c0c0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff0000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #808000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffff00 Classes, Markup Bold, Search Text Background +base0B #00ff00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00ffff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000ff Functions, Methods, Attribute IDs, Headings +base0E #ff00ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #008000 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c0c0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #555555; + color: #c0c0c0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #a1a1a1 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a1a1a1 +} +/* base05 - #c0c0c0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c0c0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff0000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #808000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffff00 +} +.hljs-strong { + font-weight: bold; + color: #ffff00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00ff00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00ffff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff00ff +} +.hljs-emphasis { + color: #ff00ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #008000 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/woodland.css b/modules/highlighter/styles/base16/woodland.css new file mode 100644 index 0000000..128ad4e --- /dev/null +++ b/modules/highlighter/styles/base16/woodland.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Woodland + Author: Jay Cornwall (https://jcornwall.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme woodland + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #231e18 Default Background +base01 #302b25 Lighter Background (Used for status bars, line number and folding marks) +base02 #48413a Selection Background +base03 #9d8b70 Comments, Invisibles, Line Highlighting +base04 #b4a490 Dark Foreground (Used for status bars) +base05 #cabcb1 Default Foreground, Caret, Delimiters, Operators +base06 #d7c8bc Light Foreground (Not often used) +base07 #e4d4c8 Light Background (Not often used) +base08 #d35c5c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ca7f32 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e0ac16 Classes, Markup Bold, Search Text Background +base0B #b7ba53 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #6eb958 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #88a4d3 Functions, Methods, Attribute IDs, Headings +base0E #bb90e2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b49368 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cabcb1; + background: #231e18 +} +.hljs::selection, +.hljs ::selection { + background-color: #48413a; + color: #cabcb1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9d8b70 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9d8b70 +} +/* base04 - #b4a490 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4a490 +} +/* base05 - #cabcb1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cabcb1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d35c5c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ca7f32 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e0ac16 +} +.hljs-strong { + font-weight: bold; + color: #e0ac16 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b7ba53 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #6eb958 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #88a4d3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bb90e2 +} +.hljs-emphasis { + color: #bb90e2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b49368 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/xcode-dusk.css b/modules/highlighter/styles/base16/xcode-dusk.css new file mode 100644 index 0000000..e765a98 --- /dev/null +++ b/modules/highlighter/styles/base16/xcode-dusk.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: XCode Dusk + Author: Elsa Gonsiorowski (https://github.com/gonsie) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme xcode-dusk + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282B35 Default Background +base01 #3D4048 Lighter Background (Used for status bars, line number and folding marks) +base02 #53555D Selection Background +base03 #686A71 Comments, Invisibles, Line Highlighting +base04 #7E8086 Dark Foreground (Used for status bars) +base05 #939599 Default Foreground, Caret, Delimiters, Operators +base06 #A9AAAE Light Foreground (Not often used) +base07 #BEBFC2 Light Background (Not often used) +base08 #B21889 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #786DC5 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #438288 Classes, Markup Bold, Search Text Background +base0B #DF0002 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00A0BE Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #790EAD Functions, Methods, Attribute IDs, Headings +base0E #B21889 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #C77C48 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #939599; + background: #282B35 +} +.hljs::selection, +.hljs ::selection { + background-color: #53555D; + color: #939599 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #686A71 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #686A71 +} +/* base04 - #7E8086 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7E8086 +} +/* base05 - #939599 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #939599 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #B21889 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #786DC5 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #438288 +} +.hljs-strong { + font-weight: bold; + color: #438288 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #DF0002 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00A0BE +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #790EAD +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #B21889 +} +.hljs-emphasis { + color: #B21889; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #C77C48 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/zenburn.css b/modules/highlighter/styles/base16/zenburn.css new file mode 100644 index 0000000..cc69301 --- /dev/null +++ b/modules/highlighter/styles/base16/zenburn.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Zenburn + Author: elnawe + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme zenburn + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #383838 Default Background +base01 #404040 Lighter Background (Used for status bars, line number and folding marks) +base02 #606060 Selection Background +base03 #6f6f6f Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #dcdccc Default Foreground, Caret, Delimiters, Operators +base06 #c0c0c0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dca3a3 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dfaf8f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e0cf9f Classes, Markup Bold, Search Text Background +base0B #5f7f5f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #93e0e3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cb8bb Functions, Methods, Attribute IDs, Headings +base0E #dc8cc3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #000000 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #dcdccc; + background: #383838 +} +.hljs::selection, +.hljs ::selection { + background-color: #606060; + color: #dcdccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6f6f6f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6f6f6f +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #dcdccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #dcdccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dca3a3 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dfaf8f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e0cf9f +} +.hljs-strong { + font-weight: bold; + color: #e0cf9f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5f7f5f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #93e0e3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cb8bb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #dc8cc3 +} +.hljs-emphasis { + color: #dc8cc3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #000000 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/brown-paper.css b/modules/highlighter/styles/brown-paper.css new file mode 100644 index 0000000..e6f245f --- /dev/null +++ b/modules/highlighter/styles/brown-paper.css @@ -0,0 +1,63 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Brown Paper style from goldblog.com.ua (c) Zaripov Yura + +*/ +.hljs { + color: #363c69; + background: #b7a68e url(./brown-papersq.png) +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #005599; + font-weight: bold +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link, +.hljs-name { + color: #2c009f +} +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #802022 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/codepen-embed.css b/modules/highlighter/styles/codepen-embed.css new file mode 100644 index 0000000..01e2fd5 --- /dev/null +++ b/modules/highlighter/styles/codepen-embed.css @@ -0,0 +1,57 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + codepen.io Embed Theme + Author: Justin Perry + Original theme - https://github.com/chriskempson/tomorrow-theme +*/ +.hljs { + background: #222; + color: #fff +} +.hljs-comment, +.hljs-quote { + color: #777 +} +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-regexp, +.hljs-meta, +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-params, +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-deletion { + color: #ab875d +} +.hljs-section, +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-type, +.hljs-attribute { + color: #9b869b +} +.hljs-string, +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #8f9c6c +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/color-brewer.css b/modules/highlighter/styles/color-brewer.css new file mode 100644 index 0000000..c0db73c --- /dev/null +++ b/modules/highlighter/styles/color-brewer.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Colorbrewer theme +Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock +Ported by Fabrício Tavares de Oliveira + +*/ +.hljs { + color: #000; + background: #fff +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-meta, +.hljs-symbol, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #756bb1 +} +.hljs-comment, +.hljs-quote { + color: #636363 +} +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-bullet, +.hljs-link { + color: #31a354 +} +.hljs-deletion, +.hljs-variable { + color: #88f +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-doctag, +.hljs-type, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-strong { + color: #3182bd +} +.hljs-emphasis { + font-style: italic +} +.hljs-attribute { + color: #e6550d +} \ No newline at end of file diff --git a/modules/highlighter/styles/dark.css b/modules/highlighter/styles/dark.css new file mode 100644 index 0000000..bdeceb2 --- /dev/null +++ b/modules/highlighter/styles/dark.css @@ -0,0 +1,62 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Dark style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ +.hljs { + color: #ddd; + background: #303030 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: white +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #d88 +} +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #979797 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/default.css b/modules/highlighter/styles/default.css new file mode 100644 index 0000000..6c4d2b3 --- /dev/null +++ b/modules/highlighter/styles/default.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/ +/* +This is left on purpose making default.css the single file that can be lifted +as-is from the repository directly without the need for a build step + +Typically this "required" baseline CSS is added by `makestuff.js` during build. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* end baseline CSS */ +.hljs { + background: #F3F3F3; + color: #444 +} +/* Base color: saturation 0; */ +.hljs-subst { + /* default */ + +} +/* purposely ignored */ +.hljs-formula, +.hljs-attr, +.hljs-property, +.hljs-params { + +} +.hljs-comment { + color: #697070 +} +.hljs-tag, +.hljs-punctuation { + color: #444a +} +.hljs-tag .hljs-name, +.hljs-tag .hljs-attr { + color: #444 +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold +} +/* User color: hue: 0 */ +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000 +} +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-operator, +.hljs-selector-pseudo { + color: #ab5656 +} +/* Language color: hue: 90; */ +.hljs-literal { + color: #695 +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300 +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #38a +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/devibeans.css b/modules/highlighter/styles/devibeans.css new file mode 100644 index 0000000..a35e363 --- /dev/null +++ b/modules/highlighter/styles/devibeans.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: devibeans (dark) + Author: @terminaldweller + Maintainer: @terminaldweller + + Inspired by vim's jellybeans theme (https://github.com/nanotech/jellybeans.vim) +*/ +.hljs { + background: #000000; + color: #a39e9b +} +.hljs-attr, +.hljs-template-tag { + color: #8787d7 +} +.hljs-comment, +.hljs-doctag, +.hljs-quote { + color: #339966 +} +.hljs-params { + color: #a39e9b +} +.hljs-regexp { + color: #d700ff +} +.hljs-tag, +.hljs-selector-id, +.hljs-number, +.hljs-literal { + color: #ef5350 +} +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #0087ff +} +/* opt-out */ +.hljs-operator, +.hljs-punctuation { + +} +.hljs-selector-class, +.hljs-code, +.hljs-formula, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link, +.hljs-keyword { + color: #64b5f6 +} +.hljs-built_in, +.hljs-title, +.hljs-deletion { + color: #ff8700 +} +.hljs-type, +.hljs-section, +.hljs-function, +.hljs-name, +.hljs-property, +.hljs-attribute { + color: #ffd75f +} +.hljs-meta .hljs-string, +.hljs-string, +.hljs-subst, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #558b2f +} +.hljs-selector-tag { + color: #9966ff +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/docco.css b/modules/highlighter/styles/docco.css new file mode 100644 index 0000000..1be51b4 --- /dev/null +++ b/modules/highlighter/styles/docco.css @@ -0,0 +1,83 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ +.hljs { + color: #000; + background: #f8f8ff +} +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121 +} +.hljs-number { + color: #40a070 +} +.hljs-string, +.hljs-doctag { + color: #219161 +} +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d +} +.hljs-params { + color: #00f +} +.hljs-title { + color: #458; + font-weight: bold +} +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal +} +.hljs-variable, +.hljs-template-variable { + color: #008080 +} +.hljs-regexp, +.hljs-link { + color: #b68 +} +.hljs-symbol, +.hljs-bullet { + color: #990073 +} +.hljs-built_in { + color: #0086b3 +} +.hljs-meta { + color: #999; + font-weight: bold +} +.hljs-deletion { + background: #fdd +} +.hljs-addition { + background: #dfd +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/far.css b/modules/highlighter/styles/far.css new file mode 100644 index 0000000..ecf7cf5 --- /dev/null +++ b/modules/highlighter/styles/far.css @@ -0,0 +1,67 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +FAR Style (c) MajestiC + +*/ +.hljs { + color: #0ff; + background: #000080 +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #ff0 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-variable { + color: #fff +} +.hljs-comment, +.hljs-quote, +.hljs-doctag, +.hljs-deletion { + color: #888 +} +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #0f0 +} +.hljs-meta { + color: #008080 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/felipec.css b/modules/highlighter/styles/felipec.css new file mode 100644 index 0000000..282dfd6 --- /dev/null +++ b/modules/highlighter/styles/felipec.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + * Theme: FelipeC + * Author: (c) 2021 Felipe Contreras + * Website: https://github.com/felipec/vim-felipec + * + * Autogenerated with vim-felipec's generator. +*/ +.hljs { + color: #dddde1; + background: #1e1e22 +} +.hljs::selection, +.hljs ::selection { + color: #1e1e22; + background: #bf8fef +} +.hljs-comment, +.hljs-code, +.hljs-quote { + color: #888896 +} +.hljs-number, +.hljs-literal, +.hljs-deletion { + color: #ef8f8f +} +.hljs-punctuation, +.hljs-meta, +.hljs-operator, +.hljs-subst, +.hljs-doctag, +.hljs-template-variable, +.hljs-selector-attr { + color: #efbf8f +} +.hljs-type { + color: #efef8f +} +.hljs-tag, +.hljs-title, +.hljs-selector-class, +.hljs-selector-id { + color: #bfef8f +} +.hljs-string, +.hljs-regexp, +.hljs-addition { + color: #8fef8f +} +.hljs-class, +.hljs-property { + color: #8fefbf +} +.hljs-name, +.hljs-selector-tag { + color: #8fefef +} +.hljs-keyword, +.hljs-built_in { + color: #8fbfef +} +.hljs-section, +.hljs-bullet { + color: #8f8fef +} +.hljs-selector-pseudo { + color: #bf8fef +} +.hljs-variable, +.hljs-params, +.hljs-attr, +.hljs-attribute { + color: #ef8fef +} +.hljs-symbol, +.hljs-link { + color: #ef8fbf +} +.hljs-strong, +.hljs-literal, +.hljs-title { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/foundation.css b/modules/highlighter/styles/foundation.css new file mode 100644 index 0000000..87641c7 --- /dev/null +++ b/modules/highlighter/styles/foundation.css @@ -0,0 +1,80 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ +.hljs { + background: #eee; + color: black +} +.hljs-link, +.hljs-emphasis, +.hljs-attribute, +.hljs-addition { + color: #070 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong, +.hljs-string, +.hljs-deletion { + color: #d14 +} +.hljs-strong { + font-weight: bold +} +.hljs-quote, +.hljs-comment { + color: #998; + font-style: italic +} +.hljs-section, +.hljs-title { + color: #900 +} +.hljs-class .hljs-title, +.hljs-title.class_, +.hljs-type { + color: #458 +} +.hljs-variable, +.hljs-template-variable { + color: #336699 +} +.hljs-bullet { + color: #997700 +} +.hljs-meta { + color: #3344bb +} +.hljs-code, +.hljs-number, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag { + color: #099 +} +.hljs-regexp { + background-color: #fff0ff; + color: #880088 +} +.hljs-symbol { + color: #990073 +} +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #007700 +} \ No newline at end of file diff --git a/modules/highlighter/styles/github-dark-dimmed.css b/modules/highlighter/styles/github-dark-dimmed.css new file mode 100644 index 0000000..f3855ca --- /dev/null +++ b/modules/highlighter/styles/github-dark-dimmed.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: GitHub Dark Dimmed + Description: Dark dimmed theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Colors taken from GitHub's CSS +*/ +.hljs { + color: #adbac7; + background: #22272e +} +.hljs-doctag, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-variable.language_ { + /* prettylights-syntax-keyword */ + color: #f47067 +} +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-title.function_ { + /* prettylights-syntax-entity */ + color: #dcbdfb +} +.hljs-attr, +.hljs-attribute, +.hljs-literal, +.hljs-meta, +.hljs-number, +.hljs-operator, +.hljs-variable, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-id { + /* prettylights-syntax-constant */ + color: #6cb6ff +} +.hljs-regexp, +.hljs-string, +.hljs-meta .hljs-string { + /* prettylights-syntax-string */ + color: #96d0ff +} +.hljs-built_in, +.hljs-symbol { + /* prettylights-syntax-variable */ + color: #f69d50 +} +.hljs-comment, +.hljs-code, +.hljs-formula { + /* prettylights-syntax-comment */ + color: #768390 +} +.hljs-name, +.hljs-quote, +.hljs-selector-tag, +.hljs-selector-pseudo { + /* prettylights-syntax-entity-tag */ + color: #8ddb8c +} +.hljs-subst { + /* prettylights-syntax-storage-modifier-import */ + color: #adbac7 +} +.hljs-section { + /* prettylights-syntax-markup-heading */ + color: #316dca; + font-weight: bold +} +.hljs-bullet { + /* prettylights-syntax-markup-list */ + color: #eac55f +} +.hljs-emphasis { + /* prettylights-syntax-markup-italic */ + color: #adbac7; + font-style: italic +} +.hljs-strong { + /* prettylights-syntax-markup-bold */ + color: #adbac7; + font-weight: bold +} +.hljs-addition { + /* prettylights-syntax-markup-inserted */ + color: #b4f1b4; + background-color: #1b4721 +} +.hljs-deletion { + /* prettylights-syntax-markup-deleted */ + color: #ffd8d3; + background-color: #78191b +} +.hljs-char.escape_, +.hljs-link, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/github-dark.css b/modules/highlighter/styles/github-dark.css new file mode 100644 index 0000000..8826d2f --- /dev/null +++ b/modules/highlighter/styles/github-dark.css @@ -0,0 +1,118 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: GitHub Dark + Description: Dark theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-dark + Current colors taken from GitHub's CSS +*/ +.hljs { + color: #c9d1d9; + background: #0d1117 +} +.hljs-doctag, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-variable.language_ { + /* prettylights-syntax-keyword */ + color: #ff7b72 +} +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-title.function_ { + /* prettylights-syntax-entity */ + color: #d2a8ff +} +.hljs-attr, +.hljs-attribute, +.hljs-literal, +.hljs-meta, +.hljs-number, +.hljs-operator, +.hljs-variable, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-id { + /* prettylights-syntax-constant */ + color: #79c0ff +} +.hljs-regexp, +.hljs-string, +.hljs-meta .hljs-string { + /* prettylights-syntax-string */ + color: #a5d6ff +} +.hljs-built_in, +.hljs-symbol { + /* prettylights-syntax-variable */ + color: #ffa657 +} +.hljs-comment, +.hljs-code, +.hljs-formula { + /* prettylights-syntax-comment */ + color: #8b949e +} +.hljs-name, +.hljs-quote, +.hljs-selector-tag, +.hljs-selector-pseudo { + /* prettylights-syntax-entity-tag */ + color: #7ee787 +} +.hljs-subst { + /* prettylights-syntax-storage-modifier-import */ + color: #c9d1d9 +} +.hljs-section { + /* prettylights-syntax-markup-heading */ + color: #1f6feb; + font-weight: bold +} +.hljs-bullet { + /* prettylights-syntax-markup-list */ + color: #f2cc60 +} +.hljs-emphasis { + /* prettylights-syntax-markup-italic */ + color: #c9d1d9; + font-style: italic +} +.hljs-strong { + /* prettylights-syntax-markup-bold */ + color: #c9d1d9; + font-weight: bold +} +.hljs-addition { + /* prettylights-syntax-markup-inserted */ + color: #aff5b4; + background-color: #033a16 +} +.hljs-deletion { + /* prettylights-syntax-markup-deleted */ + color: #ffdcd7; + background-color: #67060c +} +.hljs-char.escape_, +.hljs-link, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/github.css b/modules/highlighter/styles/github.css new file mode 100644 index 0000000..1001da6 --- /dev/null +++ b/modules/highlighter/styles/github.css @@ -0,0 +1,118 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: GitHub + Description: Light theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-light + Current colors taken from GitHub's CSS +*/ +.hljs { + color: #24292e; + background: #ffffff +} +.hljs-doctag, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-variable.language_ { + /* prettylights-syntax-keyword */ + color: #d73a49 +} +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-title.function_ { + /* prettylights-syntax-entity */ + color: #6f42c1 +} +.hljs-attr, +.hljs-attribute, +.hljs-literal, +.hljs-meta, +.hljs-number, +.hljs-operator, +.hljs-variable, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-id { + /* prettylights-syntax-constant */ + color: #005cc5 +} +.hljs-regexp, +.hljs-string, +.hljs-meta .hljs-string { + /* prettylights-syntax-string */ + color: #032f62 +} +.hljs-built_in, +.hljs-symbol { + /* prettylights-syntax-variable */ + color: #e36209 +} +.hljs-comment, +.hljs-code, +.hljs-formula { + /* prettylights-syntax-comment */ + color: #6a737d +} +.hljs-name, +.hljs-quote, +.hljs-selector-tag, +.hljs-selector-pseudo { + /* prettylights-syntax-entity-tag */ + color: #22863a +} +.hljs-subst { + /* prettylights-syntax-storage-modifier-import */ + color: #24292e +} +.hljs-section { + /* prettylights-syntax-markup-heading */ + color: #005cc5; + font-weight: bold +} +.hljs-bullet { + /* prettylights-syntax-markup-list */ + color: #735c0f +} +.hljs-emphasis { + /* prettylights-syntax-markup-italic */ + color: #24292e; + font-style: italic +} +.hljs-strong { + /* prettylights-syntax-markup-bold */ + color: #24292e; + font-weight: bold +} +.hljs-addition { + /* prettylights-syntax-markup-inserted */ + color: #22863a; + background-color: #f0fff4 +} +.hljs-deletion { + /* prettylights-syntax-markup-deleted */ + color: #b31d28; + background-color: #ffeef0 +} +.hljs-char.escape_, +.hljs-link, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/gml.css b/modules/highlighter/styles/gml.css new file mode 100644 index 0000000..7d6437c --- /dev/null +++ b/modules/highlighter/styles/gml.css @@ -0,0 +1,72 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +GML Theme - Meseta + +*/ +.hljs { + background: #222222; + color: #C0C0C0 +} +.hljs-keyword { + color: #FFB871; + font-weight: bold +} +.hljs-built_in { + color: #FFB871 +} +.hljs-literal { + color: #FF8080 +} +.hljs-symbol { + color: #58E55A +} +.hljs-comment { + color: #5B995B +} +.hljs-string { + color: #FFFF00 +} +.hljs-number { + color: #FF8080 +} +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name, +.hljs-bullet, +.hljs-code, +.hljs-addition, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion, +.hljs-title, +.hljs-section, +.hljs-function, +.hljs-meta .hljs-keyword, +.hljs-meta, +.hljs-subst { + color: #C0C0C0 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/googlecode.css b/modules/highlighter/styles/googlecode.css new file mode 100644 index 0000000..135aaf2 --- /dev/null +++ b/modules/highlighter/styles/googlecode.css @@ -0,0 +1,79 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Google Code style (c) Aahan Krish + +*/ +.hljs { + background: white; + color: black +} +.hljs-comment, +.hljs-quote { + color: #800 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-title, +.hljs-name { + color: #008 +} +.hljs-variable, +.hljs-template-variable { + color: #660 +} +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-regexp { + color: #080 +} +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-meta, +.hljs-number, +.hljs-link { + color: #066 +} +.hljs-title, +.hljs-doctag, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-params { + color: #606 +} +.hljs-attribute, +.hljs-subst { + color: #000 +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-selector-id, +.hljs-selector-class { + color: #9B703F +} +.hljs-addition { + background-color: #baeeba +} +.hljs-deletion { + background-color: #ffc8bd +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/gradient-dark.css b/modules/highlighter/styles/gradient-dark.css new file mode 100644 index 0000000..d8ed020 --- /dev/null +++ b/modules/highlighter/styles/gradient-dark.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Gradient Dark (c) Samia Ali + +*/ +.hljs { + background-color: #652487; + background-image: linear-gradient(160deg, #652487 0%, #443ac3 35%, #0174b7 68%, #04988e 100%); + color: #e7e4eb +} +.hljs-subtr { + color: #e7e4eb +} +.hljs-doctag, +.hljs-meta, +.hljs-comment, +.hljs-quote { + color: #af8dd9 +} +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-regexp, +.hljs-attr, +.hljs-tag { + color: #AEFBFF +} +.hljs-params, +.hljs-selector-class, +.hljs-bullet { + color: #F19FFF +} +.hljs-keyword, +.hljs-section, +.hljs-meta .hljs-keyword, +.hljs-symbol, +.hljs-type { + color: #17fc95 +} +.hljs-addition, +.hljs-number, +.hljs-link { + color: #C5FE00 +} +.hljs-string { + color: #38c0ff +} +.hljs-attribute, +.hljs-addition { + color: #E7FF9F +} +.hljs-variable, +.hljs-template-variable { + color: #E447FF +} +.hljs-built_in, +.hljs-formula, +.hljs-name, +.hljs-title, +.hljs-class, +.hljs-function { + color: #FFC800 +} +.hljs-selector-pseudo, +.hljs-deletion, +.hljs-literal { + color: #FF9E44 +} +.hljs-emphasis, +.hljs-quote { + font-style: italic +} +.hljs-params, +.hljs-selector-class, +.hljs-strong, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-section, +.hljs-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/gradient-light.css b/modules/highlighter/styles/gradient-light.css new file mode 100644 index 0000000..f9b5cbf --- /dev/null +++ b/modules/highlighter/styles/gradient-light.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Gradient Light (c) Samia Ali + +*/ +.hljs { + background-color: #f9ccff; + background-image: linear-gradient(295deg, #f9ccff 0%, #e6bbf9 11%, #9ec6f9 32%, #55e6ee 60%, #91f5d1 74%, #f9ffbf 98%); + color: #250482 +} +.hljs-subtr { + color: #01958B +} +.hljs-doctag, +.hljs-meta, +.hljs-comment, +.hljs-quote { + color: #CB7200 +} +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-regexp, +.hljs-attr, +.hljs-tag { + color: #07BD5F +} +.hljs-params, +.hljs-selector-class, +.hljs-bullet { + color: #43449F +} +.hljs-keyword, +.hljs-section, +.hljs-meta .hljs-keyword, +.hljs-symbol, +.hljs-type { + color: #7D2801 +} +.hljs-addition, +.hljs-number, +.hljs-link { + color: #7F0096 +} +.hljs-string { + color: #2681ab +} +.hljs-attribute, +.hljs-addition { + color: #296562 +} +.hljs-variable, +.hljs-template-variable { + color: #025C8F +} +.hljs-built_in, +.hljs-formula, +.hljs-name, +.hljs-title, +.hljs-class, +.hljs-function { + color: #529117 +} +.hljs-selector-pseudo, +.hljs-deletion, +.hljs-literal { + color: #AD13FF +} +.hljs-emphasis, +.hljs-quote { + font-style: italic +} +.hljs-params, +.hljs-selector-class, +.hljs-strong, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-section, +.hljs-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/grayscale.css b/modules/highlighter/styles/grayscale.css new file mode 100644 index 0000000..9790a86 --- /dev/null +++ b/modules/highlighter/styles/grayscale.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +grayscale style (c) MY Sun + +*/ +.hljs { + color: #333; + background: #fff +} +.hljs-comment, +.hljs-quote { + color: #777; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold +} +.hljs-number, +.hljs-literal { + color: #777 +} +.hljs-string, +.hljs-doctag, +.hljs-formula { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat +} +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #000; + font-weight: bold +} +.hljs-subst { + font-weight: normal +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type, +.hljs-name { + color: #333; + font-weight: bold +} +.hljs-tag { + color: #333 +} +.hljs-regexp { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat +} +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat +} +.hljs-built_in { + color: #000; + text-decoration: underline +} +.hljs-meta { + color: #999; + font-weight: bold +} +.hljs-deletion { + color: #fff; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat +} +.hljs-addition { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/hybrid.css b/modules/highlighter/styles/hybrid.css new file mode 100644 index 0000000..237701d --- /dev/null +++ b/modules/highlighter/styles/hybrid.css @@ -0,0 +1,88 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) + +*/ +.hljs { + background: #1d1f21; + color: #c5c8c6 +} +/*selection color*/ +.hljs::selection, +.hljs span::selection { + background: #373b41 +} +.hljs::-moz-selection, +.hljs span::-moz-selection { + background: #373b41 +} +/*color: fg_yellow*/ +.hljs-title, +.hljs-name { + color: #f0c674 +} +/*color: fg_comment*/ +.hljs-comment, +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #707880 +} +/*color: fg_red*/ +.hljs-number, +.hljs-symbol, +.hljs-literal, +.hljs-deletion, +.hljs-link { + color: #cc6666 +} +/*color: fg_green*/ +.hljs-string, +.hljs-doctag, +.hljs-addition, +.hljs-regexp, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #b5bd68 +} +/*color: fg_purple*/ +.hljs-attribute, +.hljs-code, +.hljs-selector-id { + color: #b294bb +} +/*color: fg_blue*/ +.hljs-keyword, +.hljs-selector-tag, +.hljs-bullet, +.hljs-tag { + color: #81a2be +} +/*color: fg_aqua*/ +.hljs-subst, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8abeb7 +} +/*color: fg_orange*/ +.hljs-type, +.hljs-built_in, +.hljs-quote, +.hljs-section, +.hljs-selector-class { + color: #de935f +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/idea.css b/modules/highlighter/styles/idea.css new file mode 100644 index 0000000..03307df --- /dev/null +++ b/modules/highlighter/styles/idea.css @@ -0,0 +1,86 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Intellij Idea-like styling (c) Vasily Polovnyov + +*/ +.hljs { + color: #000; + background: #fff +} +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000 +} +.hljs-comment, +.hljs-quote { + color: #808080; + font-style: italic +} +.hljs-meta { + color: #808000 +} +.hljs-tag { + background: #efefef +} +.hljs-section, +.hljs-name, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class { + font-weight: bold; + color: #000080 +} +.hljs-attribute, +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: bold; + color: #0000ff +} +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: normal +} +.hljs-string { + color: #008000; + font-weight: bold +} +.hljs-symbol, +.hljs-bullet, +.hljs-formula { + color: #000; + background: #d0eded; + font-style: italic +} +.hljs-doctag { + text-decoration: underline +} +.hljs-variable, +.hljs-template-variable { + color: #660e7a +} +.hljs-addition { + background: #baeeba +} +.hljs-deletion { + background: #ffc8bd +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/intellij-light.css b/modules/highlighter/styles/intellij-light.css new file mode 100644 index 0000000..9140f80 --- /dev/null +++ b/modules/highlighter/styles/intellij-light.css @@ -0,0 +1,107 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Intellij-light style (c) Pegasis + +*/ +.hljs { + color: #000; + background: #fff +} +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000 +} +.hljs-title.function_ { + color: #7A7A43 +} +.hljs-code, +.hljs-comment, +.hljs-quote { + color: #8C8C8C; + font-style: italic +} +.hljs-meta { + color: #9E880D +} +.hljs-section { + color: #871094 +} +.hljs-variable.language_, +.hljs-symbol, +.hljs-selector-class, +.hljs-selector-id, +.hljs-selector-tag, +.hljs-template-tag, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-literal, +.hljs-name, +.hljs-built_in, +.hljs-type { + color: #0033B3 +} +.hljs-property, +.hljs-attr { + color: #871094 +} +.hljs-attribute { + color: #174AD4 +} +.hljs-number { + color: #1750EB +} +.hljs-regexp { + color: #264EFF +} +.hljs-link { + text-decoration: underline; + color: #006DCC +} +.hljs-meta .hljs-string, +.hljs-string { + color: #067D17 +} +.hljs-char.escape_ { + color: #0037A6 +} +.hljs-doctag { + text-decoration: underline +} +.hljs-template-variable { + color: #248F8F +} +.hljs-addition { + background: #BEE6BE +} +.hljs-deletion { + background: #D6D6D6 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-variable, +.hljs-operator, +.hljs-punctuation, +.hljs-title.class_.inherited__, +.hljs-title.class_, +.hljs-params, +.hljs-bullet, +.hljs-formula, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/ir-black.css b/modules/highlighter/styles/ir-black.css new file mode 100644 index 0000000..3557853 --- /dev/null +++ b/modules/highlighter/styles/ir-black.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + IR_Black style (c) Vasily Mikhailitchenko +*/ +.hljs { + background: #000; + color: #f8f8f8 +} +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7c7c7c +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag, +.hljs-name { + color: #96cbfe +} +.hljs-attribute, +.hljs-selector-id { + color: #ffffb6 +} +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition { + color: #a8ff60 +} +.hljs-subst { + color: #daefa3 +} +.hljs-regexp, +.hljs-link { + color: #e9c062 +} +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-doctag { + color: #ffffb6 +} +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-literal { + color: #c6c5fe +} +.hljs-number, +.hljs-deletion { + color: #ff73fd +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/isbl-editor-dark.css b/modules/highlighter/styles/isbl-editor-dark.css new file mode 100644 index 0000000..4787d08 --- /dev/null +++ b/modules/highlighter/styles/isbl-editor-dark.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +ISBL Editor style dark color scheme (c) Dmitriy Tarasov + +*/ +.hljs { + background: #404040; + color: #f0f0f0 +} +/* Base color: saturation 0; */ +.hljs, +.hljs-subst { + color: #f0f0f0 +} +.hljs-comment { + color: #b5b5b5; + font-style: italic +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + color: #f0f0f0; + font-weight: bold +} +/* User color: hue: 0 */ +.hljs-string { + color: #97bf0d +} +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #f0f0f0 +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #e2c696 +} +/* Language color: hue: 90; */ +.hljs-built_in, +.hljs-literal { + color: #97bf0d; + font-weight: bold +} +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300 +} +.hljs-class { + color: #ce9d4d; + font-weight: bold +} +.hljs-title, +.hljs-section { + color: #df471e +} +.hljs-title>.hljs-built_in { + color: #81bce9; + font-weight: normal +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/isbl-editor-light.css b/modules/highlighter/styles/isbl-editor-light.css new file mode 100644 index 0000000..cdbabbe --- /dev/null +++ b/modules/highlighter/styles/isbl-editor-light.css @@ -0,0 +1,93 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +ISBL Editor style light color schemec (c) Dmitriy Tarasov + +*/ +.hljs { + background: white; + color: black +} +/* Base color: saturation 0; */ +.hljs-subst { + color: black +} +.hljs-comment { + color: #555555; + font-style: italic +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + color: #000000; + font-weight: bold +} +/* User color: hue: 0 */ +.hljs-string { + color: #000080 +} +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #000000 +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #5e1700 +} +/* Language color: hue: 90; */ +.hljs-built_in, +.hljs-literal { + color: #000080; + font-weight: bold +} +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300 +} +.hljs-class { + color: #6f1C00; + font-weight: bold +} +.hljs-title, +.hljs-section { + color: #fb2c00 +} +.hljs-title>.hljs-built_in { + color: #008080; + font-weight: normal +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/kimbie-dark.css b/modules/highlighter/styles/kimbie-dark.css new file mode 100644 index 0000000..eddf4a0 --- /dev/null +++ b/modules/highlighter/styles/kimbie-dark.css @@ -0,0 +1,69 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Name: Kimbie (dark) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ +.hljs { + background: #221a0f; + color: #d3af86 +} +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #d6baad +} +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958 +} +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32 +} +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a +} +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a +} +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/kimbie-light.css b/modules/highlighter/styles/kimbie-light.css new file mode 100644 index 0000000..3cefadc --- /dev/null +++ b/modules/highlighter/styles/kimbie-light.css @@ -0,0 +1,69 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Name: Kimbie (light) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ +.hljs { + background: #fbebd4; + color: #84613d +} +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #a57a4c +} +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958 +} +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32 +} +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a +} +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a +} +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/lightfair.css b/modules/highlighter/styles/lightfair.css new file mode 100644 index 0000000..5142dff --- /dev/null +++ b/modules/highlighter/styles/lightfair.css @@ -0,0 +1,81 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Lightfair style (c) Tristian Kelly + +*/ +.hljs { + color: #444; + background: #fff +} +.hljs-name { + color: #01a3a3 +} +.hljs-tag, +.hljs-meta { + color: #778899 +} +.hljs-subst { + /* default */ + +} +.hljs-comment { + color: #888888 +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold +} +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #4286f4 +} +.hljs-title, +.hljs-section { + color: #4286f4; + font-weight: bold +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060 +} +.hljs-literal { + color: #62bcbc +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #25c6c6 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/lioshi.css b/modules/highlighter/styles/lioshi.css new file mode 100644 index 0000000..035611a --- /dev/null +++ b/modules/highlighter/styles/lioshi.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* lioshi Theme */ +/* Original theme - https://github.com/lioshi/vscode-lioshi-theme */ +.hljs { + background: #303030; + color: #c5c8c6 +} +/* Comment */ +.hljs-comment { + color: #8d8d8d +} +/* quote */ +.hljs-quote { + color: #b3c7d8 +} +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666 +} +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-subst +.hljs-link { + color: #de935f +} +/* Yellow */ +.hljs-attribute { + color: #f0c674 +} +/* Green */ +.hljs-string, +.hljs-bullet, +.hljs-params, +.hljs-addition { + color: #b5bd68 +} +/* Purple */ +.hljs-selector-tag, +.hljs-keyword, +.hljs-function, +.hljs-class { + color: #be94bb +} +/* Blue */ +.hljs-title, +.hljs-meta, +.hljs-section { + color: #81a2be +} +/* Purple light */ +.hljs-symbol { + color: #dbc4d9 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/magula.css b/modules/highlighter/styles/magula.css new file mode 100644 index 0000000..9d30419 --- /dev/null +++ b/modules/highlighter/styles/magula.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Description: Magula style for highligh.js +Author: Ruslan Keba +Website: http://rukeba.com/ +Version: 1.0 +Date: 2009-01-03 +Music: Aphex Twin / Xtal +*/ +.hljs { + background-color: #f4f4f4; + color: black +} +.hljs-subst { + color: black +} +.hljs-string, +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #050 +} +.hljs-comment, +.hljs-quote { + color: #777 +} +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-type, +.hljs-link { + color: #800 +} +.hljs-deletion, +.hljs-meta { + color: #00e +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-tag, +.hljs-name { + font-weight: bold; + color: navy +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/mono-blue.css b/modules/highlighter/styles/mono-blue.css new file mode 100644 index 0000000..bc9bcea --- /dev/null +++ b/modules/highlighter/styles/mono-blue.css @@ -0,0 +1,56 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Five-color theme from a single blue hue. +*/ +.hljs { + background: #eaeef3; + color: #00193a +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-comment { + color: #738191 +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab +} +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9 +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/monokai-sublime.css b/modules/highlighter/styles/monokai-sublime.css new file mode 100644 index 0000000..b469dd4 --- /dev/null +++ b/modules/highlighter/styles/monokai-sublime.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ +.hljs { + background: #23241f; + color: #f8f8f2 +} +.hljs-tag, +.hljs-subst { + color: #f8f8f2 +} +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2 +} +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff +} +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e +} +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672 +} +.hljs-symbol, +.hljs-attribute { + color: #66d9ef +} +.hljs-params, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #f8f8f2 +} +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74 +} +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} \ No newline at end of file diff --git a/modules/highlighter/styles/monokai.css b/modules/highlighter/styles/monokai.css new file mode 100644 index 0000000..22a3922 --- /dev/null +++ b/modules/highlighter/styles/monokai.css @@ -0,0 +1,70 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ +.hljs { + background: #272822; + color: #ddd +} +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-number, +.hljs-name { + color: #f92672 +} +.hljs-code { + color: #66d9ef +} +.hljs-attribute, +.hljs-attr, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db +} +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e +} +.hljs-title.class_, +.hljs-class .hljs-title { + color: white +} +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/monokai.min.css b/modules/highlighter/styles/monokai.min.css index 448d85d..d289f63 100644 --- a/modules/highlighter/styles/monokai.min.css +++ b/modules/highlighter/styles/monokai.min.css @@ -1 +1 @@ -pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-strong,.hljs-tag{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attribute,.hljs-link,.hljs-regexp,.hljs-symbol{color:#bf79db}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-section,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#a6e22e}.hljs-class .hljs-title,.hljs-title.class_{color:#fff}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#75715e}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-title,.hljs-type{font-weight:700} \ No newline at end of file +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-number,.hljs-selector-tag,.hljs-strong,.hljs-tag{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attr,.hljs-attribute,.hljs-link,.hljs-regexp,.hljs-symbol{color:#bf79db}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-section,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#a6e22e}.hljs-class .hljs-title,.hljs-title.class_{color:#fff}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#75715e}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-title,.hljs-type{font-weight:700} \ No newline at end of file diff --git a/modules/highlighter/styles/night-owl.css b/modules/highlighter/styles/night-owl.css new file mode 100644 index 0000000..3cad0eb --- /dev/null +++ b/modules/highlighter/styles/night-owl.css @@ -0,0 +1,174 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Night Owl for highlight.js (c) Carl Baxter + +An adaptation of Sarah Drasner's Night Owl VS Code Theme +https://github.com/sdras/night-owl-vscode-theme + +Copyright (c) 2018 Sarah Drasner + +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. + +*/ +.hljs { + background: #011627; + color: #d6deeb +} +/* General Purpose */ +.hljs-keyword { + color: #c792ea; + font-style: italic +} +.hljs-built_in { + color: #addb67; + font-style: italic +} +.hljs-type { + color: #82aaff +} +.hljs-literal { + color: #ff5874 +} +.hljs-number { + color: #F78C6C +} +.hljs-regexp { + color: #5ca7e4 +} +.hljs-string { + color: #ecc48d +} +.hljs-subst { + color: #d3423e +} +.hljs-symbol { + color: #82aaff +} +.hljs-class { + color: #ffcb8b +} +.hljs-function { + color: #82AAFF +} +.hljs-title { + color: #DCDCAA; + font-style: italic +} +.hljs-params { + color: #7fdbca +} +/* Meta */ +.hljs-comment { + color: #637777; + font-style: italic +} +.hljs-doctag { + color: #7fdbca +} +.hljs-meta { + color: #82aaff +} +.hljs-meta .hljs-keyword { + color: #82aaff +} +.hljs-meta .hljs-string { + color: #ecc48d +} +/* Tags, attributes, config */ +.hljs-section { + color: #82b1ff +} +.hljs-tag, +.hljs-name { + color: #7fdbca +} +.hljs-attr { + color: #7fdbca +} +.hljs-attribute { + color: #80cbc4 +} +.hljs-variable { + color: #addb67 +} +/* Markup */ +.hljs-bullet { + color: #d9f5dd +} +.hljs-code { + color: #80CBC4 +} +.hljs-emphasis { + color: #c792ea; + font-style: italic +} +.hljs-strong { + color: #addb67; + font-weight: bold +} +.hljs-formula { + color: #c792ea +} +.hljs-link { + color: #ff869a +} +.hljs-quote { + color: #697098; + font-style: italic +} +/* CSS */ +.hljs-selector-tag { + color: #ff6363 +} +.hljs-selector-id { + color: #fad430 +} +.hljs-selector-class { + color: #addb67; + font-style: italic +} +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #c792ea; + font-style: italic +} +/* Templates */ +.hljs-template-tag { + color: #c792ea +} +.hljs-template-variable { + color: #addb67 +} +/* diff */ +.hljs-addition { + color: #addb67ff; + font-style: italic +} +.hljs-deletion { + color: #EF535090; + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/nnfx-dark.css b/modules/highlighter/styles/nnfx-dark.css new file mode 100644 index 0000000..cbacc28 --- /dev/null +++ b/modules/highlighter/styles/nnfx-dark.css @@ -0,0 +1,104 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: nnfx dark + Description: a theme inspired by Netscape Navigator/Firefox + Author: (c) 2020-2021 Jim Mason + Maintainer: @RocketMan + License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + Updated: 2021-05-17 + + @version 1.1.0 +*/ +.hljs { + background: #333; + color: #fff +} +.language-xml .hljs-meta, +.language-xml .hljs-meta-string { + font-weight: bold; + font-style: italic; + color: #69f +} +.hljs-comment, +.hljs-quote { + font-style: italic; + color: #9c6 +} +.hljs-name, +.hljs-keyword, +.hljs-built_in { + color: #a7a +} +.hljs-name, +.hljs-attr { + font-weight: bold +} +.hljs-string { + font-weight: normal +} +.hljs-code, +.hljs-string, +.hljs-meta .hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-link { + color: #bce +} +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable { + color: #d40 +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type { + font-weight: bold; + color: #96c +} +.hljs-title.function_, +.hljs-function .hljs-title, +.hljs-attr, +.hljs-subst, +.hljs-tag { + color: #fff +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-addition { + background-color: #797 +} +.hljs-deletion { + background-color: #c99 +} +.hljs-meta { + color: #69f +} +.hljs-section, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-selector-tag { + font-weight: bold; + color: #69f +} +.hljs-selector-pseudo { + font-style: italic +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/nnfx-light.css b/modules/highlighter/styles/nnfx-light.css new file mode 100644 index 0000000..87a04c6 --- /dev/null +++ b/modules/highlighter/styles/nnfx-light.css @@ -0,0 +1,104 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: nnfx light + Description: a theme inspired by Netscape Navigator/Firefox + Author: (c) 2020-2021 Jim Mason + Maintainer: @RocketMan + License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + Updated: 2021-05-17 + + @version 1.1.0 +*/ +.hljs { + background: #fff; + color: #000 +} +.language-xml .hljs-meta, +.language-xml .hljs-meta-string { + font-weight: bold; + font-style: italic; + color: #48b +} +.hljs-comment, +.hljs-quote { + font-style: italic; + color: #070 +} +.hljs-name, +.hljs-keyword, +.hljs-built_in { + color: #808 +} +.hljs-name, +.hljs-attr { + font-weight: bold +} +.hljs-string { + font-weight: normal +} +.hljs-code, +.hljs-string, +.hljs-meta .hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-link { + color: #00f +} +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable { + color: #f40 +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type { + font-weight: bold; + color: #639 +} +.hljs-title.function_, +.hljs-function .hljs-title, +.hljs-attr, +.hljs-subst, +.hljs-tag { + color: #000 +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-addition { + background-color: #beb +} +.hljs-deletion { + background-color: #fbb +} +.hljs-meta { + color: #269 +} +.hljs-section, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-selector-tag { + font-weight: bold; + color: #48b +} +.hljs-selector-pseudo { + font-style: italic +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/nord.css b/modules/highlighter/styles/nord.css new file mode 100644 index 0000000..2e849af --- /dev/null +++ b/modules/highlighter/styles/nord.css @@ -0,0 +1,275 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + * Copyright (c) 2017-present Arctic Ice Studio + * Copyright (c) 2017-present Sven Greb + * + * Project: Nord highlight.js + * Version: 0.1.0 + * Repository: https://github.com/arcticicestudio/nord-highlightjs + * License: MIT + * References: + * https://github.com/arcticicestudio/nord + */ +/* + +Polar Night + +#2E3440 +#3B4252 +#434C5E +#4C566A + +Snow Storm + +#D8DEE9 +#E5E9F0 +#ECEFF4 + +Frost + +#8FBCBB +#88C0D0 +#81A1C1 +#5E81AC + +Aurora + +#BF616A +#D08770 +#EBCB8B +#A3BE8C +#B48EAD + +*/ +.hljs { + background: #2E3440 +} +.hljs, +.hljs-subst { + color: #D8DEE9 +} +.hljs-selector-tag { + color: #81A1C1 +} +.hljs-selector-id { + color: #8FBCBB; + font-weight: bold +} +.hljs-selector-class { + color: #8FBCBB +} +.hljs-selector-attr { + color: #8FBCBB +} +.hljs-property { + color: #88C0D0 +} +.hljs-selector-pseudo { + color: #88C0D0 +} +.hljs-addition { + background-color: rgba(163, 190, 140, 0.5) +} +.hljs-deletion { + background-color: rgba(191, 97, 106, 0.5) +} +.hljs-built_in, +.hljs-type { + color: #8FBCBB +} +.hljs-class { + color: #8FBCBB +} +.hljs-function { + color: #88C0D0 +} +.hljs-title.hljs-function, +.hljs-function > .hljs-title { + color: #88C0D0 +} +.hljs-keyword, +.hljs-literal, +.hljs-symbol { + color: #81A1C1 +} +.hljs-number { + color: #B48EAD +} +.hljs-regexp { + color: #EBCB8B +} +.hljs-string { + color: #A3BE8C +} +.hljs-title { + color: #8FBCBB +} +.hljs-params { + color: #D8DEE9 +} +.hljs-bullet { + color: #81A1C1 +} +.hljs-code { + color: #8FBCBB +} +.hljs-emphasis { + font-style: italic +} +.hljs-formula { + color: #8FBCBB +} +.hljs-strong { + font-weight: bold +} +.hljs-link:hover { + text-decoration: underline +} +.hljs-quote { + color: #4C566A +} +.hljs-comment { + color: #4C566A +} +.hljs-doctag { + color: #8FBCBB +} +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #5E81AC +} +.hljs-meta .hljs-string { + color: #A3BE8C +} +.hljs-attr { + color: #8FBCBB +} +.hljs-attribute { + color: #D8DEE9 +} +.hljs-name { + color: #81A1C1 +} +.hljs-section { + color: #88C0D0 +} +.hljs-tag { + color: #81A1C1 +} +.hljs-variable { + color: #D8DEE9 +} +.hljs-template-variable { + color: #D8DEE9 +} +.hljs-template-tag { + color: #5E81AC +} +/* per language customizations */ +.language-abnf .hljs-attribute { + color: #88C0D0 +} +.language-abnf .hljs-symbol { + color: #EBCB8B +} +.language-apache .hljs-attribute { + color: #88C0D0 +} +.language-apache .hljs-section { + color: #81A1C1 +} +.language-arduino .hljs-built_in { + color: #88C0D0 +} +.language-aspectj .hljs-meta { + color: #D08770 +} +.language-aspectj > .hljs-title { + color: #88C0D0 +} +.language-bnf .hljs-attribute { + color: #8FBCBB +} +.language-clojure .hljs-name { + color: #88C0D0 +} +.language-clojure .hljs-symbol { + color: #EBCB8B +} +.language-coq .hljs-built_in { + color: #88C0D0 +} +.language-cpp .hljs-meta .hljs-string { + color: #8FBCBB +} +.language-css .hljs-built_in { + color: #88C0D0 +} +.language-css .hljs-keyword { + color: #D08770 +} +.language-diff .hljs-meta { + color: #8FBCBB +} +.language-ebnf .hljs-attribute { + color: #8FBCBB +} +.language-glsl .hljs-built_in { + color: #88C0D0 +} +.language-groovy .hljs-meta:not(:first-child) { + color: #D08770 +} +.language-haxe .hljs-meta { + color: #D08770 +} +.language-java .hljs-meta { + color: #D08770 +} +.language-ldif .hljs-attribute { + color: #8FBCBB +} +.language-lisp .hljs-name { + color: #88C0D0 +} +.language-lua .hljs-built_in { + color: #88C0D0 +} +.language-moonscript .hljs-built_in { + color: #88C0D0 +} +.language-nginx .hljs-attribute { + color: #88C0D0 +} +.language-nginx .hljs-section { + color: #5E81AC +} +.language-pf .hljs-built_in { + color: #88C0D0 +} +.language-processing .hljs-built_in { + color: #88C0D0 +} +.language-scss .hljs-keyword { + color: #81A1C1 +} +.language-stylus .hljs-keyword { + color: #81A1C1 +} +.language-swift .hljs-meta { + color: #D08770 +} +.language-vim .hljs-built_in { + color: #88C0D0; + font-style: italic +} +.language-yaml .hljs-meta { + color: #D08770 +} \ No newline at end of file diff --git a/modules/highlighter/styles/obsidian.css b/modules/highlighter/styles/obsidian.css new file mode 100644 index 0000000..df7af1d --- /dev/null +++ b/modules/highlighter/styles/obsidian.css @@ -0,0 +1,79 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Obsidian style + * ported by Alexander Marenin (http://github.com/ioncreature) + */ +.hljs { + color: #e0e2e4; + background: #282b2e +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-selector-id { + color: #93c763 +} +.hljs-number { + color: #ffcd22 +} +.hljs-attribute { + color: #668bb0 +} +.hljs-regexp, +.hljs-link { + color: #d39745 +} +.hljs-meta { + color: #557182 +} +.hljs-tag, +.hljs-name, +.hljs-bullet, +.hljs-subst, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8cbbad +} +.hljs-string, +.hljs-symbol { + color: #ec7600 +} +.hljs-comment, +.hljs-quote, +.hljs-deletion { + color: #818e96 +} +.hljs-selector-class { + color: #A082BD +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-code, +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-section { + color: white +} \ No newline at end of file diff --git a/modules/highlighter/styles/panda-syntax-dark.css b/modules/highlighter/styles/panda-syntax-dark.css new file mode 100644 index 0000000..9a0695d --- /dev/null +++ b/modules/highlighter/styles/panda-syntax-dark.css @@ -0,0 +1,92 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Panda Syntax Theme for Highlight.js + * Based on: https://github.com/tinkertrain/panda-syntax-vscode + * Author: Annmarie Switzer + */ +.hljs { + color: #e6e6e6; + background: #2a2c2d +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} +.hljs-comment, +.hljs-quote { + color: #bbbbbb; + font-style: italic +} +.hljs-params { + color: #bbbbbb +} +.hljs-punctuation, +.hljs-attr { + color: #e6e6e6 +} +.hljs-selector-tag, +.hljs-name, +.hljs-meta { + color: #ff4b82 +} +.hljs-operator, +.hljs-char.escape_ { + color: #b084eb +} +.hljs-keyword, +.hljs-deletion { + color: #ff75b5 +} +.hljs-regexp, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_ { + color: #ff9ac1 +} +.hljs-subst, +.hljs-property, +.hljs-code, +.hljs-formula, +.hljs-section, +.hljs-title.function_ { + color: #45a9f9 +} +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-selector-class, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-meta .hljs-string { + color: #19f9d8 +} +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-link, +.hljs-built_in, +.hljs-title, +.hljs-selector-id, +.hljs-tag, +.hljs-doctag, +.hljs-attribute, +.hljs-template-tag, +.hljs-meta .hljs-keyword, +.hljs-punctuation { + color: #ffb86c +} \ No newline at end of file diff --git a/modules/highlighter/styles/panda-syntax-light.css b/modules/highlighter/styles/panda-syntax-light.css new file mode 100644 index 0000000..4bb4024 --- /dev/null +++ b/modules/highlighter/styles/panda-syntax-light.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Panda Syntax Theme for Highlight.js + * Based on: https://github.com/tinkertrain/panda-syntax-vscode + * Author: Annmarie Switzer + */ +.hljs { + color: #2a2c2d; + background: #e6e6e6 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} +.hljs-comment, +.hljs-quote { + color: #676B79; + font-style: italic +} +.hljs-params { + color: #676B79 +} +.hljs-punctuation, +.hljs-attr { + color: #2a2c2d +} +.hljs-selector-tag, +.hljs-name, +.hljs-meta, +.hljs-operator, +.hljs-char.escape_ { + color: #c56200 +} +.hljs-keyword, +.hljs-deletion { + color: #d92792 +} +.hljs-regexp, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_ { + color: #cc5e91 +} +.hljs-subst, +.hljs-property, +.hljs-code, +.hljs-formula, +.hljs-section, +.hljs-title.function_ { + color: #3787c7 +} +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-selector-class, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-meta .hljs-string { + color: #0d7d6c +} +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-link, +.hljs-built_in, +.hljs-title, +.hljs-selector-id, +.hljs-tag, +.hljs-doctag, +.hljs-attribute, +.hljs-template-tag, +.hljs-meta .hljs-keyword { + color: #7641bb +} \ No newline at end of file diff --git a/modules/highlighter/styles/paraiso-dark.css b/modules/highlighter/styles/paraiso-dark.css new file mode 100644 index 0000000..e375a88 --- /dev/null +++ b/modules/highlighter/styles/paraiso-dark.css @@ -0,0 +1,67 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Paraíso (dark) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ +.hljs { + background: #2f1e2e; + color: #a39e9b +} +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #8d8687 +} +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155 +} +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15 +} +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418 +} +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685 +} +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/paraiso-light.css b/modules/highlighter/styles/paraiso-light.css new file mode 100644 index 0000000..ef527f0 --- /dev/null +++ b/modules/highlighter/styles/paraiso-light.css @@ -0,0 +1,67 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Paraíso (light) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ +.hljs { + background: #e7e9db; + color: #4f424c +} +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #776e71 +} +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155 +} +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15 +} +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418 +} +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685 +} +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/pojoaque.css b/modules/highlighter/styles/pojoaque.css new file mode 100644 index 0000000..e04bf70 --- /dev/null +++ b/modules/highlighter/styles/pojoaque.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Pojoaque Style by Jason Tate +http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +Based on Solarized Style from http://ethanschoonover.com/solarized + +*/ +.hljs { + color: #dccf8f; + background: url(./pojoaque.jpg) repeat scroll left top #181914 +} +.hljs-comment, +.hljs-quote { + color: #586e75; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-addition { + color: #b64926 +} +.hljs-number, +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #468966 +} +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-name { + color: #ffb03b +} +.hljs-variable, +.hljs-template-variable, +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type, +.hljs-tag { + color: #b58900 +} +.hljs-attribute { + color: #b89859 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-subst, +.hljs-meta { + color: #cb4b16 +} +.hljs-deletion { + color: #dc322f +} +.hljs-selector-id, +.hljs-selector-class { + color: #d3a60c +} +.hljs-formula { + background: #073642 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/purebasic.css b/modules/highlighter/styles/purebasic.css new file mode 100644 index 0000000..3529efd --- /dev/null +++ b/modules/highlighter/styles/purebasic.css @@ -0,0 +1,103 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +PureBASIC native IDE style ( version 1.0 - April 2016 ) + +by Tristano Ajmone + +Public Domain + +NOTE_1: PureBASIC code syntax highlighting only applies the following classes: + .hljs-comment + .hljs-function + .hljs-keywords + .hljs-string + .hljs-symbol + + Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. + If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by + a "--- used for PureBASIC ... ---" comment on same line. + +NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: + http://chir.ag/projects/name-that-color +*/ +.hljs { + background: #FFFFDF/* Half and Half (approx.) */ + +} +/* --- used for PureBASIC base color --- */ +/* --- used for PureBASIC Procedures return type --- */ +/* --- used for wrapping PureBASIC Procedures definitions --- */ +.hljs, +.hljs-type, +.hljs-function, +.hljs-name, +.hljs-number, +.hljs-attr, +.hljs-params, +.hljs-subst { + color: #000000/* Black */ + +} +/* --- used for PureBASIC Comments --- */ +.hljs-comment, +.hljs-regexp, +.hljs-section, +.hljs-selector-pseudo, +.hljs-addition { + color: #00AAAA/* Persian Green (approx.) */ + +} +/* --- used for PureBASIC Keywords --- */ +.hljs-keyword, +.hljs-class, +.hljs-meta .hljs-keyword, +.hljs-selector-class, +.hljs-built_in { + color: #006666; + /* Blue Stone (approx.) */ + font-weight: bold +} +/* --- used for PureBASIC Procedures Names --- */ +.hljs-title, +.hljs-tag, +.hljs-variable, +.hljs-code { + color: #006666/* Blue Stone (approx.) */ + +} +/* --- used for PureBASIC Strings --- */ +.hljs-string, +.hljs-selector-attr { + color: #0080FF/* Azure Radiance (approx.) */ + +} +/* --- used for PureBASIC Constants --- */ +.hljs-symbol, +.hljs-link, +.hljs-deletion, +.hljs-attribute { + color: #924B72/* Cannon Pink (approx.) */ + +} +.hljs-meta, +.hljs-literal, +.hljs-selector-id { + color: #924B72; + /* Cannon Pink (approx.) */ + font-weight: bold +} +.hljs-strong, +.hljs-name { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/qtcreator-dark.css b/modules/highlighter/styles/qtcreator-dark.css new file mode 100644 index 0000000..a655384 --- /dev/null +++ b/modules/highlighter/styles/qtcreator-dark.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Qt Creator dark color scheme + +*/ +.hljs { + color: #aaaaaa; + background: #000000 +} +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2 +} +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #ff55ff +} +.hljs-code +.hljs-selector-class { + color: #aaaaff +} +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #ffff55 +} +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #aaaaaa +} +.hljs-attribute { + color: #ff5555 +} +.hljs-variable, +.hljs-params, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #8888ff +} +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #ff55ff +} +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #55ffff +} \ No newline at end of file diff --git a/modules/highlighter/styles/qtcreator-light.css b/modules/highlighter/styles/qtcreator-light.css new file mode 100644 index 0000000..327126d --- /dev/null +++ b/modules/highlighter/styles/qtcreator-light.css @@ -0,0 +1,74 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Qt Creator light color scheme +*/ +.hljs { + color: #000000; + background: #ffffff +} +.hljs-strong, +.hljs-emphasis { + color: #000000 +} +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #000080 +} +.hljs-code +.hljs-selector-class { + color: #800080 +} +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #808000 +} +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #000000 +} +.hljs-attribute { + color: #800000 +} +.hljs-variable, +.hljs-params, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #0055AF +} +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #008000 +} +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #008000 +} \ No newline at end of file diff --git a/modules/highlighter/styles/rainbow.css b/modules/highlighter/styles/rainbow.css new file mode 100644 index 0000000..80b2834 --- /dev/null +++ b/modules/highlighter/styles/rainbow.css @@ -0,0 +1,77 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Style with support for rainbow parens + +*/ +.hljs { + background: #474949; + color: #d1d9e1 +} +.hljs-comment, +.hljs-quote { + color: #969896; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-type, +.hljs-addition { + color: #cc99cc +} +.hljs-number, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #f99157 +} +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #8abeb7 +} +.hljs-title, +.hljs-name, +.hljs-section, +.hljs-built_in { + color: #b5bd68 +} +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #ffcc66 +} +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-link { + color: #f99157 +} +.hljs-deletion { + color: #dc322f +} +.hljs-formula { + background: #eee8d5 +} +.hljs-attr, +.hljs-attribute { + color: #81a2be +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/routeros.css b/modules/highlighter/styles/routeros.css new file mode 100644 index 0000000..5b3602b --- /dev/null +++ b/modules/highlighter/styles/routeros.css @@ -0,0 +1,86 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + + highlight.js style for MikroTik RouterOS script + +*/ +.hljs { + color: #444; + background: #F0F0F0 +} +/* Base color: saturation 0; */ +.hljs-subst { + color: #444 +} +.hljs-comment { + color: #888888 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold +} +.hljs-attribute { + color: #0E9A00 +} +.hljs-function { + color: #99069A +} +/* User color: hue: 0 */ +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000 +} +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060 +} +/* Language color: hue: 90; */ +.hljs-literal { + color: #78A960 +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0C9A9A +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/school-book.css b/modules/highlighter/styles/school-book.css new file mode 100644 index 0000000..8dcb902 --- /dev/null +++ b/modules/highlighter/styles/school-book.css @@ -0,0 +1,62 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +School Book style from goldblog.com.ua (c) Zaripov Yura + +*/ +.hljs { + color: #3e5915; + background: #f6f5b2 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #005599; + font-weight: bold +} +.hljs-subst { + color: #3e5915 +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link { + color: #2c009f +} +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #e60415 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/shades-of-purple.css b/modules/highlighter/styles/shades-of-purple.css new file mode 100644 index 0000000..8a51050 --- /dev/null +++ b/modules/highlighter/styles/shades-of-purple.css @@ -0,0 +1,84 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Shades of Purple Theme — for Highlightjs. + * + * @author (c) Ahmad Awais + * @link GitHub Repo → https://github.com/ahmadawais/Shades-of-Purple-HighlightJS + * @version 1.5.0 + */ +.hljs { + background: #2d2b57; + color: #e3dfff; + font-weight: normal +} +.hljs-subst { + color: #e3dfff +} +.hljs-title { + color: #fad000; + font-weight: normal +} +.hljs-name { + color: #a1feff +} +.hljs-tag { + color: #ffffff +} +.hljs-attr { + color: #f8d000; + font-style: italic +} +.hljs-built_in, +.hljs-selector-tag, +.hljs-section { + color: #fb9e00 +} +.hljs-keyword { + color: #fb9e00 +} +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-code, +.hljs-regexp, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-quote, +.hljs-deletion { + color: #4cd213 +} +.hljs-meta, +.hljs-meta .hljs-string { + color: #fb9e00 +} +.hljs-comment { + color: #ac65ff +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-name, +.hljs-strong { + font-weight: normal +} +.hljs-literal, +.hljs-number { + color: #fa658d +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/srcery.css b/modules/highlighter/styles/srcery.css new file mode 100644 index 0000000..1b60bd4 --- /dev/null +++ b/modules/highlighter/styles/srcery.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Theme: Srcery +Description: Srcery dark color scheme for highlight.js +Author: Chen Bin +Maintainer: @redguardtoo +Website: https://srcery-colors.github.io/ +Date: 2021-04-13 +*/ +.hljs { + background: #1C1B19; + /* Black */ + color: #FCE8C3/* Bright White */ + +} +/* Bright White */ +.hljs-subst, +.hljs-quote, +.hljs-literal { + color: #FCE8C3 +} +/* Bright Blue */ +.hljs-type, +.hljs-symbol { + color: #68A8E4 +} +/* Red */ +.hljs-keyword, +.hljs-deletion { + color: #EF2F27 +} +/* Yellow */ +.hljs-name, +.hljs-function, +.hljs-attribute, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-section, +.hljs-title { + color: #FBB829 +} +/* Cyan */ +.hljs-code, +.hljs-variable, +.hljs-property, +.hljs-template-variable, +.hljs-class { + color: #0AAEB3 +} +/* Bright Green */ +.hljs-string, +.hljs-regexp, +.hljs-bullet, +.hljs-addition { + color: #98BC37 +} +/* Bright Magenta */ +.hljs-built_in, +.hljs-params { + color: #FF5C8F +} +/* Blue */ +.hljs-template-tag, +.hljs-selector-tag { + color: #2C78BF +} +/* Bright Black */ +.hljs-link, +.hljs-number, +.hljs-comment, +.hljs-meta { + color: #918175 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +/* @see https://github.com/srcery-colors/srcery-emacs for reference */ diff --git a/modules/highlighter/styles/stackoverflow-dark.css b/modules/highlighter/styles/stackoverflow-dark.css new file mode 100644 index 0000000..6cc355e --- /dev/null +++ b/modules/highlighter/styles/stackoverflow-dark.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: StackOverflow Dark + Description: Dark theme as used on stackoverflow.com + Author: stackoverflow.com + Maintainer: @Hirse + Website: https://github.com/StackExchange/Stacks + License: MIT + Updated: 2021-05-15 + + Updated for @stackoverflow/stacks v0.64.0 + Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less + Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less +*/ +.hljs { + /* var(--highlight-color) */ + color: #ffffff; + /* var(--highlight-bg) */ + background: #1c1b1b +} +.hljs-subst { + /* var(--highlight-color) */ + color: #ffffff +} +.hljs-comment { + /* var(--highlight-comment) */ + color: #999999 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-section { + /* var(--highlight-keyword) */ + color: #88aece +} +.hljs-attr { + /* var(--highlight-attribute); */ + color: #88aece +} +.hljs-attribute { + /* var(--highlight-symbol) */ + color: #c59bc1 +} +.hljs-name, +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-quote, +.hljs-template-tag { + /* var(--highlight-namespace) */ + color: #f08d49 +} +.hljs-selector-class { + /* var(--highlight-keyword) */ + color: #88aece +} +.hljs-string, +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr { + /* var(--highlight-variable) */ + color: #b5bd68 +} +.hljs-meta, +.hljs-selector-pseudo { + /* var(--highlight-keyword) */ + color: #88aece +} +.hljs-built_in, +.hljs-title, +.hljs-literal { + /* var(--highlight-literal) */ + color: #f08d49 +} +.hljs-bullet, +.hljs-code { + /* var(--highlight-punctuation) */ + color: #cccccc +} +.hljs-meta .hljs-string { + /* var(--highlight-variable) */ + color: #b5bd68 +} +.hljs-deletion { + /* var(--highlight-deletion) */ + color: #de7176 +} +.hljs-addition { + /* var(--highlight-addition) */ + color: #76c490 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-formula, +.hljs-operator, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/stackoverflow-light.css b/modules/highlighter/styles/stackoverflow-light.css new file mode 100644 index 0000000..308171d --- /dev/null +++ b/modules/highlighter/styles/stackoverflow-light.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: StackOverflow Light + Description: Light theme as used on stackoverflow.com + Author: stackoverflow.com + Maintainer: @Hirse + Website: https://github.com/StackExchange/Stacks + License: MIT + Updated: 2021-05-15 + + Updated for @stackoverflow/stacks v0.64.0 + Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less + Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less +*/ +.hljs { + /* var(--highlight-color) */ + color: #2f3337; + /* var(--highlight-bg) */ + background: #f6f6f6 +} +.hljs-subst { + /* var(--highlight-color) */ + color: #2f3337 +} +.hljs-comment { + /* var(--highlight-comment) */ + color: #656e77 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-section { + /* var(--highlight-keyword) */ + color: #015692 +} +.hljs-attr { + /* var(--highlight-attribute); */ + color: #015692 +} +.hljs-attribute { + /* var(--highlight-symbol) */ + color: #803378 +} +.hljs-name, +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-quote, +.hljs-template-tag { + /* var(--highlight-namespace) */ + color: #b75501 +} +.hljs-selector-class { + /* var(--highlight-keyword) */ + color: #015692 +} +.hljs-string, +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr { + /* var(--highlight-variable) */ + color: #54790d +} +.hljs-meta, +.hljs-selector-pseudo { + /* var(--highlight-keyword) */ + color: #015692 +} +.hljs-built_in, +.hljs-title, +.hljs-literal { + /* var(--highlight-literal) */ + color: #b75501 +} +.hljs-bullet, +.hljs-code { + /* var(--highlight-punctuation) */ + color: #535a60 +} +.hljs-meta .hljs-string { + /* var(--highlight-variable) */ + color: #54790d +} +.hljs-deletion { + /* var(--highlight-deletion) */ + color: #c02d2e +} +.hljs-addition { + /* var(--highlight-addition) */ + color: #2f6f44 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-formula, +.hljs-operator, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/sunburst.css b/modules/highlighter/styles/sunburst.css new file mode 100644 index 0000000..5b49f21 --- /dev/null +++ b/modules/highlighter/styles/sunburst.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Sunburst-like style (c) Vasily Polovnyov + +*/ +.hljs { + background: #000; + color: #f8f8f8 +} +.hljs-comment, +.hljs-quote { + color: #aeaeae; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #e28964 +} +.hljs-string { + color: #65b042 +} +.hljs-subst { + color: #daefa3 +} +.hljs-regexp, +.hljs-link { + color: #e9c062 +} +.hljs-title, +.hljs-section, +.hljs-tag, +.hljs-name { + color: #89bdff +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-doctag { + text-decoration: underline +} +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #3387cc +} +.hljs-params, +.hljs-variable, +.hljs-template-variable { + color: #3e87e3 +} +.hljs-attribute { + color: #cda869 +} +.hljs-meta { + color: #8996a8 +} +.hljs-formula { + background-color: #0e2231; + color: #f8f8f8; + font-style: italic +} +.hljs-addition { + background-color: #253b22; + color: #f8f8f8 +} +.hljs-deletion { + background-color: #420e09; + color: #f8f8f8 +} +.hljs-selector-class { + color: #9b703f +} +.hljs-selector-id { + color: #8b98ab +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tokyo-night-dark.css b/modules/highlighter/styles/tokyo-night-dark.css new file mode 100644 index 0000000..e746b50 --- /dev/null +++ b/modules/highlighter/styles/tokyo-night-dark.css @@ -0,0 +1,114 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tokyo-night-Dark + origin: https://github.com/enkia/tokyo-night-vscode-theme + Description: Original highlight.js style + Author: (c) Henri Vandersleyen + License: see project LICENSE + Touched: 2022 +*/ +/* Comment */ +.hljs-meta, +.hljs-comment { + color: #565f89 +} +/* Red */ +/*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */ +.hljs-tag, +.hljs-doctag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-template-tag, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_, +.hljs-deletion { + color: #f7768e +} +/*Orange */ +/*INFO: Number and Boolean constants, Language support constants */ +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-link { + color: #ff9e64 +} +/* Yellow */ +/* INFO: Function parameters, Regex character sets, Terminal Yellow */ +.hljs-built_in, +.hljs-attribute { + color: #e0af68 +} +/* cyan */ +/* INFO: Language support functions, CSS HTML elements */ +.hljs-selector-tag { + color: #2ac3de +} +/* light blue */ +/* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */ +.hljs-keyword, +.hljs-title.function_, +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-subst, +.hljs-property { + color: #7dcfff +} +/*Green*/ +/* INFO: Object literal keys, Markdown links, Terminal Green */ +.hljs-selector-tag { + color: #73daca +} +/*Green(er) */ +/* INFO: Strings, CSS class names */ +.hljs-quote, +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #9ece6a +} +/* Blue */ +/* INFO: Function names, CSS property names, Terminal Blue */ +.hljs-code, +.hljs-formula, +.hljs-section { + color: #7aa2f7 +} +/* Magenta */ +/*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */ +.hljs-name, +.hljs-keyword, +.hljs-operator, +.hljs-keyword, +.hljs-char.escape_, +.hljs-attr { + color: #bb9af7 +} +/* white*/ +/* INFO: Variables, Class names, Terminal White */ +.hljs-punctuation { + color: #c0caf5 +} +.hljs { + background: #1a1b26; + color: #9aa5ce +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tokyo-night-light.css b/modules/highlighter/styles/tokyo-night-light.css new file mode 100644 index 0000000..2c7ca12 --- /dev/null +++ b/modules/highlighter/styles/tokyo-night-light.css @@ -0,0 +1,114 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tokyo-night-light + origin: https://github.com/enkia/tokyo-night-vscode-theme + Description: Original highlight.js style + Author: (c) Henri Vandersleyen + License: see project LICENSE + Touched: 2022 +*/ +/* Comment */ +.hljs-meta, +.hljs-comment { + color: #9699a3 +} +/* Red */ +/*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */ +.hljs-tag, +.hljs-doctag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-template-tag, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_, +.hljs-deletion { + color: #8c4351 +} +/*Orange */ +/*INFO: Number and Boolean constants, Language support constants */ +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-link { + color: #965027 +} +/* Yellow */ +/* INFO: Function parameters, Regex character sets, Terminal Yellow */ +.hljs-built_in, +.hljs-attribute { + color: #8f5e15 +} +/* cyan */ +/* INFO: Language support functions, CSS HTML elements */ +.hljs-selector-tag { + color: #166775 +} +/* light blue */ +/* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */ +.hljs-keyword, +.hljs-title.function_, +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-subst, +.hljs-property { + color: #0f4b6e +} +/*Green*/ +/* INFO: Object literal keys, Markdown links, Terminal Green */ +.hljs-selector-tag { + color: #33635c +} +/*Green(er) */ +/* INFO: Strings, CSS class names */ +.hljs-quote, +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #485e30 +} +/* Blue */ +/* INFO: Function names, CSS property names, Terminal Blue */ +.hljs-code, +.hljs-formula, +.hljs-section { + color: #34548a +} +/* Magenta */ +/*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */ +.hljs-name, +.hljs-keyword, +.hljs-operator, +.hljs-keyword, +.hljs-char.escape_, +.hljs-attr { + color: #5a4a78 +} +/* white*/ +/* INFO: Variables, Class names, Terminal White */ +.hljs-punctuation { + color: #343b58 +} +.hljs { + background: #d5d6db; + color: #565a6e +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tomorrow-night-blue.css b/modules/highlighter/styles/tomorrow-night-blue.css new file mode 100644 index 0000000..ae57a71 --- /dev/null +++ b/modules/highlighter/styles/tomorrow-night-blue.css @@ -0,0 +1,69 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* Tomorrow Night Blue Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #7285b7 +} +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ff9da4 +} +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #ffc58f +} +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffeead +} +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #d1f1a9 +} +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #bbdaff +} +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ebbbff +} +.hljs { + background: #002451; + color: white +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tomorrow-night-bright.css b/modules/highlighter/styles/tomorrow-night-bright.css new file mode 100644 index 0000000..b3b532d --- /dev/null +++ b/modules/highlighter/styles/tomorrow-night-bright.css @@ -0,0 +1,68 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* Tomorrow Night Bright Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896 +} +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d54e53 +} +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #e78c45 +} +/* Tomorrow Yellow */ +.hljs-attribute { + color: #e7c547 +} +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b9ca4a +} +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #7aa6da +} +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c397d8 +} +.hljs { + background: black; + color: #eaeaea +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/vs.css b/modules/highlighter/styles/vs.css new file mode 100644 index 0000000..dc35c88 --- /dev/null +++ b/modules/highlighter/styles/vs.css @@ -0,0 +1,63 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Visual Studio-like style based on original C# coloring by Jason Diamond + +*/ +.hljs { + background: white; + color: black +} +.hljs-comment, +.hljs-quote, +.hljs-variable { + color: #008000 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-built_in, +.hljs-name, +.hljs-tag { + color: #00f +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-literal, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-addition { + color: #a31515 +} +.hljs-deletion, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-meta { + color: #2b91af +} +.hljs-doctag { + color: #808080 +} +.hljs-attr { + color: #f00 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #00b0e8 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/vs2015.css b/modules/highlighter/styles/vs2015.css new file mode 100644 index 0000000..2c2cf04 --- /dev/null +++ b/modules/highlighter/styles/vs2015.css @@ -0,0 +1,100 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + * Visual Studio 2015 dark style + * Author: Nicolas LLOBERA + */ +.hljs { + background: #1E1E1E; + color: #DCDCDC +} +.hljs-keyword, +.hljs-literal, +.hljs-symbol, +.hljs-name { + color: #569CD6 +} +.hljs-link { + color: #569CD6; + text-decoration: underline +} +.hljs-built_in, +.hljs-type { + color: #4EC9B0 +} +.hljs-number, +.hljs-class { + color: #B8D7A3 +} +.hljs-string, +.hljs-meta .hljs-string { + color: #D69D85 +} +.hljs-regexp, +.hljs-template-tag { + color: #9A5334 +} +.hljs-subst, +.hljs-function, +.hljs-title, +.hljs-params, +.hljs-formula { + color: #DCDCDC +} +.hljs-comment, +.hljs-quote { + color: #57A64A; + font-style: italic +} +.hljs-doctag { + color: #608B4E +} +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-tag { + color: #9B9B9B +} +.hljs-variable, +.hljs-template-variable { + color: #BD63C5 +} +.hljs-attr, +.hljs-attribute { + color: #9CDCFE +} +.hljs-section { + color: gold +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +/*.hljs-code { + font-family:'Monospace'; +}*/ +.hljs-bullet, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #D7BA7D +} +.hljs-addition { + background-color: #144212; + display: inline-block; + width: 100% +} +.hljs-deletion { + background-color: #600; + display: inline-block; + width: 100% +} \ No newline at end of file diff --git a/modules/highlighter/styles/xcode.css b/modules/highlighter/styles/xcode.css new file mode 100644 index 0000000..6ed07fb --- /dev/null +++ b/modules/highlighter/styles/xcode.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +XCode style (c) Angel Garcia + +*/ +.hljs { + background: #fff; + color: black +} +/* Gray DOCTYPE selectors like WebKit */ +.xml .hljs-meta { + color: #c0c0c0 +} +.hljs-comment, +.hljs-quote { + color: #007400 +} +.hljs-tag, +.hljs-attribute, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-name { + color: #aa0d91 +} +.hljs-variable, +.hljs-template-variable { + color: #3F6E74 +} +.hljs-code, +.hljs-string, +.hljs-meta .hljs-string { + color: #c41a16 +} +.hljs-regexp, +.hljs-link { + color: #0E0EFF +} +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #1c00cf +} +.hljs-section, +.hljs-meta { + color: #643820 +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type, +.hljs-built_in, +.hljs-params { + color: #5c2699 +} +.hljs-attr { + color: #836C28 +} +.hljs-subst { + color: #000 +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-addition { + background-color: #baeeba +} +.hljs-deletion { + background-color: #ffc8bd +} +.hljs-selector-id, +.hljs-selector-class { + color: #9b703f +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/xt256.css b/modules/highlighter/styles/xt256.css new file mode 100644 index 0000000..85950c4 --- /dev/null +++ b/modules/highlighter/styles/xt256.css @@ -0,0 +1,79 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + xt256.css + + Contact: initbar [at] protonmail [dot] ch + : github.com/initbar +*/ +.hljs { + color: #eaeaea; + background: #000 +} +.hljs-subst { + color: #eaeaea +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-type { + color: #eaeaea +} +.hljs-params { + color: #da0000 +} +.hljs-literal, +.hljs-number, +.hljs-name { + color: #ff0000; + font-weight: bolder +} +.hljs-comment { + color: #969896 +} +.hljs-selector-id, +.hljs-quote { + color: #00ffff +} +.hljs-template-variable, +.hljs-variable, +.hljs-title { + color: #00ffff; + font-weight: bold +} +.hljs-selector-class, +.hljs-keyword, +.hljs-symbol { + color: #fff000 +} +.hljs-string, +.hljs-bullet { + color: #00ff00 +} +.hljs-tag, +.hljs-section { + color: #000fff +} +.hljs-selector-tag { + color: #000fff; + font-weight: bold +} +.hljs-attribute, +.hljs-built_in, +.hljs-regexp, +.hljs-link { + color: #ff00ff +} +.hljs-meta { + color: #fff; + font-weight: bolder +} \ No newline at end of file diff --git a/modules/highlighter/upgrades.php b/modules/highlighter/upgrades.php index af7e39d..ce31b9d 100644 --- a/modules/highlighter/upgrades.php +++ b/modules/highlighter/upgrades.php @@ -8,7 +8,8 @@ * * Versions: 2019.03 => 2019.04 */ - function highlighter_add_config(): void { + function highlighter_add_config( + ): void { $config = Config::current(); if (!isset($config->module_highlighter)) { diff --git a/modules/lightbox/info.php b/modules/lightbox/info.php index a9ad296..1218eda 100644 --- a/modules/lightbox/info.php +++ b/modules/lightbox/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Lightbox", "lightbox"), "url" => "http://chyrplite.net/", - "version" => "2024.02", + "version" => "2025.01", "description" => __("A lightbox for your images.", "lightbox"), "author" => array( "name" => "Daniel Pimley", diff --git a/modules/lightbox/javascript.php b/modules/lightbox/javascript.php index 37ce110..8aca065 100644 --- a/modules/lightbox/javascript.php +++ b/modules/lightbox/javascript.php @@ -22,21 +22,19 @@ var ChyrpLightbox = { "box-sizing": "border-box", "display": "block", "position": "fixed", - "top": "0px", - "right": "0px", - "bottom": "0px", - "left": "0px", - "opacity": 0, - "z-index": 2147483646, + "inset": "0px", + "margin": "0rem", "padding": "3rem", + "opacity": "0", "cursor": "wait", + "z-index": "2147483646", "background-repeat": "no-repeat", "background-size": "1.5rem", "background-position": "right 0.75rem top 0.75rem", "background-image": "url('" + Site.chyrp_url + "/modules/lightbox/images/close.svg')" }, show: { - "opacity": 1, + "opacity": "1", "cursor": "pointer" }, images: { @@ -46,23 +44,29 @@ var ChyrpLightbox = { "padding": Math.abs("module_lightbox["spacing"]); ?>") + "px" }, black: { - "background-color": "#000000", + "background-color": "black", "background-blend-mode": "difference" }, grey: { - "background-color": "#7f7f7f", - "background-blend-mode": "luminosity" + "background-color": "grey", + "background-blend-mode": "lighten" }, white: { - "background-color": "#ffffff", + "background-color": "white", "background-blend-mode": "difference" }, inherit: { "background-color": "inherit", "background-blend-mode": "difference" }, + transparent: { + "background-color": "transparent", + "background-blend-mode": "normal", + "backdrop-filter": "blur(8px) contrast(0.8)" + } }, - init: function() { + init: function( + ) { $.extend( ChyrpLightbox.styles.fg, ChyrpLightbox.styles.spacing @@ -95,10 +99,13 @@ var ChyrpLightbox = { $(window).on("popstate", ChyrpLightbox.hide); ChyrpLightbox.watch(); }, - prevent: function(e) { + prevent: function( + e + ) { e.preventDefault(); }, - watch: function() { + watch: function( + ) { // Watch for DOM additions on blog pages. if (!!window.MutationObserver && $(".post").length) { var target = $(".post").last().parent()[0]; @@ -139,7 +146,9 @@ var ChyrpLightbox = { observer.observe(target, config); } }, - load: function(e) { + load: function( + e + ) { if (ChyrpLightbox.busy) return; @@ -179,7 +188,8 @@ var ChyrpLightbox = { ) ).appendTo("body"); }, - show: function() { + show: function( + ) { var fg = $("#ChyrpLightbox-fg"); var bg = $("#ChyrpLightbox-bg"); @@ -195,7 +205,8 @@ var ChyrpLightbox = { bg.focus(); }, - hide: function() { + hide: function( + ) { $("#ChyrpLightbox-bg").remove(); ChyrpLightbox.busy = false; } diff --git a/modules/lightbox/lightbox.php b/modules/lightbox/lightbox.php index 6e72524..c2af4cc 100644 --- a/modules/lightbox/lightbox.php +++ b/modules/lightbox/lightbox.php @@ -1,6 +1,7 @@ set( "module_lightbox", array( @@ -11,11 +12,14 @@ ); } - public static function __uninstall(): void { + public static function __uninstall( + ): void { Config::current()->remove("module_lightbox"); } - public function admin_lightbox_settings($admin): void { + public function admin_lightbox_settings( + $admin + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -27,10 +31,11 @@ "pages".DIR."lightbox_settings", array( "lightbox_background" => array( - "black" => __("Black", "lightbox"), - "grey" => __("Gray", "lightbox"), - "white" => __("White", "lightbox"), - "inherit" => __("Inherit", "lightbox") + "black" => __("Black", "lightbox"), + "grey" => __("Gray", "lightbox"), + "white" => __("White", "lightbox"), + "inherit" => __("Inherit", "lightbox"), + "transparent" => __("Transparent", "lightbox") ) ) ); @@ -62,7 +67,9 @@ ); } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["lightbox_settings"] = array( "title" => __("Lightbox", "lightbox") @@ -71,7 +78,8 @@ return $navs; } - public function javascript(): void { + public function javascript( + ): void { $config = Config::current(); include MODULES_DIR.DIR."lightbox".DIR."javascript.php"; } diff --git a/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.mo b/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.mo index 418abd7..6c10c41 100644 Binary files a/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.mo and b/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.mo differ diff --git a/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po b/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po index 6aa9ce3..a15e716 100644 --- a/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po +++ b/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/lightbox/admin/pages/lightbox_settings.twig:3 @@ -37,7 +37,7 @@ msgstr "Bilder schützen" msgid "Prevent visitors from saving images?" msgstr "Besucher hindern, Bilder zu speichern?" -#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:68 +#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "Lightbox" @@ -45,22 +45,26 @@ msgstr "Lightbox" msgid "A lightbox for your images." msgstr "Ein Lightbox für eure Bilder." -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "Dieses Bild nicht mehr anzeigen" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "Schwartz" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "Grau" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "Weiss" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "Erben" + +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "Transparent" diff --git a/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot b/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot index d1ecf1a..88e2ab5 100644 --- a/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot +++ b/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot @@ -26,7 +26,7 @@ msgid "Prevent visitors from saving images?" msgstr "" #: modules/lightbox/info.php:3 -#: modules/lightbox/lightbox.php:68 +#: modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "" @@ -34,23 +34,27 @@ msgstr "" msgid "A lightbox for your images." msgstr "" -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "" +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "" + diff --git a/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.mo b/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.mo index ea5f47e..d05eade 100644 Binary files a/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.mo and b/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.mo differ diff --git a/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po b/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po index 37539eb..1dc5f2e 100644 --- a/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po +++ b/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/lightbox/admin/pages/lightbox_settings.twig:3 @@ -38,7 +38,7 @@ msgstr "Proteggi immagini" msgid "Prevent visitors from saving images?" msgstr "Impedire ai visitatori di salvare le immagini?" -#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:68 +#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "Tavolo luminoso" @@ -46,22 +46,26 @@ msgstr "Tavolo luminoso" msgid "A lightbox for your images." msgstr "Un tavolo luminoso per le tue immagini." -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "Interrompi la visualizzazione di questa immagine" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "Nero" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "Grigio" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "Bianco" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "Sfondo riprodotto" + +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "Trasparente" diff --git a/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.mo b/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.mo index cb7bb3c..62345cc 100644 Binary files a/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.mo and b/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.mo differ diff --git a/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.po b/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.po index 493d0cb..88fd873 100644 --- a/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.po +++ b/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/lightbox/admin/pages/lightbox_settings.twig:3 @@ -37,7 +37,7 @@ msgstr "Bescherm afbeeldingen" msgid "Prevent visitors from saving images?" msgstr "Bezoekers verhinderen om afbeeldingen te downloaden?" -#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:68 +#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "Lightbox" @@ -45,22 +45,26 @@ msgstr "Lightbox" msgid "A lightbox for your images." msgstr "Een lightbox voor je afbeeldingen." -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "Stop met het weergeven van dit bericht" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "Zwart" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "Grijs" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "Wit" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "Erf van systeem" + +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "Transparant" diff --git a/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.mo b/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.mo index 3c7c64a..22a09b2 100644 Binary files a/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.mo and b/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.mo differ diff --git a/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po b/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po index 6404825..827782a 100644 --- a/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po +++ b/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/lightbox/admin/pages/lightbox_settings.twig:3 @@ -38,7 +38,7 @@ msgstr "保护图像" msgid "Prevent visitors from saving images?" msgstr "防止访问者保存图像?" -#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:68 +#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "" @@ -46,22 +46,26 @@ msgstr "" msgid "A lightbox for your images." msgstr "为您的图片提供灯箱。" -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "停止显示此图像" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "黑色" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "灰色" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "白色" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "继承" + +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "透明" diff --git a/modules/likes/images/gold.svg b/modules/likes/images/gold.svg index 38fb02a..ab211de 100644 --- a/modules/likes/images/gold.svg +++ b/modules/likes/images/gold.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/images/outline.svg b/modules/likes/images/outline.svg index 2a41c22..4589693 100644 --- a/modules/likes/images/outline.svg +++ b/modules/likes/images/outline.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/images/pink.svg b/modules/likes/images/pink.svg index 90d7bed..0763a45 100644 --- a/modules/likes/images/pink.svg +++ b/modules/likes/images/pink.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/images/solid.svg b/modules/likes/images/solid.svg index 25570bb..0edfa05 100644 --- a/modules/likes/images/solid.svg +++ b/modules/likes/images/solid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/info.php b/modules/likes/info.php index 38192dd..ee79264 100644 --- a/modules/likes/info.php +++ b/modules/likes/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Likes", "likes"), "url" => "http://chyrplite.net/", - "version" => "2024.03", + "version" => "2025.01", "description" => __("Allow users to “like” a post.", "likes"), "author" => array( "name" => "Chyrp team", diff --git a/modules/likes/javascript.php b/modules/likes/javascript.php index e35670d..2a657e5 100644 --- a/modules/likes/javascript.php +++ b/modules/likes/javascript.php @@ -5,7 +5,8 @@ var ChyrpLikes = { failed: false, busy: false, - init: function() { + init: function( + ) { $("div.likes a.likes").click( function(e) { if (!ChyrpLikes.failed) { @@ -16,7 +17,8 @@ var ChyrpLikes = { ); ChyrpLikes.watch(); }, - watch: function() { + watch: function( + ) { // Watch for DOM additions on blog pages. if (!!window.MutationObserver && $(".post").length) { var target = $(".post").last().parent()[0]; @@ -44,7 +46,11 @@ var ChyrpLikes = { observer.observe(target, config); } }, - send: function(post_id, callback, isUnlike) { + send: function( + post_id, + callback, + isUnlike + ) { if (!ChyrpLikes.busy && !ChyrpLikes.failed) { $.ajax( { @@ -71,7 +77,9 @@ var ChyrpLikes = { ); } }, - toggle: function(post_id) { + toggle: function( + post_id + ) { if ($("#likes_" + post_id + " a.liked").length) { ChyrpLikes.send( post_id, @@ -94,7 +102,8 @@ var ChyrpLikes = { ); } }, - panic: function() { + panic: function( + ) { ChyrpLikes.failed = true; Oops.count++; alert(Oops.message); diff --git a/modules/likes/likes.css b/modules/likes/likes.css index 8b0146a..cf24d01 100644 --- a/modules/likes/likes.css +++ b/modules/likes/likes.css @@ -2,8 +2,9 @@ div.likes { position: relative; display: inline; } -div.likes a.likes img { - vertical-align: middle; +div.likes a.likes img, +div.likes a.likes svg { + vertical-align: text-bottom; } div.likes a.likes { border: none; diff --git a/modules/likes/likes.php b/modules/likes/likes.php index 9d982f5..e46faa1 100644 --- a/modules/likes/likes.php +++ b/modules/likes/likes.php @@ -6,7 +6,8 @@ # Query caches for methods. private $caches = array(); - public static function __install(): void { + public static function __install( + ): void { $config = Config::current(); Like::install(); @@ -24,7 +25,9 @@ ); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { if ($confirm) Like::uninstall(); @@ -33,25 +36,35 @@ Config::current()->remove("module_likes"); } - public function user_logged_in($user): void { + public function user_logged_in( + $user + ): void { $_SESSION['likes'] = array(); } - public function user($user): void { + public function user( + $user + ): void { $user->has_many[] = "likes"; } - public function post($post): void { + public function post( + $post + ): void { $post->has_many[] = "likes"; } - public function list_permissions($names = array()): array { + public function list_permissions( + $names = array() + ): array { $names["like_post"] = __("Like Posts", "likes"); $names["unlike_post"] = __("Unlike Posts", "likes"); return $names; } - public function admin_like_settings($admin): void { + public function admin_like_settings( + $admin + ): void { $config = Config::current(); if (!Visitor::current()->group->can("change_settings")) @@ -63,7 +76,7 @@ if (empty($_POST)) { $admin->display( "pages".DIR."like_settings", - array("like_images" => $this->like_images()) + array("like_images" => $this->list_images()) ); return; @@ -75,7 +88,7 @@ __("Invalid authentication token.") ); - fallback($_POST['like_image'], $config->chyrp_url."/modules/likes/images/pink.svg"); + fallback($_POST['like_image'], "pink.svg"); $config->set( "module_likes", @@ -92,7 +105,9 @@ ); } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["like_settings"] = array( "title" => __("Likes", "likes") @@ -101,7 +116,9 @@ return $navs; } - public function main_most_likes($main): void { + public function main_most_likes( + $main + ): void { $posts = Post::find(array("placeholders" => true)); usort($posts[0], function ($a, $b) { @@ -121,7 +138,8 @@ ); } - public function main_like()/*: never */{ + public function main_like( + ): never { if (empty($_GET['post_id']) or !is_numeric($_GET['post_id'])) error( __("Error"), @@ -150,7 +168,8 @@ ); } - public function main_unlike()/*: never */{ + public function main_unlike( + ): never { if (empty($_GET['post_id']) or !is_numeric($_GET['post_id'])) error( __("Error"), @@ -179,7 +198,8 @@ ); } - public function ajax_like(): void { + public function ajax_like( + ): void { if (empty($_POST['post_id']) or !is_numeric($_POST['post_id'])) error( __("Error"), @@ -217,7 +237,8 @@ json_response($text, true); } - public function ajax_unlike(): void { + public function ajax_unlike( + ): void { if (empty($_POST['post_id']) or !is_numeric($_POST['post_id'])) error( __("Error"), @@ -252,14 +273,18 @@ json_response($text, true); } - public function delete_post($post): void { + public function delete_post( + $post + ): void { SQL::current()->delete( table:"likes", conds:array("post_id" => $post->id) ); } - public function delete_user($user): void { + public function delete_user( + $user + ): void { SQL::current()->update( table:"likes", conds:array("user_id" => $user->id), @@ -267,7 +292,9 @@ ); } - private function get_post_like_count($post_id): int { + private function get_post_like_count( + $post_id + ): int { if (!isset($this->caches["post_like_counts"])) { $counts = SQL::current()->select( tables:"likes", @@ -287,14 +314,19 @@ return fallback($this->caches["post_like_counts"][$post_id], 0); } - public function post_like_count_attr($attr, $post): int { + public function post_like_count_attr( + $attr, + $post + ): int { if ($post->no_results) return 0; return $this->get_post_like_count($post->id); } - public function get_user_like_count($user_id): int { + public function get_user_like_count( + $user_id + ): int { if (!isset($this->caches["user_like_counts"])) { $counts = SQL::current()->select( tables:"likes", @@ -314,20 +346,29 @@ return fallback($this->caches["user_like_counts"][$user_id], 0); } - public function user_like_count_attr($attr, $user): int { + public function user_like_count_attr( + $attr, + $user + ): int { if ($user->no_results) return 0; return $this->get_user_like_count($user->id); } - public function visitor_like_count_attr($attr, $visitor): int { + public function visitor_like_count_attr( + $attr, + $visitor + ): int { return ($visitor->id == 0) ? count(fallback($_SESSION['likes'], array())) : $this->user_like_count_attr($attr, $visitor) ; } - public function post_like_link_attr($attr, $post): ?string { + public function post_like_link_attr( + $attr, + $post + ): ?string { $config = Config::current(); $route = Route::current(); $main = MainController::current(); @@ -345,21 +386,9 @@ if (!Like::exists($post->id)) { if ($visitor->group->can("like_post")) { $html.= '

    +{{- icon_svg("help.svg", "Help" | translate) -}} + + {#- -#} - -{{- icon_img("help.svg", "help" | translate) -}} -

    - + {#- -#} - -{{- icon_img("help.svg", "help" | translate) -}} -

    {% if visitor.group.can("edit_draft", "edit_post", "delete_draft", "delete_post") %} -{{ icon_img("add.svg") }}{{ "Add Tags" | translate("tags") }} +{{ icon_svg("add.svg") }}{{ "Add Tags" | translate("tags") }} {% endif %}

    @@ -36,14 +36,14 @@ {% if visitor.group.can("edit_post") %} -{{- icon_img("edit.svg", "edit" | translate) -}} +{{- icon_svg("edit.svg", "Edit" | translate) -}} {% endif %} {% if visitor.group.can("edit_post") %} -{{- icon_img("delete.svg", "delete" | translate) -}} +{{- icon_svg("delete.svg", "Delete" | translate) -}} {% endif %} @@ -51,7 +51,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/modules/tags/admin/pages/posts_tagged.twig b/modules/tags/admin/pages/posts_tagged.twig index 6bc41be..bf52e1e 100644 --- a/modules/tags/admin/pages/posts_tagged.twig +++ b/modules/tags/admin/pages/posts_tagged.twig @@ -8,7 +8,7 @@ @@ -28,19 +28,27 @@ {{ "Post" | translate }} +{{ "Status" | translate }} {{ "Tags" | translate("tags") }} {{ "Controls" | translate }} {% for post in posts.paginated %} - + {{ post.title() | striptags | oneof("[Untitled]" | translate) | truncate(40) }} + +{% for group in post_statuses.(post.id).groups %} +{{ group.name }} +{% else %} +{{ post_statuses.(post.id).name | oneof("[None]" | translate) }} +{% endfor %} + {% for name, clean in post.tags %} {{ name }} @@ -49,7 +57,7 @@ {% if post.editable() %} -{{- icon_img("edit.svg", "edit" | translate) -}} +{{- icon_svg("edit.svg", "Edit" | translate) -}} {% endif %} @@ -57,7 +65,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/modules/tags/info.php b/modules/tags/info.php index 6beaa68..0aed619 100644 --- a/modules/tags/info.php +++ b/modules/tags/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Tagginator", "tags"), "url" => "http://chyrplite.net/", - "version" => "2024.03", + "version" => "2025.01", "description" => __("Adds tagging functionality to posts.", "tags"), "author" => array( "name" => "Chyrp Team", diff --git a/modules/tags/javascript.php b/modules/tags/javascript.php index de9eec0..8999aad 100644 --- a/modules/tags/javascript.php +++ b/modules/tags/javascript.php @@ -3,7 +3,8 @@ exit; ?> var ChyrpTags = { - init: function() { + init: function( + ) { $("form input[name='tags']").on( "keyup", ChyrpTags.scan @@ -13,7 +14,9 @@ var ChyrpTags = { ChyrpTags.add ); }, - scan: function(e) { + scan: function( + e + ) { $(e.target).siblings("span.tags_select").children("a.tag").each( function() { var name = $(this).html(); @@ -26,7 +29,9 @@ var ChyrpTags = { } ); }, - add: function(e) { + add: function( + e + ) { e.preventDefault(); var name = $(e.target).html(); var tags = $(e.target).parent().siblings("input[name='tags']"); diff --git a/modules/tags/locale/de_DE/LC_MESSAGES/tags.mo b/modules/tags/locale/de_DE/LC_MESSAGES/tags.mo index c2ee8ae..f2efdb4 100644 Binary files a/modules/tags/locale/de_DE/LC_MESSAGES/tags.mo and b/modules/tags/locale/de_DE/LC_MESSAGES/tags.mo differ diff --git a/modules/tags/locale/de_DE/LC_MESSAGES/tags.po b/modules/tags/locale/de_DE/LC_MESSAGES/tags.po index 16628a1..2988df0 100644 --- a/modules/tags/locale/de_DE/LC_MESSAGES/tags.po +++ b/modules/tags/locale/de_DE/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -55,9 +55,9 @@ msgstr "Ändern von Tags für “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "Tags (Etiketten)" @@ -66,30 +66,30 @@ msgid "Manage Tags" msgstr "Tags bearbeiten" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "Tags hinzufügen" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "Name" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "Blogpost getagged" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "Sortieren Sie die Ergebnisse nach:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "Blogposts getagged mit “%s”" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "Taggen Sie die selektierten Blogpost(s) mit:" @@ -118,99 +118,99 @@ msgstr "Fügt Tagging-Funktionen zu Blogposts hinzu." msgid "Do you want to remove your tags from the database?" msgstr "Möchten Sie Ihre Tags aus der Datenbank entfernen?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(Komma getrennt)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Bearbeiten von Tags." -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "Tag nicht gefunden." -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "Zum Bearbeiten einer Tag ist eine ID erforderlich." -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "Zum Ändern einer Tag ist eine ID erforderlich." -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "Tag aktualisiert." -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Ändern von Tags." -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "Kein Tag angegeben" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "Bitte gebe den Tag an von dem Sie die Name ändern möchten." -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "Name darf nicht leer sein." -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "Tag geändert." -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Löschen von Tags." -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "Bitte gebe den Tag an dem Sie löschen möchten." -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "Tag gelöscht." -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen um Tags hinfügen zu " "können." -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "Kein Blogposts spezifiziert." -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "Kein Tags spezifiziert." -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "Blogposts getagged." -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "Sie haben keinem Tag spezifiziert." -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "Die von Ihnen angegebene Tag wurde nicht gefunden." -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "Es gibt keinen Blogposts mit dem spezifizierten Tag." -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/en_US/LC_MESSAGES/tags.pot b/modules/tags/locale/en_US/LC_MESSAGES/tags.pot index 6252b6a..b19de07 100644 --- a/modules/tags/locale/en_US/LC_MESSAGES/tags.pot +++ b/modules/tags/locale/en_US/LC_MESSAGES/tags.pot @@ -30,11 +30,11 @@ msgstr "" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 -#: modules/tags/tags.php:165 -#: modules/tags/tags.php:223 -#: modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 +#: modules/tags/tags.php:203 +#: modules/tags/tags.php:270 +#: modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "" @@ -43,33 +43,33 @@ msgid "Manage Tags" msgstr "" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "" #: modules/tags/admin/pages/manage_tags.twig:22 #: modules/tags/admin/pages/rename_tag.twig:10 -#: modules/tags/tags.php:282 +#: modules/tags/tags.php:334 msgid "Name" msgstr "" #: modules/tags/admin/pages/manage_tags.twig:23 #: modules/tags/admin/pages/posts_tagged.twig:3 -#: modules/tags/tags.php:283 +#: modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "" #: modules/tags/admin/pages/posts_tagged.twig:20 -#: modules/tags/tags.php:708 +#: modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "" @@ -98,103 +98,103 @@ msgstr "" msgid "Do you want to remove your tags from the database?" msgstr "" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "" -#: modules/tags/tags.php:260 -#: modules/tags/tags.php:316 +#: modules/tags/tags.php:312 +#: modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "" -#: modules/tags/tags.php:344 -#: modules/tags/tags.php:483 -#: modules/tags/tags.php:524 -#: modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 +#: modules/tags/tags.php:599 +#: modules/tags/tags.php:642 +#: modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "" -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "" -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "" -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "" -#: modules/tags/tags.php:468 -#: modules/tags/tags.php:496 +#: modules/tags/tags.php:584 +#: modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "" -#: modules/tags/tags.php:473 -#: modules/tags/tags.php:507 -#: modules/tags/tags.php:558 -#: modules/tags/tags.php:592 +#: modules/tags/tags.php:589 +#: modules/tags/tags.php:625 +#: modules/tags/tags.php:678 +#: modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "" -#: modules/tags/tags.php:474 -#: modules/tags/tags.php:508 +#: modules/tags/tags.php:590 +#: modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "" -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "" -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "" -#: modules/tags/tags.php:553 -#: modules/tags/tags.php:581 +#: modules/tags/tags.php:673 +#: modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "" -#: modules/tags/tags.php:559 -#: modules/tags/tags.php:593 +#: modules/tags/tags.php:679 +#: modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "" -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "" -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "" -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "" -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "" -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "" -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "" -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "" -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "" -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/it_IT/LC_MESSAGES/tags.mo b/modules/tags/locale/it_IT/LC_MESSAGES/tags.mo index d7c4093..2cc0549 100644 Binary files a/modules/tags/locale/it_IT/LC_MESSAGES/tags.mo and b/modules/tags/locale/it_IT/LC_MESSAGES/tags.mo differ diff --git a/modules/tags/locale/it_IT/LC_MESSAGES/tags.po b/modules/tags/locale/it_IT/LC_MESSAGES/tags.po index 3a695e4..dac2a0e 100644 --- a/modules/tags/locale/it_IT/LC_MESSAGES/tags.po +++ b/modules/tags/locale/it_IT/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -54,9 +54,9 @@ msgstr "Modifica dei tag per “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "Tag" @@ -65,30 +65,30 @@ msgid "Manage Tags" msgstr "Gestisci Tag" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "Aggiungi Tag" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "Titolo" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "Post taggati" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "Ordina i risultati per:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "Post taggati con “%s”" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "Contrassegna i post selezionati con:" @@ -117,94 +117,94 @@ msgstr "Aggiunge la funzionalità per taggare i post." msgid "Do you want to remove your tags from the database?" msgstr "Vuoi rimuovere i tag dal database?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(separati da virgole)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "Non si dispone di privilegi sufficienti per gestire i tag." -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "Tag non trovato." -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "Per modificare i tag è necessario un ID." -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "Per aggiornare i tag è necessario un ID." -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "Tag aggiornati." -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "Non si dispone di privilegi sufficienti per rinominare i tag." -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "Nessun tag specificato" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "Si prega di specificare il tag che si desidera rinominare." -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "Il titolo non può essere vuoto." -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "Tag rinominato." -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "Non si dispone di privilegi sufficienti per eliminare i tag." -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "Si prega di specificare il tag che si desidera eliminare." -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "Tag cancellato." -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "Non si dispone di privilegi sufficienti per aggiungere tag." -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "Nessun post selezionato." -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "Nessun tag specificato." -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "Post taggati." -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "Non è stato specificato un tag." -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "Il tag specificato non è stato trovato." -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "Non sono presenti post con il tag specificato." -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/nl_NL/LC_MESSAGES/tags.mo b/modules/tags/locale/nl_NL/LC_MESSAGES/tags.mo index 4ecaef2..22f3a08 100644 Binary files a/modules/tags/locale/nl_NL/LC_MESSAGES/tags.mo and b/modules/tags/locale/nl_NL/LC_MESSAGES/tags.mo differ diff --git a/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po b/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po index d6f489b..f57a163 100644 --- a/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po +++ b/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -54,9 +54,9 @@ msgstr "Wijzigen Tags voor “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "Tags" @@ -65,30 +65,30 @@ msgid "Manage Tags" msgstr "Beheer Tags" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "Tags toevoegen" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "Naam" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "Blogposts getagged" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "Sorteer resultaten op:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "Blogposts getagged met “%s”" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "Tag de geselecteerde Blogpost(s) met:" @@ -117,94 +117,94 @@ msgstr "Voegt Tag-functionaliteit toe aan je Blogposts." msgid "Do you want to remove your tags from the database?" msgstr "Wil je jouw Tags verwijderen uit de database?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(komma gescheiden)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "Je hebt onvoldoende rechten om Tags te beheren." -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "Tag niet gevonden." -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "Een ID is noodzakelijk om Tags aan te passen." -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "Een ID is noodzakelijk om Tags te updaten." -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "Tags bijgewerkt." -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "Je hebt onvoldoende rechten om Tags te hernoemen." -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "Geen Tag geselecteerd" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "Selecteer alsjeblieft de Tag die je hernoemen wilt." -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "Naam kan niet leeg zijn." -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "Tag hernoemd." -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "Je hebt onvoldoende rechten om Tags te verwijderen." -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "Selecteer alsjeblieft de Tag die je verwijderen wilt." -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "Tag verwijderd." -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "Je hebt onvoldoende rechten om Tags toe te voegen." -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "Geen Blogposts geselecteerd." -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "Geen Tags geselecteerd." -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "Blogposts getagged." -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "Je hebt geen Tag geselecteerd." -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "De Tag die je gekozen hebt is niet gevonden." -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "Er zijn geen Blogposts met de geselecteerde Tag." -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/zh_CN/LC_MESSAGES/tags.mo b/modules/tags/locale/zh_CN/LC_MESSAGES/tags.mo index 5bfe0f9..869d8e3 100644 Binary files a/modules/tags/locale/zh_CN/LC_MESSAGES/tags.mo and b/modules/tags/locale/zh_CN/LC_MESSAGES/tags.mo differ diff --git a/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po b/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po index 70a4cd3..be92b70 100644 --- a/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po +++ b/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -52,9 +52,9 @@ msgstr "编辑标签 “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "标签" @@ -63,30 +63,30 @@ msgid "Manage Tags" msgstr "管理标签" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "添加标签" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "姓名" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "帖子已标记" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "结果排序依据:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "“%s” 的帖子标签" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "将选中的帖子标记为:" @@ -115,94 +115,94 @@ msgstr "为帖子添加标签功能。" msgid "Do you want to remove your tags from the database?" msgstr "您想从数据库中删除您的标签吗?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(逗号分割)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "您没有足够的权限来管理标签。" -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "标签未找到。" -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "编辑标签需要ID。" -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "更新标签需要ID。" -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "标签已更新。" -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "您没有足够的权限来重命名标签。" -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "未指定标签" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "请指定您要重命名的标签。" -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "名字不能为空。" -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "标签已重命名。" -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "您没有足够的权限来删除标签。" -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "请指定您要删除的标签。" -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "标签已删除。" -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "您没有足够的权限来增加标签。" -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "没有选择帖子。" -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "没有指定标签。" -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "帖子已标记。" -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "你没有指定一个标签。" -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "没有找到您指定的标签。" -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "没有您指定标签的帖子。" -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/tags.php b/modules/tags/tags.php index 628f955..065412f 100644 --- a/modules/tags/tags.php +++ b/modules/tags/tags.php @@ -4,11 +4,14 @@ # Query caches for methods. private $caches = array(); - public static function __install(): void { + public static function __install( + ): void { Route::current()->add("tag/(name)/", "tag"); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { Route::current()->remove("tag/(name)/"); if ($confirm) @@ -18,43 +21,63 @@ ); } - private function tags_serialize($tags) { + private function tags_serialize( + $tags + ) { return json_set($tags); } - private function tags_unserialize($tags) { + private function tags_unserialize( + $tags + ) { return json_get($tags, true); } - private function sort_tags_name_asc($a, $b): int { + private function sort_tags_name_asc( + $a, + $b + ): int { return $this->mb_strcasecmp( $a["name"], $b["name"] ); } - private function sort_tags_name_desc($a, $b): int { + private function sort_tags_name_desc( + $a, + $b + ): int { return $this->mb_strcasecmp( $b["name"], $a["name"] ); } - private function sort_tags_popularity_asc($a, $b): int { + private function sort_tags_popularity_asc( + $a, + $b + ): int { if ($a["popularity"] == $b["popularity"]) return 0; return ($a["popularity"] < $b["popularity"]) ? -1 : 1 ; } - private function sort_tags_popularity_desc($a, $b): int { + private function sort_tags_popularity_desc( + $a, + $b + ): int { if ($a["popularity"] == $b["popularity"]) return 0; return ($a["popularity"] > $b["popularity"]) ? -1 : 1 ; } - private function mb_strcasecmp($str1, $str2, $encoding = "UTF-8"): int { + private function mb_strcasecmp( + $str1, + $str2, + $encoding = "UTF-8" + ): int { $str1 = preg_replace("/[[:punct:]]+/", "", $str1); $str2 = preg_replace("/[[:punct:]]+/", "", $str2); @@ -65,24 +88,32 @@ ); } - private function tags_name_match($name): string { + private function tags_name_match( + $name + ): string { # Serialized notation of key for SQL queries. return "%\"".$this->tags_encoded($name)."\":%"; } - private function tags_clean_match($clean): string { + private function tags_clean_match( + $clean + ): string { # Serialized notation of value for SQL queries. return "%:\"".$this->tags_encoded($clean)."\"%"; } - private function tags_encoded($text): string { + private function tags_encoded( + $text + ): string { # Recreate JSON encoding for SQL queries. $json = trim(json_set((string) $text), "\""); # See: QueryBuilder::build_conditions(). return str_replace("|", "||", $json); } - private function prepare_tags($tags): array { + private function prepare_tags( + $tags + ): array { # Split at the comma. $names = explode(",", $tags); @@ -120,7 +151,9 @@ return $assoc; } - public function before_add_post_attributes($attributes): array { + public function before_add_post_attributes( + $attributes + ): array { if (!isset($_POST['tags'])) return $attributes; @@ -129,7 +162,9 @@ return $attributes; } - public function before_update_post_attributes($attributes): array { + public function before_update_post_attributes( + $attributes + ): array { if (!isset($_POST['tags'])) return $attributes; @@ -138,7 +173,10 @@ return $attributes; } - public function post_options($fields, $post = null): array { + public function post_options( + $fields, + $post = null + ): array { $cloud = $this->tag_cloud(false, "name_asc"); $names = isset($post->tags) ? array_keys($post->tags) : @@ -173,7 +211,9 @@ return $fields; } - public function post($post): void { + public function post( + $post + ): void { $post->tags = empty($post->tags) ? array() : $this->tags_unserialize($post->tags) ; @@ -183,7 +223,10 @@ }); } - public function post_tags_link_attr($attr, $post): array { + public function post_tags_link_attr( + $attr, + $post + ): array { $urls = array(); if ($post->no_results) @@ -212,12 +255,16 @@ return $this->tag_cloud($limit, $sort, $scale); } - public function parse_urls($urls): array { + public function parse_urls( + $urls + ): array { $urls['|/tag/([^/]+)/|'] = '/?action=tag&name=$1'; return $urls; } - public function manage_nav($navs): array { + public function manage_nav( + $navs + ): array { if (Post::any_editable()) $navs["manage_tags"] = array( "title" => __("Tags", "tags"), @@ -232,13 +279,16 @@ return $navs; } - public function manage_posts_column_header(): string { + public function manage_posts_column_header( + ): string { return ''. __("Tags", "tags"). ''; } - public function manage_posts_column($post): string { + public function manage_posts_column( + $post + ): string { $tags = array(); foreach ($post->tags as $name => $clean) @@ -253,7 +303,9 @@ ''; } - public function admin_manage_tags($admin): void { + public function admin_manage_tags( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -309,7 +361,9 @@ ); } - public function admin_posts_tagged($admin): void { + public function admin_posts_tagged( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -385,13 +439,71 @@ $posts = new Paginator(array()); } + $post_statuses = array(); + + foreach ($posts->paginated as $post) { + $name = ""; + $groups = array(); + $classes = array(); + + if ($group_ids = $post->groups()) { + foreach ($group_ids as $group_id) { + $group = new Group($group_id); + + if (!$group->no_results) { + $groups[] = $group; + $classes[] = "group-".$group->id; + } + } + } else { + switch ($post->status) { + case Post::STATUS_DRAFT: + $name = __("Draft", "admin"); + break; + + case Post::STATUS_PUBLIC: + $name = __("Public", "admin"); + break; + + case Post::STATUS_PRIVATE: + $name = __("Private", "admin"); + break; + + case Post::STATUS_REG_ONLY: + $name = __("All registered users", "admin"); + break; + + case Post::STATUS_SCHEDULED: + $name = __("Scheduled", "admin"); + break; + + default: + $name = camelize($post->status, true); + } + + $classes[] = $post->status; + } + + $post_statuses[$post->id] = array( + "name" => $name, + "groups" => $groups, + "classes" => $classes + ); + } + $admin->display( "pages".DIR."posts_tagged", - array("posts" => $posts, "tag" => $tag) + array( + "posts" => $posts, + "tag" => $tag, + "post_statuses" => $post_statuses + ) ); } - public function admin_edit_tags($admin): void { + public function admin_edit_tags( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -422,7 +534,9 @@ ); } - public function admin_update_tags($admin)/*: never */{ + public function admin_update_tags( + $admin + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -461,7 +575,9 @@ ); } - public function admin_rename_tag($admin): void { + public function admin_rename_tag( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -489,7 +605,9 @@ ); } - public function admin_update_tag($admin)/*: never */{ + public function admin_update_tag( + $admin + ): never { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -546,7 +664,9 @@ ); } - public function admin_delete_tag($admin): void { + public function admin_delete_tag( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -574,7 +694,8 @@ ); } - public function admin_destroy_tag()/*: never */{ + public function admin_destroy_tag( + ): never { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -626,7 +747,9 @@ ); } - public function admin_bulk_tag($admin)/*: never */{ + public function admin_bulk_tag( + $admin + ): never { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -671,7 +794,9 @@ ); } - public function main_tag($main): void { + public function main_tag( + $main + ): void { if (!isset($_GET['name'])) Flash::warning( __("You did not specify a tag.", "tags"), @@ -709,7 +834,9 @@ ); } - public function main_tags($main): void { + public function main_tags( + $main + ): void { $main->display( "pages".DIR."tags", array("tag_cloud" => $this->tag_cloud(false, "name_asc")), @@ -717,7 +844,11 @@ ); } - public function related_posts($ids, $post, $limit): array { + public function related_posts( + $ids, + $post, + $limit + ): array { if (empty($post->tags)) return $ids; @@ -836,13 +967,18 @@ $array ; } - private function tag_cloud_title($name, $count) { + private function tag_cloud_title( + $name, + $count + ) { $p = _p("%d post tagged with “%s”", "%d posts tagged with “%s”", $count, "tags"); $title = sprintf($p, $count, fix($name, true)); return $title; } - public function tag_find_by_clean($clean): array|false { + public function tag_find_by_clean( + $clean + ): array|false { $cloud = $this->tag_cloud(); foreach ($cloud as $tag) { @@ -853,7 +989,9 @@ return false; } - public function tag_find_by_name($name): array|false { + public function tag_find_by_name( + $name + ): array|false { $cloud = $this->tag_cloud(); foreach ($cloud as $tag) { @@ -864,14 +1002,18 @@ return false; } - public function feed_item($post, $feed): void { + public function feed_item( + $post, + $feed + ): void { $scheme = url("tags", MainController::current()); foreach ($post->tags as $tag => $clean) $feed->category($clean, $scheme, $tag); } - public function admin_javascript(): void { + public function admin_javascript( + ): void { include MODULES_DIR.DIR."tags".DIR."javascript.php"; } } diff --git a/themes/blossom/content/comment.twig b/themes/blossom/content/comment.twig index 017fcf7..70b4ada 100644 --- a/themes/blossom/content/comment.twig +++ b/themes/blossom/content/comment.twig @@ -18,7 +18,7 @@ {% endif %} diff --git a/themes/blossom/content/post.twig b/themes/blossom/content/post.twig index 287b2cf..b20f881 100644 --- a/themes/blossom/content/post.twig +++ b/themes/blossom/content/post.twig @@ -14,17 +14,20 @@