diff options
-rw-r--r-- | .gitignore | 7 | ||||
-rw-r--r-- | bin/sisu | 25 | ||||
l--------- | bin/sisugem | 1 | ||||
-rw-r--r-- | data/doc/sisu/CHANGELOG_v4 | 29 | ||||
-rw-r--r-- | data/doc/sisu/CHANGELOG_v5 | 67 | ||||
-rw-r--r-- | data/doc/sisu/markup-samples/sisu_manual/en/sisu_commands.sst | 32 | ||||
-rw-r--r-- | data/doc/sisu/markup-samples/sisu_manual/en/sisu_markup.sst | 6 | ||||
-rw-r--r-- | data/sisu/v4/v/version.yml | 6 | ||||
-rw-r--r-- | data/sisu/v5/v/version.yml | 6 | ||||
-rw-r--r-- | lib/sisu/v4/hub.rb | 4 | ||||
-rw-r--r-- | lib/sisu/v4/screen_text_color.rb | 3 | ||||
-rw-r--r-- | lib/sisu/v5/air.rb | 6 | ||||
-rw-r--r-- | lib/sisu/v5/ao.rb (renamed from lib/sisu/v5/dal.rb) | 224 | ||||
-rw-r--r-- | lib/sisu/v5/ao_character_check.rb (renamed from lib/sisu/v5/dal_character_check.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/ao_doc_objects.rb (renamed from lib/sisu/v5/dal_doc_objects.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/ao_doc_str.rb (renamed from lib/sisu/v5/dal_doc_str.rb) | 501 | ||||
-rw-r--r-- | lib/sisu/v5/ao_endnotes.rb (renamed from lib/sisu/v5/dal_endnotes.rb) | 6 | ||||
-rw-r--r-- | lib/sisu/v5/ao_expand_insertions.rb (renamed from lib/sisu/v5/dal_expand_insertions.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/ao_hash_digest.rb (renamed from lib/sisu/v5/dal_hash_digest.rb) | 8 | ||||
-rw-r--r-- | lib/sisu/v5/ao_idx.rb (renamed from lib/sisu/v5/dal_idx.rb) | 10 | ||||
-rw-r--r-- | lib/sisu/v5/ao_images.rb (renamed from lib/sisu/v5/dal_images.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/ao_metadata.rb (renamed from lib/sisu/v5/dal_metadata.rb) | 8 | ||||
-rw-r--r-- | lib/sisu/v5/ao_misc_arrange.rb (renamed from lib/sisu/v5/dal_misc_arrange.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/ao_numbering.rb (renamed from lib/sisu/v5/dal_numbering.rb) | 16 | ||||
-rw-r--r-- | lib/sisu/v5/ao_syntax.rb (renamed from lib/sisu/v5/dal_syntax.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/concordance.rb | 8 | ||||
-rw-r--r-- | lib/sisu/v5/conf.rb | 12 | ||||
-rw-r--r-- | lib/sisu/v5/constants.rb | 8 | ||||
-rw-r--r-- | lib/sisu/v5/db_import.rb | 16 | ||||
-rw-r--r-- | lib/sisu/v5/dbi.rb | 2 | ||||
-rw-r--r-- | lib/sisu/v5/dbi_discrete.rb | 2 | ||||
-rw-r--r-- | lib/sisu/v5/digests.rb | 32 | ||||
-rw-r--r-- | lib/sisu/v5/git.rb | 8 | ||||
-rw-r--r-- | lib/sisu/v5/html.rb | 4 | ||||
-rw-r--r-- | lib/sisu/v5/html_format.rb | 4 | ||||
-rw-r--r-- | lib/sisu/v5/html_lite_shared.rb (renamed from lib/sisu/v5/shared_html_lite.rb) | 2 | ||||
-rw-r--r-- | lib/sisu/v5/html_scroll.rb | 2 | ||||
-rw-r--r-- | lib/sisu/v5/html_segments.rb | 2 | ||||
-rw-r--r-- | lib/sisu/v5/html_shared.rb (renamed from lib/sisu/v5/shared_html.rb) | 2 | ||||
-rw-r--r-- | lib/sisu/v5/hub.rb | 67 | ||||
-rw-r--r-- | lib/sisu/v5/manifest.rb | 53 | ||||
-rw-r--r-- | lib/sisu/v5/manpage.rb | 32 | ||||
-rw-r--r-- | lib/sisu/v5/options.rb | 49 | ||||
-rw-r--r-- | lib/sisu/v5/param.rb | 4 | ||||
-rw-r--r-- | lib/sisu/v5/particulars.rb | 26 | ||||
-rw-r--r-- | lib/sisu/v5/plaintext_format.rb | 104 | ||||
-rw-r--r-- | lib/sisu/v5/po4a.rb | 14 | ||||
-rw-r--r-- | lib/sisu/v5/prog_text_translation.rb | 4 | ||||
-rw-r--r-- | lib/sisu/v5/relaxng.rb | 54 | ||||
-rw-r--r-- | lib/sisu/v5/screen_text_color.rb | 3 | ||||
-rw-r--r-- | lib/sisu/v5/shared_metadata.rb | 10 | ||||
-rw-r--r-- | lib/sisu/v5/sitemaps.rb | 2 | ||||
-rw-r--r-- | lib/sisu/v5/src_kdissert_share.rb (renamed from lib/sisu/v5/share_src_kdissert.rb) | 2 | ||||
-rw-r--r-- | lib/sisu/v5/src_share.rb (renamed from lib/sisu/v5/share_src.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/src_shared.rb (renamed from lib/sisu/v5/shared_sisupod_source.rb) | 4 | ||||
-rw-r--r-- | lib/sisu/v5/src_sisupod_make.rb (renamed from lib/sisu/v5/sisupod_make.rb) | 6 | ||||
-rw-r--r-- | lib/sisu/v5/sst_do_inline_footnotes.rb | 48 | ||||
-rw-r--r-- | lib/sisu/v5/sst_to_s_xml_sax.rb | 12 | ||||
-rw-r--r-- | lib/sisu/v5/sysenv.rb | 598 | ||||
-rw-r--r-- | lib/sisu/v5/texinfo.rb | 2 | ||||
-rw-r--r-- | lib/sisu/v5/texpdf.rb | 12 | ||||
-rw-r--r-- | lib/sisu/v5/texpdf_format.rb | 4 | ||||
-rw-r--r-- | lib/sisu/v5/txt_asciidoc.rb | 588 | ||||
-rw-r--r-- | lib/sisu/v5/txt_markdown.rb | 588 | ||||
-rw-r--r-- | lib/sisu/v5/txt_plain.rb (renamed from lib/sisu/v5/plaintext.rb) | 82 | ||||
-rw-r--r-- | lib/sisu/v5/txt_rst.rb | 550 | ||||
-rw-r--r-- | lib/sisu/v5/txt_shared.rb (renamed from lib/sisu/v5/shared_txt.rb) | 14 | ||||
-rw-r--r-- | lib/sisu/v5/txt_textile.rb | 543 | ||||
-rw-r--r-- | lib/sisu/v5/urls.rb | 52 | ||||
-rw-r--r-- | lib/sisu/v5/wikispeak.rb | 10 | ||||
-rw-r--r-- | lib/sisu/v5/xhtml.rb | 14 | ||||
-rw-r--r-- | lib/sisu/v5/xhtml_epub2.rb (renamed from lib/sisu/v5/epub.rb) | 114 | ||||
-rw-r--r-- | lib/sisu/v5/xhtml_epub2_concordance.rb (renamed from lib/sisu/v5/epub_concordance.rb) | 30 | ||||
-rw-r--r-- | lib/sisu/v5/xhtml_epub2_format.rb (renamed from lib/sisu/v5/epub_format.rb) | 6 | ||||
-rw-r--r-- | lib/sisu/v5/xhtml_epub2_segments.rb (renamed from lib/sisu/v5/epub_segments.rb) | 68 | ||||
-rw-r--r-- | lib/sisu/v5/xhtml_epub2_tune.rb (renamed from lib/sisu/v5/epub_tune.rb) | 20 | ||||
-rw-r--r-- | lib/sisu/v5/xhtml_shared.rb (renamed from lib/sisu/v5/shared_xhtml.rb) | 2 | ||||
-rw-r--r-- | lib/sisu/v5/xml_docbook5.rb | 271 | ||||
-rw-r--r-- | lib/sisu/v5/xml_dom.rb | 16 | ||||
-rw-r--r-- | lib/sisu/v5/xml_fictionbook.rb | 305 | ||||
-rw-r--r-- | lib/sisu/v5/xml_fictionbook2.rb | 366 | ||||
-rw-r--r-- | lib/sisu/v5/xml_odf_odt.rb (renamed from lib/sisu/v5/odf.rb) | 101 | ||||
-rw-r--r-- | lib/sisu/v5/xml_odf_odt_format.rb (renamed from lib/sisu/v5/odf_format.rb) | 42 | ||||
-rw-r--r-- | lib/sisu/v5/xml_sax.rb (renamed from lib/sisu/v5/xml.rb) | 14 | ||||
-rw-r--r-- | lib/sisu/v5/xml_scaffold_structure_collapsed.rb | 6 | ||||
-rw-r--r-- | lib/sisu/v5/xml_scaffold_structure_sisu.rb | 6 | ||||
-rw-r--r-- | lib/sisu/v5/xml_shared.rb (renamed from lib/sisu/v5/shared_xml.rb) | 95 | ||||
-rw-r--r-- | man/man1/sisu.1 | 87 | ||||
-rw-r--r-- | rbuild | 293 |
89 files changed, 5106 insertions, 1384 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b5bf83df --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +*~ +sisu-*.gem +sisu*.gemspec @@ -54,31 +54,35 @@ WOK $KCODE='u' if RUBY_VERSION < '1.9' argv=$* SiSU_called_from_directory=Dir.pwd - if $0 !~/\bsisu[45]$/ + require 'rubygems' + check_sisu_stable_ruby_version? + if __FILE__ =~/gem/ \ + and __FILE__ =~/sisu-[45]\.\d+\.\d+/ + SiSU_version_dir=(__FILE__ =~/sisu-5\.\d+\.\d+/) \ + ? 'v5' + : 'v4' + elsif $0 !~/\b(?:sisu[45]|sisugem)$/ SiSU_version_dir=case argv.inspect when /"(?:--v4)"/ - check_sisu_stable_ruby_version? 'v4' when /"(?:--v5)"/ - check_sisu_stable_ruby_version? 'v5' - when /"(?:--dev)"/ - check_sisu_dev_ruby_version? + when /"--dev"/ 'v5' else - check_sisu_stable_ruby_version? 'v4' end else SiSU_version_dir=case $0 when /\bsisu4$/ - check_sisu_stable_ruby_version? 'v4' when /\bsisu5$/ - check_sisu_stable_ruby_version? 'v5' + when /sisugem$/ # should have been caught earlier, unused, debug check + SiSU_version_dir=(__FILE__ =~/sisu-5\.\d+\.\d+/) \ + ? 'v5' + : 'v4' else - check_sisu_stable_ruby_version? 'v4' end end @@ -158,6 +162,7 @@ rescue STDERR.puts $! STDERR.puts $@ require 'rbconfig' + require 'rubygems' e=Config::CONFIG puts %{ #{%x{ruby -v}.strip.to_s} @@ -166,6 +171,8 @@ rescue ruby named: #{e['ruby_version']} rubylib: #{e['rubylibdir']} rubylib local: #{e['sitelibdir']} + gem dir: #{Gem.dir} + gem path: #{Gem.path} } system(%{echo " system RUBYPATH: ${RUBYPATH} diff --git a/bin/sisugem b/bin/sisugem new file mode 120000 index 00000000..b4999d51 --- /dev/null +++ b/bin/sisugem @@ -0,0 +1 @@ +sisu
\ No newline at end of file diff --git a/data/doc/sisu/CHANGELOG_v4 b/data/doc/sisu/CHANGELOG_v4 index f540f185..7e451e0a 100644 --- a/data/doc/sisu/CHANGELOG_v4 +++ b/data/doc/sisu/CHANGELOG_v4 @@ -23,6 +23,35 @@ v2 branch is removed; it is available in sisu =< 3.3.2 %% Reverse Chronological: +%% 4.2.13.orig.tar.xz (2013-12-02:48/1) +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_4.2.13 +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_4.2.13-1 +http://www.jus.uio.no/sisu/pkg/src/sisu_4.2.13.orig.tar.xz + sisu_4.2.13.orig.tar.xz + sisu_4.2.13-1.dsc + +* rake create build & install sisu gemspec; bin/sisugem (add .gitignore) + * rake gemcbi #(create build install sisu gem) + * rake gemspecscreate && \ + rake gembuild && \ + sudo rake geminstall + * rake gemspecscreate && \ + gem build sisu5.gemspec && \ + sudo gem install --no-rdoc --no-ri \ + sisu-5.1.0.gem + * bin/sisu updated (modified to take account of gems) + * bin/sisugem added + * .gitignore sisu-*.gem sisu*.gemspec + consider inclusion (& tracking) of rake created sisu4.gemspec sisu5.gemspec + (as this makes their availability more obvious) + * once gem is installed: "sisu _5.1.0_ -vM" (to see version, commands + otherwise as usual) if paths are such that sisu is not available + "sisugem _5.1.0_ -vM" should work (as it is installed by gemspec, but not + other sisu installers) + +* hub, sisu4 -M (maintenance mode) provide info as to path to hub.rb (i.e. where + library is being drawn) + %% 4.2.12.orig.tar.xz (2013-11-08:44/5) http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_4.2.12 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_4.2.12-1 diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5 index 398257ae..1403cb6f 100644 --- a/data/doc/sisu/CHANGELOG_v5 +++ b/data/doc/sisu/CHANGELOG_v5 @@ -23,6 +23,73 @@ v2 branch is removed; it is available in sisu =< 3.3.2 %% Reverse Chronological: +%% 5.1.0.orig.tar.xz (2013-12-02:48/1) +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_5.1.0 +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_5.1.0-1 +http://www.jus.uio.no/sisu/pkg/src/sisu_5.1.0.orig.tar.xz + sisu_5.1.0.orig.tar.xz + sisu_5.1.0-1.dsc + +* ao_doc_str, changes related to headings provided for document structure + without ocn, testing required + +* ao endnotes, removed a space that should no longer be necessary, + testing required + +* minor code related to line breaks, various locations + +* renaming of modules + * use AO instead of DAL + +* renaming of files + * ao*.rb instead of dal*.rb + ao (abstract objects) shorter, also easily searched, higher sort location + abstract as representation of & extraction of document objects + (dal (document abstraction layer)) + * shared files e.g. shared_xml becomes xml_shared + * plaintext becomes txt_plain + * epub becomes xhtml_epub2 + * odf becomes xml_odf_odt + * xml sax file renamed xml_sax.rb (from xml.rb) + +* new outputs under development, CONSTRUCTION_ZONE + * plaintext, smarttext + * textile + * asciidoc + * markdown + * rst + * xml + * docbook, book + * fictionbook + +* sisu.gemspec + +* xmlns xlink using xl + +* rake create build & install sisu gemspec; bin/sisugem (add .gitignore) + * rake gemcbi #(create build install sisu gem) + * rake gemspecscreate && \ + rake gembuild && \ + sudo rake geminstall + * rake gemspecscreate && \ + gem build sisu5.gemspec && \ + sudo gem install --no-rdoc --no-ri \ + sisu-5.1.0.gem + * bin/sisu updated (modified to take account of gems) + * bin/sisugem added + * .gitignore sisu-*.gem sisu*.gemspec + consider inclusion (& tracking) of rake created sisu4.gemspec sisu5.gemspec + (as this makes their availability more obvious) + * once gem is installed: "sisu _5.1.0_ -vM" (to see version, commands + otherwise as usual) if paths are such that sisu is not available + "sisugem _5.1.0_ -vM" should work (as it is installed by gemspec, but not + other sisu installers) + +* hub, sisu5 -M (maintenance mode) provide info as to path to hub.rb (i.e. where + library is being drawn) + +* documentation related to commands for new outputs in development + %% 5.0.25.orig.tar.xz (2013-11-08:44/5) http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_5.0.25 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_5.0.25-1 diff --git a/data/doc/sisu/markup-samples/sisu_manual/en/sisu_commands.sst b/data/doc/sisu/markup-samples/sisu_manual/en/sisu_commands.sst index 8e8926ad..2ca43a43 100644 --- a/data/doc/sisu/markup-samples/sisu_manual/en/sisu_commands.sst +++ b/data/doc/sisu/markup-samples/sisu_manual/en/sisu_commands.sst @@ -40,6 +40,9 @@ SiSU is a document publishing system, that from a simple single marked-up docume !_ -a [filename/wildcard] \\ produces plaintext with Unix linefeeds and without markup, (object numbers are omitted), has footnotes at end of each paragraph that contains them [ -A for equivalent dos (linefeed) output file] [see -e for endnotes]. (Options include: --endnotes for endnotes --footnotes for footnotes at the end of each paragraph --unix for unix linefeed (default) --msdos for msdos linefeed) +!_ --ao [filename/wildcard/url] \\ +assumed for most other flags, creates new intermediate files for processing (abstract objects, document abstraction) that is used in all subsequent processing of other output. This step is assumed for most processing flags. To skip it see -n. Alias -m. (sisu v5) + !_ -b [filename/wildcard] \\ see --xhtml @@ -80,11 +83,14 @@ see --pg see --sqlite !_ --dal [filename/wildcard/url] \\ -assumed for most other flags, creates new intermediate files for processing (document abstraction) that is used in all subsequent processing of other output. This step is assumed for most processing flags. To skip it see -n. Alias -m +assumed for most other flags, creates new intermediate files for processing (abstract objects, document abstraction) that is used in all subsequent processing of other output. This step is assumed for most processing flags. To skip it see -n. Renamed --ao (abstract objects) in sisu v5. Alias -m !_ --delete [filename/wildcard] \\ see --zap +!_ --docbook [filename/wildcard/url] \\ +docbook smart text (sisu v5) + !_ --dump[=directory_path] [filename/wildcard] \\ places output in directory specified, if none is specified in the current directory (pwd). Unlike using default settings HTML files have embedded css. Compare --redirect @@ -117,6 +123,9 @@ see --sample-search-form !_ -f [optional string part of filename] \\ see --find +!_ --fictionbook [filename/wildcard/url] \\ +fictionbook smart text (sisu v5) + !_ --find [optional string part of filename] \\ without match string, glob all .sst .ssm files in directory (including language subdirectories). With match string, find files that match given string in directory (including language subdirectories). Alias -f, --glob, -G @@ -188,6 +197,9 @@ see --dal (document abstraction level/layer) !_ --maintenance [filename/wildcard/url] \\ maintenance mode, interim processing files are preserved and their locations indicated. (also see -V). Aliases -M and --keep-processing-files. +!_ --markdown [filename/wildcard/url] \\ +markdown smart text (sisu v5) + !_ --manpage [filename/wildcard] \\ produces man page of file, not suitable for all outputs. Alias -i @@ -279,6 +291,9 @@ see --scp !_ --redirect[=directory_path] [filename/wildcard] \\ places output in subdirectory under specified directory, subdirectory uses the filename (without the suffix). If no output directory is specified places the subdirectory under the current directory (pwd). Unlike using default settings HTML files have embedded css. Compare --dump +!_ --rst [filename/wildcard/url] \\ +ReST (rST restructured text) smart text (sisu v5) + !_ --rsync [filename/wildcard] \\ copies sisu output files to remote host using rsync. This requires that sisurc.yml has been provided with information on hostname and username, and that you have your "keys" and ssh agent in place. Note the behavior of rsync different if -R is used with other flags from if used alone. Alone the rsync --delete parameter is sent, useful for cleaning the remote directory (when -R is used together with other flags, it is not). Also see --scp. Alias -R @@ -318,9 +333,24 @@ see --txt !_ --texinfo [filename/wildcard] \\ produces texinfo and info file, (view with pinfo). Alias -I +!_ --textile [filename/wildcard/url] \\ +textile smart text (sisu v5) + !_ --txt [filename/wildcard] \\ produces plaintext with Unix linefeeds and without markup, (object numbers are omitted), has footnotes at end of each paragraph that contains them [ -A for equivalent dos (linefeed) output file] [see -e for endnotes]. (Options include: --endnotes for endnotes --footnotes for footnotes at the end of each paragraph --unix for unix linefeed (default) --msdos for msdos linefeed). Alias -t +!_ --txt-asciitext [filename/wildcard] \\ +see --asciitext + +!_ --txt-markdown [filename/wildcard] \\ +see --markdown + +!_ --txt-rst [filename/wildcard] \\ +see --rst + +!_ --txt-textile [filename/wildcard] \\ +see --textile + !_ -U [filename/wildcard] \\ see --urls diff --git a/data/doc/sisu/markup-samples/sisu_manual/en/sisu_markup.sst b/data/doc/sisu/markup-samples/sisu_manual/en/sisu_markup.sst index ddf6e570..69293637 100644 --- a/data/doc/sisu/markup-samples/sisu_manual/en/sisu_markup.sst +++ b/data/doc/sisu/markup-samples/sisu_manual/en/sisu_markup.sst @@ -1254,7 +1254,10 @@ If multiple sub-terms appear under one paragraph, they are separated under the m code{ Paragraph containing main term, second term and sub-term. - ={Main term:sub-term+1|second sub-term} + ={Main term: + sub-term+2|second sub-term; + Another term + } A paragraph that continues discussion of the first sub-term @@ -1267,6 +1270,7 @@ code{ Main term, 1, sub-term, 1-3, second sub-term, 1, + Another term, 1 }code diff --git a/data/sisu/v4/v/version.yml b/data/sisu/v4/v/version.yml index bc4a319b..08ef67b4 100644 --- a/data/sisu/v4/v/version.yml +++ b/data/sisu/v4/v/version.yml @@ -1,5 +1,5 @@ --- -:version: 4.2.12 -:date_stamp: 2013w44/5 -:date: "2013-11-08" +:version: 4.2.13 +:date_stamp: 2013w48/1 +:date: "2013-12-02" :project: SiSU diff --git a/data/sisu/v5/v/version.yml b/data/sisu/v5/v/version.yml index 530acb56..52a05b4d 100644 --- a/data/sisu/v5/v/version.yml +++ b/data/sisu/v5/v/version.yml @@ -1,5 +1,5 @@ --- -:version: 5.0.25 -:date_stamp: 2013w44/5 -:date: "2013-11-08" +:version: 5.1.0 +:date_stamp: 2013w48/1 +:date: "2013-12-02" :project: SiSU diff --git a/lib/sisu/v4/hub.rb b/lib/sisu/v4/hub.rb index ebe9ccf4..5965994f 100644 --- a/lib/sisu/v4/hub.rb +++ b/lib/sisu/v4/hub.rb @@ -388,7 +388,6 @@ module SiSU SiSU_Source::SiSUpodSource.new(@opt).read end if @opt.act[:share_source][:set]==:on -#REDO require_relative 'share_src' # -s share_src.rb begin ensure @@ -516,6 +515,9 @@ module SiSU SiSU_Env::InfoProcessingFlag.new if @opt.act[:version_info][:set]==:on #% version information SiSU_Env::InfoAbout.new(@opt).sisu_version + if @opt.cmd =~/[vVM]/ + SiSU_Screen::Ansi.new(@opt.cmd,' ' + File.dirname(__FILE__)).grey + end end if @opt.act[:dal][:set]==:on \ or @opt.act[:maintenance][:set]==:on #% --maintenance, -m for -C diff --git a/lib/sisu/v4/screen_text_color.rb b/lib/sisu/v4/screen_text_color.rb index ea9ae24d..5e395133 100644 --- a/lib/sisu/v4/screen_text_color.rb +++ b/lib/sisu/v4/screen_text_color.rb @@ -253,6 +253,9 @@ module SiSU_Screen %{#{@cX.off} } + %{#{@cX.cyan}nav only: #{@txt[4]}#{@cX.off}.} end + def grey + puts "#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.cyan}#{@txt[1]}#{@cX.off}" + end def txt_white puts "\t#{@cX.white}#{@txt[0]}#{@cX.off} #{@cX.white}#{@txt[1]}#{@cX.off}" end diff --git a/lib/sisu/v5/air.rb b/lib/sisu/v5/air.rb index cd5c2f68..a6636fe9 100644 --- a/lib/sisu/v5/air.rb +++ b/lib/sisu/v5/air.rb @@ -62,7 +62,7 @@ module SiSU_Air require_relative 'particulars' # particulars.rb class Source - @@dal_array=[] + @@ao_array=[] @@fns=nil def initialize(opt) @opt=opt @@ -70,7 +70,7 @@ module SiSU_Air @particulars=SiSU_Particulars::Combined.new(opt) #@env=@particulars.env #@md=@particulars.md - #@dal_array=@particulars.dal_array + #@ao_array=@particulars.ao_array end def read end @@ -78,7 +78,7 @@ module SiSU_Air def print puts @particulars.md.inspect puts @particulars.env.inspect - puts @particulars.dal_array + puts @particulars.ao_array end end end diff --git a/lib/sisu/v5/dal.rb b/lib/sisu/v5/ao.rb index fb8a19ae..7c367980 100644 --- a/lib/sisu/v5/dal.rb +++ b/lib/sisu/v5/ao.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -60,26 +60,26 @@ in subsequent processing =end -module SiSU_DAL +module SiSU_AO require_relative 'defaults' # defaults.rb include SiSU_Viz require_relative 'sysenv' # sysenv.rb include SiSU_Env require_relative 'param' # param.rb include SiSU_Param - require_relative 'dal_doc_objects' # dal_doc_objects.rb - require_relative 'dal_syntax' # dal_syntax.rb - include SiSU_DAL_Syntax - require_relative 'dal_doc_str' # dal_doc_str.rb - require_relative 'dal_idx' # dal_idx.rb - require_relative 'dal_numbering' # dal_numbering.rb - require_relative 'dal_hash_digest' # dal_hash_digest.rb - require_relative 'dal_endnotes' # dal_endnotes.rb - require_relative 'dal_images' # dal_images.rb - require_relative 'dal_metadata' # dal_metadata.rb - require_relative 'dal_character_check' # dal_character_check.rb - require_relative 'dal_misc_arrange' # dal_misc_arrange.rb - require_relative 'dal_expand_insertions' # dal_expand_insertions.rb + require_relative 'ao_doc_objects' # ao.rb + require_relative 'ao_syntax' # ao_syntax.rb + include SiSU_AO_Syntax + require_relative 'ao_doc_str' # ao_doc_str.rb + require_relative 'ao_idx' # ao_idx.rb + require_relative 'ao_numbering' # ao_numbering.rb + require_relative 'ao_hash_digest' # ao_hash_digest.rb + require_relative 'ao_endnotes' # ao_endnotes.rb + require_relative 'ao_images' # ao_images.rb + require_relative 'ao_metadata' # ao_metadata.rb + require_relative 'ao_character_check' # ao_character_check.rb + require_relative 'ao_misc_arrange' # ao_misc_arrange.rb + require_relative 'ao_expand_insertions' # ao_expand_insertions.rb require_relative 'prog_text_translation' # prog_text_translation.rb require_relative 'shared_sem' # shared_sem.rb class Instantiate < SiSU_Param::Parameters::Instructions @@ -89,7 +89,7 @@ module SiSU_DAL end end class Source <Instantiate - @@dal_array=[] + @@ao_array=[] @@idx_arr={ sst: [], tex: [], html: [], xhtml: [] } @@map_arr={ nametags: [], ocn_htmlseg: [] } @@fns=nil @@ -105,55 +105,55 @@ module SiSU_DAL opt.fns end @make_fns=SiSU_Env::InfoFile.new(fn_use) - @fnm=@make_fns.marshal.dal_metadata - @fnc=@make_fns.marshal.dal_content - @idx_sst=@make_fns.marshal.dal_idx_sst_rel_html_seg - @idx_raw=@make_fns.marshal.dal_idx_sst_rel - @idx_html=@make_fns.marshal.dal_idx_html - @idx_xhtml=@make_fns.marshal.dal_idx_xhtml - @map_nametags=@make_fns.marshal.dal_map_nametags - @map_ocn_htmlseg=@make_fns.marshal.dal_map_ocn_htmlseg + @fnm=@make_fns.marshal.ao_metadata + @fnc=@make_fns.marshal.ao_content + @idx_sst=@make_fns.marshal.ao_idx_sst_rel_html_seg + @idx_raw=@make_fns.marshal.ao_idx_sst_rel + @idx_html=@make_fns.marshal.ao_idx_html + @idx_xhtml=@make_fns.marshal.ao_idx_xhtml + @map_nametags=@make_fns.marshal.ao_map_nametags + @map_ocn_htmlseg=@make_fns.marshal.ao_map_ocn_htmlseg @env=SiSU_Env::InfoEnv.new end - def read #creates dal + def read #creates ao begin - @@dal_array=[] + @@ao_array=[] @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ ? @fnx : @opt.fns - create_dal + create_ao rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@@fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end - def get #reads dal, unless does not exist then creates first + def get #reads ao, unless does not exist then creates first begin - dal=[] + ao=[] unless @@fns==@opt.fns \ or @@fns==@fnx @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ ? @fnx : @opt.fns - @@dal_array=[] + @@ao_array=[] end - dal=(@@dal_array.empty?) \ + ao=(@@ao_array.empty?) \ ? read_fnc - : @@dal_array.dup + : @@ao_array.dup rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end - def get_idx_sst #reads dal idx.sst, #unless does not exist then creates first + def get_idx_sst #reads ao idx.sst, #unless does not exist then creates first begin - dal=[] + ao=[] unless @@fns==@opt.fns \ or @@fns==@fnx @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ @@ -161,18 +161,18 @@ module SiSU_DAL : @opt.fns @@idx_arr[:sst]=[] end - dal=(@@idx_arr[:sst].empty?) ? read_idx_sst : @@idx_arr[:sst].dup #check + ao=(@@idx_arr[:sst].empty?) ? read_idx_sst : @@idx_arr[:sst].dup #check rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end def get_idx_raw begin - dal=[] + ao=[] unless @@fns==@opt.fns \ or @@fns==@fnx @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ @@ -180,18 +180,18 @@ module SiSU_DAL : @opt.fns @@idx_arr[:tex]=[] end - dal=(@@idx_arr[:tex].empty?) ? read_idx_raw : @@idx_arr[:tex].dup #check + ao=(@@idx_arr[:tex].empty?) ? read_idx_raw : @@idx_arr[:tex].dup #check rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end - def get_idx_html #reads dal idx.html, #unless does not exist then creates first + def get_idx_html #reads ao idx.html, #unless does not exist then creates first begin - dal=[] + ao=[] unless @@fns==@opt.fns \ or @@fns==@fnx @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ @@ -199,18 +199,18 @@ module SiSU_DAL : @opt.fns @@idx_arr[:html]=[] end - dal=(@@idx_arr[:html].empty?) ? read_idx_html : @@idx_arr[:html].dup + ao=(@@idx_arr[:html].empty?) ? read_idx_html : @@idx_arr[:html].dup rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end - def get_idx_xhtml #reads dal idx.xhtml, #unless does not exist then creates first + def get_idx_xhtml #reads ao idx.xhtml, #unless does not exist then creates first begin - dal=[] + ao=[] unless @@fns==@opt.fns \ or @@fns==@fnx @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ @@ -218,18 +218,18 @@ module SiSU_DAL : @opt.fns @@idx_arr[:xthml]=[] end - dal=(@@idx_arr[:xhtml].empty?) ? read_idx_xhtml : @@idx_arr[:xhtml].dup + ao=(@@idx_arr[:xhtml].empty?) ? read_idx_xhtml : @@idx_arr[:xhtml].dup rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end - def get_map_nametags #reads dal map.nametags, #unless does not exist then creates first + def get_map_nametags #reads ao map.nametags, #unless does not exist then creates first begin - dal=[] + ao=[] unless @@fns==@opt.fns \ or @@fns==@fnx @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ @@ -237,18 +237,18 @@ module SiSU_DAL : @opt.fns @@map_arr[:nametags]=[] end - dal=(@@map_arr[:nametags].empty?) ? read_map_nametags : @@map_arr[:nametags].dup + ao=(@@map_arr[:nametags].empty?) ? read_map_nametags : @@map_arr[:nametags].dup rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end - def get_map_ocn_htmlseg #reads dal map.ocn_htmlseg, #unless does not exist then creates first + def get_map_ocn_htmlseg #reads ao map.ocn_htmlseg, #unless does not exist then creates first begin - dal=[] + ao=[] unless @@fns==@opt.fns \ or @@fns==@fnx @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ @@ -256,18 +256,18 @@ module SiSU_DAL : @opt.fns @@map_arr[:ocn_htmlseg]=[] end - dal=(@@map_arr[:ocn_htmlseg].empty?) ? read_map_ocn_htmlseg : @@map_arr[:ocn_htmlseg].dup + ao=(@@map_arr[:ocn_htmlseg].empty?) ? read_map_ocn_htmlseg : @@map_arr[:ocn_htmlseg].dup rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - SiSU_DAL::Instantiate.new + SiSU_AO::Instantiate.new end end protected - def create_dal - dal_array=[] + def create_ao + ao_array=[] unless @opt.act[:quiet][:set]==:on tell=(@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ @@ -285,7 +285,7 @@ module SiSU_DAL meta=file_array=@env.source_file_processing_array(fn) @md=SiSU_Param::Parameters::Instructions.new(meta,@opt).extract meta=nil - dal=SiSU_DAL::Make.new(fn,@md,file_array).song + ao=SiSU_AO::Make.new(fn,@md,file_array).song if (@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) @@ -294,12 +294,12 @@ module SiSU_DAL || @opt.act[:verbose_plus][:set]==:on) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"~meta/#{@opt.fns}.meta").output elsif @opt.act[:maintenance][:set]==:on - SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"dal -> #{cf.meta}").txt_grey + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"ao -> #{cf.meta}").txt_grey end end - dal.each {|s| dal_array << s} + ao.each {|s| ao_array << s} if @opt.act[:maintenance][:set]==:on - dal_array.each do |obj| + ao_array.each do |obj| if defined? obj.parent if defined? obj.ln if defined? obj.node @@ -317,19 +317,19 @@ module SiSU_DAL end end end - dal_array + ao_array end def read_fnm - dal=[] - dal=(FileTest.file?(@fnm)) \ - ? (File.open(@fnm,'r:utf-8'){ |f| dal=Marshal.load(f)}) - : SiSU_DAL::Source.new(@opt).create_dal + ao=[] + ao=(FileTest.file?(@fnm)) \ + ? (File.open(@fnm,'r:utf-8'){ |f| ao=Marshal.load(f)}) + : SiSU_AO::Source.new(@opt).create_ao end def read_fnc - dal=[] - dal=(FileTest.file?(@fnc)) \ - ? (File.open(@fnc,'r:utf-8'){ |f| dal=Marshal.load(f)}) - : SiSU_DAL::Source.new(@opt).create_dal + ao=[] + ao=(FileTest.file?(@fnc)) \ + ? (File.open(@fnc,'r:utf-8'){ |f| ao=Marshal.load(f)}) + : SiSU_AO::Source.new(@opt).create_ao end def read_idx_sst m=[] @@ -439,21 +439,21 @@ module SiSU_DAL end end else - hard="#{@dir.processing_path.dal}/#{@md.fns}.meta" + hard="#{@dir.processing_path.ao}/#{@md.fns}.meta" File.unlink(hard) if FileTest.file?(hard) - hard="#{@dir.processing_path.dal}/#{@md.fns}.txt" + hard="#{@dir.processing_path.ao}/#{@md.fns}.txt" File.unlink(hard) if FileTest.file?(hard) - hard="#{@dir.processing_path.dal}/#{@md.fns}.debug.txt" + hard="#{@dir.processing_path.ao}/#{@md.fns}.debug.txt" File.unlink(hard) if FileTest.file?(hard) end end def make_marshal_content - marshal_dal=@make.marshal.dal_content - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + marshal_ao=@make.marshal.ao_content + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) end def make_marshal_metadata - marshal_dal=@make.marshal.dal_metadata - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + marshal_ao=@make.marshal.ao_metadata + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) end def idx_html_hard_output if @md.book_idx \ @@ -464,33 +464,33 @@ module SiSU_DAL @data.each {|s| filename_meta.puts s.strip + "\n" unless s.strip.empty?} end else - hard_idx_html="#{@dir.processing_path.dal}/#{@md.fns}.idx.html" + hard_idx_html="#{@dir.processing_path.ao}/#{@md.fns}.idx.html" File.unlink(hard_idx_html) if FileTest.file?(hard_idx_html) end end def make_marshal_idx_sst_html_seg - marshal_dal=@make.marshal.dal_idx_sst_rel_html_seg - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + marshal_ao=@make.marshal.ao_idx_sst_rel_html_seg + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) end def make_marshal_idx_sst_rel - marshal_dal=@make.marshal.dal_idx_sst_rel - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + marshal_ao=@make.marshal.ao_idx_sst_rel + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) end def make_marshal_idx_html - marshal_dal=@make.marshal.dal_idx_html - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + marshal_ao=@make.marshal.ao_idx_html + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) end def make_marshal_idx_xhtml - marshal_dal=@make.marshal.dal_idx_xhtml - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + marshal_ao=@make.marshal.ao_idx_xhtml + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) end def make_marshal_map_nametags - marshal_dal=@make.marshal.dal_map_nametags - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) + marshal_ao=@make.marshal.ao_map_nametags + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) end def make_marshal_map_name_ocn_htmlseg - marshal_dal=@make.marshal.dal_map_ocn_htmlseg - File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) + marshal_ao=@make.marshal.ao_map_ocn_htmlseg + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) end end class Make @@ -505,28 +505,28 @@ module SiSU_DAL def song reset data=@data - data=SiSU_DAL_Insertions::Insertions.new(@md,data).expand_insertions? # dal_expand_insertions.rb - data=SiSU_DAL_MiscArrangeText::SI.new(@md,data).prepare_text # dal_misc_arrange.rb - data,metadata=SiSU_DAL_DocumentStructureExtract::Build.new(@md,data).identify_parts # dal_doc_str.rb - data=SiSU_DAL_Syntax::Markup.new(@md,data).songsheet # dal_syntax.rb - data,endnote_array=SiSU_DAL_CharacterCheck::Check.new(data).character_check_and_oldstyle_endnote_array # dal_character_check.rb - data=SiSU_DAL_Images::Images.new(@md,data).images # dal_images.rb - data,tags_map,ocn_html_seg_map=SiSU_DAL_Numbering::Numbering.new(@md,data).numbering_song # dal_numbering.rb - data,book_index_rel,book_index_rel_html_seg,html_idx,xhtml_idx=SiSU_DAL_BookIndex::BookIndex.new(@md,data,@env).indexing_song if @md.book_idx # dal_idx.rb - data=SiSU_DAL_Endnotes::Endnotes.new(@md,data,endnote_array).endnotes # dal_endnotes.rb + data=SiSU_AO_Insertions::Insertions.new(@md,data).expand_insertions? # ao_expand_insertions.rb + data=SiSU_AO_MiscArrangeText::SI.new(@md,data).prepare_text # ao_misc_arrange.rb + data,metadata=SiSU_AO_DocumentStructureExtract::Build.new(@md,data).identify_parts # ao_doc_str.rb + data=SiSU_AO_Syntax::Markup.new(@md,data).songsheet # ao_syntax.rb + data,endnote_array=SiSU_AO_CharacterCheck::Check.new(data).character_check_and_oldstyle_endnote_array # ao_character_check.rb + data=SiSU_AO_Images::Images.new(@md,data).images # ao_images.rb + data,tags_map,ocn_html_seg_map=SiSU_AO_Numbering::Numbering.new(@md,data).numbering_song # ao_numbering.rb + data,book_index_rel,book_index_rel_html_seg,html_idx,xhtml_idx=SiSU_AO_BookIndex::BookIndex.new(@md,data,@env).indexing_song if @md.book_idx # ao_idx.rb + data=SiSU_AO_Endnotes::Endnotes.new(@md,data,endnote_array).endnotes # ao_endnotes.rb outputdata=data - if (@md.opt.act[:dal][:set]==:on \ + if (@md.opt.act[:ao][:set]==:on \ || @md.opt.act[:maintenance][:set]==:on) - SiSU_DAL::Output.new(@fn,@md,outputdata).hard_output - SiSU_DAL::Output.new(@fn,@md,outputdata).make_marshal_content - SiSU_DAL::Output.new(@fn,@md,metadata).make_marshal_metadata - SiSU_DAL::Output.new(@fn,@md,html_idx).idx_html_hard_output - SiSU_DAL::Output.new(@fn,@md,book_index_rel_html_seg).make_marshal_idx_sst_html_seg - SiSU_DAL::Output.new(@fn,@md,book_index_rel).make_marshal_idx_sst_rel - SiSU_DAL::Output.new(@fn,@md,html_idx).make_marshal_idx_html - SiSU_DAL::Output.new(@fn,@md,xhtml_idx).make_marshal_idx_xhtml - SiSU_DAL::Output.new(@fn,@md,tags_map).make_marshal_map_nametags - SiSU_DAL::Output.new(@fn,@md,ocn_html_seg_map).make_marshal_map_name_ocn_htmlseg + SiSU_AO::Output.new(@fn,@md,outputdata).hard_output + SiSU_AO::Output.new(@fn,@md,outputdata).make_marshal_content + SiSU_AO::Output.new(@fn,@md,metadata).make_marshal_metadata + SiSU_AO::Output.new(@fn,@md,html_idx).idx_html_hard_output + SiSU_AO::Output.new(@fn,@md,book_index_rel_html_seg).make_marshal_idx_sst_html_seg + SiSU_AO::Output.new(@fn,@md,book_index_rel).make_marshal_idx_sst_rel + SiSU_AO::Output.new(@fn,@md,html_idx).make_marshal_idx_html + SiSU_AO::Output.new(@fn,@md,xhtml_idx).make_marshal_idx_xhtml + SiSU_AO::Output.new(@fn,@md,tags_map).make_marshal_map_nametags + SiSU_AO::Output.new(@fn,@md,ocn_html_seg_map).make_marshal_map_name_ocn_htmlseg end reset outputdata diff --git a/lib/sisu/v5/dal_character_check.rb b/lib/sisu/v5/ao_character_check.rb index 62aa60c1..86f23f5b 100644 --- a/lib/sisu/v5/dal_character_check.rb +++ b/lib/sisu/v5/ao_character_check.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_character_check.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_character_check.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_CharacterCheck +module SiSU_AO_CharacterCheck class Check def initialize(data) @data=data diff --git a/lib/sisu/v5/dal_doc_objects.rb b/lib/sisu/v5/ao_doc_objects.rb index 518535b0..556304d4 100644 --- a/lib/sisu/v5/dal_doc_objects.rb +++ b/lib/sisu/v5/ao_doc_objects.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_doc_objects.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_doc_objects.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: document abstraction =end -module SiSU_DAL_DocumentStructure +module SiSU_AO_DocumentStructure class Extract def extract(h,o) h ? h : o diff --git a/lib/sisu/v5/dal_doc_str.rb b/lib/sisu/v5/ao_doc_str.rb index 203bc988..465a5666 100644 --- a/lib/sisu/v5/dal_doc_str.rb +++ b/lib/sisu/v5/ao_doc_str.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_doc_str.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_doc_str.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: document abstraction =end -module SiSU_DAL_DocumentStructureExtract +module SiSU_AO_DocumentStructureExtract class Instantiate < SiSU_Param::Parameters::Instructions @@flag={ ocn: :on, @@ -89,10 +89,10 @@ module SiSU_DAL_DocumentStructureExtract } def initialize(md,data) @md,@data=md,data - SiSU_DAL_DocumentStructureExtract::Instantiate.new - @pb=SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) - @pbn=SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) - @pbl=SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line]) + SiSU_AO_DocumentStructureExtract::Instantiate.new + @pb=SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) + @pbn=SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) + @pbl=SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line]) end def ln_get(lv) case lv @@ -238,7 +238,7 @@ module SiSU_DAL_DocumentStructureExtract @@flag[:ocn]=:on {flag: :ocn_on} end - t_o=SiSU_DAL_DocumentStructure::ObjectFlag.new.flag_ocn(h) + t_o=SiSU_AO_DocumentStructure::ObjectFlag.new.flag_ocn(h) next end t_o=t_o.gsub(/(?:\n\s*\n)+/m,"\n") if @@flag[:code]==:off @@ -271,7 +271,7 @@ module SiSU_DAL_DocumentStructureExtract when /^%+\s/ #comment t_o=if t_o=~/^%+\s+(.+)/ h={obj: $1} - SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) else nil end when /^:?([A-C1-6])\~/ #heading / lv @@ -292,7 +292,7 @@ module SiSU_DAL_DocumentStructureExtract end end h={ lv: lv, ln: ln, obj: obj, idx: idx, tags: tags } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h) elsif t_o=~/^:?[A-C1-6]\~(\S+?)-\s+(.+)/m name,obj=$1,$2 note=endnote_test?(obj) @@ -308,7 +308,7 @@ module SiSU_DAL_DocumentStructureExtract end end h={ lv: lv, name: name, obj: obj, idx: idx, autonum_: false, tags: tags} - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h) elsif t_o=~/^:?[A-C1-6]\~(\S+)\s+(.+)/m name,obj=$1,$2 note=endnote_test?(obj) @@ -324,7 +324,7 @@ module SiSU_DAL_DocumentStructureExtract end end h={ lv: lv, name: name, obj: obj, idx: idx, tags: tags } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h) else nil end when /^_(?:[1-9]!?|[1-9]?\*)\s+/ #indented and/or bullet paragraph @@ -347,7 +347,7 @@ module SiSU_DAL_DocumentStructureExtract end end h={ bullet_: bullet, hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags } - SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h) + SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end else nil end @@ -370,18 +370,18 @@ module SiSU_DAL_DocumentStructureExtract end end h={ hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags } - SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h) + SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end else nil end when /^<(?:br)?:(?:pa?r|o(?:bj|---)?)>\s*$/ #[br:par] #[br:obj] - SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_obj]) + SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_obj]) when /^(?:-\\\\-|<:pb>)\s*$/ #[br:pg] - SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page],:markup) + SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page],:markup) when /^(?:=\\\\=|<:pn>)\s*$/ #[br:pgn] - SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new],:markup) + SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new],:markup) when /^-\.\.-\s*$/ #[br:pgl] - SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line],:markup) + SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line],:markup) else #paragraph image=image_test(t_o) note=endnote_test?(t_o) @@ -394,7 +394,7 @@ module SiSU_DAL_DocumentStructureExtract end unless obj=~/\A\s*\Z/m h={ bullet_: false, indent: 0, hang: 0, obj: obj, idx: idx, note_: note, image_: image, tags: tags } - SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h) + SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end end elsif @@flag[:code]==:off @@ -407,7 +407,7 @@ module SiSU_DAL_DocumentStructureExtract @@counter=1 @codeblock_numbered=(t_o =~/^(?:code\{#|[`]{3}\s+code\s[#])/) ? true : false h={ obj: 'code block start' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) elsif t_o =~/^(?:poem\{|[`]{3}\s+poem)/ @@flag[:poem]=case t_o when /^poem\{/; :curls @@ -415,7 +415,7 @@ module SiSU_DAL_DocumentStructureExtract else @@flag[:poem] #error end h={ obj: 'poem start' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) tuned_file << t_o elsif t_o =~/^(?:group\{|[`]{3}\s+group)/ @@flag[:group]=case t_o @@ -424,7 +424,7 @@ module SiSU_DAL_DocumentStructureExtract else @@flag[:group] #error end h={ obj: 'group text start' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) tuned_file << t_o elsif t_o =~/^(?:block\{|[`]{3}\s+block)/ @@flag[:block]=case t_o @@ -433,7 +433,7 @@ module SiSU_DAL_DocumentStructureExtract else @@flag[:block] #error end h={ obj: 'block text start' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) tuned_file << t_o elsif t_o =~/^(?:alt\{|[`]{3}\s+alt)/ @@flag[:alt]=case t_o @@ -442,11 +442,11 @@ module SiSU_DAL_DocumentStructureExtract else @@flag[:alt] #error end h={ obj: 'alt text start' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) tuned_file << t_o elsif t_o =~/^(?:table\{|[`]{3}\s+table|\{table)[ ~]/ h={ obj: 'table start' } #introduce a counter - ins=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + ins=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) tuned_file << ins if t_o=~/^table\{(?:~h)?\s+/ @@flag[:table]=:curls @@ -500,10 +500,10 @@ module SiSU_DAL_DocumentStructureExtract cols.times { col << width } end h={ head_: hd, cols: cols, widths: col, obj: rows, idx: idx, tags: tags } - t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? tuned_file << t_o h={ obj: 'table end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) t_o elsif t_o=~/^[`]{3}\s+table(?:~h)?\s+/ m1,m2,hd=nil,nil,nil @@ -523,10 +523,10 @@ module SiSU_DAL_DocumentStructureExtract rows += r + Mx[:tc_c] end h={ head_: hd, cols: col.length, widths: col, obj: rows, idx: idx, tags: tags } - t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? tuned_file << t_o h={ obj: 'table end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) t_o elsif t_o=~/^\{table(?:~h)?\s+/ m1,m2,hd=nil,nil,nil @@ -546,10 +546,10 @@ module SiSU_DAL_DocumentStructureExtract rows += r + Mx[:tc_c] end h={ head_: hd, cols: col.length, widths: col, obj: rows, idx: idx, tags: tags } - t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? tuned_file << t_o h={ obj: 'table end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) t_o end end @@ -563,11 +563,11 @@ module SiSU_DAL_DocumentStructureExtract @@flag[:table]=:off headings,columns,widths,idx=@h[:head_],@h[:cols],@h[:widths],@h[:idx] @h={ head_: headings, cols: columns, widths: widths, idx: idx, obj: @rows } - t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(@h) + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(@h) tuned_file << t_o @h,@rows=nil,'' h={ obj: 'table end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) t_o else if t_o.is_a?(String) \ @@ -586,18 +586,18 @@ module SiSU_DAL_DocumentStructureExtract obj=@tuned_code.join("\n") tags=[] h={ obj: obj, tags: tags, number_: @codeblock_numbered } - t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.code(h) + t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.code(h) @tuned_code=[] tuned_file << t_o h={ obj: 'code block end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) end if (@@flag[:code]==:curls or @@flag[:code]==:tics) \ and t_o.is_a?(String) sub_array=t_o.dup + "#{Mx[:br_nl]}" @line_mode=[] sub_array.scan(/.+/) {|w| @line_mode << w if w =~/[\S]+/} - t_o=SiSU_DAL_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(:code).join + t_o=SiSU_AO_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(:code).join @tuned_code << t_o t_o=nil end @@ -609,37 +609,37 @@ module SiSU_DAL_DocumentStructureExtract or (@@flag[:poem]==:tics and t_o =~/^[`]{3}(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:poem]=:off h={ obj: 'poem end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) elsif (@@flag[:group]==:curls and t_o =~/^\}group/) \ or (@@flag[:group]==:tics and t_o =~/^[`]{3}(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:group]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, tags: tags } @tuned_block=[] - t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.group(h) + t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.group(h) tuned_file << t_o h={ obj: 'group text end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) elsif (@@flag[:block]==:curls and t_o =~/^\}block/) \ or (@@flag[:block]==:tics and t_o =~/^[`]{3}(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:block]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, tags: tags } @tuned_block=[] - t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.block(h) + t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.block(h) tuned_file << t_o h={ obj: 'block text end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) elsif (@@flag[:alt]==:curls and t_o =~/^\}alt/) \ or (@@flag[:alt]==:tics and t_o =~/^[`]{3}(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:alt]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, tags: tags } - t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.alt(h) + t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.alt(h) @tuned_block=[] tuned_file << t_o h={ obj: 'alt text end' } #introduce a counter - t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) + t_o=SiSU_AO_DocumentStructure::ObjectComment.new.comment(h) end if (@@flag[:poem]==:curls or @@flag[:poem]==:tics \ or @@flag[:group]==:curls or @@flag[:group]==:tics \ @@ -650,13 +650,13 @@ module SiSU_DAL_DocumentStructureExtract sub_array=t_o.dup @line_mode=sub_array.scan(/.+/) type=if @@flag[:poem]==:curls or @@flag[:poem]==:tics - t_o=SiSU_DAL_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(type).join + t_o=SiSU_AO_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(type).join poem=t_o.split(/\n\n/) poem.each do |v| v=v.gsub(/\n/m,"#{Mx[:br_nl]}\n") obj,tags=extract_tags(v) h={ obj: obj, tags: tags } - t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.verse(h) + t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.verse(h) tuned_file << t_o end :poem @@ -691,26 +691,26 @@ module SiSU_DAL_DocumentStructureExtract if @md.flag_endnotes tuned_file << @pb h={ ln: 2, lc: 2, obj: 'Endnotes', autonum_: false } - tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h) + tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h) h={ ln: 4, lc: 3, obj: 'Endnotes', name: 'endnotes', autonum_: false } - tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h) + tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h) h={ obj: 'Endnotes' } end if @md.book_idx tuned_file << @pb h={ ln: 2, lc: 2, obj: 'Index', autonum_: false } - tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h) + tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h) h={ ln: 4, lc: 3, obj: 'Index', name: 'book_index', autonum_: false } - tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h) + tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h) h={ obj: 'Index' } end tuned_file << @pb h={ ln: 2, lc: 2, obj: 'Metadata', autonum_: false, ocn_: false } - tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h) + tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h) h={ ln: 4, lc: 3, obj: 'SiSU Metadata, document information', name: 'metadata', autonum_: false, ocn_: false } - tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h) + tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h) h={ obj: 'eof' } - meta=SiSU_DAL_DocumentStructure::ObjectMetadata.new.metadata(@metadata) + meta=SiSU_AO_DocumentStructure::ObjectMetadata.new.metadata(@metadata) [tuned_file,meta] end def table_rows_and_columns_array(table_str) @@ -723,11 +723,11 @@ module SiSU_DAL_DocumentStructureExtract end def meta_heading(h) h={ lv: h[:lv], ln: h[:ln], name: h[:name], obj: h[:obj], ocn: '0' } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h) end def meta_para(str) h={ obj: str, ocn_: false } - SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h) + SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end def build_lines(type=:none) lines,lines_new=@data,[] @@ -769,22 +769,22 @@ module SiSU_DAL_DocumentStructureExtract @dob=case @dob.obj when /^#{@md.lv1}/ h={ lv: 'A', ln: 1 } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob) when /^#{@md.lv2}/ h={ lv: 'B', ln: 2 } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob) when /^#{@md.lv3}/ h={ lv: 'C', ln: 3 } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob) when /^#{@md.lv4}/ h={ lv: '1', ln: 4 } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob) when /^#{@md.lv5}/ h={ lv: '2', ln: 5 } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob) when /^#{@md.lv6}/ h={ lv: '3', ln: 6 } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob) else @dob end else @dob @@ -868,7 +868,6 @@ has incorrect level and/or parent level} && (dob.of !=:comment \ && dob.of !=:layout \ && dob.of !=:meta) \ - && dob.obj !~/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/ \ && dob.ocn_ #dob.ln now is determined, and set earlier, check how best to remove this --> if dob.is==:heading @@ -884,200 +883,258 @@ has incorrect level and/or parent level} when '6'; 9 end end - if not dob.obj =~/<:#>|~#|-#/ \ - or not dob.toc_ # fix this no longer in dob.obj + if not dob.obj =~/~#|-#/ ocn+=1 - if dob.is==:heading \ - and (ln.to_s =~/^[1-9]/ \ - or ln.to_s =~@md.lv1 \ - or ln.to_s =~@md.lv2 \ - or ln.to_s =~@md.lv3 \ - or ln.to_s =~@md.lv4 \ - or ln.to_s =~@md.lv5 \ - or ln.to_s =~@md.lv6) + end + if dob.is==:heading \ + and (ln.to_s =~/^[1-9]/ \ + or ln.to_s =~@md.lv1 \ + or ln.to_s =~@md.lv2 \ + or ln.to_s =~@md.lv3 \ + or ln.to_s =~@md.lv4 \ + or ln.to_s =~@md.lv5 \ + or ln.to_s =~@md.lv6) + if not dob.obj =~/~#|-#/ ocnh+=1 - if ln==1 \ - or ln=~@md.lv1; ocnh1+=1 #heading + end + if ln==1 \ + or ln=~@md.lv1 + if not dob.obj =~/~#|-#/ + ocn_flag=true + ocnh1+=1 #heading node1="1:#{ocnh1};#{ocn}" - document_structure_check_info(node1,node0) - @collapsed_lv1=1 - collapsed_level=@collapsed_lv1 - node,ocn_sp,parent=node1,"h#{ocnh}",node0 #FIX - elsif ln==2 \ - or ln=~@md.lv2; ocnh2+=1 + else + ocn_flag=false + node1="1:0;0" + end + document_structure_check_info(node1,node0) + @collapsed_lv1=1 + collapsed_level=@collapsed_lv1 + node,ocn_sp,parent=node1,"h#{ocnh}",node0 #FIX + elsif ln==2 \ + or ln=~@md.lv2 + if not dob.obj =~/~#|-#/ + ocn_flag=true + ocnh2+=1 node2="2:#{ocnh2};#{ocn}" - parent=if node1 - document_structure_check_info(node2,node1) - @collapsed_lv2=@collapsed_lv1+1 - node1 - else - document_structure_check_info(node2,node0,:error) - node0 - end - collapsed_level=@collapsed_lv2 - node,ocn_sp=node2,"h#{ocnh}" - elsif ln==3 \ - or ln=~@md.lv3; ocnh3+=1 + else + ocn_flag=false + node2="2:0;0" + end + parent=if node1 + document_structure_check_info(node2,node1) + @collapsed_lv2=@collapsed_lv1+1 + node1 + else + document_structure_check_info(node2,node0,:error) + node0 + end + collapsed_level=@collapsed_lv2 + node,ocn_sp=node2,"h#{ocnh}" + elsif ln==3 \ + or ln=~@md.lv3 + if not dob.obj =~/~#|-#/ + ocn_flag=true + ocnh3+=1 node3="3:#{ocnh3};#{ocn}" - parent=if node2 - document_structure_check_info(node3,node2) - @collapsed_lv3=@collapsed_lv2+1 - node2 - elsif node1 - warning_incorrect_parent_level_or_level(dob.obj) - puts %{parent is :A~ & this level #{dob.lv} + else + ocn_flag=false + node3="3:0;0" + end + parent=if node2 + document_structure_check_info(node3,node2) + @collapsed_lv3=@collapsed_lv2+1 + node2 + elsif node1 + warning_incorrect_parent_level_or_level(dob.obj) + puts %{parent is :A~ & this level #{dob.lv} either parent should be level :B~ or this level should be level :B~ rather than #{dob.lv}} - document_structure_check_info(node3,node1,:error) - @collapsed_lv3=@collapsed_lv1+1 - node1 - else - document_structure_check_info(node3,node0,:error) - warning_incorrect_parent_level_or_level(dob.obj) - node0 - end - collapsed_level=@collapsed_lv3 - node,ocn_sp=node3,"h#{ocnh}" - elsif ln==4 \ - or ln=~@md.lv4; ocnh4+=1 + document_structure_check_info(node3,node1,:error) + @collapsed_lv3=@collapsed_lv1+1 + node1 + else + document_structure_check_info(node3,node0,:error) + warning_incorrect_parent_level_or_level(dob.obj) + node0 + end + collapsed_level=@collapsed_lv3 + node,ocn_sp=node3,"h#{ocnh}" + elsif ln==4 \ + or ln=~@md.lv4 + if not dob.obj =~/~#|-#/ + ocn_flag=true + ocnh4+=1 node4="4:#{ocnh4};#{ocn}" - parent=if node3 - document_structure_check_info(node4,node3) - @collapsed_lv4=@collapsed_lv3+1 - node3 - elsif node2 - document_structure_check_info(node4,node2) - @collapsed_lv4=@collapsed_lv2+1 - node2 - elsif node1 - document_structure_check_info(node4,node1) - @collapsed_lv4=@collapsed_lv1+1 - node1 - else - warning_incorrect_parent_level_or_level(dob.obj) - document_structure_check_info(node4,node0,:error) - node0 - end - collapsed_level=@collapsed_lv4 - node,ocn_sp=node4,"h#{ocnh}" - elsif ln==5 \ - or ln=~@md.lv5; ocnh5+=1 + else + ocn_flag=false + node4="4:0;0" + end + parent=if node3 + document_structure_check_info(node4,node3) + @collapsed_lv4=@collapsed_lv3+1 + node3 + elsif node2 + document_structure_check_info(node4,node2) + @collapsed_lv4=@collapsed_lv2+1 + node2 + elsif node1 + document_structure_check_info(node4,node1) + @collapsed_lv4=@collapsed_lv1+1 + node1 + else + warning_incorrect_parent_level_or_level(dob.obj) + document_structure_check_info(node4,node0,:error) + node0 + end + collapsed_level=@collapsed_lv4 + node,ocn_sp=node4,"h#{ocnh}" + elsif ln==5 \ + or ln=~@md.lv5 + if not dob.obj =~/~#|-#/ + ocn_flag=true + ocnh5+=1 node5="5:#{ocnh5};#{ocn}" - parent=if node4 - document_structure_check_info(node5,node4) - @collapsed_lv5=@collapsed_lv4+1 - node4 - elsif node3 - warning_incorrect_parent_level_or_level(dob.obj) - document_structure_check_info(node5,node3,:error) - @collapsed_lv5=@collapsed_lv3+1 - node3 - elsif node2 - warning_incorrect_parent_level_or_level(dob.obj) - document_structure_check_info(node5,node2,:error) - @collapsed_lv5=@collapsed_lv2+1 - node2 - elsif node1 - warning_incorrect_parent_level_or_level(dob.obj) - document_structure_check_info(node5,node1,:error) - @collapsed_lv5=@collapsed_lv1+1 - node1 - else - document_structure_check_info(node5,node0,:error) - node0 - end - collapsed_level=@collapsed_lv5 - node,ocn_sp=node5,"h#{ocnh}" - elsif ln==6 \ - or ln=~@md.lv6; ocnh6+=1 + else + ocn_flag=false + node5="5:0;0" + end + parent=if node4 + document_structure_check_info(node5,node4) + @collapsed_lv5=@collapsed_lv4+1 + node4 + elsif node3 + warning_incorrect_parent_level_or_level(dob.obj) + document_structure_check_info(node5,node3,:error) + @collapsed_lv5=@collapsed_lv3+1 + node3 + elsif node2 + warning_incorrect_parent_level_or_level(dob.obj) + document_structure_check_info(node5,node2,:error) + @collapsed_lv5=@collapsed_lv2+1 + node2 + elsif node1 + warning_incorrect_parent_level_or_level(dob.obj) + document_structure_check_info(node5,node1,:error) + @collapsed_lv5=@collapsed_lv1+1 + node1 + else + document_structure_check_info(node5,node0,:error) + node0 + end + collapsed_level=@collapsed_lv5 + node,ocn_sp=node5,"h#{ocnh}" + elsif ln==6 \ + or ln=~@md.lv6 + if not dob.obj =~/~#|-#/ + ocn_flag=true + ocnh6+=1 node6="6:#{ocnh6};#{ocn}" - parent=if node5 - document_structure_check_info(node6,node5) - @collapsed_lv6=@collapsed_lv5+1 - node5 - elsif node4 - warning_incorrect_parent_level_or_level(dob.obj) - puts "parent is level 4~ & this level #{dob.lv} + else + ocn_flag=false + node6="6:0;0" + end + parent=if node5 + document_structure_check_info(node6,node5) + @collapsed_lv6=@collapsed_lv5+1 + node5 + elsif node4 + warning_incorrect_parent_level_or_level(dob.obj) + puts "parent is level 4~ & this level #{dob.lv} either parent should be level 5~ or this level should be 5~ rather #{dob.lv}" #level 6 - document_structure_check_info(node6,node4,:error) - @collapsed_lv6=@collapsed_lv4+1 - node4 - elsif node3 - warning_incorrect_parent_level_or_level(dob.obj) - document_structure_check_info(node6,node3,:error) - @collapsed_lv6=@collapsed_lv3+1 - node3 - elsif node2 - warning_incorrect_parent_level_or_level(dob.obj) - document_structure_check_info(node6,node2,:error) - @collapsed_lv6=@collapsed_lv2+1 - node2 - elsif node1 - warning_incorrect_parent_level_or_level(dob.obj) - document_structure_check_info(node6,node1,:error) - @collapsed_lv6=@collapsed_lv1+1 - node1 - else - document_structure_check_info(node6,node0,:error) - node0 - end - collapsed_level=@collapsed_lv6 - node,ocn_sp=node6,"h#{ocnh}" + document_structure_check_info(node6,node4,:error) + @collapsed_lv6=@collapsed_lv4+1 + node4 + elsif node3 + warning_incorrect_parent_level_or_level(dob.obj) + document_structure_check_info(node6,node3,:error) + @collapsed_lv6=@collapsed_lv3+1 + node3 + elsif node2 + warning_incorrect_parent_level_or_level(dob.obj) + document_structure_check_info(node6,node2,:error) + @collapsed_lv6=@collapsed_lv2+1 + node2 + elsif node1 + warning_incorrect_parent_level_or_level(dob.obj) + document_structure_check_info(node6,node1,:error) + @collapsed_lv6=@collapsed_lv1+1 + node1 + else + document_structure_check_info(node6,node0,:error) + node0 end + collapsed_level=@collapsed_lv6 + node,ocn_sp=node6,"h#{ocnh}" + end + else + if not dob.obj =~/~#|-#/ + ocn_flag=true else - ocno+=1 - if dob.is==:table - ocnt+=1 - ocn_sp,parent="t#{ocnt}",node - elsif dob.is==:code - ocnc+=1 - ocn_sp,parent="c#{ocnc}",node - elsif dob.is==:group \ - || dob.is==:block \ - || dob.is==:alt \ - || dob.is==:verse - ocng+=1 #group, poem - ocn_sp,parent="g#{ocng}",node - elsif dob.is==:image #check - ocni+=1 - ocn_sp,parent="i#{ocni}",node - else ocnp+=1 #paragraph - ocn_sp,parent="p#{ocnp}",node - end + ocn_flag=false end - if dob.is==:heading - dob.ln,dob.node,dob.ocn,dob.odv,dob.osp,dob.parent,dob.lc=ln,node,ocn,ocn_dv,ocn_sp,parent,collapsed_level + ocno+=1 + if dob.is==:table + ocnt+=1 + ocn_sp,parent="t#{ocnt}",node + elsif dob.is==:code + ocnc+=1 + ocn_sp,parent="c#{ocnc}",node + elsif dob.is==:group \ + || dob.is==:block \ + || dob.is==:alt \ + || dob.is==:verse + ocng+=1 #group, poem + ocn_sp,parent="g#{ocng}",node + elsif dob.is==:image #check + ocni+=1 + ocn_sp,parent="i#{ocni}",node + else ocnp+=1 #paragraph + ocn_sp,parent="p#{ocnp}",node + end + end + if dob.is==:heading + if ocn_flag==true + dob.ln,dob.node,dob.ocn,dob.ocn_,dob.odv,dob.osp,dob.parent,dob.lc=ln,node,ocn,ocn_flag,ocn_dv,ocn_sp,parent,collapsed_level else - if dob.of !=:meta \ - && dob.of !=:comment \ - && dob.of !=:layout - dob.ocn,dob.odv,dob.osp,dob.parent=ocn,ocn_dv,ocn_sp,parent + ocnu+=1 + dob.obj=dob.obj.gsub(/#{Mx[:fa_o]}[~-]##{Mx[:fa_c]}/,'') if dob.obj + ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}" + dob.ln,dob.node,dob.ocn,dob.ocn_,dob.odv,dob.osp,dob.parent,dob.lc=ln,node,nil,ocn_flag,ocn_dv,ocn_sp,parent,collapsed_level + end + else + if dob.of !=:meta \ + && dob.of !=:comment \ + && dob.of !=:layout + if ocn_flag == true + dob.ocn,dob.ocn_,dob.odv,dob.osp,dob.parent=ocn,ocn_flag,ocn_dv,ocn_sp,parent + else + ocnu+=1 + dob.obj=dob.obj.gsub(/#{Mx[:fa_o]}[~-]##{Mx[:fa_c]}/,'') if dob.obj + ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}" + dob.ocn,dob.ocn_,dob.odv,dob.osp,dob.parent=nil,ocn_flag,ocn_dv,ocn_sp,parent end end - else ocnu+=1 - dob.obj=dob.obj.gsub(/#{Mx[:fa_o]}~##{Mx[:fa_c]}/,'') if dob.obj - ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}" - dob.ocn,dob.odv,dob.osp=ocn,ocn_dv,ocn_sp end h elsif dob.obj=~/#{Mx[:pa_non_object_no_heading]}/ dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_no_heading]}/,'') if dob.is==:para h={ obj: dob.obj, ocn_: false, ocn: nil, hang: dob.hang, indent: dob.indent, bullet_: dob.bullet_, tags: dob.tags, parent: dob.parent } - dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob) + dob=SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h,dob) elsif dob.is==:heading h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: true, parent: dob.parent } - dob=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,dob) + dob=SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob) end elsif dob.obj=~/#{Mx[:pa_non_object_dummy_heading]}/ dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_dummy_heading]}/,'') if dob.is==:para h={ obj: dob.obj, ocn_: false, ocn: nil, hang: dob.hang, indent: dob.indent, bullet_: dob.bullet_, tags: dob.tags, parent: dob.parent } - dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob) + dob=SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h,dob) elsif dob.is==:heading h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: false, parent: dob.parent } - dob=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,dob) + dob=SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob) end else dob end @@ -1198,7 +1255,7 @@ or this level should be 5~ rather #{dob.lv}" #level 6 when '6'; 9 end h={ tag: tag, node: o[:node], lv: o[:lv], ln: ln, status: o[:status] } - SiSU_DAL_DocumentStructure::ObjectStructure.new.xml_dom(h) #downstream code utilise else ignore like comments + SiSU_AO_DocumentStructure::ObjectStructure.new.xml_dom(h) #downstream code utilise else ignore like comments end def tag_open(o,tag) t={ lv: tag[o.ln], node: o.node, status: 'open' } diff --git a/lib/sisu/v5/dal_endnotes.rb b/lib/sisu/v5/ao_endnotes.rb index 407dc1ff..981c97f6 100644 --- a/lib/sisu/v5/dal_endnotes.rb +++ b/lib/sisu/v5/ao_endnotes.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_doc_endnotes.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_doc_endnotes.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_Endnotes +module SiSU_AO_Endnotes class Endnotes def initialize(md,data,endnote_array=nil) @md,@data,@endnote_array=md,data,endnote_array @@ -82,7 +82,7 @@ module SiSU_DAL_Endnotes && dob.is !=:code case dob.obj # auto-numbered endnotes <!e!> <!e_!> --> when /#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}[*+]\s+.+?#{Mx[:en_b_c]}/ - dob.obj=dob.obj.gsub(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,' \1') # required 2003w31 + dob.obj=dob.obj.gsub(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,'\1') word_mode=dob.obj.scan(/\S+/m) word_mode=endnote_call_number(word_mode) dob.obj=word_mode.join(' ') diff --git a/lib/sisu/v5/dal_expand_insertions.rb b/lib/sisu/v5/ao_expand_insertions.rb index e43dd3af..44ae1f60 100644 --- a/lib/sisu/v5/dal_expand_insertions.rb +++ b/lib/sisu/v5/ao_expand_insertions.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_expand_insertions.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_expand_insertions.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_Insertions +module SiSU_AO_Insertions class Insertions def initialize(md,data) @md,@data=md,data diff --git a/lib/sisu/v5/dal_hash_digest.rb b/lib/sisu/v5/ao_hash_digest.rb index 9f620aa2..e1cc840c 100644 --- a/lib/sisu/v5/dal_hash_digest.rb +++ b/lib/sisu/v5/ao_hash_digest.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_hash_digest.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_hash_digest.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_Hash +module SiSU_AO_Hash require_relative 'shared_markup_alt.rb' #shared_markup_alt.rb class ObjectDigest def initialize(md,data,env=nil) @@ -96,7 +96,7 @@ module SiSU_DAL_Hash end end @tuned_file=@tuned_file.flatten - #use md5 or to create hash of each dal object including ocn, & add into to each dal object + #use md5 or to create hash of each ao object including ocn, & add into to each ao object end def endnote_digest(data) t_o_bit=[] @@ -143,7 +143,7 @@ module SiSU_DAL_Hash end t_o #KEEP intact end - def strip_clean_extra_spaces(s) # dal output tuned + def strip_clean_extra_spaces(s) # ao output tuned s=s.dup s=s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1') unless s =~/#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/ s=s.gsub(/ [ ]+/,' '). diff --git a/lib/sisu/v5/dal_idx.rb b/lib/sisu/v5/ao_idx.rb index be8a0211..94e3aff6 100644 --- a/lib/sisu/v5/dal_idx.rb +++ b/lib/sisu/v5/ao_idx.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_idx.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_idx.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_BookIndex +module SiSU_AO_BookIndex class BookIndex def initialize(md,data,env=nil) @md,@data,@env=md,data,env @@ -138,15 +138,15 @@ module SiSU_DAL_BookIndex idx={} idx[:sst_rel_html_seg],idx[:sst_rel],idx[:html],idx[:xhtml]=[],[],[],[] h={obj: Mx[:br_page]} - o=SiSU_DAL_DocumentStructure::ObjectLayout.new.break(h) + o=SiSU_AO_DocumentStructure::ObjectLayout.new.break(h) idx[:sst_rel_html_seg] << o idx[:sst_rel] << o h={lv: '2', name: 'index', obj: "Index"} - o=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h) + o=SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h) idx[:sst_rel_html_seg] << o idx[:sst_rel] << o h={lv: '4', name: 'idx', obj: " [Index] #{Mx[:pa_non_object_dummy_heading]}"} - o=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h) + o=SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h) idx[:sst_rel_html_seg] << o idx[:sst_rel] << o alph=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] diff --git a/lib/sisu/v5/dal_images.rb b/lib/sisu/v5/ao_images.rb index 33a5e627..4354dfa9 100644 --- a/lib/sisu/v5/dal_images.rb +++ b/lib/sisu/v5/ao_images.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_images.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_images.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_Images +module SiSU_AO_Images class Images #require 'RMagick' #include Magick diff --git a/lib/sisu/v5/dal_metadata.rb b/lib/sisu/v5/ao_metadata.rb index 1fa5619c..8d017769 100644 --- a/lib/sisu/v5/dal_metadata.rb +++ b/lib/sisu/v5/ao_metadata.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_metadata.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_metadata.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_Metadata +module SiSU_AO_Metadata class Metadata def initialize(md,metad) @md,@metadata=md,metad @@ -69,11 +69,11 @@ module SiSU_DAL_Metadata end def make_para(obj,ocn) h={ obj: obj, ocn: 0 } - SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h) + SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end def make_heading(obj,ocn,name,lv,ln) h={ lv: lv, ln: ln, name: name, obj: obj, ocn: 0 } - SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h) + SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h) end def metadata end diff --git a/lib/sisu/v5/dal_misc_arrange.rb b/lib/sisu/v5/ao_misc_arrange.rb index e6cc72db..8f7acbc4 100644 --- a/lib/sisu/v5/dal_misc_arrange.rb +++ b/lib/sisu/v5/ao_misc_arrange.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_misc_arrange.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_misc_arrange.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_MiscArrangeText +module SiSU_AO_MiscArrangeText class SI def initialize(md,data) @md,@data=md,data diff --git a/lib/sisu/v5/dal_numbering.rb b/lib/sisu/v5/ao_numbering.rb index 96f4134b..00afdfa5 100644 --- a/lib/sisu/v5/dal_numbering.rb +++ b/lib/sisu/v5/ao_numbering.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_numbering.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_numbering.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: system environment, resource control and configuration details =end -module SiSU_DAL_Numbering +module SiSU_AO_Numbering class Numbering attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment def initialize(md,data) @@ -142,7 +142,7 @@ module SiSU_DAL_Numbering data=data.compact data.each do |dob| #@md.seg_names << [additions to segment names] title_no=nil - dob=SiSU_DAL_DocumentStructureExtract::Structure.new(@md,dob).structure_markup #must happen earlier, node info etc. require + dob=SiSU_AO_DocumentStructureExtract::Structure.new(@md,dob).structure_markup #must happen earlier, node info etc. require if dob.is ==:heading \ && dob.autonum_ \ and defined? @md.make.num_top \ @@ -232,11 +232,11 @@ module SiSU_DAL_Numbering @tuned_file=@tuned_file.flatten end def ocn(data) #and auto segment numbering increment - @tuned_file=SiSU_DAL_DocumentStructureExtract::OCN.new(@md,data).ocn + @tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data).ocn @tuned_file end def xml(data) - @tuned_file=SiSU_DAL_DocumentStructureExtract::XML.new(@md,data).dom + @tuned_file=SiSU_AO_DocumentStructureExtract::XML.new(@md,data).dom @tuned_file end def minor_numbering(data) #and auto segment numbering increment @@ -354,11 +354,11 @@ module SiSU_DAL_Numbering m=dob.ln.to_s dob_tmp=[] if @md.pagenew.inspect =~/#{m}/ - dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) << dob + dob_tmp << SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) << dob elsif @md.pagebreak.inspect =~/#{m}/ - dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) << dob + dob_tmp << SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) << dob elsif @md.pageline.inspect =~/#{m}/ - dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line]) << dob + dob_tmp << SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line]) << dob end unless dob_tmp.length > 0; dob else dob_tmp diff --git a/lib/sisu/v5/dal_syntax.rb b/lib/sisu/v5/ao_syntax.rb index 1e1d8542..22e0124c 100644 --- a/lib/sisu/v5/dal_syntax.rb +++ b/lib/sisu/v5/ao_syntax.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dal_syntax.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/ao_syntax.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -59,7 +59,7 @@ ** Description: Syntax for markup, input markup syntaxes, determined here =end -module SiSU_DAL_Syntax +module SiSU_AO_Syntax class Words def initialize(line,md,mkp) @line,@md,@mkp=line,md,mkp diff --git a/lib/sisu/v5/concordance.rb b/lib/sisu/v5/concordance.rb index 3ad394c7..3bb313d4 100644 --- a/lib/sisu/v5/concordance.rb +++ b/lib/sisu/v5/concordance.rb @@ -113,8 +113,8 @@ module SiSU_Concordance private class DocTitle include SiSU_Viz - #revisit, both requires (html & shared_xml) needed for stand alone operation (sisu -w [filename]) - require_relative 'shared_xml' # shared_xml.rb + #revisit, both requires (html & xml_shared) needed for stand alone operation (sisu -w [filename]) + require_relative 'xml_shared' # xml_shared.rb require_relative 'html' # html.rb def initialize(particulars) @particulars,@md=particulars,particulars.md @@ -202,7 +202,7 @@ WOK def initialize(particulars) @particulars=particulars begin - @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array + @env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array @file=SiSU_Env::FileOp.new(@md) @freq=Hash.new(0) @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern @@ -256,7 +256,7 @@ WOK def map_para @seg,ocn=nil,nil @word_map={} - @dal_array.each do |line| + @ao_array.each do |line| if defined? line.ocn \ and line.ocn.to_s =~/\d/ if (line.is ==:heading \ diff --git a/lib/sisu/v5/conf.rb b/lib/sisu/v5/conf.rb index 9418ff21..57e9614b 100644 --- a/lib/sisu/v5/conf.rb +++ b/lib/sisu/v5/conf.rb @@ -161,7 +161,7 @@ module SiSU_Initialize end def trang_rnc_model_output_sax s=@suffix - rnc_src=@env.processing_path.dal + '/sax.' + s[:rnc] + rnc_src=@env.processing_path.ao + '/sax.' + s[:rnc] rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_sax rng_file=@path[:rng] + '/' + @rxng.rng_name.output_sax xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_sax @@ -183,7 +183,7 @@ module SiSU_Initialize end def trang_rnc_model_output_dom s=@suffix - rnc_src=@env.processing_path.dal + '/dom.' + s[:rnc] + rnc_src=@env.processing_path.ao + '/dom.' + s[:rnc] rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_dom rng_file=@path[:rng] + '/' + @rxng.rng_name.output_dom xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_dom @@ -205,7 +205,7 @@ module SiSU_Initialize end def trang_rnc_model_output_xhtml s=@suffix - rnc_src=@env.processing_path.dal + '/xhtml.' + s[:rnc] + rnc_src=@env.processing_path.ao + '/xhtml.' + s[:rnc] rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_xhtml rng_file=@path[:rng] + '/' + @rxng.rng_name.output_xhtml xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_xhtml @@ -226,7 +226,7 @@ module SiSU_Initialize end end def trang_rnc_model_input_sax - rnc_file=@env.processing_path.dal + '/sax.rnc' + rnc_file=@env.processing_path.ao + '/sax.rnc' dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_sax rnc=File.new(rnc_file,'w') rnc << @rxng.rnc_model_output_sax @@ -235,7 +235,7 @@ module SiSU_Initialize schema.relaxng(@opt.cmd) end def trang_rnc_model_input_dom - rnc_file=@env.processing_path.dal + '/dom.rnc' + rnc_file=@env.processing_path.ao + '/dom.rnc' dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_dom rnc=File.new(rnc_file,'w') rnc << @rxng.rnc_model_output_dom @@ -244,7 +244,7 @@ module SiSU_Initialize schema.relaxng(@opt.cmd) end def trang_rnc_model_input_node - rnc_file=@env.processing_path.dal + '/node.rnc' + rnc_file=@env.processing_path.ao + '/node.rnc' dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_node rnc=File.new(rnc_file,'w') rnc << @rxng.rnc_model_input_node diff --git a/lib/sisu/v5/constants.rb b/lib/sisu/v5/constants.rb index a21f01b7..da9858f2 100644 --- a/lib/sisu/v5/constants.rb +++ b/lib/sisu/v5/constants.rb @@ -64,6 +64,10 @@ YEAR='2013' Sfx={ txt: '.txt', + txt_textile: '.textile', + txt_asciidoc: '.asciidoc.txt', + txt_markdown: '.md', + txt_rst: '.rst', html: '.html', xhtml: '.xhtml', xml: '.xml', @@ -72,6 +76,10 @@ Sfx={ xml_scaffold: '.scaffold.xml', xml_scaffold_structure_sisu: '.scaffold.sisu.xml', xml_scaffold_structure_collapse: '.scaffold.collapse.xml', + xml_docbook: '.docbook.xml', + xml_docbook_article: '.article.docbook.xml', + xml_docbook_book: '.book.docbook.xml', + xml_fictionbook: '.fb2', epub: '.epub', epub_xhtml: '.xhtml', odt: '.odt', diff --git a/lib/sisu/v5/db_import.rb b/lib/sisu/v5/db_import.rb index 6edb0f99..dc73bbf5 100644 --- a/lib/sisu/v5/db_import.rb +++ b/lib/sisu/v5/db_import.rb @@ -64,7 +64,7 @@ module SiSU_DbImport require_relative 'db_columns' # db_columns.rb require_relative 'db_load_tuple' # db_load_tuple.rb require_relative 'db_sqltxt' # db_sqltxt.rb - require_relative 'shared_html_lite' # shared_html_lite.rb + require_relative 'html_lite_shared' # html_lite_shared.rb require 'sqlite3' class Import < SiSU_DbText::Prepare include SiSU_Param @@ -76,7 +76,7 @@ module SiSU_DbImport @opt,@conn,@file_maint,@sql_type=opt,conn,file_maint,sql_type @cX=SiSU_Screen::Ansi.new(@opt.act[:color_state][:set]).cX @env=SiSU_Env::InfoEnv.new(@opt.fns) - @dal="#{@env.processing_path.dal}" + @dal="#{@env.processing_path.ao}" @fnb=if @opt.fns.empty? \ or @opt.cmd.empty? '' @@ -121,8 +121,8 @@ module SiSU_DbImport @@dl ||=SiSU_Env::InfoEnv.new.digest.length end def marshal_load - require_relative 'dal' # dal.rb - @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here + require_relative 'ao' # ao.rb + @ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here if (@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) @@ -142,8 +142,8 @@ module SiSU_DbImport if not file_exist t_d=[] # transaction_data t_d << db_import_metadata - t_d << db_import_documents(@dal_array) - t_d << db_import_urls(@dal_array,@fnc) #import OID on/off + t_d << db_import_documents(@ao_array) + t_d << db_import_urls(@ao_array,@fnc) #import OID on/off t_d=t_d.flatten if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) @@ -283,12 +283,12 @@ module SiSU_DbImport tuple=t.tuple tuple end - def db_import_documents(dal_array) #% import documents - populate main database table, import into substantive database tables (tuple) + def db_import_documents(ao_array) #% import documents - populate main database table, import into substantive database tables (tuple) begin @col[:tid]=@@id_t @en,@en_ast,@en_pls,@tuple_array=[],[],[],[] @col[:en_a],@col[:en_z]=nil,nil - dal_array.each do |data| + ao_array.each do |data| data.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1') data.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1') data.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1') diff --git a/lib/sisu/v5/dbi.rb b/lib/sisu/v5/dbi.rb index e59a09b7..6a40d3ce 100644 --- a/lib/sisu/v5/dbi.rb +++ b/lib/sisu/v5/dbi.rb @@ -66,7 +66,7 @@ module SiSU_DBI include SiSU_Param require_relative 'db_dbi' # db_dbi.rb include SiSU_DbDBI - require_relative 'shared_html_lite' # shared_html_lite.rb + require_relative 'html_lite_shared' # html_lite_shared.rb include SiSU_FormatShared class SQL def initialize(opt) diff --git a/lib/sisu/v5/dbi_discrete.rb b/lib/sisu/v5/dbi_discrete.rb index 957009b1..95fb9ce3 100644 --- a/lib/sisu/v5/dbi_discrete.rb +++ b/lib/sisu/v5/dbi_discrete.rb @@ -66,7 +66,7 @@ module SiSU_DBI_Discrete #% database building include SiSU_Param require_relative 'db_dbi' # db_dbi.rb include SiSU_DbDBI - require_relative 'shared_html_lite' # shared_html_lite.rb + require_relative 'html_lite_shared' # html_lite_shared.rb include SiSU_FormatShared require 'fileutils' include FileUtils::Verbose diff --git a/lib/sisu/v5/digests.rb b/lib/sisu/v5/digests.rb index e142ff11..0afa7378 100644 --- a/lib/sisu/v5/digests.rb +++ b/lib/sisu/v5/digests.rb @@ -75,7 +75,7 @@ module SiSU_DigestView end def read begin - @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array + @env,@md,@ao_array=@particulars.env,@particulars.md,@particulars.ao_array unless @opt.act[:quiet][:set]==:on tool=(@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ @@ -107,7 +107,7 @@ module SiSU_DigestView @@description,@@ds[:digests],@@ds[:tree],@@ds[:summary],@@sc_info=[],[],[],[],[] def initialize(particulars) #data='',md='') @particulars=particulars - @data,@env,@md=@particulars.dal_array,@particulars.env,@particulars.md + @data,@env,@md=@particulars.ao_array,@particulars.env,@particulars.md SiSU_Env::FileOp.new(@md).mkdir @@dg ||=@env.digest.type @@dl ||=@env.digest.length @@ -120,7 +120,7 @@ module SiSU_DigestView def songsheet @@description,@@ds[:digests],@@ds[:tree],@@ds[:summary],@@sc_info=[],[],[],[],[] message_digest - dal_structure + ao_structure supplementary output end @@ -132,11 +132,11 @@ module SiSU_DigestView puts f if @md.opt.act[:verbose_plus][:set]==:on @@ds[:digests] << f + "\n" end - def dal_structure_tree(f,e='') + def ao_structure_tree(f,e='') puts f + e.to_s if @md.opt.act[:verbose_plus][:set]==:on @@ds[:tree] << f << e end - def dal_structure_summary(f,e='') + def ao_structure_summary(f,e='') puts f + e.to_s if @md.opt.act[:verbose_plus][:set]==:on @@ds[:summary] << f << e end @@ -302,7 +302,7 @@ module SiSU_DigestView description("Document Digests\n") description(a) end - def dal_structure + def ao_structure data=@data endnotes=nil data.each do |t_o| @@ -330,8 +330,8 @@ module SiSU_DigestView end l=Hash.new(0) ocn=nil - dal_structure_tree("------------\n") - dal_structure_tree("document structure[*]\n") + ao_structure_tree("------------\n") + ao_structure_tree("document structure[*]\n") data.each do |t_o| if t_o.is==:heading x=case t_o.ln @@ -351,11 +351,11 @@ module SiSU_DigestView end end ocn=t_o.ocn if defined? t_o.ocn and t_o.is !=:heading_insert - dal_structure_tree("#{x}\n") if x and not x.empty? + ao_structure_tree("#{x}\n") if x and not x.empty? end - dal_structure_tree(" [*] heading levels\n") - dal_structure_summary("------------\n") - dal_structure_summary("document structure[*]\n") + ao_structure_tree(" [*] heading levels\n") + ao_structure_summary("------------\n") + ao_structure_summary("document structure[*]\n") [0,1,2,3,4,5,6].each do |y| v=case y when 1; ':A' @@ -365,11 +365,11 @@ module SiSU_DigestView when 5; '2 ' when 6; '3 ' end - dal_structure_summary("#{v} = #{l[y]}\n") if l[y] > 0 + ao_structure_summary("#{v} = #{l[y]}\n") if l[y] > 0 end - dal_structure_summary("objects (ocn) = #{ocn}\n") - dal_structure_summary("endnotes = #{endnotes}\n") - dal_structure_summary(" [*] number of headers (@) and of each heading level (:A to :C and 1 to 3)\n") + ao_structure_summary("objects (ocn) = #{ocn}\n") + ao_structure_summary("endnotes = #{endnotes}\n") + ao_structure_summary(" [*] number of headers (@) and of each heading level (:A to :C and 1 to 3)\n") end def supplementary if defined? @md.sc_number \ diff --git a/lib/sisu/v5/git.rb b/lib/sisu/v5/git.rb index 92322b7c..7a69a187 100644 --- a/lib/sisu/v5/git.rb +++ b/lib/sisu/v5/git.rb @@ -62,7 +62,7 @@ module SiSU_Git require_relative 'param' # param.rb require_relative 'sysenv' # sysenv.rb - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb class Source def initialize(opt) @opt=opt @@ -93,7 +93,7 @@ module SiSU_Git video: git_path_fnb + '/' + Gt[:sisupod] + '/' + Gt[:video], conf: git_path_fnb + '/' + Gt[:sisupod] + '/' + Gt[:conf] } - SiSU_DAL::Source.new(@opt).read # -m + SiSU_AO::Source.new(@opt).read # -m end def create_file_structure_git make_dir_fnb @@ -190,9 +190,9 @@ module SiSU_Git def locate_parse_file composite_src=@opt.fns=~/\.ssm$/ ? true : false if composite_src \ - and not @opt.act[:dal][:set]==:on + and not @opt.act[:ao][:set]==:on ##SiSU_Assemble::Composite.new(@opt).read - #SiSU_DAL::Source.new(@opt).read # -m + #SiSU_AO::Source.new(@opt).read # -m "#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst" elsif composite_src "#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst" diff --git a/lib/sisu/v5/html.rb b/lib/sisu/v5/html.rb index f1abe6c0..7a1c4b60 100644 --- a/lib/sisu/v5/html.rb +++ b/lib/sisu/v5/html.rb @@ -162,8 +162,8 @@ module SiSU_HTML end def tuned_file_instructions @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) - dal_array=@particulars.dal_array # dal file drawn here - tuned_file_array=SiSU_HTML_Tune::Tune.new(dal_array,@md).songsheet + ao_array=@particulars.ao_array # ao file drawn here + tuned_file_array=SiSU_HTML_Tune::Tune.new(ao_array,@md).songsheet tuned_file_array end end diff --git a/lib/sisu/v5/html_format.rb b/lib/sisu/v5/html_format.rb index c087f1ec..db9fb449 100644 --- a/lib/sisu/v5/html_format.rb +++ b/lib/sisu/v5/html_format.rb @@ -93,7 +93,7 @@ module SiSU_HTML_Format end class HeadInformation require_relative 'css' # css.rb - require_relative 'shared_xml' # shared_xml.rb + require_relative 'xml_shared' # xml_shared.rb include SiSU_Viz attr_reader :md,:rdf,:vz def initialize(md) @@ -904,7 +904,7 @@ WOK @lnk_url =t_o[:lnk_url] || nil @lnk_txt =t_o[:lnk_txt] || nil @format =t_o[:format] || nil - elsif t_o.class.inspect =~/^(?:#<)?SiSU_DAL_DocumentStructure/ + elsif t_o.class.inspect =~/^(?:#<)?SiSU_AO_DocumentStructure/ @dob=t_o if defined? t_o.is @named=nametags_seg(@dob) @txt=((defined? t_o.obj) ? t_o.obj : nil) diff --git a/lib/sisu/v5/shared_html_lite.rb b/lib/sisu/v5/html_lite_shared.rb index e46510ea..20e07f8c 100644 --- a/lib/sisu/v5/shared_html_lite.rb +++ b/lib/sisu/v5/html_lite_shared.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/shared_html_lite.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/html_lite_shared.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> diff --git a/lib/sisu/v5/html_scroll.rb b/lib/sisu/v5/html_scroll.rb index 3ac75aaa..f525b462 100644 --- a/lib/sisu/v5/html_scroll.rb +++ b/lib/sisu/v5/html_scroll.rb @@ -60,7 +60,7 @@ =end module SiSU_HTML_Scroll - require_relative 'shared_html' # shared_html.rb + require_relative 'html_shared' # html_shared.rb require_relative 'html' # html.rb require_relative 'shared_metadata' # shared_metadata.rb require_relative 'html_promo' # html_promo.rb diff --git a/lib/sisu/v5/html_segments.rb b/lib/sisu/v5/html_segments.rb index 79dda0e2..d6b341ac 100644 --- a/lib/sisu/v5/html_segments.rb +++ b/lib/sisu/v5/html_segments.rb @@ -60,7 +60,7 @@ =end module SiSU_HTML_Seg - require_relative 'shared_html' # shared_html.rb + require_relative 'html_shared' # html_shared.rb require_relative 'html' # html.rb require_relative 'html_promo' # html_promo.rb require_relative 'shared_metadata' # shared_metadata.rb diff --git a/lib/sisu/v5/shared_html.rb b/lib/sisu/v5/html_shared.rb index 84c89ecf..63a8964e 100644 --- a/lib/sisu/v5/shared_html.rb +++ b/lib/sisu/v5/html_shared.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/shared_html.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/html_shared.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> diff --git a/lib/sisu/v5/hub.rb b/lib/sisu/v5/hub.rb index 2e9092ff..f09bd832 100644 --- a/lib/sisu/v5/hub.rb +++ b/lib/sisu/v5/hub.rb @@ -280,14 +280,14 @@ module SiSU Dir.chdir(@opt.pth) #watch end @env=SiSU_Env::InfoEnv.new(@opt.fns) - if @opt.act[:dal][:set]==:on #% --dal, -m + if @opt.act[:ao][:set]==:on #% --ao --dal, -m unless @opt.act[:po4a][:set]==:on # --po4a, -P if @opt.fno =~ /\.ssm$/ require_relative 'composite' # composite.rb #pre-processing SiSU_Assemble::Composite.new(@opt).read end - require_relative 'dal' # -m dal.rb - SiSU_DAL::Source.new(@opt).read + require_relative 'ao' # -m ao.rb + SiSU_AO::Source.new(@opt).read end end if @opt.act[:qrcode][:set]==:on #% --qrcode, -Q @@ -299,8 +299,24 @@ module SiSU SiSU_DigestView::Source.new(@opt).read end if @opt.act[:txt][:set]==:on #% --txt, -t -a - require_relative 'plaintext' # plaintext.rb - SiSU_Plaintext::Source.new(@opt).read + require_relative 'txt_plain' # txt_plain.rb + SiSU_Txt_Plain::Source.new(@opt).read + end + if @opt.act[:txt_textile][:set]==:on #% --textile + require_relative 'txt_textile' # txt_textile.rb + SiSU_Txt_Textile::Source.new(@opt).read + end + if @opt.act[:txt_asciidoc][:set]==:on #% --asciidoc + require_relative 'txt_asciidoc' # txt_asciidoc.rb + SiSU_Txt_asciiDoc::Source.new(@opt).read + end + if @opt.act[:txt_markdown][:set]==:on #% --markdown + require_relative 'txt_markdown' # txt_markdown.rb + SiSU_Txt_Markdown::Source.new(@opt).read + end + if @opt.act[:txt_rst][:set]==:on #% --rst, --rest + require_relative 'txt_rst' # txt_rst.rb + SiSU_Txt_rST::Source.new(@opt).read end if @opt.act[:html][:set]==:on #% --html, -h -H require_relative 'html' # html.rb @@ -320,12 +336,12 @@ module SiSU SiSU_Concordance::Source.new(@opt).read end if @opt.act[:epub][:set]==:on #% --epub, -e - require_relative 'epub' # epub.rb - SiSU_EPUB::Source.new(@opt).read + require_relative 'xhtml_epub2' # xhtml_epub2.rb + SiSU_XHTML_EPUB2::Source.new(@opt).read end if @opt.act[:odt][:set]==:on #% --odt, -o opendocument - require_relative 'odf' # odf.rb - SiSU_ODF::Source.new(@opt).read + require_relative 'xml_odf_odt' # xml_odf_odt.rb + SiSU_XML_ODF_ODT::Source.new(@opt).read end if @opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml require_relative 'xhtml' # xhtml.rb @@ -339,8 +355,16 @@ module SiSU require_relative 'xml_scaffold_structure_collapsed' # xml_scaffold_structure_collapsed.rb SiSU_XML_Scaffold_Structure_Collapse::Source.new(@opt).read end + if @opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook + require_relative 'xml_docbook5' # xml_docbook5.rb + SiSU_XML_Docbook_Book::Source.new(@opt).read + end + if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook + require_relative 'xml_fictionbook2' # xml_fictionbook2.rb + SiSU_XML_Fictionbook::Source.new(@opt).read + end if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type - require_relative 'xml' # xml.rb + require_relative 'xml_sax' # xml_sax.rb SiSU_XML_SAX::Source.new(@opt).read end if @opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type @@ -391,12 +415,12 @@ module SiSU or @opt.act[:sisupod][:set]==:on \ or @opt.act[:git][:set]==:on begin - require_relative 'shared_sisupod_source' + require_relative 'src_shared' OptionLoopFiles.new(@opt).loop_files_on_given_option do SiSU_Source::SiSUpodSource.new(@opt).read end if @opt.act[:share_source][:set]==:on - require_relative 'share_src' # -s share_src.rb + require_relative 'src_share' # -s src_share.rb begin ensure OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do @@ -405,7 +429,7 @@ module SiSU end end if @opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod - require_relative 'sisupod_make' # -S sisupod_make.rb + require_relative 'src_sisupod_make' # -S src_sisupod_make.rb begin ensure OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do @@ -523,8 +547,13 @@ module SiSU SiSU_Env::InfoProcessingFlag.new if @opt.act[:version_info][:set]==:on #% version information SiSU_Env::InfoAbout.new(@opt).sisu_version + if (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],' ' + File.dirname(__FILE__)).grey + end end - if @opt.act[:dal][:set]==:on \ + if @opt.act[:ao][:set]==:on \ or @opt.act[:maintenance][:set]==:on #% --maintenance, -m for -C path={} path[:css]=@@env.path.output + '/_sisu/css' @@ -576,7 +605,7 @@ module SiSU if @opt.act[:webrick][:set]==:on #% --webrick, -W webrick SiSU::Operations.new(@opt).webrick end - if @opt.act[:dal][:set]==:on + if @opt.act[:ao][:set]==:on @retry_count= -1 begin @get_s,@get_p,@get_pl=[],[],[] @@ -628,10 +657,14 @@ module SiSU and @opt.mod.join(';') =~/--(?:createdb|init(?:ialize)?|create(?:all)?|createtables|recreate|drop(?:all))/) :false else - (@opt.act[:dal][:set]==:on \ + (@opt.act[:ao][:set]==:on \ || @opt.act[:manpage][:set]==:on \ || @opt.act[:texinfo][:set]==:on \ || @opt.act[:txt][:set]==:on \ + || @opt.act[:txt_textile][:set]==:on \ + || @opt.act[:txt_asciidoc][:set]==:on \ + || @opt.act[:txt_markdown][:set]==:on \ + || @opt.act[:txt_rst][:set]==:on \ || @opt.act[:html][:set]==:on \ || @opt.act[:html_scroll][:set]==:on \ || @opt.act[:html_seg][:set]==:on \ @@ -643,6 +676,8 @@ module SiSU || @opt.act[:xml_dom][:set]==:on \ || @opt.act[:xml_scaffold_structure_sisu][:set]==:on \ || @opt.act[:xml_scaffold_structure_collapse][:set]==:on \ + || @opt.act[:xml_docbook_book][:set]==:on \ + || @opt.act[:xml_fictionbook][:set]==:on \ || @opt.act[:pdf][:set]==:on \ || @opt.act[:pdf_p][:set]==:on \ || @opt.act[:pdf_l][:set]==:on \ diff --git a/lib/sisu/v5/manifest.rb b/lib/sisu/v5/manifest.rb index fc4bd5b9..fb3064e7 100644 --- a/lib/sisu/v5/manifest.rb +++ b/lib/sisu/v5/manifest.rb @@ -396,6 +396,27 @@ module SiSU_Manifest id,file='XML DOM',@f.base_filename.xml_dom summarize(id,file,pth,rel,url) end + if FileTest.file?(@f.place_file.xml_docbook_article.dir)==true + pth=@f.output_path.xml_docbook_article.dir + rel=@f.output_path.xml_docbook_article.rel_sm + url=@f.output_path.xml_docbook_article.url + id,file='XML Docbook Book',@f.base_filename.xml_docbook_article + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.xml_docbook_book.dir)==true + pth=@f.output_path.xml_docbook_book.dir + rel=@f.output_path.xml_docbook_book.rel_sm + url=@f.output_path.xml_docbook_book.url + id,file='XML Docbook Book',@f.base_filename.xml_docbook_book + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.xml_fictionbook.dir)==true + pth=@f.output_path.xml_fictionbook.dir + rel=@f.output_path.xml_fictionbook.rel_sm + url=@f.output_path.xml_fictionbook.url + id,file='XML Fictionbook',@f.base_filename.xml_fictionbook + summarize(id,file,pth,rel,url) + end if FileTest.file?(@f.place_file.xml_scaffold_structure_sisu.dir)==true pth=@f.output_path.xml_scaffold_structure_sisu.dir rel=@f.output_path.xml_scaffold_structure_sisu.rel_sm @@ -439,6 +460,38 @@ module SiSU_Manifest file=@f.base_filename.txt summarize(id,file,pth,rel,url) end + if FileTest.file?(@f.place_file.textile.dir)==true + id='Textile text (UTF-8)' + pth=@f.output_path.textile.dir + rel=@f.output_path.textile.rel_sm + url=@f.output_path.textile.url + file=@f.base_filename.textile + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.asciidoc.dir)==true + id='asciiDoc text (UTF-8)' + pth=@f.output_path.asciidoc.dir + rel=@f.output_path.asciidoc.rel_sm + url=@f.output_path.asciidoc.url + file=@f.base_filename.asciidoc + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.markdown.dir)==true + id='Markdown text (UTF-8)' + pth=@f.output_path.markdown.dir + rel=@f.output_path.markdown.rel_sm + url=@f.output_path.markdown.url + file=@f.base_filename.markdown + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.rst.dir)==true + id='rST text (UTF-8)' + pth=@f.output_path.rst.dir + rel=@f.output_path.rst.rel_sm + url=@f.output_path.rst.url + file=@f.base_filename.rst + summarize(id,file,pth,rel,url) + end if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true id,file='LaTeX (portrait)',"#{@md.fns}.tex" pth,rel,url='','','' diff --git a/lib/sisu/v5/manpage.rb b/lib/sisu/v5/manpage.rb index 3e430b55..ccdd829c 100644 --- a/lib/sisu/v5/manpage.rb +++ b/lib/sisu/v5/manpage.rb @@ -61,7 +61,7 @@ =end module SiSU_Manpage - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb require_relative 'sysenv' # sysenv.rb include SiSU_Env include SiSU_Param @@ -69,7 +69,7 @@ module SiSU_Manpage require_relative 'manpage_format' # manpage_format.rb include SiSU_ManpageFormat require_relative 'shared_metadata' # shared_metadata.rb - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 @@tablefoot='' class Source @@ -100,8 +100,8 @@ module SiSU_Manpage || @opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}").flow end - @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here - SiSU_Manpage::Source::Scroll.new(@md,@dal_array).songsheet + @ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here + SiSU_Manpage::Source::Scroll.new(@md,@ao_array).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -112,7 +112,7 @@ module SiSU_Manpage private class Scroll <Source require_relative 'defaults' # defaults.rb - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils @@endnotes={ para: [], end: [] } def initialize(md,data) @@ -120,7 +120,6 @@ module SiSU_Manpage @brace_url=SiSU_Viz::Defaults.new.url_decoration @vz=SiSU_Viz::Defaults.new @tab="\t" - @br="\n" @@notes=:end @manpage={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] } end @@ -128,6 +127,9 @@ module SiSU_Manpage manpage=markup(@data) publish(manpage) end + def break_line + "\n" + end # Used for extraction of endnotes from paragraphs def extract_endnotes(dob='') para=dob.obj.gsub(/#{Mx[:br_line]}/,"\n") @@ -176,7 +178,7 @@ GSUB end def manpage_tail @manpage[:tail] <<<<WOK -#{@br} +#{break_line} .TP .SH SEE ALSO sisu(1), @@ -235,21 +237,21 @@ WOK times=wrapped.length times=78 if times > 78 @manpage[:body] << case lv - when 1; '.SH ' << wrapped.upcase << @br << @br - when 2..3; '.SH ' << wrapped.upcase << @br << @br - when 4; '.SH ' << wrapped.upcase << @br << @br - when 5..6; '.SH ' << wrapped.upcase << @br << @br + when 1; '.SH ' << wrapped.upcase << break_line << break_line + when 2..3; '.SH ' << wrapped.upcase << break_line << break_line + when 4; '.SH ' << wrapped.upcase << break_line << break_line + when 5..6; '.SH ' << wrapped.upcase << break_line << break_line end else @manpage[:body] << if wrapped =~/^\.BI\s/ # main text, contents, body KEEP - '.TP' << @br << wrapped.gsub(/(^\.B)I\s/,'\1 ') # sleight ... simpler output (check gsub!) + '.TP' << break_line << wrapped.gsub(/(^\.B)I\s/,'\1 ') # sleight ... simpler output (check gsub!) else - @br + '.BR' + @br << wrapped + break_line + '.BR' + break_line << wrapped end end if @@endnotes[:para] \ and @@notes==:foot #edit out to switch off endnotes following paragraph to which they belong - @@endnotes[:para].each { |e| @manpage[:body] << e << @br } + @@endnotes[:para].each { |e| @manpage[:body] << e << break_line } elsif @@endnotes[:para] \ and @@notes==:end end @@ -349,7 +351,7 @@ WOK manpage_structure(dob) else if dob.obj =~/#{table_message}/ - @manpage[:body] << dob.obj << @br + @manpage[:body] << dob.obj << break_line end end if (dob.obj =~/<a name="n\d+">/ \ diff --git a/lib/sisu/v5/options.rb b/lib/sisu/v5/options.rb index 7203f8b2..f410e61f 100644 --- a/lib/sisu/v5/options.rb +++ b/lib/sisu/v5/options.rb @@ -496,7 +496,7 @@ module SiSU_Commandline when /^--(?:color-toggle)$/; c=c+'c' when /^--(?:color-off)$/; c=c+'k' when /^--(?:conf|config|configure|init|initialize|init-site)$/; c=c+'CC' - when /^--(?:dal?|machine|abstraction|abs)$/; c=c+'m' + when /^--(?:ao|dal?|machine|abstraction|abs)$/; c=c+'m' when /^--(?:txt|text|plaintext)$/; c=c+'t' when /^--(?:html)$/; c=c+'h' when /^--(?:html-scroll|html-seg)$/; c=c+'H' @@ -552,12 +552,12 @@ module SiSU_Commandline if cmd !~/[mn]/ extra+=if cmd =~/[abegHhIiLNOoPpQTtwXxyz]/ \ and cmd !~/[mn]/ - 'm' #% add dal + 'm' #% add ao elsif ((cmd =~/[Dd]/ \ or (mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/)) \ and mod.inspect !~/(?:remove|(?:(?:re)?create(?:all)?|dropall|drop)$)/) \ and cmd !~/[mn]/ - 'm' #% add dal + 'm' #% add ao else '' end end @@ -861,6 +861,13 @@ module SiSU_Commandline || mod.inspect =~/"--xml-dom"/) \ ? { bool: true, set: :on } : { bool: false, set: :na } + act[:xml_docbook_book]=mod.inspect =~/"--docbook"|"--docbook-book"|"--xml-docbook"|"--xml-docbook_book"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:xml_fictionbook]=(cmd =~/f/ \ + || mod.inspect =~/"--fictionbook"|"--xml-fictionbook"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } act[:xml_scaffold_structure_sisu]=mod.inspect =~/"--xml-scaffold"|"--xml-scaffold-sisu"/ \ ? { bool: true, set: :on } : { bool: false, set: :na } @@ -875,6 +882,18 @@ module SiSU_Commandline || mod.inspect =~/"--txt"/) \ ? { bool: true, set: :on } : { bool: false, set: :na } + act[:txt_textile]=(mod.inspect =~/"--textile"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt_asciidoc]=(mod.inspect =~/"--asciidoc"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt_markdown]=(mod.inspect =~/"--markdown"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt_rst]=(mod.inspect =~/"--rst"|"--rest"|"--restructuredtext"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } act[:manpage]=(cmd =~/i/ \ || mod.inspect =~/"--manpage"|"--man"/) \ ? { bool: true, set: :on } @@ -883,10 +902,6 @@ module SiSU_Commandline || mod.inspect =~/"--texinfo"/) \ ? { bool: true, set: :on } : { bool: false, set: :na } - act[:fictionbook]=(cmd =~/f/ \ - || mod.inspect =~/"--fictionbook"/) \ - ? { bool: true, set: :on } - : { bool: false, set: :na } act[:psql]=(cmd =~/D/ \ || mod.inspect =~/"--pg"|"--pgsql"/) \ ? { bool: true, set: :on } @@ -964,10 +979,14 @@ module SiSU_Commandline act[:help]=(mod.inspect =~/"--help/) \ ? { bool: true, set: :on } : { bool: false, set: :na } - act[:dal]=if (cmd =~/m/ \ - || mod.inspect =~/"--dal"/) + act[:ao]=if (cmd =~/m/ \ + || mod.inspect =~/"--ao"|"--dal"/) { bool: true, set: :on } elsif (act[:txt][:set]==:on \ + || act[:txt_textile][:set]==:on \ + || act[:txt_asciidoc][:set]==:on \ + || act[:txt_markdown][:set]==:on \ + || act[:txt_rst][:set]==:on \ || act[:xhtml][:set]==:on \ || act[:epub][:set]==:on \ || act[:html][:set]==:on \ @@ -986,20 +1005,22 @@ module SiSU_Commandline || act[:concordance][:set]==:on \ || act[:xml_dom][:set]==:on \ || act[:xml_sax][:set]==:on \ + || act[:xml_docbook_book][:set]==:on \ + || act[:xml_fictionbook][:set]==:on \ || act[:xml_scaffold_structure_sisu][:set]==:on \ || act[:xml_scaffold_structure_collapse][:set]==:on ) { bool: true, set: :on } #if cmd !~/[mn]/ # extra+=if cmd =~/[abegHhIiLNOoPpQTtwXxyz]/ \ # and cmd !~/[mn]/ - # 'm' #% add dal + # 'm' #% add ao #elsif (act[:txt][:set]==:on \ # { bool: true, set: :on } # elsif ((cmd =~/[Dd]/ \ # or (mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/)) \ # and mod.inspect !~/(?:remove|(?:(?:re)?create(?:all)?|dropall|drop)$)/) \ # and cmd !~/[mn]/ - # 'm' #% add dal + # 'm' #% add ao else { bool: false, set: :na } end @@ -1012,6 +1033,10 @@ module SiSU_Commandline || mod.inspect =~/"--manifest"/) { bool: true, set: :on } elsif (act[:txt][:set]==:on \ + || act[:txt_textile][:set]==:on \ + || act[:txt_asciidoc][:set]==:on \ + || act[:txt_markdown][:set]==:on \ + || act[:txt_rst][:set]==:on \ || act[:xhtml][:set]==:on \ || act[:epub][:set]==:on \ || act[:html][:set]==:on \ @@ -1030,6 +1055,8 @@ module SiSU_Commandline || act[:concordance][:set]==:on \ || act[:xml_dom][:set]==:on \ || act[:xml_sax][:set]==:on \ + || act[:xml_docbook_book][:set]==:on \ + || act[:xml_fictionbook][:set]==:on \ || act[:xml_scaffold_structure_sisu][:set]==:on \ || act[:xml_scaffold_structure_collapse][:set]==:on ) { bool: true, set: :on } diff --git a/lib/sisu/v5/param.rb b/lib/sisu/v5/param.rb index e8144a5e..d01f39e2 100644 --- a/lib/sisu/v5/param.rb +++ b/lib/sisu/v5/param.rb @@ -86,7 +86,7 @@ module SiSU_Param end SiSU_Param::Instantiate.new.param_instantiate @env=SiSU_Env::InfoEnv.new(@fns) - @pstorefile="#{@env.processing_path.dal}/#{@fns}.pstore" + @pstorefile="#{@env.processing_path.ao}/#{@fns}.pstore" end def get if @opt.f_pth \ @@ -1406,7 +1406,7 @@ module SiSU_Param end def store begin - pstorefile="#{@env.processing_path.dal}/#{@md.fns}.pstore" + pstorefile="#{@env.processing_path.ao}/#{@md.fns}.pstore" File.unlink(pstorefile) if FileTest.file?(pstorefile) if (@md.opt.act[:verbose_plus][:set]==:on \ || @md.opt.act[:maintenance][:set]==:on) diff --git a/lib/sisu/v5/particulars.rb b/lib/sisu/v5/particulars.rb index 000748ff..beeaf429 100644 --- a/lib/sisu/v5/particulars.rb +++ b/lib/sisu/v5/particulars.rb @@ -66,14 +66,14 @@ module SiSU_Particulars include SiSU_Env require_relative 'param' # param.rb include SiSU_Param - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb class CombinedSingleton include Singleton def get_all(opt) set_env(opt) set_file(opt) set_md(opt) - set_dal(opt) #needs @md + set_ao(opt) #needs @md end def get_env(opt) set_env(opt) @@ -84,8 +84,8 @@ module SiSU_Particulars def get_md(opt) set_md(opt) end - def get_dal_array(opt) - set_dal(opt) #needs @md + def get_ao_array(opt) + set_ao(opt) #needs @md end def get_env_md(opt) set_env(opt) @@ -149,10 +149,10 @@ module SiSU_Particulars end end end - attr_accessor :opt,:dal_array - def set_dal(opt) + attr_accessor :opt,:ao_array + def set_ao(opt) begin - @dal_array=SiSU_DAL::Source.new(opt).get + @ao_array=SiSU_AO::Source.new(opt).get self rescue SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do @@ -162,7 +162,7 @@ module SiSU_Particulars end def set_sst_idx(opt) begin - @sst_idx=SiSU_DAL::Source.new(opt).get_idx_sst + @sst_idx=SiSU_AO::Source.new(opt).get_idx_sst self rescue SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do @@ -172,7 +172,7 @@ module SiSU_Particulars end def set_raw_idx(opt) begin - @raw_idx=SiSU_DAL::Source.new(opt).get_idx_raw + @raw_idx=SiSU_AO::Source.new(opt).get_idx_raw self rescue SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do @@ -182,7 +182,7 @@ module SiSU_Particulars end def set_html_idx(opt) begin - @html_idx=SiSU_DAL::Source.new(opt).get_idx_html + @html_idx=SiSU_AO::Source.new(opt).get_idx_html self rescue SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do @@ -192,7 +192,7 @@ module SiSU_Particulars end def set_xhtml_idx(opt) begin - @xhtml_idx=SiSU_DAL::Source.new(opt).get_idx_xhtml + @xhtml_idx=SiSU_AO::Source.new(opt).get_idx_xhtml self rescue SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do @@ -204,7 +204,7 @@ module SiSU_Particulars def set_nametags_map(opt) begin opt=@md ? @md : opt - @nametags_map=SiSU_DAL::Source.new(opt).get_map_nametags + @nametags_map=SiSU_AO::Source.new(opt).get_map_nametags self rescue if @md @@ -221,7 +221,7 @@ module SiSU_Particulars attr_accessor :ocn_htmlseg_map def set_ocn_htmlseg_map(opt) begin - @ocn_htmlseg_map=SiSU_DAL::Source.new(@md).get_map_ocn_htmlseg + @ocn_htmlseg_map=SiSU_AO::Source.new(@md).get_map_ocn_htmlseg self rescue SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do diff --git a/lib/sisu/v5/plaintext_format.rb b/lib/sisu/v5/plaintext_format.rb deleted file mode 100644 index acad8828..00000000 --- a/lib/sisu/v5/plaintext_format.rb +++ /dev/null @@ -1,104 +0,0 @@ -# encoding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see <http://www.gnu.org/licenses/>. - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - <http://www.fsf.org/licensing/licenses/gpl.html> - <http://www.gnu.org/licenses/gpl.html> - - <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - <http://www.jus.uio.no/sisu> - <http://www.sisudoc.org> - - * Download: - <http://www.sisudoc.org/sisu/en/SiSU/download.html> - - * Git - <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/plaintext_format.rb;hb=HEAD> - - * Ralph Amissah - <ralph@amissah.com> - <ralph.amissah@gmail.com> - - ** Description: plaintext formatting template - -=end -module SiSU_Plaintext_Format - require_relative 'param' # param.rb - include SiSU_Param - include SiSU_Viz - class ParagraphNumber - def initialize(paranum) - @paranum=/(\d+)/m.match(paranum.to_s)[1] - end - def display - @paranum.gsub(/(\d+)/,"\n#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}") - end - def name #unused - @paranum.gsub(/(\d+)/,'\1') - end - def goto #unused - @paranum.gsub(/(\d+)/,'"#\1"') - end - end - class FormatTextObject - def initialize(md,t_o) - @md,@t_o=md,t_o - if t_o.is_a?(Hash) - @txt =t_o[:txt] || nil - @lnk_url =t_o[:lnk_url] || nil - @lnk_txt =t_o[:lnk_txt] || nil - else - p t_o.class - p caller - end - rgx=/^#{Rx[:lv]}/ - @txt=@txt.gsub(rgx,'') if @txt =~rgx - rgx=/#{Mx[:en_a_o]}[\d*+]+\s+(.+?)#{Mx[:en_a_c]}/ - @txt=@txt.gsub(rgx,'\1') if @txt =~rgx - @vz=SiSU_Viz::Defaults.new - end - def scr_endnote_body - "<endnote>#{@txt}</endnote> " - end - end - class XML - end -end -__END__ diff --git a/lib/sisu/v5/po4a.rb b/lib/sisu/v5/po4a.rb index 64f2c18d..217f2975 100644 --- a/lib/sisu/v5/po4a.rb +++ b/lib/sisu/v5/po4a.rb @@ -61,7 +61,7 @@ =end module SiSU_Po4a - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb require_relative 'sysenv' # sysenv.rb include SiSU_Env require_relative 'composite' # composite.rb @@ -101,7 +101,7 @@ module SiSU_Po4a end md=SiSU_Param::Parameters.new(@opt).get src[:files].each do |fn| - SiSU_DAL::Source.new(@opt,fn).read # -m + SiSU_AO::Source.new(@opt,fn).read # -m env=SiSU_Env::InfoEnv.new(@opt.fns) m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss @fnn,@fnb,@fnt=fn[m,1],fn[m,2],fn[m,3] @@ -126,7 +126,7 @@ module SiSU_Po4a if @opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \ or @opt.f_pth[:lng] !=@opt.lng_base opt_lang_trn_fn=fn - @dal_array_lang_translation=SiSU_DAL::Source.new(@opt,opt_lang_trn_fn).get # dal file drawn here + @ao_array_lang_translation=SiSU_AO::Source.new(@opt,opt_lang_trn_fn).get # ao file drawn here opt_lang_src_fn=if fn =~/\S+?~\S{2}(?:_\S{2})?\.ss[mti]/ fn.gsub(/(\S+?)~\S{2}(?:_\S{2})?(\.ss[mti])/,'\1\2') #check i else fn @@ -141,15 +141,15 @@ module SiSU_Po4a else nil end if FileTest.file?("#{srcdir}/#{opt_lang_src_fn}") - @dal_array_lang_src=SiSU_DAL::Source.new(@@opt_src,opt_lang_src_fn).get # dal file drawn here + @ao_array_lang_src=SiSU_AO::Source.new(@@opt_src,opt_lang_src_fn).get # ao file drawn here else puts "no identified source document" exit end Dir.chdir(transdir) if transdir else - @dal_array_lang_src=SiSU_DAL::Source.new(@opt,fn).get # dal file drawn here - @dal_array_lang_translation=nil + @ao_array_lang_src=SiSU_AO::Source.new(@opt,fn).get # ao file drawn here + @ao_array_lang_translation=nil end wrap_width=if defined? md.make.plaintext_wrap \ and md.make.plaintext_wrap @@ -159,7 +159,7 @@ module SiSU_Po4a env.plaintext_wrap else 78 end - SiSU_Po4a::Source::Scroll.new(fn,@dal_array_lang_src,@dal_array_lang_translation,@@md_src,@@md_trn,wrap_width).songsheet + SiSU_Po4a::Source::Scroll.new(fn,@ao_array_lang_src,@ao_array_lang_translation,@@md_src,@@md_trn,wrap_width).songsheet end rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do diff --git a/lib/sisu/v5/prog_text_translation.rb b/lib/sisu/v5/prog_text_translation.rb index 8425a109..ae166d23 100644 --- a/lib/sisu/v5/prog_text_translation.rb +++ b/lib/sisu/v5/prog_text_translation.rb @@ -473,7 +473,7 @@ module SiSU_Translate 'Document (RCS/CVS) number' end def last_generated - 'Document (dal) last generated' + 'Document (ao) last generated' end def sisu_version 'Generated by' @@ -1324,7 +1324,7 @@ module SiSU_Translate 'Numero di revisione (RCS/CVS)' end def last_generated - 'Data di ultima generazione (dal metaverse)' + 'Data di ultima generazione (ao metaverse)' end def sisu_version 'Generato da' diff --git a/lib/sisu/v5/relaxng.rb b/lib/sisu/v5/relaxng.rb index 39d6bde9..ef632308 100644 --- a/lib/sisu/v5/relaxng.rb +++ b/lib/sisu/v5/relaxng.rb @@ -327,9 +327,9 @@ element-external_space = } RELAXNG end - def rnc_sisu_object_dal + def rnc_sisu_object_ao @relaxng =<<RELAXNG -#%% sisu object model: dal +#%% sisu object model: ao #{gpl3_or_later} #%% definitions # dublin core: @@ -500,7 +500,7 @@ RELAXNG @relaxng =<<RELAXNG #% sax output model, part of SiSU and distributed under the same license default namespace = "" -namespace xlink = "http://www.w3.org/1999/xlink" +namespace xl = "http://www.w3.org/1999/xlink" start = element document { element head { @@ -510,8 +510,8 @@ start = attribute class { xsd:NCName }, (text | element link { - attribute xlink:href { xsd:anyURI }, - attribute xlink:type { xsd:NCName }, + attribute xl:href { xsd:anyURI }, + attribute xl:type { xsd:NCName }, xsd:anyURI })+ } @@ -603,10 +603,10 @@ start = attribute alt { text }?, attribute height { xsd:integer }?, attribute width { xsd:integer }?, - attribute xlink:actuate { xsd:NCName }, - attribute xlink:href { text }, - attribute xlink:show { xsd:NCName }, - attribute xlink:type { xsd:NCName } + attribute xl:actuate { xsd:NCName }, + attribute xl:href { text }, + attribute xl:show { xsd:NCName }, + attribute xl:type { xsd:NCName } })+ }?, element table { @@ -654,8 +654,8 @@ sub = element sub { xsd:NCName } sup = element sup { xsd:NCName } link = element link { - attribute xlink:href { xsd:anyURI }, - attribute xlink:type { xsd:NCName }, + attribute xl:href { xsd:anyURI }, + attribute xl:type { xsd:NCName }, (xsd:anyURI | text | b | i | sup)+ } u = element u { (text | b | i)+ } @@ -666,7 +666,7 @@ RELAXNG @relaxng =<<RELAXNG #% dom output model, part of SiSU and distributed under the same license default namespace = "" -namespace xlink = "http://www.w3.org/1999/xlink" +namespace xl = "http://www.w3.org/1999/xlink" start = element document { element head { @@ -770,10 +770,10 @@ object = | element image { attribute height { xsd:integer }, attribute width { xsd:integer }, - attribute xlink:actuate { xsd:NCName }, - attribute xlink:href { text }, - attribute xlink:show { xsd:NCName }, - attribute xlink:type { xsd:NCName } + attribute xl:actuate { xsd:NCName }, + attribute xl:href { text }, + attribute xl:show { xsd:NCName }, + attribute xl:type { xsd:NCName } } | element sub { text })+ }) @@ -786,8 +786,8 @@ sup = element sup { xsd:NCName } del = element del { (text | b | i | link)+ } link = element link { - attribute xlink:href { xsd:anyURI }, - attribute xlink:type { xsd:NCName }, + attribute xl:href { xsd:anyURI }, + attribute xl:type { xsd:NCName }, xsd:anyURI } endnote = @@ -814,7 +814,7 @@ RELAXNG @relaxng =<<RELAXNG #% xhtml output model, part of SiSU and distributed under the same license default namespace = "" -namespace xlink = "http://www.w3.org/1999/xlink" +namespace xl = "http://www.w3.org/1999/xlink" start = element document { element head { @@ -823,8 +823,8 @@ start = attribute class { xsd:NCName }, (text | element link { - attribute xlink:href { xsd:anyURI }, - attribute xlink:type { xsd:NCName }, + attribute xl:href { xsd:anyURI }, + attribute xl:type { xsd:NCName }, xsd:anyURI })+ } @@ -923,10 +923,10 @@ start = attribute alt { text }?, attribute height { xsd:integer }?, attribute width { xsd:integer }?, - attribute xlink:actuate { xsd:NCName }, - attribute xlink:href { text }, - attribute xlink:show { xsd:NCName }, - attribute xlink:type { xsd:NCName } + attribute xl:actuate { xsd:NCName }, + attribute xl:href { text }, + attribute xl:show { xsd:NCName }, + attribute xl:type { xsd:NCName } } | element sub { text })+ })+, @@ -954,8 +954,8 @@ sup = element sup { xsd:NCName } i = element i { (text | b | br | sup)+ } link = element link { - attribute xlink:href { xsd:anyURI }, - attribute xlink:type { xsd:NCName }, + attribute xl:href { xsd:anyURI }, + attribute xl:type { xsd:NCName }, (text | b | i | sup)+ } b = element b { (text | en | i | link | sup)+ } diff --git a/lib/sisu/v5/screen_text_color.rb b/lib/sisu/v5/screen_text_color.rb index 4e4a319f..1d9de72c 100644 --- a/lib/sisu/v5/screen_text_color.rb +++ b/lib/sisu/v5/screen_text_color.rb @@ -244,6 +244,9 @@ module SiSU_Screen %{#{@cX.off} } + %{#{@cX.cyan}nav only: #{@txt[4]}#{@cX.off}.} end + def grey + puts "#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.cyan}#{@txt[1]}#{@cX.off}" + end def txt_white puts "\t#{@cX.white}#{@txt[0]}#{@cX.off} #{@cX.white}#{@txt[1]}#{@cX.off}" end diff --git a/lib/sisu/v5/shared_metadata.rb b/lib/sisu/v5/shared_metadata.rb index 91b12043..e176deb9 100644 --- a/lib/sisu/v5/shared_metadata.rb +++ b/lib/sisu/v5/shared_metadata.rb @@ -832,18 +832,18 @@ WOK @inf=inf_array.join(' ') end @inf=@inf.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/, - '<text:a xlink:type="simple" xlink:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration + '<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - '\1<text:a xlink:type="simple" xlink:href="\2">\2</text:a>') #special case \{ e.g. \}http://url + '\1<text:a xl:type="simple" xl:href="\2">\2</text:a>') #special case \{ e.g. \}http://url @inf=if @inf =~/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/ @inf.gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{#{url_brace.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{url_brace.xml_close}}) #http ftp matches with decoration + %{#{url_brace.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{url_brace.xml_close}}) #http ftp matches with decoration else @inf.gsub(/(https?:\/\/[^<>()'"\s]+)/, - %{#{url_brace.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{url_brace.xml_close}}) #http ftp matches with decoration + %{#{url_brace.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{url_brace.xml_close}}) #http ftp matches with decoration end @inf=@inf.gsub(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/, - %{#{url_brace.xml_open}<text:a xlink:type="simple" xlink:href="mailto:\\1">\\1</text:a>#{url_brace.xml_close}}) if @inf !~/http:\/\// # improve upon, document crash where url contains '@' symbol + %{#{url_brace.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{url_brace.xml_close}}) if @inf !~/http:\/\// # improve upon, document crash where url contains '@' symbol end <<WOK <text:p text:style-name="P1">#{@tag.capitalize}: #{@inf}</text:p> diff --git a/lib/sisu/v5/sitemaps.rb b/lib/sisu/v5/sitemaps.rb index 8e4d1410..6e81369a 100644 --- a/lib/sisu/v5/sitemaps.rb +++ b/lib/sisu/v5/sitemaps.rb @@ -64,7 +64,7 @@ module SiSU_Sitemaps include SiSU_Param require_relative 'sysenv' # sysenv.rb include SiSU_Env - require_relative 'shared_xml' # shared_xml.rb + require_relative 'xml_shared' # xml_shared.rb include SiSU_XML_Munge class Source def initialize(opt) diff --git a/lib/sisu/v5/share_src_kdissert.rb b/lib/sisu/v5/src_kdissert_share.rb index b696891e..a71aca99 100644 --- a/lib/sisu/v5/share_src_kdissert.rb +++ b/lib/sisu/v5/src_kdissert_share.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/share_src_kdissert.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/src_share_kdissert.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> diff --git a/lib/sisu/v5/share_src.rb b/lib/sisu/v5/src_share.rb index 69dd7bb9..1aba0d95 100644 --- a/lib/sisu/v5/share_src.rb +++ b/lib/sisu/v5/src_share.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/share_src.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/src_share.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -60,7 +60,7 @@ =end module SiSU_Markup - require_relative 'shared_sisupod_source' # shared_sisupod_source.rb + require_relative 'src_shared' # src_shared.rb include SiSU_Source require_relative 'sysenv' # sysenv.rb include SiSU_Env diff --git a/lib/sisu/v5/shared_sisupod_source.rb b/lib/sisu/v5/src_shared.rb index f8a4058d..65c4288e 100644 --- a/lib/sisu/v5/shared_sisupod_source.rb +++ b/lib/sisu/v5/src_shared.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/shared_sisupod_source.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/src_shared.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -300,7 +300,7 @@ sisu standard_terms/ image processing - dal/ + ao/ tex/ texinfo/ tune/ diff --git a/lib/sisu/v5/sisupod_make.rb b/lib/sisu/v5/src_sisupod_make.rb index 462e2ea4..d244ece4 100644 --- a/lib/sisu/v5/sisupod_make.rb +++ b/lib/sisu/v5/src_sisupod_make.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/sisupod_make.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/src_sisupod_make.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -60,7 +60,7 @@ =end module SiSU_Doc - require_relative 'shared_sisupod_source' # shared_sisupod_source.rb + require_relative 'src_shared' # scr_shared.rb include SiSU_Source require_relative 'sysenv' # sysenv.rb include SiSU_Env @@ -155,7 +155,7 @@ sisu standard_terms/ image processing - dal/ + ao/ tex/ texinfo/ tune/ diff --git a/lib/sisu/v5/sst_do_inline_footnotes.rb b/lib/sisu/v5/sst_do_inline_footnotes.rb index 836d0d29..cafe9c60 100644 --- a/lib/sisu/v5/sst_do_inline_footnotes.rb +++ b/lib/sisu/v5/sst_do_inline_footnotes.rb @@ -67,8 +67,8 @@ module SiSU_ConvertFootnotes include SiSU_Env require_relative 'param' # param.rb include SiSU_Param - require_relative 'dal_syntax' # dal_syntax.rb - include SiSU_DAL_Syntax + require_relative 'ao_syntax' # ao_syntax.rb + include SiSU_AO_Syntax require_relative 'i18n' # i18n.rb class Instantiate < SiSU_Param::Parameters::Instructions @@flag={} #Beware!! @@ -82,19 +82,19 @@ module SiSU_ConvertFootnotes end end class Source <Instantiate - @@dal_array=[] + @@ao_array=[] @@fns=nil def initialize(opt) @opt=opt @@fns||@opt.fns @my_make=SiSU_Env::CreateFile.new(@opt.fns) - @fnm=SiSU_Env::InfoFile.new(@opt.fns).marshal.dal_content + @fnm=SiSU_Env::InfoFile.new(@opt.fns).marshal.ao_content end - def read #creates dal + def read #creates ao begin - @@dal_array=[] + @@ao_array=[] @@fns=@opt.fns - create_dal + create_ao rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -103,16 +103,16 @@ module SiSU_ConvertFootnotes Instantiate.new end end - def get #reads dal, unless does not exist then creates first + def get #reads ao, unless does not exist then creates first begin - dal=[] + ao=[] unless @@fns==@opt.fns @@fns=@opt.fns - @@dal_array=[] + @@ao_array=[] end - dal=(@@dal_array.empty?) \ + ao=(@@ao_array.empty?) \ ? read_fnm - : @@dal_array.dup #check + : @@ao_array.dup #check rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -122,8 +122,8 @@ module SiSU_ConvertFootnotes end end protected - def create_dal - dal_array=[] + def create_ao + ao_array=[] SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'convert footnotes').green_title_hi unless @opt.act[:quiet][:set]==:on file_array=IO.readlines(@opt.fns,'') file_array.each do |l| @@ -136,21 +136,21 @@ module SiSU_ConvertFootnotes if @md.en[:mismatch]==0 \ or @md.opt.mod.inspect =~/=footnotes-force/ meta=nil - dal=SiSU_ConvertFootnotes::Make.new(@md,file_array).song + ao=SiSU_ConvertFootnotes::Make.new(@md,file_array).song SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{@md.fns}.fn").output if @md.opt.act[:verbose][:set]==:on SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"#{@md.fns}.fn -> #{@md.fns}.fn").txt_red unless @md.opt.act[:quiet][:set]==:on - dal.each {|s| dal_array << "#{s.strip}\n\n" unless s.strip.empty?} - dal_array + ao.each {|s| ao_array << "#{s.strip}\n\n" unless s.strip.empty?} + ao_array else SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set],'*WARN* no footnote conversion done, problem with source file','to override use --convert=footnote-force (this is not advised)').warn unless @md.opt.act[:quiet][:set]==:on '' end end def read_fnm - dal=[] - dal=(FileTest.file?(@fnm)) \ - ? (File.open(@fnm){ |f| dal=Marshal.load(f)}) - : (SiSU_ConvertFootnotes::Source.new(@opt).create_dal) #watch + ao=[] + ao=(FileTest.file?(@fnm)) \ + ? (File.open(@fnm){ |f| ao=Marshal.load(f)}) + : (SiSU_ConvertFootnotes::Source.new(@opt).create_ao) #watch end end class Output @@ -189,7 +189,7 @@ module SiSU_ConvertFootnotes def song reset data=@data - @metafile="#{@env.processing_path.dal}/#{@md.fns}.meta" + @metafile="#{@env.processing_path.ao}/#{@md.fns}.meta" SiSU_Env::CreateFile.new(@md.fns) data=data.join.split("\n\n") data_new=[] @@ -458,7 +458,7 @@ module SiSU_ConvertFootnotes end end end - def strip_clean_extra_spaces(s) # dal output tuned + def strip_clean_extra_spaces(s) # ao output tuned s=s.dup s=s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1') s=s.gsub(/ [ ]+/,' ') @@ -482,4 +482,4 @@ module SiSU_ConvertFootnotes end __END__ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt) -dal_array=@particulars.dal_array # dal file drawn here +ao_array=@particulars.ao_array # ao file drawn here diff --git a/lib/sisu/v5/sst_to_s_xml_sax.rb b/lib/sisu/v5/sst_to_s_xml_sax.rb index d6767595..5f18496a 100644 --- a/lib/sisu/v5/sst_to_s_xml_sax.rb +++ b/lib/sisu/v5/sst_to_s_xml_sax.rb @@ -68,8 +68,8 @@ module SiSU_SimpleXML_ModelSax include SiSU_Param require_relative 'sysenv' # sysenv.rb include SiSU_Env - require_relative 'dal_doc_str' # dal_doc_str.rb - require_relative 'shared_xml' # shared_xml.rb + require_relative 'ao_doc_str' # ao_doc_str.rb + require_relative 'xml_shared' # xml_shared.rb include SiSU_XML_Munge require_relative 'shared_sem' # shared_sem.rb require_relative 'xml_format' # xml_format.rb @@ -109,9 +109,9 @@ module SiSU_SimpleXML_ModelSax end end def read_fnm - dal=[] + ao=[] if FileTest.file?("#{Dir.pwd}/#{@opt.fns}") - dal=IO.readlines("#{Dir.pwd}/#{@opt.fns}","\n\n") + ao=IO.readlines("#{Dir.pwd}/#{@opt.fns}","\n\n") else STDERR.puts 'Error' end end @@ -138,7 +138,7 @@ module SiSU_SimpleXML_ModelSax end end class Scroll - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb require_relative 'css' # css.rb include SiSU_TextUtils @@xml={ body: [], open: [], close: [], head: [] } @@ -276,7 +276,7 @@ WOK (0..6).each { |x| @cont[x]=@level[x]=false } (4..6).each { |x| @xml_contents_close[x]='' } @data.each do |para| - data << SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure #takes on Mx marks + data << SiSU_AO_DocumentStructureExtract::Structure.new(@md,para).structure #takes on Mx marks end data.each do |para| if para !~/^\s*(?:%+ |<:code>)/ diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb index d4079f8c..1f5d7d3a 100644 --- a/lib/sisu/v5/sysenv.rb +++ b/lib/sisu/v5/sysenv.rb @@ -142,7 +142,7 @@ module SiSU_Env PROCESSING_PATH=:processing_path PROCESSING_DIR_TMP_ROOT=:processing_dir_tmp_root PROCESSING_PATH_TMP_BASE=:processing_path_tmp_base - PROCESSING_DAL=:processing_dal + PROCESSING_AO=:processing_ao PROCESSING_TUNE=:processing_tune PROCESSING_LATEX=:processing_latex PROCESSING_TEXINFO=:processing_texinfo @@ -186,7 +186,7 @@ module SiSU_Env PROCESSING_PATH => processing_pth, PROCESSING_DIR_TMP_ROOT => prcss_dir_tmp_root, PROCESSING_PATH_TMP_BASE => processing_pth, - PROCESSING_DAL => 'dal', + PROCESSING_AO => 'ao', PROCESSING_TUNE => 'tune', PROCESSING_LATEX => 'tex', PROCESSING_TEXINFO => 'texinfo', @@ -1478,6 +1478,18 @@ module SiSU_Env ? @rc['odt']['ocn'] : true end + def xml_docbook_ocn? + ((defined? @rc['xml_docbook']['ocn']) \ + && @rc['xml_docbook']['ocn']==false) \ + ? @rc['xml_docbook']['ocn'] + : true + end + def xml_fictionbook_ocn? + ((defined? @rc['xml_fictionbook']['ocn']) \ + && @rc['xml_fictionbook']['ocn']==false) \ + ? @rc['xml_fictionbook']['ocn'] + : true + end def xml_scaffold_ocn? ((defined? @rc['xml_scaffold']['ocn']) \ && @rc['xml_scaffold']['ocn']==false) \ @@ -1490,6 +1502,30 @@ module SiSU_Env ? @rc['plaintext']['ocn'] : true end + def textile_ocn? + ((defined? @rc['textile']['ocn']) \ + && @rc['textile']['ocn']==true) \ + ? @rc['textile']['ocn'] + : false + end + def asciidoc_ocn? + ((defined? @rc['asciidoc']['ocn']) \ + && @rc['asciidoc']['ocn']==true) \ + ? @rc['asciidoc']['ocn'] + : false + end + def markdown_ocn? + ((defined? @rc['markdown']['ocn']) \ + && @rc['markdown']['ocn']==true) \ + ? @rc['markdown']['ocn'] + : false + end + def rst_ocn? + ((defined? @rc['rst']['ocn']) \ + && @rc['rst']['ocn']==true) \ + ? @rc['rst']['ocn'] + : false + end def widget #needs (md) #move @rc=SiSU_Env::GetInit.new.sisu_yaml.rc @ad=SiSU_Env::GetInit.new.ads @@ -2161,7 +2197,7 @@ WOK ? ("#{root_dir}/#{user}/#{stub_pwd}") : ("#{root_dir}/#{stub_pwd}") # see defaults[:processing_path] end - def processing_sisupod(opt=nil) #processing directory, used/needed for sisu work files, has sub-directories (dal,tex etc) + def processing_sisupod(opt=nil) #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc) @opt=opt def paths processing_path_usr="#{root_dir}/#{user}" @@ -2195,7 +2231,7 @@ WOK end self end - def processing #processing directory, used/needed for sisu work files, has sub-directories (dal,tex etc) + def processing #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc) unless FileTest.directory?(root_dir) FileUtils::mkdir_p(root_dir) File.chmod(0777,root_dir) @@ -2219,11 +2255,11 @@ WOK end processing end - def dal + def ao pth=if defined? @rc['processing']['dal'] \ and @rc['processing']['dal'].is_a?(String) "#{processing}/#{@rc['processing']['dal']}" - else "#{processing}/#{defaults[:processing_dal]}" + else "#{processing}/#{defaults[:processing_ao]}" end FileUtils::mkdir_p(pth) unless FileTest.directory?(pth) pth @@ -2238,7 +2274,7 @@ WOK pth end def composite_file - pth=processing_path.dal #"#{processing}/composite" + pth=processing_path.ao #"#{processing}/composite" FileUtils::mkdir_p(pth) unless FileTest.directory?(pth) pth end @@ -2736,6 +2772,18 @@ WOK ? @rc['program_select']['xml_viewer'] : text_editor end + def docbook_viewer + ((defined? @rc['program_select']['xml_viewer']) \ + && @rc['program_select']['xml_viewer'] =~/\S\S+/) \ + ? @rc['program_select']['xml_viewer'] + : text_editor + end + def fictionbook_viewer + ((defined? @rc['program_select']['xml_viewer']) \ + && @rc['program_select']['xml_viewer'] =~/\S\S+/) \ + ? @rc['program_select']['xml_viewer'] + : text_editor + end def xml_editor xml_viewer end @@ -2978,53 +3026,71 @@ WOK ? (SiSU_Env::InfoEnv.new(@opt.fns)) : (SiSU_Env::InfoEnv.new('dummy.sst'))) ft=[] - if @opt.act[:dal][:set]==:on + if @opt.act[:ao][:set]==:on @md=SiSU_Param::Parameters.new(@opt).get if @md \ and defined? @md.fn \ and @md.fn # used for by_language_code? - if @md.opt.act[:html][:set]==:on #% --html, -h -H + if @md.opt.act[:html][:set]==:on #% --html, -h -H ft << @md.fn[:html] end - if @md.opt.act[:concordance][:set]==:on #% --concordance, -w + if @md.opt.act[:concordance][:set]==:on #% --concordance, -w ft << @md.fn[:concordance] end - if @md.opt.act[:manifest][:set]==:on #% --manifest, -y + if @md.opt.act[:manifest][:set]==:on #% --manifest, -y ft << @md.fn[:manifest] end - if @md.opt.act[:txt][:set]==:on #% --txt, -t -a + if @md.opt.act[:txt][:set]==:on #% --txt, -t -a ft << @md.fn[:plain] end - if @md.opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml + if @md.opt.act[:txt_textile][:set]==:on #% --textile + ft << @md.fn[:txt_textile] + end + if @md.opt.act[:txt_asciidoc][:set]==:on #% --asciidoc + ft << @md.fn[:txt_asciidoc] + end + if @md.opt.act[:txt_markdown][:set]==:on #% --markdown + ft << @md.fn[:txt_markdown] + end + if @md.opt.act[:txt_rst][:set]==:on #% --rst, --rest + ft << @md.fn[:txt_rst] + end + if @md.opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml ft << @md.fn[:xhtml] end - if @md.opt.act[:epub][:set]==:on #% --epub, -e + if @md.opt.act[:epub][:set]==:on #% --epub, -e ft << @md.fn[:epub] end - if @md.opt.act[:manpage][:set]==:on #% --manpage, -i + if @md.opt.act[:manpage][:set]==:on #% --manpage, -i ft << @md.fn[:manpage] end - if @md.opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree + if @md.opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree ft << @md.fn[:digest] end - if @md.opt.act[:odt][:set]==:on #% --odt, -o opendocument + if @md.opt.act[:odt][:set]==:on #% --odt, -o opendocument ft << @md.fn[:odf] end - if @md.opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf + if @md.opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf ft << @md.fn[:pdf_l] << @md.fn[:pdf_p] end if @md.opt.act[:share_source][:set]==:on ft << @md.fns end - if @md.opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod + if @md.opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod ft << @md.fn[:sisupod] end - if @md.opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type + if @md.opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type ft << @md.fn[:sax] end - if @md.opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type + if @md.opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type ft << @md.fn[:dom] end + if @md.opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book + ft << @md.fn[:xml_docbook_book] + end + if @md.opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook + ft << @md.fn[:xml_fictionbook] + end if @md.opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu ft << @md.fn[:xml_scaffold_structure_sisu] end @@ -3033,48 +3099,66 @@ WOK end @fnb=@md.fnb else # still needed where/when param is not parsed - if @opt.act[:html][:set]==:on #% --html, -h -H + if @opt.act[:html][:set]==:on #% --html, -h -H ft << '.html' << '.html.??' end - if @opt.act[:concordance][:set]==:on #% --concordance, -w + if @opt.act[:concordance][:set]==:on #% --concordance, -w ft << 'concordance.html' << '??.concordance.html' << 'concordance.??.html' end - if @opt.act[:manifest][:set]==:on #% --manifest, -y + if @opt.act[:manifest][:set]==:on #% --manifest, -y ft << 'sisu_manifest.html' << '??.sisu_manifest.html' << 'sisu_manifest.??.html' end - if @opt.act[:txt][:set]==:on #% --txt, -t -a + if @opt.act[:txt][:set]==:on #% --txt, -t -a + ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt' + end + if @opt.act[:txt_textile][:set]==:on #% --textile + ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt' + end + if @opt.act[:txt_asciidoc][:set]==:on #% --asciidoc + ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt' + end + if @opt.act[:txt_markdown][:set]==:on #% --markdown + ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt' + end + if @opt.act[:txt_rst][:set]==:on #% --rst, --rest ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt' end - if @opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml + if @opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml ft << 'scroll.xhtml' << '??.scroll.xhtml' << 'scroll.??.xhtml' end - if @opt.act[:epub][:set]==:on #% --epub, -e + if @opt.act[:epub][:set]==:on #% --epub, -e ft << @fnb << '.epub' end - if @opt.act[:manpage][:set]==:on #% --manpage, -i + if @opt.act[:manpage][:set]==:on #% --manpage, -i ft << '.1' << '??.man.1' << 'man.??.1' end - if @opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree + if @opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree ft << 'digest.txt' << '??.digest.txt' << 'digest.??.txt' end - if @opt.act[:odt][:set]==:on #% --odt, -o opendocument + if @opt.act[:odt][:set]==:on #% --odt, -o opendocument ft << 'opendocument.odt' << '??.opendocument.odt' << 'opendocument.??.odt' end - if @opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf + if @opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf ft << 'landscape.pdf' << 'portrait.pdf' << '.pdf' end if @opt.act[:share_source][:set]==:on ft << '.sst' << '.ssi' << '.ssm' end - if @opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod + if @opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod ft << '.zip' end - if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type + if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type ft << 'sax.xml' << '??.sax.xml' << 'sax.??.xml' end - if @opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type + if @opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type ft << 'dom.xml' << '??.dom.xml' << 'dom.??.xml' end + if @opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book + ft << 'docbook.xml' << '??.docbook.xml' << 'docbook.??.xml' + end + if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook + ft << 'fictionbook.xml' << '??.fictionbook.xml' << 'fictionbook.??.xml' + end if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu ft << 'scaffold.xml' << '??.scaffold.xml' << 'scaffold.??.xml' end @@ -3139,16 +3223,16 @@ WOK def remove_output if @opt.act[:maintenance][:set] == :on m=InfoFile.new(@opt.fnc) - tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns, 'remove maintenance files from: ' + @env.processing_path.dal) + tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns, 'remove maintenance files from: ' + @env.processing_path.ao) tell.warn unless @opt.cmd =~/q/ - deletion(m.marshal.dal_content) - deletion(m.marshal.dal_idx_sst_rel_html_seg) - deletion(m.dal_idx_sst_rel) - deletion(m.dal_idx_html) - deletion(m.dal_idx_xhtml) - deletion(m.dal_metadata) - deletion(m.dal_map_nametags) - deletion(m.dal_map_ocn_htmlseg) + deletion(m.marshal.ao_content) + deletion(m.marshal.ao_idx_sst_rel_html_seg) + deletion(m.ao_idx_sst_rel) + deletion(m.ao_idx_html) + deletion(m.ao_idx_xhtml) + deletion(m.ao_metadata) + deletion(m.ao_map_nametags) + deletion(m.ao_map_ocn_htmlseg) deletion(m.html_tune) end md=SiSU_Param::Parameters.new(@opt).get @@ -3378,7 +3462,7 @@ WOK end def rsync def document - f=(@opt.act[:dal][:set]==:on) \ + f=(@opt.act[:ao][:set]==:on) \ ? SiSU_Env::FileOp.new(@md) : nil if f @@ -3704,29 +3788,29 @@ WOK FileUtils::mkdir_p(path) unless FileTest.directory?(path) end def marshal - def dal_content - "#{@env.processing_path.dal}/#{@fns}.content.rbm" + def ao_content + "#{@env.processing_path.ao}/#{@fns}.content.rbm" end - def dal_idx_sst_rel_html_seg - "#{@env.processing_path.dal}/#{@fns}.idx_sst.rbm" + def ao_idx_sst_rel_html_seg + "#{@env.processing_path.ao}/#{@fns}.idx_sst.rbm" end - def dal_idx_sst_rel #used by tex & odf - "#{@env.processing_path.dal}/#{@fns}.idx_raw.rbm" + def ao_idx_sst_rel #used by tex & odf + "#{@env.processing_path.ao}/#{@fns}.idx_raw.rbm" end - def dal_idx_html - "#{@env.processing_path.dal}/#{@fns}.idx_html.rbm" + def ao_idx_html + "#{@env.processing_path.ao}/#{@fns}.idx_html.rbm" end - def dal_idx_xhtml - "#{@env.processing_path.dal}/#{@fns}.idx_xhtml.rbm" + def ao_idx_xhtml + "#{@env.processing_path.ao}/#{@fns}.idx_xhtml.rbm" end - def dal_metadata - "#{@env.processing_path.dal}/#{@fns}.metadata.rbm" + def ao_metadata + "#{@env.processing_path.ao}/#{@fns}.metadata.rbm" end - def dal_map_nametags - "#{@env.processing_path.dal}/#{@fns}.map_name_tags.rbm" + def ao_map_nametags + "#{@env.processing_path.ao}/#{@fns}.map_name_tags.rbm" end - def dal_map_ocn_htmlseg - "#{@env.processing_path.dal}/#{@fns}.map_ocn_htmlseg.rbm" + def ao_map_ocn_htmlseg + "#{@env.processing_path.ao}/#{@fns}.map_ocn_htmlseg.rbm" end def html_tune "#{@env.processing_path.tune}/#{@fns}.marshal_tune" @@ -3741,8 +3825,8 @@ WOK end def mkdir #check moved from FileOp, existing mkdir def processing - def dal - FileUtils::mkdir_p(@env.processing_path.dal) unless FileTest.directory?(@env.processing_path.dal) + def ao + FileUtils::mkdir_p(@env.processing_path.ao) unless FileTest.directory?(@env.processing_path.ao) end def tune FileUtils::mkdir_p(@env.processing_path.tune) unless FileTest.directory?(@env.processing_path.tune) @@ -4255,7 +4339,7 @@ WOK FileUtils::mkdir_p(output_path.base.dir) unless FileTest.directory?(output_path.base.dir) FileUtils::mkdir_p("#{output_path.base.dir}/#{@md.fnb}") unless FileTest.directory?("#{output_path.base.dir}/#{@md.fnb}") FileUtils::mkdir_p("#{output_path.base.dir}/#{@env.path.style}") unless FileTest.directory?("#{output_path.base.dir}/#{@env.path.style}") - FileUtils::mkdir_p(@env.processing_path.dal) unless FileTest.directory?(@env.processing_path.dal) + FileUtils::mkdir_p(@env.processing_path.ao) unless FileTest.directory?(@env.processing_path.ao) FileUtils::mkdir_p(@env.processing_path.tune) unless FileTest.directory?(@env.processing_path.tune) end def path_rel_links @@ -4372,6 +4456,30 @@ WOK fn=base_filename.txt make_file(path,fn) end + def textile + path=output_path.textile.dir + make_path(path) + fn=base_filename.textile + make_file(path,fn) + end + def asciidoc + path=output_path.asciidoc.dir + make_path(path) + fn=base_filename.asciidoc + make_file(path,fn) + end + def markdown + path=output_path.markdown.dir + make_path(path) + fn=base_filename.markdown + make_file(path,fn) + end + def rst + path=output_path.rst.dir + make_path(path) + fn=base_filename.rst + make_file(path,fn) + end def html_scroll pth=output_path.html.dir make_path(pth) @@ -4415,6 +4523,18 @@ WOK fn=base_filename.xml_dom make_file(path,fn) end + def xml_docbook_book + path=output_path.xml_docbook_book.dir + make_path(path) + fn=base_filename.xml_docbook_book + make_file(path,fn) + end + def xml_fictionbook + path=output_path.xml_fictionbook.dir + make_path(path) + fn=base_filename.xml_fictionbook + make_file(path,fn) + end def xml_scaffold_structure_sisu path=output_path.xml_scaffold_structure_sisu.dir make_path(path) @@ -4493,6 +4613,42 @@ WOK end self end + def textile + def dir + output_path.textile.dir + '/' + base_filename.textile + end + def rel + output_path.textile.rel + '/' + base_filename.textile + end + self + end + def asciidoc + def dir + output_path.asciidoc.dir + '/' + base_filename.asciidoc + end + def rel + output_path.asciidoc.rel + '/' + base_filename.asciidoc + end + self + end + def markdown + def dir + output_path.markdown.dir + '/' + base_filename.markdown + end + def rel + output_path.markdown.rel + '/' + base_filename.markdown + end + self + end + def rst + def dir + output_path.rst.dir + '/' + base_filename.rst + end + def rel + output_path.rst.rel + '/' + base_filename.rst + end + self + end def html_scroll def dir output_path.html_scroll.dir + '/' + base_filename.html_scroll @@ -4589,6 +4745,24 @@ WOK end self end + def xml_docbook_book + def dir + output_path.xml_docbook.dir + '/' + base_filename.xml_docbook_book + end + def rel + output_path.xml_docbook.rel + '/' + base_filename.xml_docbook_book + end + self + end + def xml_fictionbook + def dir + output_path.xml_fictionbook.dir + '/' + base_filename.xml_fictionbook + end + def rel + output_path.xml_fictionbook.rel + '/' + base_filename.xml_fictionbook + end + self + end def xml_scaffold_structure_sisu def dir output_path.xml.dir + '/' + base_filename.xml_scaffold_structure_sisu @@ -4784,6 +4958,78 @@ WOK end i18n(fnh) end + def textile(fh=nil) + fh=default_hash_build(fh,Sfx[:txt_textile]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'plain', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def asciidoc(fh=nil) + fh=default_hash_build(fh,Sfx[:txt_asciidoc]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'plain', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def markdown(fh=nil) + fh=default_hash_build(fh,Sfx[:txt_markdown]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'plain', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def rst(fh=nil) + fh=default_hash_build(fh,Sfx[:txt_rst]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'plain', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end def html_scroll(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) @@ -4952,6 +5198,42 @@ WOK end i18n(fnh) end + def xml_docbook_book(fh=nil) + fh=default_hash_build(fh,Sfx[:xml_docbook_book]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'scroll', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def xml_fictionbook(fh=nil) + fh=default_hash_build(fh,Sfx[:xml_fictionbook]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'scroll', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end def xml_scaffold_structure_sisu(fh=nil) fh=default_hash_build(fh,Sfx[:xml_scaffold_structure_sisu]) fh[:lng]=lang_code?(fh[:lng]) @@ -5560,6 +5842,90 @@ WOK end self end + def textile + def ft + 'textile_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + self + end + def asciidoc + def ft + 'asciidoc_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + self + end + def markdown + def ft + 'markdown_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + self + end + def rst + def ft + 'rst_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + self + end def html_scroll def ft 'html' @@ -5759,6 +6125,102 @@ WOK xml self end + def xml_docbook + def ft + 'docbook_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + def rel_image + '../../_sisu/image' + end + self + end + def xml_docbook_article + def ft + 'docbook' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + def rel_image + '../../_sisu/image' + end + self + end + def xml_docbook_book + def ft + 'docbook_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + def rel_image + '../../_sisu/image' + end + self + end + def xml_fictionbook + def ft + 'fictionbook_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + def rel_image + '../../_sisu/image' + end + self + end def xml_scaffold_structure_sisu def ft 'sisu.scaffold.xml' @@ -6130,17 +6592,17 @@ WOK File.new('/tmp/errorlog.sisu','w+') end def file_txt - File.new("#{@env.processing_path.dal}/#{@fns}.txt",'w+') + File.new("#{@env.processing_path.ao}/#{@fns}.txt",'w+') end def file_debug - File.new("#{@env.processing_path.dal}/#{@fns}.debug.txt",'w+') + File.new("#{@env.processing_path.ao}/#{@fns}.debug.txt",'w+') end def metaverse def file_meta - File.new("#{@env.processing_path.dal}/#{@fns}.meta",'w+') + File.new("#{@env.processing_path.ao}/#{@fns}.meta",'w+') end def file_meta_idx_html - File.new("#{@env.processing_path.dal}/#{@fns}.idx.html",'w+') + File.new("#{@env.processing_path.ao}/#{@fns}.idx.html",'w+') end self end @@ -6148,7 +6610,7 @@ WOK File.new("#{Dir.pwd}/#{@fns}.fn",'w+') end def meta - "#{@env.processing_path.dal}/#{@fns}.meta" + "#{@env.processing_path.ao}/#{@fns}.meta" end def file_semantic filename_semantic="./semantic.yaml" diff --git a/lib/sisu/v5/texinfo.rb b/lib/sisu/v5/texinfo.rb index 623cee2d..2e92268a 100644 --- a/lib/sisu/v5/texinfo.rb +++ b/lib/sisu/v5/texinfo.rb @@ -116,7 +116,7 @@ module SiSU_TexInfo : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'TexInfo',tool).green_title_hi @md=SiSU_Param::Parameters.new(@opt).get directories - @marshalfile=SiSU_Env::InfoFile.new(@opt.fns).marshal.dal_content + @marshalfile=SiSU_Env::InfoFile.new(@opt.fns).marshal.ao_content if FileTest.file?(@marshalfile)==true File.open(@marshalfile) { |f| @@tuned_file=Marshal.load(f)} #tell.meta_verse_skipped if @opt.cmd =~/[vVM]/ diff --git a/lib/sisu/v5/texpdf.rb b/lib/sisu/v5/texpdf.rb index 2dc3e860..bf72a1a6 100644 --- a/lib/sisu/v5/texpdf.rb +++ b/lib/sisu/v5/texpdf.rb @@ -81,8 +81,8 @@ module SiSU_TeX require_relative 'sysenv' # sysenv.rb include SiSU_Env include SiSU_Viz - require_relative 'dal' # dal.rb - include SiSU_DAL + require_relative 'ao' # ao.rb + include SiSU_AO include SiSU_TeX def initialize(opt) @opt=opt @@ -126,9 +126,9 @@ module SiSU_TeX $flag=@md.opt.cmd #introduced to pass 0 for no object citation numbers... to texpdf_format directories #% needed needs to be reprogrammed !!! - dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here + ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here SiSU_TeX::Source::LaTeXcreate.new(@particulars).songsheet - dal_array='' + ao_array='' pwd=Dir.pwd SiSU_TeX::Source::LaTeXtoPdf.new(@md,@particulars.env).latexrun_selective Dir.chdir(pwd) @@ -339,7 +339,7 @@ module SiSU_TeX @particulars=particulars @md=@particulars.md @env=SiSU_Env::InfoEnv.new(@md.fns) #@env=@particulars.env - @data=@particulars.dal_array # dal file drawn here + @data=@particulars.ao_array # ao file drawn here @st={ tex: {} } @tex_ml=SiSU_TeX_Pdf::UseTeX.new(@md) @vz=SiSU_Viz::Defaults.new @@ -1042,7 +1042,7 @@ module SiSU_TeX file[:landscape].puts morph,"\n" end end - elsif morph.class.inspect =~ /SiSU_DAL_DocumentStructure/ \ + elsif morph.class.inspect =~ /SiSU_AO_DocumentStructure/ \ and morph.tmp \ and morph.tmp.is_a?(String) if morph.is !=:code \ diff --git a/lib/sisu/v5/texpdf_format.rb b/lib/sisu/v5/texpdf_format.rb index b20105af..556de8a6 100644 --- a/lib/sisu/v5/texpdf_format.rb +++ b/lib/sisu/v5/texpdf_format.rb @@ -168,7 +168,7 @@ module SiSU_TeX_Pdf end rows_new << r end - table=rows_new.join #@dob[:dal].obj=rows.join + table=rows_new.join #@dob[:ao].obj=rows.join ocn_display(@dob) + start_table + table + " #{end_table}\n\\end{tiny}" else '' end @@ -213,7 +213,7 @@ module SiSU_TeX_Pdf end rows_new << r end - table=rows_new.join #@dob[:dal].obj=rows.join + table=rows_new.join #@dob[:ao].obj=rows.join ocn_display(@dob) + start_table + table + " #{end_table}\n\\end{tiny}" else '' end diff --git a/lib/sisu/v5/txt_asciidoc.rb b/lib/sisu/v5/txt_asciidoc.rb new file mode 100644 index 00000000..114252b1 --- /dev/null +++ b/lib/sisu/v5/txt_asciidoc.rb @@ -0,0 +1,588 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.sisudoc.org/sisu/en/SiSU/download.html> + + * Git + <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/plaintext_asciidoc.rb;hb=HEAD> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: plaintext (smarttext) generation, asciidoc + +=end +module SiSU_Txt_asciiDoc + require_relative 'ao' # ao.rb + require_relative 'sysenv' # sysenv.rb + include SiSU_Env + require_relative 'shared_metadata' # shared_metadata.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_Param + include SiSU_Viz + @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@tablefoot='' + class Source + def initialize(opt) + @opt=opt + unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ + puts "#{sf} not a processed file type" + end + end + def read + begin + md=SiSU_Param::Parameters.new(@opt).get + env=SiSU_Env::InfoEnv.new(@opt.fns) + unless @opt.act[:quiet][:set]==:on + tool=(@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? "#{env.program.text_editor} #{md.file.output_path.asciidoc.dir}/#{md.file.base_filename.asciidoc}" + : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" + (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'asciiDoc (plaintext utf-8)',tool).green_hi_blue + : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'asciiDoc (plaintext utf-8)',tool).green_title_hi + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{md.file.output_path.asciidoc.dir}/#{md.file.base_filename.asciidoc}").flow + end + end + ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here + wrap_width=if defined? md.make.plaintext_wrap \ + and md.make.plaintext_wrap + md.make.plaintext_wrap + elsif defined? env.plaintext_wrap \ + and env.plaintext_wrap + env.plaintext_wrap + else 78 + end + #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 + SiSU_Txt_asciiDoc::Source::Scroll.new(md,ao_array,wrap_width).songsheet + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + class Scroll <Source + require_relative 'defaults' # defaults.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_TextUtils + @@endnotes={ para: [], end: [] } + def initialize(md,data,wrap_width) + @md,@data,@wrap_width=md,data,wrap_width + @env=SiSU_Env::InfoEnv.new(@md.fns) + @brace_url=SiSU_Viz::Defaults.new.url_decoration + @tab="\t" + @@endnotes_=case md.opt.mod.inspect + when /--footnote/; false + when /--endnote/; true + else true + end + @plaintext={ body: [], open: [], close: [], head: [], metadata: [], tail: [] } + end + def songsheet + plaintext=markup(@data) + publish(plaintext) + end + def break_line + "\n" + end + # Used for extraction of endnotes from paragraphs + def extract_endnotes(dob='') + notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/) + @n=[] + notes.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider + n=n.dup.to_s + if n =~/#{Mx[:br_line]}|#{Mx[:br_nl]}/ + fix = n.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/) #watch #added + fix.each do |x| + unless x.empty?; @n << x + end + end + else @n << n + end + end + notes=@n.flatten + notes.each do |e| + util=(e.to_s =~/^\[[\d*+]+\]:/) \ + ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1)) + : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,1,1)) + wrap=util.line_wrap + wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m + wrap.gsub(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<-GSUB +\\1[\\2]: \\3 + GSUB + ) + else + wrap.gsub(/^(.+)\Z/m, <<-GSUB +\\1 + GSUB + ) + end + @@endnotes[:para] << "-#{wrap}" + @@endnotes[:end] << '' << wrap + end + @@endnotes + end + def plaintext_metadata + array=SiSU_Metadata::Summary.new(@md).plaintext.metadata + array.each do |meta| + tag,inf=meta.scan(/^.+?:\s|.+/) + if tag and inf + util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1) + txt=util.line_wrap + @plaintext[:metadata] <<<<WOK + +#{@tab}#{tag}#{txt} +WOK + end + end + end + def plaintext_tail +# env=SiSU_Env::InfoEnv.new(@md.fns) + vz=SiSU_Viz::Defaults.new + generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version] + lastdone="Last Generated on: #{Time.now}" + rubyv="Ruby version: #{@md.ruby_version}" + sc=if @md.sc_info + "Source file: #{@md.sc_filename}#{break_line}Version number: #{@md.sc_number}#{break_line}Version date: #{@md.sc_date}#{break_line}" + else '' + end + @plaintext[:tail] <<<<WOK +#{break_line} +plaintext (plain text): + #{@md.file.output_path.asciidoc.url}/#{@md.file.base_filename.asciidoc}#{break_line} +Other versions of this document: #{break_line} +manifest: + #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{break_line} +at: + #{@md.file.output_path.base.url}#{break_line} + +#{sc} +* #{generator} +* #{rubyv} +* #{lastdone} +* SiSU #{vz.url_sisu} +WOK + end + def decorate + def heading + def inline + def l1 + '==' + end + def l2 + '===' + end + def l3 + '====' + end + def l4 + '=====' + end + def l5 + '' #'======' #logical + end + def l6 + '' #'=======' #logical + end + self + end + def underscore + def l1 + '-' + end + def l2 + '~' + end + def l3 + '^' + end + def l4 + '+' + end + def l5 + '' #'.' #proposed + end + def l6 + '' #'.' #proposed + end + self + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '_' + end + def close + '_' + end + self + end + def underscore + def open + '' + end + def close + '' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '' + end + def close + '' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '~' + end + def close + '~' + end + self + end + def hilite #bold + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '+' + end + def close + '+' + end + self + end + self + end + def heading_decorated_inline(dob) + if dob.is==:heading + heading_inline = case dob.lc + when 1 then decorate.heading.inline.l1 + when 2 then decorate.heading.inline.l2 + when 3 then decorate.heading.inline.l3 + when 4 then decorate.heading.inline.l4 + when 5 then decorate.heading.inline.l5 + when 6 then decorate.heading.inline.l6 + end + heading_inline + ' ' + dob.obj + ' ' + heading_inline + end + end + def heading_decorated_underscore(dob,times,p_num) + if dob.is==:heading + #times=@wrap_width if times > @wrap_width + case dob.lc + when 1 then decorate.heading.underscore.l1*times + p_num << break_line*2 + when 2 then decorate.heading.underscore.l2*times + p_num << break_line*2 + when 3 then decorate.heading.underscore.l3*times + p_num << break_line*2 + when 4 then decorate.heading.underscore.l4*times + p_num << break_line*2 + when 5 then decorate.heading.underscore.l5*times + p_num << break_line*2 + when 6 then decorate.heading.underscore.l6*times + p_num << break_line*2 + end + end + end + def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document + heading_decoration=:inline #(:inline|:underscore) #switch heading decoration between inline & underscore options + util=nil + wrapped=if dob.is==:para \ + || dob.is==:heading + if dob.is==:heading + util=(heading_decoration== :inline) \ + ? (SiSU_TextUtils::Wrap.new(heading_decorated_inline(dob),@wrap_width,0)) + : (SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)) + elsif dob.is==:para + if dob.hang \ + and dob.hang =~/[0-9]/ \ + and dob.indent != dob.hang + util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2) + #util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0) + elsif dob.indent =~/[1-9]/ + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2) + end + else + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + end + else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + dob.is==:heading ? util.no_wrap_no_breaks : util.line_wrap + end + if heading_decoration== :underscore \ + and dob.is==:heading + @plaintext[:body] << wrapped + p_num # main text, contents, body KEEP + @plaintext[:body] << heading_decorated_underscore(dob,wrapped.length,p_num) + else + @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP + end + if @@endnotes[:para] \ + and not @@endnotes_ + @@endnotes[:para].each {|e| @plaintext[:body] << e << break_line} + elsif @@endnotes[:para] \ + and @@endnotes_ + end + @@endnotes[:para]=[] + end + def markup(data) # Used for major markup instructions + SiSU_Env::InfoEnv.new(@md.fns) + @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]} + (0..6).each { |x| @cont[x]=@level[x]=false } + (4..6).each { |x| @plaintext_contents_close[x]='' } + plaintext_tail #($1,$2) + plaintext_metadata + table_message='[table conversion awaited, see other document formats]' + data.each do |dob| + dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix + gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]# + gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, + "#{decorate.bold.open}\\1#{decorate.bold.close}"). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/, + "#{decorate.italics.open}\\1#{decorate.italics.close}"). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/, + "#{decorate.underscore.open}\\1#{decorate.underscore.close}"). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/, + "#{decorate.subscript.open}\\1#{decorate.subscript.close}"). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/, + "#{decorate.superscript.open}\\1#{decorate.superscript.close}"). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/, + "#{decorate.insert.open}\\1#{decorate.insert.close}"). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/, + "#{decorate.cite.open}\\1#{decorate.cite.close}"). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/, + "#{decorate.strike.open}\\1#{decorate.strike.close}"). + gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/, + "#{decorate.monospace.open}\\1#{decorate.monospace.close}") + unless dob.is==:code + dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). + gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]'). + gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{@brace_url.txt_open}\\1#{@brace_url.txt_close}") + extract_endnotes(dob) + dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©'). + gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\') + end + dob.obj=if dob.of==:block # watch + dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* "). + gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line) + else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2) + end + if dob.is==:code + dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< + gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_< + end + dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/<a href=".+?">(.+?)<\/a>/m,'\1'). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links + gsub(/ |#{Mx[:nbsp]}/,' '). # decide on + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). + gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') + if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ + p_num='' + #ocn + if dob.is==:heading \ + or dob.is==:para + plaintext_structure(dob,p_num) + elsif dob.is==:group \ + or dob.is==:block \ + or dob.is==:verse \ + or dob.is==:code \ + or dob.is==:table + @plaintext[:body] << dob.obj + p_num << break_line + elsif dob.is==:break + sp=' ' + ln='-' + @plaintext[:body] <<=if dob.obj==Mx[:br_page] \ + or dob.obj==Mx[:br_page_new] \ + or dob.obj==Mx[:br_page_line] + "#{break_line}#{ln*40}#{break_line*2}" + elsif dob.obj ==Mx[:br_obj] + "#{break_line}#{sp*20}* * *#{break_line*2}" + end # following empty line (break_line) missing, fix + end + dob='' if (dob.obj =~/<a name="n\d+">/ \ + and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote + if dob ## Clean Prepared Text + dob.obj=dob.obj.gsub(/<!.+!>/,' '). + gsub(/<:\S+>/,' ') + end + end + end + @plaintext + end + def publish(plaintext) + divider='=' + content=[] + content << plaintext[:open] + content << plaintext[:head] + content << plaintext[:body] + content << @@endnotes[:end] if @@endnotes_ + content << "#{break_line}#{divider*@wrap_width}#{break_line}" + content << plaintext[:metadata] + content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used? + content << plaintext[:tail] + Output.new(content,@md).asciidoc + @@endnotes={ para: [], end: [] } + end + end + class Output <Source + include SiSU_Param + include SiSU_Env + def initialize(content,md) + @content,@md=content,md + end + def asciidoc + file_plaintext=SiSU_Env::FileOp.new(@md).write_file.asciidoc + @sisu=[] + emptyline=0 + @content.each do |para| # this is a hack + if para.is_a?(Array) \ + and para.length > 0 + para.each do |line| + if line + line=line.gsub(/[ \t]+$/m,''). + gsub(/^\A[ ]*\Z/m,'') + (line=~/^\A\Z/) \ + ? (emptyline+=1) + : emptyline=0 + if emptyline < 2 #remove additional empty lines + file_plaintext.puts line + end + end + end + else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ + end + end + file_plaintext.close + end + end + end +end +__END__ diff --git a/lib/sisu/v5/txt_markdown.rb b/lib/sisu/v5/txt_markdown.rb new file mode 100644 index 00000000..89ee022d --- /dev/null +++ b/lib/sisu/v5/txt_markdown.rb @@ -0,0 +1,588 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.sisudoc.org/sisu/en/SiSU/download.html> + + * Git + <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/plaintext_markdown.rb;hb=HEAD> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: plaintext (smarttext) generation, markdown + +=end +module SiSU_Txt_Markdown + require_relative 'ao' # ao.rb + require_relative 'sysenv' # sysenv.rb + include SiSU_Env + require_relative 'shared_metadata' # shared_metadata.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_Param + include SiSU_Viz + @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@tablefoot='' + class Source + def initialize(opt) + @opt=opt + unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ + puts "#{sf} not a processed file type" + end + end + def read + begin + md=SiSU_Param::Parameters.new(@opt).get + env=SiSU_Env::InfoEnv.new(@opt.fns) + unless @opt.act[:quiet][:set]==:on + tool=(@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? "#{env.program.text_editor} #{md.file.output_path.markdown.dir}/#{md.file.base_filename.markdown}" + : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" + (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Markdown (plaintext utf-8)',tool).green_hi_blue + : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Markdown (plaintext utf-8)',tool).green_title_hi + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{md.file.output_path.markdown.dir}/#{md.file.base_filename.markdown}").flow + end + end + ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here + wrap_width=if defined? md.make.plaintext_wrap \ + and md.make.plaintext_wrap + md.make.plaintext_wrap + elsif defined? env.plaintext_wrap \ + and env.plaintext_wrap + env.plaintext_wrap + else 78 + end + #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 + SiSU_Txt_Markdown::Source::Scroll.new(md,ao_array,wrap_width).songsheet + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + class Scroll <Source + require_relative 'defaults' # defaults.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_TextUtils + @@endnotes={ para: [], end: [] } + def initialize(md,data,wrap_width) + @md,@data,@wrap_width=md,data,wrap_width + @env=SiSU_Env::InfoEnv.new(@md.fns) + @brace_url=SiSU_Viz::Defaults.new.url_decoration + @tab="\t" + @@endnotes_=case md.opt.mod.inspect + when /--footnote/; false + when /--endnote/; true + else true + end + @plaintext={ body: [], open: [], close: [], head: [], metadata: [], tail: [] } + end + def songsheet + plaintext=markup(@data) + publish(plaintext) + end + def break_line + "\n" + end + # Used for extraction of endnotes from paragraphs + def extract_endnotes(dob='') + notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/) + @n=[] + notes.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider + n=n.dup.to_s + if n =~/#{Mx[:br_line]}|#{Mx[:br_nl]}/ + fix = n.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/) #watch #added + fix.each do |x| + unless x.empty?; @n << x + end + end + else @n << n + end + end + notes=@n.flatten + notes.each do |e| + util=(e.to_s =~/^\[[\d*+]+\]:/) \ + ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1)) + : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,1,1)) + wrap=util.line_wrap + wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m + wrap.gsub(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<-GSUB +\\1[\\2]: \\3 + GSUB + ) + else + wrap.gsub(/^(.+)\Z/m, <<-GSUB +\\1 + GSUB + ) + end + @@endnotes[:para] << "-#{wrap}" + @@endnotes[:end] << '' << wrap + end + @@endnotes + end + def plaintext_metadata + array=SiSU_Metadata::Summary.new(@md).plaintext.metadata + array.each do |meta| + tag,inf=meta.scan(/^.+?:\s|.+/) + if tag and inf + util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1) + txt=util.line_wrap + @plaintext[:metadata] <<<<WOK + +#{@tab}#{tag}#{txt} +WOK + end + end + end + def plaintext_tail +# env=SiSU_Env::InfoEnv.new(@md.fns) + vz=SiSU_Viz::Defaults.new + generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version] + lastdone="Last Generated on: #{Time.now}" + rubyv="Ruby version: #{@md.ruby_version}" + sc=if @md.sc_info + "Source file: #{@md.sc_filename}#{break_line}Version number: #{@md.sc_number}#{break_line}Version date: #{@md.sc_date}#{break_line}" + else '' + end + @plaintext[:tail] <<<<WOK +#{break_line} +plaintext (plain text): + #{@md.file.output_path.markdown.url}/#{@md.file.base_filename.markdown}#{break_line} +Other versions of this document: #{break_line} +manifest: + #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{break_line} +at: + #{@md.file.output_path.base.url}#{break_line} + +#{sc} +* #{generator} +* #{rubyv} +* #{lastdone} +* SiSU #{vz.url_sisu} +WOK + end + def decorate + def heading + def inline #atx + def l1 + '#' + end + def l2 + '##' + end + def l3 + '###' + end + def l4 + '####' + end + def l5 + '#####' + end + def l6 + '######' + end + self + end + def underscore #Setext + def l1 + '=' + end + def l2 + '-' + end + def l3 + '' + end + def l4 + '' + end + def l5 + '' + end + def l6 + '' + end + self + end + self + end + def bold + def open + '**' + end + def close + '**' + end + self + end + def italics + def open + '*' + end + def close + '*' + end + self + end + def underscore + def open + '_' + end + def close + '_' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '+' + end + def close + '+' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '[' + end + def close + ']' + end + self + end + def hilite + def open + '**' + end + def close + '**' + end + self + end + def monospace + def open + '`' + end + def close + '`' + end + self + end + self + end + def heading_decorated_inline(dob) + if dob.is==:heading + heading_inline = case dob.lc + when 1 then decorate.heading.inline.l1 + when 2 then decorate.heading.inline.l2 + when 3 then decorate.heading.inline.l3 + when 4 then decorate.heading.inline.l4 + when 5 then decorate.heading.inline.l5 + when 6 then decorate.heading.inline.l6 + end + heading_inline + ' ' + dob.obj + ' ' + heading_inline + end + end + def heading_decorated_underscore(dob,times,p_num) + if dob.is==:heading + #times=@wrap_width if times > @wrap_width + case dob.lc + when 1 then decorate.heading.underscore.l1*times + p_num << break_line*2 + when 2 then decorate.heading.underscore.l2*times + p_num << break_line*2 + when 3 then decorate.heading.underscore.l3*times + p_num << break_line*2 + when 4 then decorate.heading.underscore.l4*times + p_num << break_line*2 + when 5 then decorate.heading.underscore.l5*times + p_num << break_line*2 + when 6 then decorate.heading.underscore.l6*times + p_num << break_line*2 + end + end + end + def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document + heading_decoration=:inline #(:inline|:underscore) #switch heading decoration between inline & underscore options + util=nil + wrapped=if dob.is==:para \ + || dob.is==:heading + if dob.is==:heading + util=(heading_decoration== :inline) \ + ? (SiSU_TextUtils::Wrap.new(heading_decorated_inline(dob),@wrap_width,0)) + : (SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)) + elsif dob.is==:para + if dob.hang \ + and dob.hang =~/[0-9]/ \ + and dob.indent != dob.hang + util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2) + #util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0) + elsif dob.indent =~/[1-9]/ + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2) + end + else + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + end + else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + dob.is==:heading ? util.no_wrap_no_breaks : util.line_wrap + end + if heading_decoration== :underscore \ + and dob.is==:heading + @plaintext[:body] << wrapped + p_num # main text, contents, body KEEP + @plaintext[:body] << heading_decorated_underscore(dob,wrapped.length,p_num) + else + @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP + end + if @@endnotes[:para] \ + and not @@endnotes_ + @@endnotes[:para].each {|e| @plaintext[:body] << e << break_line} + elsif @@endnotes[:para] \ + and @@endnotes_ + end + @@endnotes[:para]=[] + end + def markup(data) # Used for major markup instructions + SiSU_Env::InfoEnv.new(@md.fns) + @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]} + (0..6).each { |x| @cont[x]=@level[x]=false } + (4..6).each { |x| @plaintext_contents_close[x]='' } + plaintext_tail #($1,$2) + plaintext_metadata + table_message='[table conversion awaited, see other document formats]' + data.each do |dob| + dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix + gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]# + gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, + "#{decorate.bold.open}\\1#{decorate.bold.close}"). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/, + "#{decorate.italics.open}\\1#{decorate.italics.close}"). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/, + "#{decorate.underscore.open}\\1#{decorate.underscore.close}"). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/, + "#{decorate.subscript.open}\\1#{decorate.subscript.close}"). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/, + "#{decorate.superscript.open}\\1#{decorate.superscript.close}"). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/, + "#{decorate.insert.open}\\1#{decorate.insert.close}"). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/, + "#{decorate.cite.open}\\1#{decorate.cite.close}"). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/, + "#{decorate.strike.open}\\1#{decorate.strike.close}"). + gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/, + "#{decorate.monospace.open}\\1#{decorate.monospace.close}") + unless dob.is==:code + dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). + gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]'). + gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{@brace_url.txt_open}\\1#{@brace_url.txt_close}") + extract_endnotes(dob) + dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©'). + gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\') + end + dob.obj=if dob.of==:block # watch + dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* "). + gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line) + else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2) + end + if dob.is==:code + dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< + gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_< + end + dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/<a href=".+?">(.+?)<\/a>/m,'\1'). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links + gsub(/ |#{Mx[:nbsp]}/,' '). # decide on + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). + gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') + if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ + p_num='' + #ocn + if dob.is==:heading \ + or dob.is==:para + plaintext_structure(dob,p_num) + elsif dob.is==:group \ + or dob.is==:block \ + or dob.is==:verse \ + or dob.is==:code \ + or dob.is==:table + @plaintext[:body] << dob.obj + p_num << break_line + elsif dob.is==:break + sp=' ' + ln='-' + @plaintext[:body] <<=if dob.obj==Mx[:br_page] \ + or dob.obj==Mx[:br_page_new] \ + or dob.obj==Mx[:br_page_line] + "#{break_line}#{ln*40}#{break_line*2}" + elsif dob.obj ==Mx[:br_obj] + "#{break_line}#{sp*20}* * *#{break_line*2}" + end # following empty line (break_line) missing, fix + end + dob='' if (dob.obj =~/<a name="n\d+">/ \ + and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote + if dob ## Clean Prepared Text + dob.obj=dob.obj.gsub(/<!.+!>/,' '). + gsub(/<:\S+>/,' ') + end + end + end + @plaintext + end + def publish(plaintext) + divider='=' + content=[] + content << plaintext[:open] + content << plaintext[:head] + content << plaintext[:body] + content << @@endnotes[:end] if @@endnotes_ + content << "#{break_line}#{divider*@wrap_width}#{break_line}" + content << plaintext[:metadata] + content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used? + content << plaintext[:tail] + Output.new(content,@md).markdown + @@endnotes={ para: [], end: [] } + end + end + class Output <Source + include SiSU_Param + include SiSU_Env + def initialize(content,md) + @content,@md=content,md + end + def markdown + file_plaintext=SiSU_Env::FileOp.new(@md).write_file.markdown + @sisu=[] + emptyline=0 + @content.each do |para| # this is a hack + if para.is_a?(Array) \ + and para.length > 0 + para.each do |line| + if line + line=line.gsub(/[ \t]+$/m,''). + gsub(/^\A[ ]*\Z/m,'') + (line=~/^\A\Z/) \ + ? (emptyline+=1) + : emptyline=0 + if emptyline < 2 #remove additional empty lines + file_plaintext.puts line + end + end + end + else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ + end + end + file_plaintext.close + end + end + end +end +__END__ diff --git a/lib/sisu/v5/plaintext.rb b/lib/sisu/v5/txt_plain.rb index b82013aa..0cd50254 100644 --- a/lib/sisu/v5/plaintext.rb +++ b/lib/sisu/v5/txt_plain.rb @@ -60,14 +60,12 @@ linefeed) =end -module SiSU_Plaintext - require_relative 'dal' # dal.rb +module SiSU_Txt_Plain + require_relative 'ao' # ao.rb require_relative 'sysenv' # sysenv.rb include SiSU_Env - require_relative 'plaintext_format' # plaintext_format.rb - include SiSU_Plaintext_Format require_relative 'shared_metadata' # shared_metadata.rb - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb include SiSU_Param include SiSU_Viz @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 @@ -99,7 +97,7 @@ module SiSU_Plaintext SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{md.file.output_path.txt.dir}/#{md.file.base_filename.txt}").flow end end - dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here + ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here wrap_width=if defined? md.make.plaintext_wrap \ and md.make.plaintext_wrap md.make.plaintext_wrap @@ -109,7 +107,7 @@ module SiSU_Plaintext else 78 end #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 - SiSU_Plaintext::Source::Scroll.new(md,dal_array,wrap_width).songsheet + SiSU_Txt_Plain::Source::Scroll.new(md,ao_array,wrap_width).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -120,7 +118,7 @@ module SiSU_Plaintext private class Scroll <Source require_relative 'defaults' # defaults.rb - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils @@endnotes={ para: [], end: [] } def initialize(md,data,wrap_width) @@ -133,13 +131,15 @@ module SiSU_Plaintext when /--endnote/; true else true end - @br="\n" @plaintext={ body: [], open: [], close: [], head: [], metadata: [], tail: [] } end def songsheet plaintext=markup(@data) publish(plaintext) end + def break_line + "\n" + end # Used for extraction of endnotes from paragraphs def extract_endnotes(dob='') notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/) @@ -198,18 +198,18 @@ WOK lastdone="Last Generated on: #{Time.now}" rubyv="Ruby version: #{@md.ruby_version}" sc=if @md.sc_info - "Source file: #{@md.sc_filename}#{@br}Version number: #{@md.sc_number}#{@br}Version date: #{@md.sc_date}#{@br}" + "Source file: #{@md.sc_filename}#{break_line}Version number: #{@md.sc_number}#{break_line}Version date: #{@md.sc_date}#{break_line}" else '' end @plaintext[:tail] <<<<WOK -#{@br} +#{break_line} plaintext (plain text): - #{@md.file.output_path.txt.url}/#{@md.file.base_filename.txt}#{@br} -Other versions of this document: #{@br} + #{@md.file.output_path.txt.url}/#{@md.file.base_filename.txt}#{break_line} +Other versions of this document: #{break_line} manifest: - #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{@br} + #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{break_line} at: - #{@md.file.output_path.base.url}#{@br} + #{@md.file.output_path.base.url}#{break_line} #{sc} * #{generator} @@ -376,24 +376,34 @@ WOK times=wrapped.length times=@wrap_width if times > @wrap_width @plaintext[:body] << case lv - when 1; wrapped.upcase << @br << decorate.heading_underscore.l1*times + p_num << @br*2 - when 2; wrapped.upcase << @br << decorate.heading_underscore.l2*times + p_num << @br*2 - when 3; wrapped.upcase << @br << decorate.heading_underscore.l3*times + p_num << @br*2 - when 4; wrapped.upcase << @br << decorate.heading_underscore.l4*times + p_num << @br*2 - when 5; wrapped.upcase << @br << decorate.heading_underscore.l5*times + p_num << @br*2 - when 6; wrapped.upcase << @br << decorate.heading_underscore.l6*times + p_num << @br*2 + when 1; wrapped.upcase << break_line << decorate.heading_underscore.l1*times + p_num << break_line*2 + when 2; wrapped.upcase << break_line << decorate.heading_underscore.l2*times + p_num << break_line*2 + when 3; wrapped.upcase << break_line << decorate.heading_underscore.l3*times + p_num << break_line*2 + when 4; wrapped.upcase << break_line << decorate.heading_underscore.l4*times + p_num << break_line*2 + when 5; wrapped.upcase << break_line << decorate.heading_underscore.l5*times + p_num << break_line*2 + when 6; wrapped.upcase << break_line << decorate.heading_underscore.l6*times + p_num << break_line*2 end else - @plaintext[:body] << wrapped + p_num << @br # main text, contents, body KEEP + @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP end if @@endnotes[:para] \ and not @@endnotes_ - @@endnotes[:para].each {|e| @plaintext[:body] << e << @br} + @@endnotes[:para].each {|e| @plaintext[:body] << e << break_line} elsif @@endnotes[:para] \ and @@endnotes_ end @@endnotes[:para]=[] end + def ocn_display(dob) + if @env.plaintext_ocn? + if defined? dob.ocn \ + and dob.ocn.is_a?(Fixnum) + (defined? dob.ocn) ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" : '' + else '' + end + else '' + end + end def markup(data) # Used for major markup instructions SiSU_Env::InfoEnv.new(@md.fns) @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]} @@ -403,7 +413,7 @@ WOK plaintext_metadata table_message='[table omitted, see other document formats]' data.each do |dob| - dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{@br}#{table_message}"). #fix + dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]# gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, "#{decorate.bold.open}\\1#{decorate.bold.close}"). @@ -449,8 +459,8 @@ WOK end dob.obj=if dob.of==:block # watch dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* "). - gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,@br) - else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,@br*2) + gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line) + else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2) end if dob.is==:code dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< @@ -464,13 +474,7 @@ WOK gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ - p_num='' - if @env.plaintext_ocn? - if defined? dob.ocn \ - and dob.ocn.is_a?(Fixnum) - p_num=SiSU_Plaintext_Format::ParagraphNumber.new(dob.ocn).display - end - end + p_num=ocn_display(dob) if dob.is==:heading \ or dob.is==:para plaintext_structure(dob,p_num) @@ -479,17 +483,17 @@ WOK or dob.is==:verse \ or dob.is==:code \ or dob.is==:table - @plaintext[:body] << dob.obj + p_num << @br + @plaintext[:body] << dob.obj + p_num << break_line elsif dob.is==:break sp=' ' ln='-' @plaintext[:body] <<=if dob.obj==Mx[:br_page] \ or dob.obj==Mx[:br_page_new] \ or dob.obj==Mx[:br_page_line] - "#{@br}#{ln*40}#{@br*2}" + "#{break_line}#{ln*40}#{break_line*2}" elsif dob.obj ==Mx[:br_obj] - "#{@br}#{sp*20}* * *#{@br*2}" - end # following empty line (@br) missing, fix + "#{break_line}#{sp*20}* * *#{break_line*2}" + end # following empty line (break_line) missing, fix end dob='' if (dob.obj =~/<a name="n\d+">/ \ and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote @@ -508,9 +512,9 @@ WOK content << plaintext[:head] content << plaintext[:body] content << @@endnotes[:end] if @@endnotes_ - content << "#{@br}#{divider*@wrap_width}#{@br}" + content << "#{break_line}#{divider*@wrap_width}#{break_line}" content << plaintext[:metadata] - content << "#{@br}#{divider*@wrap_width}#{@br}" if @md.stmp =~/\w+/ #not used? + content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used? content << plaintext[:tail] Output.new(content,@md).plaintext @@endnotes={ para: [], end: [] } diff --git a/lib/sisu/v5/txt_rst.rb b/lib/sisu/v5/txt_rst.rb new file mode 100644 index 00000000..c98bb275 --- /dev/null +++ b/lib/sisu/v5/txt_rst.rb @@ -0,0 +1,550 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.sisudoc.org/sisu/en/SiSU/download.html> + + * Git + <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/plaintext_rst.rb;hb=HEAD> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: plaintext (smarttext) generation, rST + +=end +module SiSU_Txt_rST + require_relative 'ao' # ao.rb + require_relative 'sysenv' # sysenv.rb + include SiSU_Env + require_relative 'shared_metadata' # shared_metadata.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_Param + include SiSU_Viz + @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@tablefoot='' + class Source + def initialize(opt) + @opt=opt + unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ + puts "#{sf} not a processed file type" + end + end + def read + begin + md=SiSU_Param::Parameters.new(@opt).get + env=SiSU_Env::InfoEnv.new(@opt.fns) + unless @opt.act[:quiet][:set]==:on + tool=(@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? "#{env.program.text_editor} #{md.file.output_path.rst.dir}/#{md.file.base_filename.rst}" + : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" + (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'rST (plaintext utf-8)',tool).green_hi_blue + : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'rST (plaintext utf-8)',tool).green_title_hi + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{md.file.output_path.rst.dir}/#{md.file.base_filename.rst}").flow + end + end + ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here + wrap_width=if defined? md.make.plaintext_wrap \ + and md.make.plaintext_wrap + md.make.plaintext_wrap + elsif defined? env.plaintext_wrap \ + and env.plaintext_wrap + env.plaintext_wrap + else 78 + end + #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 + SiSU_Txt_rST::Source::Scroll.new(md,ao_array,wrap_width).songsheet + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + class Scroll <Source + require_relative 'defaults' # defaults.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_TextUtils + @@endnotes={ para: [], end: [] } + def initialize(md,data,wrap_width) + @md,@data,@wrap_width=md,data,wrap_width + @env=SiSU_Env::InfoEnv.new(@md.fns) + @brace_url=SiSU_Viz::Defaults.new.url_decoration + @tab="\t" + @@endnotes_=case md.opt.mod.inspect + when /--footnote/; false + when /--endnote/; true + else true + end + @plaintext={ body: [], open: [], close: [], head: [], metadata: [], tail: [] } + end + def songsheet + plaintext=markup(@data) + publish(plaintext) + end + def break_line + "\n" + end + # Used for extraction of endnotes from paragraphs + def extract_endnotes(dob='') + notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/) + @n=[] + notes.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider + n=n.dup.to_s + if n =~/#{Mx[:br_line]}|#{Mx[:br_nl]}/ + fix = n.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/) #watch #added + fix.each do |x| + unless x.empty?; @n << x + end + end + else @n << n + end + end + notes=@n.flatten + notes.each do |e| + util=(e.to_s =~/^\[[\d*+]+\]:/) \ + ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1)) + : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,1,1)) + wrap=util.line_wrap + wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m + wrap.gsub(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<-GSUB +\\1[\\2]: \\3 + GSUB + ) + else + wrap.gsub(/^(.+)\Z/m, <<-GSUB +\\1 + GSUB + ) + end + @@endnotes[:para] << "-#{wrap}" + @@endnotes[:end] << '' << wrap + end + @@endnotes + end + def plaintext_metadata + array=SiSU_Metadata::Summary.new(@md).plaintext.metadata + array.each do |meta| + tag,inf=meta.scan(/^.+?:\s|.+/) + if tag and inf + util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1) + txt=util.line_wrap + @plaintext[:metadata] <<<<WOK + +#{@tab}#{tag}#{txt} +WOK + end + end + end + def plaintext_tail +# env=SiSU_Env::InfoEnv.new(@md.fns) + vz=SiSU_Viz::Defaults.new + generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version] + lastdone="Last Generated on: #{Time.now}" + rubyv="Ruby version: #{@md.ruby_version}" + sc=if @md.sc_info + "Source file: #{@md.sc_filename}#{break_line}Version number: #{@md.sc_number}#{break_line}Version date: #{@md.sc_date}#{break_line}" + else '' + end + @plaintext[:tail] <<<<WOK +#{break_line} +plaintext (plain text): + #{@md.file.output_path.rst.url}/#{@md.file.base_filename.rst}#{break_line} +Other versions of this document: #{break_line} +manifest: + #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{break_line} +at: + #{@md.file.output_path.base.url}#{break_line} + +#{sc} +* #{generator} +* #{rubyv} +* #{lastdone} +* SiSU #{vz.url_sisu} +WOK + end + def decorate + def heading + def underscore + def l1 + '=' + end + def l2 + '-' + end + def l3 + '`' + end + def l4 + ':' + end + def l5 + "'" + end + def l6 + '"' + end + self + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '/' + end + def close + '/' + end + self + end + def underscore + def open + '_' + end + def close + '_' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '+' + end + def close + '+' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '[' + end + def close + ']' + end + self + end + def hilite + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '#' + end + def close + '#' + end + self + end + self + end + def heading_decorated_underscore(dob,times,p_num) + if dob.is==:heading + #times=@wrap_width if times > @wrap_width + case dob.lc + when 1 then decorate.heading.underscore.l1*times + p_num << break_line*2 + when 2 then decorate.heading.underscore.l2*times + p_num << break_line*2 + when 3 then decorate.heading.underscore.l3*times + p_num << break_line*2 + when 4 then decorate.heading.underscore.l4*times + p_num << break_line*2 + when 5 then decorate.heading.underscore.l5*times + p_num << break_line*2 + when 6 then decorate.heading.underscore.l6*times + p_num << break_line*2 + end + end + end + def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document + util=nil + wrapped=if dob.is==:para \ + || dob.is==:heading + if dob.is==:heading + util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + elsif dob.is==:para + if dob.hang \ + and dob.hang =~/[0-9]/ \ + and dob.indent != dob.hang + util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2) + #util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0) + elsif dob.indent =~/[1-9]/ + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2) + end + else + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + end + else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + dob.is==:heading ? util.no_wrap_no_breaks : util.line_wrap + end + if dob.is==:heading + @plaintext[:body] << wrapped + p_num # main text, contents, body KEEP + @plaintext[:body] << heading_decorated_underscore(dob,wrapped.length,p_num) + else + @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP + end + if @@endnotes[:para] \ + and not @@endnotes_ + @@endnotes[:para].each {|e| @plaintext[:body] << e << break_line} + elsif @@endnotes[:para] \ + and @@endnotes_ + end + @@endnotes[:para]=[] + end + def markup(data) # Used for major markup instructions + SiSU_Env::InfoEnv.new(@md.fns) + @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]} + (0..6).each { |x| @cont[x]=@level[x]=false } + (4..6).each { |x| @plaintext_contents_close[x]='' } + plaintext_tail #($1,$2) + plaintext_metadata + table_message='[table conversion awaited, see other document formats]' + data.each do |dob| + dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix + gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]# + gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, + "#{decorate.bold.open}\\1#{decorate.bold.close}"). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/, + "#{decorate.italics.open}\\1#{decorate.italics.close}"). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/, + "#{decorate.underscore.open}\\1#{decorate.underscore.close}"). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/, + "#{decorate.subscript.open}\\1#{decorate.subscript.close}"). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/, + "#{decorate.superscript.open}\\1#{decorate.superscript.close}"). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/, + "#{decorate.insert.open}\\1#{decorate.insert.close}"). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/, + "#{decorate.cite.open}\\1#{decorate.cite.close}"). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/, + "#{decorate.strike.open}\\1#{decorate.strike.close}"). + gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/, + "#{decorate.monospace.open}\\1#{decorate.monospace.close}") + unless dob.is==:code + dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). + gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]'). + gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{@brace_url.txt_open}\\1#{@brace_url.txt_close}") + extract_endnotes(dob) + dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©'). + gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\') + end + dob.obj=if dob.of==:block # watch + dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* "). + gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line) + else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2) + end + if dob.is==:code + dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< + gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_< + end + dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/<a href=".+?">(.+?)<\/a>/m,'\1'). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links + gsub(/ |#{Mx[:nbsp]}/,' '). # decide on + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). + gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') + if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ + p_num='' + #ocn + if dob.is==:heading \ + or dob.is==:para + plaintext_structure(dob,p_num) + elsif dob.is==:group \ + or dob.is==:block \ + or dob.is==:verse \ + or dob.is==:code \ + or dob.is==:table + @plaintext[:body] << dob.obj + p_num << break_line + elsif dob.is==:break + sp=' ' + ln='-' + @plaintext[:body] <<=if dob.obj==Mx[:br_page] \ + or dob.obj==Mx[:br_page_new] \ + or dob.obj==Mx[:br_page_line] + "#{break_line}#{ln*40}#{break_line*2}" + elsif dob.obj ==Mx[:br_obj] + "#{break_line}#{sp*20}* * *#{break_line*2}" + end # following empty line (break_line) missing, fix + end + dob='' if (dob.obj =~/<a name="n\d+">/ \ + and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote + if dob ## Clean Prepared Text + dob.obj=dob.obj.gsub(/<!.+!>/,' '). + gsub(/<:\S+>/,' ') + end + end + end + @plaintext + end + def publish(plaintext) + divider='=' + content=[] + content << plaintext[:open] + content << plaintext[:head] + content << plaintext[:body] + content << @@endnotes[:end] if @@endnotes_ + content << "#{break_line}#{divider*@wrap_width}#{break_line}" + content << plaintext[:metadata] + content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used? + content << plaintext[:tail] + Output.new(content,@md).rst + @@endnotes={ para: [], end: [] } + end + end + class Output <Source + include SiSU_Param + include SiSU_Env + def initialize(content,md) + @content,@md=content,md + end + def rst + file_plaintext=SiSU_Env::FileOp.new(@md).write_file.rst + @sisu=[] + emptyline=0 + @content.each do |para| # this is a hack + if para.is_a?(Array) \ + and para.length > 0 + para.each do |line| + if line + line=line.gsub(/[ \t]+$/m,''). + gsub(/^\A[ ]*\Z/m,'') + (line=~/^\A\Z/) \ + ? (emptyline+=1) + : emptyline=0 + if emptyline < 2 #remove additional empty lines + file_plaintext.puts line + end + end + end + else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ + end + end + file_plaintext.close + end + end + end +end +__END__ diff --git a/lib/sisu/v5/shared_txt.rb b/lib/sisu/v5/txt_shared.rb index 8e8e7edb..31a976d2 100644 --- a/lib/sisu/v5/shared_txt.rb +++ b/lib/sisu/v5/txt_shared.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/shared_txt.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/txt_shared.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -64,12 +64,14 @@ module SiSU_TextUtils def initialize(para='',n_char_max=76,n_indent=0,n_hang=nil) @para,@n_char_max,@n_indent=para,n_char_max,n_indent @n_char_max_extend = n_char_max - @br="\n" @n_hang=n_hang ? n_hang : @n_indent end + def break_line + "\n" + end def line_wrap space=' ' - spaces_indent,spaces_hang="#{@br}#{space*@n_indent}",space*@n_hang + spaces_indent,spaces_hang="#{break_line}#{space*@n_indent}",space*@n_hang line=0 out=[] out[line]='' @@ -126,6 +128,12 @@ module SiSU_TextUtils end @arr end + def no_wrap + @para + end + def no_wrap_no_breaks + @para.gsub(/\n/m,' ').gsub(/\s\s+/,' ') + end end class HeaderScan def initialize(md,para) diff --git a/lib/sisu/v5/txt_textile.rb b/lib/sisu/v5/txt_textile.rb new file mode 100644 index 00000000..429593cc --- /dev/null +++ b/lib/sisu/v5/txt_textile.rb @@ -0,0 +1,543 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.sisudoc.org/sisu/en/SiSU/download.html> + + * Git + <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/plaintext_textile.rb;hb=HEAD> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: plaintext (smarttext) generation, textile + +=end +module SiSU_Txt_Textile + require_relative 'ao' # ao.rb + require_relative 'sysenv' # sysenv.rb + include SiSU_Env + require_relative 'shared_metadata' # shared_metadata.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_Param + include SiSU_Viz + @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@tablefoot='' + class Source + def initialize(opt) + @opt=opt + unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ + puts "#{sf} not a processed file type" + end + end + def read + begin + md=SiSU_Param::Parameters.new(@opt).get + env=SiSU_Env::InfoEnv.new(@opt.fns) + unless @opt.act[:quiet][:set]==:on + tool=(@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? "#{env.program.text_editor} #{md.file.output_path.textile.dir}/#{md.file.base_filename.textile}" + : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" + (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Textile (plaintext utf-8)',tool).green_hi_blue + : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Textile (plaintext utf-8)',tool).green_title_hi + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{md.file.output_path.textile.dir}/#{md.file.base_filename.textile}").flow + end + end + ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here + wrap_width=if defined? md.make.plaintext_wrap \ + and md.make.plaintext_wrap + md.make.plaintext_wrap + elsif defined? env.plaintext_wrap \ + and env.plaintext_wrap + env.plaintext_wrap + else 78 + end + #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 + SiSU_Txt_Textile::Source::Scroll.new(md,ao_array,wrap_width).songsheet + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + class Scroll <Source + require_relative 'defaults' # defaults.rb + require_relative 'txt_shared' # txt_shared.rb + include SiSU_TextUtils + @@endnotes={ para: [], end: [] } + def initialize(md,data,wrap_width) + @md,@data,@wrap_width=md,data,wrap_width + @env=SiSU_Env::InfoEnv.new(@md.fns) + @brace_url=SiSU_Viz::Defaults.new.url_decoration + @tab="\t" + @@endnotes_=case md.opt.mod.inspect + when /--footnote/; false + when /--endnote/; true + else true + end + @plaintext={ body: [], open: [], close: [], head: [], metadata: [], tail: [] } + end + def songsheet + plaintext=markup(@data) + publish(plaintext) + end + def break_line + "\n" + end + # Used for extraction of endnotes from paragraphs + def extract_endnotes(dob='') + notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/) + @n=[] + notes.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider + n=n.dup.to_s + if n =~/#{Mx[:br_line]}|#{Mx[:br_nl]}/ + fix = n.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/) #watch #added + fix.each do |x| + unless x.empty?; @n << x + end + end + else @n << n + end + end + notes=@n.flatten + notes.each do |e| + util=(e.to_s =~/^\[[\d*+]+\]:/) \ + ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1)) + : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,1,1)) + wrap=util.line_wrap + wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m + wrap.gsub(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<-GSUB +\\1[\\2]: \\3 + GSUB + ) + else + wrap.gsub(/^(.+)\Z/m, <<-GSUB +\\1 + GSUB + ) + end + @@endnotes[:para] << "-#{wrap}" + @@endnotes[:end] << '' << wrap + end + @@endnotes + end + def plaintext_metadata + array=SiSU_Metadata::Summary.new(@md).plaintext.metadata + array.each do |meta| + tag,inf=meta.scan(/^.+?:\s|.+/) + if tag and inf + util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1) + txt=util.line_wrap + @plaintext[:metadata] <<<<WOK + +#{@tab}#{tag}#{txt} +WOK + end + end + end + def plaintext_tail +# env=SiSU_Env::InfoEnv.new(@md.fns) + vz=SiSU_Viz::Defaults.new + generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version] + lastdone="Last Generated on: #{Time.now}" + rubyv="Ruby version: #{@md.ruby_version}" + sc=if @md.sc_info + "Source file: #{@md.sc_filename}#{break_line}Version number: #{@md.sc_number}#{break_line}Version date: #{@md.sc_date}#{break_line}" + else '' + end + @plaintext[:tail] <<<<WOK +#{break_line} +plaintext (plain text): + #{@md.file.output_path.textile.url}/#{@md.file.base_filename.textile}#{break_line} +Other versions of this document: #{break_line} +manifest: + #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{break_line} +at: + #{@md.file.output_path.base.url}#{break_line} + +#{sc} +* #{generator} +* #{rubyv} +* #{lastdone} +* SiSU #{vz.url_sisu} +WOK + end + def decorate + def heading + def inline + def l1 + 'h1. ' + end + def l2 + 'h2. ' + end + def l3 + 'h3. ' + end + def l4 + 'h4. ' + end + def l5 + 'h5. ' + end + def l6 + 'h6. ' + end + self + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '_' + end + def close + '_' + end + self + end + def underscore + def open + '+' + end + def close + '+' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '' + end + def close + '' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '~' + end + def close + '~' + end + self + end + def hilite + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '' + end + def close + '' + end + self + end + self + end + def heading_decorated_inline(dob) + heading_inline = case dob.lc + when 1; decorate.heading.inline.l1 + when 2; decorate.heading.inline.l2 + when 3; decorate.heading.inline.l3 + when 4; decorate.heading.inline.l4 + when 5; decorate.heading.inline.l5 + when 6; decorate.heading.inline.l6 + end + heading_inline + ' ' + dob.obj + end + def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document + util=nil + wrapped=if dob.is==:para \ + || dob.is==:heading + if dob.is==:heading + util=SiSU_TextUtils::Wrap.new(heading_decorated_inline(dob),@wrap_width,0,0) + elsif dob.is==:para + if dob.hang \ + and dob.hang =~/[0-9]/ \ + and dob.indent != dob.hang + util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2) + #util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0) + elsif dob.indent =~/[1-9]/ + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2) + end + else + util=if dob.bullet_ + SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0) + else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + end + else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0) + end + dob.is==:heading ? util.no_wrap_no_breaks : util.line_wrap + end + @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP + if @@endnotes[:para] \ + and not @@endnotes_ + @@endnotes[:para].each {|e| @plaintext[:body] << e << break_line} + elsif @@endnotes[:para] \ + and @@endnotes_ + end + @@endnotes[:para]=[] + end + def markup(data) # Used for major markup instructions + SiSU_Env::InfoEnv.new(@md.fns) + @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]} + (0..6).each { |x| @cont[x]=@level[x]=false } + (4..6).each { |x| @plaintext_contents_close[x]='' } + plaintext_tail #($1,$2) + plaintext_metadata + table_message='[table conversion awaited, see other document formats]' + data.each do |dob| + dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix + gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]# + gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, + "#{decorate.bold.open}\\1#{decorate.bold.close}"). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/, + "#{decorate.italics.open}\\1#{decorate.italics.close}"). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/, + "#{decorate.underscore.open}\\1#{decorate.underscore.close}"). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/, + "#{decorate.subscript.open}\\1#{decorate.subscript.close}"). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/, + "#{decorate.superscript.open}\\1#{decorate.superscript.close}"). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/, + "#{decorate.insert.open}\\1#{decorate.insert.close}"). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/, + "#{decorate.cite.open}\\1#{decorate.cite.close}"). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/, + "#{decorate.strike.open}\\1#{decorate.strike.close}"). + gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/, + "#{decorate.monospace.open}\\1#{decorate.monospace.close}") + unless dob.is==:code + dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). + gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]'). + gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{@brace_url.txt_open}\\1#{@brace_url.txt_close}") + extract_endnotes(dob) + dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©'). + gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\') + end + dob.obj=if dob.of==:block # watch + dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* "). + gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line) + else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2) + end + if dob.is==:code + dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< + gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_< + end + dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/<a href=".+?">(.+?)<\/a>/m,'\1'). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links + gsub(/ |#{Mx[:nbsp]}/,' '). # decide on + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). + gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') + if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ + p_num='' + #ocn + if dob.is==:heading \ + or dob.is==:para + plaintext_structure(dob,p_num) + elsif dob.is==:group \ + or dob.is==:block \ + or dob.is==:verse \ + or dob.is==:code \ + or dob.is==:table + @plaintext[:body] << dob.obj + p_num << break_line + elsif dob.is==:break + sp=' ' + ln='-' + @plaintext[:body] <<=if dob.obj==Mx[:br_page] \ + or dob.obj==Mx[:br_page_new] \ + or dob.obj==Mx[:br_page_line] + "#{break_line}#{ln*40}#{break_line*2}" + elsif dob.obj ==Mx[:br_obj] + "#{break_line}#{sp*20}* * *#{break_line*2}" + end # following empty line (break_line) missing, fix + end + dob='' if (dob.obj =~/<a name="n\d+">/ \ + and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote + if dob ## Clean Prepared Text + dob.obj=dob.obj.gsub(/<!.+!>/,' '). + gsub(/<:\S+>/,' ') + end + end + end + @plaintext + end + def publish(plaintext) + divider='=' + content=[] + content << plaintext[:open] + content << plaintext[:head] + content << plaintext[:body] + content << @@endnotes[:end] if @@endnotes_ + content << "#{break_line}#{divider*@wrap_width}#{break_line}" + content << plaintext[:metadata] + content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used? + content << plaintext[:tail] + Output.new(content,@md).textile + @@endnotes={ para: [], end: [] } + end + end + class Output <Source + include SiSU_Param + include SiSU_Env + def initialize(content,md) + @content,@md=content,md + end + def textile + file_plaintext=SiSU_Env::FileOp.new(@md).write_file.textile + @sisu=[] + emptyline=0 + @content.each do |para| # this is a hack + if para.is_a?(Array) \ + and para.length > 0 + para.each do |line| + if line + line=line.gsub(/[ \t]+$/m,''). + gsub(/^\A[ ]*\Z/m,'') + (line=~/^\A\Z/) \ + ? (emptyline+=1) + : emptyline=0 + if emptyline < 2 #remove additional empty lines + file_plaintext.puts line + end + end + end + else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ + end + end + file_plaintext.close + end + end + end +end +__END__ diff --git a/lib/sisu/v5/urls.rb b/lib/sisu/v5/urls.rb index a7b53985..ce3be66b 100644 --- a/lib/sisu/v5/urls.rb +++ b/lib/sisu/v5/urls.rb @@ -105,7 +105,7 @@ module SiSU_Urls 'h --html (HTML scroll)'=>@fn[:doc], 'I --texinfo (Info file)'=>'info', 'i --manpage (manpage)'=>'manpage', - 'm --dal (Document Abstraction)'=>'dal', + 'm --ao (Document Abstraction)'=>'ao', 'N --hash-digests (Digests md5/sha256)'=>@fn[:digest], 'o --odt (ODF:ODT - Open Document)'=>@fn[:odf], 'p --pdf (PDF landscape)'=>@fn[:pdf_l], @@ -114,6 +114,12 @@ module SiSU_Urls 's --source (sisu markup)'=>@opt.fno, 'S --sisupod (sisupod)'=>@fn[:sisupod], 't --txt (Plain-text (endnotes))'=>@fn[:plain], + ' --textile (textile txt)'=>@fn[:txt_textile], + ' --asciidoc (asciidoc txt)'=>@fn[:txt_asciidoc], + ' --markdown (markdown txt)'=>@fn[:txt_markdown], + ' --rst (rST restructured-text)'=>@fn[:txt_rst], + ' --docbook-book (DocBook Book)'=>@fn[:xml_docbook_book], + ' --fictionbook (Fictionbook)'=>@fn[:xml_fictionbook], 'x --xml-sax (XML sax type)'=>@fn[:sax], 'X --xml-dom (XML dom type)'=>@fn[:dom], ' --xml-scaffold-sisu (XML scaffold)'=>@fn[:xml_scaffold_structure_sisu], @@ -153,6 +159,18 @@ module SiSU_Urls def text(x) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.txt.dir}/#{@md.file.base_filename.txt}").result end + def textile(x) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.textile.dir}/#{@md.file.base_filename.textile}").result + end + def asciidoc(x) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.asciidoc.dir}/#{@md.file.base_filename.asciidoc}").result + end + def markdown(x) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.markdown.dir}/#{@md.file.base_filename.markdown}").result + end + def rst(x) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.rst.dir}/#{@md.file.base_filename.rst}").result + end def epub(x) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.epub_viewer} #{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}").result end @@ -211,6 +229,12 @@ module SiSU_Urls def dom(x) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}").result end + def docbook_book(x) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_docbook_book.dir}/#{@md.file.base_filename.xml_docbook_book}").result + end + def fictionbook(x) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_fictionbook.dir}/#{@md.file.base_filename.xml_fictionbook}").result + end def scaffold_structure_sisu(x) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_scaffold_structure_sisu.dir}/#{@md.file.base_filename.xml_scaffold_structure_sisu}").result end @@ -249,7 +273,7 @@ module SiSU_Urls if x =~/^m/ \ and @opt.cmd=~/m/ \ and x=~/^[#{opt.cmd}]/ - SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"-#{x}","#{@prog.text_editor} #{@env.processing_path.dal}/#{@opt.fns}.meta").maintenance + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"-#{x}","#{@prog.text_editor} #{@env.processing_path.ao}/#{@opt.fns}.meta").maintenance end if x=~/^([hw])/ \ and @opt.cmd=~/[hw]/ \ @@ -310,6 +334,22 @@ module SiSU_Urls and @opt.act[:txt][:set]==:on show.text(x) end + if x=~/--textile\b/ \ + and @opt.act[:txt_textile][:set]==:on + show.textile(x) + end + if x=~/--asciidoc\b/ \ + and @opt.act[:txt_asciidoc][:set]==:on + show.asciidoc(x) + end + if x=~/--markdown\b/ \ + and @opt.act[:txt_markdown][:set]==:on + show.markdown(x) + end + if x=~/--rst\b/ \ + and @opt.act[:txt_rst][:set]==:on + show.rst(x) + end if x=~/--xhtml\b/ \ and @opt.act[:xhtml][:set]==:on show.xhtml(x) @@ -406,6 +446,14 @@ module SiSU_Urls and @opt.act[:xml_sax][:set]==:on show.xml.sax(x) end + if x=~/--docbook-book\b/ \ + and @opt.act[:xml_docbook_book][:set]==:on + show.xml.docbook_book(x) + end + if x=~/--fictionbook\b/ \ + and @opt.act[:xml_fictionbook][:set]==:on + show.xml.fictionbook(x) + end if x=~/--xml-scaffold-sisu\b/ \ and @opt.act[:xml_scaffold_structure_sisu][:set]==:on show.xml.scaffold_structure_sisu(x) diff --git a/lib/sisu/v5/wikispeak.rb b/lib/sisu/v5/wikispeak.rb index da8fc9fa..b87fef61 100644 --- a/lib/sisu/v5/wikispeak.rb +++ b/lib/sisu/v5/wikispeak.rb @@ -60,14 +60,14 @@ =end module SiSU_Wikispeak - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb require_relative 'sysenv' # sysenv.rb include SiSU_Env include SiSU_Param include SiSU_Viz require_relative 'plaintext_format' # plaintext_format.rb include Format - require_relative 'shared_txt' + require_relative 'txt_shared' @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 @@tablefoot='' class Source @@ -90,8 +90,8 @@ module SiSU_Wikispeak || @opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{@env.path.output_tell}/#{@md.fnb}/#{@md.fn[:wiki]}").flow end - @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here - SiSU_Wikispeak::Source::Scroll.new(@dal_array,@md).songsheet + @ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here + SiSU_Wikispeak::Source::Scroll.new(@ao_array,@md).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -149,7 +149,7 @@ module SiSU_Wikispeak end end class Scroll <Source - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils @@endnotes_para=[] @@wiki={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] } diff --git a/lib/sisu/v5/xhtml.rb b/lib/sisu/v5/xhtml.rb index 03ba0134..841ae03e 100644 --- a/lib/sisu/v5/xhtml.rb +++ b/lib/sisu/v5/xhtml.rb @@ -66,7 +66,7 @@ module SiSU_XHTML include SiSU_Particulars require_relative 'sysenv' # sysenv.rb include SiSU_Env - require_relative 'shared_xml' # shared_xml.rb + require_relative 'xml_shared' # xml_shared.rb include SiSU_XML_Munge require_relative 'xml_format' # xml_format.rb include SiSU_XML_Format @@ -82,7 +82,7 @@ module SiSU_XHTML end def read begin - @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array + @env,@md,@ao_array=@particulars.env,@particulars.md,@particulars.ao_array unless @opt.act[:quiet][:set]==:on tool=if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) @@ -113,7 +113,7 @@ module SiSU_XHTML private class Songsheet def initialize(particulars) - @env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars + @env,@md,@ao_array,@particulars=particulars.env,particulars.md,particulars.ao_array,particulars @file=SiSU_Env::FileOp.new(@md) end def song @@ -134,13 +134,13 @@ module SiSU_XHTML end end class Scroll - require_relative 'shared_xhtml' # shared_xhtml.rb #check already called - require_relative 'shared_txt' # shared_txt.rb + require_relative 'xhtml_shared' # xhtml_shared.rb #check already called + require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils require_relative 'css' # css.rb @@xml={ body: [], sisu: [], open: [], close: [], head: [] } def initialize(particulars) - @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array + @env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array @vz=SiSU_Viz::Defaults.new @tab="\t" @trans=SiSU_XML_Munge::Trans.new(@md) @@ -148,7 +148,7 @@ module SiSU_XHTML end def songsheet pre - @data=markup(@dal_array) + @data=markup(@ao_array) post publish end diff --git a/lib/sisu/v5/epub.rb b/lib/sisu/v5/xhtml_epub2.rb index 37ab535b..c54d77ff 100644 --- a/lib/sisu/v5/epub.rb +++ b/lib/sisu/v5/xhtml_epub2.rb @@ -59,20 +59,20 @@ ** Description: epub generation, processing =end -module SiSU_EPUB +module SiSU_XHTML_EPUB2 require 'pstore' require_relative 'particulars' # particulars.rb include SiSU_Particulars require_relative 'defaults' # defaults.rb include SiSU_Viz require_relative 'xhtml_table' # xhtml_table.rb - require_relative 'epub_format' # epub_format.rb - include SiSU_EPUB_Format - require_relative 'epub_segments' # epub_segments.rb - include SiSU_EPUB_Seg - require_relative 'epub_tune' # epub_tune.rb - include SiSU_EPUB_Tune - require_relative 'epub_concordance' # epub_concordance.rb + require_relative 'xhtml_epub2_format' # xhtml_epub2_format.rb + include SiSU_XHTML_EPUB2_Format + require_relative 'xhtml_epub2_segments' # xhtml_epub2_segments.rb + include SiSU_XHTML_EPUB2_Seg + require_relative 'xhtml_epub2_tune' # xhtml_epub2_tune.rb + include SiSU_XHTML_EPUB2_Tune + require_relative 'xhtml_epub2_concordance' # xhtml_epub2_concordance.rb class Source def initialize(opt) @opt=opt @@ -106,13 +106,13 @@ module SiSU_EPUB @env.processing_path.epub_cp_images(@md) data=nil SiSU_Env::FileOp.new(@md).mkdir.output.epub - @tuned_file_array=SiSU_EPUB::Source::XHTML_Environment.new(@particulars).tuned_file_instructions + @tuned_file_array=SiSU_XHTML_EPUB2::Source::XHTML_Environment.new(@particulars).tuned_file_instructions data=@tuned_file_array - toc=SiSU_EPUB::Source::Toc.new(@md,data).songsheet + toc=SiSU_XHTML_EPUB2::Source::Toc.new(@md,data).songsheet data=@tuned_file_array - SiSU_EPUB::Source::ScrollHeadAndSegToc.new(@md,toc).in_common #watch - SiSU_EPUB::Source::Seg.new(@md,data).songsheet - SiSU_EPUB::Source::Output.new(@md).songsheet + SiSU_XHTML_EPUB2::Source::ScrollHeadAndSegToc.new(@md,toc).in_common #watch + SiSU_XHTML_EPUB2::Source::Seg.new(@md,data).songsheet + SiSU_XHTML_EPUB2::Source::Output.new(@md).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -149,13 +149,13 @@ module SiSU_EPUB def tuned_file_instructions @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) directories - dal_array=@particulars.dal_array # dal file drawn here - @tuned_file_array=SiSU_EPUB_Tune::Tune.new(dal_array,@md).songsheet + ao_array=@particulars.ao_array # ao file drawn here + @tuned_file_array=SiSU_XHTML_EPUB2_Tune::Tune.new(ao_array,@md).songsheet @tuned_file_array end end class Endnotes - include SiSU_EPUB_Format + include SiSU_XHTML_EPUB2_Format def initialize(md,data) @md,@data=md,data end @@ -177,7 +177,7 @@ module SiSU_EPUB end endnote_array.flatten.each do |note| txt_obj={ txt: note } - format_scroll=SiSU_EPUB_Format::FormatScroll.new(@md,txt_obj) + format_scroll=SiSU_XHTML_EPUB2_Format::FormatScroll.new(@md,txt_obj) @scr_endnotes << format_scroll.endnote_body end end @@ -193,7 +193,7 @@ module SiSU_EPUB def initialize(md=nil,data='') @md,@data=md,data @vz=SiSU_Viz::Defaults.new - @epub=SiSU_EPUB_Format::HeadInformation.new(@md) + @epub=SiSU_XHTML_EPUB2_Format::HeadInformation.new(@md) @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md @make=SiSU_Env::ProcessingSettings.new(@md) end @@ -262,7 +262,7 @@ module SiSU_EPUB md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_1 + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_1 when 2 @s_b_no +=1 lv_name='section_b' + @s_b_no.to_s @@ -279,7 +279,7 @@ module SiSU_EPUB md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_2 + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_2 when 3 @s_c_no +=1 lv_name='section_c' + @s_c_no.to_s @@ -295,7 +295,7 @@ module SiSU_EPUB md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_3 + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_3 when 4 @ncx_cls=[] lv_name=dob_toc.name @@ -309,7 +309,7 @@ module SiSU_EPUB md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_4 + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_4 when 5 @ncx_cls=[] hashtag='#o' + dob_toc.ocn.to_s @@ -322,7 +322,7 @@ module SiSU_EPUB md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) - SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_5 + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_5 when 6 @ncx_cls=[] hashtag='#o' + dob_toc.ocn.to_s @@ -334,7 +334,7 @@ module SiSU_EPUB md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) - SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_6 + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_6 else nil end toc.each do |k,d| @@ -374,8 +374,8 @@ module SiSU_EPUB @@toc[:opf] << @epub.metadata_opf.guide_open << md_opf_a_guide << @epub.metadata_opf.guide_close @@toc[:opf] << @epub.metadata_opf.package_close @@toc[:opf]=@@toc[:opf].flatten - SiSU_EPUB::Source::Output.new(@md,@@toc[:opf]).epub_metadata_opf - SiSU_EPUB::Source::Output.new(@md,@@toc[:ncx]).epub_toc_ncx + SiSU_XHTML_EPUB2::Source::Output.new(@md,@@toc[:opf]).epub_metadata_opf + SiSU_XHTML_EPUB2::Source::Output.new(@md,@@toc[:ncx]).epub_toc_ncx @md.firstseg=@@firstseg @@toc end @@ -391,7 +391,7 @@ module SiSU_EPUB end toc={} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:seg]=if dob.name =~/^meta/ \ and dob.obj =~/Document Information/ #check format_toc.lev0 @@ -411,7 +411,7 @@ module SiSU_EPUB %{<b><a href="##{link}">#{linkname}</a></b>} end txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:scr]=if dob.name =~/^meta/ \ and dob.obj =~/Document Information/ format_toc.lev0 @@ -424,16 +424,16 @@ module SiSU_EPUB linkname,ocn=dob.obj.strip,dob.ocn if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) end txt_obj={ txt: linkname } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc={} toc[:seg]=format_toc.lev2 if p_num title=%{#{p_num.goto}#{linkname}</a>} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev2 end toc @@ -443,16 +443,16 @@ module SiSU_EPUB linkname,ocn=dob.obj.strip,dob.ocn if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) end txt_obj={ txt: linkname } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc={} toc[:seg]=format_toc.lev3 if p_num title=%{#{p_num.goto}#{linkname}</a>} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev3 end toc @@ -460,7 +460,7 @@ module SiSU_EPUB def level_4 dob=@data linkname,ocn=dob.obj.strip,dob.ocn - p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn + p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) if ocn if dob.ln==4 seg_link=%{ <a href="#{dob.name}#{Sfx[:epub_xhtml]}"> #{dob.obj} @@ -471,14 +471,14 @@ module SiSU_EPUB %{<a href="\\1#{Sfx[:epub_xhtml]}">} + %{\\1 \\2</a> }) end - p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn + p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) if ocn txt_obj={ txt: seg_link } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc={} toc[:seg]=format_toc.lev4 title=%{#{p_num.goto}#{linkname}</a>} if p_num txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev4 toc end @@ -488,16 +488,16 @@ module SiSU_EPUB toc={} if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) lnk_n_txt=%{ <a href="#{@@seg_url}#{Sfx[:epub_xhtml]}#o#{ocn}"> #{linkname} </a>} txt_obj={ txt: lnk_n_txt } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:seg]=format_toc.lev5 title=%{#{p_num.goto}#{linkname}</a>} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev5 end toc @@ -508,16 +508,16 @@ module SiSU_EPUB toc={} if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) lnk_n_txt=%{ <a href="#{@@seg_url}#{Sfx[:epub_xhtml]}#o#{ocn}"> #{linkname} </a>} txt_obj={ txt: lnk_n_txt } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:seg]=format_toc.lev6 title=%{#{p_num.goto}#{linkname}</a>} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev6 end toc @@ -536,7 +536,7 @@ module SiSU_EPUB || @md.opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set],'Scroll & Segtoc').txt_grey end - format_head_toc=SiSU_EPUB_Format::HeadToc.new(@md) + format_head_toc=SiSU_XHTML_EPUB2_Format::HeadToc.new(@md) dochead=format_head_toc.head dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge toc_shared << dochead #<< ads.div.major @@ -544,18 +544,18 @@ module SiSU_EPUB if defined? @md.rights.all \ and @md.rights.all rights=format_head_toc.rights.all - rights=SiSU_EPUB_Tune::CleanXHTML.new(rights).clean + rights=SiSU_XHTML_EPUB2_Tune::CleanXHTML.new(rights).clean end if defined? @md.notes.prefix_b \ and @md.notes.prefix_b prefix_b=format_head_toc.prefix_b - prefix_b=SiSU_EPUB_Tune::CleanXHTML.new(prefix_b).clean + prefix_b=SiSU_XHTML_EPUB2_Tune::CleanXHTML.new(prefix_b).clean end tmp_head=nil doc_title_endnote=@md.title.full.gsub(/(\*+)/,'<sup><a href="#endnotes">\1</a></sup>') tmp_head=doc_title_endnote + "\n" txt_obj={ txt: tmp_head } - format_txt_obj=SiSU_EPUB_Format::FormatTextObject.new(@md,txt_obj) + format_txt_obj=SiSU_XHTML_EPUB2_Format::FormatTextObject.new(@md,txt_obj) toc_shared << format_txt_obj.center_bold segtoc << format_txt_obj.center_bold if defined? @md.creator.author \ @@ -563,7 +563,7 @@ module SiSU_EPUB creator_endnote=@md.creator.author.gsub(/(\*+)/,%{#{$ep[:hsp]}<sup><a href="#notes">\\1</a></sup>}) tmp_head=creator_endnote + "\n" txt_obj={ txt: tmp_head } - format_txt_obj=SiSU_EPUB_Format::FormatTextObject.new(@md,txt_obj) + format_txt_obj=SiSU_XHTML_EPUB2_Format::FormatTextObject.new(@md,txt_obj) toc_shared << format_txt_obj.center_bold segtoc << format_txt_obj.center_bold end @@ -599,8 +599,8 @@ module SiSU_EPUB #Segtoc tail added here segtoc << format_head_toc.xhtml_close segtoc=segtoc.flatten.compact #watch - SiSU_EPUB::Source::Output.new(@md).make_cover_image - SiSU_EPUB::Source::Output.new(@md,segtoc).make_segtoc + SiSU_XHTML_EPUB2::Source::Output.new(@md).make_cover_image + SiSU_XHTML_EPUB2::Source::Output.new(@md,segtoc).make_segtoc segtoc=[] @toc[:scr],@toc[:seg]=[],[] toc_shared @@ -608,13 +608,13 @@ module SiSU_EPUB end class Table < SiSU_XHTML_Table::TableXHTML end - class Seg < SiSU_EPUB_Seg::Seg + class Seg < SiSU_XHTML_EPUB2_Seg::Seg end class Output def initialize(md,output='') @md,@output=md,output @epub_doc="#{@md.fnb}.epub" - @epub_header=SiSU_EPUB_Format::HeadInformation.new(@md) + @epub_header=SiSU_XHTML_EPUB2_Format::HeadInformation.new(@md) @make=SiSU_Env::ProcessingSettings.new(@md) @make_file=SiSU_Env::CreateFile.new(@md.fns) end @@ -638,7 +638,7 @@ module SiSU_EPUB end def css out=@make_file.epub.xhtml_css - out << SiSU_EPUB_Format::CSS.new.css_epub_xhtml + out << SiSU_XHTML_EPUB2_Format::CSS.new.css_epub_xhtml out.close end def epub_toc_ncx @@ -691,7 +691,7 @@ module SiSU_EPUB end end def concordance - SiSU_EPUB_Concordance::Source.new(@md.opt).read + SiSU_XHTML_EPUB2_Concordance::Source.new(@md.opt).read end def output_zip FileUtils::mkdir_p(@md.file.output_path.epub.dir) unless FileTest.directory?(@md.file.output_path.epub.dir) @@ -728,8 +728,8 @@ module SiSU_EPUB <body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en"> <div class="svg_outer"> <div class="svg_inner"> - <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 #{@md.make.cover_image[:w]} #{@md.make.cover_image[:h]}" preserveAspectRatio="xMidYMid meet"> - <image width="#{@md.make.cover_image[:w]}" height="#{@md.make.cover_image[:h]}" xlink:href="image/#{@md.make.cover_image[:cover]}" /> + <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 #{@md.make.cover_image[:w]} #{@md.make.cover_image[:h]}" preserveAspectRatio="xMidYMid meet"> + <image width="#{@md.make.cover_image[:w]}" height="#{@md.make.cover_image[:h]}" xl:href="image/#{@md.make.cover_image[:cover]}" /> </svg> </div> </div> diff --git a/lib/sisu/v5/epub_concordance.rb b/lib/sisu/v5/xhtml_epub2_concordance.rb index 628435f2..5668521b 100644 --- a/lib/sisu/v5/epub_concordance.rb +++ b/lib/sisu/v5/xhtml_epub2_concordance.rb @@ -60,15 +60,15 @@ of words in document) =end -module SiSU_EPUB_Concordance +module SiSU_XHTML_EPUB2_Concordance require_relative 'particulars' # particulars.rb include SiSU_Particulars require_relative 'sysenv' # sysenv.rb include SiSU_Env require_relative 'defaults' # defaults.rb include SiSU_Viz - require_relative 'epub_format' # epub_format.rb - include SiSU_EPUB_Format + require_relative 'xhtml_epub2_format' # xhtml_epub2_format.rb + include SiSU_XHTML_EPUB2_Format class Source def initialize(opt) @opt=opt @@ -80,13 +80,13 @@ module SiSU_EPUB_Concordance wordmax=@env.concord_max unless @md.wc_words.nil? if @md.wc_words < wordmax - SiSU_EPUB_Concordance::Source::Words.new(@particulars).songsheet + SiSU_XHTML_EPUB2_Concordance::Source::Words.new(@particulars).songsheet else SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set],"*WARN* concordance skipped, large document has over #{wordmax} words (#{@md.wc_words})").warn unless @md.opt.act[:quiet][:set]==:on end else SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set],"*WARN* wc (word count) is off, concordance will be processed for all files including those over the max set size of: #{wordmax} words").warn unless @md.opt.act[:quiet][:set]==:on - SiSU_EPUB_Concordance::Source::Words.new(@particulars).songsheet + SiSU_XHTML_EPUB2_Concordance::Source::Words.new(@particulars).songsheet end rescue SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do @@ -98,11 +98,11 @@ module SiSU_EPUB_Concordance private class DocTitle include SiSU_Viz - #revisit, both requires (html & shared_xml) needed for stand alone operation (sisu -w [filename]) - require_relative 'epub' # epub.rb + #revisit, both requires (html & xml_shared) needed for stand alone operation (sisu -w [filename]) + require_relative 'xhtml_epub2' # xhtml_epub2.rb def initialize(particulars) @particulars,@md=particulars,particulars.md - @data=SiSU_EPUB::Source::XHTML_Environment.new(particulars).tuned_file_instructions + @data=SiSU_XHTML_EPUB2::Source::XHTML_Environment.new(particulars).tuned_file_instructions @vz=SiSU_Viz::Defaults.new @fnb=@md.fnb @lex_button=%{<a href="http://www.jus.uio.no/sisu/" target="_top"><img border="0" height="44" width="144" valign="center" src="../_sisu/image/sisu.png" alt="SiSU home"></a>} @@ -112,7 +112,7 @@ WOK end def create @css=SiSU_Env::CSS_Stylesheet.new(@particulars.md) - format_head_toc=SiSU_EPUB_Format::HeadToc.new(@md) + format_head_toc=SiSU_XHTML_EPUB2_Format::HeadToc.new(@md) dochead=format_head_toc.head <<WOK #{dochead} @@ -148,15 +148,15 @@ WOK class Words require_relative 'defaults' # defaults.rb include SiSU_Viz - require_relative 'epub_format' # epub_format.rb - include SiSU_EPUB_Format + require_relative 'xhtml_epub2_format' # xhtml_epub2_format.rb + include SiSU_XHTML_EPUB2_Format require_relative 'sysenv' # sysenv.rb include SiSU_Screen def initialize(particulars) @particulars=particulars begin @vz=SiSU_Viz::Defaults.new - @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array + @env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array @path="#{@env.processing_path.epub}" @freq=Hash.new(0) @rxp_lv1=/^#{Mx[:lv_o]}1:/ #fix Mx[:lv_o] @@ -214,7 +214,7 @@ WOK def map_para @seg,toy=nil,nil @word_map={} - @dal_array.each do |line| + @ao_array.each do |line| if defined? line.ocn if (line.is ==:heading \ || line.is ==:heading_insert) \ @@ -288,7 +288,7 @@ WOK end end seg='' - @file_concordance << SiSU_EPUB_Concordance::Source::DocTitle.new(@particulars).create + @file_concordance << SiSU_XHTML_EPUB2_Concordance::Source::DocTitle.new(@particulars).create alph=%W[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] @file_concordance << '<p>' alph.each {|x| @file_concordance << %{<a href="##{x}">#{x}</a>,#{$ep[:hsp]}}} @@ -306,7 +306,7 @@ WOK end end end - keyword=SiSU_EPUB_Concordance::Source::Word.new(word,@freq[word]).html + keyword=SiSU_XHTML_EPUB2_Concordance::Source::Word.new(word,@freq[word]).html if keyword !~ @rxp_excluded0 if @word_map[word][0] =~ /\d+/ @file_concordance << %{#{keyword}#{seg}#{@word_map[word].uniq.compact.join}} diff --git a/lib/sisu/v5/epub_format.rb b/lib/sisu/v5/xhtml_epub2_format.rb index 1c57cd20..e53c3bfe 100644 --- a/lib/sisu/v5/epub_format.rb +++ b/lib/sisu/v5/xhtml_epub2_format.rb @@ -59,7 +59,7 @@ ** Description: epub formating, css template =end -module SiSU_EPUB_Format +module SiSU_XHTML_EPUB2_Format include SiSU_Viz class ParagraphNumber def initialize(md,ocn) @@ -1241,8 +1241,8 @@ module SiSU_EPUB_Format # DublinCore 1 - title @vz=SiSU_Viz::Defaults.new @css=SiSU_Env::CSS_Stylesheet.new(md) - @seg_name_xhtml=(SiSU_EPUB::Source::Seg.new.seg_name_xhtml || []) - @seg_name_xhtml_tracker=(SiSU_EPUB::Source::Seg.new.seg_name_xhtml_tracker || []) + @seg_name_xhtml=(SiSU_XHTML_EPUB2::Source::Seg.new.seg_name_xhtml || []) + @seg_name_xhtml_tracker=(SiSU_XHTML_EPUB2::Source::Seg.new.seg_name_xhtml_tracker || []) @tocband_scroll,@tocband_segtoc=nil,nil @index,@metalink='index','#metadata' end diff --git a/lib/sisu/v5/epub_segments.rb b/lib/sisu/v5/xhtml_epub2_segments.rb index 16e26855..d16e98e8 100644 --- a/lib/sisu/v5/epub_segments.rb +++ b/lib/sisu/v5/xhtml_epub2_segments.rb @@ -59,9 +59,9 @@ ** Description: epub segment generation, processing =end -module SiSU_EPUB_Seg - require_relative 'shared_xhtml' # shared_xhtml.rb - require_relative 'epub' # epub.rb +module SiSU_XHTML_EPUB2_Seg + require_relative 'xhtml_shared' # xhtml_shared.rb + require_relative 'xhtml_epub2' # xhtml_epub2.rb require_relative 'shared_metadata' # shared_metadata.rb class Output def initialize(md,outputfile,seg,type='') @@ -74,19 +74,19 @@ module SiSU_EPUB_Seg if @type=='endnotes' @seg[:headings]=[] #watch txt_obj={ txt: 'Endnotes', ocn_display: ''} - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @seg[:headings] << format_seg.title_heading1 filename_seg << @seg[:heading_endnotes] << @seg[:headings] << %{\n<div class="content">\n} << @seg[:endnote_all] << '</div>' elsif @type=='idx' @seg[:headings]=[] - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @seg[:headings] << format_seg.title_heading1 filename_seg << @seg[:heading_idx] << @seg[:headings] << %{\n<div class="content">\n} << @seg[:idx] << '</div>' elsif @type=='metadata' metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata @seg[:headings]=[] txt_obj={ txt: 'Metadata', ocn_display: ''} - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @seg[:headings] << format_seg.title_heading1 filename_seg << @seg[:heading_idx] << @seg[:headings] << %{\n<div class="content">\n} << metadata << '</div>' elsif @type=='sisu_manifest' @@ -101,7 +101,7 @@ WOK end @seg[:headings]=[] txt_obj={ txt: 'Manifest', ocn_display: ''} - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @seg[:headings] << format_seg.title_heading1 filename_seg << @seg[:heading_idx] << @seg[:headings] << %{\n<div class="content">\n} << manifest << '</div>' else @@ -141,7 +141,7 @@ WOK begin data=get_subtoc_endnotes(@data) data=articles(data) - SiSU_EPUB_Seg::Seg.new.cleanup # (((( added )))) + SiSU_XHTML_EPUB2_Seg::Seg.new.cleanup # (((( added )))) #### (((( END )))) #### rescue SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do @@ -236,32 +236,32 @@ WOK || dob.is==:heading_insert) \ and dob.ln==4 if tracking != 0 - SiSU_EPUB_Seg::Seg.new(@md).tail + SiSU_XHTML_EPUB2_Seg::Seg.new(@md).tail segfilename="#{dir_epub_cont}/#{@@seg_name_xhtml[tracking-1]}#{Sfx[:epub_xhtml]}" output_epub_cont_seg=File.new(segfilename,'w') if @@seg_name_xhtml[tracking-1] if dob.is==:heading \ or @@seg_name_xhtml[tracking-1] !~/endnotes|book_index|metadata/ - SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg).output + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg).output elsif dob.is==:heading_insert if @@seg_name_xhtml[tracking-1]=='endnotes' - SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'endnotes').output + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'endnotes').output elsif @@seg_name_xhtml[tracking-1]=='book_index' - SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'idx').output + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'idx').output @@seg[:idx]=[] elsif @@seg_name_xhtml[tracking-1]=='metadata' # navigation bug FIX - SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'metadata').output + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'metadata').output else puts "#{__FILE__}::#{__LINE__}" end else puts "#{__FILE__}::#{__LINE__}" end - SiSU_EPUB_Seg::Seg.new.reinitialise + SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise heading_art(dob) head(dob) if @@seg_name_xhtml[tracking] =='metadata' segfilename="#{dir_epub_cont}/#{@@seg_name_xhtml[tracking]}#{Sfx[:epub_xhtml]}" output_epub_cont_seg=File.new(segfilename,'w') - SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'metadata').output - SiSU_EPUB_Seg::Seg.new.reinitialise #BUG navigation bug with items following metadata, and occurring before manifest, this becomes a bug ... work area for book index, FIX + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'metadata').output + SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise #BUG navigation bug with items following metadata, and occurring before manifest, this becomes a bug ... work area for book index, FIX end #@output_epub_cont_seg.close #%(((( EOF )))) --> end @@ -296,7 +296,7 @@ WOK data end def heading_art(dob) - @@seg[:title]=SiSU_EPUB_Format::HeadSeg.new(@md).head + @@seg[:title]=SiSU_XHTML_EPUB2_Format::HeadSeg.new(@md).head end def head(dob) clean=/<!.*?!>|<:.*?>$/ @@ -309,9 +309,9 @@ WOK ocn=(@@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' - @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: @@heading1, ocn_display: @p_num.ocn_display } - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @@seg[:headings] << format_seg.title_heading1.gsub(clean,'') @@heading1=@@heading1.gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') end @@ -320,9 +320,9 @@ WOK ocn=(heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' - @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display } - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @@seg[:headings] << format_seg.title_heading2.gsub(clean,'') @@heading2=@@heading2.gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') end @@ -331,9 +331,9 @@ WOK ocn=(heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' - @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display } - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @@seg[:headings] << format_seg.title_heading3.gsub(clean,'') @@heading3=@@heading3.gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') end @@ -342,9 +342,9 @@ WOK ocn=(heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' - @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) + @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display } - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @@seg[:headings] << format_seg.title_heading4.gsub(clean,'') end @@tracker=@@tracker+1 @@ -355,9 +355,9 @@ WOK || dob.is ==:heading_insert \ || dob.is ==:para #extend as necessary FIX - @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,dob.ocn) + @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn) end - sto=SiSU_EPUB_Format::FormatTextObject.new(@md,dob) + sto=SiSU_XHTML_EPUB2_Format::FormatTextObject.new(@md,dob) dob_xhtml=if dob.is==:heading \ || dob.is==:heading_insert \ || dob.is==:para @@ -408,13 +408,13 @@ WOK || dob.is==:heading_insert \ || dob.is==:para) \ && (not dob.ocn or dob.ocn.to_s.empty?) - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,dob) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) end if (dob.is==:heading \ || dob.is==:heading_insert \ || dob.is==:para) \ and dob.note_ #dob.obj =~/<a href="#note_ref\d+"> <sup id=/ #endnote- note- - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,dob) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) dob.obj=format_seg.no_paranum end if (dob.is==:heading \ @@ -430,7 +430,7 @@ WOK end end def tail - format_head_seg=SiSU_EPUB_Format::HeadSeg.new(@md) + format_head_seg=SiSU_XHTML_EPUB2_Format::HeadSeg.new(@md) if @md.flag_auto_endnotes \ and @@seg_endnotes[@@get_hash_fn] @@seg[:tail] << %{\n<div class="content">\n<div class="endnote">\n} @@ -486,10 +486,10 @@ WOK and dob.ln.to_s =~/^[56]/ case dob.ln when 5 - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,dob) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) subtoc=format_seg.subtoc_lev5 #keep and make available, this is the subtoc when 6 - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,dob) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc end @@seg_subtoc_array << subtoc @@ -516,7 +516,7 @@ WOK try=e_n.split(/<br \/>/) try.each do |e| txt_obj={ txt: e } - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) note_match=if e =~/#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}/ format_seg.endnote_body_indent else format_seg.endnote_body @@ -529,7 +529,7 @@ WOK endnote_part_a=note_match_seg[m,1] endnote_part_b=note_match_seg[m,2] txt_obj={ endnote_part_a: endnote_part_a, endnote_part_b: endnote_part_b } - format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj) + format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) note_match_all_seg=format_seg.endnote_seg_body(@@fn) #BUG WATCH 200408 @@seg[:endnote_all] << note_match_all_seg end diff --git a/lib/sisu/v5/epub_tune.rb b/lib/sisu/v5/xhtml_epub2_tune.rb index 5ec5fa56..b46f49f0 100644 --- a/lib/sisu/v5/epub_tune.rb +++ b/lib/sisu/v5/xhtml_epub2_tune.rb @@ -60,10 +60,10 @@ =end require_relative 'param' -module SiSU_EPUB_Tune +module SiSU_XHTML_EPUB2_Tune require_relative 'sysenv' # sysenv.rb include SiSU_Env; include SiSU_Screen - require_relative 'epub_format' # epub_format.rb #watch + require_relative 'xhtml_epub2_format' # xhtml_epub2_format.rb #watch @@line_mode='' @@endnote_array=[] @@endnote_call_counter=1 @@ -127,15 +127,15 @@ module SiSU_EPUB_Tune || @md.opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set],'Tune').txt_grey end - data=SiSU_EPUB_Tune::Tune.new(@data,@md).amp_angle_brackets - data=SiSU_EPUB_Tune::Tune.new(data,@md).endnotes_html - data=SiSU_EPUB_Tune::Tune.new(data,@md).url_markup - data=SiSU_EPUB_Tune::Tune.new(data,@md).markup + data=SiSU_XHTML_EPUB2_Tune::Tune.new(@data,@md).amp_angle_brackets + data=SiSU_XHTML_EPUB2_Tune::Tune.new(data,@md).endnotes_html + data=SiSU_XHTML_EPUB2_Tune::Tune.new(data,@md).url_markup + data=SiSU_XHTML_EPUB2_Tune::Tune.new(data,@md).markup if @md.opt.act[:maintenance][:set]==:on #Hard Output Tune Optional on/off here - data=SiSU_EPUB_Tune::Output.new(data,@md).hard_output - SiSU_EPUB_Tune::Output.new(data,@md).marshal + data=SiSU_XHTML_EPUB2_Tune::Output.new(data,@md).hard_output + SiSU_XHTML_EPUB2_Tune::Output.new(data,@md).marshal end - SiSU_EPUB_Tune::Tune.new(@data,@md).output + SiSU_XHTML_EPUB2_Tune::Tune.new(@data,@md).output rescue SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -163,7 +163,7 @@ module SiSU_EPUB_Tune gsub(/#{Dx[:url_o]}/,Dx[:url_o_xml]).gsub(/#{Dx[:url_c]}/,Dx[:url_o_xml]). gsub(/#{Mx[:nbsp]}/,$ep[:hsp]). gsub(/<(p|br)>/,'<\1 />') - dob.obj=SiSU_EPUB_Tune::CleanXHTML.new(dob.obj).clean + dob.obj=SiSU_XHTML_EPUB2_Tune::CleanXHTML.new(dob.obj).clean @tuned_file << dob end end diff --git a/lib/sisu/v5/shared_xhtml.rb b/lib/sisu/v5/xhtml_shared.rb index c9534823..27ddba4b 100644 --- a/lib/sisu/v5/shared_xhtml.rb +++ b/lib/sisu/v5/xhtml_shared.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/shared_xhtml.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/xhtml_shared.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> diff --git a/lib/sisu/v5/xml_docbook5.rb b/lib/sisu/v5/xml_docbook5.rb new file mode 100644 index 00000000..d3840d18 --- /dev/null +++ b/lib/sisu/v5/xml_docbook5.rb @@ -0,0 +1,271 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.sisudoc.org/sisu/en/SiSU/download.html> + + * Git + <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/xml_docbook_book.rb;hb=HEAD> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: Docbook book XML rendition + +=end +module SiSU_XML_Docbook_Book + require_relative 'particulars' # particulars.rb + include SiSU_Particulars + require_relative 'ao' # ao.rb + require_relative 'sysenv' # sysenv.rb + include SiSU_Env + require_relative 'txt_shared' # txt_shared.rb + include SiSU_TextUtils + require_relative 'xml_shared' # xml_shared.rb + include SiSU_XML_Munge + class Source + def initialize(opt) + @opt=opt + @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt) + end + def read + begin + @md,@ao_array=@particulars.md,@particulars.ao_array + @env=@particulars.env + report + SiSU_XML_Docbook_Book::Source::Scroll.new(@ao_array,@md).songsheet + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + def report + unless @opt.act[:quiet][:set]==:on + tool=(@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? "#{@env.program.docbook_viewer} #{@md.file.output_path.xml_docbook_book.dir}/#{@md.file.base_filename.xml_docbook_book}" + : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" + (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'DocBook',tool).green_hi_blue + : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'DocBook',tool).green_title_hi + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{@md.file.output_path.xml_docbook_book.dir}/#{@md.file.base_filename.xml_docbook_book}").flow + end + end + end + class Scroll <Source + def initialize(data='',md='') + @data,@md=data,md + @trans=SiSU_XML_Munge::Trans.new(@md) + @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(md.opt) + @env=@particulars.env + end + def songsheet + @t='sisu' + data=@data + if @md.opt.act[:verbose_plus][:set]==:on + structure_collapsed(data) + end + #head + #extract_endnotes + data=markup_text(data) + structure_build_collapsed(data) + #tail + end + def space + ' ' + end + def tags + # collapsed --> + def collapsed + %w[ 0 1 2 3 4 5 6 ] + end + def docbook(lc,chlv='') + case lc + when 1 + 'book' + when 2 + lc==chlv ? 'chapter' : 'section' + when 3 + lc==chlv ? 'chapter' : 'section' + when 4 + lc==chlv ? 'chapter' : 'section' + when 5 + 'section' + when 6 + 'section' + end + end + self + end + def put(line) + #@file_docbook.puts line #look into and use perhaps + puts line if @md.opt.act[:verbose_plus][:set]==:on + end + def head + <<-WOK +<?xml version="1.0" encoding="utf-8"?> +<book xmlns="http://docbook.org/ns/docbook" + xmlns:xl="http://www.w3.org/1999/xlink" + version="5.0"> + WOK + end + def markup_text(data) + data.each_with_index do |o,i| + if o.is ==:heading || o.is ==:para + o=@trans.markup_docbook(o) #unless o.obj==nil + end + end + data + end + def tail + tail=<<-WOK +</book> + WOK + put(tail) + end + def output(o,lev=nil,comment='') + puts lev == 0..6 \ + ? "#{space*lev}<#{lev}>[#{o.ocn}] #{o.ln} #{o.obj}</#{lev}>#{comment}" + : "<#{lev}>[#{o.ocn}] #{o.ln} #{o.obj}</#{lev}>#{comment}" + end + def structure_collapsed(data) + puts "\ncollapsed structure, heading outline --->\n\n" + data.each_with_index do |o,i| + if (o.is ==:heading || o.is ==:heading_insert) + output(o,o.lc) + end + end + end + #def chapterlevel + #end + def structure_build_collapsed(data) + #output_file=@md.file.output_path.xml_docbook_book.dir + '/' + @md.file.base_filename.xml_docbook_book + file=SiSU_Env::FileOp.new(@md) + filename_docbook=file.write_file.xml_docbook_book + h=0 + @chlv=chlv=0 + doc_position=:head + filename_docbook.puts head + data.each_with_index do |o,i| + if (defined? o.ocn and not o.ocn.nil?) + ocn="\n#{Dx[:ocn_o]}#{o.ocn}#{Dx[:ocn_c]}" + id=%{ id="o#{o.ocn}" } + else + ocn,id='','' + end + if (o.is ==:heading || o.is ==:heading_insert) + lev=o.lc + chlv=(o.lv.to_i == 1) \ + ? @chlv=o.lc.to_i + : 0 + @splv=lev + unless doc_position==:head + filename_docbook.puts structure_build_tag_close(lev,h) + end + doc_position=:body_and_tail + filename_docbook.puts %{#{space*(lev-1)}<#{tags.docbook(lev,chlv)}> +#{space*lev}<title#{id}> +} + filename_docbook.puts SiSU_TextUtils::Wrap.new(o.obj + ocn,80,(@splv*2+2)).line_wrap + filename_docbook.puts %{#{space*lev}</title>} + h=lev + elsif (o.of ==:para or o.of ==:block) + filename_docbook.puts "#{space*(@splv)}<para#{id}>" + filename_docbook.puts SiSU_TextUtils::Wrap.new(o.obj + ocn,80,(@splv*2+2)).line_wrap + filename_docbook.puts "#{space*(@splv)}</para>" + end + end + filename_docbook.puts structure_build_tag_close(0,h) + filename_docbook.close + end + def structure_build_tag_close(lev,h) + x=[] + case h + when 1 + x << "#{space*0}</#{tags.docbook(1)}>" if (lev <= 1) + when 2 + x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lev <= 2) + x << "#{space*0}</#{tags.docbook(1)}>" if (lev <= 1) + when 3 + x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lev <= 3) + x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lev <= 2) + x << "#{space*0}</#{tags.docbook(1)}>" if (lev <= 1) + when 4 + x << "#{space*3}</#{tags.docbook(4,@chlv)}>" if (lev <= 4) + x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lev <= 3) + x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lev <= 2) + x << "#{space*0}</#{tags.docbook(1)}>" if (lev <= 1) + when 5 + x << "#{space*4}</#{tags.docbook(5)}>" if (lev <= 5) + x << "#{space*3}</#{tags.docbook(4,@chlv)}>" if (lev <= 4) + x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lev <= 3) + x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lev <= 2) + x << "#{space*0}</#{tags.docbook(1)}>" if (lev <= 1) + when 6 + x << "#{space*5}</#{tags.docbook(6)}>" if (lev <= 6) + x << "#{space*4}</#{tags.docbook(5)}>" if (lev <= 5) + x << "#{space*3}</#{tags.docbook(4,@chlv)}>" if (lev <= 4) + x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lev <= 3) + x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lev <= 2) + x << "#{space*0}</#{tags.docbook(1)}>" if (lev <= 1) + end + x.join("\n") + end + end + end +end +__END__ diff --git a/lib/sisu/v5/xml_dom.rb b/lib/sisu/v5/xml_dom.rb index f6d86883..6f0391f1 100644 --- a/lib/sisu/v5/xml_dom.rb +++ b/lib/sisu/v5/xml_dom.rb @@ -66,8 +66,8 @@ module SiSU_XML_DOM include SiSU_Particulars require_relative 'sysenv' # sysenv.rb include SiSU_Env - require_relative 'dal' # dal.rb - require_relative 'shared_xml' # shared_xml.rb + require_relative 'ao' # ao.rb + require_relative 'xml_shared' # xml_shared.rb include SiSU_XML_Munge require_relative 'xml_format' # xml_format.rb include SiSU_XML_Format @@ -83,7 +83,7 @@ module SiSU_XML_DOM end def read begin - @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array + @env,@md,@ao_array=@particulars.env,@particulars.md,@particulars.ao_array unless @opt.act[:quiet][:set]==:on tool=if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) @@ -114,7 +114,7 @@ module SiSU_XML_DOM private class Songsheet def initialize(particulars) - @env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars + @env,@md,@ao_array,@particulars=particulars.env,particulars.md,particulars.ao_array,particulars @file=SiSU_Env::FileOp.new(@md) end def songsheet @@ -135,19 +135,19 @@ module SiSU_XML_DOM end end class Scroll - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils - require_relative 'shared_xhtml' # decide use, whether xml rather than xhtml + require_relative 'xhtml_shared' # decide use, whether xml rather than xhtml @@xml={ body: [], open: [], close: [], head: [], sc: [] } def initialize(particulars) - @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array + @env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array @vz=SiSU_Viz::Defaults.new @trans=SiSU_XML_Munge::Trans.new(@md) @sys=SiSU_Env::SystemCall.new end def songsheet pre - @data=markup(@dal_array) + @data=markup(@ao_array) post publish end diff --git a/lib/sisu/v5/xml_fictionbook.rb b/lib/sisu/v5/xml_fictionbook.rb deleted file mode 100644 index 446e12e2..00000000 --- a/lib/sisu/v5/xml_fictionbook.rb +++ /dev/null @@ -1,305 +0,0 @@ -# encoding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see <http://www.gnu.org/licenses/>. - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - <http://www.fsf.org/licensing/licenses/gpl.html> - <http://www.gnu.org/licenses/gpl.html> - - <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - <http://www.jus.uio.no/sisu> - <http://www.sisudoc.org> - - * Download: - <http://www.sisudoc.org/sisu/en/SiSU/download.html> - - * Git - <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/xml_fictionbook.rb;hb=HEAD> - - * Ralph Amissah - <ralph@amissah.com> - <ralph.amissah@gmail.com> - - ** Description: extract and print an XML rendition of document structure to screen - -=end -module SiSU_XML_Fictionbook - require_relative 'dal' # dal.rb - require_relative 'sysenv' # sysenv.rb - include SiSU_Env - require_relative 'shared_txt' # shared_txt.rb - include SiSU_TextUtils - require_relative 'shared_xml' # shared_xml.rb - include SiSU_XML_Munge - include SiSU_Param - class Source - def initialize(opt) - @opt=opt - @sp=' ' - end - def read - begin - @md=SiSU_Param::Parameters.new(@opt).get - @dal_array=SiSU_DAL::Source.new(@opt).get - SiSU_XML_Fictionbook::Source::Scroll.new(@dal_array,@md).songsheet - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - end - end - private - class Scroll <Source - def initialize(data='',md='') - @data,@md=data,md - @trans=SiSU_XML_Munge::Trans.new(@md) - @file_fictionbook=SiSU_Env::FileOp.new(@md,'fictionbook.xml').mkfile - end - def songsheet - @t='fictionbook' - @s=['section', #@s=['body', - 'section', - 'section', - 'section', - 'section', - 'section', - 'section' - ] - head - extract_endnotes - structure - tail - end - def head - version=SiSU_Env::InfoVersion.instance.get_version - rb_ver=SiSU_Env::InfoVersion.instance.rbversion - date_available=if defined? @md.date.available; "\n <p>#{@md.date.available} Initial version</p>" - else '' - end - date_modified=if defined? @md.date.modified; "\n <p>#{@md.date.modified} Last Modified</p>" - else '' - end - head=<<WOK -<?xml version="1.0" encoding="UTF-8"?> -<FictionBook xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"> -<description> - <title-info> - <genre match="100">***</genre> - <author> - <first-name>***</first-name> - <middle-name>***</middle-name> - <last-name>***</last-name> - </author> - <book-title>#{@md.title.full}</book-title> - <annotation> - </annotation> - <date value="#{@md.date}">yyyy</date> - </title-info> - <document-info> - <author> - <first-name/> - <last-name/> - <nickname/> - </author> - <program-used>#{version[:project]} #{version[:version]} and #{rb_ver}</program-used> - <date value="#{version[:date]}">#{version[:date]}</date> - <src-ocr/> - <version>1.0</version> - <history>#{date_available}#{date_modified} - </history> - </document-info> -</description> -<body> -WOK - put(head) - end - def extract_endnotes - @endnotes=[] - @data.each do |para| - @endnotes << para.scan(/~\{(.+?)\}~/m) - end - @endnotes=@endnotes.flatten - end - def endnotes - @endnotes.each do |endnote| - endnote=endnote.strip - endnote=@trans.markup_fictionbook(endnote) - endnote="<p>#{endnote}</p>" - util=SiSU_TextUtils::Wrap.new(endnote,80,10) - endnote=util.line_wrap - put(endnote) - end - end - def tail - tail=<<WOK -</body> -</FictionBook> -WOK - put(tail) - end - def markup(para,type='') - para=para.strip - para=@trans.markup_fictionbook(para) - para=if type.empty?; "<p>#{para}</p>" - else "<#{type}><p>#{para}</p></#{type}>" - end - util=SiSU_TextUtils::Wrap.new(para,80,10) - util.line_wrap - end - def put(line) - @file_fictionbook.puts line - puts line if @md.opt.act[:verbose_plus][:set]==:on - end - def structure_build_tag_close(lev,h) - @sp=' ' - case h[0] - when 1 - put("#{@sp*1}</#{@s[1]}>") if (lev <= 1) and h[1] - put("</#{@s[0]}>") if (lev==0) - when 2 - put("#{@sp*2}</#{@s[2]}>") if (lev <= 2) and h[2] - put("#{@sp*1}</#{@s[1]}>") if (lev <= 1) and h[1] - put("</#{@s[0]}>") if (lev==0) - when 3 - put("#{@sp*3}</#{@s[3]}>") if (lev <= 3) and h[3] - put("#{@sp*2}</#{@s[2]}>") if (lev <= 2) and h[2] - put("#{@sp*1}</#{@s[1]}>") if (lev <= 1) and h[1] - put("</#{@s[0]}>") if (lev==0) - when 4 - put("#{@sp*4}</#{@s[4]}>") if (lev <= 4) - put("#{@sp*3}</#{@s[3]}>") if (lev <= 3) and h[3] - put("#{@sp*2}</#{@s[2]}>") if (lev <= 2) and h[2] - put("#{@sp*1}</#{@s[1]}>") if (lev <= 1) and h[1] - put("</#{@s[0]}>") if (lev==0) - when 5 - put("#{@sp*5}</#{@s[5]}>") if (lev <= 5) - put("#{@sp*4}</#{@s[4]}>") if (lev <= 4) - put("#{@sp*3}</#{@s[3]}>") if (lev <= 3) and h[3] - put("#{@sp*2}</#{@s[2]}>") if (lev <= 2) and h[2] - put("#{@sp*1}</#{@s[1]}>") if (lev <= 1) and h[1] - put("</#{@s[0]}>") if (lev==0) - when 6 - put("#{@sp*6}</#{@s[6]}>") if (lev <= 6) - put("#{@sp*5}</#{@s[5]}>") if (lev <= 5) - put("#{@sp*4}</#{@s[4]}>") if (lev <= 4) - put("#{@sp*3}</#{@s[3]}>") if (lev <= 3) and h[3] - put("#{@sp*2}</#{@s[2]}>") if (lev <= 2) and h[2] - put("#{@sp*1}</#{@s[1]}>") if (lev <= 1) and h[1] - put("</#{@s[0]}>") if (lev==0) - end - end - def structure_build(ds) - @h=[0,false,false,false] - put("<#{@s[0]}>") - ds.each_with_index do |x,i| - @ef=false - case x[:lev] - when /^1/ - structure_build_tag_close(1,@h) - y="#{@sp*1}<#{@s[1]}>\n#{x[:para]}" - @h=[1,true,false,false] - when /^2/ - structure_build_tag_close(2,@h) - y="#{@sp*2}<#{@s[2]}>\n#{x[:para]}" - @h=[2,true,true,false] - when /^0:0/ #endnotes and metadata - structure_build_tag_close(2,@h) - y="#{@sp*2}<#{@s[2]}>\n#{x[:para]}" - @h=[2,true,true,false] - @ef=true if x[:hdr] =~/u0/ - when /^3/ - structure_build_tag_close(3,@h) - y="#{@sp*3}<#{@s[3]}>\n#{x[:para]}" - @h=[3,true,true,true] - when /^4/ - structure_build_tag_close(4,@h) - y="#{@sp*4}<#{@s[4]}>\n#{x[:para]}" - @h[0]=4 - when /^m2/ #metadata - structure_build_tag_close(4,@h) - y="#{@sp*4}<#{@s[4]}>\n#{x[:para]}" - @h[0]=4 - when /^5/ - structure_build_tag_close(5,@h) - y="#{@sp*5}<#{@s[5]}>\n#{x[:para]}" - @h[0]=5 - when /^6/ - structure_build_tag_close(6,@h) - y="#{@sp*6}<#{@s[6]}>\n#{x[:para]}" - @h[0]=6 - else - y=if @md.opt.act[:verbose_plus][:set]==:on; "#{x[:para]}" - else nil - end - end - put(y) if y - endnotes if @ef - end - structure_build_tag_close(0,@h) - end - def structure - data=@data - @ds=[] - c=0 - data.each do |para| - rgx_headers=/#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}/ #fix - if para =~rgx_headers - x=(rgx_headers).match(para) - if x[3] =~/^[hum]\d+/ - @ds[c]={} - @ds[c][:ocn]=x[1] - @ds[c][:lev]=x[2] - @ds[c][:hdr]=x[3] - @ds[c][:para]=markup(para,'title') - else - @ds[c]={} - @ds[c][:para]=markup(para) if @md.opt.act[:verbose_plus][:set]==:on - end - c+=1 - end - end - structure_build(@ds) - @ds - end - end - end -end -__END__ diff --git a/lib/sisu/v5/xml_fictionbook2.rb b/lib/sisu/v5/xml_fictionbook2.rb new file mode 100644 index 00000000..8ee2fb89 --- /dev/null +++ b/lib/sisu/v5/xml_fictionbook2.rb @@ -0,0 +1,366 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.sisudoc.org/sisu/en/SiSU/download.html> + + * Git + <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/xml_fictionbook.rb;hb=HEAD> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: Fictionbook XML rendition + +=end +module SiSU_XML_Fictionbook + require_relative 'particulars' # particulars.rb + include SiSU_Particulars + require_relative 'ao' # ao.rb + require_relative 'sysenv' # sysenv.rb + include SiSU_Env + require_relative 'txt_shared' # txt_shared.rb + include SiSU_TextUtils + require_relative 'xml_shared' # xml_shared.rb + include SiSU_XML_Munge + class Source + def initialize(opt) + @opt=opt + @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt) + end + def read + begin + @md,@ao_array=@particulars.md,@particulars.ao_array + @env=@particulars.env + report + SiSU_XML_Fictionbook::Source::Scroll.new(@ao_array,@md).songsheet + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + def report + unless @opt.act[:quiet][:set]==:on + tool=(@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? "#{@env.program.fictionbook_viewer} #{@md.file.output_path.xml_fictionbook.dir}/#{@md.file.base_filename.xml_fictionbook}" + : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" + (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Fictionbook',tool).green_hi_blue + : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Fictionbook',tool).green_title_hi + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"#{@md.file.output_path.xml_fictionbook.dir}/#{@md.file.base_filename.xml_fictionbook}").flow + end + end + end + class Scroll <Source + def initialize(data='',md='') + @data,@md=data,md + @trans=SiSU_XML_Munge::Trans.new(@md) + @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(md.opt) + @env=@particulars.env + end + def songsheet + @t='sisu' + data=@data + if @md.opt.act[:verbose_plus][:set]==:on + structure_collapsed(data) + end + head + endnotes=extract_endnotes + images_base64=extract_images + data=markup_text(data) + structure_build_collapsed(data,endnotes,images_base64) + end + def space + ' ' + end + def tags + # collapsed --> + def collapsed + %w[ 0 1 2 3 4 5 6 ] + end + def fictionbook + [ 'section', + 'section', + 'section', + 'section', + 'section', + 'section', + 'section' + ] + end + self + end + def put(line) + puts line if @md.opt.act[:verbose_plus][:set]==:on + end + def head + version=SiSU_Env::InfoVersion.instance.get_version + rb_ver=SiSU_Env::InfoVersion.instance.rbversion + date_available=if defined? @md.date.available; "\n <p>#{@md.date.available} Initial version</p>" + else '' + end + date_modified=if defined? @md.date.modified; "\n <p>#{@md.date.modified} Last Modified</p>" + else '' + end + coverpageimage=if defined? @md.make.cover_image[:cover] + %{\n <coverpage><image href="##{@md.make.cover_image[:cover]}" /></coverpage>} + else '' + end + if defined? @md.authors \ + and @md.authors.length > 0 + authors=[] + @md.authors.each do |author| + authors << ' <author>' + if not author[:others].empty? + authors << %{ <first-name>#{author[:others]}</first-name>} + end + if not author[:the].empty? + authors << %{ <last-name>#{author[:the]}</last-name>} + end + authors << ' </author>' + end + authors=authors.join("\n") + end + <<-WOK +<?xml version="1.0" encoding="UTF-8"?> +<FictionBook xmlns:xl="http://www.w3.org/1999/xlink" + xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"> +<description> + <title-info> + <genre match="100">***</genre> +#{authors} + <book-title>#{@md.title.full}</book-title>#{coverpageimage} + <annotation> + </annotation> + <date value="#{@md.date.published}">#{@md.date.published}</date> + </title-info> + <document-info> + <author> + <first-name/> + <last-name/> + <nickname/> + </author> + <program-used>#{version[:project]} #{version[:version]} and #{rb_ver}</program-used> + <date value="#{version[:date]}">#{version[:date]}</date> + <src-url>#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}</src-url> + <id></id> + <version>1.0</version> + <history>#{date_available}#{date_modified} + </history> + </document-info> +</description> +<body> + WOK + end + def extract_endnotes #work on + endnotes,endnotes_raw,endnotes_b=[],[],[] + @data.each do |para| + endnotes_raw << para.obj.scan(/#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m) + endnotes_b << para.obj.scan(/#{Mx[:en_b_o]}(.+?)#{Mx[:en_b_c]}/m) + end + endnotes_raw.flatten.each do |en| + en=@trans.markup_fictionbook(en) + endnotes << en.gsub(/([\d+*]+)\s+(.+)/m, + %{<section id="footnote\\1">\n +<title><p>\\1.</p></title>\n +<p>\\2</p>\n +</section>}) + end + endnotes_raw=[] + endnotes + end + def extract_images #work on + require "base64" + images_raw,images_base64_fb2=[],[] + images_base64={} + if defined? @md.make.cover_image[:cover] + images_raw << @md.make.cover_image[:cover] + end + @data.each do |para| + images_raw << para.obj.scan(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg|gif)).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/m) + end + images_raw.flatten.sort.each do |img| + imgpth=@env.url.images_local + '/' + img + open(imgpth) + if FileTest.file?(imgpth) + images_base64[img]=Base64.encode64(File.read(imgpth)) + end + end + images_raw=[] + images_base64.each_key do |k| + imgtype=case k + when /\.jpg/ then 'jpeg' + when /\.png/ then 'png' + when /\.gif/ then 'gif' + else 'jpeg' + end + images_base64_fb2 << %{<binary content-type="image/#{imgtype}" id="#{k}">#{images_base64[k]} +</binary> +} + end + images_base64_fb2.join("\n") + end + def markup_text(data) + data.each_with_index do |o,i| + if o.is ==:heading || o.is ==:para + o.obj=@trans.markup_fictionbook(o.obj,o.is) #unless o.obj==nil + end + end + data + end + def tail(images_base64_fb2) + <<-WOK +</body> +#{images_base64_fb2} +</FictionBook> + WOK + end + def output(o,lev=nil,comment='') + puts lev == 0..6 \ + ? "#{space*lev}<#{lev}>[#{o.ocn}] #{o.ln} #{o.obj}</#{lev}>#{comment}" + : "<#{lev}>[#{o.ocn}] #{o.ln} #{o.obj}</#{lev}>#{comment}" + end + def structure_collapsed(data) + puts "\ncollapsed structure, heading outline --->\n\n" + data.each_with_index do |o,i| + if (o.is ==:heading || o.is ==:heading_insert) + output(o,o.lc) + end + end + end + def endnotes_build(endnotes,filename_fictionbook) + if endnotes.length > 0 + filename_fictionbook.puts %{</body><body name="notes">} + endnotes.each do |en| + filename_fictionbook.puts SiSU_TextUtils::Wrap.new(en,80,6).line_wrap + end + end + end + def structure_build_collapsed(data,endnotes,images_base64) + file=SiSU_Env::FileOp.new(@md) + filename_fictionbook=file.write_file.xml_fictionbook + h=0 + doc_position=:head + filename_fictionbook.puts head + data.each_with_index do |o,i| + ocn=(defined? o.ocn and not o.ocn.nil?) ? "\n#{Dx[:ocn_o]}#{o.ocn}#{Dx[:ocn_c]}" : '' + if o.is ==:heading + lev=o.lc + chlv=(o.lv.to_i == 1) \ + ? @chlv=o.lc.to_i + : 0 + unless doc_position==:head + filename_fictionbook.puts structure_build_tag_close(lev,h) + end + doc_position=:body_and_tail + filename_fictionbook.puts %{#{space*lev}<#{tags.fictionbook[lev]}> +#{space*lev}<title> +} + filename_fictionbook.puts SiSU_TextUtils::Wrap.new("<p>#{o.obj}#{ocn}</p>",80,(lev*2+2)).line_wrap + filename_fictionbook.puts %{#{space*lev}</title>} + h=lev + elsif o.is ==:heading_insert \ + and o.obj =~/Endnotes/ \ + and o.ln == 2 + break + elsif (o.of ==:para or o.of ==:block) + filename_fictionbook.puts SiSU_TextUtils::Wrap.new("<p>#{o.obj}#{ocn}</p>",80,6).line_wrap + end + end + filename_fictionbook.puts structure_build_tag_close(0,h) + endnotes_build(endnotes,filename_fictionbook) + filename_fictionbook.puts tail(images_base64) + filename_fictionbook.close + end + def structure_build_tag_close(lev,h) + x=[] + case h + when 1 + x << "#{space*1}</#{tags.fictionbook[1]}>" if (lev <= 1) + when 2 + x << "#{space*2}</#{tags.fictionbook[2]}>" if (lev <= 2) + x << "#{space*1}</#{tags.fictionbook[1]}>" if (lev <= 1) + when 3 + x << "#{space*3}</#{tags.fictionbook[3]}>" if (lev <= 3) + x << "#{space*2}</#{tags.fictionbook[2]}>" if (lev <= 2) + x << "#{space*1}</#{tags.fictionbook[1]}>" if (lev <= 1) + when 4 + x << "#{space*4}</#{tags.fictionbook[4]}>" if (lev <= 4) + x << "#{space*3}</#{tags.fictionbook[3]}>" if (lev <= 3) + x << "#{space*2}</#{tags.fictionbook[2]}>" if (lev <= 2) + x << "#{space*1}</#{tags.fictionbook[1]}>" if (lev <= 1) + when 5 + x << "#{space*5}</#{tags.fictionbook[5]}>" if (lev <= 5) + x << "#{space*4}</#{tags.fictionbook[4]}>" if (lev <= 4) + x << "#{space*3}</#{tags.fictionbook[3]}>" if (lev <= 3) + x << "#{space*2}</#{tags.fictionbook[2]}>" if (lev <= 2) + x << "#{space*1}</#{tags.fictionbook[1]}>" if (lev <= 1) + when 6 + x << "#{space*6}</#{tags.fictionbook[6]}>" if (lev <= 6) + x << "#{space*5}</#{tags.fictionbook[5]}>" if (lev <= 5) + x << "#{space*4}</#{tags.fictionbook[4]}>" if (lev <= 4) + x << "#{space*3}</#{tags.fictionbook[3]}>" if (lev <= 3) + x << "#{space*2}</#{tags.fictionbook[2]}>" if (lev <= 2) + x << "#{space*1}</#{tags.fictionbook[1]}>" if (lev <= 1) + end + x.join("\n") + end + end + end +end +__END__ diff --git a/lib/sisu/v5/odf.rb b/lib/sisu/v5/xml_odf_odt.rb index 5e277992..e7389110 100644 --- a/lib/sisu/v5/odf.rb +++ b/lib/sisu/v5/xml_odf_odt.rb @@ -59,17 +59,17 @@ ** Description: opendocument text generation =end -module SiSU_ODF +module SiSU_XML_ODF_ODT require_relative 'particulars' # particulars.rb include SiSU_Particulars - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb require_relative 'sysenv' # sysenv.rb include SiSU_Env include SiSU_Viz - require_relative 'odf_format' # odf_format.rb - include SiSU_ODF_Format + require_relative 'xml_odf_odt_format' # xml_odf_odt_format.rb + include SiSU_XML_ODF_ODT_Format require_relative 'shared_metadata' # shared_metadata.rb - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 class Source require 'zlib' @@ -81,7 +81,7 @@ module SiSU_ODF end def read begin - @md,@env,@dal_array=@particulars.md,@particulars.env,@particulars.dal_array + @md,@env,@ao_array=@particulars.md,@particulars.env,@particulars.ao_array unless @opt.act[:quiet][:set]==:on tool=(@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ @@ -98,7 +98,7 @@ module SiSU_ODF SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}").flow end end - SiSU_ODF::Source::Scroll.new(@particulars).songsheet + SiSU_XML_ODF_ODT::Source::Scroll.new(@particulars).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -109,24 +109,23 @@ module SiSU_ODF private class Scroll <Source require_relative 'defaults' # defaults.rb - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb @@img_count=0 @@odf={ body: [], head: [], toc: [], metadata: [], tail: [], book_idx: [], endnotes: [] } @@docstart=true @@fns=nil def initialize(particulars) - @md,@env,@dal_array=particulars.md,particulars.env,particulars.dal_array + @md,@env,@ao_array=particulars.md,particulars.env,particulars.ao_array @vz=SiSU_Viz::Defaults.new @tab="\t" @brace_url=SiSU_Viz::Defaults.new.url_decoration @br=(@md.opt.act[:maintenance][:set]==:on) \ ? '' : '' - #@br=(@md.opt.cmd =~/M/) ? "\n" : '' end def songsheet begin pre - @data=markup(@dal_array) + @data=markup(@ao_array) publish ensure unless (@md.opt.act[:verbose_plus][:set]==:on \ @@ -139,6 +138,10 @@ module SiSU_ODF end end end + def break_line + (@md.opt.act[:maintenance][:set]==:on) \ + ? "\n" : '' + end # Used for extraction of endnotes from paragraphs def extract_endnotes(dob='') notes=dob.obj.scan(/#{Mx[:en_a_o]}(\d+\s+.+?)#{Mx[:en_a_c]}/)[1] #FIX @@ -160,7 +163,7 @@ module SiSU_ODF idx_arr,idx_raw=[],SiSU_Particulars::CombinedSingleton.instance.get_idx_raw(@md.opt).raw_idx idx_raw.each do |x| x=if x.is_a?(String) - SiSU_ODF_Format::FormatBookIndex.new(x).book_idx_bookmark + SiSU_XML_ODF_ODT_Format::FormatBookIndex.new(x).book_idx_bookmark else nil end idx_arr << x.strip if x.is_a?(String) @@ -173,12 +176,12 @@ module SiSU_ODF end def odf_tail manifest="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}" - @@odf[:tail] << %{<text:p text:style-name="P_normal">Available document outputs: <br /> <<text:a xlink:type="simple" xlink:href="#{manifest}">#{manifest}</text:a>></text:p>} - @@odf[:tail] << %{\n<text:p text:style-name="P_normal">SiSU: <<text:a xlink:type="simple" xlink:href="http://www.jus.uio.no/lm">www.jus.uio.no/sisu</text:a>> and <<text:a xlink:type="simple" xlink:href="http://www.sisudoc.org">www.sisudoc.org</text:a>></text:p>} + @@odf[:tail] << %{<text:p text:style-name="P_normal">Available document outputs: <br /> <<text:a xl:type="simple" xl:href="#{manifest}">#{manifest}</text:a>></text:p>} + @@odf[:tail] << %{\n<text:p text:style-name="P_normal">SiSU: <<text:a xl:type="simple" xl:href="http://www.jus.uio.no/lm">www.jus.uio.no/sisu</text:a>> and <<text:a xl:type="simple" xl:href="http://www.sisudoc.org">www.sisudoc.org</text:a>></text:p>} @@odf[:tail] << "\n</office:text></office:body></office:document-content>" end def set_bookmark_tag(dob) - SiSU_ODF_Format::Tags.new.set_bookmark_tag(dob) + SiSU_XML_ODF_ODT_Format::Tags.new.set_bookmark_tag(dob) end def heading(dob,p_num) dob=footnote(dob) @@ -263,7 +266,7 @@ module SiSU_ODF and h.to_s =~/\d/ \ and w.to_s =~/\d/ @@img_count +=1 - %{<draw:frame draw:style-name="fr1" draw:name="graphics#{@@img_count}" text:anchor-type="as-char" svg:width="#{w}cm" svg:height="#{h}cm" draw:z-index="2"><draw:image xlink:href="Pictures/#{i}" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame>#{c}} #anchor-type: as-char or paragraph or char or ... + %{<draw:frame draw:style-name="fr1" draw:name="graphics#{@@img_count}" text:anchor-type="as-char" svg:width="#{w}cm" svg:height="#{h}cm" draw:z-index="2"><draw:image xl:href="Pictures/#{i}" xl:type="simple" xl:show="embed" xl:actuate="onLoad"/></draw:frame>#{c}} #anchor-type: as-char or paragraph or char or ... else %{<text:p text:style-name="P_normal">[image omitted]</text:p>} end end @@ -293,13 +296,13 @@ module SiSU_ODF map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map t=case url when /^https?:/ - %{<text:a xlink:type="simple" xlink:href="#{url}">#{txt.strip}</text:a>#{trail}} + %{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}} when /^:/ # site same document collection html link url=url.gsub(/^:/,"#{@env.url.root}/") - %{<text:a xlink:type="simple" xlink:href="#{url}">#{txt.strip}</text:a>#{trail}} + %{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}} when /^\.\.\// # site same document collection html link url=url.gsub(/^\.\.\//,"#{@env.url.root}/") - %{<text:a xlink:type="simple" xlink:href="#{url}">#{txt.strip}</text:a>#{trail}} + %{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}} else # document internal link if map_nametags[url] \ and map_nametags[url][:segname] @@ -307,7 +310,7 @@ module SiSU_ODF end t=map_nametags[url] \ && map_nametags[url][:segname] \ - ? %{<text:a xlink:type="simple" xlink:href="#{@env.url.root}/#{@md.fnb}/#{map_nametags[url][:segname]}#{Sfx[:html]}##{url}">#{txt.strip}</text:a>#{trail}} + ? %{<text:a xl:type="simple" xl:href="#{@env.url.root}/#{@md.fnb}/#{map_nametags[url][:segname]}#{Sfx[:html]}##{url}">#{txt.strip}</text:a>#{trail}} : %{#{txt.strip}#{trail}} end t @@ -362,11 +365,11 @@ module SiSU_ODF def normal(dob,p_num) #P1 - P3 dob=footnote(dob) dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/, - '<text:a xlink:type="simple" xlink:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration + '<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="mailto:\\1">\\1</text:a>#{@brace_url.xml_close}}). + %{#{@brace_url.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{@brace_url.xml_close}}). gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) #http ftp matches with decoration + %{#{@brace_url.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) #http ftp matches with decoration dob.obj= if dob.is==:para \ and dob.indent.to_s =~/[0-9]/ \ and dob.indent == dob.hang @@ -383,7 +386,7 @@ module SiSU_ODF end def footnote_urls(str) str=str.gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) + %{#{@brace_url.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) str=text_link(str) if str =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/ str=text_link_relative(str) if str =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/ str @@ -452,15 +455,15 @@ module SiSU_ODF def group(dob,p_num) #P4 #same as verse parray=[] dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/, - '<text:a xlink:type="simple" xlink:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration + '<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="mailto:\\1">\\1</text:a>#{@brace_url.xml_close}}). + %{#{@brace_url.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{@brace_url.xml_close}}). gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) #http ftp matches with decoration + %{#{@brace_url.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) #http ftp matches with decoration dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i| set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : '' parablock=group_clean(parablock) - parablock=parablock.gsub(/<text:a xlink:type="simple" xlink:href="(.+?)">/m,'<text:a xlink:type="simple" xlink:href="\1">'). + parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,'<text:a xl:type="simple" xl:href="\1">'). gsub(/<(\/text:a)>/,'<\1>'). gsub(/<(text:note text:id=.+?)>/,'<\1>'). gsub(/<(text:p text:style-name="Footnote")>/,'<\1>'). @@ -476,15 +479,15 @@ module SiSU_ODF def block(dob,p_num) #P4 #same as verse parray=[] dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/, - '<text:a xlink:type="simple" xlink:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration + '<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="mailto:\\1">\\1</text:a>#{@brace_url.xml_close}}). + %{#{@brace_url.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{@brace_url.xml_close}}). gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) #http ftp matches with decoration + %{#{@brace_url.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) #http ftp matches with decoration dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i| set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : '' parablock=group_clean(parablock) - parablock=parablock.gsub(/<text:a xlink:type="simple" xlink:href="(.+?)">/m,'<text:a xlink:type="simple" xlink:href="\1">'). + parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,'<text:a xl:type="simple" xl:href="\1">'). gsub(/<(\/text:a)>/,'<\1>'). gsub(/<(text:note text:id=.+?)>/,'<\1>'). gsub(/<(text:p text:style-name="Footnote")>/,'<\1>'). @@ -506,7 +509,7 @@ module SiSU_ODF parablock=group_clean(parablock) parablock=parablock.gsub(/^\s*$/,'<br />'). gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/, - '<text:a xlink:type="simple" xlink:href="\1">\1</text:a>') #http ftp matches escaped, no decoration + '<text:a xl:type="simple" xl:href="\1">\1</text:a>') #http ftp matches escaped, no decoration parray << %{<text:p text:style-name="P_code">#{set_ref}#{parablock}</text:p>} if parablock =~/\S+/ end dob.obj=parray.join \ @@ -518,14 +521,14 @@ module SiSU_ODF def table(dob,p_num) # if dob.is ==:table dob=footnote(dob) #check - table=SiSU_ODF_Format::Table.new(@md,dob,p_num) + table=SiSU_XML_ODF_ODT_Format::Table.new(@md,dob,p_num) dob=table.table end dob end def obj_break(dob) if dob.is ==:break - br=SiSU_ODF_Format::FormatObjBreak.new(@md,dob) + br=SiSU_XML_ODF_ODT_Format::FormatObjBreak.new(@md,dob) if dob.obj==Mx[:br_page] \ or dob.obj==Mx[:br_page_new] dob=br.br_page @@ -551,31 +554,31 @@ module SiSU_ODF if @env.odt_ocn? if defined? dob.ocn \ and dob.ocn.is_a?(Fixnum) - p_num=SiSU_ODF_Format::ParagraphNumber.new(dob.ocn).set_bookmark_and_display + p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn).set_bookmark_and_display end end end if dob.is==:heading - @@odf[:body] << heading(dob,p_num).obj << @br*2 + @@odf[:body] << heading(dob,p_num).obj << break_line*2 if SiSU_Env::ProcessingSettings.new(md).build.toc? if dob.lv =~/[A-C1]/i @@odf[:toc] << toc(dob,p_num).obj end end elsif dob.is ==:verse - @@odf[:body] << poem(dob,p_num).obj << @br*2 + @@odf[:body] << poem(dob,p_num).obj << break_line*2 elsif dob.is==:group - @@odf[:body] << group(dob,p_num).obj << @br*2 + @@odf[:body] << group(dob,p_num).obj << break_line*2 elsif dob.is==:block - @@odf[:body] << block(dob,p_num).obj << @br*2 + @@odf[:body] << block(dob,p_num).obj << break_line*2 elsif dob.is==:code - @@odf[:body] << code(dob,p_num).obj << @br*2 + @@odf[:body] << code(dob,p_num).obj << break_line*2 elsif dob.is==:table #elsif dob.obj =~ /<!Th?¡/u - @@odf[:body] << table(dob,p_num).obj << @br*2 + @@odf[:body] << table(dob,p_num).obj << break_line*2 elsif dob.is==:break - @@odf[:body] << obj_break(dob).obj << @br*2 + @@odf[:body] << obj_break(dob).obj << break_line*2 else - @@odf[:body] << normal(dob,p_num).obj << @br*2 # main text, contents, body KEEP + @@odf[:body] << normal(dob,p_num).obj << break_line*2 # main text, contents, body KEEP end @@endnotes_para=[] end @@ -639,7 +642,7 @@ module SiSU_ODF gsub(/#{Mx[:mk_o]}[~-]##{Mx[:mk_c]}/,'') if dob.is==:para \ and dob.bullet_ - dob.obj='<draw:frame draw:style-name="gr1" text:anchor-type="as-char" svg:width="0.22cm" svg:height="0.22cm" draw:z-index="2"><draw:image xlink:href="Pictures/bullet_09.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame> ' + + dob.obj='<draw:frame draw:style-name="gr1" text:anchor-type="as-char" svg:width="0.22cm" svg:height="0.22cm" draw:z-index="2"><draw:image xl:href="Pictures/bullet_09.png" xl:type="simple" xl:show="embed" xl:actuate="onLoad"/></draw:frame> ' + dob.obj end dob.obj=dob.obj.gsub(/#{Mx[:br_line]}/,'<br />'). @@ -674,7 +677,7 @@ module SiSU_ODF and (dob.obj =~/~metadata/ or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o] if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check if defined? dob.ocn and dob.ocn =~/\d+/ - @p_num=SiSU_ODF_Format::ParagraphNumber.new(dob.ocn) + @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn) end if dob.is ==:heading \ || dob.is ==:para \ @@ -728,7 +731,7 @@ WOK end x=<<WOK <?xml version="1.0" encoding="UTF-8"?> -<office:document-content 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:xlink="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:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2"><office:scripts/> +<office:document-content 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:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2"><office:scripts/> <office:font-face-decls><style:font-face style:name="DejaVu Sans Mono" svg:font-family="'DejaVu Sans Mono'" style:font-adornments="Book" style:font-family-generic="modern" style:font-pitch="fixed"/><style:font-face style:name="Inconsolata" svg:font-family="Inconsolata" style:font-adornments="Regular" style:font-pitch="fixed"/><style:font-face style:name="Liberation Mono" svg:font-family="'Liberation Mono'" style:font-adornments="Regular" style:font-family-generic="modern" style:font-pitch="fixed"/><style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-adornments="ExtraLight" style:font-family-generic="swiss" style:font-pitch="variable"/><style:font-face style:name="Nimbus Sans L" svg:font-family="'Nimbus Sans L'" style:font-pitch="variable"/><style:font-face style:name="Tahoma" svg:font-family="Tahoma, Lucidasans, 'Lucida Sans', 'Arial Unicode MS'" style:font-pitch="variable"/><style:font-face style:name="Nimbus Roman No9 L" svg:font-family="'Nimbus Roman No9 L'" style:font-family-generic="roman" style:font-pitch="variable"/><style:font-face style:name="Bitstream Vera Sans" svg:font-family="'Bitstream Vera Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/></office:font-face-decls> <office:automatic-styles> #{table} @@ -755,7 +758,7 @@ WOK br_pg << @@odf[:metadata] << @@odf[:tail] - SiSU_ODF::Source::Output.new(content,@md,@env).odf + SiSU_XML_ODF_ODT::Source::Output.new(content,@md,@env).odf @@odf={ head: [], toc: [], body: [], tail: [], book_idx: [], metadata: [] } end end @@ -766,7 +769,7 @@ WOK def odf #%odf output env=SiSU_Env::FileOp.new(@md) env.mkdir - header=SiSU_ODF_Format::ODT_Head_1_2.new(@md) + header=SiSU_XML_ODF_ODT_Format::ODT_Head_1_2.new(@md) filename="#{@env.processing_path.odt}/manifest.rdf" od=File.new(filename,'w+') od << header.manifest_rdf diff --git a/lib/sisu/v5/odf_format.rb b/lib/sisu/v5/xml_odf_odt_format.rb index 28c69c44..27628e82 100644 --- a/lib/sisu/v5/odf_format.rb +++ b/lib/sisu/v5/xml_odf_odt_format.rb @@ -59,7 +59,7 @@ ** Description: opendocument formatting, default opendocument template =end -module SiSU_ODF_Format +module SiSU_XML_ODF_ODT_Format require_relative 'param' # param.rb include SiSU_Param include SiSU_Viz @@ -170,6 +170,10 @@ module SiSU_ODF_Format @@fns=@md.fns end end + def break_line + (@md.opt.act[:maintenance][:set]==:on) \ + ? "\n" : '' + end def table_head_open(count) type=(@dob.head_) \ ? 1 @@ -191,9 +195,9 @@ module SiSU_ODF_Format when 14; 'N' else 'D' end - tag=SiSU_ODF_Format::Tags.new.set_bookmark_tag(@dob) - %{<table:table table:name="Table#{count}" table:style-name="Table#{type}">#{@p_num[:set_ref]}#{tag}#{@br}} + - %{<table:table-column table:style-name="Table#{type}.#{alpha}" table:number-columns-repeated="#{@dob.cols}"/>#{@br}} + tag=SiSU_XML_ODF_ODT_Format::Tags.new.set_bookmark_tag(@dob) + %{<table:table table:name="Table#{count}" table:style-name="Table#{type}">#{@p_num[:set_ref]}#{tag}#{break_line}} + + %{<table:table-column table:style-name="Table#{type}.#{alpha}" table:number-columns-repeated="#{@dob.cols}"/>#{break_line}} end def table_close(tablefoot='') '</table:table>' \ @@ -206,16 +210,16 @@ module SiSU_ODF_Format else 'P_table_cell' end str=str.gsub(/^~$/,'') # tilde / empty cell - %{<table:table-cell office:value-type="string">#{@br}} + - %{<text:p text:style-name="#{txt_name_cell}">#{@br}} + + %{<table:table-cell office:value-type="string">#{break_line}} + + %{<text:p text:style-name="#{txt_name_cell}">#{break_line}} + %{#{str}} + - %{</text:p>#{@br}} + - %{</table:table-cell>#{@br}} + %{</text:p>#{break_line}} + + %{</table:table-cell>#{break_line}} end def table_tag_row(str,i) - %{<table:table-row>#{@br}} + + %{<table:table-row>#{break_line}} + %{#{str}} + - %{</table:table-row>#{@br}} + %{</table:table-row>#{break_line}} end def table_tag_row_dump(str,i) txt_name_row=if i==0 \ @@ -223,13 +227,13 @@ module SiSU_ODF_Format 'Table_Heading' else 'P_table_cell' end - %{<table:table-row>#{@br}} + - %{<table:table-cell office:value-type="string">#{@br}} + - %{<text:p text:style-name="#{txt_name_row}">#{@br}} + + %{<table:table-row>#{break_line}} + + %{<table:table-cell office:value-type="string">#{break_line}} + + %{<text:p text:style-name="#{txt_name_row}">#{break_line}} + %{#{str}} + - %{</text:p>#{@br}} + - %{</table:table-cell>#{@br}} + - %{</table:table-row>#{@br}} + %{</text:p>#{break_line}} + + %{</table:table-cell>#{break_line}} + + %{</table:table-row>#{break_line}} end def table_row(row,i) row='' if row =~/^<!$/ @@ -318,7 +322,7 @@ WOK def meta_xml x=<<WOK <?xml version="1.0" encoding="UTF-8"?> -<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="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"> +<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"> <office:meta> <meta:generator>#{@generator}</meta:generator> <meta:creation-date>#{@md.generated}</meta:creation-date> @@ -334,7 +338,7 @@ WOK def settings_xml x=<<WOK <?xml version="1.0" encoding="UTF-8"?> -<office:document-settings xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="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: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> <config:config-item-set config:name="ooo:view-settings"> <config:config-item config:name="ViewAreaTop" config:type="int">0</config:config-item> @@ -437,7 +441,7 @@ WOK def styles_xml x=<<WOK <?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:xlink="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: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> <style:font-face style:name="DejaVu Sans Mono" svg:font-family="'DejaVu Sans Mono'" style:font-adornments="Book" style:font-family-generic="modern" style:font-pitch="fixed"/> <style:font-face style:name="Nimbus Sans L" svg:font-family="'Nimbus Sans L'" style:font-pitch="variable"/> diff --git a/lib/sisu/v5/xml.rb b/lib/sisu/v5/xml_sax.rb index f9741ec1..aa701822 100644 --- a/lib/sisu/v5/xml.rb +++ b/lib/sisu/v5/xml_sax.rb @@ -66,7 +66,7 @@ module SiSU_XML_SAX include SiSU_Particulars require_relative 'sysenv' # sysenv.rb include SiSU_Env - require_relative 'shared_xml' # shared_xml.rb + require_relative 'xml_shared' # xml_shared.rb include SiSU_XML_Munge require_relative 'xml_format' # xml_format.rb include SiSU_XML_Format @@ -82,7 +82,7 @@ module SiSU_XML_SAX end def read begin - @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array + @env,@md,@ao_array=@particulars.env,@particulars.md,@particulars.ao_array unless @opt.act[:quiet][:set]==:on tool=if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) @@ -114,7 +114,7 @@ module SiSU_XML_SAX private class Songsheet def initialize(particulars) - @env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars + @env,@md,@ao_array,@particulars=particulars.env,particulars.md,particulars.ao_array,particulars @file=SiSU_Env::FileOp.new(@md) end def song @@ -135,20 +135,20 @@ module SiSU_XML_SAX end end class Scroll - require_relative 'shared_txt' # shared_txt.rb + require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils require_relative 'css' # css.rb - require_relative 'shared_xhtml' # decide use, whether xml rather than xhtml + require_relative 'xhtml_shared' # decide use, whether xml rather than xhtml @@xml={ body: [], open: [], close: [], head: [] } def initialize(particulars) - @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array + @env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array @vz=SiSU_Viz::Defaults.new @trans=SiSU_XML_Munge::Trans.new(@md) @sys=SiSU_Env::SystemCall.new end def songsheet pre - @data=markup(@dal_array) + @data=markup(@ao_array) post publish end diff --git a/lib/sisu/v5/xml_scaffold_structure_collapsed.rb b/lib/sisu/v5/xml_scaffold_structure_collapsed.rb index a90207ff..9a095f4b 100644 --- a/lib/sisu/v5/xml_scaffold_structure_collapsed.rb +++ b/lib/sisu/v5/xml_scaffold_structure_collapsed.rb @@ -62,7 +62,7 @@ module SiSU_XML_Scaffold_Structure_Collapse require_relative 'particulars' # particulars.rb include SiSU_Particulars - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb require_relative 'sysenv' # sysenv.rb include SiSU_Env class Source @@ -73,8 +73,8 @@ module SiSU_XML_Scaffold_Structure_Collapse end def read begin - @md,@dal_array=@particulars.md,@particulars.dal_array - SiSU_XML_Scaffold_Structure_Collapse::Source::Scroll.new(@dal_array,@md).songsheet + @md,@ao_array=@particulars.md,@particulars.ao_array + SiSU_XML_Scaffold_Structure_Collapse::Source::Scroll.new(@ao_array,@md).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ diff --git a/lib/sisu/v5/xml_scaffold_structure_sisu.rb b/lib/sisu/v5/xml_scaffold_structure_sisu.rb index 64173566..2848187f 100644 --- a/lib/sisu/v5/xml_scaffold_structure_sisu.rb +++ b/lib/sisu/v5/xml_scaffold_structure_sisu.rb @@ -62,7 +62,7 @@ module SiSU_XML_Scaffold_Structure_Sisu require_relative 'particulars' # particulars.rb include SiSU_Particulars - require_relative 'dal' # dal.rb + require_relative 'ao' # ao.rb require_relative 'sysenv' # sysenv.rb include SiSU_Env class Source @@ -73,8 +73,8 @@ module SiSU_XML_Scaffold_Structure_Sisu end def read begin - @md,@dal_array=@particulars.md,@particulars.dal_array - SiSU_XML_Scaffold_Structure_Sisu::Source::Scroll.new(@dal_array,@md).songsheet + @md,@ao_array=@particulars.md,@particulars.ao_array + SiSU_XML_Scaffold_Structure_Sisu::Source::Scroll.new(@ao_array,@md).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ diff --git a/lib/sisu/v5/shared_xml.rb b/lib/sisu/v5/xml_shared.rb index af9b0992..a6092559 100644 --- a/lib/sisu/v5/shared_xml.rb +++ b/lib/sisu/v5/xml_shared.rb @@ -50,7 +50,7 @@ * Git <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/shared_xml.rb;hb=HEAD> + <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/xml_shared.rb;hb=HEAD> * Ralph Amissah <ralph@amissah.com> @@ -381,25 +381,25 @@ module SiSU_XML_Munge gsub(/<[-~]#>/,''). gsub(/href="#{Xx[:segment]}/m,'href="'). gsub(/#{Mx[:lnk_o]}([^#{Mx[:lnk_o]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{Mx[:rel_c]}]+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\.\.\/\S+?)#{Mx[:rel_c]}/, - '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\2">\1</link>'). + '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\2">\1</link>'). gsub(/#{Mx[:lnk_o]}([^#{Mx[:lnk_o]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{Mx[:rel_c]}]+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}:(\S+?)#{Mx[:rel_c]}/, - '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="../\2">\1</link>'). + '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="../\2">\1</link>'). gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]}/, - '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="#\2">\1</link>'). + '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="#\2">\1</link>'). gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))[ ]+(\d+)x(\d+)(\s+[^}]+)?#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@md.file.output_path.xml.rel_image}/\\1" width="\\2" height="\\3" />[\\1] \\4}). + %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1" width="\\2" height="\\3" />[\\1] \\4}). gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))([ ]+[^}]+)?#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@md.file.output_path.xml.rel_image}/\\1"/>\\1}). + %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1"/>\\1}). gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))[ ]+(\d+)x(\d+)(\s+[^}]+)?#{Mx[:lnk_c]}image/, - %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@md.file.output_path.xml.rel_image}/\\1" width="\\2" height="\\3" />[\\1] \\4}). + %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1" width="\\2" height="\\3" />[\\1] \\4}). gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))([ ]+[^}]+)?#{Mx[:lnk_c]}image/, - %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@md.file.output_path.xml.rel_image}/\\1"/>\\1}). + %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1"/>\\1}). gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\2">\1</link>'). #watch, compare html_tune + '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\2">\1</link>'). #watch, compare html_tune gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - %{#{@brace_url.xml_open}<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\\1">\\1</link>#{@brace_url.xml_close}}). + %{#{@brace_url.xml_open}<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\\1">\\1</link>#{@brace_url.xml_close}}). gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/, - '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\1">\1</link>') #escaped urls not linked, deal with later + '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\1">\1</link>') #escaped urls not linked, deal with later else dob.obj=dob.obj.gsub(/</m,'<').gsub(/>/m,'>') end @@ -430,32 +430,63 @@ module SiSU_XML_Munge dob.obj=tidywords(wordlist).join(' ').strip dob end - def markup_fictionbook(dob='') - dob.obj.gsub(/~\{([\d*+]+).+?\}~/,'[\1]'). - gsub(/\/\{(.+?)\}\//,'<i>\1</i>'). - gsub(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>'). - gsub(/_\{(.+?)\}_/,'<u>\1</u>'). - gsub(/-\{(.+?)\}-/,'<del>\1</del>'). - gsub(/<br(?:\s*\/)?>/,'<br />'). - gsub(/<:pb>\s*/,''). - gsub(/<[-~]#>/,''). - #temporary --> - gsub(/<:\S+?>/,''). - #<-- temporary - gsub(/<[-~]#>/,''). + def clean(str) + str=str.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;'). + gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;') + end + def markup_fictionbook(str='',is='') + str=str.gsub(/#{Mx[:en_a_o]}([\d+*]+).+?#{Mx[:en_a_c]}/m,'<a xl:href="#footnote\1" type="note">[\1]</a>'). + gsub(/&/,'&'). #sort + gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;'). gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1& '). #sort - gsub(/&([^;]{1,5})/,'&\1') #sort, rough estimate, revisit #WATCH found in node not sax - gsub(/(#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif))[ ]+.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/, - "<image.path>#{@md.file.output_path.xml.rel_image}\/\\1</image.path>"). - gsub(/ |#{Mx[:nbsp]}/,' ') - wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17 - dob.obj=tidywords(wordlist).join(' ').strip + gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;') + str=str.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless is==:table + str=str.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>'). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>'). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>'). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>'). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>'). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>'). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>'). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>'). + gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>'). # tt, kbd + gsub(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg|gif)).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/m,'<image xl:href="#\1" />'). + gsub(/#{Mx[:url_o]}(.+?)#{Mx[:url_c]}/,"#{Dx[:url_o]}\\1#{Dx[:url_c]}"). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'<a name="\1"></a>'). + gsub(/#{Mx[:gl_bullet]}/m,'● '). # not available + gsub(/#{Mx[:nbsp]}/,' '). # not available + gsub(/<(p|br)>/,'<\1 />') + clean(str) + end + def markup_docbook(dob='') # work on, initially a copy of fictionbook! + dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m,'<footnote>\1</footnote>'). + gsub(/&/,'&'). #sort + gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;'). + gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1& '). #sort + gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;') + dob.obj=dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is==:table + dob.obj=dob.obj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>'). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>'). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>'). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>'). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>'). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>'). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>'). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>'). + gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>'). # tt, kbd + gsub(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg|gif)).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/m,'<image xl:href="../../_sisu/image/\1" />'). #taken unmodified except path from fictionbook + gsub(/#{Mx[:url_o]}(.+?)#{Mx[:url_c]}/,"#{Dx[:url_o]}\\1#{Dx[:url_c]}"). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'<a name="\1"></a>'). + gsub(/#{Mx[:gl_bullet]}/m,'● '). # not available + gsub(/#{Mx[:nbsp]}/,' '). # not available + gsub(/<(p|br)>/,'<\1 />') + dob.obj=clean(dob.obj) dob end def markup_group(dob='') dob.obj=dob.obj.gsub(/</,'<').gsub(/>/,'>'). gsub(/<:?br(?:\s+\/)?>/,'<br />'). - gsub(/<(link xmlns:xlink=".+?")>/,'<\1>'). + gsub(/<(link xmlns:xl=".+?")>/,'<\1>'). gsub(/<(\/link)>/,'<\1>'). gsub(/<(\/?en)>/,'<\1>') dob @@ -463,7 +494,7 @@ module SiSU_XML_Munge def markup_block(dob='') dob.obj=dob.obj.gsub(/</,'<').gsub(/>/,'>'). gsub(/<:?br(?:\s+\/)?>/,'<br />'). - gsub(/<(link xmlns:xlink=".+?")>/,'<\1>'). + gsub(/<(link xmlns:xl=".+?")>/,'<\1>'). gsub(/<(\/link)>/,'<\1>'). gsub(/<(\/?en)>/,'<\1>') dob diff --git a/man/man1/sisu.1 b/man/man1/sisu.1 index 71251228..a692a9f4 100644 --- a/man/man1/sisu.1 +++ b/man/man1/sisu.1 @@ -1,4 +1,4 @@ -.TH "sisu" "1" "2013-07-25" "4.1.8" "SiSU" +.TH "sisu" "1" "2013-11-27" "5.1.0" "SiSU" .br .SH NAME .br @@ -266,6 +266,12 @@ footnotes at end of each paragraph that contains them [ -A for equivalent dos endnotes --footnotes for footnotes at the end of each paragraph --unix for unix linefeed (default) --msdos for msdos linefeed) .TP +.B --ao [filename/wildcard/url] +assumed for most other flags, creates new intermediate files for processing +(abstract objects, document abstraction) that is used in all subsequent +processing of other output. This step is assumed for most processing flags. To +skip it see -n. Alias -m. (sisu v5) +.TP .B -b [filename/wildcard] see --xhtml .TP @@ -322,13 +328,16 @@ see --sqlite .TP .B --dal [filename/wildcard/url] assumed for most other flags, creates new intermediate files for processing -(document abstraction) that is used in all subsequent processing of other -output. This step is assumed for most processing flags. To skip it see -n. -Alias -m +(abstract objects, document abstraction) that is used in all subsequent +processing of other output. This step is assumed for most processing flags. To +skip it see -n. Renamed --ao (abstract objects) in sisu v5. Alias -m .TP .B --delete [filename/wildcard] see --zap .TP +.B --docbook [filename/wildcard/url] +docbook smart text (sisu v5) +.TP .B --dump[=directory_path] [filename/wildcard] places output in directory specified, if none is specified in the current directory (pwd). Unlike using default settings @@ -368,6 +377,9 @@ see --sample-search-form .B -f [optional string part of filename] see --find .TP +.B --fictionbook [filename/wildcard/url] +fictionbook smart text (sisu v5) +.TP .B --find [optional string part of filename] without match string, glob all .sst .ssm files in directory (including language subdirectories). With match string, find files that match given string in @@ -457,6 +469,9 @@ see --dal (document abstraction level/layer) maintenance mode, interim processing files are preserved and their locations indicated. (also see -V). Aliases -M and --keep-processing-files. .TP +.B --markdown [filename/wildcard/url] +markdown smart text (sisu v5) +.TP .B --manpage [filename/wildcard] produces man page of file, not suitable for all outputs. Alias -i .TP @@ -597,6 +612,9 @@ subdirectory under the current directory (pwd). Unlike using default settings .I HTML files have embedded css. Compare --dump .TP +.B --rst [filename/wildcard/url] +ReST (rST restructured text) smart text (sisu v5) +.TP .B --rsync [filename/wildcard] copies sisu output files to remote host using rsync. This requires that sisurc.yml has been provided with information on hostname and username, and @@ -693,6 +711,9 @@ see --txt .B --texinfo [filename/wildcard] produces texinfo and info file, (view with pinfo). Alias -I .TP +.B --textile [filename/wildcard/url] +textile smart text (sisu v5) +.TP .B --txt [filename/wildcard] produces .I plaintext @@ -702,6 +723,18 @@ footnotes at end of each paragraph that contains them [ -A for equivalent dos endnotes --footnotes for footnotes at the end of each paragraph --unix for unix linefeed (default) --msdos for msdos linefeed). Alias -t .TP +.B --txt-asciitext [filename/wildcard] +see --asciitext +.TP +.B --txt-markdown [filename/wildcard] +see --markdown +.TP +.B --txt-rst [filename/wildcard] +see --rst +.TP +.B --txt-textile [filename/wildcard] +see --textile +.TP .B -U [filename/wildcard] see --urls .TP @@ -1596,7 +1629,7 @@ normal text [^**] continues .nf normal text ~[* editors notes, numbered asterisk footnote/endnote series ]~ continues -normal text ~[+ editors notes, numbered asterisk footnote/endnote series ]~ continues +normal text ~[+ editors notes, numbered plus symbol footnote/endnote series ]~ continues .fi .BR @@ -1855,7 +1888,7 @@ information in each column .BR .B markup example: -[^17] +[^18] .nf !_ Table 3.1: Contributors to Wikipedia, January 2001 - June 2005 @@ -2257,7 +2290,7 @@ its own: page new =\e= or breaks the page, starts a new page. .BR -page break -\\- or breaks a column, starts a new column, if using columns, +page break -\e- or breaks a column, starts a new column, if using columns, else breaks the page, starts a new page. .BR @@ -2335,7 +2368,10 @@ If multiple sub-terms appear under one paragraph, they are separated under the main term heading from each other by a pipe symbol. .nf Paragraph containing main term, second term and sub-term. - ={Main term:sub-term+1|second sub-term} + ={Main term: + sub-term+2|second sub-term; + Another term + } A paragraph that continues discussion of the first sub-term .fi @@ -2347,6 +2383,7 @@ additional paragraph. The logical structure of the resulting index would be: Main term, 1, sub-term, 1-3, second sub-term, 1, + Another term, 1 .fi .SH COMPOSITE DOCUMENTS MARKUP @@ -2384,7 +2421,36 @@ The form described above should be relied on. Within the .I Vim editor it results in the text thus linked becoming hyperlinked to the document it is calling in which is convenient for editing. +.SH SUBSTITUTIONS + + +.BR + +.B markup example: +.nf +The current Debian is ${debian_stable} the next debian will be ${debian_testing} +Configure substitution in _sisu/sisu_document_make + +@make: +:substitute: /${debian_stable}/,'*{Wheezy}*' /${debian_testing}/,'*{Jessie}*' +.fi + + +.BR + +.B resulting output: + +.BR +The current +.B Debian +is +.B Wheezy +the next debian will be +.B Jessie + +.BR +Configure substitution in _sisu/sisu_document_make .SH SISU FILETYPES .BR @@ -2668,8 +2734,7 @@ supported by XeTeX polyglosia. .SH GENERAL DIRECTORIES .nf - ./subject_name/ - +\./subject_name/ % files stored at this level e.g. sisu_manual.sst or % for sisu v3 may be under language sub-directories % e.g. @@ -3788,7 +3853,7 @@ editors notes, numbered asterisk footnote/endnote series .BR .TP .BI +2. -editors notes, numbered asterisk footnote/endnote series +editors notes, numbered plus symbol footnote/endnote series .BR .TP @@ -147,15 +147,17 @@ def chmod_util(place) end end #%% using a directory and its mapping -def setup_find_create(dir_get,dir_put) #primary, +def setup_find_create(dir_get,dir_put,exclude_files=['']) #primary, Find.find("#{@p.dir.pwd}/#{dir_get}") do |f| stub=f.scan(/#{@p.dir.pwd}\/#{dir_get}\/(\S+)/).join place="#{dir_put}/#{stub}" action=case when File.file?(f) - cp(f,place) - chmod_file(place) - "-> #{dir_put}/" + unless f =~/#{exclude_files.inspect}/ + cp(f,place) + chmod_file(place) + "-> #{dir_put}/" + end when File.directory?(f) FileUtils.mkpath(place) unless FileTest.directory?(place) "./#{dir_get}/" @@ -202,6 +204,212 @@ def system_info WOK end +def sisu_version_info + def version_file + def v4 + 'data/sisu/v4/v/version.yml' + #"#{Dir.pwd}/data/sisu/v4/v/version.yml" + end + def v5 + 'data/sisu/v5/v/version.yml' + end + self + end + def v4 + v="#{Dir.pwd}/#{version_file.v4}" + if File.exist?(v) + YAML::load(File::open(v)) + else '' + end + end + def v5 + v="#{Dir.pwd}/#{version_file.v5}" + if File.exist?(v) + YAML::load(File::open(v)) + else '' + end + end + def current + puts v4 + puts v5 + end + def system_date + `date "+%Y-%m-%d"`.strip + end + def system_date_stamp + `date "+%Yw%W/%u"`.strip + end + def set + def v4 + { + project: 'SiSU', + version: '4.2.13', + date: "#{system_date}", + date_stamp: "#{system_date_stamp}", + } + end + def v5 + { + project: 'SiSU', + version: '5.0.26', + date: "#{system_date}", + date_stamp: "#{system_date_stamp}", + } + end + def version_info_commit(filename,versioninfo,newversioninfo,existingversioninfo,version_file_is) + ans=%{update sisu version info replacing: + #{existingversioninfo.sort} +with: + #{newversioninfo.sort} + +#{version_file_is} becoming: +#{versioninfo} +proceed? } + resp=answer?(ans) + exit unless resp + fn="#{Dir.pwd}/#{filename}" + if File.writable?("#{Dir.pwd}/.") + file_version=File.new(fn,'w+') + file_version << versioninfo + file_version.close + else + puts %{*WARN* is the file or directory writable? could not create #{filename}} + end + end + def commit_v4 + versioninfo= <<-WOK +--- +:version: #{sisu_version_info.v4[:version]} +:date_stamp: #{sisu_version_info.v4[:date_stamp]} +:date: "#{sisu_version_info.v4[:date]}" +:project: #{sisu_version_info.v4[:project]} + WOK + puts version_file.v4 + version_info_commit(version_file.v4,versioninfo,set.v4,sisu_version_info.v4,version_file.v4) + end + def commit_v5 + versioninfo= <<-WOK +--- +:version: #{sisu_version_info.v5[:version]} +:date_stamp: #{sisu_version_info.v5[:date_stamp]} +:date: "#{sisu_version_info.v5[:date]}" +:project: #{sisu_version_info.v5[:project]} + WOK + puts version_file.v5 + version_info_commit(version_file.v5,versioninfo,set.v5,sisu_version_info.v5,version_file.v5) + end + def date_info + end + def changelog_header + def v4 + <<-WOK +%% #{sisu_version_info.v4[:version]}.orig.tar.xz (#{sisu_version_info.v4[:date]}:#{sisu_version_info.v4[:date_stamp]}) +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_#{sisu_version_info.v4[:version]} +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_#{sisu_version_info.v4[:version]}-1 +http://www.jus.uio.no/sisu/pkg/src/sisu_#{sisu_version_info.v4[:version]}.orig.tar.xz + sisu_#{sisu_version_info.v4[:version]}.orig.tar.xz + sisu_#{sisu_version_info.v4[:version]}-1.dsc + WOK + end + def v5 + <<-WOK +%% #{sisu_version_info.v5[:version]}.orig.tar.xz (#{sisu_version_info.v5[:date]}:#{sisu_version_info.v5[:date_stamp]}) +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_#{sisu_version_info.v5[:version]} +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_#{sisu_version_info.v5[:version]}-1 +http://www.jus.uio.no/sisu/pkg/src/sisu_#{sisu_version_info.v5[:version]}.orig.tar.xz + sisu_#{sisu_version_info.v5[:version]}.orig.tar.xz + sisu_#{sisu_version_info.v5[:version]}-1.dsc + WOK + end + self + end + self + end + self +end +def version_update_manual + puts 'date: ' + `date "+%Y-%m-%d"` + puts 'date_stamp: ' + `date "+%Yw%W/%u"` +end +def gemspecs + def sisu4 + <<-WOK +Gem::Specification.new do |s| + s.name = '#{sisu_version_info.v4[:project].downcase}' + s.version = '#{sisu_version_info.v4[:version]}' + s.date = '#{sisu_version_info.v4[:date]}' + s.summary = '#{sisu_version_info.v4[:project]}' + s.description = 'SiSU gem' + s.authors = ["Ralph Amissah"] + s.email = 'ralph.amissah@gmail.com' + s.files = Dir['lib/sisu/v4/*.rb'] + + Dir['lib/sisu/v5/*.rb'] + + Dir['data/sisu/v4/v/version.yml'] + + Dir['data/sisu/v5/v/version.yml'] + + Dir['bin/sisugem'] + + Dir['bin/sisu'] + s.license = 'GPL3' + s.executables << 'sisugem' << 'sisu' +end + WOK + end + def sisu5 + <<-WOK +Gem::Specification.new do |s| + s.name = '#{sisu_version_info.v5[:project].downcase}' + s.version = '#{sisu_version_info.v5[:version]}' + s.date = '#{sisu_version_info.v5[:date]}' + s.summary = '#{sisu_version_info.v5[:project]}' + s.description = 'SiSU gem' + s.authors = ["Ralph Amissah"] + s.email = 'ralph.amissah@gmail.com' + s.files = Dir['lib/sisu/v4/*.rb'] + + Dir['lib/sisu/v5/*.rb'] + + Dir['data/sisu/v4/v/version.yml'] + + Dir['data/sisu/v5/v/version.yml'] + + Dir['bin/sisugem'] + + Dir['bin/sisu'] + s.license = 'GPL3' + s.executables << 'sisugem' << 'sisu' +end + WOK + end + def gemspec_create(filename,gemspec) + fn="#{Dir.pwd}/#{filename}" + if File.writable?("#{Dir.pwd}/.") + file_sisu_gemspec=File.new(fn,'w+') + file_sisu_gemspec << gemspec + file_sisu_gemspec.close + else + puts %{*WARN* is the file or directory writable? could not create #{filename}} + end + end + def sisu4_gemspec_create + filename='sisu4.gemspec' + gemspec_create(filename,sisu4) + end + def sisu5_gemspec_create + filename='sisu5.gemspec' + gemspec_create(filename,sisu5) + end + def sisu4_build + system(%{ gem build sisu4.gemspec }) + end + def sisu5_build + system(%{ gem build sisu5.gemspec }) + end + def sisu4_install + system(%{ + sudo gem install --no-rdoc --no-ri --verbose sisu-#{sisu_version_info.v4[:version]}.gem + }) + end + def sisu5_install + system(%{ + sudo gem install --no-rdoc --no-ri --verbose sisu-#{sisu_version_info.v5[:version]}.gem + }) + end + self +end def project_help puts <<WOK @@ -234,10 +442,10 @@ For a more detailed and up to date list of command options use: WOK end def tasks - sys('rant -T') + system('rake -T') end - #% tasks -desc "rake/rant (as root type 'rake' or 'rant' for default action)" +#% tasks +desc "rake/rant sisu install (as root type 'rake' or 'rant')" task :default => [:default_notice,:setup_base] #task :default => [:help,:notice,:project] desc "Setup/Install #{@p.name} and try generate a file" @@ -248,6 +456,24 @@ desc "Setup/Install #{@p.name}: bin, lib and conf (no data)" task :setup_base=> [:setup_bin,:setup_lib,:setup_conf,:setup_share,:setup_man,:setup_vim] desc "Setup/Install #{@p.name} bin, lib and conf (no data and no attempt to do postinstall setup)" task :base=> [:setup_base] +desc "check package version" +task :sisuversion => [:sisu_version] +desc "set package version" +task :sisuversionset => [:sisu_version_set] +desc "check gempsec info" +task :gemspec => [:gemspec_info] +desc "create gempsec" +task :gemspecscreate => [:gemspecs_create] +desc "build gem" +task :gembuild => [:gem_build] +desc "install gem" +task :geminstall => [:gem_install] +desc "build and install gem" +task :gembuildinstall => [:gem_build,:gem_install] +desc "create, build and install sisu gem" +task :gemcbi => [:gemspecs_create,:gem_build,:gem_install] +desc "check changelog headers" +task :changelogheaders => [:changelog_headers] if File.directory?('bin') #bin desc "Setup #{@p.name} bin only, synonym :bin" task :bin => [:setup_bin] @@ -297,10 +523,6 @@ if File.directory?('conf') #conf desc "Remove #{@p.name} conf only" #remove conf task :remove_conf => [:remove_conf] end -#if File.directory?('data') #data -# desc "Remove #{@p.name} data only" #remove data -# task :remove_data => [:remove_data] -#end desc "Re-setup #{@p.name}, synonym :reinstall" #resetup reinstall task :resetup => [:remove, :setup] task :reinstall => [:remove, :setup] @@ -345,8 +567,6 @@ task :help => [:project_help,:system_info,:tasks] #desc "Setup/Install #{@p.name} (uses filelist)" task :install => [:default_notice,:project] task :install_bin => [:setup_bin] -desc '[make rant independent install file]' -task :create_rant_independent_task_file => [:rant_independence] #%% setup/install tasks task :rant_independence do #notice resp='' @@ -381,7 +601,8 @@ task :default2 do #secondary setup_find_cp_r('man',@p.dir.man) if File.directory?('man') end task :setup_bin do #bin - setup_find_create('bin',@p.dir.bin) if File.directory?('bin') + exclude_files=['sisugem'] + setup_find_create('bin',@p.dir.bin,exclude_files) if File.directory?('bin') end task :setup_lib do #lib setup_find_create('lib',@p.dir.lib) if File.directory?('lib') @@ -402,6 +623,50 @@ end task :setup_vim do #man setup_find_create('data/vim',@p.dir.vim) if File.directory?('data/vim') #man pages end +task :gemspec_info do #man + version_update_manual + gemspecs.sisu4 + gemspecs.sisu5 +end +task :gemspecs_create do #man + gemspecs.sisu4_gemspec_create + gemspecs.sisu5_gemspec_create +end +task :gem_build do #man + gemspecs.sisu4_build + gemspecs.sisu5_build +end +task :gem_install do #man + gemspecs.sisu4_install + gemspecs.sisu5_install +end +task :changelog_headers do #man + puts '---' + puts sisu_version_info.set.changelog_header.v4 + puts '---' + puts sisu_version_info.set.changelog_header.v5 +end +task :sisu_version do #man + puts sisu_version_info.set.v4 + puts sisu_version_info.set.v5 + puts sisu_version_info.current + #version.current.each do |x| + # puts x + #end + puts sisu_version_info.v4[:project] + puts sisu_version_info.v4[:version] + puts sisu_version_info.v4[:date] + puts sisu_version_info.v4[:date_stamp] + puts '---' + puts sisu_version_info.v5[:project] + puts sisu_version_info.v5[:version] + puts sisu_version_info.v5[:date] + puts sisu_version_info.v5[:date_stamp] +end +task :sisu_version_set do #man + sisu_version_info.set.commit_v4 + sisu_version_info.set.commit_v5 +end #%% post install #%% clobber/remove tasks task :remove_bin do |