diff options
| author | Ralph Amissah <ralph@amissah.com> | 2017-03-28 20:39:35 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:14 -0400 | 
| commit | 04c7fafa159760ff5ae999eb97047f271a0a549b (patch) | |
| tree | 1a9c1cf34cd032de20a9b0de224c0cbb8c75d37d | |
| parent | output, move stuff about (diff) | |
0.13.8 endnotes for various types of block
| -rw-r--r-- | org/ao_doc_abstraction.org | 59 | ||||
| -rw-r--r-- | org/defaults.org | 3 | ||||
| -rw-r--r-- | org/sdp.org | 2 | ||||
| -rw-r--r-- | src/sdp/ao_abstract_doc_source.d | 59 | ||||
| -rw-r--r-- | src/sdp/ao_rgx.d | 3 | ||||
| -rw-r--r-- | src/sdp/output_rgx.d | 3 | ||||
| -rw-r--r-- | views/version.txt | 2 | 
7 files changed, 105 insertions, 26 deletions
| diff --git a/org/ao_doc_abstraction.org b/org/ao_doc_abstraction.org index 2f7672b..355c126 100644 --- a/org/ao_doc_abstraction.org +++ b/org/ao_doc_abstraction.org @@ -864,6 +864,8 @@ if there is a blurb section you need to:  /+ within block object: group +/  } else if (type["group"] == TriState.on) {    /+ within block object: group +/ +  line = (line) +    .replaceAll(rgx.para_delimiter, mkup.br_paragraph ~ "$1");    _group_block_(line, an_object, type);    continue;  #+END_SRC @@ -874,6 +876,14 @@ if there is a blurb section you need to:  #+BEGIN_SRC d  } else if (type["block"] == TriState.on) {    /+ within block object: block +/ +  if (auto m = line.match(rgx.spaces_line_start)) { +    line = (line) +      .replaceAll(rgx.spaces_line_start, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); +  } +  if (auto m = line.match(rgx.spaces_multiple)) { +    line = (line) +      .replaceAll(rgx.spaces_multiple, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); +  }    _block_block_(line, an_object, type);    continue;  #+END_SRC @@ -1241,7 +1251,10 @@ if ((type["heading"] == State.on)  if (the_document_body_section.length > 0) {    if (((the_document_body_section[$-1].is_a == "para")      || (the_document_body_section[$-1].is_a == "heading") -    || (the_document_body_section[$-1].is_a == "group")) +    || (the_document_body_section[$-1].is_a == "quote") +    || (the_document_body_section[$-1].is_a == "group") +    || (the_document_body_section[$-1].is_a == "block") +    || (the_document_body_section[$-1].is_a == "verse"))    && (the_document_body_section.length > previous_length)) {      if ((the_document_body_section[$-1].is_a == "heading")      && (the_document_body_section[$-1].heading_lev_markup < 5)) { @@ -1249,17 +1262,36 @@ if (the_document_body_section.length > 0) {        type["glossary_section"] = State.off;        type["blurb_section"] = State.off;      } -    previous_length = the_document_body_section.length.to!int; -    if ((the_document_body_section[$-1].text).match( -      rgx.inline_notes_delimiter_al_regular_number_note -    )) { -      previous_count=(the_document_body_section.length -1).to!int; -      note_section.gather_notes_for_endnote_section( -        the_document_body_section, -        segment_anchor_tag_that_object_belongs_to, -        to!int(the_document_body_section.length-1), -      ); +    if (the_document_body_section[$-1].is_a == "verse") { +      /+ scan for endnotes for whole poem (each verse in poem) +/ +      foreach (i; previous_length .. the_document_body_section.length) { +        if (the_document_body_section[i].is_a == "verse") { +          if ((the_document_body_section[i].text).match( +            rgx.inline_notes_delimiter_al_regular_number_note +          )) { +            note_section.gather_notes_for_endnote_section( +              the_document_body_section, +              segment_anchor_tag_that_object_belongs_to, +              to!int(i), +            ); +          } +        } +      } +    } else { +      /+ scan object for endnotes +/ +      previous_length = the_document_body_section.length.to!int; +      if ((the_document_body_section[$-1].text).match( +        rgx.inline_notes_delimiter_al_regular_number_note +      )) { +        previous_count=(the_document_body_section.length -1).to!int; +        note_section.gather_notes_for_endnote_section( +          the_document_body_section, +          segment_anchor_tag_that_object_belongs_to, +          to!int(the_document_body_section.length-1), +        ); +      }      } +    previous_length = the_document_body_section.length.to!int;    }  }  #+END_SRC @@ -5914,7 +5946,10 @@ struct NotesSection {    in {      assert((contents_am[cntr].is_a == "para")      || (contents_am[cntr].is_a == "heading") -    || (contents_am[cntr].is_a == "group")); +    || (contents_am[cntr].is_a == "quote") +    || (contents_am[cntr].is_a == "group") +    || (contents_am[cntr].is_a == "block") +    || (contents_am[cntr].is_a == "verse"));      assert(cntr >= previous_count);      previous_count=cntr;      assert( diff --git a/org/defaults.org b/org/defaults.org index 25b1a4b..b666c30 100644 --- a/org/defaults.org +++ b/org/defaults.org @@ -1185,8 +1185,11 @@ template SiSUlanguageCodes() {  #+BEGIN_SRC d  static newline                                        = ctRegex!("\n", "mg");  static space                                          = ctRegex!(`[ ]`, "mg"); +static spaces_line_start                              = ctRegex!(`^(?P<opening_spaces>[ ]+)`, "mg"); +static spaces_multiple                                = ctRegex!(`(?P<multiple_spaces>[ ]{2,})`, "mg"); // could be issues for endnotes  static two_spaces                                     = ctRegex!(`[ ]{2}`, "mg");  static nbsp_char                                      = ctRegex!(`░`, "mg"); +static nbsp_chars_line_start                          = ctRegex!(`^░+`, "mg");  static nbsp_and_space                                 = ctRegex!(` [ ]`, "mg");  static nbsp_char_and_space                            = ctRegex!(`░[ ]`, "mg");  #+END_SRC diff --git a/org/sdp.org b/org/sdp.org index b1ed6ba..ff989c9 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -23,7 +23,7 @@ struct Version {    int minor;    int patch;  } -enum ver = Version(0, 13, 7); +enum ver = Version(0, 13, 8);  #+END_SRC  * 1. sdp (sisu document parser)                                         :sdp: diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d index 4b3ea1f..2a27e64 100644 --- a/src/sdp/ao_abstract_doc_source.d +++ b/src/sdp/ao_abstract_doc_source.d @@ -564,10 +564,20 @@ template SiSUdocAbstraction() {          /+ within block object: group +/          } else if (type["group"] == TriState.on) {            /+ within block object: group +/ +          line = (line) +            .replaceAll(rgx.para_delimiter, mkup.br_paragraph ~ "$1");            _group_block_(line, an_object, type);            continue;          } else if (type["block"] == TriState.on) {            /+ within block object: block +/ +          if (auto m = line.match(rgx.spaces_line_start)) { +            line = (line) +              .replaceAll(rgx.spaces_line_start, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); +          } +          if (auto m = line.match(rgx.spaces_multiple)) { +            line = (line) +              .replaceAll(rgx.spaces_multiple, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); +          }            _block_block_(line, an_object, type);            continue;          } else if (type["poem"] == TriState.on) { @@ -849,7 +859,10 @@ template SiSUdocAbstraction() {        if (the_document_body_section.length > 0) {          if (((the_document_body_section[$-1].is_a == "para")            || (the_document_body_section[$-1].is_a == "heading") -          || (the_document_body_section[$-1].is_a == "group")) +          || (the_document_body_section[$-1].is_a == "quote") +          || (the_document_body_section[$-1].is_a == "group") +          || (the_document_body_section[$-1].is_a == "block") +          || (the_document_body_section[$-1].is_a == "verse"))          && (the_document_body_section.length > previous_length)) {            if ((the_document_body_section[$-1].is_a == "heading")            && (the_document_body_section[$-1].heading_lev_markup < 5)) { @@ -857,17 +870,36 @@ template SiSUdocAbstraction() {              type["glossary_section"] = State.off;              type["blurb_section"] = State.off;            } -          previous_length = the_document_body_section.length.to!int; -          if ((the_document_body_section[$-1].text).match( -            rgx.inline_notes_delimiter_al_regular_number_note -          )) { -            previous_count=(the_document_body_section.length -1).to!int; -            note_section.gather_notes_for_endnote_section( -              the_document_body_section, -              segment_anchor_tag_that_object_belongs_to, -              to!int(the_document_body_section.length-1), -            ); +          if (the_document_body_section[$-1].is_a == "verse") { +            /+ scan for endnotes for whole poem (each verse in poem) +/ +            foreach (i; previous_length .. the_document_body_section.length) { +              if (the_document_body_section[i].is_a == "verse") { +                if ((the_document_body_section[i].text).match( +                  rgx.inline_notes_delimiter_al_regular_number_note +                )) { +                  note_section.gather_notes_for_endnote_section( +                    the_document_body_section, +                    segment_anchor_tag_that_object_belongs_to, +                    to!int(i), +                  ); +                } +              } +            } +          } else { +            /+ scan object for endnotes +/ +            previous_length = the_document_body_section.length.to!int; +            if ((the_document_body_section[$-1].text).match( +              rgx.inline_notes_delimiter_al_regular_number_note +            )) { +              previous_count=(the_document_body_section.length -1).to!int; +              note_section.gather_notes_for_endnote_section( +                the_document_body_section, +                segment_anchor_tag_that_object_belongs_to, +                to!int(the_document_body_section.length-1), +              ); +            }            } +          previous_length = the_document_body_section.length.to!int;          }        }      } /+ ← closed: loop markup document/text line by line +/ @@ -4729,7 +4761,10 @@ template SiSUdocAbstraction() {      in {        assert((contents_am[cntr].is_a == "para")        || (contents_am[cntr].is_a == "heading") -      || (contents_am[cntr].is_a == "group")); +      || (contents_am[cntr].is_a == "quote") +      || (contents_am[cntr].is_a == "group") +      || (contents_am[cntr].is_a == "block") +      || (contents_am[cntr].is_a == "verse"));        assert(cntr >= previous_count);        previous_count=cntr;        assert( diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d index deef9c6..44e1be4 100644 --- a/src/sdp/ao_rgx.d +++ b/src/sdp/ao_rgx.d @@ -185,8 +185,11 @@ template SiSUrgxInit() {         ctRegex!("(am|bg|bn|br|ca|cs|cy|da|de|el|en|eo|es|et|eu|fi|fr|ga|gl|he|hi|hr|hy|ia|is|it|ja|ko|la|lo|lt|lv|ml|mr|nl|no|nn|oc|pl|pt|pt_BR|ro|ru|sa|se|sk|sl|sq|sr|sv|ta|te|th|tk|tr|uk|ur|vi|zh)/[A-Za-z0-9._-].+?[.](?:sst|ssm)$");      static newline                                        = ctRegex!("\n", "mg");      static space                                          = ctRegex!(`[ ]`, "mg"); +    static spaces_line_start                              = ctRegex!(`^(?P<opening_spaces>[ ]+)`, "mg"); +    static spaces_multiple                                = ctRegex!(`(?P<multiple_spaces>[ ]{2,})`, "mg"); // could be issues for endnotes      static two_spaces                                     = ctRegex!(`[ ]{2}`, "mg");      static nbsp_char                                      = ctRegex!(`░`, "mg"); +    static nbsp_chars_line_start                          = ctRegex!(`^░+`, "mg");      static nbsp_and_space                                 = ctRegex!(` [ ]`, "mg");      static nbsp_char_and_space                            = ctRegex!(`░[ ]`, "mg");      static src_pth                                        = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`); diff --git a/src/sdp/output_rgx.d b/src/sdp/output_rgx.d index 3abd76a..9959590 100644 --- a/src/sdp/output_rgx.d +++ b/src/sdp/output_rgx.d @@ -6,8 +6,11 @@ template SiSUoutputRgxInit() {    struct Rgx {      static newline                                        = ctRegex!("\n", "mg");      static space                                          = ctRegex!(`[ ]`, "mg"); +    static spaces_line_start                              = ctRegex!(`^(?P<opening_spaces>[ ]+)`, "mg"); +    static spaces_multiple                                = ctRegex!(`(?P<multiple_spaces>[ ]{2,})`, "mg"); // could be issues for endnotes      static two_spaces                                     = ctRegex!(`[ ]{2}`, "mg");      static nbsp_char                                      = ctRegex!(`░`, "mg"); +    static nbsp_chars_line_start                          = ctRegex!(`^░+`, "mg");      static nbsp_and_space                                 = ctRegex!(` [ ]`, "mg");      static nbsp_char_and_space                            = ctRegex!(`░[ ]`, "mg");      static src_pth                                        = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`); diff --git a/views/version.txt b/views/version.txt index cc55b52..7ae0f62 100644 --- a/views/version.txt +++ b/views/version.txt @@ -4,4 +4,4 @@ struct Version {    int minor;    int patch;  } -enum ver = Version(0, 13, 7); +enum ver = Version(0, 13, 8); | 
