aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/ao/read_source_files.d
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-07-13 07:44:03 -0400
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit22cea68385b57a1593f5751e49cfdd41d8067997 (patch)
tree9e61339eb58679977c24962b1cfd2f50aa7f2998 /src/sdp/ao/read_source_files.d
parentsdl extract and composite conf (make) (diff)
0.18.0 rename meta from ao (considered adr)
Diffstat (limited to 'src/sdp/ao/read_source_files.d')
-rw-r--r--src/sdp/ao/read_source_files.d294
1 files changed, 0 insertions, 294 deletions
diff --git a/src/sdp/ao/read_source_files.d b/src/sdp/ao/read_source_files.d
deleted file mode 100644
index db20cfd..0000000
--- a/src/sdp/ao/read_source_files.d
+++ /dev/null
@@ -1,294 +0,0 @@
-/++
- module ao_read_source_files;<BR>
- - open markup files<BR>
- - if master file scan for addional files to import/insert
-+/
-module sdp.ao.read_source_files;
-template SiSUrawMarkupContent() {
- import
- sdp.ao.rgx;
- import
- sdp.ao,
- std.file,
- std.path;
- mixin SiSUrgxInit;
- auto rgx = Rgx();
- auto rawsrc = RawMarkupContent();
- auto SiSUrawMarkupContent(Fn)(Fn fn_src) {
- auto _0_header_1_body_content_2_insert_filelist_tuple =
- rawsrc.sourceContentSplitIntoHeaderAndBody(rawsrc.sourceContent(fn_src), fn_src);
- return _0_header_1_body_content_2_insert_filelist_tuple;
- }
- struct RawMarkupContent {
- 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();
- string[] insert_file_list;
- auto t =
- raw.markupSourceHeaderContentRawLineTupleArray(source_txt_str);
- auto header_raw = t[0];
- auto sourcefile_body_content = t[1];
- if (fn_src.match(rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise
- auto ins = Inserts();
- auto tu =
- ins.scan_master_src_for_insert_files_and_import_content(sourcefile_body_content, fn_src);
- static assert(!isTypeTuple!(tu));
- sourcefile_body_content = tu[0];
- insert_file_list = tu[1].dup;
- }
- t = tuple(
- header_raw,
- sourcefile_body_content,
- insert_file_list
- );
- static assert(t.length==3);
- return t;
- }
- }
- struct MarkupRawUnit {
- import std.file;
- final private string readInMarkupSource(in char[] fn_src) {
- enforce(
- exists(fn_src)!=0,
- "file not found"
- );
- string source_txt_str;
- try {
- if (exists(fn_src)) {
- source_txt_str = fn_src.readText;
- }
- }
- catch (ErrnoException ex) {
- }
- catch (UTFException ex) {
- // Handle validation errors
- }
- catch (FileException ex) {
- // Handle errors
- }
- std.utf.validate(source_txt_str);
- return source_txt_str;
- }
- final private char[][] header0Content1(in string src_text) {
- /+ split string on _first_ match of "^:?A~\s" into [header, content] array/tuple +/
- char[][] header_and_content;
- auto m = (cast(char[]) src_text).matchFirst(rgx.heading_a);
- header_and_content ~= m.pre;
- header_and_content ~= m.hit ~ m.post;
- assert(header_and_content.length == 2,
- "document markup is broken, header body split == "
- ~ header_and_content.length.to!string
- ~ "; (header / body array split should == 2 (split is on level A~))"
- );
- return header_and_content;
- }
- final private char[][] markupSourceLineArray(in char[] src_text) {
- char[][] source_line_arr =
- (cast(char[]) src_text).split(rgx.newline_eol_strip_preceding);
- return source_line_arr;
- }
- auto markupSourceReadIn(in string fn_src) {
- auto rgx = Rgx();
- enforce(
- fn_src.match(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) {
- string[] file_insert_list = [];
- auto hc = header0Content1(source_txt_str);
- auto header = hc[0];
- char[] source_txt = hc[1];
- auto source_line_arr = markupSourceLineArray(source_txt);
- auto t = tuple(
- header,
- source_line_arr,
- file_insert_list
- );
- return t;
- }
- final char[][] getInsertMarkupSourceContentRawLineArray(
- in char[] fn_src_insert,
- Regex!(char) rgx_file
- ) {
- enforce(
- fn_src_insert.match(rgx_file),
- "not a sisu markup filename"
- );
- auto source_txt_str = readInMarkupSource(fn_src_insert);
- auto source_line_arr = markupSourceLineArray(source_txt_str);
- return source_line_arr;
- }
- }
- struct Inserts {
- import sdp.ao.defaults;
- auto scan_subdoc_source(
- char[][] markup_sourcefile_insert_content,
- string fn_src
- ) {
- mixin SiSUrgxInitFlags;
- char[][] contents_insert;
- auto type1 = flags_type_init;
- auto fn_pth_full = fn_src.match(rgx.src_pth);
- auto markup_src_file_path = fn_pth_full.captures[1];
- foreach (line; markup_sourcefile_insert_content) {
- if (type1["curly_code"] == 1) {
- type1["header_make"] = 0;
- type1["header_meta"] = 0;
- if (line.matchFirst(rgx.block_curly_code_close)) {
- type1["curly_code"] = 0;
- }
- contents_insert ~= line;
- } else if (line.matchFirst(rgx.block_curly_code_open)) {
- type1["curly_code"] = 1;
- type1["header_make"] = 0;
- type1["header_meta"] = 0;
- contents_insert ~= line;
- } else if (type1["tic_code"] == 1) {
- type1["header_make"] = 0;
- type1["header_meta"] = 0;
- if (line.matchFirst(rgx.block_tic_close)) {
- type1["tic_code"] = 0;
- }
- contents_insert ~= line;
- } else if (line.matchFirst(rgx.block_tic_code_open)) {
- type1["tic_code"] = 1;
- type1["header_make"] = 0;
- type1["header_meta"] = 0;
- contents_insert ~= line;
- } else if (
- (type1["header_make"] == 1)
- && line.matchFirst(rgx.native_header_sub)
- ) {
- type1["header_make"] = 1;
- type1["header_meta"] = 0;
- } else if (
- (type1["header_meta"] == 1)
- && line.matchFirst(rgx.native_header_sub)
- ) {
- type1["header_meta"] = 1;
- type1["header_make"] = 0;
- } else if (auto m = line.match(rgx.insert_src_fn_ssi_or_sst)) {
- type1["header_make"] = 0;
- type1["header_meta"] = 0;
- auto insert_fn = m.captures[2];
- auto insert_sub_pth = m.captures[1];
- auto fn_src_insert =
- chainPath(markup_src_file_path, insert_sub_pth ~ insert_fn).array;
- auto raw = MarkupRawUnit();
- auto markup_sourcesubfile_insert_content =
- raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
- debug(insert_file) {
- tell_l("red", line);
- tell_l("red", fn_src_insert);
- tell_l("fuchsia", "ERROR");
- writeln(
- " length contents insert array: ",
- markup_sourcesubfile_insert_content.length
- );
- }
- auto ins = Inserts();
- /+
- 1. load file,
- 2. read lines;
- 3. scan lines,
- 4. if filename insert, and insert filename
- 5. repeat 1
- 6. else
- 7. add line to new array;
- +/
- } else {
- type1["header_make"] = 0;
- type1["header_meta"] = 0;
- contents_insert ~= line;
- }
- } // end src subdoc (inserts) loop
- return contents_insert;
- }
- auto scan_master_src_for_insert_files_and_import_content(
- char[][] sourcefile_body_content,
- string fn_src
- ) {
- mixin SiSUrgxInitFlags;
- char[][] contents;
- auto type = flags_type_init;
- auto fn_pth_full = fn_src.match(rgx.src_pth);
- auto markup_src_file_path = fn_pth_full.captures[1];
- string[] insert_file_list =[];
- foreach (line; sourcefile_body_content) {
- if (type["curly_code"] == 1) {
- if (line.matchFirst(rgx.block_curly_code_close)) {
- type["curly_code"] = 0;
- }
- contents ~= line;
- } else if (line.matchFirst(rgx.block_curly_code_open)) {
- type["curly_code"] = 1;
- contents ~= line;
- } else if (type["tic_code"] == 1) {
- if (line.matchFirst(rgx.block_tic_close)) {
- type["tic_code"] = 0;
- }
- contents ~= line;
- } else if (line.matchFirst(rgx.block_tic_code_open)) {
- type["tic_code"] = 1;
- contents ~= line;
- } else if (auto m = line.match(rgx.insert_src_fn_ssi_or_sst)) {
- auto insert_fn = m.captures[2];
- auto insert_sub_pth = m.captures[1];
- auto fn_src_insert =
- chainPath(markup_src_file_path, insert_sub_pth ~ insert_fn).array;
- insert_file_list ~= to!string(fn_src_insert);
- auto raw = MarkupRawUnit();
- /+ TODO +/
- if (auto ma = line.match(rgx.src_fn_text)) {
- /+ .sst when inserted, not used: headers and heading level ^:?A~ so remove +/
- writeln(__LINE__); writeln(ma);
- }
- auto markup_sourcefile_insert_content =
- raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
- debug(insert_file) {
- tell_l("red", line);
- tell_l("red", fn_src_insert);
- writeln(
- " length contents insert array: ",
- markup_sourcefile_insert_content.length
- );
- }
- auto ins = Inserts();
- auto contents_insert = ins.scan_subdoc_source(
- markup_sourcefile_insert_content,
- to!string(fn_src_insert)
- );
- contents ~= contents_insert;
- /+
- 1. load file,
- 2. read lines;
- 3. scan lines,
- 4. if filename insert, and insert filename
- 5. repeat 1
- 6. else
- 7. add line to new array;
- +/
- } else {
- contents ~= line;
- }
- } // end src doc loop
- debug(insert_file) {
- writeln(__LINE__);
- writeln(contents.length);
- }
- auto t = tuple(
- contents,
- insert_file_list
- );
- return t;
- }
- }
-}