aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-10-07 12:59:49 -0400
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:13 -0400
commitdeac702d85c5bbe68a8acf762a01939028e65320 (patch)
treecafade712e0198441517054ee3898d65eedb8fac /src
parentintroduce a couple of unittests some re-organizing of obt (diff)
0.7.1 re-arranging for unittests; tuple tests; read in files; obt
Diffstat (limited to 'src')
-rwxr-xr-xsrc/sdp.d37
-rw-r--r--src/sdp/ao_abstract_doc_source.d38
-rw-r--r--src/sdp/ao_conf_make_meta.d1
-rw-r--r--src/sdp/ao_conf_make_meta_native.d2
-rw-r--r--src/sdp/ao_conf_make_meta_sdlang.d2
-rw-r--r--src/sdp/ao_read_source_files.d40
6 files changed, 48 insertions, 72 deletions
diff --git a/src/sdp.d b/src/sdp.d
index 62e2e8f..24c85bc 100755
--- a/src/sdp.d
+++ b/src/sdp.d
@@ -1,7 +1,6 @@
#!/usr/bin/env rdmd
/+
sdp
- sdp.d
+/
/+ sdp: sisu document parser, see http://sisudoc.org +/
import
@@ -181,35 +180,37 @@ void main(string[] args) {
"not a sisu markup filename"
);
/+ ↓ read file +/
- auto header_and_content_tuple = raw.sourceContent(fn_src);
- static assert(!isTypeTuple!(header_and_content_tuple));
- auto header = header_and_content_tuple[0];
- auto sourcefile_content = header_and_content_tuple[1];
- debug(header_and_content) {
+ auto read_in_file_string = raw.sourceContent(fn_src);
+ /+ ↓ file tuple of header and content +/
+ auto header_and_body_tuple = raw.sourceContentSplitIntoHeaderAndBody(read_in_file_string, fn_src);
+ auto header = header_and_body_tuple[0];
+ auto content_body = header_and_body_tuple[1];
+ debug(header_and_body) {
writeln(header);
- writeln(header_and_content_tuple.length);
- writeln(sourcefile_content[0]);
+ writeln(header_and_body_tuple.length);
+ writeln(content_body[0]);
}
+ /+ ↓ split header into make and meta +/
auto header_make_and_meta_tuple = head.headerContentAA(header, conf_doc_make_aa);
static assert(!isTypeTuple!(header_make_and_meta_tuple));
- string[string][string] dochead_make_aa = header_make_and_meta_tuple[0];
- string[string][string] dochead_meta_aa = header_make_and_meta_tuple[1];
- /+ ↓ process document, return abstraction as tuple +/
- auto t = abs.abstract_doc_source(sourcefile_content, dochead_make_aa, dochead_meta_aa);
+ string[string][string] dochead_make = header_make_and_meta_tuple[0];
+ string[string][string] dochead_meta = header_make_and_meta_tuple[1];
+ /+ ↓ document abstraction: process document, return abstraction as tuple +/
+ auto t = abs.abstract_doc_source(content_body, dochead_make, dochead_meta);
static assert(!isTypeTuple!(t));
auto doc_ao_contents = t[0]; // contents ~ endnotes ~ bookindex;
// static assert(!isIterable!(doc_ao_contents));
auto doc_ao_bookindex_unordered_hashes = t[1];
auto doc_ao_biblio = t[2];
// destroy(t);
- /+ ↓ document parts +/
+ /+ ↓ debugs +/
debug(checkdoc) { // checkbook & dumpdoc
dbg.abstract_doc_source_debugs(
doc_ao_contents,
doc_ao_bookindex_unordered_hashes,
doc_ao_biblio,
- dochead_make_aa,
- dochead_meta_aa,
+ dochead_make,
+ dochead_meta,
fn_src,
opt_action_bool
);
@@ -219,8 +220,8 @@ void main(string[] args) {
doc_ao_contents,
doc_ao_bookindex_unordered_hashes,
doc_ao_biblio,
- dochead_make_aa,
- dochead_meta_aa,
+ dochead_make,
+ dochead_meta,
fn_src,
opt_action_bool
);
@@ -231,7 +232,7 @@ void main(string[] args) {
fn_src
);
}
- destroy(sourcefile_content);
+ destroy(content_body);
destroy(t);
destroy(doc_ao_contents);
// destroy(doc_ao_make_aa);
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index 5423513..d97b1b0 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -2064,7 +2064,6 @@ template SiSUdocAbstraction() {
}
}
struct ObjInlineMarkup {
- // struct ObjInlineMarkup : AssertObjInlineMarkup {
auto munge = ObjInlineMarkupMunge();
string[string] obj_txt;
auto obj_inline_markup_and_anchor_tags(string[string] obj_, string[string][string] dochead_make_aa)
@@ -2078,7 +2077,7 @@ template SiSUdocAbstraction() {
switch (obj_["is"]) {
case "heading":
static __gshared string anchor_tag = "";
- // WORK ON, you still need to ensure that level 1 anchor_tags are unique
+ // TODO WORK ON, you still need to ensure that level 1 anchor_tags are unique
obj_txt["munge"]=_configured_auto_heading_numbering_and_segment_anchor_tags(obj_txt["munge"], obj_, dochead_make_aa);
obj_txt["munge"]=_make_segment_anchor_tags_if_none_provided(obj_txt["munge"], obj_["lev"]);
if (auto m = match(obj_txt["munge"], rgx.heading_anchor_tag)) {
@@ -2737,41 +2736,6 @@ template SiSUdocAbstraction() {
auto t = tuple(bookindex_section, obj_cite_number);
return t;
}
- auto bookindex_build_section_(
- string[][string][string] bookindex_unordered_hashes
- ) {
- auto mainkeys =
- bookindex_unordered_hashes.byKey.array.sort().release;
- string bi_tmp;
- string[] bookindex_section;
- // int bi_num;
- // writeln(mainkeys.length);
- foreach (mainkey; mainkeys) {
- bi_tmp = "_0_1 !{" ~ mainkey ~ "}! ";
- foreach (ref_; bookindex_unordered_hashes[mainkey]["_a"]) {
- auto go = replaceAll(ref_, rgx.book_index_go, "$1");
- bi_tmp ~= " {" ~ ref_ ~ "}#" ~ go ~ ", ";
- }
- bi_tmp ~= " \\\\\n ";
- bookindex_unordered_hashes[mainkey].remove("_a");
- auto subkeys =
- bookindex_unordered_hashes[mainkey].byKey.array.sort().release;
- foreach (subkey; subkeys) {
- bi_tmp ~= subkey ~ ", ";
- // bi_tmp ~= " " ~ subkey ~ ", ";
- foreach (ref_; bookindex_unordered_hashes[mainkey][subkey]) {
- auto go = replaceAll(ref_, rgx.book_index_go, "$1");
- bi_tmp ~= " {" ~ ref_ ~ "}#" ~ go ~ ", ";
- }
- bi_tmp ~= " \\\\\n ";
- ++skn;
- }
- bi_tmp = replaceFirst(bi_tmp, rgx.trailing_linebreak, "");
- bookindex_section ~= bi_tmp;
- ++mkn;
- }
- return bookindex_section;
- }
}
struct NotesSection {
string object_notes;
diff --git a/src/sdp/ao_conf_make_meta.d b/src/sdp/ao_conf_make_meta.d
index 5bc9694..4056914 100644
--- a/src/sdp/ao_conf_make_meta.d
+++ b/src/sdp/ao_conf_make_meta.d
@@ -24,6 +24,7 @@ template SiSUheaderExtractHub() {
? (head_native.headerNativeToAA(header_src))
: (head_sdlang.headerSDLangToAA(header_src, conf_doc_make_aa));
static assert(!isTypeTuple!(header_make_and_meta_tuple));
+ static assert(header_make_and_meta_tuple.length==2);
return header_make_and_meta_tuple;
}
}
diff --git a/src/sdp/ao_conf_make_meta_native.d b/src/sdp/ao_conf_make_meta_native.d
index f70a7bf..1242565 100644
--- a/src/sdp/ao_conf_make_meta_native.d
+++ b/src/sdp/ao_conf_make_meta_native.d
@@ -209,7 +209,7 @@ template SiSUheaderExtractNative() {
}
}
auto t = tuple(dochead_meta, dochead_make);
- static assert(!isTypeTuple!(t));
+ static assert(t.length==2);
return t;
}
private auto native_header_extract(
diff --git a/src/sdp/ao_conf_make_meta_sdlang.d b/src/sdp/ao_conf_make_meta_sdlang.d
index 61b4960..3855e7c 100644
--- a/src/sdp/ao_conf_make_meta_sdlang.d
+++ b/src/sdp/ao_conf_make_meta_sdlang.d
@@ -237,7 +237,7 @@ template SiSUheaderExtractSDLang() {
dochead_make = sdlangToAAmake(dochead_make, header_sdlang);
auto dochead_meta = sdlangToAAmake(meta_aa, header_sdlang);
auto t = tuple(dochead_make, dochead_meta);
- static assert(!isTypeTuple!(t));
+ static assert(t.length==2);
return t;
}
private auto headerSDLangToAA(char[] header_sdlang_src, string[string][string] conf_doc_make_aa) {
diff --git a/src/sdp/ao_read_source_files.d b/src/sdp/ao_read_source_files.d
index 5aef05d..3fd070d 100644
--- a/src/sdp/ao_read_source_files.d
+++ b/src/sdp/ao_read_source_files.d
@@ -15,22 +15,28 @@ template SiSUmarkupRaw() {
mixin RgxInit;
auto rgx = Rgx();
struct MarkupRaw {
- auto sourceContent(in string fn_src) {
+ final sourceContent(in string fn_src) {
+ auto raw = MarkupRawUnit();
+ auto source_txt_str =
+ raw.markupSourceReadIn(fn_src);
+ return source_txt_str;
+ }
+ final auto sourceContentSplitIntoHeaderAndBody(in string source_txt_str, in string fn_src="") {
auto raw = MarkupRawUnit();
auto t =
- raw.markupSourceHeaderContentRawLineTupleArray(fn_src, rgx.src_pth);
+ raw.markupSourceHeaderContentRawLineTupleArray(source_txt_str);
auto header_raw = t[0];
- auto sourcefile_content = t[1];
- if (match(fn_src, rgx.src_fn_master)) {
+ auto sourcefile_body_content = t[1];
+ if (match(fn_src, rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise
auto ins = Inserts();
- sourcefile_content =
- ins.scan_master_src_for_insert_files_and_import_content(sourcefile_content, fn_src);
- // auto ins = SiSUdocInserts.Inserts();
+ sourcefile_body_content =
+ ins.scan_master_src_for_insert_files_and_import_content(sourcefile_body_content, fn_src);
}
t = tuple(
header_raw,
- sourcefile_content
+ sourcefile_body_content
);
+ static assert(t.length==2);
return t;
}
}
@@ -90,12 +96,16 @@ template SiSUmarkupRaw() {
split(cast(char[]) src_text, rgx.line_delimiter);
return source_line_arr;
}
- auto markupSourceHeaderContentRawLineTupleArray(in string fn_src, Regex!(char) rgx_file ) {
+ auto markupSourceReadIn(in string fn_src) {
+ auto rgx = Rgx();
enforce(
- match(fn_src, rgx_file),
+ match(fn_src, rgx.src_pth),
"not a sisu markup filename"
);
auto source_txt_str = readInMarkupSource(fn_src);
+ return source_txt_str;
+ }
+ auto markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) {
auto hc = header0Content1(source_txt_str);
auto header = hc[0];
char[] la;
@@ -108,7 +118,7 @@ template SiSUmarkupRaw() {
);
return t;
}
- final char[][] markupSourceContentRawLineArray(in string fn_src, Regex!(char) rgx_file ) {
+ final char[][] getInsertMarkupSourceContentRawLineArray(in string fn_src, Regex!(char) rgx_file) {
enforce(
match(fn_src, rgx_file),
"not a sisu markup filename"
@@ -178,7 +188,7 @@ template SiSUmarkupRaw() {
to!string(markup_src_file_path ~ insert_sub_pth ~ insert_fn);
auto raw = MarkupRawUnit();
auto markup_sourcesubfile_insert_content =
- raw.markupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
+ raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
debug(insert) { // insert file
tell_l("red", line);
tell_l("red", fn_src_insert);
@@ -207,7 +217,7 @@ template SiSUmarkupRaw() {
return contents_insert;
}
auto scan_master_src_for_insert_files_and_import_content(
- char[][] sourcefile_content,
+ char[][] sourcefile_body_content,
string fn_src
) {
mixin SiSUrgxInitFlags;
@@ -215,7 +225,7 @@ template SiSUmarkupRaw() {
auto type = flags_type_init;
auto fn_pth_full = match(fn_src, rgx.src_pth);
auto markup_src_file_path = fn_pth_full.captures[1];
- foreach (line; sourcefile_content) {
+ foreach (line; sourcefile_body_content) {
if (type["curly_code"] == 1) {
if (matchFirst(line, rgx.block_curly_code_close)) {
type["curly_code"] = 0;
@@ -246,7 +256,7 @@ template SiSUmarkupRaw() {
// raw.markupSourceHeaderContentRawLineTupleArray(fn_src, rgx.src_pth);
}
auto markup_sourcefile_insert_content =
- raw.markupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
+ raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
debug(insert) { // insert file
tell_l("red", line);
tell_l("red", fn_src_insert);