diff options
45 files changed, 1027 insertions, 1105 deletions
diff --git a/org/default_misc.org b/org/default_misc.org index 5351c30..d5fd76d 100644 --- a/org/default_misc.org +++ b/org/default_misc.org @@ -40,7 +40,7 @@ module doc_reform.meta.defaults; #+BEGIN_SRC d template spineRgxInitFlags() { /+ regex flags +/ - static int[string] flags_type_init() { + @safe static int[string] flags_type_init() { int[string] flags_type_init = [ "make_headings" : 0, "header_make" : 0, @@ -87,7 +87,7 @@ template spineRgxInitFlags() { #+name: meta_defaults_template_node #+BEGIN_SRC d template spineNode() { - static string[string] node_metadata_heading_str() { + @safe static string[string] node_metadata_heading_str() { string[string] _node = [ "is" : "", "ocn" : "", @@ -98,7 +98,7 @@ template spineNode() { ]; return _node; } - static int[string] node_metadata_heading_int() { + @safe static int[string] node_metadata_heading_int() { int[string] _node = [ "ocn" : 0, // decide whether to use or keep? "ptr_doc_object" : 0, @@ -111,7 +111,7 @@ template spineNode() { ]; return _node; } - static string[string] node_metadata_para_str() { + @safe static string[string] node_metadata_para_str() { string[string] _node = [ "is" : "", "ocn" : "", @@ -119,7 +119,7 @@ template spineNode() { ]; return _node; } - static int[string] node_metadata_para_int() { + @safe static int[string] node_metadata_para_int() { int[string] _node = [ "ocn" : 0, "indent_base" : 0, @@ -136,7 +136,7 @@ template spineNode() { #+name: meta_defaults_template_harvest #+BEGIN_SRC d template spineHarvest() { - auto spineHarvest() { + @safe auto spineHarvest() { struct _Harvest { struct Harvest { string title = ""; @@ -176,7 +176,7 @@ template spineHarvest() { template spineBiblio() { // required: deemed_author (author || editor); year; fulltitle; struct BibJsnStr { - static auto biblio_entry_tags_jsonstr() { + @safe static auto biblio_entry_tags_jsonstr() { string x = `{ "is" : "", "sortby_deemed_author_year_title" : "", @@ -313,7 +313,7 @@ template InternalMarkup() { template spineLanguageCodes() { /+ language codes +/ struct Lang { - static string[string][string] codes() { + @safe static string[string][string] codes() { auto _lang_codes = [ "am": [ "c": "am", "n": "Amharic", "t": "Amharic", "xlp": "amharic" ], "bg": [ "c": "bg", "n": "Bulgarian", "t": "Български (Bəlgarski)", "xlp": "bulgarian" ], @@ -380,15 +380,15 @@ template spineLanguageCodes() { ]; return _lang_codes; } - static string[] code_arr_ptr() { + @safe static string[] code_arr_ptr() { string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "us", "vi", "zh", "en", "xx",]; return _lang_codes; } - static string[] code_arr() { + @safe static string[] code_arr() { string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "vi", "zh"]; return _lang_codes; } - static auto codes_() { + @safe static auto codes_() { return "(" ~ join(code_arr,"|") ~ ")"; } static auto codes_regex() { diff --git a/org/default_paths.org b/org/default_paths.org index 82ea93d..2d03aa6 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -48,7 +48,7 @@ import template PodManifest() { mixin spineRgxInit; static auto rgx = Rgx(); - auto PodManifest(O)( + @safe auto PodManifest(O)( O _opt_actions, string _pth="" ) { @@ -56,7 +56,7 @@ template PodManifest() { string pod_manifest_filename() { return "pod.manifest"; } - string pod_manifest_path() { + @safe string pod_manifest_path() { string _manifest_path; if ((isValidPath(_pth) && exists(_pth) != 0 && _pth.isDir) && (exists(_pth.chainPath(pod_manifest_filename).array) != 0 @@ -78,10 +78,10 @@ template PodManifest() { } return _manifest_path; } - string pods_collection_root_path() { + @safe string pods_collection_root_path() { return (pod_manifest_path.length > 0) ? ((chainPath(pod_manifest_path, "..")).asNormalizedPath).array.to!string : ""; } - string pod_manifest_file_with_path() { + @safe string pod_manifest_file_with_path() { string _k; if (exists(pod_manifest_path.chainPath(pod_manifest_filename).array)!=0) { _k = pod_manifest_path.chainPath(pod_manifest_filename).array; @@ -125,14 +125,14 @@ template PathMatters() { mixin InternalMarkup; static auto rgx = Rgx(); static auto mkup = InlineMarkup(); - auto PathMatters(O,E)( + @safe auto PathMatters(O,E)( O _opt_actions, E _env, string _pth, string _fns = "", char[][] _manifest_fn_list = [[]], ) { - auto _manifested = PodManifest!()(_opt_actions, _pth); + @safe auto _manifested = PodManifest!()(_opt_actions, _pth); struct ManifestMatters_ { auto env() { auto _env = _env; @@ -146,7 +146,7 @@ template PathMatters() { } return Env_(); } - auto opt() { + @safe auto opt() { struct Opt_ { auto action() { return _opt_actions; @@ -154,45 +154,45 @@ template PathMatters() { } return Opt_(); } - bool src_is_pod() { + @safe bool src_is_pod() { return (_manifested.pod_manifest_path.length > 0) ? true : false; } - auto pod() { + @safe auto pod() { struct Pod_ { - bool src_is_pod() { + @safe bool src_is_pod() { return (_manifested.pod_manifest_path.length > 0) ? true : false; } - string collection_root() { + @safe string collection_root() { return _manifested.pods_collection_root_path; } - string manifest_filename() { + @safe string manifest_filename() { return _manifested.pod_manifest_filename; } - string manifest_path() { + @safe string manifest_path() { return _manifested.pod_manifest_path; } - string pod_name_with_path() { + @safe string pod_name_with_path() { return _manifested.pod_manifest_path.baseName; } - string manifest_file_with_path() { + @safe string manifest_file_with_path() { return _manifested.pod_manifest_file_with_path; } - string[] config_dr_document_make_dirs() { + @safe string[] config_dr_document_make_dirs() { string[] _config_dirs; return _config_dirs; } - string[] config_local_site_dirs() { + @safe string[] config_local_site_dirs() { string[] _config_dirs; return _config_dirs; } - string[] image_dirs() { + @safe string[] image_dirs() { string[] _image_dirs; return _image_dirs; } - auto manifest_list_of_filenames() { + @safe auto manifest_list_of_filenames() { return _manifest_fn_list; } - string[] manifest_list_of_languages() { + @safe string[] manifest_list_of_languages() { string[] _lngs; foreach (filename_; manifest_list_of_filenames) { string _k = "en"; @@ -206,43 +206,43 @@ template PathMatters() { } return Pod_(); } - auto src() { + @safe auto src() { string _fns = _fns; // required here by dmd & not by ldc (for D:2078) auto _opt_actions = _opt_actions; auto _env = _env; struct SRC_ { - bool is_pod() { + @safe bool is_pod() { return (_manifested.pod_manifest_path.length > 0) ? true : false; } - string path_and_fn() { + @safe string path_and_fn() { return _fns; } - string pod_name_with_path() { + @safe string pod_name_with_path() { return (is_pod) ? _manifested.pod_manifest_path : ""; } - string pods_collection_root_path() { + @safe string pods_collection_root_path() { return (is_pod) ? _manifested.pods_collection_root_path : ""; } - string pod_name() { + @safe string pod_name() { return pod_name_with_path.baseName; } - string filename() { + @safe string filename() { return path_and_fn.baseName; } - string filename_base() { + @safe string filename_base() { return filename.stripExtension; } - string filename_extension() { + @safe string filename_extension() { return filename.match(rgx.src_pth_sst_or_ssm).captures["extension"]; } - string lng() { + @safe string lng() { string _k; if (auto m = path_and_fn.match(rgx.language_code_and_filename)) { _k = m.captures[1]; } else {_k = "en"; } return _k; } - string doc_uid() { + @safe string doc_uid() { string _uid; if (is_pod && !(pod_name_with_path.empty)) { if (pod_name_with_path.baseName == filename_base) { @@ -255,7 +255,7 @@ template PathMatters() { } return _uid; } - string doc_uid_out() { + @safe string doc_uid_out() { string _uid; if (is_pod && !(pod_name_with_path.empty)) { if (pod_name_with_path.baseName == filename_base) { @@ -268,7 +268,7 @@ template PathMatters() { } return _uid; } - string docname_composite_unique_per_src_doc() { + @safe string docname_composite_unique_per_src_doc() { string _fn; if (pod_name_with_path.baseName == filename_base) { _fn = filename_base ~ mkup.sep ~ filename_extension ~ mkup.sep ~ lng; @@ -279,7 +279,7 @@ template PathMatters() { } return _fn; } - string docname_composite_unique_per_src_pod() { + @safe string docname_composite_unique_per_src_pod() { /+ z pod name if any + src filename (without lng code) filename ~ mkup.sep ~ lng @@ -298,19 +298,19 @@ template PathMatters() { } return _fn; } - string language() { + @safe string language() { return lng(); } - string file_with_absolute_path() { + @safe string file_with_absolute_path() { return _env["pwd"].chainPath(path_and_fn).array; } - string absolute_path_to_src() { + @safe string absolute_path_to_src() { return (_env["pwd"].chainPath(path_and_fn)).dirName.array; } - string path_to_doc_root_path_to_lang_and_filename() { + @safe string path_to_doc_root_path_to_lang_and_filename() { return _env["pwd"].chainPath(path_and_fn).array; } - string base_dir() { + @safe string base_dir() { string _dir; if ( auto m = (absolute_path_to_src) @@ -328,7 +328,7 @@ template PathMatters() { } return _dir; } - string base_parent_dir_path() { + @safe string base_parent_dir_path() { string _dir; if ( auto m = (absolute_path_to_src) @@ -340,7 +340,7 @@ template PathMatters() { } return _dir; } - string base_dir_path() { + @safe string base_dir_path() { string _dir; if ( auto m = (absolute_path_to_src) @@ -360,11 +360,11 @@ template PathMatters() { } return _dir; } - string media_dir_path() { + @safe string media_dir_path() { string _dir = ((base_dir_path.chainPath("media")).asNormalizedPath).array; return _dir; } - string image_dir_path() { + @safe string image_dir_path() { string _paths; string[] _possible_img_pths = [ "./image", "../image", "../../image" ]; string _img_pth_found = ""; @@ -388,10 +388,10 @@ template PathMatters() { } return _img_pth_found; } - auto conf_dir_path() { + @safe auto conf_dir_path() { return ((base_dir_path.chainPath("conf")).asNormalizedPath).array; } - auto base_parent_dir() { + @safe auto base_parent_dir() { string _dir; if ( auto m = (absolute_path_to_src) @@ -406,13 +406,13 @@ template PathMatters() { } return _dir; } - string[] config_dirs() { + @safe string[] config_dirs() { string[] _config_dirs; if (is_pod) { } else {} return _config_dirs; } - string[] image_dirs() { + @safe string[] image_dirs() { string[] _image_dirs; if (is_pod) { } else {} @@ -421,7 +421,7 @@ template PathMatters() { } return SRC_(); } - auto output() { + @safe auto output() { /+ - command line if output path set - config file if found and set set @@ -435,7 +435,7 @@ template PathMatters() { +/ auto _env = _env; struct Out_ { - auto path() { + @safe auto path() { auto _output_path = _env["pwd"]; if ((_opt_actions.output_dir_set.length > 0) && isValidPath(_opt_actions.output_dir_set) @@ -471,21 +471,21 @@ template PathMatters() { template ConfigFilePaths() { mixin spineRgxInit; static auto rgx = Rgx(); - auto ConfigFilePaths(M,E)( + @safe auto ConfigFilePaths(M,E)( M _manifested, E _env, string _cli_config_path_set = "" ) { struct ConfFilePaths { - string config_filename_document() { + @safe string config_filename_document() { return "dr_document_make"; } - string config_filename_site() { + @safe string config_filename_site() { return "config_local_site"; } - auto possible_config_path_locations() { + @safe auto possible_config_path_locations() { struct _ConfFilePaths { - string[] dr_document_make() { + @safe string[] dr_document_make() { /+ FIX clean up conf paths ↓ +/ /+ config local site (file system only, not in pod) +/ /+ return paths +/ @@ -534,7 +534,7 @@ template ConfigFilePaths() { +/ return _possible_config_path_locations; } - string[] config_local_site() { + @safe string[] config_local_site() { /+ FIX clean up conf paths ↓ +/ /+ config local site (file system only, not in pod) +/ string[] _possible_config_path_locations; @@ -645,15 +645,15 @@ filelist for processing [things to ponder] template spinePathsSRC() { mixin spineRgxInit; static auto rgx = Rgx(); - auto spinePathsSRC(D,Fn)( + @safe auto spinePathsSRC(D,Fn)( D _pwd, Fn _fn_src_and_path, ) { struct drSrcPaths { - auto pwd() { + @safe auto pwd() { return _pwd; } - string language() { + @safe string language() { // use command line info as well? string _k; if (auto m = _fn_src_and_path.match(rgx.language_code_and_filename)) { @@ -663,28 +663,28 @@ template spinePathsSRC() { } return _k; } - string doc_root() { + @safe string doc_root() { return "dr_doc"; } - auto media_root() { + @safe auto media_root() { return ((doc_root.chainPath("media")).asNormalizedPath).array; } - auto conf_root() { + @safe auto conf_root() { return ((doc_root.chainPath("conf")).asNormalizedPath).array; } - auto text_root() { + @safe auto text_root() { return ((media_root.chainPath("text")).asNormalizedPath).array; } - auto image_root() { + @safe auto image_root() { return ((media_root.chainPath("image")).asNormalizedPath).array; } - auto doc_src_fn_with_path_for_text_root_and_lng() { + @safe auto doc_src_fn_with_path_for_text_root_and_lng() { return ((text_root.chainPath(language)).asNormalizedPath).array; } - auto doc_src_fn() { + @safe auto doc_src_fn() { return ((_fn_src_and_path.baseName).asNormalizedPath).array; } - auto doc_src_with_path() { + @safe auto doc_src_with_path() { return ((pwd.chainPath(_fn_src_and_path)).asNormalizedPath).array; } } diff --git a/org/default_shared.org b/org/default_shared.org index 067b7b5..b0e242b 100644 --- a/org/default_shared.org +++ b/org/default_shared.org @@ -32,7 +32,7 @@ module doc_reform.share.defaults; #+BEGIN_SRC d template Msg() { import std.stdio; - auto Msg(I)(I doc_matters) { + @safe auto Msg(I)(I doc_matters) { struct Msg_ { void v()(string message) { if (!(doc_matters.opt.action.quiet) && doc_matters.opt.action.verbose) { diff --git a/org/in_source_files.org b/org/in_source_files.org index 7ea9bae..a498688 100644 --- a/org/in_source_files.org +++ b/org/in_source_files.org @@ -51,7 +51,7 @@ static template readConfigSite() { doc_reform.meta.rgx; <<imports_std>> mixin spineRgxInit; - final auto readConfigSite(C)(C _conf_file_details) { + @system final auto readConfigSite(C)(C _conf_file_details) { static auto rgx = Rgx(); string conf_filename = "NONE"; string config_file_str; @@ -158,7 +158,7 @@ static template readConfigDoc() { doc_reform.meta.rgx; <<imports_std>> mixin spineRgxInit; - final auto readConfigDoc(M,E)(M _manifested, E _env) { + @system final auto readConfigDoc(M,E)(M _manifested, E _env) { static auto rgx = Rgx(); string config_file_str; string conf_filename = "NONE"; @@ -185,13 +185,13 @@ static template readConfigDoc() { if (config_file_str.length > 0) { break; } } struct _ConfContent { - string filename() { + @safe string filename() { return conf_filename; } - string content() { + @safe string content() { return config_file_str; } - string filetype() { + @safe string filetype() { string _ft = ""; if (content.match(rgx.yaml_config)) { _ft = "yaml"; @@ -204,33 +204,13 @@ static template readConfigDoc() { } #+END_SRC -*** 1. YAML config files get - -#+name: meta_config_file_yaml -#+BEGIN_SRC d -static template configYAML() { - import dyaml; // - <<imports_std>> - YAMLDocument configYAML(string configuration, string conf_yaml_filename) { - Node _yaml_conf; - try { - _yaml_conf = Loader.fromString(configuration).load() - } catch(ErrnoException e) { - stderr.writeln("Yaml problem with content for ", conf_yaml_filename); - stderr.writeln(e.msg); - } - return _yaml_conf; - } -} -#+END_SRC - -*** 2. YAML config (config_local_site & dr_document_make) :file:config:hub: +*** YAML config (config_local_site & dr_document_make) :file:config:hub: #+name: meta_config_file_hub #+BEGIN_SRC d static template configReadSiteYAML() { <<imports_std>> - final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { + @safe final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInSiteYAML!()(_manifested, _env); auto _conf_file_details = ConfigFilePaths!()(_manifested, _env); string _conf_yaml_fn = _conf_file_details.config_filename_site; @@ -240,7 +220,7 @@ static template configReadSiteYAML() { } static template configReadDocYAML() { <<imports_std>> - final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { + @safe final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInDocYAML!()(_manifested, _env); auto _conf_file_details = ConfigFilePaths!()(_manifested, _env); string _conf_yaml_fn = _conf_file_details.config_filename_document; @@ -267,7 +247,7 @@ static template spineRawMarkupContent() { mixin spineRgxInit; static auto rgx = Rgx(); string[] _images=[]; - string[] _extract_images(S)(S content_block) @safe { + @safe string[] _extract_images(S)(S content_block) { string[] images_; string _content_block = content_block.to!string; if (auto m = _content_block.matchAll(rgx.image)) { @@ -287,19 +267,19 @@ static template spineRawMarkupContent() { string[], "insert_files", string[], "images" ); - auto spineRawMarkupContent(O,Fn)(O _opt_action, Fn fn_src) @safe { + @safe auto spineRawMarkupContent(O,Fn)(O _opt_action, Fn fn_src) { auto _0_header_1_body_content_2_insert_filelist_tuple = rawsrc.sourceContentSplitIntoHeaderAndBody(_opt_action, rawsrc.sourceContent(fn_src), fn_src); return _0_header_1_body_content_2_insert_filelist_tuple; } struct RawMarkupContent { - final sourceContent(in string fn_src) { + @safe final sourceContent(in string fn_src) { auto raw = MarkupRawUnit(); string source_txt_str = raw.markupSourceReadIn(fn_src); return source_txt_str; } - final auto sourceContentSplitIntoHeaderAndBody(O)( + @safe final auto sourceContentSplitIntoHeaderAndBody(O)( O _opt_action, in string source_txt_str, in string fn_src="" @@ -348,7 +328,7 @@ static template spineRawMarkupContent() { char[][], "insert_contents", string[], "images" ); - ContentsAndImages scan_subdoc_source(O)( + @safe ContentsAndImages scan_subdoc_source(O)( O _opt_action, char[][] markup_sourcefile_insert_content, string fn_src @@ -360,7 +340,7 @@ static template spineRawMarkupContent() { } // end src subdoc (inserts) loop <<meta_inserts_scan_post>> } - ContentsInsertsImages scan_master_src_for_insert_files_and_import_content(O)( + @safe ContentsInsertsImages scan_master_src_for_insert_files_and_import_content(O)( O _opt_action, char[][] sourcefile_body_content, string fn_src @@ -382,7 +362,7 @@ static template spineRawMarkupContent() { #+name: meta_markup_source_raw_read_file_source_string #+BEGIN_SRC d -final private string readInMarkupSource(in char[] fn_src) { +@safe final private string readInMarkupSource(in char[] fn_src) { enforce( exists(fn_src) != 0, "file not found: «" ~ @@ -414,7 +394,7 @@ split is on first match of level A~ (which is required) #+name: meta_markup_source_raw_doc_header_and_content_split #+BEGIN_SRC d -final private char[][] header0Content1(in string src_text) @trusted { // cast(char[]) +@trusted final private char[][] header0Content1(in string src_text) { // cast(char[]) /+ 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); @@ -433,7 +413,7 @@ final private char[][] header0Content1(in string src_text) @trusted { // cast(ch #+name: meta_markup_source_raw_source_line_array #+BEGIN_SRC d -final private char[][] markupSourceLineArray(in char[] src_text) @trusted { // cast(char[]) +@trusted final private char[][] markupSourceLineArray(in char[] src_text) { // cast(char[]) char[][] source_line_arr = (cast(char[]) src_text).split(rgx.newline_eol_strip_preceding); return source_line_arr; @@ -448,7 +428,7 @@ final private char[][] markupSourceLineArray(in char[] src_text) @trusted { // c #+name: meta_markup_source_raw_read_in_file #+BEGIN_SRC d -string markupSourceReadIn(in string fn_src) { +@safe string markupSourceReadIn(in string fn_src) { static auto rgx = Rgx(); enforce( fn_src.match(rgx.src_pth_sst_or_ssm), @@ -469,7 +449,7 @@ string markupSourceReadIn(in string fn_src) { #+name: meta_markup_source_raw_tuple_of_header_and_body #+BEGIN_SRC d -HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) @safe { +@safe HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) { string[] file_insert_list = []; string[] images_list = []; char[][] hc = header0Content1(source_txt_str); @@ -490,7 +470,7 @@ HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string #+name: meta_markup_source_raw_get_insert_source_line_array #+BEGIN_SRC d -final char[][] getInsertMarkupSourceContentRawLineArray( +@safe final char[][] getInsertMarkupSourceContentRawLineArray( in char[] fn_src_insert, Regex!(char) rgx_file ) { diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org index 0362a83..a319758 100644 --- a/org/meta_conf_make_meta.org +++ b/org/meta_conf_make_meta.org @@ -76,7 +76,7 @@ static auto mkup = InlineMarkup(); #+name: meta_defaults_template_structs #+BEGIN_SRC d -string url_markup(string line) @safe { +@safe string url_markup(string line) { string line_ = line .replaceAll( rgx.smid_inline_link_markup_regular, @@ -357,7 +357,7 @@ static template contentYAMLtoSpineStruct() { doc_reform.meta.defaults, doc_reform.meta.rgx; ConfComposite _struct_composite; - auto contentYAMLtoSpineStruct(C,Y,M)( + @system auto contentYAMLtoSpineStruct(C,Y,M)( C _struct_composite, Y _yaml, M _manifested, @@ -1174,7 +1174,7 @@ static template contentJSONtoSpineStruct() { doc_reform.meta.defaults, doc_reform.meta.rgx; ConfComposite _struct_composite; - auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) @safe { + @safe auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) { mixin spineRgxInit; static auto rgx = Rgx(); debug (json) { @@ -1823,7 +1823,7 @@ static template configParseYAMLreturnSpineStruct() { doc_reform.meta.conf_make_meta_structs, doc_reform.meta.conf_make_meta_json; mixin contentYAMLtoSpineStruct; - auto configParseYAMLreturnSpineStruct(T,CCm,M)( + @system auto configParseYAMLreturnSpineStruct(T,CCm,M)( T _document_struct, CCm _make_and_meta_struct, M _manifested @@ -1866,7 +1866,7 @@ static template docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct() { mixin spineRgxInit; mixin contentJSONtoSpineStruct; static auto rgx = Rgx(); - auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M)( + @system auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M)( Src header_src, CCm _make_and_meta_struct, M _manifested, diff --git a/org/metaverse.org b/org/metaverse.org index be6c662..0483473 100644 --- a/org/metaverse.org +++ b/org/metaverse.org @@ -38,7 +38,7 @@ template docAbstraction() { <<abs_top_init_struct>> <<abs_inline_para_tag_associations>> /+ ↓ abstract marked up document +/ - auto docAbstraction(CMM,Opt,Mf) ( + @system auto docAbstraction(CMM,Opt,Mf) ( char[][] markup_sourcefile_content, CMM conf_make_meta, Opt opt_action, @@ -267,7 +267,7 @@ enum DomTags { none, open, close, close_and_open, open_still, } #+name: abs_top_init_struct #+BEGIN_SRC d -pure ObjGenericComposite obj_heading_ancestors()( +@safe pure ObjGenericComposite obj_heading_ancestors()( ObjGenericComposite obj, string[] lv_ancestors_txt, ) { @@ -326,7 +326,7 @@ pure ObjGenericComposite obj_heading_ancestors()( #+name: abs_top_init_struct #+BEGIN_SRC d -pure ObjGenericComposite obj_dom_structure_set_markup_tags()( +@safe pure ObjGenericComposite obj_dom_structure_set_markup_tags()( ObjGenericComposite obj, int[] dom, int lev @@ -376,7 +376,7 @@ pure ObjGenericComposite obj_dom_structure_set_markup_tags()( #+name: abs_top_init_struct #+BEGIN_SRC d -pure ObjGenericComposite obj_dom_set_collapsed_tags()( +@safe pure ObjGenericComposite obj_dom_set_collapsed_tags()( ObjGenericComposite obj, int[] dom, int lev @@ -426,10 +426,10 @@ pure ObjGenericComposite obj_dom_set_collapsed_tags()( #+name: abs_top_init_struct #+BEGIN_SRC d -static auto ocn_emit(int ocn_status_flag) { +@safe static auto ocn_emit(int ocn_status_flag) { return object_citation_number.ocn_emitter(ocn_status_flag); } -static auto inline_markup_faces(L)(L line) { +@safe static auto inline_markup_faces(L)(L line) { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); line = replaceAll!(m => mkup.quote_o ~ m[1] ~ mkup.quote_c)(line, rgx.within_quotes); @@ -440,7 +440,7 @@ static auto inline_markup_faces(L)(L line) { } return line; } -static string links_and_images()(string obj_txt) { +@safe static string links_and_images()(string obj_txt) { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); if (obj_txt.match(rgx.smid_inline_url_generic)) { @@ -493,7 +493,7 @@ enum sObj { content, anchor_tag, notes_reg, notes_star, links, image_no_dimensio #+name: abs_inline_para_tag_associations #+BEGIN_SRC d -string[string][string] inline_para_link_anchor()( +@safe string[string][string] inline_para_link_anchor()( string[string] an_object, string[string] tag_in_seg, string[string][string] tag_assoc @@ -1744,6 +1744,7 @@ debug(bibliosection) { ***** bibliography components +#+BEGIN_SRC d JSONValue biblio_entry_tags_jsonstr = `{ "is" : "", "sortby_deemed_author_year_title" : "", @@ -1773,6 +1774,7 @@ JSONValue biblio_entry_tags_jsonstr = `{ "short_name" : "", "id" : "" }`; // is: book, article, magazine, newspaper, blog, other +#+END_SRC **** bookindex section (scroll & seg) :book:index: @@ -1955,7 +1957,7 @@ NOTE there are issues attempting to do this on first pass as: #+name: abs_post #+BEGIN_SRC d -int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { +@safe int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); @@ -2048,7 +2050,7 @@ int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { #+name: abs_post #+BEGIN_SRC d -int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) { +@safe int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) { if (obj.metainfo.is_a == "heading") { if (obj.metainfo.heading_lev_collapsed == 1) { _ancestors_collapsed = [ @@ -2313,7 +2315,7 @@ Build here: #+name: abs_post #+BEGIN_SRC d -auto get_decendants()(ObjGenericComposite[] document_sections) { +@safe auto get_decendants()(ObjGenericComposite[] document_sections) { int[string] _heading_ocn_decendants; string[] _ocn_open_key = ["","","","","","","",""]; auto _doc_sect_length = document_sections.length - 1; @@ -2367,7 +2369,7 @@ auto get_decendants()(ObjGenericComposite[] document_sections) { #+name: abs_post #+BEGIN_SRC d string[] _images; -string[] extract_images()(string content_block) { +@safe string[] extract_images()(string content_block) { string[] images_; if (auto m = content_block.matchAll(rgx.image)) { images_ ~= m.captures[1]; @@ -2381,7 +2383,7 @@ string[] segnames_0_to_4; #+name: abs_post #+BEGIN_SRC d -auto _image_dimensions(O,M)(O obj, M manifested) { +@system auto _image_dimensions(O,M)(O obj, M manifested) { if (obj.has.image_without_dimensions) { import std.math; import imageformats; @@ -2434,7 +2436,7 @@ auto _image_dimensions(O,M)(O obj, M manifested) { #+name: abs_post #+BEGIN_SRC d -auto _links(O)(O obj) { +@safe auto _links(O)(O obj) { if (auto m = obj.text.match(rgx.inline_link_stow_uri)) { debug(links) { writeln("number of link matches to stow: ", (obj.text.match(rgx.inline_link_stow_uri)).count); @@ -3038,7 +3040,7 @@ dom_structure_collapsed_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,]; #+name: abs_struct_doc_has #+BEGIN_SRC d -auto doc_has() { +@safe auto doc_has() { struct DocHas_ { uint inline_links() { return dochas["inline_links"]; @@ -3090,7 +3092,7 @@ auto doc_has() { } #+END_SRC -*** _return document tuple_ [#A] :return:tuple: +*** _return the document tuple_ [#A] :return:tuple: #+name: abs_return_tuple #+BEGIN_SRC d @@ -3110,7 +3112,7 @@ functions used in document abstraction #+name: abs_functions_object_reset #+BEGIN_SRC d -static string[string] object_reset()(string[string] an_object) @safe { +@safe static string[string] object_reset()(string[string] an_object) { an_object.remove("body_nugget"); an_object.remove("substantive"); an_object.remove("is"); @@ -3124,7 +3126,7 @@ static string[string] object_reset()(string[string] an_object) @safe { #+name: abs_functions_header_set_common #+BEGIN_SRC d -void flow_common_reset_()( +@system void flow_common_reset_()( return ref int[string] line_occur, return ref string[string] an_object, return ref int[string] obj_type_status, @@ -3141,10 +3143,10 @@ void flow_common_reset_()( #+name: abs_functions_ocn_status #+BEGIN_SRC d -static int[string] _check_ocn_status_()( +@safe static int[string] _check_ocn_status_()( char[] line, int[string] obj_type_status, -) @safe { +) { static auto rgx = Rgx(); if (!(line.empty) && (obj_type_status["ocn_status_off_for_multiple_objects"] == OCN_off_block_status.off) @@ -3207,10 +3209,10 @@ static int[string] _check_ocn_status_()( #+name: abs_functions_substitutions #+BEGIN_SRC d -char[] _doc_header_and_make_substitutions_(CMM)( +@safe char[] _doc_header_and_make_substitutions_(CMM)( char[] line, CMM conf_make_meta, -) @safe { +) { enum Substitute { match, markup, } if (conf_make_meta.make.substitute) { foreach(substitution_pair; conf_make_meta.make.substitute) { @@ -3228,10 +3230,10 @@ char[] _doc_header_and_make_substitutions_(CMM)( #+name: abs_functions_substitutions #+BEGIN_SRC d -char[] _doc_header_and_make_substitutions_fontface_(CMM)( +@safe char[] _doc_header_and_make_substitutions_fontface_(CMM)( char[] line, CMM conf_make_meta, -) @safe { +) { enum Substitute { match, markup, } if ( conf_make_meta.make.bold) { line = line.replaceAll( @@ -3261,12 +3263,12 @@ char[] _doc_header_and_make_substitutions_fontface_(CMM)( #+name: abs_functions_block #+BEGIN_SRC d -void flow_txt_block_start()( +@safe void flow_txt_block_start()( char[] line, return ref int[string] obj_type_status, return ref uint[string] dochas, return ref string[string] object_number_poem -) @safe { +) { #+END_SRC ****** block (various) curly open :curly: @@ -3545,11 +3547,11 @@ void flow_txt_block_start()( #+name: abs_functions_block_code #+BEGIN_SRC d -void flow_txt_block_code()( +@safe void flow_txt_block_code()( char[] line, return ref string[string] an_object, return ref int[string] obj_type_status -) @safe { +) { static auto rgx = Rgx(); if (obj_type_status["curly_code"] == TriState.on) { if (line.matchFirst(rgx.block_curly_code_close)) { @@ -3594,7 +3596,7 @@ void flow_txt_block_code()( #+name: abs_functions_block_biblio #+BEGIN_SRC d -final string biblio_tag_map()(string abr) { +@safe final string biblio_tag_map()(string abr) { auto btm = [ "au" : "author_raw", "ed" : "editor_raw", @@ -3646,7 +3648,7 @@ final string biblio_tag_map_()(string abr) { #+name: abs_functions_block_biblio #+BEGIN_SRC d -void flow_txt_block_biblio( +@system void flow_txt_block_biblio( char[] line, return ref int[string] obj_type_status, return ref int bib_entry, @@ -3781,11 +3783,11 @@ void flow_txt_block_biblio( #+name: abs_functions_block_quote #+BEGIN_SRC d -string[string] flow_txt_block_quote()( +@safe string[string] flow_txt_block_quote()( char[] line, string[string] an_object, return ref int[string] obj_type_status -) @safe { +) { static auto rgx = Rgx(); if (obj_type_status["curly_quote"] == TriState.on) { if (line.matchFirst(rgx.block_curly_quote_close)) { @@ -3829,11 +3831,11 @@ string[string] flow_txt_block_quote()( #+name: abs_functions_block_group #+BEGIN_SRC d -string[string] flow_txt_block_group()( +@safe string[string] flow_txt_block_group()( char[] line, string[string] an_object, return ref int[string] obj_type_status -) @safe { +) { static auto rgx = Rgx(); if (obj_type_status["curly_group"] == State.on) { if (line.matchFirst(rgx.block_curly_group_close)) { @@ -3878,11 +3880,11 @@ string[string] flow_txt_block_group()( #+name: abs_functions_block_block #+BEGIN_SRC d -string[string] flow_txt_block_block()( +@safe string[string] flow_txt_block_block()( char[] line, string[string] an_object, return ref int[string] obj_type_status -) @safe { +) { static auto rgx = Rgx(); if (obj_type_status["curly_block"] == TriState.on) { if (line.matchFirst(rgx.block_curly_block_close)) { @@ -3925,7 +3927,7 @@ why extra object stuff only in poem/verse? #+name: abs_functions_block_poem #+BEGIN_SRC d -string[string] flow_txt_block_poem(CMM)( +@safe string[string] flow_txt_block_poem(CMM)( char[] line, string[string] an_object, return ref int[string] obj_type_status, @@ -3933,7 +3935,7 @@ string[string] flow_txt_block_poem(CMM)( string[string] object_number_poem, CMM conf_make_meta, string[string] tag_in_seg, -) @safe { +) { static auto rgx = Rgx(); if (obj_type_status["curly_poem"] == TriState.on) { if (line.matchFirst(rgx.block_curly_poem_close)) { @@ -4189,7 +4191,7 @@ you need: #+name: abs_functions_block_table #+BEGIN_SRC d -string[string] flow_txt_block_table(CMM)( +@system string[string] flow_txt_block_table(CMM)( char[] line, string[string] an_object, return ref int[string] obj_type_status, @@ -4259,7 +4261,7 @@ process and use an_object["table_head"] (then empty it) #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d -void flow_table_closed_make_special_notation_table_(N,CMM)( +@system void flow_table_closed_make_special_notation_table_(N,CMM)( char[] line, return ref string[string] an_object, return ref ObjGenericComposite[] the_document_body_section, @@ -4308,7 +4310,7 @@ void flow_table_closed_make_special_notation_table_(N,CMM)( #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d -string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( +@system string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( char[] line, string[string] an_object, B bookindex_extract_hash, @@ -4666,7 +4668,7 @@ string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( #+name: abs_functions_book_index #+BEGIN_SRC d -string[string] flow_book_index_(B)( +@system string[string] flow_book_index_(B)( char[] line, string[string] an_object, return ref string book_idx_tmp, @@ -4723,13 +4725,13 @@ string[string] flow_book_index_(B)( #+name: abs_functions_heading #+BEGIN_SRC d -string[string] flow_heading_found_()( +@safe string[string] flow_heading_found_()( char[] line, string[string] heading_match_str, string[] _make_unmarked_headings, return ref Regex!(char)[string] heading_match_rgx, return ref int[string] obj_type_status -) @safe { +) { static auto rgx = Rgx(); if ((_make_unmarked_headings.length > 2) && (obj_type_status["make_headings"] == State.off)) { /+ headings found +/ @@ -4810,12 +4812,12 @@ string[string] flow_heading_found_()( #+name: abs_functions_heading #+BEGIN_SRC d -char[] flow_heading_make_set_()( +@safe char[] flow_heading_make_set_()( char[] line, int[string] line_occur, return ref Regex!(char)[string] heading_match_rgx, return ref int[string] obj_type_status -) @safe { +) { if ((obj_type_status["make_headings"] == State.on) && ((line_occur["para"] == State.off) && (line_occur["heading"] == State.off)) @@ -4872,7 +4874,7 @@ char[] flow_heading_make_set_()( #+name: abs_functions_heading #+BEGIN_SRC d -string[string] flow_heading_matched_(CMM)( +@safe string[string] flow_heading_matched_(CMM)( char[] line, string[string] an_object, return ref int[string] line_occur, @@ -4881,7 +4883,7 @@ string[string] flow_heading_matched_(CMM)( return ref int[string] collapsed_lev, return ref int[string] obj_type_status, return ref CMM conf_make_meta, -) @safe { +) { static auto rgx = Rgx(); if (auto m = line.match(rgx.heading)) { /+ heading match +/ ++line_occur["heading"]; @@ -5031,7 +5033,7 @@ string[string] flow_heading_matched_(CMM)( #+name: abs_functions_para #+BEGIN_SRC d -string[string] flow_para_match_()( +@safe string[string] flow_para_match_()( char[] line, string[string] an_object, return ref string an_object_key, @@ -5039,7 +5041,7 @@ string[string] flow_para_match_()( return ref bool bullet, return ref int[string] obj_type_status, return ref int[string] line_occur, -) @safe { +) { static auto rgx = Rgx(); if (line_occur["para"] == State.off) { line = font_faces_line(line); @@ -5090,9 +5092,9 @@ string[string] flow_para_match_()( #+name: abs_functions_para #+BEGIN_SRC d -char[] font_faces_line()( +@safe char[] font_faces_line()( char[] textline, -) @safe { +) { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); if (textline.match(rgx.inline_faces_line)) { @@ -5127,10 +5129,10 @@ char[] font_faces_line()( #+name: abs_functions_table #+BEGIN_SRC d -ObjGenericComposite flow_table_instructions(H)( +@safe ObjGenericComposite flow_table_instructions(H)( return ref ObjGenericComposite table_object, H table_head, -) @safe { +) { static auto rgx = Rgx(); table_object.metainfo.is_of_part = "body"; table_object.metainfo.is_of_section = "body"; @@ -5158,10 +5160,10 @@ ObjGenericComposite flow_table_instructions(H)( #+name: abs_functions_table #+BEGIN_SRC d -ObjGenericComposite flow_table_array_munge(T)( +@safe ObjGenericComposite flow_table_array_munge(T)( return ref ObjGenericComposite table_object, return ref T table_array, -) @safe { +) { static auto rgx = Rgx(); static auto mng = InlineMarkup(); string _table_substantive; @@ -5288,7 +5290,7 @@ ObjGenericComposite flow_table_array_munge(T)( #+name: abs_functions_table #+BEGIN_SRC d -ObjGenericComposite flow_table_substantive_munge(T)( +@system ObjGenericComposite flow_table_substantive_munge(T)( return ref ObjGenericComposite table_object, return ref T table_substantive, ) { @@ -5310,7 +5312,7 @@ ObjGenericComposite flow_table_substantive_munge(T)( #+name: abs_functions_table #+BEGIN_SRC d -ObjGenericComposite flow_table_substantive_munge_special(T)( +@system ObjGenericComposite flow_table_substantive_munge_special(T)( return ref ObjGenericComposite table_object, return ref T table_substantive, ) { @@ -5334,11 +5336,11 @@ ObjGenericComposite flow_table_substantive_munge_special(T)( #+name: meta_emitters_ocn #+BEGIN_SRC d -pure struct OCNemitter { +@safe pure struct OCNemitter { int ocn_digit, ocn_object_number, ocn_on_, ocn_off_, ocn_bkidx, ocn_bkidx_; string object_identifier; bool ocn_is_off; - auto ocn_emitter(int ocn_status_flag) @safe { + @safe auto ocn_emitter(int ocn_status_flag) { OCNset ocn; assert(ocn_status_flag <= OCNstatus.reset); ocn_object_number = ocn_bkidx = 0; @@ -5390,7 +5392,7 @@ pure struct OCNemitter { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d -static struct ObjInlineMarkupMunge { +@safe static struct ObjInlineMarkupMunge { string[string] obj_txt; int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus; string asterisks_, plus_; @@ -5398,7 +5400,7 @@ static struct ObjInlineMarkupMunge { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); int stage_reset_note_numbers = true; - private auto initialize_note_numbers() @safe { + private auto initialize_note_numbers() { n_foot = 0; n_foot_reg = 0; n_foot_sp_asterisk = 0; @@ -5408,7 +5410,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - static auto images()(string obj_txt_in) @safe { + @safe static auto images()(string obj_txt_in) { static auto mng = InlineMarkup(); /+ url matched +/ obj_txt_in = obj_txt_in.replaceAll(rgx.inline_notes_al_special, ""); // TODO reinstate when special footnotes are implemented @@ -5444,7 +5446,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) @safe { + @safe TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) { /+ endnotes (regular) +/ bool flg_notes_reg = false; bool flg_notes_star = false; @@ -5514,10 +5516,10 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()( + @safe private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()( string obj_txt_in, bool reset_note_numbers=false - ) @safe { + ) { obj_txt_out = ""; bool urls = false; bool images_without_dimensions = false; @@ -5585,10 +5587,10 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto munge_heading()( + @safe auto munge_heading()( string obj_txt_in, bool reset_note_numbers=false - ) @safe { + ) { obj_txt["munge"] = obj_txt_in .replaceFirst(rgx.heading, "") .replaceFirst(rgx.object_number_off_all, "") @@ -5616,7 +5618,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto munge_para()(string obj_txt_in) @safe { + @safe auto munge_para()(string obj_txt_in) { obj_txt["munge"]=(obj_txt_in) .replaceFirst(rgx.para_attribs, "") .replaceFirst(rgx.object_number_off_all, ""); @@ -5635,7 +5637,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - string munge_quote()(string obj_txt_in) @safe { + @safe string munge_quote()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; return obj_txt["munge"]; } @@ -5654,7 +5656,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto munge_group(string obj_txt_in) @safe { + @safe auto munge_group(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]); return t; @@ -5674,7 +5676,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto munge_block()(string obj_txt_in) @safe { + @safe auto munge_block()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]); return t; @@ -5694,7 +5696,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto munge_verse()(string obj_txt_in) @safe { + @safe auto munge_verse()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]); return t; @@ -5713,7 +5715,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - string munge_code()(string obj_txt_in) @safe { + @safe string munge_code()(string obj_txt_in) { obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp); obj_txt["munge"] = obj_txt_in; return obj_txt["munge"]; @@ -5728,7 +5730,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - string munge_table()(string obj_txt_in) @safe { + @safe string munge_table()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; return obj_txt["munge"]; } @@ -5740,7 +5742,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - string munge_comment()(string obj_txt_in) @safe { + @safe string munge_comment()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; return obj_txt["munge"]; } @@ -5771,12 +5773,12 @@ static struct ObjInlineMarkup { #+name: meta_emitters_obj_inline_markup_and_anchor_tags_and_misc #+BEGIN_SRC d - TxtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( + @safe TxtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( string[string] obj_, string obj_key_, CMM conf_make_meta, Flag!"_new_doc" _new_doc - ) @safe { + ) { obj_txt["munge"] = obj_[obj_key_].dup; obj_txt["munge"] = (obj_["is"].match(ctRegex!(`verse|code`))) ? obj_txt["munge"] @@ -5870,23 +5872,23 @@ static struct ObjInlineMarkup { #+name: meta_emitters_obj_inline_markup_table_of_contents #+BEGIN_SRC d - auto _clean_heading_toc_()( + @safe auto _clean_heading_toc_()( char[] heading_toc_, - ) @safe { + ) { auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading); heading_toc_ = (m.post).replaceAll( rgx.inline_notes_curly_gen, ""); return heading_toc_; }; - ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)( + @safe ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)( string[string] obj_, CMM conf_make_meta, string[string] tag_in_seg, string _anchor_tag, return ref string[][string] lev4_subtoc, ObjGenericComposite[] the_table_of_contents_section, - ) @safe { + ) { ObjGenericComposite comp_obj_toc; mixin InternalMarkup; static auto mkup = InlineMarkup(); @@ -5982,12 +5984,12 @@ private: static string heading_number_auto_composite = ""; static string heading_number_auto_composite_segname = ""; static bool[] auto_heading_numbering = [ true, true, true, true]; - static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( + @safe static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( string munge_, string[string] obj_, CMM conf_make_meta, bool _new_doc, - ) @safe { + ) { if (_new_doc) { heading_num = [ 0, 0, 0, 0 ]; heading_number_auto_composite = ""; @@ -6132,11 +6134,11 @@ private: #+name: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags #+BEGIN_SRC d static int heading_num_lev1 = 0; - static string _make_segment_anchor_tags_if_none_provided()( + @safe static string _make_segment_anchor_tags_if_none_provided()( string munge_, string lev_, bool _new_doc - ) @safe { + ) { if (!(munge_.match(rgx.heading_anchor_tag))) { if (munge_.match(rgx.heading_identify_anchor_tag)) { if (auto m = munge_.match(rgx.heading_extract_named_anchor_tag)) { @@ -6187,11 +6189,11 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_public #+BEGIN_SRC d - string obj_attributes()( + @safe string obj_attributes()( string obj_is_, string obj_raw, ObjGenericComposite _comp_obj_heading, - ) @safe { + ) { scope(exit) { destroy(obj_is_); destroy(obj_raw); @@ -6262,7 +6264,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_para_and_blocks()(string obj_txt_in) { + @safe string txt_para_and_blocks()(string obj_txt_in) { if (obj_txt_in.matchFirst(rgx.para_bullet)) { _obj_attributes =" \"bullet\": \"true\"," ~ " \"indent_hang\": 0," @@ -6292,7 +6294,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_heading()(string obj_txt_in) @safe { + @safe string txt_heading()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," ~ " \"is\": \"heading\""; @@ -6306,7 +6308,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_para()(string obj_txt_in) @safe { + @safe string txt_para()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," ~ " \"is\": \"para\""; @@ -6320,7 +6322,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_quote()(string obj_txt_in) @safe { + @safe string txt_quote()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"quote\""; @@ -6334,7 +6336,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_group()(string obj_txt_in) @safe { + @safe string txt_group()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"group\""; @@ -6348,7 +6350,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_block()(string obj_txt_in) @safe { + @safe string txt_block()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"block\""; @@ -6362,7 +6364,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_verse()(string obj_txt_in) @safe { + @safe string txt_verse()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"verse\""; @@ -6376,7 +6378,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_code()(string obj_txt_in) @safe { + @safe string txt_code()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"code\""; @@ -6390,7 +6392,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_table()(string obj_txt_in) @safe { + @safe string txt_table()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"table\""; @@ -6404,7 +6406,7 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string txt_comment()(string obj_txt_in) @safe { + @safe string txt_comment()(string obj_txt_in) { _obj_attributes = " \"use\": \"comment\"," ~ " \"of\": \"comment\"," ~ " \"is\": \"comment\""; @@ -6418,11 +6420,11 @@ struct ObjAttributes { #+name: meta_emitters_obj_attributes_private_json #+BEGIN_SRC d - string _set_additional_values_parse_as_json()( + @safe string _set_additional_values_parse_as_json()( string _obj_attrib, string obj_is_, ObjGenericComposite _comp_obj_heading, - ) @safe { + ) { JSONValue oa_j = parseJSON(_obj_attrib); assert( (oa_j.type == JSON_TYPE.OBJECT) @@ -6461,11 +6463,11 @@ struct BookIndexNuggetHash { string[] object_numbers; string[][string][string] bi_hash_nugget; string[] bi_main_terms_split_arr; - string[][string][string] bookindex_nugget_hash(N,S)( + @safe string[][string][string] bookindex_nugget_hash(N,S)( string bookindex_section, N obj_cite_digits, S tag_in_seg, - ) @safe { + ) { debug(asserts) { static assert(is(typeof(obj_cite_digits.object_number) == int)); } @@ -6537,9 +6539,9 @@ struct BookIndexNuggetHash { #+BEGIN_SRC d struct BookIndexReportIndent { int mkn, skn; - void bookindex_report_indented()( + @safe void bookindex_report_indented()( string[][string][string] bookindex_unordered_hashes - ) @safe { + ) { auto mainkeys = bookindex_unordered_hashes.byKey.array.sort().release; foreach (mainkey; mainkeys) { @@ -6578,9 +6580,9 @@ struct BookIndexReportSection { #+name: meta_emitters_book_index_report_section #+BEGIN_SRC d - void bookindex_write_section()( + @safe void bookindex_write_section()( string[][string][string] bookindex_unordered_hashes - ) @safe { + ) { auto mainkeys = bookindex_unordered_hashes.byKey.array .sort!("toUpper(a) < toUpper(b)", SwapStrategy.stable).release; @@ -6613,7 +6615,7 @@ struct BookIndexReportSection { #+name: meta_emitters_book_index_report_section #+BEGIN_SRC d - auto bookindex_build_abstraction_section(N,B)( + @system auto bookindex_build_abstraction_section(N,B)( string[][string][string] bookindex_unordered_hashes, N obj_cite_digits, B opt_action, @@ -6794,11 +6796,11 @@ struct NotesSection { #+name: meta_emitters_endnotes #+BEGIN_SRC d - private auto gather_notes_for_endnote_section( + @safe private auto gather_notes_for_endnote_section( ObjGenericComposite[] contents_am, string[string] tag_in_seg, int cntr, - ) @safe { + ) { assert((contents_am[cntr].metainfo.is_a == "para") || (contents_am[cntr].metainfo.is_a == "heading") || (contents_am[cntr].metainfo.is_a == "quote") @@ -6880,7 +6882,7 @@ struct NotesSection { #+name: meta_emitters_endnotes #+BEGIN_SRC d - private auto gathered_notes() @safe { + @safe private auto gathered_notes() { string[][string] endnotes_; if (object_notes.length > 1) { endnotes_["notes"] = (object_notes["notes"].split(rgx.break_string))[0..$-1]; @@ -6897,10 +6899,10 @@ struct NotesSection { #+name: meta_emitters_endnotes #+BEGIN_SRC d - private auto endnote_objects(N,O)( + @safe private auto endnote_objects(N,O)( N obj_cite_digits, O opt_action, - ) @safe { + ) { mixin spineNode; ObjGenericComposite[] the_endnotes_section; auto endnotes_ = gathered_notes(); @@ -7028,7 +7030,7 @@ struct Bibliography { #+name: meta_emitters_bibliography #+BEGIN_SRC d - public JSONValue[] flow_bibliography_()( +@system public JSONValue[] flow_bibliography_()( return ref string[] biblio_unsorted_incomplete, return ref JSONValue[] bib_arr_json ) { @@ -7059,7 +7061,7 @@ struct Bibliography { #+name: meta_emitters_bibliography #+BEGIN_SRC d - final private JSONValue[] biblio_make_unsorted_array_of_json_objects()( + @system final private JSONValue[] biblio_make_unsorted_array_of_json_objects()( string[] biblio_unordered, JSONValue[] bib_arr_json ) { @@ -7093,7 +7095,7 @@ struct Bibliography { #+name: meta_emitters_bibliography #+BEGIN_SRC d - final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) { + @system final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) { JSONValue[] biblio_sorted_; biblio_sorted_ = sort!((a, b){ @@ -7114,7 +7116,7 @@ struct Bibliography { #+name: meta_emitters_bibliography #+BEGIN_SRC d - void biblio_debug()(JSONValue[] biblio_sorted) { + @system void biblio_debug()(JSONValue[] biblio_sorted) { debug(biblio0) { foreach (j; biblio_sorted) { if (!empty(j["fulltitle"].str)) { @@ -7148,7 +7150,7 @@ struct NodeStructureMetadata { #+name: meta_emitters_metadata #+BEGIN_SRC d - ObjGenericComposite node_location_emitter(La,Ta,N)( + @safe ObjGenericComposite node_location_emitter(La,Ta,N)( string lev_markup_number, string[string] tag_in_seg, La lev_anchor_tag, @@ -7157,7 +7159,7 @@ struct NodeStructureMetadata { int cntr_, int ptr_, string is_ - ) @safe { + ) { debug(asserts) { static assert(is(typeof(obj_cite_digits.object_number) == int)); } @@ -7208,7 +7210,7 @@ struct NodeStructureMetadata { #+name: meta_emitters_metadata #+BEGIN_SRC d - ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)( + @safe ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)( string _text, string lev_markup_number, string lev_collapsed_number, @@ -7225,7 +7227,7 @@ struct NodeStructureMetadata { fNr flag_notes_reg, fNs flag_notes_star, fL flag_links, - ) @safe { + ) { debug(asserts) { static assert(is(typeof(lev) == string)); static assert(is(typeof(obj_cite_digits.object_number) == int)); @@ -7418,10 +7420,10 @@ struct NodeStructureMetadata { #+name: abs_functions_assertions #+BEGIN_SRC d -pure void assertions_doc_structure()( +@safe pure void assertions_doc_structure()( string[string] an_object, int[string] lv -) @safe { +) { if (lv["h3"] > State.off) { assert(lv["h0"] > State.off); assert(lv["h1"] > State.off); @@ -7599,7 +7601,7 @@ pure void assertions_doc_structure()( #+name: abs_functions_assertions #+BEGIN_SRC d -pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) @safe { +@safe pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) { assert( (obj_type_status["code"] == TriState.off) || (obj_type_status["code"] == TriState.closing), @@ -7628,7 +7630,7 @@ pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_ty #+name: template_doc_sect_keys_seq #+BEGIN_SRC d template docSectKeysSeq() { - auto docSectKeysSeq(string[][string] document_section_keys_sequenced) @safe { + @safe auto docSectKeysSeq(string[][string] document_section_keys_sequenced) { struct doc_sect_keys_seq { string[] scroll() { return document_section_keys_sequenced["scroll"]; @@ -7704,22 +7706,22 @@ struct DocObj_MetaInfo_ { int o_n_bibliography = 0; int o_n_book_index = 0; int o_n_blurb = 0; - string object_number_substantive() const @property { + @safe string object_number_substantive() const @property { return (o_n_substantive==0) ? "" : o_n_substantive.to!string; } - string object_number_non_substantive() const @property { + @safe string object_number_non_substantive() const @property { return (o_n_non_substantive==0) ? "" : o_n_non_substantive.to!string; } - string object_number_glossary() const @property { + @safe string object_number_glossary() const @property { return (o_n_glossary==0) ? "" : o_n_glossary.to!string; } - string object_number_bibliography() const @property { + @safe string object_number_bibliography() const @property { return (o_n_bibliography==0) ? "" : o_n_bibliography.to!string; } - string object_number_book_index() const @property { + @safe string object_number_book_index() const @property { return (o_n_book_index==0) ? "" : o_n_book_index.to!string; } - string object_number_blurb() const @property { + @safe string object_number_blurb() const @property { return (o_n_blurb==0) ? "" : o_n_blurb.to!string; } bool object_number_off = false; @@ -7729,13 +7731,13 @@ struct DocObj_MetaInfo_ { string[string][string] node; int ocn = 0; string identifier = ""; - string object_number() const @property { + @safe string object_number() const @property { return (ocn==0) ? "" : ocn.to!string; } int o_n_type = 0; int heading_lev_markup = 9; int heading_lev_collapsed = 9; - string marked_up_level() const @property { + @safe string marked_up_level() const @property { string _out; switch (heading_lev_markup) { case 0 : _out = "A"; break; diff --git a/org/out_harvest_metadata.org b/org/out_harvest_metadata.org index 4b7fe7e..cb26cf0 100644 --- a/org/out_harvest_metadata.org +++ b/org/out_harvest_metadata.org @@ -22,10 +22,10 @@ #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_harvest.d" module doc_reform.meta.metadoc_harvest; template spineMetaDocHarvest() { - auto spineMetaDocHarvest(T,H)( + @safe auto spineMetaDocHarvest(T,H)( T doc_matters, H hvst, - ) @safe { + ) { <<metadoc_harvest_imports>> mixin InternalMarkup; <<metadoc_harvest_initialize>> diff --git a/org/out_latex.org b/org/out_latex.org index 8a84ceb..cb73d5c 100644 --- a/org/out_latex.org +++ b/org/out_latex.org @@ -129,7 +129,7 @@ import #+BEGIN_SRC d auto paper() { struct PaperType { - auto a4() @safe { + @safe auto a4() { struct A4 { auto portrait() { struct V { @@ -150,7 +150,7 @@ import } return A4(); } - auto a5() @safe { + @safe auto a5() { struct A5 { auto portrait() { struct V { @@ -171,7 +171,7 @@ import } return A5(); } - auto b4() @safe { + @safe auto b4() { struct B4 { auto portrait() { struct V { @@ -192,7 +192,7 @@ import } return B4(); } - auto letter() @safe { + @safe auto letter() { struct Letter { auto portrait() { struct V { @@ -213,7 +213,7 @@ import } return Letter(); } - auto legal() @safe { + @safe auto legal() { struct Legal { auto portrait() { struct V { @@ -244,10 +244,10 @@ import #+name: output_latex_shared #+BEGIN_SRC d -string sp_char_esc(O)( +@safe string sp_char_esc(O)( string _txt, const O obj, -) @safe { +) { string _unescape_sp_char_esc()(string _txt) { _txt = _txt .replaceAll(rgx.latex_special_char_escaped, @@ -273,9 +273,9 @@ string sp_char_esc(O)( #+name: output_latex_shared #+BEGIN_SRC d -string sp_char_esc_txt()( +@safe string sp_char_esc_txt()( string _txt, -) @safe { +) { string _unescape_sp_char_esc()(string _txt) { _txt = _txt .replaceAll(rgx.latex_special_char_escaped, @@ -300,9 +300,9 @@ string sp_char_esc_txt()( *** not used latex \escape special characters #+BEGIN_SRC d -string sp_char_esc()( +@safe string sp_char_esc()( string _txt, -) @safe { +) { _txt = replaceAll!(m => "\\" ~ m[1])(_txt, rgx.latex_special_char); return _txt; } @@ -315,9 +315,9 @@ string sp_char_esc()( #+name: output_latex_shared #+BEGIN_SRC d -string fontface()( +@safe string fontface()( string _txt, -) @safe { +) { _txt = _txt .replaceAll(rgx.inline_emphasis, format(q"┃\begin{bfseries}%s\end{bfseries}┃", "$1")) .replaceAll(rgx.inline_bold, format(q"┃\begin{bfseries}%s\end{bfseries}┃", "$1")) @@ -338,9 +338,9 @@ _txt = _txt #+name: output_latex_shared #+BEGIN_SRC d -string leading_hardspaces()( +@safe string leading_hardspaces()( string _txt, -) @safe { +) { string hardspaces(string _spaces) { _spaces = _spaces .replaceAll(rgx.space, "\\hardspace "); @@ -355,7 +355,7 @@ string leading_hardspaces()( #+name: output_latex_shared #+BEGIN_SRC d -string nbsp_char()(string _txt) @safe { +@safe string nbsp_char()(string _txt) { if (_txt.match(rgx.nbsp_char)) { _txt = _txt.replaceAll(rgx.nbsp_char, "\\hardspace "); } @@ -367,7 +367,7 @@ string nbsp_char()(string _txt) @safe { #+name: output_latex_shared #+BEGIN_SRC d -string nbsp_char_to_space()(string _txt) @safe { +@safe string nbsp_char_to_space()(string _txt) { if (_txt.match(rgx.nbsp_char)) { _txt = _txt.replaceAll(rgx.nbsp_char, " "); } @@ -380,11 +380,11 @@ string nbsp_char_to_space()(string _txt) @safe { #+name: output_latex_shared #+BEGIN_SRC d -string links_and_images(O,M)( +@safe string links_and_images(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { if (obj.has.inline_links) { // TODO some images do not have inline links ... image without link string _width_adjust(string _width) { if (_width.to!int > 300) { _width = "300"; } // will need to vary max with papersize & orientation @@ -432,9 +432,9 @@ string links_and_images(O,M)( #+name: output_latex_shared #+BEGIN_SRC d -string footnotes()( +@safe string footnotes()( string _txt, -) @safe { +) { if (_txt.match(rgx.inline_notes_al_gen)) { string _tex_note = q"┃\hypertarget{noteref_%s}{}\footnote[%s]{%% \label{note_%s}%s}┃"; @@ -453,9 +453,9 @@ string footnotes()( #+name: output_latex_shared #+BEGIN_SRC d -string remove_footnotes()( +@safe string remove_footnotes()( string _txt, -) @safe { +) { if (_txt.match(rgx.inline_notes_al_gen)) { _txt = replaceAll!(m => "")(_txt, rgx.inline_notes_al_gen); } @@ -468,10 +468,10 @@ string remove_footnotes()( #+name: output_latex_shared #+BEGIN_SRC d -string para(O)( +@safe string para(O)( string _txt, O obj, -) @safe { +) { if (obj.metainfo.is_of_type == "para") { string _tex_para; _tex_para = q"┃\begin{tiny}\hspace{0mm}\end{tiny}{\marginpar{\begin{tiny}\hspace{0mm}\hypertarget{%s}{%s}\end{tiny}}}%s┃"; @@ -489,10 +489,10 @@ string para(O)( #+name: output_latex_shared #+BEGIN_SRC d -string bookindex(O)( +@safe string bookindex(O)( string _txt, O obj, -) @safe { +) { if (obj.metainfo.is_of_type == "para" && obj.metainfo.is_a == "bookindex" ) { @@ -510,10 +510,10 @@ string bookindex(O)( #+name: output_latex_head #+BEGIN_SRC d -string bullets_and_indentation(O)( +@safe string bullets_and_indentation(O)( string _txt, O obj, -) @safe { +) { string _tex_para; string _hang; string _indent; int _paper_margin = -10; @@ -555,12 +555,12 @@ string bullets_and_indentation(O)( #+name: output_latex_shared_0 #+BEGIN_SRC d - string heading(O,M)( + @safe string heading(O,M)( string _txt, O obj, M doc_matters, string _part = "" - ) @safe { + ) { if (obj.metainfo.is_a == "heading") { string _tex_para; string _pg_break; diff --git a/org/out_metadata.org b/org/out_metadata.org index e8da2c4..3208994 100644 --- a/org/out_metadata.org +++ b/org/out_metadata.org @@ -22,7 +22,7 @@ #+BEGIN_SRC d :tangle "../src/doc_reform/io_out/metadata.d" module doc_reform.io_out.metadata; template outputMetadata() { - void outputMetadata(T)( T doc_matters) @safe { + @safe void outputMetadata(T)( T doc_matters) { <<output_imports>> <<harvested_html_themes>> <<harvested_topics_html_head_1>> @@ -235,7 +235,7 @@ metadata_write_output(doc_matters, metadata_); #+name: output_metadata_write #+BEGIN_SRC d -void metadata_write_output(M)(M doc_matters, string[] metadata_) @trusted { +@safe void metadata_write_output(M)(M doc_matters, string[] metadata_) { auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); try { if (!exists(pth_html.base)) { diff --git a/org/out_odt.org b/org/out_odt.org index e843a48..224f303 100644 --- a/org/out_odt.org +++ b/org/out_odt.org @@ -89,7 +89,7 @@ template outputODT() { #+name: odt_format_objects #+BEGIN_SRC d -string _tags(O)(const O obj) @safe { +@safe string _tags(O)(const O obj) { string _tags = ""; if (obj.tags.anchor_tags.length > 0) { foreach (tag_; obj.tags.anchor_tags) { @@ -113,7 +113,7 @@ string _tags(O)(const O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string _xhtml_anchor_tags(O)(O obj) @safe { +@safe string _xhtml_anchor_tags(O)(O obj) { const(string[]) anchor_tags = obj.tags.anchor_tags; string tags=""; if (anchor_tags.length > 0) { @@ -131,7 +131,7 @@ string _xhtml_anchor_tags(O)(O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string obj_num(O)(const O obj) @safe { // TODO +@safe string obj_num(O)(const O obj) { // TODO string _on; _on = (obj.metainfo.object_number.empty) ? "" @@ -147,7 +147,7 @@ string obj_num(O)(const O obj) @safe { // TODO #+name: odt_format_objects #+begin_src d -string _footnotes()(string _txt) @safe { +@safe string _footnotes()(string _txt) { static auto rgx = Rgx(); _txt = _txt.replaceAll( rgx.inline_notes_al_regular_number_note, @@ -172,7 +172,7 @@ string _footnotes()(string _txt) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string _bullet(O)(const O obj) @safe { +@safe string _bullet(O)(const O obj) { string _b = ""; if (obj.attrib.bullet) { _b = format(q"┃● ┃",); @@ -185,7 +185,7 @@ string _bullet(O)(const O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string _indent(O)(string _txt, const O obj) @safe { // TODO +@safe string _indent(O)(string _txt, const O obj) { // TODO // if (obj.attrib.indent_base > 0 || // obj.attrib.indent_hang > 0 // ) { @@ -299,7 +299,7 @@ string _indent(O)(string _txt, const O obj) @safe { // TODO #+name: odt_format_objects #+BEGIN_SRC d -string _block_type_delimiters(O)(string[] _block_lines, const O obj) @safe { // TODO +@safe string _block_type_delimiters(O)(string[] _block_lines, const O obj) { // TODO string _block = ""; foreach (i, _line; _block_lines) { _line = _footnotes(_line); @@ -340,7 +340,7 @@ string _block_type_delimiters(O)(string[] _block_lines, const O obj) @safe { // #+name: odt_format_objects #+BEGIN_SRC d -string _special_characters(O)(string _txt, const O obj) @safe { +@safe string _special_characters(O)(string _txt, const O obj) { _txt = _txt .replaceAll(rgx.xhtml_ampersand, "&") .replaceAll(rgx.xhtml_quotation, """) @@ -355,7 +355,7 @@ string _special_characters(O)(string _txt, const O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string _preserve_white_spaces(O)(string _txt, const O obj) @safe { +@safe string _preserve_white_spaces(O)(string _txt, const O obj) { if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") { _txt = _txt .replaceAll(rgx.space, " "); @@ -388,9 +388,9 @@ string _font_face(string _txt){ #+name: odt_format_objects #+BEGIN_SRC d -auto _obj_num(O)(O obj) @safe { // NOT USED YET +@safe auto _obj_num(O)(O obj) { // NOT USED YET struct objNum { - string reference() @safe { + @safe string reference() { return format(q"┃<text:span text:style-name="Span_subscript"> <text:bookmark-start text:name="%s"/> <text:bookmark-end text:name="%s"/> @@ -399,7 +399,7 @@ auto _obj_num(O)(O obj) @safe { // NOT USED YET obj.object_number, ); } - string display() @safe { + @safe string display() { return format(q"┃<text:span text:style-name="Span_subscript"> %s%s%s </text:span>┃", @@ -417,7 +417,7 @@ auto _obj_num(O)(O obj) @safe { // NOT USED YET #+name: odt_format_objects #+BEGIN_SRC d -string _break_page()() @safe { +@safe string _break_page()() { return format(q"┃ <text:p text:style-name="P_normal_page_new"/> ┃", @@ -426,7 +426,7 @@ string _break_page()() @safe { #+END_SRC #+BEGIN_SRC d -string _break_page()() @safe { +@safe string _break_page()() { return format(q"┃ <text:p text:style-name="P_page_break"> </text:p> <text:p text:style-name="P_normal_page_new"/>┃", @@ -438,7 +438,7 @@ string _break_page()() @safe { #+name: odt_format_objects #+BEGIN_SRC d -string _empty_line_break(O)(string _txt, const O obj) @safe { +@safe string _empty_line_break(O)(string _txt, const O obj) { if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") { _txt = _txt .replaceAll(rgx.br_empty_line, "<br />"); @@ -451,7 +451,7 @@ string _empty_line_break(O)(string _txt, const O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string _links(O)(string _txt, const O obj) @safe { +@safe string _links(O)(string _txt, const O obj) { if (obj.metainfo.is_a != "code") { if (obj.metainfo.is_a == "toc") { _txt = replaceAll!(m => @@ -497,7 +497,7 @@ string _links(O)(string _txt, const O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string _images(O)(string _txt, const O obj) @safe { +@safe string _images(O)(string _txt, const O obj) { if (_txt.match(rgx.inline_image)) { _txt = _txt .replaceAll(rgx.inline_image, @@ -514,7 +514,7 @@ string _images(O)(string _txt, const O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string markup(O)(const O obj) @safe { +@safe string markup(O)(const O obj) { /+ markup TODO +/ string _txt = obj.text; _txt = _special_characters(_txt, obj); // TODO & why both obj & obj.text, consider also in output_xmls.org @@ -536,10 +536,10 @@ string markup(O)(const O obj) @safe { #+name: odt_format_objects #+BEGIN_SRC d -string heading(O,M)( +@safe string heading(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -586,10 +586,10 @@ string heading(O,M)( #+name: odt_format_objects #+BEGIN_SRC d -string para(O,M)( +@safe string para(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -612,10 +612,10 @@ string para(O,M)( #+name: odt_format_objects #+BEGIN_SRC d -string quote(O,M)( +@safe string quote(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -633,10 +633,10 @@ string quote(O,M)( #+name: odt_format_objects #+BEGIN_SRC d -string group(O,M)( +@safe string group(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -668,10 +668,10 @@ string group(O,M)( #+name: odt_format_objects #+BEGIN_SRC d -string block(O,M)( +@safe string block(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -691,10 +691,10 @@ string block(O,M)( #+name: odt_format_objects #+BEGIN_SRC d -string verse(O,M)( +@safe string verse(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -710,10 +710,10 @@ string verse(O,M)( #+name: odt_format_objects #+BEGIN_SRC d -string code(O,M)( +@safe string code(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); @@ -764,10 +764,10 @@ string code(O,M)( #+name: odt_format_objects #+BEGIN_SRC d -Tuple!(string, string) tablarize(O)( +@safe Tuple!(string, string) tablarize(O)( const O obj, string _txt, -) @safe { +) { string[] _table_rows = (_txt).split(rgx.table_delimiter_row); string[] _table_cols; string _table; @@ -805,10 +805,10 @@ Tuple!(string, string) tablarize(O)( #+name: odt_format_objects #+BEGIN_SRC d int _table_number = 0; -string table(O,M)( +@safe string table(O,M)( const O obj, const M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); @@ -1011,7 +1011,7 @@ void dirtree(I)( #+name: output_odt_fixed_mimetype #+BEGIN_SRC d -string mimetype() @safe { +@safe string mimetype() { string mimetype_ = format(q"┃application/vnd.oasis.opendocument.text┃"); return mimetype_; } @@ -1021,7 +1021,7 @@ string mimetype() @safe { #+name: output_odt_fixed_manifest_rdf #+BEGIN_SRC d -string manifest_rdf() @safe { +@safe string manifest_rdf() { string _manifest_rdf = format(q"┃<?xml version="1.0" encoding="utf-8"?> #+END_SRC @@ -1057,7 +1057,7 @@ string manifest_rdf() @safe { #+name: output_odt_fixed_settings_xml #+BEGIN_SRC d -string settings_xml() @safe { +@safe string settings_xml() { string _settings_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?> #+END_SRC @@ -1171,7 +1171,7 @@ string settings_xml() @safe { #+name: output_odt_fixed_styles_xml #+BEGIN_SRC d -string styles_xml() @safe { +@safe string styles_xml() { string _styles_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?> #+END_SRC @@ -2084,7 +2084,7 @@ string styles_xml() @safe { #+name: output_odt_variable_content_xml #+BEGIN_SRC d -string odt_head(I)(I doc_matters) @safe { +@safe string odt_head(I)(I doc_matters) { string _has_tables = format(q"┃ #+END_SRC @@ -2223,10 +2223,10 @@ string odt_head(I)(I doc_matters) @safe { #+name: output_odt_variable_content_xml #+BEGIN_SRC d -string odt_body(D,I)( +@safe string odt_body(D,I)( const D doc_abstraction, I doc_matters, -) @safe { +) { mixin formatODT; auto odt_format = formatODT(); string delimit = ""; @@ -2390,7 +2390,7 @@ string odt_body(D,I)( #+name: output_odt_variable_content_xml #+BEGIN_SRC d -string odt_tail() @safe { +@safe string odt_tail() { string _odt_tail = format(q"┃<text:p text:style-name="P_normal">spine: <<text:a xl:type="simple" xl:href="http://www.doc_reform.org">www.doc_reform.org</text:a>> and <<text:a xl:type="simple" xl:href="http://www.sisudoc.org">www.sisudoc.org</text:a>></text:p> </office:text></office:body></office:document-content>┃",); return _odt_tail; @@ -2401,10 +2401,10 @@ string odt_tail() @safe { #+name: output_odt_variable_content_xml #+BEGIN_SRC d -string content_xml(D,I)( +@safe string content_xml(D,I)( const D doc_abstraction, I doc_matters, -) @safe { +) { string _content_xml; string break_line = (doc_matters.opt.action.debug_do) ? "\n" : ""; string odt_break_page = format(q"┃<text:p text:style-name="P_normal_page_new"/>┃",); @@ -2422,9 +2422,9 @@ string content_xml(D,I)( #+name: output_odt_variable_manifest_xml #+BEGIN_SRC d -string manifest_xml(M)( +@safe string manifest_xml(M)( auto ref M doc_matters, -) @safe { +) { string _bullet = format(q"┃<manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/bullet_09.png"/>┃"); string[] _images = [ _bullet ]; foreach (image; doc_matters.srcs.image_list) { @@ -2460,9 +2460,9 @@ _images.join("\n"), #+name: output_odt_variable_meta_xml #+BEGIN_SRC d -string meta_xml(M)( +@safe string meta_xml(M)( auto ref M doc_matters, -) @safe { +) { /+ (meta_xml includes output time-stamp) +/ string _meta_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?> #+END_SRC @@ -2494,9 +2494,9 @@ doc_matters.generated_time, #+name: output_odt_variable_copy_odt_images #+BEGIN_SRC d -void images_cp(M)( +@safe void images_cp(M)( auto ref M doc_matters, -) @safe { +) { { /+ (copy odt images) +/ auto pth_odt = spinePathsODT!()(doc_matters); foreach (image; doc_matters.srcs.image_list) { diff --git a/org/out_src_pod.org b/org/out_src_pod.org index fa0bedb..9f87629 100644 --- a/org/out_src_pod.org +++ b/org/out_src_pod.org @@ -78,7 +78,7 @@ assert (doc_matters.src.filename.match(rgx.src_fn)); #+name: source_pod_archive #+BEGIN_SRC d -auto pod_archive(Z)( +@system auto pod_archive(Z)( string _source_type, string _data_in, string _pth_out, diff --git a/org/out_xmls.org b/org/out_xmls.org index 9738c23..ed3c92a 100644 --- a/org/out_xmls.org +++ b/org/out_xmls.org @@ -58,10 +58,10 @@ import #+name: xhtml_format_objects #+BEGIN_SRC d -string div_delimit( +@safe string div_delimit( string part, return ref string previous_part -) @safe { +) { string delimit = ""; string delimit_ = ""; if (part != previous_part) { @@ -94,7 +94,7 @@ string div_delimit( #+name: xhtml_format_objects #+BEGIN_SRC d -string special_characters_text(string _txt) @safe { +@safe string special_characters_text(string _txt) { _txt = _txt .replaceAll(rgx.xhtml_ampersand, "&") .replaceAll(rgx.xhtml_quotation, """) @@ -109,9 +109,9 @@ string special_characters_text(string _txt) @safe { #+name: xhtml_format_objects #+BEGIN_SRC d -string special_characters(O)( +@safe string special_characters(O)( const O obj, -) @safe { +) { string _txt = special_characters_text(obj.text); if (!(obj.metainfo.is_a == "code")) { _txt = (_txt) @@ -125,7 +125,7 @@ string special_characters(O)( #+name: xhtml_format_objects #+BEGIN_SRC d -string font_face(string _txt) @safe { +@safe string font_face(string _txt) { _txt = _txt .replaceAll(rgx.inline_emphasis, ("<em>$1</em>")) .replaceAll(rgx.inline_bold, ("<b>$1</b>")) @@ -145,7 +145,7 @@ string font_face(string _txt) @safe { #+name: xhtml_format_objects #+BEGIN_SRC d -string _xhtml_anchor_tags(O)(O obj) @safe { +@safe string _xhtml_anchor_tags(O)(O obj) { const(string[]) anchor_tags = obj.tags.anchor_tags; string tags=""; if (anchor_tags.length > 0) { @@ -164,9 +164,9 @@ string _xhtml_anchor_tags(O)(O obj) @safe { #+name: xhtml_format_objects #+BEGIN_SRC d -string header_metadata(M)( +@safe string header_metadata(M)( M doc_matters, -) @safe { +) { string _publisher="Publisher"; // TODO string o; o = format(q"┃<!-- spine DocReform header metadata --> @@ -207,9 +207,9 @@ string header_metadata(M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string site_info_button(M)( +@safe string site_info_button(M)( M doc_matters, -) @safe { +) { string _locations; if (doc_matters.conf_make_meta.make.home_button_text.length > 0) { _locations = (doc_matters.conf_make_meta.make.home_button_text) @@ -237,9 +237,9 @@ string site_info_button(M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string inline_search_form(M)( +@safe string inline_search_form(M)( M doc_matters, -) @safe { +) { string _action="http://www.sisudoc.org/cgi-bin/search.cgi"; string _db="spine.7a.manual"; string o; @@ -274,7 +274,7 @@ string inline_search_form(M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string html_head(M)( +@safe string html_head(M)( M doc_matters, string type, ) { @@ -330,9 +330,9 @@ string html_head(M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string epub3_seg_head(M)( +@safe string epub3_seg_head(M)( M doc_matters, -) @safe { +) { string html_base = format(q"┃<!DOCTYPE html> <html>┃", ); @@ -404,7 +404,7 @@ string epub3_seg_head(M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string tail() @safe { +@safe string tail() { string o; o = format(q"┃ <a name="bottom" id="bottom"></a> @@ -420,13 +420,13 @@ string tail() @safe { #+name: xhtml_format_objects #+BEGIN_SRC d -string inline_images(O,M)( +@safe string inline_images(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "seg", -) @safe { +) { string _img_pth; switch (_xml_type) { case "epub": _img_pth = "image/"; break; @@ -453,13 +453,13 @@ string inline_images(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string inline_links(O,M)( +@safe string inline_links(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "seg", -) @safe { +) { string seg_lvs; if (obj.has.inline_links) { if (obj.metainfo.is_a != "code") { @@ -551,11 +551,11 @@ string inline_links(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string inline_notes_scroll(O,M)( +@safe string inline_notes_scroll(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { if (obj.has.inline_notes_reg) { _txt = font_face(_txt); _txt = _txt.replaceAll( @@ -588,11 +588,11 @@ string inline_notes_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string[]) inline_notes_seg(O,M)( +@safe Tuple!(string, string[]) inline_notes_seg(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { string[] _endnotes; if (obj.has.inline_notes_star) { _txt = font_face(_txt); @@ -659,12 +659,12 @@ Tuple!(string, string[]) inline_notes_seg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string inline_markup_scroll(O,M)( +@safe string inline_markup_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", -) @safe { +) { if (obj.metainfo.dummy_heading && (obj.metainfo.is_a == "toc" || obj.metainfo.is_a == "heading")) { _txt = ""; @@ -681,13 +681,13 @@ string inline_markup_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -auto inline_markup_seg(O,M)( +@safe auto inline_markup_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "seg", -) @safe { +) { if (obj.metainfo.dummy_heading && ((_xml_type == "epub" && (obj.metainfo.is_a == "toc" || obj.metainfo.is_a == "heading")) @@ -708,10 +708,10 @@ auto inline_markup_seg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string lev4_heading_subtoc(O,M)( +@safe string lev4_heading_subtoc(O,M)( const O obj, M doc_matters, -) @safe { +) { char[] lev4_subtoc; lev4_subtoc ~= " <div class=\"nav\">\n"; foreach (subtoc; obj.tags.lev4_subtoc) { @@ -741,10 +741,10 @@ string lev4_heading_subtoc(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -auto nav_pre_next_svg(O,M)( +@safe auto nav_pre_next_svg(O,M)( const O obj, M doc_matters, -) @safe { +) { string prev, next, toc; if (obj.tags.segment_anchor_tag_epub == "toc") { toc = ""; @@ -824,12 +824,12 @@ auto nav_pre_next_svg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string heading(O,M)( +@safe string heading(O,M)( string _txt, const O obj, M doc_matters, string _xml_type = "html", -) @safe { +) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -895,12 +895,12 @@ string heading(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string heading_scroll(O,M)( +@safe string heading_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", -) @safe { +) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = heading(_txt, obj, doc_matters); return o; @@ -911,13 +911,13 @@ string heading_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string[]) heading_seg(O,M)( +@safe Tuple!(string, string[]) heading_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0]; string[] _endnotes = t[1]; @@ -935,11 +935,11 @@ Tuple!(string, string[]) heading_seg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string para(O,M)( +@safe string para(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -991,12 +991,12 @@ string para(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string para_scroll(O,M)( +@safe string para_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", -) @safe { +) { if (obj.metainfo.is_a == "toc" && _txt.match(rgx.inline_link_toc_to_backmatter)) { _txt = _txt.replaceAll(rgx.inline_link_toc_to_backmatter, "┤#section_$1├"); } @@ -1010,13 +1010,13 @@ string para_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string[]) para_seg(O,M)( +@safe Tuple!(string, string[]) para_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -1034,11 +1034,11 @@ Tuple!(string, string[]) para_seg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string quote(O,M)( +@safe string quote(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -1076,12 +1076,12 @@ string quote(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string quote_scroll(O,M)( +@safe string quote_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", -) @safe { +) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = quote(_txt, obj, doc_matters); return o; @@ -1092,13 +1092,13 @@ string quote_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string[]) quote_seg(O,M)( +@safe Tuple!(string, string[]) quote_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -1116,11 +1116,11 @@ Tuple!(string, string[]) quote_seg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string group(O,M)( +@safe string group(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -1158,13 +1158,13 @@ string group(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string group_scroll(O,M)( +@safe string group_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = group(_txt, obj, doc_matters); return o; @@ -1175,13 +1175,13 @@ string group_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string[]) group_seg(O,M)( +@safe Tuple!(string, string[]) group_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -1199,11 +1199,11 @@ Tuple!(string, string[]) group_seg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string block(O,M)( +@safe string block(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -1237,13 +1237,13 @@ string block(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string block_scroll(O,M)( +@safe string block_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = block(_txt, obj, doc_matters); return o; @@ -1254,13 +1254,13 @@ string block_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string[]) block_seg(O,M)( +@safe Tuple!(string, string[]) block_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -1278,11 +1278,11 @@ Tuple!(string, string[]) block_seg(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string verse(O,M)( +@safe string verse(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -1316,13 +1316,13 @@ string verse(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -string verse_scroll(O,M)( +@safe string verse_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = verse(_txt, obj, doc_matters); return o; @@ -1333,13 +1333,13 @@ string verse_scroll(O,M)( #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string[]) verse_seg(O,M)( +@safe Tuple!(string, string[]) verse_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", -) @safe { +) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -1356,11 +1356,11 @@ Tuple!(string, string[]) verse_seg(O,M)( #+name: xhtml_format_objects_code #+BEGIN_SRC d -string code(O,M)( +@safe string code(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); @@ -1428,10 +1428,10 @@ align="left|right|center" #+name: xhtml_format_objects #+BEGIN_SRC d -Tuple!(string, string) tablarize(O)( +@safe Tuple!(string, string) tablarize(O)( string _txt, const O obj, -) @safe { +) { string[] _table_rows = (_txt).split(rgx.table_delimiter_row); string[] _table_cols; string _table; @@ -1467,11 +1467,11 @@ Tuple!(string, string) tablarize(O)( #+name: xhtml_format_objects #+BEGIN_SRC d -string table(O,M)( +@safe string table(O,M)( string _txt, const O obj, M doc_matters, -) @safe { +) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); @@ -1523,10 +1523,10 @@ template outputHTML() { #+name: output_html_scroll #+BEGIN_SRC d -void scroll(D,M)( +@safe void scroll(D,M)( const D doc_abstraction, M doc_matters, -) @safe { +) { mixin spineOutputRgxInit; auto xhtml_format = outputXHTMLs(); static auto rgx = Rgx(); @@ -1729,10 +1729,10 @@ void scroll(D,M)( #+name: output_html_scroll #+BEGIN_SRC d -void scroll_write_output(D,M)( +@trusted void scroll_write_output(D,M)( D doc, M doc_matters, -) @trusted { +) { debug(asserts) { static assert(is(typeof(doc) == string[])); } @@ -1759,10 +1759,10 @@ void scroll_write_output(D,M)( #+name: output_html_seg #+BEGIN_SRC d -void seg(D,M)( +@safe void seg(D,M)( const D doc_abstraction, M doc_matters, -) @safe { +) { mixin spineOutputRgxInit; static auto rgx = Rgx(); auto xhtml_format = outputXHTMLs(); @@ -2060,11 +2060,11 @@ void seg(D,M)( #+name: output_html_seg #+BEGIN_SRC d -void seg_write_output(D,E,M)( +@trusted void seg_write_output(D,E,M)( // @system? D doc_html, E doc_html_endnotes, M doc_matters, -) @trusted { // @system? +) { debug(asserts) { static assert(is(typeof(doc_html) == string[][string])); } @@ -2100,7 +2100,7 @@ void seg_write_output(D,E,M)( #+name: output_html_css #+BEGIN_SRC d -void css(M)(M doc_matters) @safe { +@safe void css(M)(M doc_matters) { auto css = spineCss(doc_matters); auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); try { @@ -2121,9 +2121,9 @@ void css(M)(M doc_matters) @safe { #+name: copy_html_images #+BEGIN_SRC d -void images_cp(M)( +@trusted void images_cp(M)( // @system M doc_matters, -) @trusted { // @system +) { { /+ (copy html images) +/ auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); @@ -2190,7 +2190,7 @@ template outputEPub3() { #+name: output_epub3_fixed #+BEGIN_SRC d -string epub3_mimetypes() @safe { +@safe string epub3_mimetypes() { string o; o = format(q"┃application/epub+zip┃") ~ "\n"; return o; @@ -2203,7 +2203,7 @@ string epub3_mimetypes() @safe { #+name: output_epub3_fixed #+BEGIN_SRC d -string epub3_container_xml() @safe { +@safe string epub3_container_xml() { string o; o = format(q"┃<?xml version='1.0' encoding='utf-8'?>┃") ~ "\n"; o ~= format(q"┃<container version="1.0" @@ -2225,7 +2225,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> #+name: output_epub3_constructs #+BEGIN_SRC d -string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) @safe { +@safe string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) { auto xhtml_format = outputXHTMLs(); auto pth_epub3 = spinePathsEPUB!()(doc_matters.output_path, doc_matters.src.language); string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! @@ -2331,7 +2331,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) @sa #+name: output_epub3_constructs #+BEGIN_SRC d -string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) @safe { +@safe string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { enum DomTags { none, open, close, close_and_open, open_still, } auto markup = InlineMarkup(); static auto rgx = Rgx(); @@ -2419,7 +2419,7 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) @safe { #+name: output_epub3_constructs #+BEGIN_SRC d -string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) @safe { +@safe string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) { int counter = 0; string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere auto markup = InlineMarkup(); @@ -2515,10 +2515,10 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) @safe { #+name: output_epub3_xhtml_seg #+BEGIN_SRC d -void outputEPub3(D,I)( +@system void outputEPub3(D,I)( const D doc_abstraction, I doc_matters, -) { // @trusted +) { mixin spineOutputRgxInit; auto xhtml_format = outputXHTMLs(); static auto rgx = Rgx(); @@ -2872,10 +2872,10 @@ void outputEPub3(D,I)( #+name: output_epub3_xhtml_seg #+BEGIN_SRC d -void epub3_write_output_files(W,M)( +@system void epub3_write_output_files(W,M)( W epub_write, M doc_matters, -) { // @trusted +) { debug(asserts) { static assert(is(typeof(epub_write.doc_epub3) == string[][string])); static assert(is(typeof(epub_write.mimetypes) == string)); diff --git a/org/out_xmls_css.org b/org/out_xmls_css.org index d827e30..b1f9a77 100644 --- a/org/out_xmls_css.org +++ b/org/out_xmls_css.org @@ -28,7 +28,7 @@ module doc_reform.io_out.xmls_css; template spineCss() { import std.format; - auto spineCss(M)(M doc_matters) @safe { + @safe auto spineCss(M)(M doc_matters) { <<css_insert_shared_insert_variable_indent_values>> <<css_insert_shared_insert_variable_ocn_color_values>> string _css_light_html_seg = format(q"┃ @@ -79,7 +79,7 @@ template spineCss() { _css_indent, _color_ocn_dark, ); - auto css_() @safe { + @safe auto css_() { struct _CSS { string html_seg = "/* spine css html seg stylesheet */\n"; string html_scroll = "/* spine css html scroll stylesheet */\n"; diff --git a/org/out_zip.org b/org/out_zip.org index ef4b036..f8821ff 100644 --- a/org/out_zip.org +++ b/org/out_zip.org @@ -29,7 +29,7 @@ template createZipFile() { import std.outbuffer; import std.string; import std.zip; - void createZipFile( + @safe void createZipFile( string zip_file_name, void[] compressed_zip_data, ) { diff --git a/org/output_hub.org b/org/output_hub.org index aad6240..4f2d3e0 100644 --- a/org/output_hub.org +++ b/org/output_hub.org @@ -29,7 +29,10 @@ module doc_reform.io_out.hub; template outputHub() { <<output_imports>> import std.parallelism; - void outputHub(D,I)(const D doc_abstraction, I doc_matters) { + @system void outputHub(D,I)( + const D doc_abstraction, + I doc_matters + ) { mixin spineOutputRgxInit; mixin Msg; auto msg = Msg!()(doc_matters); @@ -56,7 +59,7 @@ template outputHub() { } template outputHubOp() { <<output_imports>> - void outputHubOp(E,O)(E env, O opt_action) { + @system void outputHubOp(E,O)(E env, O opt_action) { mixin spineOutputRgxInit; static auto rgx = Rgx(); <<output_options_op>> diff --git a/org/output_show.org b/org/output_show.org index 7ce14f2..951c88a 100644 --- a/org/output_show.org +++ b/org/output_show.org @@ -22,7 +22,7 @@ #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_summary.d" module doc_reform.meta.metadoc_show_summary; template spineMetaDocSummary() { - void spineMetaDocSummary(S,T)( + @safe void spineMetaDocSummary(S,T)( const S doc_abstraction, T doc_matters, ) { @@ -137,7 +137,7 @@ writefln( #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_config.d" module doc_reform.meta.metadoc_show_config; template spineShowConfig() { - void spineShowConfig(T)( + @safe void spineShowConfig(T)( T doc_matters, ) { <<metadoc_show_summary_imports>> @@ -239,7 +239,7 @@ writefln( #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_make.d" module doc_reform.meta.metadoc_show_make; template spineShowMake() { - void spineShowMake(T)( + @safe void spineShowMake(T)( T doc_matters, ) { <<metadoc_show_summary_imports>> @@ -310,7 +310,7 @@ writefln( #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_metadata.d" module doc_reform.meta.metadoc_show_metadata; template spineShowMetaData() { - void spineShowMetaData(T)( + @safe void spineShowMetaData(T)( T doc_matters, ) { <<metadoc_show_summary_imports>> diff --git a/org/spine.org b/org/spine.org index 27dfdc1..5c66ce6 100644 --- a/org/spine.org +++ b/org/spine.org @@ -85,7 +85,7 @@ name "spine" description "A SiSU inspired document parser writen in D." homepage "http://sisudoc.org" +/ -void main(string[] args) { +@system void main(string[] args) { <<spine_mixin>> <<spine_init>> <<spine_args>> @@ -458,16 +458,16 @@ if (helpInfo.helpWanted) { #+BEGIN_SRC d enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff } struct OptActions { - bool assertions() @trusted { + @trusted bool assertions() { return opts["assertions"]; } - bool concordance() @trusted { + @trusted bool concordance() { return opts["concordance"]; } auto config_path_set() { return settings["config"]; } - bool css_theme_default() @trusted { + @trusted bool css_theme_default() { bool _is_light; if (opts["light"] || opts["theme-light"]) { _is_light = true; @@ -478,94 +478,94 @@ struct OptActions { } return _is_light; } - bool debug_do() @trusted { + @trusted bool debug_do() { return opts["debug"]; } - bool digest() @trusted { + @trusted bool digest() { return opts["digest"]; } - bool epub() @trusted { + @trusted bool epub() { return opts["epub"]; } - bool harvest_link() @trusted { + @trusted bool harvest_link() { return (opts["harvest-link"]) ? true : false; } - bool harvest() @trusted { + @trusted bool harvest() { return (opts["harvest"] || opts["harvest-authors"] || opts["harvest-topics"]) ? true : false; } - bool harvest_authors() @trusted { + @trusted bool harvest_authors() { return (opts["harvest"] || opts["harvest-authors"]) ? true : false; } - bool harvest_topics() @trusted { + @trusted bool harvest_topics() { return (opts["harvest"] || opts["harvest-topics"]) ? true : false; } - bool html() @trusted { + @trusted bool html() { return (opts["html"] || opts["html-seg"] || opts["html-scroll"]) ? true : false; } - bool html_seg() @trusted { + @trusted bool html_seg() { return (opts["html"] || opts["html-seg"]) ? true : false; } - bool html_scroll() @trusted { + @trusted bool html_scroll() { return (opts["html"] || opts["html-scroll"]) ? true : false; } - bool html_stuff() @trusted { + @trusted bool html_stuff() { return (opts["html"] || opts["html-scroll"] || opts["html-seg"]) ? true : false; } - bool latex() @trusted { + @trusted bool latex() { return (opts["latex"] || opts["pdf"]) ? true : false; } - bool odt() @trusted { + @trusted bool odt() { return (opts["odf"] || opts["odt"]) ? true : false; } - bool manifest() @trusted { + @trusted bool manifest() { return opts["manifest"]; } - bool ocn_hidden() @trusted { + @trusted bool ocn_hidden() { return opts["hide-ocn"]; } - bool ocn_off() @trusted { + @trusted bool ocn_off() { return opts["ocn-off"]; } - bool quiet() @trusted { + @trusted bool quiet() { return opts["quiet"]; } - bool pod() @trusted { + @trusted bool pod() { return opts["pod"]; } - bool show_summary() @trusted { + @trusted bool show_summary() { return opts["show-summary"]; } - bool show_make() @trusted { + @trusted bool show_make() { return opts["show-make"]; } - bool show_metadata() @trusted { + @trusted bool show_metadata() { return opts["show-metadata"]; } - bool show_config() @trusted { + @trusted bool show_config() { return opts["show-config"]; } - bool source() @trusted { + @trusted bool source() { return opts["source"]; } - bool source_or_pod() @trusted { + @trusted bool source_or_pod() { return (opts["pod"] || opts["source"]) ? true : false; } - bool sqlite_discrete() @trusted { + @trusted bool sqlite_discrete() { return opts["sqlite-discrete"]; } - bool sqlite_db_drop() @trusted { + @trusted bool sqlite_db_drop() { return (opts["sqlite-db-recreate"] || opts["sqlite-db-drop"]) ? true : false; } - bool sqlite_db_create() @trusted { + @trusted bool sqlite_db_create() { return (opts["sqlite-db-recreate"] || opts["sqlite-db-create"]) ? true : false; } - bool sqlite_delete() @trusted { + @trusted bool sqlite_delete() { return opts["sqlite-delete"]; } - bool sqlite_update() @trusted { + @trusted bool sqlite_update() { return (opts["sqlite-update"] || opts["sqlite-insert"]) ? true : false; } - bool sqlite_shared_db_action() @trusted { + @trusted bool sqlite_shared_db_action() { return ( opts["sqlite-db-recreate"] || opts["sqlite-db-create"] @@ -574,46 +574,46 @@ struct OptActions { || opts["sqlite-update"] ) ? true : false; } - bool text() @trusted { + @trusted bool text() { return opts["text"]; } - bool verbose() @trusted { + @trusted bool verbose() { return (opts["verbose"] || opts["very-verbose"]) ? true : false; } - bool very_verbose() @trusted { + @trusted bool very_verbose() { return opts["very-verbose"]; } - bool xhtml() @trusted { + @trusted bool xhtml() { return opts["xhtml"]; } - bool section_toc() @trusted { + @trusted bool section_toc() { return opts["section_toc"]; } - bool section_body() @trusted { + @trusted bool section_body() { return opts["section_body"]; } - bool section_endnotes() @trusted { + @trusted bool section_endnotes() { return opts["section_endnotes"]; } - bool section_glossary() @trusted { + @trusted bool section_glossary() { return opts["section_glossary"]; } - bool section_biblio() @trusted { + @trusted bool section_biblio() { return opts["section_biblio"]; } - bool section_bookindex() @trusted { + @trusted bool section_bookindex() { return opts["section_bookindex"]; } - bool section_blurb() @trusted { + @trusted bool section_blurb() { return opts["section_blurb"]; } - bool backmatter() @trusted { + @trusted bool backmatter() { return opts["backmatter"]; } - bool skip_output() @trusted { + @trusted bool skip_output() { return opts["skip-output"]; } - bool workon() @trusted { + @trusted bool workon() { return opts["workon"]; } auto languages_set() { @@ -625,7 +625,7 @@ struct OptActions { auto sqlite_filename() { return settings["sqlite-filename"]; } - bool parallelise() @trusted { + @trusted bool parallelise() { bool _is; if (opts["parallel"] == true) { _is = true; @@ -649,7 +649,7 @@ struct OptActions { } else { _is = false; } return _is; } - bool parallelise_subprocesses() @trusted { + @trusted bool parallelise_subprocesses() { return opts["parallel-subprocesses"]; } auto output_task_scheduler() { @@ -680,7 +680,7 @@ struct OptActions { } return schedule.sort().uniq; } - bool abstraction() @trusted { + @trusted bool abstraction() { return ( opts["abstraction"] || concordance @@ -696,7 +696,7 @@ struct OptActions { || sqlite_update ) ? true : false; } - bool meta_processing_general() @trusted { + @trusted bool meta_processing_general() { return ( opts["abstraction"] || html @@ -707,7 +707,7 @@ struct OptActions { || sqlite_update ) ? true :false; } - bool meta_processing_xml_dom() @trusted { + @trusted bool meta_processing_xml_dom() { return ( opts["abstraction"] || html @@ -726,20 +726,20 @@ auto _opt_action = OptActions(); #+NAME: spine_args #+BEGIN_SRC d -auto program_info() { +@safe auto program_info() { struct ProgramInfo { - string project() { + @safe string project() { return project_name; } - string name() { + @safe string name() { return program_name; } - string ver() { + @safe string ver() { return format("%s.%s.%s", _ver.major, _ver.minor, _ver.patch, ); } - string compiler() { + @safe string compiler() { return format ("%s D:%s, %s %s", __VENDOR__, __VERSION__, bits, os, @@ -1168,7 +1168,7 @@ template spineAbstraction() { enum makeMeta { make, meta } enum docAbst { doc_abstract_obj, doc_has } static auto rgx = Rgx(); - auto spineAbstraction(E,P,O,M,S)( + @system auto spineAbstraction(E,P,O,M,S)( E _env, P program_info, O _opt_action, @@ -1339,39 +1339,39 @@ struct DocumentMatters { #+NAME: spine_each_file_do_document_matters #+BEGIN_SRC d - auto generator_program() { + @safe auto generator_program() { struct Prog_ { - string project_name() { + @safe string project_name() { return "spine"; } - string name() { + @safe string name() { return program_info.name; } - string ver() { + @safe string ver() { return program_info.ver; } - string name_and_version() @trusted { + @trusted string name_and_version() { return format("%s-%s", name, ver, ); } - string url_home() { + @safe string url_home() { return "http://sisudoc.org"; } - string url_git() { + @safe string url_git() { return "https://git.sisudoc.org/software/sisu"; } - auto compiler() { + @safe auto compiler() { return program_info.compiler; } - auto stime() { + @safe auto stime() { return Clock.currTime(UTC()).toSimpleString(); } } return Prog_(); } - auto generated_time() { + @safe auto generated_time() { auto _st = Clock.currTime(UTC()); auto _time = _st.year.to!string ~ "-" ~ _st.month.to!int.to!string // prefer as month number @@ -1388,10 +1388,10 @@ struct DocumentMatters { #+NAME: spine_each_file_do_document_matters #+BEGIN_SRC d - auto conf_make_meta() { + @safe auto conf_make_meta() { return _make_and_meta_struct; } - auto has() { + @safe auto has() { return _doc_has_struct; } #+END_SRC @@ -1400,12 +1400,12 @@ struct DocumentMatters { #+NAME: spine_each_file_do_document_matters #+BEGIN_SRC d - auto env() { + @safe auto env() { struct Env_ { - auto pwd() { + @safe auto pwd() { return _manifest.env.pwd; } - auto home() { + @safe auto home() { return _manifest.env.home; } } @@ -1417,9 +1417,9 @@ struct DocumentMatters { #+NAME: spine_each_file_do_document_matters #+BEGIN_SRC d - auto opt() { + @safe auto opt() { struct Opt_ { - auto action() { + @safe auto action() { /+ getopt options, commandline instructions, raw - processing instructions --epub --html etc. - command line config instructions --output-path @@ -1435,27 +1435,27 @@ struct DocumentMatters { #+NAME: spine_each_file_do_document_matters #+BEGIN_SRC d - auto src() { + @safe auto src() { return _manifest.src; } - auto src_path_info() { + @safe auto src_path_info() { return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path } - auto pod() { + @safe auto pod() { return _manifest.pod; } - auto sqlite() { + @safe auto sqlite() { struct SQLite_ { - string filename() { + @safe string filename() { return _opt_action.sqlite_filename; } } return SQLite_(); } - auto output_path() { + @safe auto output_path() { return _make_and_meta_struct.conf.output_path; } - auto srcs() { + @safe auto srcs() { struct SRC_ { auto file_insert_list() { return _header_body_insertfilelist_imagelist[headBody.insert_file_list]; @@ -1487,72 +1487,6 @@ if ((_opt_action.debug_do) } #+END_SRC -**** H. abridged doc matters, for harvest (from doc head only, doc abstraction not performed) -- harvest abridged doc matters gathered -***** doc matters shared - -#+NAME: spine_each_file_do_document_matters_abridged -#+BEGIN_SRC d -if ((_opt_action.debug_do) -|| (_opt_action.verbose) -) { - writeln("step4 commence → (doc_matters)"); -} -struct DocumentMattersShared { - auto env() { - struct Env_ { - auto pwd() { - return _manifest.env.pwd; - } - auto home() { - return _manifest.env.home; - } - } - return Env_(); - } - auto opt() { - struct Opt_ { - auto action() { - return _opt_action; - } - } - return Opt_(); - } -} -DocumentMattersShared doc_matters_shared = DocumentMattersShared(); -#+END_SRC - -***** abridged doc matters, for harvest (from doc head only, doc abstraction not performed) TODO - -#+NAME: spine_each_file_do_document_matters_abridged -#+BEGIN_SRC d -struct DocumentMattersAbridged { - auto conf_make_meta() { - return _make_and_meta_struct; - } - auto src() { - return _manifest.src; - } - auto src_path_info() { - return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); - } - auto pod() { - return _manifest.pod; - } - auto sqlite() { - struct SQLite_ { - string filename() { - return _opt_action.sqlite_filename; - } - } - return SQLite_(); - } - auto output_path() { - return _make_and_meta_struct.conf.output_path; - } -} -#+END_SRC - * __END__ dev notes diff --git a/src/doc_reform/io_in/paths_source.d b/src/doc_reform/io_in/paths_source.d index 05ceda4..f3b1e8a 100644 --- a/src/doc_reform/io_in/paths_source.d +++ b/src/doc_reform/io_in/paths_source.d @@ -16,7 +16,7 @@ import template PodManifest() { mixin spineRgxInit; static auto rgx = Rgx(); - auto PodManifest(O)( + @safe auto PodManifest(O)( O _opt_actions, string _pth="" ) { @@ -24,7 +24,7 @@ template PodManifest() { string pod_manifest_filename() { return "pod.manifest"; } - string pod_manifest_path() { + @safe string pod_manifest_path() { string _manifest_path; if ((isValidPath(_pth) && exists(_pth) != 0 && _pth.isDir) && (exists(_pth.chainPath(pod_manifest_filename).array) != 0 @@ -46,10 +46,10 @@ template PodManifest() { } return _manifest_path; } - string pods_collection_root_path() { + @safe string pods_collection_root_path() { return (pod_manifest_path.length > 0) ? ((chainPath(pod_manifest_path, "..")).asNormalizedPath).array.to!string : ""; } - string pod_manifest_file_with_path() { + @safe string pod_manifest_file_with_path() { string _k; if (exists(pod_manifest_path.chainPath(pod_manifest_filename).array)!=0) { _k = pod_manifest_path.chainPath(pod_manifest_filename).array; @@ -71,14 +71,14 @@ template PathMatters() { mixin InternalMarkup; static auto rgx = Rgx(); static auto mkup = InlineMarkup(); - auto PathMatters(O,E)( + @safe auto PathMatters(O,E)( O _opt_actions, E _env, string _pth, string _fns = "", char[][] _manifest_fn_list = [[]], ) { - auto _manifested = PodManifest!()(_opt_actions, _pth); + @safe auto _manifested = PodManifest!()(_opt_actions, _pth); struct ManifestMatters_ { auto env() { auto _env = _env; @@ -92,7 +92,7 @@ template PathMatters() { } return Env_(); } - auto opt() { + @safe auto opt() { struct Opt_ { auto action() { return _opt_actions; @@ -100,45 +100,45 @@ template PathMatters() { } return Opt_(); } - bool src_is_pod() { + @safe bool src_is_pod() { return (_manifested.pod_manifest_path.length > 0) ? true : false; } - auto pod() { + @safe auto pod() { struct Pod_ { - bool src_is_pod() { + @safe bool src_is_pod() { return (_manifested.pod_manifest_path.length > 0) ? true : false; } - string collection_root() { + @safe string collection_root() { return _manifested.pods_collection_root_path; } - string manifest_filename() { + @safe string manifest_filename() { return _manifested.pod_manifest_filename; } - string manifest_path() { + @safe string manifest_path() { return _manifested.pod_manifest_path; } - string pod_name_with_path() { + @safe string pod_name_with_path() { return _manifested.pod_manifest_path.baseName; } - string manifest_file_with_path() { + @safe string manifest_file_with_path() { return _manifested.pod_manifest_file_with_path; } - string[] config_dr_document_make_dirs() { + @safe string[] config_dr_document_make_dirs() { string[] _config_dirs; return _config_dirs; } - string[] config_local_site_dirs() { + @safe string[] config_local_site_dirs() { string[] _config_dirs; return _config_dirs; } - string[] image_dirs() { + @safe string[] image_dirs() { string[] _image_dirs; return _image_dirs; } - auto manifest_list_of_filenames() { + @safe auto manifest_list_of_filenames() { return _manifest_fn_list; } - string[] manifest_list_of_languages() { + @safe string[] manifest_list_of_languages() { string[] _lngs; foreach (filename_; manifest_list_of_filenames) { string _k = "en"; @@ -152,43 +152,43 @@ template PathMatters() { } return Pod_(); } - auto src() { + @safe auto src() { string _fns = _fns; // required here by dmd & not by ldc (for D:2078) auto _opt_actions = _opt_actions; auto _env = _env; struct SRC_ { - bool is_pod() { + @safe bool is_pod() { return (_manifested.pod_manifest_path.length > 0) ? true : false; } - string path_and_fn() { + @safe string path_and_fn() { return _fns; } - string pod_name_with_path() { + @safe string pod_name_with_path() { return (is_pod) ? _manifested.pod_manifest_path : ""; } - string pods_collection_root_path() { + @safe string pods_collection_root_path() { return (is_pod) ? _manifested.pods_collection_root_path : ""; } - string pod_name() { + @safe string pod_name() { return pod_name_with_path.baseName; } - string filename() { + @safe string filename() { return path_and_fn.baseName; } - string filename_base() { + @safe string filename_base() { return filename.stripExtension; } - string filename_extension() { + @safe string filename_extension() { return filename.match(rgx.src_pth_sst_or_ssm).captures["extension"]; } - string lng() { + @safe string lng() { string _k; if (auto m = path_and_fn.match(rgx.language_code_and_filename)) { _k = m.captures[1]; } else {_k = "en"; } return _k; } - string doc_uid() { + @safe string doc_uid() { string _uid; if (is_pod && !(pod_name_with_path.empty)) { if (pod_name_with_path.baseName == filename_base) { @@ -201,7 +201,7 @@ template PathMatters() { } return _uid; } - string doc_uid_out() { + @safe string doc_uid_out() { string _uid; if (is_pod && !(pod_name_with_path.empty)) { if (pod_name_with_path.baseName == filename_base) { @@ -214,7 +214,7 @@ template PathMatters() { } return _uid; } - string docname_composite_unique_per_src_doc() { + @safe string docname_composite_unique_per_src_doc() { string _fn; if (pod_name_with_path.baseName == filename_base) { _fn = filename_base ~ mkup.sep ~ filename_extension ~ mkup.sep ~ lng; @@ -225,7 +225,7 @@ template PathMatters() { } return _fn; } - string docname_composite_unique_per_src_pod() { + @safe string docname_composite_unique_per_src_pod() { /+ z pod name if any + src filename (without lng code) filename ~ mkup.sep ~ lng @@ -244,19 +244,19 @@ template PathMatters() { } return _fn; } - string language() { + @safe string language() { return lng(); } - string file_with_absolute_path() { + @safe string file_with_absolute_path() { return _env["pwd"].chainPath(path_and_fn).array; } - string absolute_path_to_src() { + @safe string absolute_path_to_src() { return (_env["pwd"].chainPath(path_and_fn)).dirName.array; } - string path_to_doc_root_path_to_lang_and_filename() { + @safe string path_to_doc_root_path_to_lang_and_filename() { return _env["pwd"].chainPath(path_and_fn).array; } - string base_dir() { + @safe string base_dir() { string _dir; if ( auto m = (absolute_path_to_src) @@ -274,7 +274,7 @@ template PathMatters() { } return _dir; } - string base_parent_dir_path() { + @safe string base_parent_dir_path() { string _dir; if ( auto m = (absolute_path_to_src) @@ -286,7 +286,7 @@ template PathMatters() { } return _dir; } - string base_dir_path() { + @safe string base_dir_path() { string _dir; if ( auto m = (absolute_path_to_src) @@ -306,11 +306,11 @@ template PathMatters() { } return _dir; } - string media_dir_path() { + @safe string media_dir_path() { string _dir = ((base_dir_path.chainPath("media")).asNormalizedPath).array; return _dir; } - string image_dir_path() { + @safe string image_dir_path() { string _paths; string[] _possible_img_pths = [ "./image", "../image", "../../image" ]; string _img_pth_found = ""; @@ -334,10 +334,10 @@ template PathMatters() { } return _img_pth_found; } - auto conf_dir_path() { + @safe auto conf_dir_path() { return ((base_dir_path.chainPath("conf")).asNormalizedPath).array; } - auto base_parent_dir() { + @safe auto base_parent_dir() { string _dir; if ( auto m = (absolute_path_to_src) @@ -352,13 +352,13 @@ template PathMatters() { } return _dir; } - string[] config_dirs() { + @safe string[] config_dirs() { string[] _config_dirs; if (is_pod) { } else {} return _config_dirs; } - string[] image_dirs() { + @safe string[] image_dirs() { string[] _image_dirs; if (is_pod) { } else {} @@ -367,7 +367,7 @@ template PathMatters() { } return SRC_(); } - auto output() { + @safe auto output() { /+ - command line if output path set - config file if found and set set @@ -381,7 +381,7 @@ template PathMatters() { +/ auto _env = _env; struct Out_ { - auto path() { + @safe auto path() { auto _output_path = _env["pwd"]; if ((_opt_actions.output_dir_set.length > 0) && isValidPath(_opt_actions.output_dir_set) @@ -411,21 +411,21 @@ template PathMatters() { template ConfigFilePaths() { mixin spineRgxInit; static auto rgx = Rgx(); - auto ConfigFilePaths(M,E)( + @safe auto ConfigFilePaths(M,E)( M _manifested, E _env, string _cli_config_path_set = "" ) { struct ConfFilePaths { - string config_filename_document() { + @safe string config_filename_document() { return "dr_document_make"; } - string config_filename_site() { + @safe string config_filename_site() { return "config_local_site"; } - auto possible_config_path_locations() { + @safe auto possible_config_path_locations() { struct _ConfFilePaths { - string[] dr_document_make() { + @safe string[] dr_document_make() { /+ FIX clean up conf paths ↓ +/ /+ config local site (file system only, not in pod) +/ /+ return paths +/ @@ -474,7 +474,7 @@ template ConfigFilePaths() { +/ return _possible_config_path_locations; } - string[] config_local_site() { + @safe string[] config_local_site() { /+ FIX clean up conf paths ↓ +/ /+ config local site (file system only, not in pod) +/ string[] _possible_config_path_locations; @@ -533,15 +533,15 @@ template ConfigFilePaths() { template spinePathsSRC() { mixin spineRgxInit; static auto rgx = Rgx(); - auto spinePathsSRC(D,Fn)( + @safe auto spinePathsSRC(D,Fn)( D _pwd, Fn _fn_src_and_path, ) { struct drSrcPaths { - auto pwd() { + @safe auto pwd() { return _pwd; } - string language() { + @safe string language() { // use command line info as well? string _k; if (auto m = _fn_src_and_path.match(rgx.language_code_and_filename)) { @@ -551,28 +551,28 @@ template spinePathsSRC() { } return _k; } - string doc_root() { + @safe string doc_root() { return "dr_doc"; } - auto media_root() { + @safe auto media_root() { return ((doc_root.chainPath("media")).asNormalizedPath).array; } - auto conf_root() { + @safe auto conf_root() { return ((doc_root.chainPath("conf")).asNormalizedPath).array; } - auto text_root() { + @safe auto text_root() { return ((media_root.chainPath("text")).asNormalizedPath).array; } - auto image_root() { + @safe auto image_root() { return ((media_root.chainPath("image")).asNormalizedPath).array; } - auto doc_src_fn_with_path_for_text_root_and_lng() { + @safe auto doc_src_fn_with_path_for_text_root_and_lng() { return ((text_root.chainPath(language)).asNormalizedPath).array; } - auto doc_src_fn() { + @safe auto doc_src_fn() { return ((_fn_src_and_path.baseName).asNormalizedPath).array; } - auto doc_src_with_path() { + @safe auto doc_src_with_path() { return ((pwd.chainPath(_fn_src_and_path)).asNormalizedPath).array; } } diff --git a/src/doc_reform/io_in/read_config_files.d b/src/doc_reform/io_in/read_config_files.d index 1f6faa3..ce16f24 100644 --- a/src/doc_reform/io_in/read_config_files.d +++ b/src/doc_reform/io_in/read_config_files.d @@ -14,7 +14,7 @@ static template readConfigSite() { std.file, std.path; mixin spineRgxInit; - final auto readConfigSite(C)(C _conf_file_details) { + @system final auto readConfigSite(C)(C _conf_file_details) { static auto rgx = Rgx(); string conf_filename = "NONE"; string config_file_str; @@ -119,7 +119,7 @@ static template readConfigDoc() { std.file, std.path; mixin spineRgxInit; - final auto readConfigDoc(M,E)(M _manifested, E _env) { + @system final auto readConfigDoc(M,E)(M _manifested, E _env) { static auto rgx = Rgx(); string config_file_str; string conf_filename = "NONE"; @@ -146,13 +146,13 @@ static template readConfigDoc() { if (config_file_str.length > 0) { break; } } struct _ConfContent { - string filename() { + @safe string filename() { return conf_filename; } - string content() { + @safe string content() { return config_file_str; } - string filetype() { + @safe string filetype() { string _ft = ""; if (content.match(rgx.yaml_config)) { _ft = "yaml"; @@ -169,7 +169,7 @@ static template configReadSiteYAML() { doc_reform.io_in.paths_source, std.file, std.path; - final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { + @safe final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInSiteYAML!()(_manifested, _env); auto _conf_file_details = ConfigFilePaths!()(_manifested, _env); string _conf_yaml_fn = _conf_file_details.config_filename_site; @@ -183,7 +183,7 @@ static template configReadDocYAML() { doc_reform.io_in.paths_source, std.file, std.path; - final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { + @safe final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInDocYAML!()(_manifested, _env); auto _conf_file_details = ConfigFilePaths!()(_manifested, _env); string _conf_yaml_fn = _conf_file_details.config_filename_document; diff --git a/src/doc_reform/io_in/read_source_files.d b/src/doc_reform/io_in/read_source_files.d index ba3e145..fcbd075 100644 --- a/src/doc_reform/io_in/read_source_files.d +++ b/src/doc_reform/io_in/read_source_files.d @@ -15,7 +15,7 @@ static template spineRawMarkupContent() { mixin spineRgxInit; static auto rgx = Rgx(); string[] _images=[]; - string[] _extract_images(S)(S content_block) @safe { + @safe string[] _extract_images(S)(S content_block) { string[] images_; string _content_block = content_block.to!string; if (auto m = _content_block.matchAll(rgx.image)) { @@ -35,19 +35,19 @@ static template spineRawMarkupContent() { string[], "insert_files", string[], "images" ); - auto spineRawMarkupContent(O,Fn)(O _opt_action, Fn fn_src) @safe { + @safe auto spineRawMarkupContent(O,Fn)(O _opt_action, Fn fn_src) { auto _0_header_1_body_content_2_insert_filelist_tuple = rawsrc.sourceContentSplitIntoHeaderAndBody(_opt_action, rawsrc.sourceContent(fn_src), fn_src); return _0_header_1_body_content_2_insert_filelist_tuple; } struct RawMarkupContent { - final sourceContent(in string fn_src) { + @safe final sourceContent(in string fn_src) { auto raw = MarkupRawUnit(); string source_txt_str = raw.markupSourceReadIn(fn_src); return source_txt_str; } - final auto sourceContentSplitIntoHeaderAndBody(O)( + @safe final auto sourceContentSplitIntoHeaderAndBody(O)( O _opt_action, in string source_txt_str, in string fn_src="" @@ -84,7 +84,7 @@ static template spineRawMarkupContent() { } struct MarkupRawUnit { import std.file; - final private string readInMarkupSource(in char[] fn_src) { + @safe final private string readInMarkupSource(in char[] fn_src) { enforce( exists(fn_src) != 0, "file not found: «" ~ @@ -107,7 +107,7 @@ static template spineRawMarkupContent() { std.utf.validate(source_txt_str); return source_txt_str; } - final private char[][] header0Content1(in string src_text) @trusted { // cast(char[]) + @trusted final private char[][] header0Content1(in string src_text) { // cast(char[]) /+ 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); @@ -120,12 +120,12 @@ static template spineRawMarkupContent() { ); return header_and_content; } - final private char[][] markupSourceLineArray(in char[] src_text) @trusted { // cast(char[]) + @trusted final private char[][] markupSourceLineArray(in char[] src_text) { // cast(char[]) char[][] source_line_arr = (cast(char[]) src_text).split(rgx.newline_eol_strip_preceding); return source_line_arr; } - string markupSourceReadIn(in string fn_src) { + @safe string markupSourceReadIn(in string fn_src) { static auto rgx = Rgx(); enforce( fn_src.match(rgx.src_pth_sst_or_ssm), @@ -135,7 +135,7 @@ static template spineRawMarkupContent() { string source_txt_str = readInMarkupSource(fn_src); return source_txt_str; } - HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) @safe { + @safe HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) { string[] file_insert_list = []; string[] images_list = []; char[][] hc = header0Content1(source_txt_str); @@ -150,7 +150,7 @@ static template spineRawMarkupContent() { ); return t; } - final char[][] getInsertMarkupSourceContentRawLineArray( + @safe final char[][] getInsertMarkupSourceContentRawLineArray( in char[] fn_src_insert, Regex!(char) rgx_file ) { @@ -169,7 +169,7 @@ static template spineRawMarkupContent() { char[][], "insert_contents", string[], "images" ); - ContentsAndImages scan_subdoc_source(O)( + @safe ContentsAndImages scan_subdoc_source(O)( O _opt_action, char[][] markup_sourcefile_insert_content, string fn_src @@ -254,7 +254,7 @@ static template spineRawMarkupContent() { ); return t; } - ContentsInsertsImages scan_master_src_for_insert_files_and_import_content(O)( + @safe ContentsInsertsImages scan_master_src_for_insert_files_and_import_content(O)( O _opt_action, char[][] sourcefile_body_content, string fn_src diff --git a/src/doc_reform/io_out/create_zip_file.d b/src/doc_reform/io_out/create_zip_file.d index 09b481a..0ad8ada 100644 --- a/src/doc_reform/io_out/create_zip_file.d +++ b/src/doc_reform/io_out/create_zip_file.d @@ -4,7 +4,7 @@ template createZipFile() { import std.outbuffer; import std.string; import std.zip; - void createZipFile( + @safe void createZipFile( string zip_file_name, void[] compressed_zip_data, ) { diff --git a/src/doc_reform/io_out/defaults.d b/src/doc_reform/io_out/defaults.d index 4dd8021..84bac73 100644 --- a/src/doc_reform/io_out/defaults.d +++ b/src/doc_reform/io_out/defaults.d @@ -50,7 +50,7 @@ template InternalMarkup() { template spineLanguageCodes() { /+ language codes +/ struct Lang { - static string[string][string] codes() { + @safe static string[string][string] codes() { auto _lang_codes = [ "am": [ "c": "am", "n": "Amharic", "t": "Amharic", "xlp": "amharic" ], "bg": [ "c": "bg", "n": "Bulgarian", "t": "Български (Bəlgarski)", "xlp": "bulgarian" ], @@ -117,15 +117,15 @@ template spineLanguageCodes() { ]; return _lang_codes; } - static string[] code_arr_ptr() { + @safe static string[] code_arr_ptr() { string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "us", "vi", "zh", "en", "xx",]; return _lang_codes; } - static string[] code_arr() { + @safe static string[] code_arr() { string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "vi", "zh"]; return _lang_codes; } - static auto codes_() { + @safe static auto codes_() { return "(" ~ join(code_arr,"|") ~ ")"; } static auto codes_regex() { diff --git a/src/doc_reform/io_out/epub3.d b/src/doc_reform/io_out/epub3.d index 4de98a1..f8f5ba4 100644 --- a/src/doc_reform/io_out/epub3.d +++ b/src/doc_reform/io_out/epub3.d @@ -14,12 +14,12 @@ template outputEPub3() { doc_reform.io_out.xmls_css; mixin InternalMarkup; mixin outputXHTMLs; - string epub3_mimetypes() @safe { + @safe string epub3_mimetypes() { string o; o = format(q"┃application/epub+zip┃") ~ "\n"; return o; } - string epub3_container_xml() @safe { + @safe string epub3_container_xml() { string o; o = format(q"┃<?xml version='1.0' encoding='utf-8'?>┃") ~ "\n"; o ~= format(q"┃<container version="1.0" @@ -30,7 +30,7 @@ template outputEPub3() { </rootfiles>┃") ~ "\n</container>\n"; return o; } - string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) @safe { + @safe string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) { auto xhtml_format = outputXHTMLs(); auto pth_epub3 = spinePathsEPUB!()(doc_matters.output_path, doc_matters.src.language); string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! @@ -128,7 +128,7 @@ template outputEPub3() { } return content; } - string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) @safe { + @safe string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { enum DomTags { none, open, close, close_and_open, open_still, } auto markup = InlineMarkup(); static auto rgx = Rgx(); @@ -207,7 +207,7 @@ template outputEPub3() { </html>\n"; return toc; } - string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) @safe { + @safe string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) { int counter = 0; string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere auto markup = InlineMarkup(); @@ -297,10 +297,10 @@ template outputEPub3() { return toc; } - void outputEPub3(D,I)( + @system void outputEPub3(D,I)( const D doc_abstraction, I doc_matters, - ) { // @trusted + ) { mixin spineOutputRgxInit; auto xhtml_format = outputXHTMLs(); static auto rgx = Rgx(); @@ -606,10 +606,10 @@ template outputEPub3() { epubWrite.oebps_content_opf = doc_abstraction.epub3_oebps_content(doc_matters, oepbs_content_parts); epubWrite.epub3_write_output_files(doc_matters); } - void epub3_write_output_files(W,M)( + @system void epub3_write_output_files(W,M)( W epub_write, M doc_matters, - ) { // @trusted + ) { debug(asserts) { static assert(is(typeof(epub_write.doc_epub3) == string[][string])); static assert(is(typeof(epub_write.mimetypes) == string)); diff --git a/src/doc_reform/io_out/html.d b/src/doc_reform/io_out/html.d index 8598ca5..637b007 100644 --- a/src/doc_reform/io_out/html.d +++ b/src/doc_reform/io_out/html.d @@ -13,10 +13,10 @@ template outputHTML() { doc_reform.io_out.xmls, doc_reform.io_out.xmls_css; mixin outputXHTMLs; - void scroll(D,M)( + @safe void scroll(D,M)( const D doc_abstraction, M doc_matters, - ) @safe { + ) { mixin spineOutputRgxInit; auto xhtml_format = outputXHTMLs(); static auto rgx = Rgx(); @@ -183,10 +183,10 @@ template outputHTML() { doc = xhtml_format.html_head(doc_matters, "scroll") ~ doc_html ~ xhtml_format.tail; scroll_write_output(doc, doc_matters); } - void scroll_write_output(D,M)( + @trusted void scroll_write_output(D,M)( D doc, M doc_matters, - ) @trusted { + ) { debug(asserts) { static assert(is(typeof(doc) == string[])); } @@ -206,10 +206,10 @@ template outputHTML() { writeln(" ", pth_html.fn_scroll(doc_matters.src.filename)); } } - void seg(D,M)( + @safe void seg(D,M)( const D doc_abstraction, M doc_matters, - ) @safe { + ) { mixin spineOutputRgxInit; static auto rgx = Rgx(); auto xhtml_format = outputXHTMLs(); @@ -459,11 +459,11 @@ template outputHTML() { } seg_write_output(doc_html, doc_html_endnotes, doc_matters); } - void seg_write_output(D,E,M)( + @trusted void seg_write_output(D,E,M)( // @system? D doc_html, E doc_html_endnotes, M doc_matters, - ) @trusted { // @system? + ) { debug(asserts) { static assert(is(typeof(doc_html) == string[][string])); } @@ -493,7 +493,7 @@ template outputHTML() { writeln(" ", pth_html.fn_seg(doc_matters.src.filename, "toc")); } } - void css(M)(M doc_matters) @safe { + @safe void css(M)(M doc_matters) { auto css = spineCss(doc_matters); auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); try { @@ -508,9 +508,9 @@ template outputHTML() { // Handle error } } - void images_cp(M)( + @trusted void images_cp(M)( // @system M doc_matters, - ) @trusted { // @system + ) { { /+ (copy html images) +/ auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); diff --git a/src/doc_reform/io_out/hub.d b/src/doc_reform/io_out/hub.d index a43c28a..df3d28c 100644 --- a/src/doc_reform/io_out/hub.d +++ b/src/doc_reform/io_out/hub.d @@ -11,7 +11,10 @@ template outputHub() { doc_reform.io_out.create_zip_file, doc_reform.io_out.paths_output; import std.parallelism; - void outputHub(D,I)(const D doc_abstraction, I doc_matters) { + @system void outputHub(D,I)( + const D doc_abstraction, + I doc_matters + ) { mixin spineOutputRgxInit; mixin Msg; auto msg = Msg!()(doc_matters); @@ -114,7 +117,7 @@ template outputHubOp() { doc_reform.io_out.odt, doc_reform.io_out.create_zip_file, doc_reform.io_out.paths_output; - void outputHubOp(E,O)(E env, O opt_action) { + @system void outputHubOp(E,O)(E env, O opt_action) { mixin spineOutputRgxInit; static auto rgx = Rgx(); if ((opt_action.sqlite_db_drop)) { diff --git a/src/doc_reform/io_out/latex.d b/src/doc_reform/io_out/latex.d index cfa347c..b8e33f4 100644 --- a/src/doc_reform/io_out/latex.d +++ b/src/doc_reform/io_out/latex.d @@ -14,7 +14,7 @@ template outputLaTeX() { auto lang = Lang(); auto paper() { struct PaperType { - auto a4() @safe { + @safe auto a4() { struct A4 { auto portrait() { struct V { @@ -35,7 +35,7 @@ template outputLaTeX() { } return A4(); } - auto a5() @safe { + @safe auto a5() { struct A5 { auto portrait() { struct V { @@ -56,7 +56,7 @@ template outputLaTeX() { } return A5(); } - auto b4() @safe { + @safe auto b4() { struct B4 { auto portrait() { struct V { @@ -77,7 +77,7 @@ template outputLaTeX() { } return B4(); } - auto letter() @safe { + @safe auto letter() { struct Letter { auto portrait() { struct V { @@ -98,7 +98,7 @@ template outputLaTeX() { } return Letter(); } - auto legal() @safe { + @safe auto legal() { struct Legal { auto portrait() { struct V { @@ -122,10 +122,10 @@ template outputLaTeX() { } return PaperType(); } - string sp_char_esc(O)( + @safe string sp_char_esc(O)( string _txt, const O obj, - ) @safe { + ) { string _unescape_sp_char_esc()(string _txt) { _txt = _txt .replaceAll(rgx.latex_special_char_escaped, @@ -147,9 +147,9 @@ template outputLaTeX() { } return _txt; } - string sp_char_esc_txt()( + @safe string sp_char_esc_txt()( string _txt, - ) @safe { + ) { string _unescape_sp_char_esc()(string _txt) { _txt = _txt .replaceAll(rgx.latex_special_char_escaped, @@ -169,9 +169,9 @@ template outputLaTeX() { _txt = replaceAll!(m => _unescape_fontface_esc(m[0]))(_txt, rgx.latex_identify_inline_fontface); return _txt; } - string fontface()( + @safe string fontface()( string _txt, - ) @safe { + ) { _txt = _txt .replaceAll(rgx.inline_emphasis, format(q"┃\begin{bfseries}%s\end{bfseries}┃", "$1")) .replaceAll(rgx.inline_bold, format(q"┃\begin{bfseries}%s\end{bfseries}┃", "$1")) @@ -185,9 +185,9 @@ template outputLaTeX() { .replaceAll(rgx.inline_italics, format(q"┃``%s''┃", "$1")); return _txt; } - string leading_hardspaces()( + @safe string leading_hardspaces()( string _txt, - ) @safe { + ) { string hardspaces(string _spaces) { _spaces = _spaces .replaceAll(rgx.space, "\\hardspace "); @@ -196,23 +196,23 @@ template outputLaTeX() { _txt = replaceAll!(m => hardspaces(m[0]))(_txt, rgx.spaces_line_start); return _txt; } - string nbsp_char()(string _txt) @safe { + @safe string nbsp_char()(string _txt) { if (_txt.match(rgx.nbsp_char)) { _txt = _txt.replaceAll(rgx.nbsp_char, "\\hardspace "); } return _txt; } - string nbsp_char_to_space()(string _txt) @safe { + @safe string nbsp_char_to_space()(string _txt) { if (_txt.match(rgx.nbsp_char)) { _txt = _txt.replaceAll(rgx.nbsp_char, " "); } return _txt; } - string links_and_images(O,M)( + @safe string links_and_images(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { if (obj.has.inline_links) { // TODO some images do not have inline links ... image without link string _width_adjust(string _width) { if (_width.to!int > 300) { _width = "300"; } // will need to vary max with papersize & orientation @@ -253,9 +253,9 @@ template outputLaTeX() { } return _txt; } - string footnotes()( + @safe string footnotes()( string _txt, - ) @safe { + ) { if (_txt.match(rgx.inline_notes_al_gen)) { string _tex_note = q"┃\hypertarget{noteref_%s}{}\footnote[%s]{%% \label{note_%s}%s}┃"; @@ -268,18 +268,18 @@ template outputLaTeX() { } return _txt; } - string remove_footnotes()( + @safe string remove_footnotes()( string _txt, - ) @safe { + ) { if (_txt.match(rgx.inline_notes_al_gen)) { _txt = replaceAll!(m => "")(_txt, rgx.inline_notes_al_gen); } return _txt; } - string para(O)( + @safe string para(O)( string _txt, O obj, - ) @safe { + ) { if (obj.metainfo.is_of_type == "para") { string _tex_para; _tex_para = q"┃\begin{tiny}\hspace{0mm}\end{tiny}{\marginpar{\begin{tiny}\hspace{0mm}\hypertarget{%s}{%s}\end{tiny}}}%s┃"; @@ -291,10 +291,10 @@ template outputLaTeX() { } return _txt; } - string bookindex(O)( + @safe string bookindex(O)( string _txt, O obj, - ) @safe { + ) { if (obj.metainfo.is_of_type == "para" && obj.metainfo.is_a == "bookindex" ) { @@ -306,12 +306,12 @@ template outputLaTeX() { } return _txt; } - string heading(O,M)( + @safe string heading(O,M)( string _txt, O obj, M doc_matters, string _part = "" - ) @safe { + ) { if (obj.metainfo.is_a == "heading") { string _tex_para; string _pg_break; @@ -641,10 +641,10 @@ string table(O,M)( } return _txt; } - string bullets_and_indentation(O)( + @safe string bullets_and_indentation(O)( string _txt, O obj, - ) @safe { + ) { string _tex_para; string _hang; string _indent; int _paper_margin = -10; diff --git a/src/doc_reform/io_out/metadata.d b/src/doc_reform/io_out/metadata.d index 8201926..5dfdfe2 100644 --- a/src/doc_reform/io_out/metadata.d +++ b/src/doc_reform/io_out/metadata.d @@ -1,6 +1,6 @@ module doc_reform.io_out.metadata; template outputMetadata() { - void outputMetadata(T)( T doc_matters) @safe { + @safe void outputMetadata(T)( T doc_matters) { import std.file; import std.format; import doc_reform.io_out; @@ -185,7 +185,7 @@ string theme_light_1 = format(q"┃ doc_matters.opt.action.css_theme_default ? theme_light_0 : theme_dark_0, doc_matters.opt.action.css_theme_default ? theme_light_1 : theme_dark_1, ) ~ "\n"; - void metadata_write_output(M)(M doc_matters, string[] metadata_) @trusted { + @safe void metadata_write_output(M)(M doc_matters, string[] metadata_) { auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); try { if (!exists(pth_html.base)) { diff --git a/src/doc_reform/io_out/odt.d b/src/doc_reform/io_out/odt.d index 23eb947..67b34ba 100644 --- a/src/doc_reform/io_out/odt.d +++ b/src/doc_reform/io_out/odt.d @@ -15,7 +15,7 @@ template formatODT() { mixin spineOutputRgxInit; struct formatODT { static auto rgx = Rgx(); - string _tags(O)(const O obj) @safe { + @safe string _tags(O)(const O obj) { string _tags = ""; if (obj.tags.anchor_tags.length > 0) { foreach (tag_; obj.tags.anchor_tags) { @@ -33,7 +33,7 @@ template formatODT() { } return _tags; } - string _xhtml_anchor_tags(O)(O obj) @safe { + @safe string _xhtml_anchor_tags(O)(O obj) { const(string[]) anchor_tags = obj.tags.anchor_tags; string tags=""; if (anchor_tags.length > 0) { @@ -45,7 +45,7 @@ template formatODT() { } return tags; } - string obj_num(O)(const O obj) @safe { // TODO + @safe string obj_num(O)(const O obj) { // TODO string _on; _on = (obj.metainfo.object_number.empty) ? "" @@ -55,7 +55,7 @@ template formatODT() { )); return _on; } - string _footnotes()(string _txt) @safe { + @safe string _footnotes()(string _txt) { static auto rgx = Rgx(); _txt = _txt.replaceAll( rgx.inline_notes_al_regular_number_note, @@ -74,14 +74,14 @@ template formatODT() { ); return _txt; } - string _bullet(O)(const O obj) @safe { + @safe string _bullet(O)(const O obj) { string _b = ""; if (obj.attrib.bullet) { _b = format(q"┃● ┃",); } return _b; } - string _indent(O)(string _txt, const O obj) @safe { // TODO + @safe string _indent(O)(string _txt, const O obj) { // TODO // if (obj.attrib.indent_base > 0 || // obj.attrib.indent_hang > 0 // ) { @@ -189,7 +189,7 @@ template formatODT() { } return _txt; } - string _block_type_delimiters(O)(string[] _block_lines, const O obj) @safe { // TODO + @safe string _block_type_delimiters(O)(string[] _block_lines, const O obj) { // TODO string _block = ""; foreach (i, _line; _block_lines) { _line = _footnotes(_line); @@ -222,7 +222,7 @@ template formatODT() { obj_num(obj)); return _block; } - string _special_characters(O)(string _txt, const O obj) @safe { + @safe string _special_characters(O)(string _txt, const O obj) { _txt = _txt .replaceAll(rgx.xhtml_ampersand, "&") .replaceAll(rgx.xhtml_quotation, """) @@ -231,7 +231,7 @@ template formatODT() { .replaceAll(rgx.nbsp_char, " "); return _txt; } - string _preserve_white_spaces(O)(string _txt, const O obj) @safe { + @safe string _preserve_white_spaces(O)(string _txt, const O obj) { if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") { _txt = _txt .replaceAll(rgx.space, " "); @@ -252,9 +252,9 @@ template formatODT() { .replaceAll(rgx.inline_mono, format(q"┃<text:span text:style-name="Span_monospace">%s</text:span>┃", "$1")); return _txt; } - auto _obj_num(O)(O obj) @safe { // NOT USED YET + @safe auto _obj_num(O)(O obj) { // NOT USED YET struct objNum { - string reference() @safe { + @safe string reference() { return format(q"┃<text:span text:style-name="Span_subscript"> <text:bookmark-start text:name="%s"/> <text:bookmark-end text:name="%s"/> @@ -263,7 +263,7 @@ template formatODT() { obj.object_number, ); } - string display() @safe { + @safe string display() { return format(q"┃<text:span text:style-name="Span_subscript"> %s%s%s </text:span>┃", @@ -275,20 +275,20 @@ template formatODT() { } return objNum(); } - string _break_page()() @safe { + @safe string _break_page()() { return format(q"┃ <text:p text:style-name="P_normal_page_new"/> ┃", ); } - string _empty_line_break(O)(string _txt, const O obj) @safe { + @safe string _empty_line_break(O)(string _txt, const O obj) { if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") { _txt = _txt .replaceAll(rgx.br_empty_line, "<br />"); } return _txt; } - string _links(O)(string _txt, const O obj) @safe { + @safe string _links(O)(string _txt, const O obj) { if (obj.metainfo.is_a != "code") { if (obj.metainfo.is_a == "toc") { _txt = replaceAll!(m => @@ -328,7 +328,7 @@ template formatODT() { } return _txt; } - string _images(O)(string _txt, const O obj) @safe { + @safe string _images(O)(string _txt, const O obj) { if (_txt.match(rgx.inline_image)) { _txt = _txt .replaceAll(rgx.inline_image, @@ -339,7 +339,7 @@ template formatODT() { } return _txt; } - string markup(O)(const O obj) @safe { + @safe string markup(O)(const O obj) { /+ markup TODO +/ string _txt = obj.text; _txt = _special_characters(_txt, obj); // TODO & why both obj & obj.text, consider also in output_xmls.org @@ -353,10 +353,10 @@ template formatODT() { _txt = _empty_line_break(_txt, obj); // (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") return _txt; } - string heading(O,M)( + @safe string heading(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -397,10 +397,10 @@ template formatODT() { } return _o_txt_odt; } - string para(O,M)( + @safe string para(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -416,10 +416,10 @@ template formatODT() { } return _o_txt_odt; } - string quote(O,M)( + @safe string quote(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -428,10 +428,10 @@ template formatODT() { _o_txt_odt = _footnotes(_o_txt_odt); // decide return _o_txt_odt; } - string group(O,M)( + @safe string group(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -446,10 +446,10 @@ template formatODT() { _o_txt_odt = _block_type_delimiters(_block_lines, obj); return _o_txt_odt; } - string block(O,M)( + @safe string block(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -459,10 +459,10 @@ template formatODT() { _o_txt_odt = _block_type_delimiters(_block_lines, obj); return _o_txt_odt; } - string verse(O,M)( + @safe string verse(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -472,10 +472,10 @@ template formatODT() { _o_txt_odt = _block_type_delimiters(_block_lines, obj); return _o_txt_odt; } - string code(O,M)( + @safe string code(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); @@ -519,10 +519,10 @@ template formatODT() { _o_txt_odt = _block; return _o_txt_odt; } - Tuple!(string, string) tablarize(O)( + @safe Tuple!(string, string) tablarize(O)( const O obj, string _txt, - ) @safe { + ) { string[] _table_rows = (_txt).split(rgx.table_delimiter_row); string[] _table_cols; string _table; @@ -554,10 +554,10 @@ template formatODT() { return t; } int _table_number = 0; - string table(O,M)( + @safe string table(O,M)( const O obj, const M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); @@ -606,7 +606,7 @@ template outputODT() { mixin spineOutputRgxInit; static auto rgx = Rgx(); // mixin outputXmlODT; - string odt_head(I)(I doc_matters) @safe { + @safe string odt_head(I)(I doc_matters) { string _has_tables = format(q"┃ <style:style style:name="Table1" style:family="table"> <style:table-properties style:width="16.999cm" table:align="margins"/> @@ -714,10 +714,10 @@ template outputODT() { ); return _odt_head; } - string odt_body(D,I)( + @safe string odt_body(D,I)( const D doc_abstraction, I doc_matters, - ) @safe { + ) { mixin formatODT; auto odt_format = formatODT(); string delimit = ""; @@ -840,15 +840,15 @@ template outputODT() { return doc_odt; } - string odt_tail() @safe { + @safe string odt_tail() { string _odt_tail = format(q"┃<text:p text:style-name="P_normal">spine: <<text:a xl:type="simple" xl:href="http://www.doc_reform.org">www.doc_reform.org</text:a>> and <<text:a xl:type="simple" xl:href="http://www.sisudoc.org">www.sisudoc.org</text:a>></text:p> </office:text></office:body></office:document-content>┃",); return _odt_tail; } - string content_xml(D,I)( + @safe string content_xml(D,I)( const D doc_abstraction, I doc_matters, - ) @safe { + ) { string _content_xml; string break_line = (doc_matters.opt.action.debug_do) ? "\n" : ""; string odt_break_page = format(q"┃<text:p text:style-name="P_normal_page_new"/>┃",); @@ -858,9 +858,9 @@ template outputODT() { _content_xml ~= odt_tail; return _content_xml; } - string manifest_xml(M)( + @safe string manifest_xml(M)( auto ref M doc_matters, - ) @safe { + ) { string _bullet = format(q"┃<manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/bullet_09.png"/>┃"); string[] _images = [ _bullet ]; foreach (image; doc_matters.srcs.image_list) { @@ -882,9 +882,9 @@ template outputODT() { ); return _manifest_xml; } - void images_cp(M)( + @safe void images_cp(M)( auto ref M doc_matters, - ) @safe { + ) { { /+ (copy odt images) +/ auto pth_odt = spinePathsODT!()(doc_matters); foreach (image; doc_matters.srcs.image_list) { @@ -902,9 +902,9 @@ template outputODT() { } // return 0; } - string meta_xml(M)( + @safe string meta_xml(M)( auto ref M doc_matters, - ) @safe { + ) { /+ (meta_xml includes output time-stamp) +/ string _meta_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?> <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:grddl="http://www.w3.org/2003/g/data-view#" office:version="1.2"> @@ -939,11 +939,11 @@ template outputODT() { } // return 0; } - string mimetype() @safe { + @safe string mimetype() { string mimetype_ = format(q"┃application/vnd.oasis.opendocument.text┃"); return mimetype_; } - string manifest_rdf() @safe { + @safe string manifest_rdf() { string _manifest_rdf = format(q"┃<?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="styles.xml"> @@ -965,7 +965,7 @@ template outputODT() { ┃"); return _manifest_rdf; } - string settings_xml() @safe { + @safe string settings_xml() { string _settings_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?> <office:document-settings xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.2"> <office:settings> @@ -1065,7 +1065,7 @@ template outputODT() { ┃"); return _settings_xml; } - string styles_xml() @safe { + @safe string styles_xml() { string _styles_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?> <office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2"> <office:font-face-decls> diff --git a/src/doc_reform/io_out/source_pod.d b/src/doc_reform/io_out/source_pod.d index 31c0b45..59746de 100644 --- a/src/doc_reform/io_out/source_pod.d +++ b/src/doc_reform/io_out/source_pod.d @@ -23,7 +23,7 @@ template spinePod() { auto lang = Lang(); static auto rgx = Rgx(); assert (doc_matters.src.filename.match(rgx.src_fn)); - auto pod_archive(Z)( + @system auto pod_archive(Z)( string _source_type, string _data_in, string _pth_out, diff --git a/src/doc_reform/io_out/xmls.d b/src/doc_reform/io_out/xmls.d index 1d58e27..1b038a9 100644 --- a/src/doc_reform/io_out/xmls.d +++ b/src/doc_reform/io_out/xmls.d @@ -15,10 +15,10 @@ template outputXHTMLs() { mixin spineOutputRgxInit; struct outputXHTMLs { static auto rgx = Rgx(); - string div_delimit( + @safe string div_delimit( string part, return ref string previous_part - ) @safe { + ) { string delimit = ""; string delimit_ = ""; if (part != previous_part) { @@ -45,7 +45,7 @@ template outputXHTMLs() { // you also need to close the last div, introduce a footer? return delimit; } - string special_characters_text(string _txt) @safe { + @safe string special_characters_text(string _txt) { _txt = _txt .replaceAll(rgx.xhtml_ampersand, "&") .replaceAll(rgx.xhtml_quotation, """) @@ -54,9 +54,9 @@ template outputXHTMLs() { .replaceAll(rgx.nbsp_char, " "); return _txt; } - string special_characters(O)( + @safe string special_characters(O)( const O obj, - ) @safe { + ) { string _txt = special_characters_text(obj.text); if (!(obj.metainfo.is_a == "code")) { _txt = (_txt) @@ -64,7 +64,7 @@ template outputXHTMLs() { } return _txt; } - string font_face(string _txt) @safe { + @safe string font_face(string _txt) { _txt = _txt .replaceAll(rgx.inline_emphasis, ("<em>$1</em>")) .replaceAll(rgx.inline_bold, ("<b>$1</b>")) @@ -78,7 +78,7 @@ template outputXHTMLs() { .replaceAll(rgx.inline_cite, ("<cite>$1</cite>")); return _txt; } - string _xhtml_anchor_tags(O)(O obj) @safe { + @safe string _xhtml_anchor_tags(O)(O obj) { const(string[]) anchor_tags = obj.tags.anchor_tags; string tags=""; if (anchor_tags.length > 0) { @@ -90,9 +90,9 @@ template outputXHTMLs() { } return tags; } - string header_metadata(M)( + @safe string header_metadata(M)( M doc_matters, - ) @safe { + ) { string _publisher="Publisher"; // TODO string o; o = format(q"┃<!-- spine DocReform header metadata --> @@ -127,9 +127,9 @@ template outputXHTMLs() { ); return o; } - string site_info_button(M)( + @safe string site_info_button(M)( M doc_matters, - ) @safe { + ) { string _locations; if (doc_matters.conf_make_meta.make.home_button_text.length > 0) { _locations = (doc_matters.conf_make_meta.make.home_button_text) @@ -151,9 +151,9 @@ template outputXHTMLs() { ); return o; } - string inline_search_form(M)( + @safe string inline_search_form(M)( M doc_matters, - ) @safe { + ) { string _action="http://www.sisudoc.org/cgi-bin/search.cgi"; string _db="spine.7a.manual"; string o; @@ -182,7 +182,7 @@ template outputXHTMLs() { } return o; } - string html_head(M)( + @safe string html_head(M)( M doc_matters, string type, ) { @@ -232,9 +232,9 @@ template outputXHTMLs() { ); return o; } - string epub3_seg_head(M)( + @safe string epub3_seg_head(M)( M doc_matters, - ) @safe { + ) { string html_base = format(q"┃<!DOCTYPE html> <html>┃", ); @@ -300,7 +300,7 @@ template outputXHTMLs() { ); return o; } - string tail() @safe { + @safe string tail() { string o; o = format(q"┃ <a name="bottom" id="bottom"></a> @@ -309,13 +309,13 @@ template outputXHTMLs() { </html>┃"); return o; } - string inline_images(O,M)( + @safe string inline_images(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "seg", - ) @safe { + ) { string _img_pth; switch (_xml_type) { case "epub": _img_pth = "image/"; break; @@ -335,13 +335,13 @@ template outputXHTMLs() { } return _txt; } - string inline_links(O,M)( + @safe string inline_links(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "seg", - ) @safe { + ) { string seg_lvs; if (obj.has.inline_links) { if (obj.metainfo.is_a != "code") { @@ -426,11 +426,11 @@ template outputXHTMLs() { } return _txt; } - string inline_notes_scroll(O,M)( + @safe string inline_notes_scroll(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { if (obj.has.inline_notes_reg) { _txt = font_face(_txt); _txt = _txt.replaceAll( @@ -457,11 +457,11 @@ template outputXHTMLs() { } return _txt; } - Tuple!(string, string[]) inline_notes_seg(O,M)( + @safe Tuple!(string, string[]) inline_notes_seg(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { string[] _endnotes; if (obj.has.inline_notes_star) { _txt = font_face(_txt); @@ -521,12 +521,12 @@ template outputXHTMLs() { ); return t; } - string inline_markup_scroll(O,M)( + @safe string inline_markup_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", - ) @safe { + ) { if (obj.metainfo.dummy_heading && (obj.metainfo.is_a == "toc" || obj.metainfo.is_a == "heading")) { _txt = ""; @@ -537,13 +537,13 @@ template outputXHTMLs() { } return _txt; } - auto inline_markup_seg(O,M)( + @safe auto inline_markup_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "seg", - ) @safe { + ) { if (obj.metainfo.dummy_heading && ((_xml_type == "epub" && (obj.metainfo.is_a == "toc" || obj.metainfo.is_a == "heading")) @@ -557,10 +557,10 @@ template outputXHTMLs() { Tuple!(string, string[]) t = inline_notes_seg(_txt, obj, doc_matters); return t; } - string lev4_heading_subtoc(O,M)( + @safe string lev4_heading_subtoc(O,M)( const O obj, M doc_matters, - ) @safe { + ) { char[] lev4_subtoc; lev4_subtoc ~= " <div class=\"nav\">\n"; foreach (subtoc; obj.tags.lev4_subtoc) { @@ -584,10 +584,10 @@ template outputXHTMLs() { lev4_subtoc ~= " </div>\n"; return lev4_subtoc.to!string; } - auto nav_pre_next_svg(O,M)( + @safe auto nav_pre_next_svg(O,M)( const O obj, M doc_matters, - ) @safe { + ) { string prev, next, toc; if (obj.tags.segment_anchor_tag_epub == "toc") { toc = ""; @@ -660,12 +660,12 @@ template outputXHTMLs() { } return bar(); } - string heading(O,M)( + @safe string heading(O,M)( string _txt, const O obj, M doc_matters, string _xml_type = "html", - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -725,23 +725,23 @@ template outputXHTMLs() { } return o; } - string heading_scroll(O,M)( + @safe string heading_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", - ) @safe { + ) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = heading(_txt, obj, doc_matters); return o; } - Tuple!(string, string[]) heading_seg(O,M)( + @safe Tuple!(string, string[]) heading_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0]; string[] _endnotes = t[1]; @@ -752,11 +752,11 @@ template outputXHTMLs() { ); return u; } - string para(O,M)( + @safe string para(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body" || "frontmatter" || "backmatter"); assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "para"); @@ -802,12 +802,12 @@ template outputXHTMLs() { } return o; } - string para_scroll(O,M)( + @safe string para_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", - ) @safe { + ) { if (obj.metainfo.is_a == "toc" && _txt.match(rgx.inline_link_toc_to_backmatter)) { _txt = _txt.replaceAll(rgx.inline_link_toc_to_backmatter, "┤#section_$1├"); } @@ -815,13 +815,13 @@ template outputXHTMLs() { string o = para(_txt, obj, doc_matters); return o; } - Tuple!(string, string[]) para_seg(O,M)( + @safe Tuple!(string, string[]) para_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -832,11 +832,11 @@ template outputXHTMLs() { ); return u; } - string quote(O,M)( + @safe string quote(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -868,23 +868,23 @@ template outputXHTMLs() { } return o; } - string quote_scroll(O,M)( + @safe string quote_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", - ) @safe { + ) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = quote(_txt, obj, doc_matters); return o; } - Tuple!(string, string[]) quote_seg(O,M)( + @safe Tuple!(string, string[]) quote_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -895,11 +895,11 @@ template outputXHTMLs() { ); return u; } - string group(O,M)( + @safe string group(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -931,24 +931,24 @@ template outputXHTMLs() { } return o; } - string group_scroll(O,M)( + @safe string group_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = group(_txt, obj, doc_matters); return o; } - Tuple!(string, string[]) group_seg(O,M)( + @safe Tuple!(string, string[]) group_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -959,11 +959,11 @@ template outputXHTMLs() { ); return u; } - string block(O,M)( + @safe string block(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -991,24 +991,24 @@ template outputXHTMLs() { } return o; } - string block_scroll(O,M)( + @safe string block_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = block(_txt, obj, doc_matters); return o; } - Tuple!(string, string[]) block_seg(O,M)( + @safe Tuple!(string, string[]) block_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -1019,11 +1019,11 @@ template outputXHTMLs() { ); return u; } - string verse(O,M)( + @safe string verse(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); assert(obj.metainfo.is_of_type == "block"); @@ -1051,24 +1051,24 @@ template outputXHTMLs() { } return o; } - string verse_scroll(O,M)( + @safe string verse_scroll(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); string o = verse(_txt, obj, doc_matters); return o; } - Tuple!(string, string[]) verse_seg(O,M)( + @safe Tuple!(string, string[]) verse_seg(O,M)( string _txt, const O obj, M doc_matters, string _suffix = ".html", string _xml_type = "html", - ) @safe { + ) { auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type); _txt = t[0].to!string; string[] _endnotes = t[1]; @@ -1079,10 +1079,10 @@ template outputXHTMLs() { ); return u; } - Tuple!(string, string) tablarize(O)( + @safe Tuple!(string, string) tablarize(O)( string _txt, const O obj, - ) @safe { + ) { string[] _table_rows = (_txt).split(rgx.table_delimiter_row); string[] _table_cols; string _table; @@ -1112,11 +1112,11 @@ template outputXHTMLs() { ); return t; } - string table(O,M)( + @safe string table(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); @@ -1146,11 +1146,11 @@ template outputXHTMLs() { ); return o; } - string code(O,M)( + @safe string code(O,M)( string _txt, const O obj, M doc_matters, - ) @safe { + ) { assert(obj.metainfo.is_of_part == "body"); assert(obj.metainfo.is_of_section == "body"); assert(obj.metainfo.is_of_type == "block"); diff --git a/src/doc_reform/io_out/xmls_css.d b/src/doc_reform/io_out/xmls_css.d index 0974637..88af237 100644 --- a/src/doc_reform/io_out/xmls_css.d +++ b/src/doc_reform/io_out/xmls_css.d @@ -4,7 +4,7 @@ module doc_reform.io_out.xmls_css; template spineCss() { import std.format; - auto spineCss(M)(M doc_matters) @safe { + @safe auto spineCss(M)(M doc_matters) { string _css_indent = format(q"┃ /* indent */ p.norm { } @@ -4162,7 +4162,7 @@ template spineCss() { _css_indent, _color_ocn_dark, ); - auto css_() @safe { + @safe auto css_() { struct _CSS { string html_seg = "/* spine css html seg stylesheet */\n"; string html_scroll = "/* spine css html scroll stylesheet */\n"; diff --git a/src/doc_reform/meta/conf_make_meta_json.d b/src/doc_reform/meta/conf_make_meta_json.d index 4f33108..4fc3bc4 100644 --- a/src/doc_reform/meta/conf_make_meta_json.d +++ b/src/doc_reform/meta/conf_make_meta_json.d @@ -20,7 +20,7 @@ static template contentJSONtoSpineStruct() { doc_reform.meta.defaults, doc_reform.meta.rgx; ConfComposite _struct_composite; - auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) @safe { + @safe auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) { mixin spineRgxInit; static auto rgx = Rgx(); debug (json) { diff --git a/src/doc_reform/meta/conf_make_meta_structs.d b/src/doc_reform/meta/conf_make_meta_structs.d index 121605a..683d355 100644 --- a/src/doc_reform/meta/conf_make_meta_structs.d +++ b/src/doc_reform/meta/conf_make_meta_structs.d @@ -16,7 +16,7 @@ mixin spineRgxInit; static auto rgx = Rgx(); mixin InternalMarkup; static auto mkup = InlineMarkup(); -string url_markup(string line) @safe { +@safe string url_markup(string line) { string line_ = line .replaceAll( rgx.smid_inline_link_markup_regular, diff --git a/src/doc_reform/meta/conf_make_meta_yaml.d b/src/doc_reform/meta/conf_make_meta_yaml.d index 69ec567..e55a24f 100644 --- a/src/doc_reform/meta/conf_make_meta_yaml.d +++ b/src/doc_reform/meta/conf_make_meta_yaml.d @@ -20,7 +20,7 @@ static template contentYAMLtoSpineStruct() { doc_reform.meta.defaults, doc_reform.meta.rgx; ConfComposite _struct_composite; - auto contentYAMLtoSpineStruct(C,Y,M)( + @system auto contentYAMLtoSpineStruct(C,Y,M)( C _struct_composite, Y _yaml, M _manifested, @@ -794,7 +794,7 @@ static template configParseYAMLreturnSpineStruct() { doc_reform.meta.conf_make_meta_structs, doc_reform.meta.conf_make_meta_json; mixin contentYAMLtoSpineStruct; - auto configParseYAMLreturnSpineStruct(T,CCm,M)( + @system auto configParseYAMLreturnSpineStruct(T,CCm,M)( T _document_struct, CCm _make_and_meta_struct, M _manifested @@ -832,7 +832,7 @@ static template docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct() { mixin spineRgxInit; mixin contentJSONtoSpineStruct; static auto rgx = Rgx(); - auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M)( + @system auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M)( Src header_src, CCm _make_and_meta_struct, M _manifested, diff --git a/src/doc_reform/meta/defaults.d b/src/doc_reform/meta/defaults.d index 0b6388b..eff632e 100644 --- a/src/doc_reform/meta/defaults.d +++ b/src/doc_reform/meta/defaults.d @@ -4,7 +4,7 @@ module doc_reform.meta.defaults; template spineRgxInitFlags() { /+ regex flags +/ - static int[string] flags_type_init() { + @safe static int[string] flags_type_init() { int[string] flags_type_init = [ "make_headings" : 0, "header_make" : 0, @@ -45,7 +45,7 @@ template spineRgxInitFlags() { } } template spineNode() { - static string[string] node_metadata_heading_str() { + @safe static string[string] node_metadata_heading_str() { string[string] _node = [ "is" : "", "ocn" : "", @@ -56,7 +56,7 @@ template spineNode() { ]; return _node; } - static int[string] node_metadata_heading_int() { + @safe static int[string] node_metadata_heading_int() { int[string] _node = [ "ocn" : 0, // decide whether to use or keep? "ptr_doc_object" : 0, @@ -69,7 +69,7 @@ template spineNode() { ]; return _node; } - static string[string] node_metadata_para_str() { + @safe static string[string] node_metadata_para_str() { string[string] _node = [ "is" : "", "ocn" : "", @@ -77,7 +77,7 @@ template spineNode() { ]; return _node; } - static int[string] node_metadata_para_int() { + @safe static int[string] node_metadata_para_int() { int[string] _node = [ "ocn" : 0, "indent_base" : 0, @@ -88,7 +88,7 @@ template spineNode() { } } template spineHarvest() { - auto spineHarvest() { + @safe auto spineHarvest() { struct _Harvest { struct Harvest { string title = ""; @@ -122,7 +122,7 @@ template spineHarvest() { template spineBiblio() { // required: deemed_author (author || editor); year; fulltitle; struct BibJsnStr { - static auto biblio_entry_tags_jsonstr() { + @safe static auto biblio_entry_tags_jsonstr() { string x = `{ "is" : "", "sortby_deemed_author_year_title" : "", @@ -203,7 +203,7 @@ template InternalMarkup() { template spineLanguageCodes() { /+ language codes +/ struct Lang { - static string[string][string] codes() { + @safe static string[string][string] codes() { auto _lang_codes = [ "am": [ "c": "am", "n": "Amharic", "t": "Amharic", "xlp": "amharic" ], "bg": [ "c": "bg", "n": "Bulgarian", "t": "Български (Bəlgarski)", "xlp": "bulgarian" ], @@ -270,15 +270,15 @@ template spineLanguageCodes() { ]; return _lang_codes; } - static string[] code_arr_ptr() { + @safe static string[] code_arr_ptr() { string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "us", "vi", "zh", "en", "xx",]; return _lang_codes; } - static string[] code_arr() { + @safe static string[] code_arr() { string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "vi", "zh"]; return _lang_codes; } - static auto codes_() { + @safe static auto codes_() { return "(" ~ join(code_arr,"|") ~ ")"; } static auto codes_regex() { diff --git a/src/doc_reform/meta/metadoc.d b/src/doc_reform/meta/metadoc.d index 03cb098..e18a19e 100644 --- a/src/doc_reform/meta/metadoc.d +++ b/src/doc_reform/meta/metadoc.d @@ -30,7 +30,7 @@ template spineAbstraction() { enum makeMeta { make, meta } enum docAbst { doc_abstract_obj, doc_has } static auto rgx = Rgx(); - auto spineAbstraction(E,P,O,M,S)( + @system auto spineAbstraction(E,P,O,M,S)( E _env, P program_info, O _opt_action, @@ -108,39 +108,39 @@ template spineAbstraction() { writeln("step4 commence → (doc_matters)"); } struct DocumentMatters { - auto generator_program() { + @safe auto generator_program() { struct Prog_ { - string project_name() { + @safe string project_name() { return "spine"; } - string name() { + @safe string name() { return program_info.name; } - string ver() { + @safe string ver() { return program_info.ver; } - string name_and_version() @trusted { + @trusted string name_and_version() { return format("%s-%s", name, ver, ); } - string url_home() { + @safe string url_home() { return "http://sisudoc.org"; } - string url_git() { + @safe string url_git() { return "https://git.sisudoc.org/software/sisu"; } - auto compiler() { + @safe auto compiler() { return program_info.compiler; } - auto stime() { + @safe auto stime() { return Clock.currTime(UTC()).toSimpleString(); } } return Prog_(); } - auto generated_time() { + @safe auto generated_time() { auto _st = Clock.currTime(UTC()); auto _time = _st.year.to!string ~ "-" ~ _st.month.to!int.to!string // prefer as month number @@ -151,26 +151,26 @@ template spineAbstraction() { ~ ":" ~ _st.second.to!string; return _time; } - auto conf_make_meta() { + @safe auto conf_make_meta() { return _make_and_meta_struct; } - auto has() { + @safe auto has() { return _doc_has_struct; } - auto env() { + @safe auto env() { struct Env_ { - auto pwd() { + @safe auto pwd() { return _manifest.env.pwd; } - auto home() { + @safe auto home() { return _manifest.env.home; } } return Env_(); } - auto opt() { + @safe auto opt() { struct Opt_ { - auto action() { + @safe auto action() { /+ getopt options, commandline instructions, raw - processing instructions --epub --html etc. - command line config instructions --output-path @@ -180,27 +180,27 @@ template spineAbstraction() { } return Opt_(); } - auto src() { + @safe auto src() { return _manifest.src; } - auto src_path_info() { + @safe auto src_path_info() { return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path } - auto pod() { + @safe auto pod() { return _manifest.pod; } - auto sqlite() { + @safe auto sqlite() { struct SQLite_ { - string filename() { + @safe string filename() { return _opt_action.sqlite_filename; } } return SQLite_(); } - auto output_path() { + @safe auto output_path() { return _make_and_meta_struct.conf.output_path; } - auto srcs() { + @safe auto srcs() { struct SRC_ { auto file_insert_list() { return _header_body_insertfilelist_imagelist[headBody.insert_file_list]; diff --git a/src/doc_reform/meta/metadoc_from_src.d b/src/doc_reform/meta/metadoc_from_src.d index 6dbbb22..3c58212 100644 --- a/src/doc_reform/meta/metadoc_from_src.d +++ b/src/doc_reform/meta/metadoc_from_src.d @@ -112,7 +112,7 @@ template docAbstraction() { bool, "has_images_without_dimensions", ); enum DomTags { none, open, close, close_and_open, open_still, } - pure ObjGenericComposite obj_heading_ancestors()( + @safe pure ObjGenericComposite obj_heading_ancestors()( ObjGenericComposite obj, string[] lv_ancestors_txt, ) { @@ -165,7 +165,7 @@ template docAbstraction() { } return obj; } - pure ObjGenericComposite obj_dom_structure_set_markup_tags()( + @safe pure ObjGenericComposite obj_dom_structure_set_markup_tags()( ObjGenericComposite obj, int[] dom, int lev @@ -209,7 +209,7 @@ template docAbstraction() { obj.metainfo.dom_structure_markedup_tags_status = dom.dup; return obj; } - pure ObjGenericComposite obj_dom_set_collapsed_tags()( + @safe pure ObjGenericComposite obj_dom_set_collapsed_tags()( ObjGenericComposite obj, int[] dom, int lev @@ -253,10 +253,10 @@ template docAbstraction() { obj.metainfo.dom_structure_collapsed_tags_status = dom.dup; return obj; } - static auto ocn_emit(int ocn_status_flag) { + @safe static auto ocn_emit(int ocn_status_flag) { return object_citation_number.ocn_emitter(ocn_status_flag); } - static auto inline_markup_faces(L)(L line) { + @safe static auto inline_markup_faces(L)(L line) { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); line = replaceAll!(m => mkup.quote_o ~ m[1] ~ mkup.quote_c)(line, rgx.within_quotes); @@ -267,7 +267,7 @@ template docAbstraction() { } return line; } - static string links_and_images()(string obj_txt) { + @safe static string links_and_images()(string obj_txt) { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); if (obj_txt.match(rgx.smid_inline_url_generic)) { @@ -314,7 +314,7 @@ template docAbstraction() { ObjGenericComposite comp_obj_heading, comp_obj_location, comp_obj_block, comp_obj_code, comp_obj_poem_ocn, comp_obj_comment; auto node_construct = NodeStructureMetadata(); enum sObj { content, anchor_tag, notes_reg, notes_star, links, image_no_dimensions } - string[string][string] inline_para_link_anchor()( + @safe string[string][string] inline_para_link_anchor()( string[string] an_object, string[string] tag_in_seg, string[string][string] tag_assoc @@ -331,7 +331,7 @@ template docAbstraction() { return tag_assoc; } /+ ↓ abstract marked up document +/ - auto docAbstraction(CMM,Opt,Mf) ( + @system auto docAbstraction(CMM,Opt,Mf) ( char[][] markup_sourcefile_content, CMM conf_make_meta, Opt opt_action, @@ -1487,7 +1487,7 @@ template docAbstraction() { } the_document_head_section ~= the_document_body_section[0]; the_document_body_section=the_document_body_section[1..$]; - int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { + @safe int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); @@ -1574,7 +1574,7 @@ template docAbstraction() { } return _ancestors_markup; } - int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) { + @safe int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) { if (obj.metainfo.is_a == "heading") { if (obj.metainfo.heading_lev_collapsed == 1) { _ancestors_collapsed = [ @@ -1755,7 +1755,7 @@ template docAbstraction() { } html_segnames_ptr_cntr++; } - auto get_decendants()(ObjGenericComposite[] document_sections) { + @safe auto get_decendants()(ObjGenericComposite[] document_sections) { int[string] _heading_ocn_decendants; string[] _ocn_open_key = ["","","","","","","",""]; auto _doc_sect_length = document_sections.length - 1; @@ -1803,7 +1803,7 @@ template docAbstraction() { return pairs.sort; } string[] _images; - string[] extract_images()(string content_block) { + @safe string[] extract_images()(string content_block) { string[] images_; if (auto m = content_block.matchAll(rgx.image)) { images_ ~= m.captures[1]; @@ -1811,7 +1811,7 @@ template docAbstraction() { return images_; } string[] segnames_0_to_4; - auto _image_dimensions(O,M)(O obj, M manifested) { + @system auto _image_dimensions(O,M)(O obj, M manifested) { if (obj.has.image_without_dimensions) { import std.math; import imageformats; @@ -1852,7 +1852,7 @@ template docAbstraction() { } return obj; } - auto _links(O)(O obj) { + @safe auto _links(O)(O obj) { if (auto m = obj.text.match(rgx.inline_link_stow_uri)) { debug(links) { writeln("number of link matches to stow: ", (obj.text.match(rgx.inline_link_stow_uri)).count); @@ -2358,7 +2358,7 @@ template docAbstraction() { dom_structure_collapsed_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,]; dom_structure_collapsed_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,]; - auto doc_has() { + @safe auto doc_has() { struct DocHas_ { uint inline_links() { return dochas["inline_links"]; @@ -2416,7 +2416,7 @@ template docAbstraction() { /+ post loop markup document/text ↑ +/ } /+ ← closed: abstract doc source +/ /+ ↓ abstraction functions +/ - static string[string] object_reset()(string[string] an_object) @safe { + @safe static string[string] object_reset()(string[string] an_object) { an_object.remove("body_nugget"); an_object.remove("substantive"); an_object.remove("is"); @@ -2424,7 +2424,7 @@ template docAbstraction() { an_object.remove("bookindex_nugget"); return an_object; } - void flow_common_reset_()( + @system void flow_common_reset_()( return ref int[string] line_occur, return ref string[string] an_object, return ref int[string] obj_type_status, @@ -2435,10 +2435,10 @@ template docAbstraction() { obj_type_status["para"] = State.off; an_object = an_object.object_reset; } - static int[string] _check_ocn_status_()( + @safe static int[string] _check_ocn_status_()( char[] line, int[string] obj_type_status, - ) @safe { + ) { static auto rgx = Rgx(); if (!(line.empty) && (obj_type_status["ocn_status_off_for_multiple_objects"] == OCN_off_block_status.off) @@ -2494,10 +2494,10 @@ template docAbstraction() { } return obj_type_status; } - char[] _doc_header_and_make_substitutions_(CMM)( + @safe char[] _doc_header_and_make_substitutions_(CMM)( char[] line, CMM conf_make_meta, - ) @safe { + ) { enum Substitute { match, markup, } if (conf_make_meta.make.substitute) { foreach(substitution_pair; conf_make_meta.make.substitute) { @@ -2509,10 +2509,10 @@ template docAbstraction() { } return line; } - char[] _doc_header_and_make_substitutions_fontface_(CMM)( + @safe char[] _doc_header_and_make_substitutions_fontface_(CMM)( char[] line, CMM conf_make_meta, - ) @safe { + ) { enum Substitute { match, markup, } if ( conf_make_meta.make.bold) { line = line.replaceAll( @@ -2534,12 +2534,12 @@ template docAbstraction() { } return line; } - void flow_txt_block_start()( + @safe void flow_txt_block_start()( char[] line, return ref int[string] obj_type_status, return ref uint[string] dochas, return ref string[string] object_number_poem - ) @safe { + ) { static auto rgx = Rgx(); if (auto m = line.matchFirst(rgx.block_curly_code_open)) { dochas["codeblock"]++; @@ -2720,11 +2720,11 @@ template docAbstraction() { obj_type_status["tic_table"] = TriState.on; } } - string[string] flow_txt_block_quote()( + @safe string[string] flow_txt_block_quote()( char[] line, string[string] an_object, return ref int[string] obj_type_status - ) @safe { + ) { static auto rgx = Rgx(); if (obj_type_status["curly_quote"] == TriState.on) { if (line.matchFirst(rgx.block_curly_quote_close)) { @@ -2759,11 +2759,11 @@ template docAbstraction() { } return an_object; } - string[string] flow_txt_block_group()( + @safe string[string] flow_txt_block_group()( char[] line, string[string] an_object, return ref int[string] obj_type_status - ) @safe { + ) { static auto rgx = Rgx(); if (obj_type_status["curly_group"] == State.on) { if (line.matchFirst(rgx.block_curly_group_close)) { @@ -2798,11 +2798,11 @@ template docAbstraction() { } return an_object; } - string[string] flow_txt_block_block()( + @safe string[string] flow_txt_block_block()( char[] line, string[string] an_object, return ref int[string] obj_type_status - ) @safe { + ) { static auto rgx = Rgx(); if (obj_type_status["curly_block"] == TriState.on) { if (line.matchFirst(rgx.block_curly_block_close)) { @@ -2837,7 +2837,7 @@ template docAbstraction() { } return an_object; } - string[string] flow_txt_block_poem(CMM)( + @safe string[string] flow_txt_block_poem(CMM)( char[] line, string[string] an_object, return ref int[string] obj_type_status, @@ -2845,7 +2845,7 @@ template docAbstraction() { string[string] object_number_poem, CMM conf_make_meta, string[string] tag_in_seg, - ) @safe { + ) { static auto rgx = Rgx(); if (obj_type_status["curly_poem"] == TriState.on) { if (line.matchFirst(rgx.block_curly_poem_close)) { @@ -3079,11 +3079,11 @@ template docAbstraction() { } return an_object; } - void flow_txt_block_code()( + @safe void flow_txt_block_code()( char[] line, return ref string[string] an_object, return ref int[string] obj_type_status - ) @safe { + ) { static auto rgx = Rgx(); if (obj_type_status["curly_code"] == TriState.on) { if (line.matchFirst(rgx.block_curly_code_close)) { @@ -3121,7 +3121,7 @@ template docAbstraction() { } } } - string[string] flow_txt_block_table(CMM)( + @system string[string] flow_txt_block_table(CMM)( char[] line, string[string] an_object, return ref int[string] obj_type_status, @@ -3179,7 +3179,7 @@ template docAbstraction() { } return an_object; } - final string biblio_tag_map()(string abr) { + @safe final string biblio_tag_map()(string abr) { auto btm = [ "au" : "author_raw", "ed" : "editor_raw", @@ -3198,7 +3198,7 @@ template docAbstraction() { ]; return btm[abr]; } - void flow_txt_block_biblio( + @system void flow_txt_block_biblio( char[] line, return ref int[string] obj_type_status, return ref int bib_entry, @@ -3327,7 +3327,7 @@ template docAbstraction() { header_tag_value=""; } } - void flow_table_closed_make_special_notation_table_(N,CMM)( + @system void flow_table_closed_make_special_notation_table_(N,CMM)( char[] line, return ref string[string] an_object, return ref ObjGenericComposite[] the_document_body_section, @@ -3368,7 +3368,7 @@ template docAbstraction() { processing.remove("verse"); ++cntr; } - string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( + @system string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( char[] line, string[string] an_object, B bookindex_extract_hash, @@ -3678,7 +3678,7 @@ template docAbstraction() { } return an_object; } - string[string] flow_book_index_(B)( + @system string[string] flow_book_index_(B)( char[] line, string[string] an_object, return ref string book_idx_tmp, @@ -3728,13 +3728,13 @@ template docAbstraction() { } return an_object; } - string[string] flow_heading_found_()( + @safe string[string] flow_heading_found_()( char[] line, string[string] heading_match_str, string[] _make_unmarked_headings, return ref Regex!(char)[string] heading_match_rgx, return ref int[string] obj_type_status - ) @safe { + ) { static auto rgx = Rgx(); if ((_make_unmarked_headings.length > 2) && (obj_type_status["make_headings"] == State.off)) { /+ headings found +/ @@ -3809,12 +3809,12 @@ template docAbstraction() { } return heading_match_str; } - char[] flow_heading_make_set_()( + @safe char[] flow_heading_make_set_()( char[] line, int[string] line_occur, return ref Regex!(char)[string] heading_match_rgx, return ref int[string] obj_type_status - ) @safe { + ) { if ((obj_type_status["make_headings"] == State.on) && ((line_occur["para"] == State.off) && (line_occur["heading"] == State.off)) @@ -3865,7 +3865,7 @@ template docAbstraction() { } return line; } - string[string] flow_heading_matched_(CMM)( + @safe string[string] flow_heading_matched_(CMM)( char[] line, string[string] an_object, return ref int[string] line_occur, @@ -3874,7 +3874,7 @@ template docAbstraction() { return ref int[string] collapsed_lev, return ref int[string] obj_type_status, return ref CMM conf_make_meta, - ) @safe { + ) { static auto rgx = Rgx(); if (auto m = line.match(rgx.heading)) { /+ heading match +/ ++line_occur["heading"]; @@ -4018,7 +4018,7 @@ template docAbstraction() { } return an_object; } - string[string] flow_para_match_()( + @safe string[string] flow_para_match_()( char[] line, string[string] an_object, return ref string an_object_key, @@ -4026,7 +4026,7 @@ template docAbstraction() { return ref bool bullet, return ref int[string] obj_type_status, return ref int[string] line_occur, - ) @safe { + ) { static auto rgx = Rgx(); if (line_occur["para"] == State.off) { line = font_faces_line(line); @@ -4071,9 +4071,9 @@ template docAbstraction() { } return an_object; } - char[] font_faces_line()( + @safe char[] font_faces_line()( char[] textline, - ) @safe { + ) { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); if (textline.match(rgx.inline_faces_line)) { @@ -4093,10 +4093,10 @@ template docAbstraction() { } return textline; } - ObjGenericComposite flow_table_instructions(H)( + @safe ObjGenericComposite flow_table_instructions(H)( return ref ObjGenericComposite table_object, H table_head, - ) @safe { + ) { static auto rgx = Rgx(); table_object.metainfo.is_of_part = "body"; table_object.metainfo.is_of_section = "body"; @@ -4118,10 +4118,10 @@ template docAbstraction() { } return table_object; } - ObjGenericComposite flow_table_array_munge(T)( + @safe ObjGenericComposite flow_table_array_munge(T)( return ref ObjGenericComposite table_object, return ref T table_array, - ) @safe { + ) { static auto rgx = Rgx(); static auto mng = InlineMarkup(); string _table_substantive; @@ -4242,7 +4242,7 @@ template docAbstraction() { comp_obj_block.text = _table_substantive; return table_object; } - ObjGenericComposite flow_table_substantive_munge(T)( + @system ObjGenericComposite flow_table_substantive_munge(T)( return ref ObjGenericComposite table_object, return ref T table_substantive, ) { @@ -4258,7 +4258,7 @@ template docAbstraction() { table_object = table_object.flow_table_array_munge(_table); return table_object; } - ObjGenericComposite flow_table_substantive_munge_special(T)( + @system ObjGenericComposite flow_table_substantive_munge_special(T)( return ref ObjGenericComposite table_object, return ref T table_substantive, ) { @@ -4276,11 +4276,11 @@ template docAbstraction() { } /+ abstraction functions ↑ +/ /+ ↓ abstraction function emitters +/ - pure struct OCNemitter { + @safe pure struct OCNemitter { int ocn_digit, ocn_object_number, ocn_on_, ocn_off_, ocn_bkidx, ocn_bkidx_; string object_identifier; bool ocn_is_off; - auto ocn_emitter(int ocn_status_flag) @safe { + @safe auto ocn_emitter(int ocn_status_flag) { OCNset ocn; assert(ocn_status_flag <= OCNstatus.reset); ocn_object_number = ocn_bkidx = 0; @@ -4325,7 +4325,7 @@ template docAbstraction() { } } /+ +/ - static struct ObjInlineMarkupMunge { + @safe static struct ObjInlineMarkupMunge { string[string] obj_txt; int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus; string asterisks_, plus_; @@ -4333,13 +4333,13 @@ template docAbstraction() { static auto rgx = Rgx(); static auto mkup = InlineMarkup(); int stage_reset_note_numbers = true; - private auto initialize_note_numbers() @safe { + private auto initialize_note_numbers() { n_foot = 0; n_foot_reg = 0; n_foot_sp_asterisk = 0; n_foot_sp_plus = 0; } - static auto images()(string obj_txt_in) @safe { + @safe static auto images()(string obj_txt_in) { static auto mng = InlineMarkup(); /+ url matched +/ obj_txt_in = obj_txt_in.replaceAll(rgx.inline_notes_al_special, ""); // TODO reinstate when special footnotes are implemented @@ -4369,7 +4369,7 @@ template docAbstraction() { } return obj_txt_in; } - TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) @safe { + @safe TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) { /+ endnotes (regular) +/ bool flg_notes_reg = false; bool flg_notes_star = false; @@ -4433,10 +4433,10 @@ template docAbstraction() { ); return t; } - private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()( + @safe private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()( string obj_txt_in, bool reset_note_numbers=false - ) @safe { + ) { obj_txt_out = ""; bool urls = false; bool images_without_dimensions = false; @@ -4496,10 +4496,10 @@ template docAbstraction() { } invariant() { } - auto munge_heading()( + @safe auto munge_heading()( string obj_txt_in, bool reset_note_numbers=false - ) @safe { + ) { obj_txt["munge"] = obj_txt_in .replaceFirst(rgx.heading, "") .replaceFirst(rgx.object_number_off_all, "") @@ -4515,7 +4515,7 @@ template docAbstraction() { } invariant() { } - auto munge_para()(string obj_txt_in) @safe { + @safe auto munge_para()(string obj_txt_in) { obj_txt["munge"]=(obj_txt_in) .replaceFirst(rgx.para_attribs, "") .replaceFirst(rgx.object_number_off_all, ""); @@ -4528,47 +4528,47 @@ template docAbstraction() { } return t; } - string munge_quote()(string obj_txt_in) @safe { + @safe string munge_quote()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; return obj_txt["munge"]; } invariant() { } - auto munge_group(string obj_txt_in) @safe { + @safe auto munge_group(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]); return t; } invariant() { } - auto munge_block()(string obj_txt_in) @safe { + @safe auto munge_block()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]); return t; } invariant() { } - auto munge_verse()(string obj_txt_in) @safe { + @safe auto munge_verse()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]); return t; } invariant() { } - string munge_code()(string obj_txt_in) @safe { + @safe string munge_code()(string obj_txt_in) { obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp); obj_txt["munge"] = obj_txt_in; return obj_txt["munge"]; } invariant() { } - string munge_table()(string obj_txt_in) @safe { + @safe string munge_table()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; return obj_txt["munge"]; } invariant() { } - string munge_comment()(string obj_txt_in) @safe { + @safe string munge_comment()(string obj_txt_in) { obj_txt["munge"]=obj_txt_in; return obj_txt["munge"]; } @@ -4580,12 +4580,12 @@ template docAbstraction() { static auto munge = ObjInlineMarkupMunge(); string[string] obj_txt; static string anchor_tag = ""; - TxtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( + @safe TxtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( string[string] obj_, string obj_key_, CMM conf_make_meta, Flag!"_new_doc" _new_doc - ) @safe { + ) { obj_txt["munge"] = obj_[obj_key_].dup; obj_txt["munge"] = (obj_["is"].match(ctRegex!(`verse|code`))) ? obj_txt["munge"] @@ -4673,23 +4673,23 @@ template docAbstraction() { } invariant() { } - auto _clean_heading_toc_()( + @safe auto _clean_heading_toc_()( char[] heading_toc_, - ) @safe { + ) { auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading); heading_toc_ = (m.post).replaceAll( rgx.inline_notes_curly_gen, ""); return heading_toc_; }; - ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)( + @safe ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)( string[string] obj_, CMM conf_make_meta, string[string] tag_in_seg, string _anchor_tag, return ref string[][string] lev4_subtoc, ObjGenericComposite[] the_table_of_contents_section, - ) @safe { + ) { ObjGenericComposite comp_obj_toc; mixin InternalMarkup; static auto mkup = InlineMarkup(); @@ -4773,12 +4773,12 @@ template docAbstraction() { static string heading_number_auto_composite = ""; static string heading_number_auto_composite_segname = ""; static bool[] auto_heading_numbering = [ true, true, true, true]; - static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( + @safe static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( string munge_, string[string] obj_, CMM conf_make_meta, bool _new_doc, - ) @safe { + ) { if (_new_doc) { heading_num = [ 0, 0, 0, 0 ]; heading_number_auto_composite = ""; @@ -4917,11 +4917,11 @@ template docAbstraction() { return munge_; } static int heading_num_lev1 = 0; - static string _make_segment_anchor_tags_if_none_provided()( + @safe static string _make_segment_anchor_tags_if_none_provided()( string munge_, string lev_, bool _new_doc - ) @safe { + ) { if (!(munge_.match(rgx.heading_anchor_tag))) { if (munge_.match(rgx.heading_identify_anchor_tag)) { if (auto m = munge_.match(rgx.heading_extract_named_anchor_tag)) { @@ -4954,11 +4954,11 @@ template docAbstraction() { /+ +/ struct ObjAttributes { string[string] _obj_attrib; - string obj_attributes()( + @safe string obj_attributes()( string obj_is_, string obj_raw, ObjGenericComposite _comp_obj_heading, - ) @safe { + ) { scope(exit) { destroy(obj_is_); destroy(obj_raw); @@ -5017,7 +5017,7 @@ template docAbstraction() { } private: string _obj_attributes; - string txt_para_and_blocks()(string obj_txt_in) { + @safe string txt_para_and_blocks()(string obj_txt_in) { if (obj_txt_in.matchFirst(rgx.para_bullet)) { _obj_attributes =" \"bullet\": \"true\"," ~ " \"indent_hang\": 0," @@ -5041,7 +5041,7 @@ template docAbstraction() { } return _obj_attributes; } - string txt_heading()(string obj_txt_in) @safe { + @safe string txt_heading()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," ~ " \"is\": \"heading\""; @@ -5049,7 +5049,7 @@ template docAbstraction() { } invariant() { } - string txt_para()(string obj_txt_in) @safe { + @safe string txt_para()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," ~ " \"is\": \"para\""; @@ -5057,7 +5057,7 @@ template docAbstraction() { } invariant() { } - string txt_quote()(string obj_txt_in) @safe { + @safe string txt_quote()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"quote\""; @@ -5065,7 +5065,7 @@ template docAbstraction() { } invariant() { } - string txt_group()(string obj_txt_in) @safe { + @safe string txt_group()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"group\""; @@ -5073,7 +5073,7 @@ template docAbstraction() { } invariant() { } - string txt_block()(string obj_txt_in) @safe { + @safe string txt_block()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"block\""; @@ -5081,7 +5081,7 @@ template docAbstraction() { } invariant() { } - string txt_verse()(string obj_txt_in) @safe { + @safe string txt_verse()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"verse\""; @@ -5089,7 +5089,7 @@ template docAbstraction() { } invariant() { } - string txt_code()(string obj_txt_in) @safe { + @safe string txt_code()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"code\""; @@ -5097,7 +5097,7 @@ template docAbstraction() { } invariant() { } - string txt_table()(string obj_txt_in) @safe { + @safe string txt_table()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"table\""; @@ -5105,7 +5105,7 @@ template docAbstraction() { } invariant() { } - string txt_comment()(string obj_txt_in) @safe { + @safe string txt_comment()(string obj_txt_in) { _obj_attributes = " \"use\": \"comment\"," ~ " \"of\": \"comment\"," ~ " \"is\": \"comment\""; @@ -5113,11 +5113,11 @@ template docAbstraction() { } invariant() { } - string _set_additional_values_parse_as_json()( + @safe string _set_additional_values_parse_as_json()( string _obj_attrib, string obj_is_, ObjGenericComposite _comp_obj_heading, - ) @safe { + ) { JSONValue oa_j = parseJSON(_obj_attrib); assert( (oa_j.type == JSON_TYPE.OBJECT) @@ -5144,11 +5144,11 @@ template docAbstraction() { string[] object_numbers; string[][string][string] bi_hash_nugget; string[] bi_main_terms_split_arr; - string[][string][string] bookindex_nugget_hash(N,S)( + @safe string[][string][string] bookindex_nugget_hash(N,S)( string bookindex_section, N obj_cite_digits, S tag_in_seg, - ) @safe { + ) { debug(asserts) { static assert(is(typeof(obj_cite_digits.object_number) == int)); } @@ -5214,9 +5214,9 @@ template docAbstraction() { } struct BookIndexReportIndent { int mkn, skn; - void bookindex_report_indented()( + @safe void bookindex_report_indented()( string[][string][string] bookindex_unordered_hashes - ) @safe { + ) { auto mainkeys = bookindex_unordered_hashes.byKey.array.sort().release; foreach (mainkey; mainkeys) { @@ -5242,9 +5242,9 @@ template docAbstraction() { int mkn, skn; static auto rgx = Rgx(); static auto munge = ObjInlineMarkupMunge(); - void bookindex_write_section()( + @safe void bookindex_write_section()( string[][string][string] bookindex_unordered_hashes - ) @safe { + ) { auto mainkeys = bookindex_unordered_hashes.byKey.array .sort!("toUpper(a) < toUpper(b)", SwapStrategy.stable).release; @@ -5271,7 +5271,7 @@ template docAbstraction() { ++mkn; } } - auto bookindex_build_abstraction_section(N,B)( + @system auto bookindex_build_abstraction_section(N,B)( string[][string][string] bookindex_unordered_hashes, N obj_cite_digits, B opt_action, @@ -5435,11 +5435,11 @@ template docAbstraction() { int previous_count; int mkn; static auto rgx = Rgx(); - private auto gather_notes_for_endnote_section( + @safe private auto gather_notes_for_endnote_section( ObjGenericComposite[] contents_am, string[string] tag_in_seg, int cntr, - ) @safe { + ) { assert((contents_am[cntr].metainfo.is_a == "para") || (contents_am[cntr].metainfo.is_a == "heading") || (contents_am[cntr].metainfo.is_a == "quote") @@ -5515,7 +5515,7 @@ template docAbstraction() { } return object_notes; } - private auto gathered_notes() @safe { + @safe private auto gathered_notes() { string[][string] endnotes_; if (object_notes.length > 1) { endnotes_["notes"] = (object_notes["notes"].split(rgx.break_string))[0..$-1]; @@ -5526,10 +5526,10 @@ template docAbstraction() { } return endnotes_; } - private auto endnote_objects(N,O)( + @safe private auto endnote_objects(N,O)( N obj_cite_digits, O opt_action, - ) @safe { + ) { mixin spineNode; ObjGenericComposite[] the_endnotes_section; auto endnotes_ = gathered_notes(); @@ -5639,7 +5639,7 @@ template docAbstraction() { } /+ +/ struct Bibliography { - public JSONValue[] flow_bibliography_()( + @system public JSONValue[] flow_bibliography_()( return ref string[] biblio_unsorted_incomplete, return ref JSONValue[] bib_arr_json ) { @@ -5664,7 +5664,7 @@ template docAbstraction() { } return biblio_sorted__; } - final private JSONValue[] biblio_make_unsorted_array_of_json_objects()( + @system final private JSONValue[] biblio_make_unsorted_array_of_json_objects()( string[] biblio_unordered, JSONValue[] bib_arr_json ) { @@ -5692,7 +5692,7 @@ template docAbstraction() { } return bib_arr_json.dup; } - final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) { + @system final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) { JSONValue[] biblio_sorted_; biblio_sorted_ = sort!((a, b){ @@ -5707,7 +5707,7 @@ template docAbstraction() { } return biblio_sorted_; } - void biblio_debug()(JSONValue[] biblio_sorted) { + @system void biblio_debug()(JSONValue[] biblio_sorted) { debug(biblio0) { foreach (j; biblio_sorted) { if (!empty(j["fulltitle"].str)) { @@ -5723,7 +5723,7 @@ template docAbstraction() { int obj_cite_digit; int[string] p_; // p_ parent_ static auto rgx = Rgx(); - ObjGenericComposite node_location_emitter(La,Ta,N)( + @safe ObjGenericComposite node_location_emitter(La,Ta,N)( string lev_markup_number, string[string] tag_in_seg, La lev_anchor_tag, @@ -5732,7 +5732,7 @@ template docAbstraction() { int cntr_, int ptr_, string is_ - ) @safe { + ) { debug(asserts) { static assert(is(typeof(obj_cite_digits.object_number) == int)); } @@ -5777,7 +5777,7 @@ template docAbstraction() { } invariant() { } - ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)( + @safe ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)( string _text, string lev_markup_number, string lev_collapsed_number, @@ -5794,7 +5794,7 @@ template docAbstraction() { fNr flag_notes_reg, fNs flag_notes_star, fL flag_links, - ) @safe { + ) { debug(asserts) { static assert(is(typeof(lev) == string)); static assert(is(typeof(obj_cite_digits.object_number) == int)); @@ -5976,10 +5976,10 @@ template docAbstraction() { } /+ abstraction functions emitters ↑ +/ /+ ↓ abstraction functions assertions +/ - pure void assertions_doc_structure()( + @safe pure void assertions_doc_structure()( string[string] an_object, int[string] lv - ) @safe { + ) { if (lv["h3"] > State.off) { assert(lv["h0"] > State.off); assert(lv["h1"] > State.off); @@ -6151,7 +6151,7 @@ template docAbstraction() { break; } } - pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) @safe { + @safe pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) { assert( (obj_type_status["code"] == TriState.off) || (obj_type_status["code"] == TriState.closing), @@ -6176,7 +6176,7 @@ template docAbstraction() { /+ abstraction functions assertions ↑ +/ } /+ ← closed: template docAbstraction +/ template docSectKeysSeq() { - auto docSectKeysSeq(string[][string] document_section_keys_sequenced) @safe { + @safe auto docSectKeysSeq(string[][string] document_section_keys_sequenced) { struct doc_sect_keys_seq { string[] scroll() { return document_section_keys_sequenced["scroll"]; diff --git a/src/doc_reform/meta/metadoc_harvest.d b/src/doc_reform/meta/metadoc_harvest.d index eb050e4..81f0ef4 100644 --- a/src/doc_reform/meta/metadoc_harvest.d +++ b/src/doc_reform/meta/metadoc_harvest.d @@ -1,9 +1,9 @@ module doc_reform.meta.metadoc_harvest; template spineMetaDocHarvest() { - auto spineMetaDocHarvest(T,H)( + @safe auto spineMetaDocHarvest(T,H)( T doc_matters, H hvst, - ) @safe { + ) { import doc_reform.meta.defaults, doc_reform.meta.rgx; diff --git a/src/doc_reform/meta/metadoc_object_setter.d b/src/doc_reform/meta/metadoc_object_setter.d index 908d168..e916a90 100644 --- a/src/doc_reform/meta/metadoc_object_setter.d +++ b/src/doc_reform/meta/metadoc_object_setter.d @@ -24,22 +24,22 @@ template ObjectSetter() { int o_n_bibliography = 0; int o_n_book_index = 0; int o_n_blurb = 0; - string object_number_substantive() const @property { + @safe string object_number_substantive() const @property { return (o_n_substantive==0) ? "" : o_n_substantive.to!string; } - string object_number_non_substantive() const @property { + @safe string object_number_non_substantive() const @property { return (o_n_non_substantive==0) ? "" : o_n_non_substantive.to!string; } - string object_number_glossary() const @property { + @safe string object_number_glossary() const @property { return (o_n_glossary==0) ? "" : o_n_glossary.to!string; } - string object_number_bibliography() const @property { + @safe string object_number_bibliography() const @property { return (o_n_bibliography==0) ? "" : o_n_bibliography.to!string; } - string object_number_book_index() const @property { + @safe string object_number_book_index() const @property { return (o_n_book_index==0) ? "" : o_n_book_index.to!string; } - string object_number_blurb() const @property { + @safe string object_number_blurb() const @property { return (o_n_blurb==0) ? "" : o_n_blurb.to!string; } bool object_number_off = false; @@ -49,13 +49,13 @@ template ObjectSetter() { string[string][string] node; int ocn = 0; string identifier = ""; - string object_number() const @property { + @safe string object_number() const @property { return (ocn==0) ? "" : ocn.to!string; } int o_n_type = 0; int heading_lev_markup = 9; int heading_lev_collapsed = 9; - string marked_up_level() const @property { + @safe string marked_up_level() const @property { string _out; switch (heading_lev_markup) { case 0 : _out = "A"; break; diff --git a/src/doc_reform/meta/metadoc_show_config.d b/src/doc_reform/meta/metadoc_show_config.d index b71fbab..a432c3b 100644 --- a/src/doc_reform/meta/metadoc_show_config.d +++ b/src/doc_reform/meta/metadoc_show_config.d @@ -1,6 +1,6 @@ module doc_reform.meta.metadoc_show_config; template spineShowConfig() { - void spineShowConfig(T)( + @safe void spineShowConfig(T)( T doc_matters, ) { import diff --git a/src/doc_reform/meta/metadoc_show_make.d b/src/doc_reform/meta/metadoc_show_make.d index e656a29..854552a 100644 --- a/src/doc_reform/meta/metadoc_show_make.d +++ b/src/doc_reform/meta/metadoc_show_make.d @@ -1,6 +1,6 @@ module doc_reform.meta.metadoc_show_make; template spineShowMake() { - void spineShowMake(T)( + @safe void spineShowMake(T)( T doc_matters, ) { import diff --git a/src/doc_reform/meta/metadoc_show_metadata.d b/src/doc_reform/meta/metadoc_show_metadata.d index 0bd6854..05758b6 100644 --- a/src/doc_reform/meta/metadoc_show_metadata.d +++ b/src/doc_reform/meta/metadoc_show_metadata.d @@ -1,6 +1,6 @@ module doc_reform.meta.metadoc_show_metadata; template spineShowMetaData() { - void spineShowMetaData(T)( + @safe void spineShowMetaData(T)( T doc_matters, ) { import diff --git a/src/doc_reform/meta/metadoc_show_summary.d b/src/doc_reform/meta/metadoc_show_summary.d index 9f2e34b..f774a6d 100644 --- a/src/doc_reform/meta/metadoc_show_summary.d +++ b/src/doc_reform/meta/metadoc_show_summary.d @@ -1,6 +1,6 @@ module doc_reform.meta.metadoc_show_summary; template spineMetaDocSummary() { - void spineMetaDocSummary(S,T)( + @safe void spineMetaDocSummary(S,T)( const S doc_abstraction, T doc_matters, ) { diff --git a/src/doc_reform/share/defaults.d b/src/doc_reform/share/defaults.d index ee0dbcb..2c3a098 100644 --- a/src/doc_reform/share/defaults.d +++ b/src/doc_reform/share/defaults.d @@ -4,7 +4,7 @@ module doc_reform.share.defaults; template Msg() { import std.stdio; - auto Msg(I)(I doc_matters) { + @safe auto Msg(I)(I doc_matters) { struct Msg_ { void v()(string message) { if (!(doc_matters.opt.action.quiet) && doc_matters.opt.action.verbose) { diff --git a/src/doc_reform/spine.d b/src/doc_reform/spine.d index 8108acb..39ea058 100755 --- a/src/doc_reform/spine.d +++ b/src/doc_reform/spine.d @@ -86,7 +86,7 @@ name "spine" description "A SiSU inspired document parser writen in D." homepage "http://sisudoc.org" +/ -void main(string[] args) { +@system void main(string[] args) { mixin spineRgxInit; mixin contentJSONtoSpineStruct; mixin spineBiblio; @@ -244,16 +244,16 @@ void main(string[] args) { } enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff } struct OptActions { - bool assertions() @trusted { + @trusted bool assertions() { return opts["assertions"]; } - bool concordance() @trusted { + @trusted bool concordance() { return opts["concordance"]; } auto config_path_set() { return settings["config"]; } - bool css_theme_default() @trusted { + @trusted bool css_theme_default() { bool _is_light; if (opts["light"] || opts["theme-light"]) { _is_light = true; @@ -264,94 +264,94 @@ void main(string[] args) { } return _is_light; } - bool debug_do() @trusted { + @trusted bool debug_do() { return opts["debug"]; } - bool digest() @trusted { + @trusted bool digest() { return opts["digest"]; } - bool epub() @trusted { + @trusted bool epub() { return opts["epub"]; } - bool harvest_link() @trusted { + @trusted bool harvest_link() { return (opts["harvest-link"]) ? true : false; } - bool harvest() @trusted { + @trusted bool harvest() { return (opts["harvest"] || opts["harvest-authors"] || opts["harvest-topics"]) ? true : false; } - bool harvest_authors() @trusted { + @trusted bool harvest_authors() { return (opts["harvest"] || opts["harvest-authors"]) ? true : false; } - bool harvest_topics() @trusted { + @trusted bool harvest_topics() { return (opts["harvest"] || opts["harvest-topics"]) ? true : false; } - bool html() @trusted { + @trusted bool html() { return (opts["html"] || opts["html-seg"] || opts["html-scroll"]) ? true : false; } - bool html_seg() @trusted { + @trusted bool html_seg() { return (opts["html"] || opts["html-seg"]) ? true : false; } - bool html_scroll() @trusted { + @trusted bool html_scroll() { return (opts["html"] || opts["html-scroll"]) ? true : false; } - bool html_stuff() @trusted { + @trusted bool html_stuff() { return (opts["html"] || opts["html-scroll"] || opts["html-seg"]) ? true : false; } - bool latex() @trusted { + @trusted bool latex() { return (opts["latex"] || opts["pdf"]) ? true : false; } - bool odt() @trusted { + @trusted bool odt() { return (opts["odf"] || opts["odt"]) ? true : false; } - bool manifest() @trusted { + @trusted bool manifest() { return opts["manifest"]; } - bool ocn_hidden() @trusted { + @trusted bool ocn_hidden() { return opts["hide-ocn"]; } - bool ocn_off() @trusted { + @trusted bool ocn_off() { return opts["ocn-off"]; } - bool quiet() @trusted { + @trusted bool quiet() { return opts["quiet"]; } - bool pod() @trusted { + @trusted bool pod() { return opts["pod"]; } - bool show_summary() @trusted { + @trusted bool show_summary() { return opts["show-summary"]; } - bool show_make() @trusted { + @trusted bool show_make() { return opts["show-make"]; } - bool show_metadata() @trusted { + @trusted bool show_metadata() { return opts["show-metadata"]; } - bool show_config() @trusted { + @trusted bool show_config() { return opts["show-config"]; } - bool source() @trusted { + @trusted bool source() { return opts["source"]; } - bool source_or_pod() @trusted { + @trusted bool source_or_pod() { return (opts["pod"] || opts["source"]) ? true : false; } - bool sqlite_discrete() @trusted { + @trusted bool sqlite_discrete() { return opts["sqlite-discrete"]; } - bool sqlite_db_drop() @trusted { + @trusted bool sqlite_db_drop() { return (opts["sqlite-db-recreate"] || opts["sqlite-db-drop"]) ? true : false; } - bool sqlite_db_create() @trusted { + @trusted bool sqlite_db_create() { return (opts["sqlite-db-recreate"] || opts["sqlite-db-create"]) ? true : false; } - bool sqlite_delete() @trusted { + @trusted bool sqlite_delete() { return opts["sqlite-delete"]; } - bool sqlite_update() @trusted { + @trusted bool sqlite_update() { return (opts["sqlite-update"] || opts["sqlite-insert"]) ? true : false; } - bool sqlite_shared_db_action() @trusted { + @trusted bool sqlite_shared_db_action() { return ( opts["sqlite-db-recreate"] || opts["sqlite-db-create"] @@ -360,46 +360,46 @@ void main(string[] args) { || opts["sqlite-update"] ) ? true : false; } - bool text() @trusted { + @trusted bool text() { return opts["text"]; } - bool verbose() @trusted { + @trusted bool verbose() { return (opts["verbose"] || opts["very-verbose"]) ? true : false; } - bool very_verbose() @trusted { + @trusted bool very_verbose() { return opts["very-verbose"]; } - bool xhtml() @trusted { + @trusted bool xhtml() { return opts["xhtml"]; } - bool section_toc() @trusted { + @trusted bool section_toc() { return opts["section_toc"]; } - bool section_body() @trusted { + @trusted bool section_body() { return opts["section_body"]; } - bool section_endnotes() @trusted { + @trusted bool section_endnotes() { return opts["section_endnotes"]; } - bool section_glossary() @trusted { + @trusted bool section_glossary() { return opts["section_glossary"]; } - bool section_biblio() @trusted { + @trusted bool section_biblio() { return opts["section_biblio"]; } - bool section_bookindex() @trusted { + @trusted bool section_bookindex() { return opts["section_bookindex"]; } - bool section_blurb() @trusted { + @trusted bool section_blurb() { return opts["section_blurb"]; } - bool backmatter() @trusted { + @trusted bool backmatter() { return opts["backmatter"]; } - bool skip_output() @trusted { + @trusted bool skip_output() { return opts["skip-output"]; } - bool workon() @trusted { + @trusted bool workon() { return opts["workon"]; } auto languages_set() { @@ -411,7 +411,7 @@ void main(string[] args) { auto sqlite_filename() { return settings["sqlite-filename"]; } - bool parallelise() @trusted { + @trusted bool parallelise() { bool _is; if (opts["parallel"] == true) { _is = true; @@ -435,7 +435,7 @@ void main(string[] args) { } else { _is = false; } return _is; } - bool parallelise_subprocesses() @trusted { + @trusted bool parallelise_subprocesses() { return opts["parallel-subprocesses"]; } auto output_task_scheduler() { @@ -466,7 +466,7 @@ void main(string[] args) { } return schedule.sort().uniq; } - bool abstraction() @trusted { + @trusted bool abstraction() { return ( opts["abstraction"] || concordance @@ -482,7 +482,7 @@ void main(string[] args) { || sqlite_update ) ? true : false; } - bool meta_processing_general() @trusted { + @trusted bool meta_processing_general() { return ( opts["abstraction"] || html @@ -493,7 +493,7 @@ void main(string[] args) { || sqlite_update ) ? true :false; } - bool meta_processing_xml_dom() @trusted { + @trusted bool meta_processing_xml_dom() { return ( opts["abstraction"] || html @@ -505,20 +505,20 @@ void main(string[] args) { } } auto _opt_action = OptActions(); - auto program_info() { + @safe auto program_info() { struct ProgramInfo { - string project() { + @safe string project() { return project_name; } - string name() { + @safe string name() { return program_name; } - string ver() { + @safe string ver() { return format("%s.%s.%s", _ver.major, _ver.minor, _ver.patch, ); } - string compiler() { + @safe string compiler() { return format ("%s D:%s, %s %s", __VENDOR__, __VERSION__, bits, os, |