feat(son/doc): prettier modal-body

This commit is contained in:
catvayor 2024-12-16 13:01:09 +01:00
parent f37b392163
commit 73dabbf5f1
Signed by: lbailly
GPG key ID: CE3E645251AC63F3
7 changed files with 220 additions and 31 deletions

View file

@ -1,25 +0,0 @@
From f050ca4374c8c4d9d4fa85e46a1dedaaaedec791 Mon Sep 17 00:00:00 2001
From: catvayor <catvayor@katvayor.net>
Date: Wed, 11 Dec 2024 15:34:42 +0100
Subject: [PATCH] fix: pretty no defaults
---
static/js/script.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/js/script.js b/static/js/script.js
index 56b633b..04234d7 100644
--- a/static/js/script.js
+++ b/static/js/script.js
@@ -293,7 +293,7 @@ var expandOption = function(el){
var elDesc = "<h5 style='margin:1em 0 0 0'>Description</h5><div>" + parseDescription(currentSet[el].description) + "</div>";
var elType = "<h5 style='margin:1em 0 0 0'>Type</h5><div>" + currentSet[el].type + "</div>";
//var elNote = ( currentSet[el].note == "" ? "": "<h5 style='margin:1em 0 0 0'>Note</h5><div>" + currentSet[el].note + "</div>");
- var elDefault = "<h5 style='margin:1em 0 0 0'>Default</h5><div><pre style='margin-top:0.5em'>" + currentSet[el].default + "</pre></div>";
+ var elDefault = ( currentSet[el].default == "" ? "" : "<h5 style='margin:1em 0 0 0'>Default</h5><div><pre style='margin-top:0.5em'>" + currentSet[el].default + "</pre></div>");
var elExample = ( currentSet[el].example == "" ? "" : "<h5 style='margin:1em 0 0 0'>Example</h5><div><pre style='margin-top:0.5em'>" + currentSet[el].example + "</pre></div>");
//var declared_by_str = currentSet[el].declarations[0].name;
--
2.47.0

View file

@ -0,0 +1,147 @@
From 5e5f68209b3b023fce260c9da1625844ca4d3c22 Mon Sep 17 00:00:00 2001
From: catvayor <catvayor@katvayor.net>
Date: Mon, 16 Dec 2024 00:11:47 +0100
Subject: [PATCH 1/2] revert: don't parse md in js
---
static/js/script.js | 106 +-------------------------------------------
1 file changed, 2 insertions(+), 104 deletions(-)
diff --git a/static/js/script.js b/static/js/script.js
index 04234d7..d3ec223 100644
--- a/static/js/script.js
+++ b/static/js/script.js
@@ -27,97 +27,6 @@ function encodeAttr(str) {
return (str+'').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
-/** Parse Markdown into an HTML String. */
-function parseMD(md, prevLinks) {
- let tokenizer = /((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,
- context = [],
- out = '',
- links = prevLinks || {},
- last = 0,
- chunk, prev, token, inner, t;
-
- function tag(token) {
- let desc = TAGS[token[1] || ''];
- let end = context[context.length-1] == token;
- if (!desc) return token;
- if (!desc[1]) return desc[0];
- if (end) context.pop();
- else context.push(token);
- return desc[end|0];
- }
-
- function flush() {
- let str = '';
- while (context.length) str += tag(context[context.length-1]);
- return str;
- }
-
- md = md.replace(/^\[(.+?)\]:\s*(.+)$/gm, (s, name, url) => {
- links[name.toLowerCase()] = url;
- return '';
- }).replace(/^\n+|\n+$/g, '');
-
- while ( (token=tokenizer.exec(md)) ) {
- prev = md.substring(last, token.index);
- last = tokenizer.lastIndex;
- chunk = token[0];
- if (prev.match(/[^\\](\\\\)*\\$/)) {
- // escaped
- }
- // Code/Indent blocks:
- else if (t = (token[3] || token[4])) {
- chunk = '<pre class="code '+(token[4]?'poetry':token[2].toLowerCase())+'"><code'+(token[2] ? ` class="language-${token[2].toLowerCase()}"` : '')+'>'+outdent(encodeAttr(t).replace(/^\n+|\n+$/g, ''))+'</code></pre>';
- }
- // > Quotes, -* lists:
- else if (t = token[6]) {
- if (t.match(/\./)) {
- token[5] = token[5].replace(/^\d+/gm, '');
- }
- inner = parse(outdent(token[5].replace(/^\s*[>*+.-]/gm, '')));
- if (t=='>') t = 'blockquote';
- else {
- t = t.match(/\./) ? 'ol' : 'ul';
- inner = inner.replace(/^(.*)(\n|$)/gm, '<li>$1</li>');
- }
- chunk = '<'+t+'>' + inner + '</'+t+'>';
- }
- // Images:
- else if (token[8]) {
- chunk = `<img src="${encodeAttr(token[8])}" alt="${encodeAttr(token[7])}">`;
- }
- // Links:
- else if (token[10]) {
- out = out.replace('<a>', `<a href="${encodeAttr(token[11] || links[prev.toLowerCase()])}">`);
- chunk = flush() + '</a>';
- }
- else if (token[9]) {
- chunk = '<a>';
- }
- // Headings:
- else if (token[12] || token[14]) {
- t = 'h' + (token[14] ? token[14].length : (token[13]>'=' ? 1 : 2));
- chunk = '<'+t+'>' + parse(token[12] || token[15], links) + '</'+t+'>';
- }
- // `code`:
- else if (token[16]) {
- chunk = '<code>'+encodeAttr(token[16])+'</code>';
- }
- // Inline formatting: *em*, **strong** & friends
- else if (token[17] || token[1]) {
- chunk = tag(token[17] || '--');
- }
- out += prev;
- out += chunk;
- }
-
- return (out + md.substring(last) + flush()).replace(/^\n+|\n+$/g, '');
-}
-
-
-/*************************
- * END MARKDOWN PARSER
- */
-
var search, results, allOptions, currentSet = [];
var lastUpdate = "?";
@@ -254,22 +163,11 @@ var updateOptionsTable = function(options) {
-function parseDescription(text){
-
- text = text.replace(/<https(\s*([^>]*))/gi ,'<a href="https$1">&lt;https$1</a>');
- text = text.replace(/\[\]\(#opt-(\s*([^)]*))/gi ,'<strong>$1</strong>').replace(/\)/gi,'');
- //[](#opt-wayland.windowManager.hyprland.plugins)
- text = text.replace(/\{var\}(\s*([^\n]*))/gi ,'<strong>$1</strong>').replace(/`/gi,'')
- text = text.replace(/:::\ \{\.note\}(\s*([^:::]*))/gi ,'<div class="alert alert-info" role="alert">$1</div>').replace(/:::/,'').replace(/\n/g, '<br />')
- return text;
-}
-
var expandOptionMD = function(el){
modalTitle.innerHTML = currentSet[el].title;
- let dhtml = parseMD(currentSet[el].doc);
- var elDesc = "<h5 style='margin:1em 0 0 0'>Description</h5><div>" + dhtml + "</div>";
+ var elDesc = "<h5 style='margin:1em 0 0 0'>Description</h5><div>" + currentSet[el].doc + "</div>";
var elArgs = "<h5 style='margin:1em 0 0 0'>Args</h5><div>" + currentSet[el].args.join(', ') + "</div>";
// var elNote = ( currentSet[el].note == "" ? "": "<h5 style='margin:1em 0 0 0'>Note</h5><div>" + currentSet[el].note + "</div>");
// var elDefault = "<h5 style='margin:1em 0 0 0'>Default</h5><div><pre style='margin-top:0.5em'>" + currentSet[el].default + "</pre></div>";
@@ -290,7 +188,7 @@ var expandOption = function(el){
//console.log(currentSet[el].description.replace(/:::\ \{\.note\}(\s*([^:::]*))/gi ,'<div class="alert alert-info" role="alert">$1</div>').replace(/:::/,''));
- var elDesc = "<h5 style='margin:1em 0 0 0'>Description</h5><div>" + parseDescription(currentSet[el].description) + "</div>";
+ var elDesc = "<h5 style='margin:1em 0 0 0'>Description</h5><div>" + currentSet[el].description + "</div>";
var elType = "<h5 style='margin:1em 0 0 0'>Type</h5><div>" + currentSet[el].type + "</div>";
//var elNote = ( currentSet[el].note == "" ? "": "<h5 style='margin:1em 0 0 0'>Note</h5><div>" + currentSet[el].note + "</div>");
var elDefault = ( currentSet[el].default == "" ? "" : "<h5 style='margin:1em 0 0 0'>Default</h5><div><pre style='margin-top:0.5em'>" + currentSet[el].default + "</pre></div>");
--
2.47.0

View file

@ -1,4 +1,4 @@
From d32ae9c3386ad1d896d8a54271138111b579d7e7 Mon Sep 17 00:00:00 2001 From 957189be0a61f954a1bcfb204f982f59ae6435ea Mon Sep 17 00:00:00 2001
From: catvayor <catvayor@katvayor.net> From: catvayor <catvayor@katvayor.net>
Date: Thu, 12 Dec 2024 17:04:45 +0100 Date: Thu, 12 Dec 2024 17:04:45 +0100
Subject: [PATCH 2/2] chore: remove useless dependencies Subject: [PATCH 2/2] chore: remove useless dependencies

View file

@ -0,0 +1,25 @@
From b0f6c845280bee20bcc28a136436e000bde8a457 Mon Sep 17 00:00:00 2001
From: catvayor <catvayor@katvayor.net>
Date: Mon, 16 Dec 2024 11:25:38 +0100
Subject: [PATCH] feat: separate HTML description of MD description
---
static/js/script.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/js/script.js b/static/js/script.js
index d3ec223..5d9fc6e 100644
--- a/static/js/script.js
+++ b/static/js/script.js
@@ -188,7 +188,7 @@ var expandOption = function(el){
//console.log(currentSet[el].description.replace(/:::\ \{\.note\}(\s*([^:::]*))/gi ,'<div class="alert alert-info" role="alert">$1</div>').replace(/:::/,''));
- var elDesc = "<h5 style='margin:1em 0 0 0'>Description</h5><div>" + currentSet[el].description + "</div>";
+ var elDesc = "<h5 style='margin:1em 0 0 0'>Description</h5><div>" + currentSet[el].descriptionHTML + "</div>";
var elType = "<h5 style='margin:1em 0 0 0'>Type</h5><div>" + currentSet[el].type + "</div>";
//var elNote = ( currentSet[el].note == "" ? "": "<h5 style='margin:1em 0 0 0'>Note</h5><div>" + currentSet[el].note + "</div>");
var elDefault = ( currentSet[el].default == "" ? "" : "<h5 style='margin:1em 0 0 0'>Default</h5><div><pre style='margin-top:0.5em'>" + currentSet[el].default + "</pre></div>");
--
2.47.0

View file

@ -0,0 +1,26 @@
From e31e0330b9b012b6e09f8eb6bc670e4336d1aedc Mon Sep 17 00:00:00 2001
From: catvayor <catvayor@katvayor.net>
Date: Mon, 16 Dec 2024 12:53:27 +0100
Subject: [PATCH] fix: indentation of <ul>
---
static/css/nucleus.css | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/static/css/nucleus.css b/static/css/nucleus.css
index a4674a8..9ada521 100644
--- a/static/css/nucleus.css
+++ b/static/css/nucleus.css
@@ -533,7 +533,8 @@ p {
ul, ol {
margin-top: 1.7rem;
- margin-bottom: 1.7rem; }
+ margin-bottom: 1.7rem;
+ margin-left: 1rem; }
ul ul, ul ol, ol ul, ol ol {
margin-top: 0;
margin-bottom: 0; }
--
2.47.0

View file

@ -20,6 +20,7 @@ let
attrNames attrNames
filter filter
head head
getExe
; ;
inherit (lib.strings) inherit (lib.strings)
sanitizeDerivationName sanitizeDerivationName
@ -71,21 +72,34 @@ let
name = "<${innerPath}>"; name = "<${innerPath}>";
url = "${translate-info.url}${innerPath}"; url = "${translate-info.url}${innerPath}";
}; };
result = json.generate "options-extranix.json" { result' = json.generate "options-extranix-fileDesc.json" {
last_update = "-/-"; last_update = "-/-";
options = mapAttrsToList (title: val: { options = mapAttrsToList (title: val: {
inherit title; inherit title;
inherit (val) inherit (val)
type type
readOnly readOnly
description
loc loc
description
; ;
descriptionHTML = pkgs.runCommand "option-${title}.html" { } ''
${getExe pkgs.pandoc} -f markdown ${pkgs.writeText "option-${title}.md" val.description} > $out
'';
example = val.example.text or ""; example = val.example.text or "";
default = val.default.text or ""; default = val.default.text or "";
declarations = map path-translation val.declarations; declarations = map path-translation val.declarations;
}) filtered-opts; }) filtered-opts;
}; };
result =
pkgs.runCommand "options-extranix.json"
{
nativeBuildInputs = [ pkgs.jq ];
}
''
jq -r '.options[].descriptionHTML | "--rawfile\n" + . + "\n" + .' ${result'} | xargs \
jq -c '.options |= map(.descriptionHTML as $desc | .descriptionHTML |= $ARGS.named.[$desc])' ${result'} \
> $out
'';
in in
result; result;

View file

@ -10,13 +10,15 @@ stdenv.mkDerivation {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mipmip"; owner = "mipmip";
repo = "hugo-theme-extranix-options-search"; repo = "hugo-theme-extranix-options-search";
rev = "1b5cdc63b3127ab81aed2736b0dea7ed09b7ec72"; rev = "3252b5bd98adcbbe629327d72c8416c25014a0d6";
hash = "sha256-oowopWC9JdZIex548S0W91MIPSDCaJ3isuNLfesjT9U="; hash = "sha256-XV7Js1KaBiWv9qao8iyzQ546nT1KkwCtvyAs++oeXFo=";
}; };
patches = [ patches = [
./0001-fix-pretty-no-defaults.patch ./0001-revert-don-t-parse-md-in-js.patch
./0002-chore-remove-useless-dependencies.patch ./0002-chore-remove-useless-dependencies.patch
./0003-feat-separate-HTML-description-of-MD-description.patch
./0004-fix-indentation-of-ul.patch
]; ];
installPhase = installPhase =