diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2019-07-13 20:53:44 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2019-10-17 19:07:20 -0400 | 
| commit | 97b317410345d56c274ad58f044d15cb06b8eca3 (patch) | |
| tree | 4b4b89c122c4bcb17ad6c724da25d2b1c1660377 /org | |
| parent | xmls, css, user-select on object-numbers & seg minitoc (diff) | |
xmls, css, codeblocks linenumbers
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  | 
