diff options
| author | Ralph Amissah <ralph@amissah.com> | 2016-11-28 20:54:26 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:13 -0400 | 
| commit | af1765cd7b2f3b1309eea5bcdb91780176518c88 (patch) | |
| tree | 7529b40e4ecdaabc10c6737486a9ce1795dfea33 /src/sdp | |
| parent | discrete objects marks, output html work in progress (diff) | |
0.9.2 backmatter: control processing, possible to omit sections
Diffstat (limited to 'src/sdp')
| -rw-r--r-- | src/sdp/ao_abstract_doc_source.d | 316 | ||||
| -rw-r--r-- | src/sdp/ao_rgx.d | 3 | 
2 files changed, 175 insertions, 144 deletions
| diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d index 51089cd..cc39ea1 100644 --- a/src/sdp/ao_abstract_doc_source.d +++ b/src/sdp/ao_abstract_doc_source.d @@ -75,9 +75,10 @@ template SiSUdocAbstraction() {      auto node_construct = NodeStructureMetadata();      /+ ↓ abstract marked up document +/      auto abstract_doc_source( -      char[][] markup_sourcefile_content, +      char[][]               markup_sourcefile_content,        string[string][string] dochead_make_aa, -      string[string][string] dochead_meta_aa +      string[string][string] dochead_meta_aa, +      bool[string]           opt_action_bool,      ) {        /+ ↓ abstraction init +/        scope(success) { @@ -214,21 +215,25 @@ template SiSUdocAbstraction() {            /+ object other than "code block" object               (includes regular text paragraph, headings & blocks other than code) +/            if ((matchFirst(line, rgx.heading_biblio) -          || (type["biblio_section"] == State.on)) +          || (type["biblio_section"] == State.on +          && (!matchFirst(line, rgx.heading_blurb_glossary))))            && (!matchFirst(line, rgx.heading))            && (!matchFirst(line, rgx.comment))) {              /+ within section (block object): biblio +/ -            _biblio_block_(line, type, bib_entry, biblio_entry_str_json, biblio_arr_json);              type["glossary_section"] = State.off;              type["biblio_section"] = State.on;              type["blurb_section"] = State.off; -            debug(bibliobuild) { -              writeln("-  ", biblio_entry_str_json); -              writeln("-> ", biblio_arr_json.length); +            if (opt_action_bool["backmatter"] && opt_action_bool["section_biblio"]) { +              _biblio_block_(line, type, bib_entry, biblio_entry_str_json, biblio_arr_json); // +              debug(bibliobuild) { +                writeln("-  ", biblio_entry_str_json); +                writeln("-> ", biblio_arr_json.length); +              }              }              continue;            } else if ((matchFirst(line, rgx.heading_glossary) -          || (type["glossary_section"] == State.on)) +          || (type["glossary_section"] == State.on +          && (!matchFirst(line, rgx.heading_biblio_blurb))))            && (!matchFirst(line, rgx.heading))            && (!matchFirst(line, rgx.comment))) {              /+ within section (block object): glossary +/ @@ -240,53 +245,56 @@ template SiSUdocAbstraction() {              type["glossary_section"] = State.on;              type["biblio_section"] = State.off;              type["blurb_section"] = State.off; -            indent=[ -              "hang_position" : 0, -              "base_position" : 0, -            ]; -            bullet = false; -            type["para"] = State.on; -            line_occur["para"] = State.off; -            an_object_key="glossary_nugget"; // -            if (matchFirst(line, rgx.heading_glossary)) { -              the_glossary_section ~= -                set_abstract_object.contents_heading( -                  "Glossary",       // nugget/object -                  "",               // attrib -                  0,                // obj_cite_number -                  [""],             // anchor tag -                  "B",              // lev -                  1,                // lev_markup_number -                  1,                // lev_collapsed_number -                ); -              the_glossary_section ~= -                set_abstract_object.contents_heading( -                  "Glossary",       // nugget/object -                  "",               // attrib -                  0,                // obj_cite_number -                  ["glossary"],     // anchor tag -                  "1",              // lev -                  4,                // lev_markup_number -                  2,                // lev_collapsed_number -                ); -            // } else if (matchFirst(line, rgx.heading)) { -            //   _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels? -            } else { -              _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur); -              the_glossary_section ~= -                set_abstract_object.contents_para( -                  "para",                    // an_object["is"], -                  to!string(line),           // an_object["substantive"], -                  "",                        // attrib -                  0,                         // obj_cite_number, -                  indent, -                  bullet -                ); +            if (opt_action_bool["backmatter"] && opt_action_bool["section_glossary"]) { +              indent=[ +                "hang_position" : 0, +                "base_position" : 0, +              ]; +              bullet = false; +              type["para"] = State.on; +              line_occur["para"] = State.off; +              an_object_key="glossary_nugget"; // +              if (matchFirst(line, rgx.heading_glossary)) { +                the_glossary_section ~= +                  set_abstract_object.contents_heading( +                    "Glossary",       // nugget/object +                    "",               // attrib +                    0,                // obj_cite_number +                    [""],             // anchor tag +                    "B",              // lev +                    1,                // lev_markup_number +                    1,                // lev_collapsed_number +                  ); +                the_glossary_section ~= +                  set_abstract_object.contents_heading( +                    "Glossary",       // nugget/object +                    "",               // attrib +                    0,                // obj_cite_number +                    ["glossary"],     // anchor tag +                    "1",              // lev +                    4,                // lev_markup_number +                    2,                // lev_collapsed_number +                  ); +              // } else if (matchFirst(line, rgx.heading)) { +              //   _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels? +              } else { +                _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur); +                the_glossary_section ~= +                  set_abstract_object.contents_para( +                    "para",                    // an_object["is"], +                    to!string(line),           // an_object["substantive"], +                    "",                        // attrib +                    0,                         // obj_cite_number, +                    indent, +                    bullet +                  ); +              } +              type["obj_cite_number_status"] = TriState.off;              } -            type["obj_cite_number_status"] = TriState.off;              continue;            } else if ((matchFirst(line, rgx.heading_blurb) -          || (type["blurb_section"] == State.on)) +          || (type["blurb_section"] == State.on +          && (!matchFirst(line, rgx.heading_biblio_glossary))))            && (!matchFirst(line, rgx.heading))            && (!matchFirst(line, rgx.comment))) {              /+ within section (block object): blurb +/ @@ -298,60 +306,63 @@ template SiSUdocAbstraction() {              type["glossary_section"] = State.off;              type["biblio_section"] = State.off;              type["blurb_section"] = State.on; -            indent=[ -              "hang_position" : 0, -              "base_position" : 0, -            ]; -            bullet = false; -            type["para"] = State.on; -            line_occur["para"] = State.off; -            an_object_key="blurb_nugget"; -            if (matchFirst(line, rgx.heading_blurb)) { -              the_blurb_section ~= -                set_abstract_object.contents_heading( -                  "Blurb",          // nugget/object -                  "",               // attrib -                  0,                // obj_cite_number -                  [""],             // anchor tag -                  "B",              // lev -                  1,                // lev_markup_number -                  1,                // lev_collapsed_number -                ); -              the_blurb_section ~= -                set_abstract_object.contents_heading( -                  "Blurb",          // nugget/object -                  "",               // attrib -                  0,                // obj_cite_number -                  ["blurb"],        // anchor tag -                  "1",              // lev -                  4,                // lev_markup_number -                  2,                // lev_collapsed_number -                ); -            } else if (matchFirst(line, rgx.heading)) { -              _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); -              the_blurb_section ~= -                set_abstract_object.contents_heading( -                  to!string(line),           //  an_object["substantive"], -                  "",                        // attrib -                  0,                         // obj_cite_number -                  [""],                      // anchor tag -                  to!string(an_object["lev"]), -                  to!int(an_object["lev_markup_number"]), -                  to!int(an_object["lev_collapsed_number"]), -                ); -            } else { -              _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur); -              the_blurb_section ~= -                set_abstract_object.contents_para( -                  "para",                    // an_object["is"], -                  to!string(line),           //  an_object["substantive"], -                  "",                        // attrib -                  obj_cite_number, -                  indent, -                  bullet -                ); +            if (opt_action_bool["backmatter"] && opt_action_bool["section_blurb"]) { +              indent=[ +                "hang_position" : 0, +                "base_position" : 0, +              ]; +              bullet = false; +              type["para"] = State.on; +              line_occur["para"] = State.off; +              an_object_key="blurb_nugget"; +              if (matchFirst(line, rgx.heading_blurb)) { +                the_blurb_section ~= +                  set_abstract_object.contents_heading( +                    "Blurb",          // nugget/object +                    "",               // attrib +                    0,                // obj_cite_number +                    [""],             // anchor tag +                    "B",              // lev +                    1,                // lev_markup_number +                    1,                // lev_collapsed_number +                  ); +                the_blurb_section ~= +                  set_abstract_object.contents_heading( +                    "Blurb",          // nugget/object +                    "",               // attrib +                    0,                // obj_cite_number +                    ["blurb"],        // anchor tag +                    "1",              // lev +                    4,                // lev_markup_number +                    2,                // lev_collapsed_number +                  ); +              } else if ((matchFirst(line, rgx.heading)) +                && (opt_action_bool["backmatter"] && opt_action_bool["section_blurb"])) { +                _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels? +                the_blurb_section ~= +                  set_abstract_object.contents_heading( +                    to!string(line),           //  an_object["substantive"], +                    "",                        // attrib +                    0,                         // obj_cite_number +                    [""],                      // anchor tag +                    to!string(an_object["lev"]), +                    to!int(an_object["lev_markup_number"]), +                    to!int(an_object["lev_collapsed_number"]), +                  ); +              } else { +                _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur); +                the_blurb_section ~= +                  set_abstract_object.contents_para( +                    "para",                    // an_object["is"], +                    to!string(line),           //  an_object["substantive"], +                    "",                        // attrib +                    obj_cite_number, +                    indent, +                    bullet +                  ); +              } +              type["obj_cite_number_status"] = TriState.off;              } -            type["obj_cite_number_status"] = TriState.off;              continue;            } else if (type["poem"] == TriState.on) {              /+ within block object: poem +/ @@ -419,7 +430,7 @@ template SiSUdocAbstraction() {                || (matchFirst(line, rgx.book_index_open))                || (type["book_index"] == State.on ))  {                  /+ book_index +/ -                _book_index_(line, book_idx_tmp, an_object, type); +                _book_index_(line, book_idx_tmp, an_object, type, opt_action_bool);                } else {                  /+ not book_index +/                  an_object_key="body_nugget"; @@ -655,15 +666,16 @@ template SiSUdocAbstraction() {        }        /+          Backmatter: -        * endnotes -        * glossary -        * references / bibliography -        * book index +        - endnotes +        - glossary +        - bibliography / references +        - book index +        - blurb        +/        // TODO FIGURE OUT, you need this possibility        // obj_im.obj_inline_markup_and_anchor_tags("doc_end_reset", an_object_key, "", dochead_make_aa);        auto en_tuple = -        note_section.endnote_objects(obj_cite_number); +        note_section.endnote_objects(obj_cite_number, opt_action_bool);        static assert(!isTypeTuple!(en_tuple));        auto the_endnotes_section = en_tuple[0];        obj_cite_number = en_tuple[1]; @@ -771,7 +783,8 @@ template SiSUdocAbstraction() {          bi.bookindex_build_section(            bookindex_unordered_hashes,            obj_cite_number, -          segment_object_belongs_to +          segment_object_belongs_to, +          opt_action_bool,          );        static assert(!isTypeTuple!(bi_tuple));        auto the_bookindex_section = bi_tuple[0]; @@ -1945,10 +1958,11 @@ template SiSUdocAbstraction() {        }      }      auto _book_index_( -      char[] line, -      ref string book_idx_tmp, +      char[]             line, +      ref string         book_idx_tmp,        ref string[string] an_object, -      ref int[string] type +      ref int[string]    type, +      bool[string]       opt_action_bool,      ) {        if (auto m = match(line, rgx.book_index)) {          /+ match book_index +/ @@ -1962,27 +1976,33 @@ template SiSUdocAbstraction() {        } else if (auto m = match(line, rgx.book_index_open))  {          /+ match open book_index +/          type["book_index"] = State.on; -        book_idx_tmp = to!string(m.captures[1]); -        debug(bookindexmatch) {                       // book index -          writefln( -            "* [bookindex] %s\n", -            book_idx_tmp, -          ); +        if (opt_action_bool["backmatter"] && opt_action_bool["section_bookindex"]) { +          book_idx_tmp = to!string(m.captures[1]); +          debug(bookindexmatch) {                       // book index +            writefln( +              "* [bookindex] %s\n", +              book_idx_tmp, +            ); +          }          }        } else if (type["book_index"] == State.on )  {          /+ book_index flag set +/          if (auto m = match(line, rgx.book_index_close))  {            type["book_index"] = State.off; -          an_object["bookindex_nugget"] = book_idx_tmp ~ to!string(m.captures[1]); -          debug(bookindexmatch) {                     // book index -            writefln( -              "* [bookindex] %s\n", -              book_idx_tmp, -            ); +          if (opt_action_bool["backmatter"] && opt_action_bool["section_bookindex"]) { +            an_object["bookindex_nugget"] = book_idx_tmp ~ to!string(m.captures[1]); +            debug(bookindexmatch) {                     // book index +              writefln( +                "* [bookindex] %s\n", +                book_idx_tmp, +              ); +            }            }            book_idx_tmp = "";          } else { -          book_idx_tmp ~= line; +          if (opt_action_bool["backmatter"] && opt_action_bool["section_bookindex"]) { +            book_idx_tmp ~= line; +          }          }        }      } @@ -3297,8 +3317,9 @@ template SiSUdocAbstraction() {        }        auto bookindex_build_section(          string[][string][string] bookindex_unordered_hashes, -        int obj_cite_number, -        string segment_object_belongs_to, +        int                      obj_cite_number, +        string                   segment_object_belongs_to, +        bool[string]             opt_action_bool,        ) {          string type;          string lev; @@ -3309,7 +3330,8 @@ template SiSUdocAbstraction() {          auto mainkeys =            bookindex_unordered_hashes.byKey.array.sort().release;          ObjComposite[][string] bookindex_section; -        if (mainkeys.length > 0) { +        if ((mainkeys.length > 0) +        && (opt_action_bool["backmatter"] && opt_action_bool["section_bookindex"])) {            string bi_tmp_seg, bi_tmp_scroll;            attrib="";            lev="B"; @@ -3455,8 +3477,8 @@ template SiSUdocAbstraction() {        auto rgx = Rgx();        private auto gather_notes_for_endnote_section(          ObjComposite[] contents_am, -        string segment_object_belongs_to, -        ulong counter +        string         segment_object_belongs_to, +        ulong          counter,        )        in {          // endnotes/ footnotes for @@ -3521,7 +3543,10 @@ template SiSUdocAbstraction() {          }          return endnotes_;        } -      private auto endnote_objects(int obj_cite_number) +      private auto endnote_objects( +        int            obj_cite_number, +        bool[string]   opt_action_bool, +      )        in {        }        body { @@ -3532,7 +3557,8 @@ template SiSUdocAbstraction() {          string lev, lev_markup_number, lev_collapsed_number;          string attrib;          int[string] indent; -        if (endnotes_["seg"].length > 0) { +        if ((endnotes_["seg"].length > 0) +        && (opt_action_bool["backmatter"] && opt_action_bool["section_endnotes"])) {            attrib="";            lev="B";            lev_markup_number="1"; @@ -3607,15 +3633,17 @@ template SiSUdocAbstraction() {                1              );          } -        foreach (i, endnote; endnotes_["seg"]) { -          attrib=""; -          the_endnotes_section["seg"] ~= -            set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]); -        } -        foreach (i, endnote; endnotes_["scroll"]) { -          attrib=""; -          the_endnotes_section["scroll"] ~= -            set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]); +        if (opt_action_bool["backmatter"] && opt_action_bool["section_endnotes"]) { +          foreach (i, endnote; endnotes_["seg"]) { +            attrib=""; +            the_endnotes_section["seg"] ~= +              set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]); +          } +          foreach (i, endnote; endnotes_["scroll"]) { +            attrib=""; +            the_endnotes_section["scroll"] ~= +              set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]); +          }          }          auto t = tuple(the_endnotes_section, obj_cite_number);          return t; diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d index f320867..aa4cd58 100644 --- a/src/sdp/ao_rgx.d +++ b/src/sdp/ao_rgx.d @@ -74,6 +74,9 @@ template RgxInit() {      static heading_biblio                                 = ctRegex!(`^:?(1)[~][!](biblio(?:graphy)?|references?)`);      static heading_glossary                               = ctRegex!(`^:?(1)[~][!](glossary)`);      static heading_blurb                                  = ctRegex!(`^:?(1)[~][!](blurb)`); +    static heading_biblio_glossary                        = ctRegex!(`^:?(?:(1)[~][!](?:(?:biblio(?:graphy)?|references?)|glossary)|[A-D1][~])`); +    static heading_biblio_blurb                           = ctRegex!(`^:?(?:(1)[~][!](?:(?:biblio(?:graphy)?|references?)|blurb)|[A-D1][~])`); +    static heading_blurb_glossary                         = ctRegex!(`^:?(?:(1)[~][!](?:blurb|glossary)|[A-D1][~])`);      static para_bullet                                    = ctRegex!(`^_[*] `);      static para_bullet_indent                             = ctRegex!(`^_([1-9])[*] `);      static para_indent                                    = ctRegex!(`^_([1-9]) `); | 
