From 8ab7e935913c102fb039110e20b71f698a68c6ee Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 16 Jun 2016 01:49:06 -0400 Subject: step5 sdlang used for config files and doc headers --- org/sdp.org | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 175 insertions(+), 15 deletions(-) (limited to 'org/sdp.org') diff --git a/org/sdp.org b/org/sdp.org index 80b7a45..4d221bb 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -28,7 +28,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 4, 1); +enum ver = Version(0, 5, 0); #+END_SRC ** pre loop init @@ -60,7 +60,7 @@ import compile_time_info, // sdp/compile_time_info.d ao_abstract_doc_source, // sdp/ao_abstract_doc_source.d ao_defaults, // sdp/ao_defaults.d - ao_header_extract, // sdp/ao_header_extract.d + ao_read_config_files, // sdp/ao_read_config_files.d ao_read_source_files, // sdp/ao_read_source_files.d ao_output_debugs, // sdp/ao_output_debugs.d ao_rgx, // sdp/ao_rgx.d @@ -69,6 +69,16 @@ import // std.conv; #+END_SRC +**** sdlang :import:sdlang: +#+NAME: sdlang_imports_use +#+BEGIN_SRC d +/+ sdlang http://sdlang.org +/ +import sdlang; // sdlang.d + // sdlang.parser, // sdlang/parser.d + // sdlang.exceptions; // sdp/ao_ansi_colors.d + // // std.conv; +#+END_SRC + **** std :import:std: #+NAME: sdp_imports #+BEGIN_SRC d @@ -95,8 +105,9 @@ private import std.conv : to; #+END_SRC -*** sdp output :output: -#+NAME: sdp_args +**** sdp output check selection :output: + +#+NAME: sdp_output_selection #+BEGIN_SRC d struct SDPoutput { auto hub(S)( @@ -163,10 +174,9 @@ mixin(import("version.txt")); #+NAME: sdp_args #+BEGIN_SRC d mixin SiSUheaderSkel; -mixin SiSUheaderExtract; mixin SiSUbiblio; mixin SiSUrgxInitFlags; -// mixin SiSUconfiguration; +mixin SiSUconfiguration; mixin SiSUmarkupRaw; mixin SiSUdocAbstraction; mixin SiSUoutputDebugs; @@ -179,7 +189,7 @@ mixin ScreenTxtColors; #+NAME: sdp_args #+BEGIN_SRC d auto raw = MarkupRaw(); -auto head = HeaderDocMetadataMakeJson(); +auto headsdl = HeaderExtractSDL(); auto abs = Abstraction(); auto dbg = SDPoutputDebugs(); auto output = SDPoutput(); @@ -294,6 +304,62 @@ foreach(arg; args) { } #+END_SRC +*** config files (load) :config:files: +#+BEGIN_SRC text +./.sisu ./_sisu ~/.sisu /etc/.sisu +#+END_SRC + +#+BEGIN_SRC d +// string[string] envVars = environment.toAA(); +// writeln(envVars); +/+ +writefln( + "pwd: %s; home: %s", + environment["PWD"], + environment["HOME"] +); ++/ +#+END_SRC + +**** config load +#+NAME: sdp_config_files +#+BEGIN_SRC d +auto conf = Config(); +auto configuration = conf.readInConfigFile(); +#+END_SRC + +**** config read + +#+NAME: sdp_config_files +#+BEGIN_SRC d +/+ sdlang config +/ +Tag sdl_root_conf; +try { + sdl_root_conf = parseSource(configuration); +} +catch(SDLangParseException e) { + stderr.writeln("SDLang problem with config.sdl content"); + // Error messages of the form: + // myFile.sdl(5:28): Error: Invalid integer suffix. + stderr.writeln(e.msg); +} +debug(sdlang) { + // Value is a std.variant.Algebraic + Value output_dir_structure_by = sdl_root_conf.tags["output_dir_structure_by"][0].values[0]; + assert(output_dir_structure_by.type == typeid(string)); + writeln(output_dir_structure_by); + + // Tag person = sdl_root_conf.namespaces["myNamespace"].tags["person"][0]; + // writeln("Name: ", person.attributes["name"][0].value); + // + // int age = person.tags["age"][0].values[0].get!int(); + // writeln("Age: ", age); + + writeln("config SDL:"); + writeln(sdl_root_conf.toSDLDocument()); +} +#+END_SRC + ** each file (loop) [+2] :loop:files: *** filename provided [+1] :file:process: **** loop scope :scope: @@ -342,18 +408,15 @@ debug(header_and_content) { **** [#A] read doc header: metadata & make :doc:header:metadata:make: #+NAME: sdp_each_file_do #+BEGIN_SRC d -/+ ↓ headers metadata & make +/ -auto header_content = head.headerContentJSON(header); -static assert(!isTypeTuple!(header_content)); -auto dochead_make_json = header_content[0]; -auto dochead_meta_json = header_content[1]; +/+ ↓ headers metadata & make sdlang +/ +auto header_sdlang = headsdl.headerSDLang(header); #+END_SRC **** [#A] processing: document abstraction, tuple :processing: #+NAME: sdp_each_file_do #+BEGIN_SRC d /+ ↓ porcess document, return abstraction as tuple +/ -auto t = abs.abstract_doc_source(sourcefile_content, dochead_make_json, dochead_meta_json); +auto t = abs.abstract_doc_source(sourcefile_content); static assert(!isTypeTuple!(t)); auto doc_ao_contents = t[0]; // contents ~ endnotes ~ bookindex; // static assert(!isIterable!(doc_ao_contents)); @@ -372,8 +435,8 @@ debug(checkdoc) { // checkbook & dumpdoc doc_ao_contents, doc_ao_bookindex_unordered_hashes, doc_ao_biblio, - dochead_make_json, - dochead_meta_json, + // doc_ao_make_json, + // doc_ao_metadata_json, fn_src, opt_action_bool ); @@ -436,13 +499,16 @@ break; sdp.d +/ <> +<> <> +<> <> mixin CompileTimeInfo; mixin RgxInit; void main(string[] args) { <> <> + <> foreach(fn_src; fns_src) { // foreach(fn_src; fns_src) { if (!empty(fn_src)) { @@ -505,3 +571,97 @@ figure out best program dir structure for dub and compilers, issue with rdmd |---------------------+------------------------------------------+------------------------+--------| | metadata | | (from regular header) | output | |---------------------+------------------------------------------+------------------------+--------| + +** config :config: +using sdlang in sdp +*** sdp config and header? file format? sdl ? yml ? json ? :sdl:sdlang: + +[[https://sdlang.org/][SDL: Simple Declarative Language]] [[http://sdl4r.rubyforge.org/syntaxhighlighter_brush.html][highlighter]] +https://github.com/Abscissa/SDLang-D +https://github.com/Abscissa/SDLang-D/blob/master/HOWTO.md + +**** build/ compile + +The recommended way to use SDLang-D is via DUB. Just add a dependency to +sdlang-d in your project's dub.json or dub.sdl file as shown here. Then simply +build your project with DUB as usual. dub dependency +http://code.dlang.org/packages/sdlang-d + + +Alternatively, you can git clone both SDLang-D and the latest version of +libInputVisitor, + +#+BEGIN_SRC d :tangle no +git clone https://github.com/Abscissa/SDLang-D +git clone https://github.com/abscissa/libInputVisitor +#+END_SRC + + and when running the compiler include: + +#+BEGIN_SRC d :tangle no + -I{path to SDLang-D}/src -I{path to libInputVisitor}/src +#+END_SRC + +**** Importing + +To use SDL, first import the module sdlang: + +#+BEGIN_SRC d :tangle no +import sdlang; +#+END_SRC + +If you're not using DUB, then you must also include the path the SDLang-D sources when you compile: + +#+BEGIN_SRC d :tangle no +rdmd --build-only -I{path to sdlang}/src -I{path to libInputVisitor}/src {other flags} yourProgram.d +#+END_SRC + +**** misc +http://forum.dlang.org/thread/hphtqkkmrfnlcipnxzai@forum.dlang.org +http://forum.dlang.org/thread/gnfctbuhiemidetngrzi@forum.dlang.org?page=23#post-rlxlfveyyzgewhkxhhta:40forum.dlang.org + +*** other links +http://semitwist.com/sdlang-d-docs/v0.9.3/sdlang.html http://semitwist.com/sdlang-d-docs/ + +** read markup files +**** regular .sst +relatively straight forward +**** master .ssm +master files have been able to read in inser files .ssi and regular files .sst +***** reading in .ssi files is straightforward +***** reading in .sst files is more problematic +.sst files have their own root (structure) +either +- the root needs to be disabled - not used +or +- the root tree needs to be demoted, which is only possible if markup from + heading D is not reached then A - C could be demoted to B - D +- the other issue there is that it is common not to write out heading level A + text but to rely on the metadata for title and author, the issue there is that + at present the header for .sst files that are imported is just lopped off and + thrown away. At least the title and author information for each imported .sst + file would have to read and available for use in its header A that is demoted + to B + +** processing files, currently using utf8 +** src dir structure & files +#+BEGIN_SRC txt :tangle no +tree /home/ralph/sisu_www/current/src/democratizing_innovation.eric_von_hippel.sst + +/home/ralph/sisu_www/current/src/ +democratizing_innovation.eric_von_hippel.sst +└── sisupod + ├── doc + │   ├── en + │   │   └── democratizing_innovation.eric_von_hippel.sst + │   └── _sisu + │   └── sisu_document_make // [interesting as part of larger conf.sdl] + └── image + ├── di_evh_f10-1.png + ├── di_evh_f11-1.png + ├── di_evh_f11-2.png + ├── di_evh_f1-1.png + ├── di_evh_f5-1.png + └── di_evh.png + +#+END_SRC -- cgit v1.2.3