/* read markup source ao_read_markup_source.d */ mixin template SiSUmarkupRaw() { class MarkupRaw { auto rgx = new Rgx(); 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; } final private char[][] markupSourceLineArray(in string src_text) { char[][] source_line_arr = split(cast(char[]) src_text, rgx.line_delimiter); return source_line_arr; } 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; } 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; } } }