aboutsummaryrefslogtreecommitdiffhomepage
path: root/org
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2019-07-13 20:53:44 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2019-10-17 19:07:20 -0400
commit97b317410345d56c274ad58f044d15cb06b8eca3 (patch)
tree4b4b89c122c4bcb17ad6c724da25d2b1c1660377 /org
parentxmls, css, user-select on object-numbers & seg minitoc (diff)
xmls, css, codeblocks linenumbers
Diffstat (limited to 'org')
-rw-r--r--org/default_regex.org2
-rw-r--r--org/meta_abstraction.org3
-rw-r--r--org/output_xmls.org34
-rw-r--r--org/output_xmls_css.org77
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