From 97b317410345d56c274ad58f044d15cb06b8eca3 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sat, 13 Jul 2019 20:53:44 -0400 Subject: xmls, css, codeblocks linenumbers --- org/default_regex.org | 2 +- org/meta_abstraction.org | 3 ++ org/output_xmls.org | 34 ++++++++++++++++++--- org/output_xmls_css.org | 77 ++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 109 insertions(+), 7 deletions(-) (limited to 'org') diff --git a/org/default_regex.org b/org/default_regex.org index e0ec4d3..575db42 100644 --- a/org/default_regex.org +++ b/org/default_regex.org @@ -196,7 +196,7 @@ static block_curly_table_special_markup = ctRegex!(`^[{]table[(](? #+name: meta_rgx #+BEGIN_SRC d -static code_numbering = ctRegex!(`(?P\bnumber\b)`); +static code_numbering = ctRegex!(`(?P\blinenumber\b|\bnumber\b|\blnr\b)`); #+END_SRC **** table diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org index 9257725..6408866 100644 --- a/org/meta_abstraction.org +++ b/org/meta_abstraction.org @@ -4297,6 +4297,7 @@ string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( "code block status: closed" ); assertions_flag_types_block_status_none_or_closed(obj_type_status); + static auto rgx = Rgx(); #+END_SRC ****** make: quote block @@ -4554,6 +4555,7 @@ string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( comp_obj_code.metainfo.object_number_type = obj_cite_digits.type; comp_obj_code.metainfo.syntax = an_object["syntax"]; comp_obj_code.metainfo.attrib = an_object["attrib"]; + comp_obj_code.code_block.linenumbers = (an_object["attrib"].match(rgx.code_numbering)) ? true : false; comp_obj_code.tags.html_segment_anchor_tag_is = tag_in_seg["seg_lv4"]; comp_obj_code.tags.epub_segment_anchor_tag_is = tag_in_seg["seg_lv1_to_4"]; comp_obj_code.text = an_object["substantive"]; @@ -7747,6 +7749,7 @@ struct DocObj_Table_ { #+BEGIN_SRC d struct DocObj_CodeBlock_ { string syntax = ""; + bool linenumbers = false; } #+END_SRC diff --git a/org/output_xmls.org b/org/output_xmls.org index 942897e..0a57127 100644 --- a/org/output_xmls.org +++ b/org/output_xmls.org @@ -1374,23 +1374,49 @@ string code(O,M)( assert(obj.metainfo.is_of_type == "block"); assert(obj.metainfo.is_a == "code"); string o; + string codelines(string _txt) { + string _codelines; + if (obj.code_block.linenumbers) { + string[] _block_lines = (_txt).split(rgx.br_newlines_linebreaks); + _codelines = "
\n";
+      foreach (k, _line; _block_lines) {
+        if (k == 1) {
+          _codelines ~= format(q"┃    %s
+┃",
+            _line,
+          );
+        } else {
+          _codelines ~= format(q"┃    %s
+┃",
+            _line,
+          );
+        }
+      }
+      _codelines ~= "  
"; + } else { + _codelines = "
\n";
+      _codelines ~= _txt;
+      _codelines ~= "  
"; + } + return _codelines; + } if (!(obj.metainfo.identifier.empty)) { o = format(q"┃
-

%s

+

%s

┃", obj.metainfo.identifier, (doc_matters.opt.action.ocn_off) ? "" : ((obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier), obj.metainfo.is_a, obj.metainfo.identifier, - _txt + codelines(_txt) ); } else { o = format(q"┃
-

%s

+

%s

┃", obj.metainfo.is_a, - _txt + codelines(_txt) ); } return o; diff --git a/org/output_xmls_css.org b/org/output_xmls_css.org index 18eaa86..da374cf 100644 --- a/org/output_xmls_css.org +++ b/org/output_xmls_css.org @@ -324,7 +324,14 @@ template DocReformCss() { clear : both; color : #555555; } - p.code { + pre.codeline { + display : table; + clear : both; + table-layout : fixed; + margin-left : 5%%; + margin-right : 5%%; + width : 90%%; + white-space : pre-wrap; border-style : none; border-radius : 5px 5px 5px 5px; box-shadow : 0 2px 5px #AAAAAA inset; @@ -342,6 +349,36 @@ template DocReformCss() { font-size : 95%%; line-height : 100%%; } + pre.codeline::before { + counter-reset : linenum; + } + pre.codeline span.tr { + display : table-row; + counter-increment : linenum; + } + pre.codeline span.th { + display : table-cell; + user-select : none; + -moz-user-select : none; + -webkit-user-select : none; + padding : 0.5em 0.5em; + /* background-color : #666666; */ + } + pre.codeline span.th::before { + content : counter(linenum) "."; + color : #999999; + text-align : right; + display : block; + } + pre.codeline span.th { + width : 4em; + } + pre.codeline code { + display : table-cell; + } + p.code { + border-style : none; + } #+END_SRC ***** paragraph general @@ -1197,7 +1234,14 @@ Consider what if anything should be used here clear : both; color : #555555; } - p.code { + pre.codeline { + display : table; + clear : both; + table-layout : fixed; + margin-left : 5%%; + margin-right : 5%%; + width : 90%%; + white-space : pre-wrap; border-style : none; border-radius : 5px 5px 5px 5px; box-shadow : 0 2px 5px #AAAAAA inset; @@ -1215,6 +1259,35 @@ Consider what if anything should be used here font-size : 95%%; line-height : 100%%; } + pre.codeline::before { + counter-reset : linenum; + } + pre.codeline span.tr { + display : table-row; + counter-increment : linenum; + } + pre.codeline span.th { + display : table-cell; + user-select : none; + -moz-user-select : none; + -webkit-user-select : none; + padding : 0.5em 0.5em; + } + pre.codeline span.th::before { + content : counter(linenum) "."; + color : #999999; + text-align : right; + display : block; + } + pre.codeline span.th { + width : 4em; + } + pre.codeline code { + display : table-cell; + } + p.code { + border-style : none; + } #+END_SRC ***** paragraph general -- cgit v1.2.3