aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/ao_read_markup_source.org
diff options
context:
space:
mode:
Diffstat (limited to 'org/ao_read_markup_source.org')
-rw-r--r--org/ao_read_markup_source.org98
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