diff options
Diffstat (limited to 'org/ao_read_markup_source.org')
-rw-r--r-- | org/ao_read_markup_source.org | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/org/ao_read_markup_source.org b/org/ao_read_markup_source.org new file mode 100644 index 0000000..d6cb0dc --- /dev/null +++ b/org/ao_read_markup_source.org @@ -0,0 +1,98 @@ +#+TITLE: sdp read markup source +#+AUTHOR: Ralph Amissah +#+EMAIL: ralph.amissah@gmail.com +#+STARTUP: indent +#+LANGUAGE: en +#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t <:t +#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc +#+OPTIONS: author:nil email:nil creator:nil timestamp:nil +#+OPTIONS: ^:nil _:nil +#+EXPORT_SELECT_TAGS: export +#+EXPORT_EXCLUDE_TAGS: noexport +#+FILETAGS: :sdp:rel:ao: +#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) + +* read markup source :markup: +[[./sdp.org][sdp]] [[./][org/]] + +** source string :string: +#+name: ao_read_markup_source +#+BEGIN_SRC d :exports none +final private string markupSourceString(in char[] fn_src) { + enforce( + exists(fn_src)!=0, + "file not found" + ); + string source_txt_str; + try { + if (exists(fn_src)) { + source_txt_str = readText(fn_src); // ok + } + } + catch (ErrnoException ex) { + // Handle errors + } + catch (UTFException ex) { + // Handle validation errors + } + catch (FileException ex) { + // Handle errors + } + std.utf.validate(source_txt_str); + return source_txt_str; +} +#+END_SRC + +** source line array :array: +#+name: ao_read_markup_source +#+BEGIN_SRC d :exports none +final private char[][] markupSourceLineArray(in string src_text) { + char[][] source_line_arr = + split(cast(char[]) src_text, rgx.line_delimiter); + return source_line_arr; +} +#+END_SRC + +** insert source content raw line array :array: +#+name: ao_read_markup_source +#+BEGIN_SRC d :exports none +final char[][] markupInsertSourceContentRawLineArray(in char[] fn_src) { + enforce( + match(fn_src, rgx.src_fn_find_inserts), + "not a sisu markup filename" + ); + auto source_txt_str = markupSourceString(fn_src); + auto source_line_arr = markupSourceLineArray(source_txt_str); + return source_line_arr; +} +#+END_SRC + +** source content raw line array :array: +#+name: ao_read_markup_source +#+BEGIN_SRC d :exports none +final char[][] markupSourceContentRawLineArray(in char[] fn_src) { + enforce( + match(fn_src, rgx.src_pth), + "not a sisu markup filename" + ); + auto source_txt_str = markupSourceString(fn_src); + auto source_line_arr = markupSourceLineArray(source_txt_str); + return source_line_arr; +} +#+END_SRC + +* tangles :tangle: +** code structure: :ao_read_markup_source.d: +#+name: tangle_ao_read_markup_source +#+BEGIN_SRC d :tangle ../lib/sdp/ao_read_markup_source.d :padline no :exports none :noweb yes +/* + read markup source + ao_read_markup_source.d +*/ +mixin template SiSUmarkupRaw() { + class MarkupRaw { + auto rgx = new Rgx(); + <<ao_read_markup_source>> + } +} +#+END_SRC |