diff options
Diffstat (limited to 'org')
-rw-r--r-- | org/default_regex.org | 2 | ||||
-rw-r--r-- | org/meta_abstraction.org | 3 | ||||
-rw-r--r-- | org/output_xmls.org | 34 | ||||
-rw-r--r-- | org/output_xmls_css.org | 77 |
4 files changed, 109 insertions, 7 deletions
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<number>\bnumber\b)`); +static code_numbering = ctRegex!(`(?P<number>\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 = " <pre class=\"codeline\">\n"; + foreach (k, _line; _block_lines) { + if (k == 1) { + _codelines ~= format(q"┃ <span class="tr first-row"><span class="th"></span><codeline>%s</codeline></span> +┃", + _line, + ); + } else { + _codelines ~= format(q"┃ <span class="tr"><span class="th"></span><codeline>%s</codeline></span> +┃", + _line, + ); + } + } + _codelines ~= " </pre>"; + } else { + _codelines = " <pre class=\"codeline\">\n"; + _codelines ~= _txt; + _codelines ~= " </pre>"; + } + return _codelines; + } if (!(obj.metainfo.identifier.empty)) { o = format(q"┃ <div class="substance"> <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label> - <pre><p class="%s" id="%s">%s</p></pre> + <p class="%s" id="%s">%s</p> </div>┃", 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"┃ <div class="substance"> - <pre><p class="%s">%s</p></pre> + <p class="%s">%s</p> </div>┃", 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 |