diff options
| author | Ralph Amissah <ralph@amissah.com> | 2017-02-28 15:26:52 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:14 -0400 | 
| commit | d28ce48b155a11bf4f313982139f4697120e2df1 (patch) | |
| tree | 5baad6cabd4787c06b539848d952f4883c174bff /org | |
| parent | 0.13.5 defaults regex reorganised; some work on (x)html output (diff) | |
work on outputs
Diffstat (limited to 'org')
| -rw-r--r-- | org/ao_doc_abstraction.org | 251 | ||||
| -rw-r--r-- | org/defaults.org | 62 | ||||
| -rw-r--r-- | org/output.org | 46 | ||||
| -rw-r--r-- | org/sdp.org | 3 | 
4 files changed, 234 insertions, 128 deletions
| diff --git a/org/ao_doc_abstraction.org b/org/ao_doc_abstraction.org index fce5c90..0074e1c 100644 --- a/org/ao_doc_abstraction.org +++ b/org/ao_doc_abstraction.org @@ -3695,6 +3695,7 @@ void _para_match_(L,O,K,I,B,T,C)(    }    auto rgx = Rgx();    if (line_occur["para"] == State.off) { +    line = font_faces_line(line);      /+ para matches +/      type["para"] = State.on;      an_object[an_object_key] ~= line;        // body_nugget @@ -3737,6 +3738,25 @@ void _para_match_(L,O,K,I,B,T,C)(  }  #+END_SRC +**** TODO text font face + +#+name: abs_functions_para +#+BEGIN_SRC d +auto font_faces_line(T)( +  return ref T  textline, +) { +  auto rgx = Rgx(); +  if (match(textline, rgx.inline_faces_line)) { +    textline = (textline) +      .replaceFirst(rgx.inline_emphasis_line,   ("*{$1}*$2")) +      .replaceFirst(rgx.inline_bold_line,       ("!{$1}!$2")) +      .replaceFirst(rgx.inline_underscore_line, ("_{$1}_$2")) +      .replaceFirst(rgx.inline_italics_line,    ("/{$1}/$2")); +  } +  return textline; +} +#+END_SRC +  *** function emitters                                            :emitters:  **** object                                                       :object:  ***** ocn                                                           :ocn: @@ -4045,7 +4065,8 @@ struct ObjInlineMarkupMunge {      }    }    body { -    obj_txt["munge"]=obj_txt_in; +    obj_txt_in = (obj_txt_in).replaceAll(rgx.two_spaces, mkup.nbsp ~ mkup.nbsp); +    obj_txt["munge"] = obj_txt_in;      return obj_txt["munge"];    }    invariant() { @@ -4328,7 +4349,7 @@ struct ObjInlineMarkup {      ObjGenericComposite comp_obj_toc;      mixin InternalMarkup;      auto mkup = InlineMarkup(); -    char[] heading_toc_ = to!(char[])(obj_["body_nugget"].dup.strip); +    char[] heading_toc_ = (obj_["substantive"].dup.strip.to!(char[])).replaceAll(rgx.inline_notes_al, "");      heading_toc_ = _clean_heading_toc_(heading_toc_);      auto attrib="";      string toc_txt_, subtoc_txt_; @@ -4446,7 +4467,8 @@ struct ObjInlineMarkup {          heading_toc_,          _anchor_tag,        ); -      lev4_subtoc[segment_anchor_tag_that_object_belongs_to] ~= obj_["lev_markup_number"] ~ "~ " ~ to!string(subtoc_txt_).strip; +      lev4_subtoc[segment_anchor_tag_that_object_belongs_to] +      ~= obj_["lev_markup_number"] ~ "~ " ~ to!string(subtoc_txt_).strip;        toc_txt_= munge.url_links(toc_txt_);        indent=[          "hang_position" : to!int(obj_["lev_markup_number"]), @@ -4489,113 +4511,128 @@ private:        static assert(is(typeof(dochead_make_aa) == string[string][string]));      }      if (dochead_make_aa["make"]["num_top"].length > 0) { -      if (!(match(munge_, rgx.heading_anchor_tag))) { -        static __gshared int heading_num_top_level=9; -        static __gshared int heading_num_depth=2; -        static __gshared int heading_num_0 = 0; -        static __gshared int heading_num_1 = 0; -        static __gshared int heading_num_2 = 0; -        static __gshared int heading_num_3 = 0; -        static __gshared string heading_number_auto_composite = ""; -        if (heading_num_top_level==9) { -          if (dochead_make_aa["make"]["num_depth"].length > 0) { -            heading_num_depth = to!uint(dochead_make_aa["make"]["num_depth"]); -          } -          switch (dochead_make_aa["make"]["num_top"]) { -          case "A": -            break; -          case "B": -            heading_num_top_level=1; -            break; -          case "C": -            heading_num_top_level=2; -            break; -          case "D": -            heading_num_top_level=3; -            break; -          case "1": -            heading_num_top_level=4; -            break; -          case "2": -            heading_num_top_level=5; -            break; -          case "3": -            heading_num_top_level=6; -            break; -          case "4": -            heading_num_top_level=7; -            break; -          default: -            break; -          } -        } -        /+ num_depth minimum 0 (1.) default 2 (1.1.1) max 3 (1.1.1.1) implement +/ -        if (heading_num_top_level > to!uint(obj_["lev_markup_number"])) { -          heading_num_0 = 0; -          heading_num_1 = 0; -          heading_num_2 = 0; -          heading_num_3 = 0; -        } else if (heading_num_top_level == to!uint(obj_["lev_markup_number"])) { -          heading_num_0 ++; -          heading_num_1 = 0; -          heading_num_2 = 0; -          heading_num_3 = 0; -        } else if (heading_num_top_level == (to!uint(obj_["lev_markup_number"]) - 1)) { -          heading_num_1 ++; -          heading_num_2 = 0; -          heading_num_3 = 0; -        } else if (heading_num_top_level == (to!uint(obj_["lev_markup_number"]) - 2)) { -          heading_num_2 ++; -          heading_num_3 = 0; -        } else if (heading_num_top_level == (to!uint(obj_["lev_markup_number"]) - 3)) { -          heading_num_3 ++; +      // if (!(match(munge_, rgx.heading_anchor_tag))) { +      static __gshared int heading_num_top_level=9; +      static __gshared int heading_num_depth=2; +      static __gshared int heading_num_0 = 0; +      static __gshared int heading_num_1 = 0; +      static __gshared int heading_num_2 = 0; +      static __gshared int heading_num_3 = 0; +      static __gshared string heading_number_auto_composite = ""; +      if (heading_num_top_level==9) { +        if (dochead_make_aa["make"]["num_depth"].length > 0) { +          heading_num_depth = to!uint(dochead_make_aa["make"]["num_depth"]);          } -        if (heading_num_3 > 0) { -          heading_number_auto_composite = -            (heading_num_depth == 3) -            ? ( to!string(heading_num_0) ~ "." ~ -                  to!string(heading_num_1) ~ "." ~ -                  to!string(heading_num_2) ~ "." ~ -                  to!string(heading_num_3) -                ) -            : ""; -        } else if (heading_num_2 > 0) { -          heading_number_auto_composite = -            ((heading_num_depth >= 2) -            && (heading_num_depth <= 3)) -            ?  ( to!string(heading_num_0) ~ "." ~ -                  to!string(heading_num_1) ~ "." ~ -                  to!string(heading_num_2) -                ) -            : ""; -        } else if (heading_num_1 > 0) { -          heading_number_auto_composite = -            ((heading_num_depth >= 1) -            && (heading_num_depth <= 3)) -            ? ( to!string(heading_num_0) ~ "." ~ -                  to!string(heading_num_1) -                ) -            : ""; -        } else if (heading_num_0 > 0) { -          heading_number_auto_composite = -            ((heading_num_depth >= 0) -            && (heading_num_depth <= 3)) -            ?  (to!string(heading_num_0)) -            : ""; -        } else { -          heading_number_auto_composite = ""; -        } -        debug(heading_number_auto) { -          writeln(heading_number_auto_composite); -        } -        if (!empty(heading_number_auto_composite)) { -          munge_=(munge_) -            .replaceFirst(rgx.heading, -              "$1~$2 " ~ heading_number_auto_composite ~ ". ") -            .replaceFirst(rgx.heading_marker_missing_tag, -              "$1~" ~ heading_number_auto_composite ~ " "); +        switch (dochead_make_aa["make"]["num_top"]) { +        case "A": +          break; +        case "B": +          heading_num_top_level=1; +          break; +        case "C": +          heading_num_top_level=2; +          break; +        case "D": +          heading_num_top_level=3; +          break; +        case "1": +          heading_num_top_level=4; +          break; +        case "2": +          heading_num_top_level=5; +          break; +        case "3": +          heading_num_top_level=6; +          break; +        case "4": +          heading_num_top_level=7; +          break; +        default: +          break;          }        } +      /+ num_depth minimum 0 (1.) default 2 (1.1.1) max 3 (1.1.1.1) implement +/ +      if ( +        heading_num_top_level +        > to!uint(obj_["lev_markup_number"]) +      ) { +        heading_num_0 = 0; +        heading_num_1 = 0; +        heading_num_2 = 0; +        heading_num_3 = 0; +      } else if ( +        heading_num_top_level +        == to!uint(obj_["lev_markup_number"]) +      ) { +        heading_num_0 ++; +        heading_num_1 = 0; +        heading_num_2 = 0; +        heading_num_3 = 0; +      } else if ( +        heading_num_top_level +        == (to!uint(obj_["lev_markup_number"]) - 1) +      ) { +        heading_num_1 ++; +        heading_num_2 = 0; +        heading_num_3 = 0; +      } else if ( +        heading_num_top_level +        == (to!uint(obj_["lev_markup_number"]) - 2) +      ) { +        heading_num_2 ++; +        heading_num_3 = 0; +      } else if ( +        heading_num_top_level +        == (to!uint(obj_["lev_markup_number"]) - 3) +      ) { +        heading_num_3 ++; +      } +      if (heading_num_3 > 0) { +        heading_number_auto_composite = +          (heading_num_depth == 3) +          ? ( to!string(heading_num_0) ~ "." +              ~ to!string(heading_num_1) ~ "." +              ~ to!string(heading_num_2) ~ "." +              ~ to!string(heading_num_3) +            ) +          : ""; +      } else if (heading_num_2 > 0) { +        heading_number_auto_composite = +          ((heading_num_depth >= 2) +          && (heading_num_depth <= 3)) +          ?  ( to!string(heading_num_0) ~ "." +               ~ to!string(heading_num_1) ~ "." +               ~ to!string(heading_num_2) +             ) +          : ""; +      } else if (heading_num_1 > 0) { +        heading_number_auto_composite = +          ((heading_num_depth >= 1) +          && (heading_num_depth <= 3)) +          ? ( to!string(heading_num_0) ~ "." +               ~ to!string(heading_num_1) +             ) +          : ""; +      } else if (heading_num_0 > 0) { +        heading_number_auto_composite = +          ((heading_num_depth >= 0) +          && (heading_num_depth <= 3)) +          ?  (to!string(heading_num_0)) +          : ""; +      } else { +        heading_number_auto_composite = ""; +      } +      debug(heading_number_auto) { +        writeln(heading_number_auto_composite); +      } +      if (!(match(munge_, rgx.heading_anchor_tag)) +      && !empty(heading_number_auto_composite)) { +        munge_=(munge_) +        .replaceFirst(rgx.heading, +          "$1~$2 " ~ heading_number_auto_composite ~ ". ") +        .replaceFirst(rgx.heading_marker_missing_tag, +          "$1~" ~ heading_number_auto_composite ~ " "); +      }      }      return munge_;    } diff --git a/org/defaults.org b/org/defaults.org index 5ba63df..03eecb0 100644 --- a/org/defaults.org +++ b/org/defaults.org @@ -705,21 +705,6 @@ static block_curly_table_open                         = ctRegex!(`^(table[{].*?$  static block_curly_table_close                        = ctRegex!(`^([}]table)`);  #+END_SRC -*** inline markup font face mod                          :inline:font:face: - -#+name: ao_rgx -#+BEGIN_SRC d -/+ inline markup font face mod +/ -static inline_emphasis                                = ctRegex!(`\*\{(?P<text>.+?)\}\*`); -static inline_bold                                    = ctRegex!(`!\{(?P<text>.+?)\}!`); -static inline_italics                                 = ctRegex!(`/\{(?P<text>.+?)\}/`); -static inline_superscript                             = ctRegex!(`\^\{(?P<text>.+?)\}\^`); -static inline_subscript                               = ctRegex!(`,\{(?P<text>.+?)\},`); -static inline_strike                                  = ctRegex!(`-\{(?P<text>.+?)\}-`); -static inline_insert                                  = ctRegex!(`\+\{(?P<text>.+?)\}\+`); -static inline_mono                                    = ctRegex!(`#\{(?P<text>.+?)\}#`); -#+END_SRC -  *** inline markup footnotes endnotes                      :inline:footnote:  #+name: ao_rgx @@ -750,7 +735,7 @@ static note_ref                                       = ctRegex!(`^\S+?noteref_(  #+name: ao_rgx  #+BEGIN_SRC d -static inline_url_generic                              = ctRegex!(`(?:^|[}(\[ ])(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_]`, "mg"); +static inline_url_generic                              = ctRegex!(`(?:^|[}(\[ ])(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_#]`, "mg");  static inline_url                                      = ctRegex!(`((?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_]\S*)`, "mg");  static inline_link_naked_url                           = ctRegex!(`(?P<before>^|[ ])(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?P<after>[.,;:?!'"]?(?:[ ]|$))`, "mg");  static inline_link_markup_regular                      = ctRegex!(`(?P<before>^|[ ])\{\s*(?P<content>.+?)\s*\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?P<after>[.,;:?!]?(?:[ ]|$))`, "mg"); @@ -1023,10 +1008,22 @@ template SiSUoutputRgxInit() {    private import defaults;    struct Rgx {      <<prgmkup_rgx>> +    <<sp_ch_xhtml_rgx>>    }  }  #+END_SRC +*** special characters +**** xhtml special characters + +#+name: sp_ch_xhtml_rgx +#+BEGIN_SRC d +static xhtml_ampersand                            = ctRegex!(`[&]`);      // & +static xhtml_less_than                            = ctRegex!(`[<]`);      // < +static xhtml_greater_than                         = ctRegex!(`[>]`);      // > +static xhtml_line_break                           = ctRegex!(` [\\]{2}`); // <br /> +#+END_SRC +  * 2. defaults shared by ao & output (generic)  ** 0. defaults                                                    :defaults:  *** template: internal markup                                      :markup: @@ -1155,6 +1152,16 @@ template SiSUlanguageCodes() {  ** 1. ctRegex                                                        :regex: +*** misc generic + +#+name: prgmkup_rgx +#+BEGIN_SRC d +static newline                                        = ctRegex!("\n", "mg"); +static space                                          = ctRegex!(`[ ]`, "mg"); +static two_spaces                                     = ctRegex!(`[ ]{2}`, "mg"); +static nbsp_char                                      = ctRegex!(`░`, "mg"); +#+END_SRC +  *** filename (and path) matching (including markup insert file) :insert:file:path:filename:  #+name: prgmkup_rgx @@ -1200,6 +1207,29 @@ static inline_seg_link                                = ctRegex!(`(¤)(?:.+?)\.f  static mark_internal_site_lnk                         = ctRegex!(`¤`, "mg");  #+END_SRC +*** TODO inline markup font face mod                     :inline:font:face: + +#+name: prgmkup_rgx +#+BEGIN_SRC d +/+ inline markup font face mod +/ +static inline_faces                                   = ctRegex!(`(?P<markup>(?P<mod>[*!_^,+#-])\{(?P<text>.+?)\}[*!_^,+#-])`, "mg"); +static inline_emphasis                                = ctRegex!(`\*\{(?P<text>.+?)\}\*`, "mg"); +static inline_bold                                    = ctRegex!(`!\{(?P<text>.+?)\}!`, "mg"); +static inline_underscore                              = ctRegex!(`_\{(?P<text>.+?)\}_`, "mg"); +static inline_italics                                 = ctRegex!(`/\{(?P<text>.+?)\}/`, "mg"); +static inline_superscript                             = ctRegex!(`\^\{(?P<text>.+?)\}\^`, "mg"); +static inline_subscript                               = ctRegex!(`,\{(?P<text>.+?)\},`, "mg"); +static inline_strike                                  = ctRegex!(`-\{(?P<text>.+?)\}-`, "mg"); +static inline_insert                                  = ctRegex!(`\+\{(?P<text>.+?)\}\+`, "mg"); +static inline_mono                                    = ctRegex!(`#\{(?P<text>.+?)\}#`, "mg"); +static inline_cite                                    = ctRegex!(`"\{(?P<text>.+?)\}"`, "mg"); +static inline_faces_line                              = ctRegex!(`^[*!/_]_ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`); +static inline_emphasis_line                           = ctRegex!(`^\*_ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`); +static inline_bold_line                               = ctRegex!(`^!_ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`); +static inline_italics_line                            = ctRegex!(`^/_ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`); +static inline_underscore_line                         = ctRegex!(`^__ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`); +#+END_SRC +  * +set colors for terminal+ (unused)                          :colors:terminal:  #+name: ao_ansi_colors diff --git a/org/output.org b/org/output.org index 8ad43d9..bda3325 100644 --- a/org/output.org +++ b/org/output.org @@ -272,6 +272,40 @@ template outputXHTMLs() {  #+END_SRC  **** misc +***** special characters + +#+name: xhtml_format_objects +#+BEGIN_SRC d +string special_characters(string _txt){ +  _txt = (_txt) +    .replaceAll(rgx.xhtml_ampersand,    "&") +    .replaceAll(rgx.xhtml_less_than,    "<") +    .replaceAll(rgx.xhtml_greater_than, ">") +    .replaceAll(rgx.xhtml_line_break,   "<br />"); +  return _txt; +} +#+END_SRC + +***** font_face + +#+name: xhtml_format_objects +#+BEGIN_SRC d +string font_face(string _txt){ +  _txt = (_txt) +    .replaceAll(rgx.inline_emphasis,    ("<emph>$1</emph>")) +    .replaceAll(rgx.inline_bold,        ("<b>$1</b>")) +    .replaceAll(rgx.inline_underscore,  ("<u>$1</u>")) +    .replaceAll(rgx.inline_italics,     ("<i>$1</i>")) +    .replaceAll(rgx.inline_superscript, ("<sup>$1</sup>")) +    .replaceAll(rgx.inline_subscript,   ("<sub>$1</sub>")) +    .replaceAll(rgx.inline_strike,      ("<del>$1</del>")) +    .replaceAll(rgx.inline_insert,      ("<ins>$1</ins>")) +    .replaceAll(rgx.inline_mono,        ("<tt>$1</tt>")) +    .replaceAll(rgx.inline_cite,        ("<cite>$1</cite>")); +  return _txt; +} +#+END_SRC +  ***** anchor tags  #+name: xhtml_format_objects @@ -536,6 +570,7 @@ auto inline_markup_scroll(O)(    string                   _suffix = ".html",  ) {    string _txt = obj.text; +  _txt = special_characters(_txt);    _txt = inline_links(obj, _txt, _suffix, "scroll");    _txt = inline_notes_scroll(obj, _txt);    return _txt; @@ -551,6 +586,7 @@ auto inline_markup_seg(O)(    string                   _suffix = ".html",  ) {    string _txt = obj.text; +  _txt = special_characters(_txt);    _txt = inline_links(obj, _txt, _suffix, "seg");    auto t = inline_notes_seg(obj, _txt);    return t; @@ -671,7 +707,9 @@ auto para(O)(    string                     _txt,  ) {    auto tags = _xhtml_anchor_tags(obj.anchor_tags); +  _txt = font_face(_txt);    string o; +  _txt = (obj.bullet) ? ("●  " ~ _txt) : _txt;    if (obj.obj_cite_number.empty) {      o = format(q"¶  <div class="substance">    <p class="%s" indent="h%si%s">%s @@ -802,6 +840,10 @@ auto endnote(O)(      auto code(O)(        auto return ref const O  obj,      ) { +      string _txt = obj.text; +      _txt = (_txt) +        .replaceAll(rgx.newline, "<br>\n") +        .replaceAll(rgx.nbsp_char, " ");        string o;        if (obj.obj_cite_number.empty) {            o = format(q"¶  <div class="substance"> @@ -810,7 +852,7 @@ auto endnote(O)(        </p>      </div>¶",            obj.is_a, -          obj.text +          _txt          );        } else {          o = format(q"¶  <div class="substance"> @@ -823,7 +865,7 @@ auto endnote(O)(            obj.obj_cite_number,            obj.is_a,            obj.obj_cite_number, -          obj.text +          _txt          );        }        return o; diff --git a/org/sdp.org b/org/sdp.org index 3700bfc..ce0aa0d 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -676,15 +676,12 @@ foreach (k; doc_matters.keys_seq_seg) {  #+name: ao_abstraction_summary  #+BEGIN_SRC d -// auto char_repeat_number = doc_matters.source_filename.length; -// char_repeat_number = (char_repeat_number > 33)  auto min_repeat_number = 66;  auto char_repeat_number = (doc_matters.dochead_meta["title"]["full"].length    + doc_matters.dochead_meta["creator"]["author"].length + 4);  char_repeat_number = (char_repeat_number > min_repeat_number)  ? char_repeat_number  : min_repeat_number; -// writeln(char_repeat_number);  writefln(    "%s\n\"%s\", %s\n%s\n%s\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n(%s: %s)\n%s",    markup.repeat_character_by_number_provided("-", char_repeat_number), | 
