aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2012-03-19 22:07:29 -0400
committerRalph Amissah <ralph@amissah.com>2012-03-19 22:07:33 -0400
commit6811ac91f21a434fc7d967c11e1b20f33918c6ea (patch)
tree30f39674ca96a79f8a604a9f02d571f24320e221
parentv3: 3.2.0 version & changelog "opened" (diff)
v3: 3.2 branch is main (v3dv --> v3); dev (v3dv) branch directories removed
* v3dv (3.2) "merged" into v3 (previously 3.1) (& removed) * conf/sisu/v3dv --> conf/sisu/v3 * data/sisu/v3dv --> data/sisu/v3 * lib/sisu/v3dv --> lib/sisu/v3 * bin/sisu* (v3dv references changed to v3) * (--dev modifier (superfluous for the time being) runs main v3 branch)
-rw-r--r--bin/sisu2
-rw-r--r--bin/sisu22
-rw-r--r--bin/sisu32
-rw-r--r--bin/sisu_termsheet2
-rw-r--r--bin/sisu_webrick2
-rw-r--r--conf/sisu/v3/sisurc.yml10
-rw-r--r--conf/sisu/v3dv/sisurc.yml146
-rw-r--r--data/doc/sisu/CHANGELOG_v36
-rw-r--r--data/sisu/v3/conf/convert/modify.rb2
-rw-r--r--data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim6
-rw-r--r--data/sisu/v3/v/version.yml6
-rw-r--r--data/sisu/v3dv/conf/cgi-bin/sisu_search_pgsql.cgi904
-rw-r--r--data/sisu/v3dv/conf/cgi-bin/sisu_search_sqlite.cgi901
-rw-r--r--data/sisu/v3dv/conf/completion/README7
-rw-r--r--data/sisu/v3dv/conf/completion/_sisu64
-rw-r--r--data/sisu/v3dv/conf/convert/kdissert_to_sisu161
-rw-r--r--data/sisu/v3dv/conf/convert/modify.rb376
-rw-r--r--data/sisu/v3dv/conf/convert/sisu_convert519
-rw-r--r--data/sisu/v3dv/conf/convert/wvHtml.xml388
-rw-r--r--data/sisu/v3dv/conf/convert/wvSiSU.xml360
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/README90
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/diakonos/diakonos.conf1159
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/emacs/README5
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/emacs/sisu-mode.el368
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/gedit/sisu.lang128
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/kate/sisu.xml178
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/nano/nanorc221
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/nedit/sisu_nedit.pats79
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/8.vim65
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-ruby.vim65
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim65
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal.vim65
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/slate.vim75
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-ruby.vim65
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-sisu.vim65
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/filetype.vim8
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/ftplugin/sisu.vim182
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu.vim266
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu_next.vim281
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssi.tpl40
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssm.tpl40
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/sst.tpl40
-rw-r--r--data/sisu/v3dv/conf/editor-syntax-etc/vim/vim-sisu.yaml7
-rw-r--r--data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu115
-rw-r--r--data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu_www115
-rw-r--r--data/sisu/v3dv/conf/ruby/irbrc19
-rw-r--r--data/sisu/v3dv/v/version.yml5
-rw-r--r--lib/sisu/v3/author_format.rb8
-rw-r--r--lib/sisu/v3/cgi.rb6
-rw-r--r--lib/sisu/v3/cgi_pgsql.rb38
-rw-r--r--lib/sisu/v3/cgi_sql_common.rb88
-rw-r--r--lib/sisu/v3/cgi_sqlite.rb28
-rw-r--r--lib/sisu/v3/character_encoding.rb6
-rw-r--r--lib/sisu/v3/composite.rb35
-rw-r--r--lib/sisu/v3/concordance.rb127
-rw-r--r--lib/sisu/v3/conf.rb54
-rw-r--r--lib/sisu/v3/constants.rb4
-rw-r--r--lib/sisu/v3/css.rb104
-rw-r--r--lib/sisu/v3/dal.rb86
-rw-r--r--lib/sisu/v3/dal_character_check.rb35
-rw-r--r--lib/sisu/v3/dal_doc_objects.rb76
-rw-r--r--lib/sisu/v3/dal_doc_str.rb320
-rw-r--r--lib/sisu/v3/dal_endnotes.rb14
-rw-r--r--lib/sisu/v3/dal_expand_insertions.rb20
-rw-r--r--lib/sisu/v3/dal_hash_digest.rb41
-rw-r--r--lib/sisu/v3/dal_idx.rb40
-rw-r--r--lib/sisu/v3/dal_images.rb22
-rw-r--r--lib/sisu/v3/dal_metadata.rb8
-rw-r--r--lib/sisu/v3/dal_numbering.rb121
-rw-r--r--lib/sisu/v3/dal_substitutions_and_insertions.rb30
-rw-r--r--lib/sisu/v3/dal_syntax.rb456
-rw-r--r--lib/sisu/v3/db_columns.rb188
-rw-r--r--lib/sisu/v3/db_create.rb20
-rw-r--r--lib/sisu/v3/db_dbi.rb24
-rw-r--r--lib/sisu/v3/db_drop.rb10
-rw-r--r--lib/sisu/v3/db_import.rb236
-rw-r--r--lib/sisu/v3/db_indexes.rb2
-rw-r--r--lib/sisu/v3/db_load_tuple.rb12
-rw-r--r--lib/sisu/v3/db_remove.rb4
-rw-r--r--lib/sisu/v3/db_select.rb73
-rw-r--r--lib/sisu/v3/db_sqltxt.rb62
-rw-r--r--lib/sisu/v3/db_tests.rb2
-rw-r--r--lib/sisu/v3/dbi.rb16
-rw-r--r--lib/sisu/v3/dbi_discreet.rb (renamed from lib/sisu/v3dv/dbi_discreet.rb)0
-rw-r--r--lib/sisu/v3/defaults.rb30
-rw-r--r--lib/sisu/v3/digests.rb36
-rw-r--r--lib/sisu/v3/embedded.rb20
-rw-r--r--lib/sisu/v3/epub.rb213
-rw-r--r--lib/sisu/v3/epub_concordance.rb93
-rw-r--r--lib/sisu/v3/epub_format.rb314
-rw-r--r--lib/sisu/v3/epub_segments.rb221
-rw-r--r--lib/sisu/v3/epub_tune.rb370
-rw-r--r--lib/sisu/v3/errors.rb4
-rw-r--r--lib/sisu/v3/git.rb8
-rw-r--r--lib/sisu/v3/harvest.rb10
-rw-r--r--lib/sisu/v3/harvest_authors.rb28
-rw-r--r--lib/sisu/v3/harvest_topics.rb28
-rw-r--r--lib/sisu/v3/help.rb26
-rw-r--r--lib/sisu/v3/html.rb215
-rw-r--r--lib/sisu/v3/html_format.rb314
-rw-r--r--lib/sisu/v3/html_minitoc.rb73
-rw-r--r--lib/sisu/v3/html_promo.rb31
-rw-r--r--lib/sisu/v3/html_scroll.rb59
-rw-r--r--lib/sisu/v3/html_segments.rb307
-rw-r--r--lib/sisu/v3/html_table.rb4
-rw-r--r--lib/sisu/v3/html_tune.rb308
-rw-r--r--lib/sisu/v3/hub.rb93
-rw-r--r--lib/sisu/v3/i18n.rb2
-rw-r--r--lib/sisu/v3/manifest.rb135
-rw-r--r--lib/sisu/v3/manpage.rb204
-rw-r--r--lib/sisu/v3/manpage_format.rb8
-rw-r--r--lib/sisu/v3/odf.rb297
-rw-r--r--lib/sisu/v3/odf_format.rb42
-rw-r--r--lib/sisu/v3/options.rb334
-rw-r--r--lib/sisu/v3/param.rb209
-rw-r--r--lib/sisu/v3/param_identify_markup.rb4
-rw-r--r--lib/sisu/v3/particulars.rb26
-rw-r--r--lib/sisu/v3/plaintext.rb198
-rw-r--r--lib/sisu/v3/plaintext_format.rb12
-rw-r--r--lib/sisu/v3/po4a.rb246
-rw-r--r--lib/sisu/v3/po4a_set.rb22
-rw-r--r--lib/sisu/v3/qrcode.rb46
-rw-r--r--lib/sisu/v3/relaxng.rb2
-rw-r--r--lib/sisu/v3/remote.rb23
-rw-r--r--lib/sisu/v3/rexml.rb6
-rw-r--r--lib/sisu/v3/screen_text_color.rb2
-rw-r--r--lib/sisu/v3/share_src.rb4
-rw-r--r--lib/sisu/v3/share_src_kdissert.rb4
-rw-r--r--lib/sisu/v3/shared_html.rb4
-rw-r--r--lib/sisu/v3/shared_html_lite.rb108
-rw-r--r--lib/sisu/v3/shared_images.rb (renamed from lib/sisu/v3dv/shared_images.rb)0
-rw-r--r--lib/sisu/v3/shared_markup_alt.rb174
-rw-r--r--lib/sisu/v3/shared_metadata.rb274
-rw-r--r--lib/sisu/v3/shared_sem.rb2
-rw-r--r--lib/sisu/v3/shared_txt.rb10
-rw-r--r--lib/sisu/v3/shared_xhtml.rb4
-rw-r--r--lib/sisu/v3/shared_xml.rb701
-rw-r--r--lib/sisu/v3/sisupod_make.rb21
-rw-r--r--lib/sisu/v3/sitemaps.rb24
-rw-r--r--lib/sisu/v3/spell.rb30
-rw-r--r--lib/sisu/v3/sst_convert_markup.rb18
-rw-r--r--lib/sisu/v3/sst_do_inline_footnotes.rb44
-rw-r--r--lib/sisu/v3/sst_from_xml.rb4
-rw-r--r--lib/sisu/v3/sst_identify_markup.rb36
-rw-r--r--lib/sisu/v3/sst_to_s_xml_sax.rb64
-rw-r--r--lib/sisu/v3/sysenv.rb1318
-rw-r--r--lib/sisu/v3/termsheet.rb4
-rw-r--r--lib/sisu/v3/texinfo.rb197
-rw-r--r--lib/sisu/v3/texinfo_format.rb294
-rw-r--r--lib/sisu/v3/texpdf.rb289
-rw-r--r--lib/sisu/v3/texpdf_format.rb514
-rw-r--r--lib/sisu/v3/update.rb14
-rw-r--r--lib/sisu/v3/urls.rb18
-rw-r--r--lib/sisu/v3/webrick.rb10
-rw-r--r--lib/sisu/v3/wikispeak.rb48
-rw-r--r--lib/sisu/v3/xhtml.rb124
-rw-r--r--lib/sisu/v3/xhtml_table.rb10
-rw-r--r--lib/sisu/v3/xml.rb127
-rw-r--r--lib/sisu/v3/xml_dom.rb107
-rw-r--r--lib/sisu/v3/xml_fictionbook.rb24
-rw-r--r--lib/sisu/v3/xml_format.rb120
-rw-r--r--lib/sisu/v3/xml_md_oai_pmh_dc.rb8
-rw-r--r--lib/sisu/v3/xml_scaffold.rb14
-rw-r--r--lib/sisu/v3/xml_tables.rb54
-rw-r--r--lib/sisu/v3/zap.rb6
-rw-r--r--lib/sisu/v3dv/air.rb82
-rw-r--r--lib/sisu/v3dv/author_format.rb113
-rw-r--r--lib/sisu/v3dv/cgi.rb83
-rw-r--r--lib/sisu/v3dv/cgi_pgsql.rb230
-rw-r--r--lib/sisu/v3dv/cgi_sql_common.rb1073
-rw-r--r--lib/sisu/v3dv/cgi_sqlite.rb217
-rw-r--r--lib/sisu/v3dv/character_encoding.rb379
-rw-r--r--lib/sisu/v3dv/composite.rb272
-rw-r--r--lib/sisu/v3dv/concordance.rb369
-rw-r--r--lib/sisu/v3dv/conf.rb247
-rw-r--r--lib/sisu/v3dv/constants.rb285
-rw-r--r--lib/sisu/v3dv/css.rb3424
-rw-r--r--lib/sisu/v3dv/dal.rb506
-rw-r--r--lib/sisu/v3dv/dal_character_check.rb104
-rw-r--r--lib/sisu/v3dv/dal_doc_objects.rb446
-rw-r--r--lib/sisu/v3dv/dal_doc_str.rb1047
-rw-r--r--lib/sisu/v3dv/dal_endnotes.rb125
-rw-r--r--lib/sisu/v3dv/dal_expand_insertions.rb379
-rw-r--r--lib/sisu/v3dv/dal_hash_digest.rb156
-rw-r--r--lib/sisu/v3dv/dal_idx.rb357
-rw-r--r--lib/sisu/v3dv/dal_images.rb158
-rw-r--r--lib/sisu/v3dv/dal_metadata.rb79
-rw-r--r--lib/sisu/v3dv/dal_numbering.rb470
-rw-r--r--lib/sisu/v3dv/dal_substitutions_and_insertions.rb156
-rw-r--r--lib/sisu/v3dv/dal_syntax.rb554
-rw-r--r--lib/sisu/v3dv/db_columns.rb2108
-rw-r--r--lib/sisu/v3dv/db_create.rb614
-rw-r--r--lib/sisu/v3dv/db_dbi.rb93
-rw-r--r--lib/sisu/v3dv/db_drop.rb187
-rw-r--r--lib/sisu/v3dv/db_import.rb690
-rw-r--r--lib/sisu/v3dv/db_indexes.rb114
-rw-r--r--lib/sisu/v3dv/db_load_tuple.rb333
-rw-r--r--lib/sisu/v3dv/db_remove.rb119
-rw-r--r--lib/sisu/v3dv/db_select.rb216
-rw-r--r--lib/sisu/v3dv/db_sqltxt.rb130
-rw-r--r--lib/sisu/v3dv/db_tests.rb117
-rw-r--r--lib/sisu/v3dv/dbi.rb143
-rw-r--r--lib/sisu/v3dv/defaults.rb2267
-rw-r--r--lib/sisu/v3dv/digests.rb388
-rw-r--r--lib/sisu/v3dv/embedded.rb142
-rw-r--r--lib/sisu/v3dv/epub.rb669
-rw-r--r--lib/sisu/v3dv/epub_concordance.rb316
-rw-r--r--lib/sisu/v3dv/epub_format.rb2223
-rw-r--r--lib/sisu/v3dv/epub_segments.rb532
-rw-r--r--lib/sisu/v3dv/epub_tune.rb407
-rw-r--r--lib/sisu/v3dv/errors.rb81
-rw-r--r--lib/sisu/v3dv/git.rb281
-rw-r--r--lib/sisu/v3dv/harvest.rb108
-rw-r--r--lib/sisu/v3dv/harvest_authors.rb378
-rw-r--r--lib/sisu/v3dv/harvest_topics.rb650
-rw-r--r--lib/sisu/v3dv/help.rb1923
-rw-r--r--lib/sisu/v3dv/html.rb664
-rw-r--r--lib/sisu/v3dv/html_format.rb1484
-rw-r--r--lib/sisu/v3dv/html_minitoc.rb203
-rw-r--r--lib/sisu/v3dv/html_promo.rb445
-rw-r--r--lib/sisu/v3dv/html_scroll.rb210
-rw-r--r--lib/sisu/v3dv/html_segments.rb613
-rw-r--r--lib/sisu/v3dv/html_table.rb65
-rw-r--r--lib/sisu/v3dv/html_tune.rb373
-rw-r--r--lib/sisu/v3dv/hub.rb683
-rw-r--r--lib/sisu/v3dv/i18n.rb698
-rw-r--r--lib/sisu/v3dv/manifest.rb900
-rw-r--r--lib/sisu/v3dv/manpage.rb430
-rw-r--r--lib/sisu/v3dv/manpage_format.rb108
-rw-r--r--lib/sisu/v3dv/odf.rb786
-rw-r--r--lib/sisu/v3dv/odf_format.rb607
-rw-r--r--lib/sisu/v3dv/options.rb795
-rw-r--r--lib/sisu/v3dv/param.rb1623
-rw-r--r--lib/sisu/v3dv/param_identify_markup.rb168
-rw-r--r--lib/sisu/v3dv/particulars.rb210
-rw-r--r--lib/sisu/v3dv/plaintext.rb432
-rw-r--r--lib/sisu/v3dv/plaintext_format.rb113
-rw-r--r--lib/sisu/v3dv/po4a.rb984
-rw-r--r--lib/sisu/v3dv/po4a_set.rb300
-rw-r--r--lib/sisu/v3dv/prog_text_translation.rb1704
-rw-r--r--lib/sisu/v3dv/qrcode.rb738
-rw-r--r--lib/sisu/v3dv/relaxng.rb1161
-rw-r--r--lib/sisu/v3dv/remote.rb211
-rw-r--r--lib/sisu/v3dv/response.rb75
-rw-r--r--lib/sisu/v3dv/rexml.rb121
-rw-r--r--lib/sisu/v3dv/screen_text_color.rb487
-rw-r--r--lib/sisu/v3dv/share_src.rb95
-rw-r--r--lib/sisu/v3dv/share_src_kdissert.rb88
-rw-r--r--lib/sisu/v3dv/shared_html.rb65
-rw-r--r--lib/sisu/v3dv/shared_html_lite.rb321
-rw-r--r--lib/sisu/v3dv/shared_markup_alt.rb322
-rw-r--r--lib/sisu/v3dv/shared_metadata.rb1361
-rw-r--r--lib/sisu/v3dv/shared_sem.rb156
-rw-r--r--lib/sisu/v3dv/shared_txt.rb232
-rw-r--r--lib/sisu/v3dv/shared_xhtml.rb65
-rw-r--r--lib/sisu/v3dv/shared_xml.rb718
-rw-r--r--lib/sisu/v3dv/sisupod_make.rb368
-rw-r--r--lib/sisu/v3dv/sitemaps.rb215
-rw-r--r--lib/sisu/v3dv/spell.rb101
-rw-r--r--lib/sisu/v3dv/sst_convert_markup.rb312
-rw-r--r--lib/sisu/v3dv/sst_do_inline_footnotes.rb472
-rw-r--r--lib/sisu/v3dv/sst_from_xml.rb169
-rw-r--r--lib/sisu/v3dv/sst_identify_markup.rb474
-rw-r--r--lib/sisu/v3dv/sst_to_s_xml_sax.rb453
-rw-r--r--lib/sisu/v3dv/sysenv.rb5853
-rw-r--r--lib/sisu/v3dv/termsheet.rb166
-rw-r--r--lib/sisu/v3dv/texinfo.rb415
-rw-r--r--lib/sisu/v3dv/texinfo_format.rb573
-rw-r--r--lib/sisu/v3dv/texpdf.rb963
-rw-r--r--lib/sisu/v3dv/texpdf_format.rb1621
-rw-r--r--lib/sisu/v3dv/update.rb136
-rw-r--r--lib/sisu/v3dv/urls.rb427
-rw-r--r--lib/sisu/v3dv/webrick.rb174
-rw-r--r--lib/sisu/v3dv/wikispeak.rb373
-rw-r--r--lib/sisu/v3dv/xhtml.rb432
-rw-r--r--lib/sisu/v3dv/xhtml_table.rb99
-rw-r--r--lib/sisu/v3dv/xml.rb466
-rw-r--r--lib/sisu/v3dv/xml_dom.rb539
-rw-r--r--lib/sisu/v3dv/xml_fictionbook.rb300
-rw-r--r--lib/sisu/v3dv/xml_format.rb1443
-rw-r--r--lib/sisu/v3dv/xml_md_oai_pmh_dc.rb230
-rw-r--r--lib/sisu/v3dv/xml_scaffold.rb199
-rw-r--r--lib/sisu/v3dv/xml_tables.rb203
-rw-r--r--lib/sisu/v3dv/zap.rb83
284 files changed, 6441 insertions, 77714 deletions
diff --git a/bin/sisu b/bin/sisu
index a7440f9f..c95fa9f9 100644
--- a/bin/sisu
+++ b/bin/sisu
@@ -53,7 +53,7 @@ WOK
'v3'
when /--dev/
check_sisu_dev_ruby_version?
- 'v3dv'
+ 'v3' #'v3dv'
else
check_sisu_stable_ruby_version?
'v3'
diff --git a/bin/sisu2 b/bin/sisu2
index 95c3c818..7b984a8e 100644
--- a/bin/sisu2
+++ b/bin/sisu2
@@ -53,7 +53,7 @@ WOK
'v3'
when /--dev/
check_sisu_dev_ruby_version?
- 'v3dv'
+ 'v3' #'v3dv'
else
check_sisu_legacy_ruby_version?
'v2'
diff --git a/bin/sisu3 b/bin/sisu3
index a7440f9f..c95fa9f9 100644
--- a/bin/sisu3
+++ b/bin/sisu3
@@ -53,7 +53,7 @@ WOK
'v3'
when /--dev/
check_sisu_dev_ruby_version?
- 'v3dv'
+ 'v3' #'v3dv'
else
check_sisu_stable_ruby_version?
'v3'
diff --git a/bin/sisu_termsheet b/bin/sisu_termsheet
index 11e042ef..46608c72 100644
--- a/bin/sisu_termsheet
+++ b/bin/sisu_termsheet
@@ -52,7 +52,7 @@ WOK
'v3'
when /--dev/
check_sisu_dev_ruby_version?
- 'v3dv'
+ 'v3' #'v3dv'
else
check_sisu_stable_ruby_version?
'v3'
diff --git a/bin/sisu_webrick b/bin/sisu_webrick
index 65b6a061..5bd56108 100644
--- a/bin/sisu_webrick
+++ b/bin/sisu_webrick
@@ -52,7 +52,7 @@ WOK
'v3'
when /--dev/
check_sisu_dev_ruby_version?
- 'v3dv'
+ 'v3' #'v3dv'
else
check_sisu_stable_ruby_version?
'v3'
diff --git a/conf/sisu/v3/sisurc.yml b/conf/sisu/v3/sisurc.yml
index 0d95d4c6..de2288f9 100644
--- a/conf/sisu/v3/sisurc.yml
+++ b/conf/sisu/v3/sisurc.yml
@@ -49,11 +49,11 @@ show_output_on: 'filesystem_url'
#% flag - set (non-default) processing flag shortcuts -1, -2 etc. (here adding colour and verbosity as default)
flag:
color: true # making colour default -c is toggle, and will now toggle colour off
- default: '-NhewpotbxXyYv' # -m run by default; includes verbose
+ default: '-NhewpotbxXyYdv' # -m run by default; includes verbose
i: '-Nhewpoty' # -m run by default
- ii: '-NhewpotbxX' # -m run by default
- iii: '-NhewpotbxXY' # -m run by default
- iv: '-NhewpotbxXiIY' # -m run by default
+ ii: '-NhewpotbxXd' # -m run by default
+ iii: '-NhewpotbxXYd' # -m run by default
+ iv: '-NhewpotbxXiIYd' # -m run by default
v: '-NhewpotbxXYDv --update' # -m run by default; includes verbose
#% papersize, (LaTeX/pdf) available values: A4, US_letter, book_b5, book_a5, US_legal
@@ -142,5 +142,5 @@ program_set:
# action: http://search.sisudoc.org
# db: sisu
# title: sample search form
-
#promo: sisu_search_libre, sisu_icon, sisu, open_society, fsf, ruby
+#omit: minitoc
diff --git a/conf/sisu/v3dv/sisurc.yml b/conf/sisu/v3dv/sisurc.yml
deleted file mode 100644
index de2288f9..00000000
--- a/conf/sisu/v3dv/sisurc.yml
+++ /dev/null
@@ -1,146 +0,0 @@
-# Name: SiSU - Simple information Structuring Universe
-# Author: Ralph@Amissah.com
-# Description: Site wide envionment defaults set here
-# system environment info / resource configuration file, for sisu
-# License: GPL v3 or later
-# site environment configuration file
-# this file should be configured and live in
-# /etc/sisu #per environment settings, overridden by:
-# ~/.sisu #per user settings, overridden by:
-# ./_sisu #per local markup directory settings
-#% #image source directory, main path and subdirectories
-#image:
-# path: 'sisu_working'
-# public: '_sisu/image'
-# #all: 'image'
-#% presentation/web directory, main path and subdirectories (most subdirectories are created automatically based on markup directory name)
-#webserv:
-# url_root: 'http://www.your.url' #without dir stub
-# path: '/var/www' #either (i) / [full path from root] or (ii) ~/ [home] or (iii) ./ [pwd] or (iv) will be made from home
-# images: '_sisu/image'
-# man: 'man'
-# cgi: '/usr/lib/cgi-bin'
-# feed: 'feed'
-# sqlite: 'sisu/sqlite'
-# webrick_url: true
-#show_output_on: 'filesystem' #for -v and -u url information, alternatives: 'filesystem','webserver','remote_webserver','local:8111','localhost','localhost:8080','webrick','path'
-#show_output_on: 'local:8111'
-#webserv_cgi:
-# host: localhost
-# base_path: ~
-# port: '8081'
-# user: ~
-
-show_output_on: 'filesystem_url'
-#texinfo display output
-#texinfo:
-# stub: 'texinfo'
-
-##% processing directories, main path and subdirectories (appended to $HOME), using defaults set in sysenv
-#processing:
-# path: '~'
-# dir: '.sisu_processing~'
-# metaverse: 'metaverse'
-# tune: 'tune'
-# latex: 'tex'
-# texinfo: 'texinfo'
-# concord_max: 400000
-
-#% flag - set (non-default) processing flag shortcuts -1, -2 etc. (here adding colour and verbosity as default)
-flag:
- color: true # making colour default -c is toggle, and will now toggle colour off
- default: '-NhewpotbxXyYdv' # -m run by default; includes verbose
- i: '-Nhewpoty' # -m run by default
- ii: '-NhewpotbxXd' # -m run by default
- iii: '-NhewpotbxXYd' # -m run by default
- iv: '-NhewpotbxXiIYd' # -m run by default
- v: '-NhewpotbxXYDv --update' # -m run by default; includes verbose
-
-#% papersize, (LaTeX/pdf) available values: A4, US_letter, book_b5, book_a5, US_legal
-default:
- papersize: 'A4,letter'
- #language: 'en'
- #texpdf_font: 'Liberation Sans' # 'Liberation Sans' 'Liberation Serif'
- #texpdf_font_mono: 'Liberation Mono' #'Inconsolata'
- #text_wrap: 78
- #emphasis: 'bold' #make *{emphasis}* 'bold', 'italics' or 'underscore', default if not configured is 'bold'
- #digest: 'sha' #sha is sha256, default is md5
- #multilingual: false
- #language_file: 2
-#% markup, make *{emphasis}* 'bold' or 'italics', default if not configured is 'bold'
-
-#% settings used by ssh scp
-#remote:
-# -
-# user: '[usrname]'
-# host: '[remote.hostname]'
-# path: '.' #no trailing slash eg 'sisu/www'
-# -
-# user: '[usrname]'
-# host: '[remote.hostname]'
-# path: '.' #no trailing slash eg 'sisu/www'
-
-#% webrick information
-#webrick:
-# port: '8081'
-
-#% sql database info, postgresql and sqlite
-#db:
-# share_source: false # boolean, default is false
-# postgresql:
-# port: # '[port (default is 5432)]'
-# host: # '[if not localhost, provide host tcp/ip address or domain name]''
-# user: # '[(if different from user) provide username]'
-# password: # '[password if required]'
-# sqlite:
-# path: ~ # './sisu_sqlite.db'
-# port: "**"
-
-#html:
-# quick_ref: true #default false
-# seg_title_banner: true #default false
-#odt:
-# ocn: true
-#plaintext:
-# ocn: true
-
-#% output_dir_structure_by: language (language_and_filetype); filetype; or filename (original v1 & v2)
-#output_dir_structure_by: filename
-#output_dir_structure_by: filetype
-output_dir_structure_by: language
-
-permission_set:
- zap: false
- css_modify: false
-# remote_base_site: true
-
-program_set:
- rmagick: false
-# wc: true
-# editor: true
-# postgresql: true
-# sqlite: true
-# tidy: true
-# rexml: true
-# pdflatex: true
-
-#program_select:
-# editor: 'vim'
-# pdf_viewer: 'evince'
-# web_browser: 'iceweasel'
-# console_web_browser: 'links2' #'elinks' #'w3m' #'lynx' #'links'
-# odf_viewer: 'lowriter' #'oowriter' #'abiword'
-# xml_viewer: 'xml-viewer'
-# epub_viewer: 'ebook-viewer' #'calibre' #'fbreader' #'okular'
-# info_viewer: 'pinfo -f'
-# man: 'man' #'groff -man -Tascii' # 'nroff -man'
-
-#search:
-# sisu:
-# flag: true
-## action: http://localhost:8081/cgi-bin/sisu_pgsql.cgi
-# action: http://search.sisudoc.org
-# db: sisu
-# title: sample search form
-#promo: sisu_search_libre, sisu_icon, sisu, open_society, fsf, ruby
-#omit: minitoc
diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3
index 1a95066b..e6d73e31 100644
--- a/data/doc/sisu/CHANGELOG_v3
+++ b/data/doc/sisu/CHANGELOG_v3
@@ -21,6 +21,12 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_3.2.0.orig.tar.xz
sisu_3.2.0-1.dsc
sisu_3.2.0-1.debian.tar.gz
+* v3: start 3.2: merge v3dv (3.2) into v3 (3.1)
+ * conf/sisu/v3dv --> conf/sisu/v3
+ * data/sisu/v3dv --> data/sisu/v3
+ * lib/sisu/v3dv --> lib/sisu/v3
+ * bin/sisu* (change v3dv references to v3)
+
%% 3.1.15.orig.tar.xz (2012-03-12:11/1)
http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/sisu_3.1.15
http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_3.1.15-1
diff --git a/data/sisu/v3/conf/convert/modify.rb b/data/sisu/v3/conf/convert/modify.rb
index fab7832d..8a4b9074 100644
--- a/data/sisu/v3/conf/convert/modify.rb
+++ b/data/sisu/v3/conf/convert/modify.rb
@@ -173,7 +173,7 @@ WOK
if t =~m
p m.to_s + ' -> ' + r
puts "in: #{t}"
- t.gsub!(m,r) if m and r
+ t=t.gsub(m,r) if m and r
puts "out: #{t}"
end
end
diff --git a/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim b/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim
index 4545ee8f..71d72d3a 100644
--- a/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim
+++ b/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim
@@ -1,7 +1,7 @@
" SiSU Vim syntax file
" SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
-" SiSU Markup: SiSU (sisu-3.1.0)
-" Last Change: 2011-10-03
+" SiSU Markup: SiSU (sisu-3.2.0)
+" Last Change: 2012-03-06
" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD>
"(originally looked at Ruby Vim by Mirko Nasato)
@@ -46,7 +46,7 @@ if !exists("sisu_no_identifiers")
syn match sisu_sub_header_classify "^\s\+:\(topic_register\|coverage\|format\|identifier\|keywords\|relation\|subject\|type\|dewey\|loc\|oclc\|pg\|isbn\):\s"
syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s"
syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s"
- syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|skin\|stamp\|promo\|ad\|manpage\):\s"
+ syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|skin\|stamp\|promo\|ad\|manpage\):\s"
syn match sisu_sub_header_notes "^\s\+:\(abstract\|comment\|description\|history\|prefix\|prefix_[ab]\|suffix\):\s"
"% "semantic markers: (ignore)
diff --git a/data/sisu/v3/v/version.yml b/data/sisu/v3/v/version.yml
index 7e565f62..ec85acd5 100644
--- a/data/sisu/v3/v/version.yml
+++ b/data/sisu/v3/v/version.yml
@@ -1,5 +1,5 @@
---
-:version: 3.1.15
-:date_stamp: 2012w11/1
-:date: "2012-03-12"
+:version: 3.2.0
+:date_stamp: 2012w12/1
+:date: "2012-03-19"
:project: SiSU
diff --git a/data/sisu/v3dv/conf/cgi-bin/sisu_search_pgsql.cgi b/data/sisu/v3dv/conf/cgi-bin/sisu_search_pgsql.cgi
deleted file mode 100644
index c196c756..00000000
--- a/data/sisu/v3dv/conf/cgi-bin/sisu_search_pgsql.cgi
+++ /dev/null
@@ -1,904 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- * Name: SiSU information Structuring Universe
- * Author: Ralph Amissah
- * http://www.jus.uio.no/sisu
- * http://www.jus.uio.no/sisu/SiSU/download
-
- * Description: generates naive cgi search form for search of sisu database (pgsql)
- * Name: SiSU generated sample cgi search form
-
- * Description: generated sample cgi search form for SiSU
- (SiSU is a framework for document structuring, publishing and search)
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007 Ralph Amissah All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007 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/licenses/gpl.html>
- <http://www.gnu.org/copyleft/gpl.html>
- <http://www.jus.uio.no/sisu/gpl.fsf>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
- @version='sisu_search_pgsql'
- @image_src="http://localhost/sisu/_sisu/image"
- @hosturl_db="http://localhost"
- @hosturl_files="http://www.jus.uio.no"
- @port="5432"
- user=''
- @@limit,@@offset=1000,0
- @base="#@hosturl_db/cgi-bin/#@version.cgi"
- @@canned_search_url=@base
- @color_heading='#DDFFAA'
- @color_match='#ffff48'
- class Form
- def initialize(base,search_field,selected_db,checked_index,checked_text,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can='')
- search_note='' if checked_searched !~/\S/
- the_can='' if checked_url !~/\S/
- search_field='' if checked_echo !~/\S/
- @base,@search_field,@selected_db,@checked_index,@checked_text,@checked_tip,@checked_stats,@checked_searched,@checked_url,@checked_case,@checked_echo,@checked_sql,@checked_all,@checked_none,@checked_selected,@checked_default,@search_note,@the_can=base,search_field,selected_db,checked_index,checked_text,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can
- @tip=if checked_tip =~/\S/
- '<font size="2" color="#666666">text:__; keywords:__; title:__; author:__; subject:__; description:__; publisher:__; contributor:__; date:__; type:__; format:__; identifier:__; source:__; language:__; relation:__; coverage:__; rights:__; comment:__; abstract:__; filename:__;</font><br />'
- else ''
- end
- end
- def submission_form
- search_form=<<-WOK
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>
- SiSU search form (sample): SiSU information Structuring Universe
- </title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <meta name="sourcefile" content="SiSU._sst" />
- <link rel="generator" href="http://www.jus.uio.no/sisu" />
- <link rel="shortcut icon" href="http://localhost/sisu/_sisu/image/rb7.ico" />
- <link rel="stylesheet" href="../_sisu/css/html.css" type="text/css" />
- </head>
- <body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">
- <table summary="band" border="0" cellpadding="3" cellspacing="0">
- <tr><td align="left" bgcolor="#ffffff"><a href="http://www.jus.uio.no/sisu/" target="_top"><img border="0" src="http://localhost/sisu/_sisu/image/sisu.png" alt="SiSU --&gt;" /></a></td><td>
-<!-- <p class="tiny"><a href="http://www.jus.uio.no/sisu/SiSU/">&nbsp;http://www.jus.uio.no/sisu/SiSU/</a></p> -->
- <label for="find"><b>sample search form</b></label>
- </td></tr>
- </table>
- <form action="#@base" id="Test Form" method="post">
- <table cellpadding="2">
- <tr><td valign=\"top\">
- <textarea id="find" name="find" type="text" rows="6" cols="40" maxlength="256">#@search_field</textarea>
- </td>
- <td valign=\"top\">
- #@tip
- #@search_note
- #@the_can
- </td></tr></table>
- <td valign=\"top\"><tr><td>
- <!input type="text" id="find" name="find" value="#@search_field" />
- <!input type="text" id="find" name="find" value="" />
- <font size="2" color="#222222">
- <b>to search:</b> select which database to search (drop-down menu below); enter your search query (in the form above); and <b>click on the search button</b> (below)
- <br />
- <select name="db" size="1">
- #@selected_db
- <option value="SiSU_pace">pace</option>
- <option value="SiSU_sisu">sisu</option>
- </select>
- <input type="submit" value="SiSU search" />
- <input type="radio" name="view" value="index" #@checked_index> index
- <input type="radio" name="view" value="text" #@checked_text> text / grep
- <input type="checkbox" name="casesense" #@checked_case> case sensitive
- <br />
- <input type="checkbox" name="echo" #@checked_echo> echo query
- <input type="checkbox" name="stats" #@checked_stats> result stats
- <input type="checkbox" name="url" #@checked_url> search url
- <input type="checkbox" name="searched" #@checked_searched> searched
- <input type="checkbox" name="tip" #@checked_tip> available fields
- <input type="checkbox" name="sql" #@checked_sql> sql statement
- <br />
- checks:
- <input type="radio" name="checks" value="check_default" #@checked_default> default
- <input type="radio" name="checks" value="check_selected" #@checked_selected> selected
- <input type="radio" name="checks" value="check_all" #@checked_all> all
- <input type="radio" name="checks" value="check_none" #@checked_none> none
- </font>
- </td></tr>
- </table>
- </form>
- WOK
- end
- end
- class Search_request #% search_for
- attr_accessor :text1,:keywords,:title,:author,:subject,:description,:publisher,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:filename
- def initialize(search_field='',q='')
- @search_field,@q=search_field,q
- @text1=@keywords=@title=@author=@subject=@description=@publisher=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@comment=@abstract=@owner=@date_created=@date_issued=@date_modified=@date_available=@date_valid=@filename=''
- if @search_field=~/\S/
- @text1=text_to_match('text:')
- @keywords=text_to_match('key(?:words?)?:')
- @title=text_to_match('title:') # DublinCore 1 - title
- @author=text_to_match('(?:author|creator)s?:') # DublinCore 2 - creator/author
- @subject=text_to_match('subj(?:ect)?:') # DublinCore 3 - subject
- @description=text_to_match('description:') # DublinCore 4 - description
- @publisher=text_to_match('pub(?:lisher)?:') # DublinCore 5 - publisher
- @contributor=text_to_match('contributor:') # DublinCore 6 - contributor
- @date=text_to_match('date:') # DublinCore 7 - date dd-mm-yy
- @type=text_to_match('type:') # DublinCore 8 - type
- @format=text_to_match('format:') # DublinCore 9 - format
- @identifier=text_to_match('identifier:') # DublinCore 10 - identifier
- @source=text_to_match('source:') # DublinCore 11 - source
- @language=text_to_match('language:') # DublinCore 12 - language
- @relation=text_to_match('relation:') # DublinCore 13 - relation
- @coverage=text_to_match('coverage:') # DublinCore 14 - coverage
- @rights=text_to_match('rights:') # DublinCore 15 - rights
- @comment=text_to_match('comment:')
- @abstract=text_to_match('abs(?:tract)?:')
- @owner=text_to_match('owner:')
- @date_created=text_to_match('date_created:')
- @date_issued=text_to_match('date_issued:')
- @date_modified=text_to_match('date_modified:')
- @date_available=text_to_match('date_available:')
- @date_valid=text_to_match('date_valid:')
- @filename=text_to_match('filename:')
- @text1=text_to_match unless @keywords or @author or @title or @text1 or @comment or @abstract or @rights or @subject or @publisher or @date or @filename
- else
- @text1=q['s1'] if q['s1']=~/\S/
- @keywords=q['key'] if q['key']=~/\S/
- @title=q['ti'] if q['ti']=~/\S/
- @author=q['au'] if q['au']=~/\S/
- @subject=q['sj'] if q['sj']=~/\S/
- @description=q['dsc'] if q['dsc']=~/\S/
- @publisher=q['pb'] if q['pb']=~/\S/
- @contributor=q['cntr'] if q['cntr']=~/\S/
- @date=q['dt'] if q['dt']=~/\S/
- @type=q['ty'] if q['ty']=~/\S/
- @identifier=q['id'] if q['id']=~/\S/
- @source=q['src'] if q['src']=~/\S/
- @language=q['lang'] if q['lang']=~/\S/
- @relation=q['rel'] if q['rel']=~/\S/
- @coverage=q['cov'] if q['cov']=~/\S/
- @rights=q['cr'] if q['cr']=~/\S/
- @comment=q['co'] if q['co']=~/\S/
- @abstract=q['ab'] if q['ab']=~/\S/
- @date_created=q['dtc'] if q['dtc']=~/\S/
- @date_issued=q['dti'] if q['dti']=~/\S/
- @date_modified=q['dtm'] if q['dtm']=~/\S/
- @date_available=q['dta'] if q['dta']=~/\S/
- @date_valid=q['dtv'] if q['dtv']=~/\S/
- @filename=q['fns'] if q['fns']=~/\S/
- @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000
- @@offset=q['off'] if q['off']=~/\d+/ # 0
- end
- end
- def text_to_match(identifier='')
- m={
- :string => /#{identifier}\s*(.+?)/,
- :string => /#{identifier}\s*(.+?)(?:;|\n|\r|$)/,
- :word => /#{identifier}[\s(]*(\S+)/
- }
- search_string=if @search_field =~m[:word]
- search_string=if @search_field =~m[:braces]; m[:braces].match(@search_field)[1]
- elsif @search_field =~m[:string]; m[:string].match(@search_field)[1]
- else
- str=m[:word].match(@search_field)[1]
- str.gsub!(/[()]/,'')
- str
- end
- search_string.strip!
- search_string.gsub!(/\s+/,'+')
- search_string
- #else
- # "__"
- end
- end
- end
- class Dbi_search_string
- def initialize(l,t,q,cse=false)
- @l,@t,@q,@c=l,t,q,cse
- end
- def string
- search={ :search => [],:flag => false }
- if @t =~/\S+/ or @q =~/\S+/
- if @t =~/\S+/; unescaped_search=CGI.unescape(@t)
- elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q)
- end
- search_construct=[]
- if @c
- unescaped_search.gsub!(/\s*(AND|OR)\s*/,"' \) \\1 #@l~\( '")
- unescaped_search.gsub!(/(.+)/,"#@l~\( '\\1' \)")
- else
- unescaped_search.gsub!(/\s*(AND|OR)\s*/,"' \) \\1 #@l~*\( '")
- unescaped_search.gsub!(/(.+)/,"#@l~*\( '\\1' \)")
- end
- search_construct << unescaped_search
- search_construct=search_construct.join(' ')
- search[:search] << search_construct
- search[:flag]=true
- search
- end
- search
- end
- end
- class Dbi_search_statement
- attr_reader :text_search_flag,:sql_select_body_format,:sql_select_endnotes_format,:sql_offset,:sql_limit
- def initialize(conn,search_for,q,c)
- @conn=conn
- @text_search_flag=false
- @sql_statement={ :body=>'',:endnotes=>'',:range=>'' }
- #@offset||=@@offset
- #@offset+=@@limit
- search={ :text => [],:endnotes => [] }
- cse=if c =~/\S/; true
- else false
- end
- st=Dbi_search_string.new('documents.clean',search_for.text1,q['s1'],cse).string
- se=Dbi_search_string.new('endnotes.clean',search_for.text1,q['s1'],cse).string
- @text_search_flag=st[:flag]
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << se[:search]
- end
- st=Dbi_search_string.new('metadata.keywords',search_for.keywords,q['key'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.title',search_for.title,q['ti'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.creator',search_for.author,q['au'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.subject',search_for.subject,q['sj'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.description',search_for.description,q['dsc'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.publisher',search_for.publisher,q['pb'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.contributor',search_for.contributor,q['cntr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.date',search_for.date,q['dt'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.type',search_for.type,q['ty'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.identifier',search_for.identifier,q['id'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.source',search_for.source,q['src'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.language',search_for.language,q['lang'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.relation',search_for.relation,q['rel'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.coverage',search_for.coverage,q['cov'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.rights',search_for.rights,q['cr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.comment',search_for.comment,q['co'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.abstract',search_for.abstract,q['ab'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.filename',search_for.filename,q['fns'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000
- @@offset=q['off'] if q['off']=~/\d+/ # 0
- @search_text,@search_endnotes=[],[]
- #%
- search[:text].each{|x| @search_text << "#{x} AND " }
- @search_text=@search_text.to_s.gsub!(/AND\s+$/,'')
- @search_text.gsub!(/(documents\.clean~\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+documents\.clean~\(\s*'[^']+'\s*\))+)/,'(\1)')
- search[:endnotes].each{|x| @search_endnotes << "#{x} AND " }
- @search_endnotes=@search_endnotes.to_s.gsub!(/AND\s+$/,'')
- @search_endnotes.gsub!(/(endnotes\.clean~\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean~\(\s*'[^']+'\s*\))+)/,'(\1)')
- end
- def sql_offset
- @@offset
- end
- def sql_limit
- @@limit
- end
- def sql_canned_search
- @offset_next=sql_offset.to_i + sql_limit.to_i
- @offset_previous=sql_offset.to_i - sql_limit.to_i
- def current
- @@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + sql_offset.to_s
- end
- def next
- @@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + @offset_next.to_s
- end
- def previous
- @offset_previous >= 0 ? (@@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + @offset_previous.to_s) : ''
- end
- def start
- @@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + 0.to_s
- end
- self
- end
- def sql_canned_search_url(ok)
- if ok
- can=sql_canned_search
- page=(sql_offset.to_i + sql_limit.to_i)/sql_limit.to_i
- case page.to_s
- when /^1$/
- %{<hr /><br /><center>
- pg. #{page.to_s}
- <a href="#{can.next}">&nbsp;&nbsp;&gt;</a>
- </center>}
- when /^2$/
- %{<hr /><br /><center>
- <a href="#{can.previous}">&lt;&nbsp;&nbsp;</a>
- pg. #{page.to_s}
- <a href="#{can.next}">&nbsp;&nbsp;&gt;</a>
- </center>}
- else
- %{<hr /><br /><center>
- <a href="#{can.start}">|&lt;&nbsp;&nbsp;</a>
- <a href="#{can.previous}">&lt;&nbsp;&nbsp;</a>
- pg. #{page.to_s}
- <a href="#{can.next}">&nbsp;&nbsp;&gt;</a>
- </center>}
- end
- else ''
- end
- end
- def sql_select_body
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:body]=%{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, metadata.suffix, documents.body, documents.seg, documents.ocn, metadata.tid FROM documents, metadata WHERE (#@search_text) AND documents.metadata_tid = metadata.tid ORDER BY metadata.title, metadata.filename, documents.ocn}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:body] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_endnotes
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:endnotes]=%{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, endnotes.body, endnotes.nr, endnotes.ocn, endnotes.metadata_tid FROM metadata, endnotes WHERE (#@search_endnotes) AND metadata.tid = endnotes.metadata_tid ORDER BY metadata.title, metadata.filename, endnotes.nr}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:endnotes] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_body_format
- %{<font color="#666666" size="2">#{sql_select_body}</font>}
- end
- def sql_select_endnotes_format
- %{<font color="#666666" size="2">#{sql_select_endnotes}</font>}
- end
- def contents
- @conn.select_all(sql_select_body)
- end
- def endnotes
- @conn.select_all(sql_select_endnotes)
- end
- end
- def tail
- <<-'WOK'
- <br /><hr /><br />
-<table summary="SiSU summary" bgcolor="#ffffff" cellpadding="2" border="0">
- <!-- widget sisu -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="http://www.jus.uio.no/sisu" >
- <img border="0" src="http://localhost/sisu/_sisu/image/sisu.png" alt="SiSU" width="120" height="39" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
-<!-- SiSU Rights -->
- <p class="tiny_left"><font color="#666666" size="2">
- Generated by
- <a href="http://www.jus.uio.no/sisu" >
- SiSU</a> 0.55.3 2007-07-10 (2007w28/2)
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- <b>SiSU</b></a> <sup>&copy;</sup> Ralph Amissah
- 1993, current 2007.
- All Rights Reserved.
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- SiSU</a>
- is software for document structuring, publishing and search,
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- www.jus.uio.no/sisu
- </a>
- and
- <a href="http://www.sisudoc.org" >
- www.sisudoc.org
- </a>
- <br />
- <i>w3 since October 3 1993</i>
- <a href="mailto://ralph@amissah.com" >
- ralph@amissah.com
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- SiSU using:
- <br />Standard SiSU markup syntax,
- <br />Standard SiSU meta-markup syntax, and the
- <br />Standard SiSU <u>object citation numbering</u> and system, (object/text positioning system)
- <br />
- <sup>&copy;</sup> Ralph Amissah 1997, current 2007.
- All Rights Reserved.
- </font></p>
-</td></tr>
- <!-- widget way better -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="http://www.gnu.org/licenses/gpl.html">
- <img border="0" src="http://localhost/sisu/_sisu/image/gplv3_free_software.png" alt="GPLv3" width="127" height="51" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- SiSU is released under
- <a href="http://www.gnu.org/licenses/gpl.html">GPL&nbsp;v3</a>
- or later,
- <a href="http://www.gnu.org/licenses/gpl.html">
- http://www.gnu.org/licenses/gpl.html
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- SiSU, developed using
- <a href="http://www.ruby-lang.org/en/">
- Ruby
- </a>
- on
- <a href="http://www.debian.org/">
- Debian/Gnu/Linux
- </a>
- software infrastructure,
- with the usual GPL (or OSS) suspects.
- <br />
- Better - "performance, reliability, scalability, security &amp; total cost of ownership"
- [not to mention flexibility &amp; choice]
- <br />
- Get With the Future
- <a href="http://www.jus.uio.no/sisu/">
- Way Better!
- </a>
- </font></p>
-</td></tr>
-</table>
- <a name="bottom" id="bottom"></a><a name="down" id="down"></a><a name="end" id="end"></a><a name="finish" id="finish"></a><a name="stop" id="stop"></a><a name="credits" id="credits"></a>
- </body></html>
- WOK
- end
- @tail=tail
- @counter_txt_doc,@counter_txt_ocn,@counter_endn_doc,@counter_endn_ocn=0,0,0,0
- @counters_txt,@counters_endn,@sql_select_body,@sql_select_endnotes='','','',''
- FCGI.each_cgi do |cgi|
- begin # all code goes in begin section
- @search={ :text => [],:endnotes => [] }
- q=CGI.new
- @db=if cgi['db'] =~/\S+/;
- @stub=/SiSU_(\S+)/.match(cgi['db'])[1]
- cgi['db']
- else
- @stub='sisu'
- 'SiSU_sisu'
- end
- checked_url,checked_stats,checked_searched,checked_tip,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,selected_db='','','','','','','','',''
- if cgi['view']=~/text/; checked_index,checked_text='','checked'
- else checked_index,checked_text='checked',''
- end
- checked_echo='checked' if cgi['echo'] =~/\S/
- checked_stats='checked' if cgi['stats'] =~/\S/
- checked_url='checked' if cgi['url'] =~/\S/ or cgi['u'].to_i==1
- checked_searched='checked' if cgi['searched'] =~/\S/
- checked_tip='checked' if cgi['tip'] =~/\S/
- checked_case='checked' if cgi['casesense'] =~/\S/
- checked_sql='checked' if cgi['sql'] =~/\S/
- if cgi['checks'] =~/check_all/ or cgi['check_all'] =~/\S/ or cgi['a'].to_i==1
- checked_all='checked'
- checked_echo=checked_stats=checked_url=checked_searched=checked_tip=checked_sql='checked'
- checked_none=''
- elsif cgi['checks'] =~/check_none/
- checked_none='checked'
- checked_all=checked_url=checked_stats=checked_searched=checked_tip=checked_echo=checked_sql=''
- elsif cgi['checks'] =~/check_selected/
- checked_selected='checked'
- elsif cgi['checks'] =~/check_default/
- checked_default='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- else
- checked_selected='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- end
- selected_db=case cgi['db']
- when /SiSU_pace/; '<option value="SiSU_pace">pace</option>'
- when /SiSU_sisu/; '<option value="SiSU_sisu">sisu</option>'
- end
- dbi="dbi:Pg:database=#{@db};port=#{@port}"
- @conn=DBI.connect(dbi,user)
- search_field=cgi['find'] if cgi['find'] # =~/\S+/
- @search_for=Search_request.new(search_field,q) #.analyze #% search_for
- #% searches
- #Canned_search.new(@base,@search_for.text1,cgi)
- if @search_for.text1=~/\S+/ or @search_for.author=~/\S+/ #and search_field =~/\S/
- s1='s1=' + CGI.escape(@search_for.text1) if @search_for.text1=~/\S/
- key='key=' + CGI.escape(@search_for.keywords) if @search_for.keywords=~/\S/
- ti='&ti=' + CGI.escape(@search_for.title) if @search_for.title=~/\S/
- au='&au=' + CGI.escape(@search_for.author) if @search_for.author=~/\S/
- sj='&sj=' + CGI.escape(@search_for.subject) if @search_for.subject=~/\S/
- dsc='&dsc=' + CGI.escape(@search_for.description) if @search_for.description=~/\S/
- pb='&pb=' + CGI.escape(@search_for.publisher) if @search_for.publisher=~/\S/
- cntr='&cntr=' + CGI.escape(@search_for.contributor) if @search_for.contributor=~/\S/
- dt='&dt=' + CGI.escape(@search_for.date) if @search_for.date=~/\S/
- ty='&ty=' + CGI.escape(@search_for.type) if @search_for.type=~/\S/
- id='&id=' + CGI.escape(@search_for.identifier) if @search_for.identifier=~/\S/
- src='&src=' + CGI.escape(@search_for.source) if @search_for.source=~/\S/
- lang='&lang=' + CGI.escape(@search_for.language) if @search_for.language=~/\S/
- rel='&rel=' + CGI.escape(@search_for.relation) if @search_for.relation=~/\S/
- cov='&cov=' + CGI.escape(@search_for.coverage) if @search_for.coverage=~/\S/
- cr='&cr=' + CGI.escape(@search_for.rights) if @search_for.rights=~/\S/
- co='&co=' + CGI.escape(@search_for.comment) if @search_for.comment=~/\S/
- ab='&ab=' + CGI.escape(@search_for.abstract) if @search_for.abstract=~/\S/
- dtc='&dtc=' + CGI.escape(@search_for.date_created) if @search_for.date_created=~/\S/
- dti='&dti=' + CGI.escape(@search_for.date_issued) if @search_for.date_issued=~/\S/
- dtm='&dtm=' + CGI.escape(@search_for.date_modified) if @search_for.date_modified=~/\S/
- dta='&dta=' + CGI.escape(@search_for.date_available) if @search_for.date_available=~/\S/
- dtv='&dtv=' + CGI.escape(@search_for.date_valid) if @search_for.date_valid=~/\S/
- fns='&fns=' + CGI.escape(@search_for.filename) if @search_for.filename=~/\S/
- @@canned_search_url=if checked_all =~/checked/
- "#@base?#{s1}#{key}#{ti}#{au}#{sj}#{dsc}#{pb}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1"
- else "#@base?#{s1}#{key}#{ti}#{au}#{sj}#{dsc}#{pb}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}"
- end
- @canned_base_url="#@base?#{s1}&db=#{cgi['db']}"
- if checked_case=~/\S/
- @search[:text][1]=%{documents.clean~'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~'#{@search_for.text1}'} #s1
- else
- @search[:text][1]=%{documents.clean~*'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~*'#{@search_for.text1}'} #s1
- end
- canned_note='search url:'
- else
- @@canned_search_url="#@base?s1=United+Nations&db=documents&view=index"
- canned_note='search url example:'
- end
- if search_field =~/\S+/
- analyze_format=search_field.gsub(/\s*\n/,'; ')
- elsif checked_all =~/checked/ or checked_url =~/checked/
- canned_search=@@canned_search_url.scan(/(?:s1|au|ti|fns)=[^&]+/)
- af=canned_search.join('; ')
- af.gsub!(/s1=/,'text: ')
- af.gsub!(/au=/,'author: ')
- af.gsub!(/ti=/,'title: ')
- af.gsub!(/fns=/,'filename: ')
- af.gsub!(/%2B/,' ')
- analyze_format=af
- st=af.split(/\s*;\s*/)
- search_field=st.join("\n")
- end
- green=%{<font size="2" color="#004000">}
- canned_search_url_txt=CGI.escapeHTML(@@canned_search_url)
- the_can=%{<font size="2" color="#666666">#{canned_note} <a href="#{@@canned_search_url}">#{canned_search_url_txt}</a></font><br />}
- p_text=p_keywords=p_title=p_author=p_subject=p_description=p_publisher=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_subject=p_filename=''
- p_text=%{text: #{green}#{@search_for.text1}</font><br />} if @search_for.text1 =~/\S+/
- p_keywords=%{keywords: #{green}#{@search_for.keywords}</font><br />} if @search_for.keywords =~/\S+/
- p_title=%{title: #{green}#{@search_for.title}</font><br />} if @search_for.title =~/\S+/
- p_author=%{author: #{green}#{@search_for.author}</font><br />} if @search_for.author =~/\S+/
- p_subject=%{subject: #{green}#{@search_for.subject}</font><br />} if @search_for.subject =~/\S+/
- p_description=%{description: #{green}#{@search_for.description}</font><br />} if @search_for.description =~/\S+/
- p_publisher=%{publisher: #{green}#{@search_for.publisher}</font><br />} if @search_for.publisher =~/\S+/
- p_contributor=%{contributor: #{green}#{@search_for.contributor}</font><br />} if @search_for.contributor =~/\S+/
- p_date=%{date: #{green}#{@search_for.date}</font><br />} if @search_for.date =~/\S+/
- p_type=%{type: #{green}#{@search_for.type}</font><br />} if @search_for.type =~/\S+/
- p_format=%{format: #{green}#{@search_for.format}</font><br />} if @search_for.format =~/\S+/
- p_identifier=%{identifier: #{green}#{@search_for.identifier}</font><br />} if @search_for.identifier =~/\S+/
- p_source=%{source: #{green}#{@search_for.source}</font><br />} if @search_for.source =~/\S+/
- p_language=%{language: #{green}#{@search_for.language}</font><br />} if @search_for.language =~/\S+/
- p_relation=%{relation: #{green}#{@search_for.relation}</font><br />} if @search_for.relation =~/\S+/
- p_coverage=%{coverage: #{green}#{@search_for.coverage}</font><br />} if @search_for.coverage =~/\S+/
- p_rights=%{rights: #{green}#{@search_for.rights}</font><br />} if @search_for.rights =~/\S+/
- p_comment=%{comment: #{green}#{@search_for.comment}</font><br />} if @search_for.comment =~/\S+/
- p_abstract=%{abstract: #{green}#{@search_for.abstract}</font><br />} if @search_for.abstract =~/\S+/
- p_filename=%{filename: #{green}#{@search_for.filename}</font><br />} if @search_for.filename =~/\S+/
- search_note=<<-WOK
- <font size="2" color="#666666">
- <b>database:</b> #{green}#@db</font>; <b>selected view:</b> #{green}#{cgi['view']}</font>
- <b>search string:</b> "#{green}#{analyze_format}</font>"<br />
- #{p_text} #{p_keywords} #{p_title} #{p_author} #{p_subject} #{p_description} #{p_publisher} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename}
- </font>
- WOK
- #eg = %{canned search e.g.:<br /> <a href="#{url}">#{url}</a><br />find: #{analyze}<br />database: #{database}}
- #dbi_canning
- @header=Form.new(@base,search_field,selected_db,checked_index,checked_text,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can).submission_form #% form
- unless q['s1'] =~/\S/ or q['au'] =~/\S/ or @search[:text][1] =~/\S/
- print "Content-type: text/html\n\n"
- puts (@header+@tail)
- else #% searches
- s1=if @search_for.text1 =~/\S/
- @search_for.text1
- else 'Unavailable'
- end
- if checked_case=~/\S/
- @search[:text]<<%{documents.clean~'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~'#{CGI.unescape(s1)}'}
- else
- @search[:text]<<%{documents.clean~*'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~*'#{CGI.unescape(s1)}'}
- end
- #dbi_request
- dbi_statement=Dbi_search_statement.new(@conn,@search_for,q,checked_case)
- @text_search_flag=false
- @text_search_flag=dbi_statement.text_search_flag
- s_contents=dbi_statement.contents
- s_endnotes=dbi_statement.endnotes
- @body_main,@endnotes=[],[]
- @search_regx=nil
- oldtid=0
- if @text_search_flag
- if checked_sql =~/\S/
- sql_select_body=dbi_statement.sql_select_body_format
- sql_select_endnotes=dbi_statement.sql_select_endnotes_format
- else sql_select_body,sql_select_endnotes='',''
- end
- @body_main << '<p><hr><br /><b>Main Text:</b><br />' << sql_select_body
- @endnotes << '<p><hr><br /><b>Endnotes:</b><br />' << sql_select_endnotes
- else
- end
- #text_objects_body
- s_contents.each do |c| #% text body
- location=c['filename'][/(.+?)\.(?:_?sst|ssm)$/,1]
- file_suffix=c['filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location.gsub!(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #metadata_found_body
- if c['tid'].to_i != oldtid.to_i
- ti=if c['subtitle'] =~/\S+/; "#{c['title']} - #{c['subtitle']}"
- else c['title']
- end
- can_txt_srch=if cgi['view']=~/index/; %{<a href="#{@canned_base_url}&fns=#{c['filename']}&view=text"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- else %{<a href="#{@canned_base_url}&fns=#{c['filename']}&view=index"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- end
- title=%{<span style="background-color: #@color_heading"><a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html">&nbsp;#{ti}</a></span> by #{c['creator']} #{can_txt_srch}<a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html"></a> <a href="#@hosturl_files/#@stub/#{location}/portrait#{lang}.pdf"><img border="0" width="15" height="18" src="#@image_src/b_pdf.png" alt="pdf portrait"></a> <a href="#@hosturl_files/#@stub/#{location}/landscape#{lang}.pdf"><img border="0" width="18" height="15" src="#@image_src/b_pdf.png" alt="pdf landscape"></a> <a href="#@hosturl_files/#@stub/#{location}/opendocument#{lang}.odt"><img border="0" width="15" height="15" src="#@image_src/b_odf.png" alt="odf"></a> <a href="#@hosturl_files/#@stub/#{location}/sisu_manifest#{lang}.html"><img border="0" width="15" height="15" src="#@image_src/b_info.png" alt="manifest"></a><br />} if file_suffix=~/s/ #hmm watch file_suffix
- if @text_search_flag; title='<br /><hr>'+title
- else title='<br />'+title
- end
- @counter_txt_doc+=1
- oldtid=c['tid'].to_i
- else title=''
- end
- if @text_search_flag
- if cgi['view']=~/text/ #% txt body
- text=if c['suffix'] !~/1/ #seg
- if @search_for.text1 =~/\S+/ or q['s1'] =~/\S+/ #% only this branch is working !!
- unescaped_search=if @search_for.text1 =~/\S+/; CGI.unescape(@search_for.text1)
- elsif q['s1'] =~/\S+/; CGI.unescape(q['s1'])
- else nil
- end
- @search_regx=if unescaped_search #check
- search_regex=[]
- build=unescaped_search.scan(/\S+/).each do |g|
- if g.to_s =~/(AND|OR)/
- search_regex << '|'
- else search_regex << %{#{g.to_s}}
- end
- end
- search_regex=search_regex.join(' ')
- search_regex=search_regex.gsub(/\s*\|\s*/,'|')
- Regexp.new(search_regex, Regexp::IGNORECASE)
- else nil
- end
- else nil
- end
- matched_para=if (@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/)
- matched=c['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#@search_regx)/mi,%{<span style="background-color: #@color_match">\\1</span>})
- else c['body']
- end
- %{<hr><p><font size="2">ocn <b><a href="#@hosturl_files/#@stub/#{location}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a></b>:</font></p>#{matched_para}}
- elsif c['suffix'] =~/1/ #doc
- %{#{title}<hr><p><font size="2">ocn #{c['ocn']}:#{c['body']}}
- end
- @counter_txt_ocn+=1
- output=if c['seg'] =~/\S+/; title+text
- else text
- end
- elsif cgi['view']=~/index/ #% idx body
- if c['suffix'] !~/1/ #seg
- index=%{<a href="#@hosturl_files/#@stub/#{location}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag
- elsif c['suffix'] =~/1/ #doc
- index=%{<a href="#@hosturl_files/#@stub/#{location}/doc#{lang}.html##{c['ocn']}">#{c['ocn']}</a>, }
- end
- if c['seg'] =~/\S+/
- if @text_search_flag
- @counter_txt_ocn+=1
- output=title+index
- end
- else
- @counter_txt_ocn+=1
- output=unless c['suffix'] =~/1/; title+index
- else %{#{title}#{c['ocn'].sort}, }
- end
- end
- end
- else output=title
- end
- @counters_txt=if @counter_txt_doc > 0
- if checked_stats =~/\S/
- @@lt_t=if @counter_txt_ocn == dbi_statement.sql_limit.to_i
- over='over'
- true
- else
- over=''
- false
- end
- %{<hr /><font size="2" color="#666666">Found in the main body of #@counter_txt_doc documents, and at #{over} #@counter_txt_ocn locations within.</font><br />}
- else ''
- end
- else ''
- end
- @body_main << output #+ details
- end
- #text_objects_endnote
- oldtid = 0
- s_endnotes.each do |e| #% endnotes
- location=e['filename'][/(.+?)\.(?:_?sst|ssm)$/,1]
- file_suffix=e['filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location.gsub!(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #metadata_found_endnotes
- if @text_search_flag
- if e['metadata_tid'].to_i != oldtid.to_i
- ti=if e['subtitle'] =~/\S+/; "#{e['title']} - #{e['subtitle']}"
- else e['title']
- end
- can_txt_srch=if cgi['view']=~/index/; %{<a href="#{@canned_base_url}&fns=#{e['filename']}&view=text"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- else %{<a href="#{@canned_base_url}&fns=#{e['filename']}&view=index"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- end
- title=%{<br /><hr><span style="background-color: #@color_heading"><a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html">&nbsp;#{ti}</a></span> by #{e['creator']} #{can_txt_srch}<a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html"></a> <a href="#@hosturl_files/#@stub/#{location}/portrait.pdf"><img border="0" width="15" height="18" src="#@image_src/b_pdf.png" alt="pdf portrait"></a><a href="#@hosturl_files/#@stub/#{location}/landscape.pdf"><img border="0" width="18" height="15" src="#@image_src/b_pdf.png" alt="pdf landscape"></a> <a href="#@hosturl_files/#@stub/#{location}/opendocument#{lang}.odt"><img border="0" width="15" height="15" src="#@image_src/b_odf.png" alt="odf"></a> <a href="#@hosturl_files/#@stub/#{location}/sisu_manifest#{lang}.html"><img border="0" width="15" height="15" src="#@image_src/b_info.png" alt="manifest"></a><br />} if file_suffix=~/s/
- @counter_endn_doc+=1
- oldtid=e['metadata_tid'].to_i
- else title = ''
- end
- if cgi['view']=~/text/ #% txt endnotes
- @counter_endn_ocn+=1
- matched_endnote=if (@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/)
- matched=e['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#@search_regx)/mi,%{<span style="background-color: #@color_match">\\1</span>})
- else e['body']
- end
- output=%{#{title}<hr><font size="2">note <b><a href="#@hosturl_files/#@stub/#{location}/endnotes.html#_#{e['nr']}">#{e['nr']}</a></b> referred to from ocn <a href="#@hosturl_files/#@stub/#{location}/doc.html##{e['ocn']}">#{e['ocn']}</a>:</font> #{matched_endnote}}
- elsif cgi['view']=~/index/ #% idx endnotes
- @counter_endn_ocn+=1
- output=%{#{title}<a href="#@hosturl_files/#@stub/#{location}/endnotes.html#_#{e['nr']}">#{e['nr']}</a> [&sect; <a href="#@hosturl_files/#@stub/#{location}/doc.html##{e['ocn']}">#{e['ocn']}</a>], }
- end
- @counters_endn=if @counter_endn_doc > 0
- if checked_stats =~/\S/
- @@lt_e=if @counter_endn_ocn == dbi_statement.sql_limit.to_i
- over='over'
- true
- else
- over=''
- false
- end
- %{<font size="2" color="#666666">Found in the endnotes of #@counter_endn_doc documents, and at #{over} #@counter_endn_ocn locations within.</font><br />}
- else ''
- end
- end
- @endnotes << output #+ details
- else @endnotes=[] #does not take out yet
- end
- end
- offset=dbi_statement.sql_offset.to_s
- limit=dbi_statement.sql_limit.to_s
- @@lt_t ||=false; @@lt_e ||=false
- canned=if (@@lt_t or @@lt_e)
- dbi_statement.sql_canned_search_url(true).to_s
- else
- dbi_statement.sql_canned_search_url(false).to_s
- end
- limit=dbi_statement.sql_limit.to_s
- cgi.out{@header + @counters_txt + @counters_endn + @body_main.join + @endnotes.join + canned + @tail} #% print cgi_output_header+counters+body+endnotes
- end
- rescue Exception => e
- s='<pre>' + CGI::escapeHTML(e.backtrace.reverse.join("\n"))
- s << CGI::escapeHTML(e.message) + '</pre>'
- cgi.out{s}
- next
- ensure # eg. disconnect from server
- @conn.disconnect if @conn
- end
- end
diff --git a/data/sisu/v3dv/conf/cgi-bin/sisu_search_sqlite.cgi b/data/sisu/v3dv/conf/cgi-bin/sisu_search_sqlite.cgi
deleted file mode 100644
index 34bb3748..00000000
--- a/data/sisu/v3dv/conf/cgi-bin/sisu_search_sqlite.cgi
+++ /dev/null
@@ -1,901 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- * Name: SiSU information Structuring Universe
- * Author: Ralph Amissah
- * http://www.jus.uio.no/sisu
- * http://www.jus.uio.no/sisu/SiSU/download
-
- * Description: generates naive cgi search form for search of sisu database (sqlite)
- * Name: SiSU generated sample cgi search form
-
- * Description: generated sample cgi search form for SiSU
- (SiSU is a framework for document structuring, publishing and search)
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007 Ralph Amissah All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007 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/licenses/gpl.html>
- <http://www.gnu.org/copyleft/gpl.html>
- <http://www.jus.uio.no/sisu/gpl.fsf>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
- @version='sisu_search_sqlite'
- @image_src="http://localhost/sisu/_sisu/image"
- @hosturl_db="http://localhost"
- @hosturl_files="http://www.jus.uio.no"
- @@limit,@@offset=1000,0
- @base="#@hosturl_db/cgi-bin/#@version.cgi"
- @@canned_search_url=@base
- @color_heading='#DDFFAA'
- @color_match='#ffff48'
- class Form
- def initialize(base,search_field,selected_db,checked_index,checked_text,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can='')
- search_note='' if checked_searched !~/\S/
- the_can='' if checked_url !~/\S/
- search_field='' if checked_echo !~/\S/
- @base,@search_field,@selected_db,@checked_index,@checked_text,@checked_tip,@checked_stats,@checked_searched,@checked_url,@checked_case,@checked_echo,@checked_sql,@checked_all,@checked_none,@checked_selected,@checked_default,@search_note,@the_can=base,search_field,selected_db,checked_index,checked_text,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can
- @tip=if checked_tip =~/\S/
- '<font size="2" color="#666666">text:__; keywords:__; title:__; author:__; subject:__; description:__; publisher:__; contributor:__; date:__; type:__; format:__; identifier:__; source:__; language:__; relation:__; coverage:__; rights:__; comment:__; abstract:__; filename:__;</font><br />'
- else ''
- end
- end
- def submission_form
- search_form=<<-WOK
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>
- SiSU search form (sample): SiSU information Structuring Universe
- </title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <meta name="sourcefile" content="SiSU._sst" />
- <link rel="generator" href="http://www.jus.uio.no/sisu" />
- <link rel="shortcut icon" href="http://localhost/sisu/_sisu/image/rb7.ico" />
- <link rel="stylesheet" href="../_sisu/css/html.css" type="text/css" />
- </head>
- <body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">
- <table summary="band" border="0" cellpadding="3" cellspacing="0">
- <tr><td align="left" bgcolor="#ffffff"><a href="http://www.jus.uio.no/sisu/" target="_top"><img border="0" src="http://localhost/sisu/_sisu/image/sisu.png" alt="SiSU --&gt;" /></a></td><td>
-<!-- <p class="tiny"><a href="http://www.jus.uio.no/sisu/SiSU/">&nbsp;http://www.jus.uio.no/sisu/SiSU/</a></p> -->
- <label for="find"><b>sample search form</b></label>
- </td></tr>
- </table>
- <form action="#@base" id="Test Form" method="post">
- <table cellpadding="2">
- <tr><td valign=\"top\">
- <textarea id="find" name="find" type="text" rows="6" cols="40" maxlength="256">#@search_field</textarea>
- </td>
- <td valign=\"top\">
- #@tip
- #@search_note
- #@the_can
- </td></tr></table>
- <td valign=\"top\"><tr><td>
- <!input type="text" id="find" name="find" value="#@search_field" />
- <!input type="text" id="find" name="find" value="" />
- <font size="2" color="#222222">
- <b>to search:</b> select which database to search (drop-down menu below); enter your search query (in the form above); and <b>click on the search button</b> (below)
- <br />
- <select name="db" size="1">
- #@selected_db
- <option value="SiSU_pace">pace</option>
- <option value="SiSU_sisu">sisu</option>
- </select>
- <input type="submit" value="SiSU search" />
- <input type="radio" name="view" value="index" #@checked_index> index
- <input type="radio" name="view" value="text" #@checked_text> text / grep
- <br />
- <input type="checkbox" name="echo" #@checked_echo> echo query
- <input type="checkbox" name="stats" #@checked_stats> result stats
- <input type="checkbox" name="url" #@checked_url> search url
- <input type="checkbox" name="searched" #@checked_searched> searched
- <input type="checkbox" name="tip" #@checked_tip> available fields
- <input type="checkbox" name="sql" #@checked_sql> sql statement
- <br />
- checks:
- <input type="radio" name="checks" value="check_default" #@checked_default> default
- <input type="radio" name="checks" value="check_selected" #@checked_selected> selected
- <input type="radio" name="checks" value="check_all" #@checked_all> all
- <input type="radio" name="checks" value="check_none" #@checked_none> none
- </font>
- </td></tr>
- </table>
- </form>
- WOK
- end
- end
- class Search_request #% search_for
- attr_accessor :text1,:keywords,:title,:author,:subject,:description,:publisher,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:filename
- def initialize(search_field='',q='')
- @search_field,@q=search_field,q
- @text1=@keywords=@title=@author=@subject=@description=@publisher=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@comment=@abstract=@owner=@date_created=@date_issued=@date_modified=@date_available=@date_valid=@filename=''
- if @search_field=~/\S/
- @text1=text_to_match('text:')
- @keywords=text_to_match('key(?:words?)?:')
- @title=text_to_match('title:') # DublinCore 1 - title
- @author=text_to_match('(?:author|creator)s?:') # DublinCore 2 - creator/author
- @subject=text_to_match('subj(?:ect)?:') # DublinCore 3 - subject
- @description=text_to_match('description:') # DublinCore 4 - description
- @publisher=text_to_match('pub(?:lisher)?:') # DublinCore 5 - publisher
- @contributor=text_to_match('contributor:') # DublinCore 6 - contributor
- @date=text_to_match('date:') # DublinCore 7 - date dd-mm-yy
- @type=text_to_match('type:') # DublinCore 8 - type
- @format=text_to_match('format:') # DublinCore 9 - format
- @identifier=text_to_match('identifier:') # DublinCore 10 - identifier
- @source=text_to_match('source:') # DublinCore 11 - source
- @language=text_to_match('language:') # DublinCore 12 - language
- @relation=text_to_match('relation:') # DublinCore 13 - relation
- @coverage=text_to_match('coverage:') # DublinCore 14 - coverage
- @rights=text_to_match('rights:') # DublinCore 15 - rights
- @comment=text_to_match('comment:')
- @abstract=text_to_match('abs(?:tract)?:')
- @owner=text_to_match('owner:')
- @date_created=text_to_match('date_created:')
- @date_issued=text_to_match('date_issued:')
- @date_modified=text_to_match('date_modified:')
- @date_available=text_to_match('date_available:')
- @date_valid=text_to_match('date_valid:')
- @filename=text_to_match('filename:')
- @text1=text_to_match unless @keywords or @author or @title or @text1 or @comment or @abstract or @rights or @subject or @publisher or @date or @filename
- else
- @text1=q['s1'] if q['s1']=~/\S/
- @keywords=q['key'] if q['key']=~/\S/
- @title=q['ti'] if q['ti']=~/\S/
- @author=q['au'] if q['au']=~/\S/
- @subject=q['sj'] if q['sj']=~/\S/
- @description=q['dsc'] if q['dsc']=~/\S/
- @publisher=q['pb'] if q['pb']=~/\S/
- @contributor=q['cntr'] if q['cntr']=~/\S/
- @date=q['dt'] if q['dt']=~/\S/
- @type=q['ty'] if q['ty']=~/\S/
- @identifier=q['id'] if q['id']=~/\S/
- @source=q['src'] if q['src']=~/\S/
- @language=q['lang'] if q['lang']=~/\S/
- @relation=q['rel'] if q['rel']=~/\S/
- @coverage=q['cov'] if q['cov']=~/\S/
- @rights=q['cr'] if q['cr']=~/\S/
- @comment=q['co'] if q['co']=~/\S/
- @abstract=q['ab'] if q['ab']=~/\S/
- @date_created=q['dtc'] if q['dtc']=~/\S/
- @date_issued=q['dti'] if q['dti']=~/\S/
- @date_modified=q['dtm'] if q['dtm']=~/\S/
- @date_available=q['dta'] if q['dta']=~/\S/
- @date_valid=q['dtv'] if q['dtv']=~/\S/
- @filename=q['fns'] if q['fns']=~/\S/
- @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000
- @@offset=q['off'] if q['off']=~/\d+/ # 0
- end
- end
- def text_to_match(identifier='')
- m={
- :string => /#{identifier}\s*(.+?)/,
- :string => /#{identifier}\s*(.+?)(?:;|\n|\r|$)/,
- :word => /#{identifier}[\s(]*(\S+)/
- }
- search_string=if @search_field =~m[:word]
- search_string=if @search_field =~m[:braces]; m[:braces].match(@search_field)[1]
- elsif @search_field =~m[:string]; m[:string].match(@search_field)[1]
- else
- str=m[:word].match(@search_field)[1]
- str.gsub!(/[()]/,'')
- str
- end
- search_string.strip!
- search_string.gsub!(/\s+/,'+')
- search_string
- #else
- # "__"
- end
- end
- end
- class Dbi_search_string
- def initialize(l,t,q,cse=false)
- @l,@t,@q=l,t,q
- end
- def string
- search={ :search => [],:flag => false }
- if @t =~/\S+/ or @q =~/\S+/
- if @t =~/\S+/; unescaped_search=CGI.unescape(@t)
- elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q)
- end
- search_construct=[]
- unescaped_search.gsub!(/\s*(AND|OR)\s*/,"%' \) \\1 #@l LIKE \( '%")
- unescaped_search.gsub!(/(.+)/,"#@l LIKE \( '%\\1%' \)")
- search_construct << unescaped_search
- search_construct=search_construct.join(' ')
- search[:search] << search_construct
- search[:flag]=true
- search
- end
- search
- end
- end
- class Dbi_search_statement
- attr_reader :text_search_flag,:sql_select_body_format,:sql_select_endnotes_format,:sql_offset,:sql_limit
- def initialize(conn,search_for,q,c)
- @conn=conn
- @text_search_flag=false
- @sql_statement={ :body=>'',:endnotes=>'',:range=>'' }
- #@offset||=@@offset
- #@offset+=@@limit
- search={ :text => [],:endnotes => [] }
- cse=if c =~/\S/; true
- else false
- end
- st=Dbi_search_string.new('documents.clean',search_for.text1,q['s1'],cse).string
- se=Dbi_search_string.new('endnotes.clean',search_for.text1,q['s1'],cse).string
- @text_search_flag=st[:flag]
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << se[:search]
- end
- st=Dbi_search_string.new('metadata.keywords',search_for.keywords,q['key'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.title',search_for.title,q['ti'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.creator',search_for.author,q['au'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.subject',search_for.subject,q['sj'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.description',search_for.description,q['dsc'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.publisher',search_for.publisher,q['pb'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.contributor',search_for.contributor,q['cntr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.date',search_for.date,q['dt'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.type',search_for.type,q['ty'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.identifier',search_for.identifier,q['id'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.source',search_for.source,q['src'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.language',search_for.language,q['lang'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.relation',search_for.relation,q['rel'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.coverage',search_for.coverage,q['cov'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.rights',search_for.rights,q['cr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.comment',search_for.comment,q['co'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.abstract',search_for.abstract,q['ab'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=Dbi_search_string.new('metadata.filename',search_for.filename,q['fns'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000
- @@offset=q['off'] if q['off']=~/\d+/ # 0
- @search_text,@search_endnotes=[],[]
- #%
- search[:text].each{|x| @search_text << "#{x} AND " }
- @search_text=@search_text.to_s.gsub!(/AND\s+$/,'')
- @search_text.gsub!(/(documents\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+documents\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
- search[:endnotes].each{|x| @search_endnotes << "#{x} AND " }
- @search_endnotes=@search_endnotes.to_s.gsub!(/AND\s+$/,'')
- @search_text.gsub!(/(endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
- end
- def sql_offset
- @@offset
- end
- def sql_limit
- @@limit
- end
- def sql_canned_search
- @offset_next=sql_offset.to_i + sql_limit.to_i
- @offset_previous=sql_offset.to_i - sql_limit.to_i
- def current
- @@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + sql_offset.to_s
- end
- def next
- @@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + @offset_next.to_s
- end
- def previous
- @offset_previous >= 0 ? (@@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + @offset_previous.to_s) : ''
- end
- def start
- @@canned_search_url.to_s + '&ltd=' + sql_limit.to_s + '&off=' + 0.to_s
- end
- self
- end
- def sql_canned_search_url(ok)
- if ok
- can=sql_canned_search
- page=(sql_offset.to_i + sql_limit.to_i)/sql_limit.to_i
- case page.to_s
- when /^1$/
- %{<hr /><br /><center>
- pg. #{page.to_s}
- <a href="#{can.next}">&nbsp;&nbsp;&gt;</a>
- </center>}
- when /^2$/
- %{<hr /><br /><center>
- <a href="#{can.previous}">&lt;&nbsp;&nbsp;</a>
- pg. #{page.to_s}
- <a href="#{can.next}">&nbsp;&nbsp;&gt;</a>
- </center>}
- else
- %{<hr /><br /><center>
- <a href="#{can.start}">|&lt;&nbsp;&nbsp;</a>
- <a href="#{can.previous}">&lt;&nbsp;&nbsp;</a>
- pg. #{page.to_s}
- <a href="#{can.next}">&nbsp;&nbsp;&gt;</a>
- </center>}
- end
- else ''
- end
- end
- def sql_select_body
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:body]=%{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, metadata.suffix, documents.body, documents.seg, documents.ocn, metadata.tid FROM documents, metadata WHERE #{@search_text} AND documents.metadata_tid = metadata.tid ORDER BY metadata.title, metadata.filename, documents.ocn}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:body] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_endnotes
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:endnotes]= %{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, endnotes.body, endnotes.nr, endnotes.ocn, endnotes.metadata_tid FROM metadata, endnotes WHERE #{@search_endnotes} AND metadata.tid = endnotes.metadata_tid ORDER BY metadata.title, metadata.filename, endnotes.nr}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:endnotes] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_body_format
- %{<font color="#666666" size="2">#{sql_select_body}</font>}
- end
- def sql_select_endnotes_format
- %{<font color="#666666" size="2">#{sql_select_endnotes}</font>}
- end
- def contents
- @conn.select_all(sql_select_body)
- end
- def endnotes
- @conn.select_all(sql_select_endnotes)
- end
- end
- def tail
- <<-'WOK'
- <br /><hr /><br />
-<table summary="SiSU summary" bgcolor="#ffffff" cellpadding="2" border="0">
- <!-- widget sisu -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="http://www.jus.uio.no/sisu" >
- <img border="0" src="http://localhost/sisu/_sisu/image/sisu.png" alt="SiSU" width="120" height="39" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
-<!-- SiSU Rights -->
- <p class="tiny_left"><font color="#666666" size="2">
- Generated by
- <a href="http://www.jus.uio.no/sisu" >
- SiSU</a> 0.55.3 2007-07-10 (2007w28/2)
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- <b>SiSU</b></a> <sup>&copy;</sup> Ralph Amissah
- 1993, current 2007.
- All Rights Reserved.
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- SiSU</a>
- is software for document structuring, publishing and search,
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- www.jus.uio.no/sisu
- </a>
- and
- <a href="http://www.sisudoc.org" >
- www.sisudoc.org
- </a>
- <br />
- <i>w3 since October 3 1993</i>
- <a href="mailto://ralph@amissah.com" >
- ralph@amissah.com
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- SiSU using:
- <br />Standard SiSU markup syntax,
- <br />Standard SiSU meta-markup syntax, and the
- <br />Standard SiSU <u>object citation numbering</u> and system, (object/text positioning system)
- <br />
- <sup>&copy;</sup> Ralph Amissah 1997, current 2007.
- All Rights Reserved.
- </font></p>
-</td></tr>
- <!-- widget way better -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="http://www.gnu.org/licenses/gpl.html">
- <img border="0" src="http://localhost/sisu/_sisu/image/gplv3_free_software.png" alt="GPLv3" width="127" height="51" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- SiSU is released under
- <a href="http://www.gnu.org/licenses/gpl.html">GPL&nbsp;v3</a>
- or later,
- <a href="http://www.gnu.org/licenses/gpl.html">
- http://www.gnu.org/licenses/gpl.html
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- SiSU, developed using
- <a href="http://www.ruby-lang.org/en/">
- Ruby
- </a>
- on
- <a href="http://www.debian.org/">
- Debian/Gnu/Linux
- </a>
- software infrastructure,
- with the usual GPL (or OSS) suspects.
- <br />
- Better - "performance, reliability, scalability, security &amp; total cost of ownership"
- [not to mention flexibility &amp; choice]
- <br />
- Get With the Future
- <a href="http://www.jus.uio.no/sisu/">
- Way Better!
- </a>
- </font></p>
-</td></tr>
-</table>
- <a name="bottom" id="bottom"></a><a name="down" id="down"></a><a name="end" id="end"></a><a name="finish" id="finish"></a><a name="stop" id="stop"></a><a name="credits" id="credits"></a>
- </body></html>
- WOK
- end
- @tail=tail
- @counter_txt_doc,@counter_txt_ocn,@counter_endn_doc,@counter_endn_ocn=0,0,0,0
- @counters_txt,@counters_endn,@sql_select_body,@sql_select_endnotes='','','',''
- FCGI.each_cgi do |cgi|
- begin # all code goes in begin section
- @search={ :text => [],:endnotes => [] }
- q=CGI.new
- @db=if cgi['db'] =~/\S+/;
- @stub=/SiSU_(\S+)/.match(cgi['db'])[1]
- cgi['db']
- else
- @stub='sisu'
- 'SiSU_sisu'
- end
- checked_url,checked_stats,checked_searched,checked_tip,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,selected_db='','','','','','','','',''
- if cgi['view']=~/text/; checked_index,checked_text='','checked'
- else checked_index,checked_text='checked',''
- end
- checked_echo='checked' if cgi['echo'] =~/\S/
- checked_stats='checked' if cgi['stats'] =~/\S/
- checked_url='checked' if cgi['url'] =~/\S/ or cgi['u'].to_i==1
- checked_searched='checked' if cgi['searched'] =~/\S/
- checked_tip='checked' if cgi['tip'] =~/\S/
- checked_case='checked' if cgi['casesense'] =~/\S/
- checked_sql='checked' if cgi['sql'] =~/\S/
- if cgi['checks'] =~/check_all/ or cgi['check_all'] =~/\S/ or cgi['a'].to_i==1
- checked_all='checked'
- checked_echo=checked_stats=checked_url=checked_searched=checked_tip=checked_sql='checked'
- checked_none=''
- elsif cgi['checks'] =~/check_none/
- checked_none='checked'
- checked_all=checked_url=checked_stats=checked_searched=checked_tip=checked_echo=checked_sql=''
- elsif cgi['checks'] =~/check_selected/
- checked_selected='checked'
- elsif cgi['checks'] =~/check_default/
- checked_default='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- else
- checked_selected='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- end
- selected_db=case cgi['db']
- when /SiSU_pace/; '<option value="SiSU_pace">pace</option>'
- when /SiSU_sisu/; '<option value="SiSU_sisu">sisu</option>'
- end
- db_name='sisu_sqlite.db'
- db_sqlite=case cgi['db']
- when /SiSU_pace/; "/home/ralph/sisu_www/pace/sisu_sqlite.db"
- when /SiSU_sisu/; "/home/ralph/sisu_www/sisu/sisu_sqlite.db"
- end
- @dbi="DBI:SQLite:#{db_sqlite}" #sqlite3 ?
- @conn=DBI.connect(@dbi)
- search_field=cgi['find'] if cgi['find'] # =~/\S+/
- @search_for=Search_request.new(search_field,q) #.analyze #% search_for
- #% searches
- #Canned_search.new(@base,@search_for.text1,cgi)
- if @search_for.text1=~/\S+/ or @search_for.author=~/\S+/ #and search_field =~/\S/
- s1='s1=' + CGI.escape(@search_for.text1) if @search_for.text1=~/\S/
- key='key=' + CGI.escape(@search_for.keywords) if @search_for.keywords=~/\S/
- ti='&ti=' + CGI.escape(@search_for.title) if @search_for.title=~/\S/
- au='&au=' + CGI.escape(@search_for.author) if @search_for.author=~/\S/
- sj='&sj=' + CGI.escape(@search_for.subject) if @search_for.subject=~/\S/
- dsc='&dsc=' + CGI.escape(@search_for.description) if @search_for.description=~/\S/
- pb='&pb=' + CGI.escape(@search_for.publisher) if @search_for.publisher=~/\S/
- cntr='&cntr=' + CGI.escape(@search_for.contributor) if @search_for.contributor=~/\S/
- dt='&dt=' + CGI.escape(@search_for.date) if @search_for.date=~/\S/
- ty='&ty=' + CGI.escape(@search_for.type) if @search_for.type=~/\S/
- id='&id=' + CGI.escape(@search_for.identifier) if @search_for.identifier=~/\S/
- src='&src=' + CGI.escape(@search_for.source) if @search_for.source=~/\S/
- lang='&lang=' + CGI.escape(@search_for.language) if @search_for.language=~/\S/
- rel='&rel=' + CGI.escape(@search_for.relation) if @search_for.relation=~/\S/
- cov='&cov=' + CGI.escape(@search_for.coverage) if @search_for.coverage=~/\S/
- cr='&cr=' + CGI.escape(@search_for.rights) if @search_for.rights=~/\S/
- co='&co=' + CGI.escape(@search_for.comment) if @search_for.comment=~/\S/
- ab='&ab=' + CGI.escape(@search_for.abstract) if @search_for.abstract=~/\S/
- dtc='&dtc=' + CGI.escape(@search_for.date_created) if @search_for.date_created=~/\S/
- dti='&dti=' + CGI.escape(@search_for.date_issued) if @search_for.date_issued=~/\S/
- dtm='&dtm=' + CGI.escape(@search_for.date_modified) if @search_for.date_modified=~/\S/
- dta='&dta=' + CGI.escape(@search_for.date_available) if @search_for.date_available=~/\S/
- dtv='&dtv=' + CGI.escape(@search_for.date_valid) if @search_for.date_valid=~/\S/
- fns='&fns=' + CGI.escape(@search_for.filename) if @search_for.filename=~/\S/
- @@canned_search_url=if checked_all =~/checked/
- "#@base?#{s1}#{key}#{ti}#{au}#{sj}#{dsc}#{pb}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1"
- else "#@base?#{s1}#{key}#{ti}#{au}#{sj}#{dsc}#{pb}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}"
- end
- @canned_base_url="#@base?#{s1}&db=#{cgi['db']}"
- if checked_case=~/\S/
- @search[:text][1]=%{documents.clean~'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~'#{@search_for.text1}'} #s1
- else
- @search[:text][1]=%{documents.clean~*'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~*'#{@search_for.text1}'} #s1
- end
- canned_note='search url:'
- else
- @@canned_search_url="#@base?s1=United+Nations&db=documents&view=index"
- canned_note='search url example:'
- end
- if search_field =~/\S+/
- analyze_format=search_field.gsub(/\s*\n/,'; ')
- elsif checked_all =~/checked/ or checked_url =~/checked/
- canned_search=@@canned_search_url.scan(/(?:s1|au|ti|fns)=[^&]+/)
- af=canned_search.join('; ')
- af.gsub!(/s1=/,'text: ')
- af.gsub!(/au=/,'author: ')
- af.gsub!(/ti=/,'title: ')
- af.gsub!(/fns=/,'filename: ')
- af.gsub!(/%2B/,' ')
- analyze_format=af
- st=af.split(/\s*;\s*/)
- search_field=st.join("\n")
- end
- green=%{<font size="2" color="#004000">}
- canned_search_url_txt=CGI.escapeHTML(@@canned_search_url)
- the_can=%{<font size="2" color="#666666">#{canned_note} <a href="#{@@canned_search_url}">#{canned_search_url_txt}</a></font><br />}
- p_text=p_keywords=p_title=p_author=p_subject=p_description=p_publisher=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_subject=p_filename=''
- p_text=%{text: #{green}#{@search_for.text1}</font><br />} if @search_for.text1 =~/\S+/
- p_keywords=%{keywords: #{green}#{@search_for.keywords}</font><br />} if @search_for.keywords =~/\S+/
- p_title=%{title: #{green}#{@search_for.title}</font><br />} if @search_for.title =~/\S+/
- p_author=%{author: #{green}#{@search_for.author}</font><br />} if @search_for.author =~/\S+/
- p_subject=%{subject: #{green}#{@search_for.subject}</font><br />} if @search_for.subject =~/\S+/
- p_description=%{description: #{green}#{@search_for.description}</font><br />} if @search_for.description =~/\S+/
- p_publisher=%{publisher: #{green}#{@search_for.publisher}</font><br />} if @search_for.publisher =~/\S+/
- p_contributor=%{contributor: #{green}#{@search_for.contributor}</font><br />} if @search_for.contributor =~/\S+/
- p_date=%{date: #{green}#{@search_for.date}</font><br />} if @search_for.date =~/\S+/
- p_type=%{type: #{green}#{@search_for.type}</font><br />} if @search_for.type =~/\S+/
- p_format=%{format: #{green}#{@search_for.format}</font><br />} if @search_for.format =~/\S+/
- p_identifier=%{identifier: #{green}#{@search_for.identifier}</font><br />} if @search_for.identifier =~/\S+/
- p_source=%{source: #{green}#{@search_for.source}</font><br />} if @search_for.source =~/\S+/
- p_language=%{language: #{green}#{@search_for.language}</font><br />} if @search_for.language =~/\S+/
- p_relation=%{relation: #{green}#{@search_for.relation}</font><br />} if @search_for.relation =~/\S+/
- p_coverage=%{coverage: #{green}#{@search_for.coverage}</font><br />} if @search_for.coverage =~/\S+/
- p_rights=%{rights: #{green}#{@search_for.rights}</font><br />} if @search_for.rights =~/\S+/
- p_comment=%{comment: #{green}#{@search_for.comment}</font><br />} if @search_for.comment =~/\S+/
- p_abstract=%{abstract: #{green}#{@search_for.abstract}</font><br />} if @search_for.abstract =~/\S+/
- p_filename=%{filename: #{green}#{@search_for.filename}</font><br />} if @search_for.filename =~/\S+/
- search_note=<<-WOK
- <font size="2" color="#666666">
- <b>database:</b> #{green}#@db</font>; <b>selected view:</b> #{green}#{cgi['view']}</font>
- <b>search string:</b> "#{green}#{analyze_format}</font>"<br />
- #{p_text} #{p_keywords} #{p_title} #{p_author} #{p_subject} #{p_description} #{p_publisher} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename}
- </font>
- WOK
- #eg = %{canned search e.g.:<br /> <a href="#{url}">#{url}</a><br />find: #{analyze}<br />database: #{database}}
- #dbi_canning
- @header=Form.new(@base,search_field,selected_db,checked_index,checked_text,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can).submission_form #% form
- unless q['s1'] =~/\S/ or q['au'] =~/\S/ or @search[:text][1] =~/\S/
- print "Content-type: text/html\n\n"
- puts (@header+@tail)
- else #% searches
- s1=if @search_for.text1 =~/\S/
- @search_for.text1
- else 'Unavailable'
- end
- if checked_case=~/\S/
- @search[:text]<<%{documents.clean~'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~'#{CGI.unescape(s1)}'}
- else
- @search[:text]<<%{documents.clean~*'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~*'#{CGI.unescape(s1)}'}
- end
- #dbi_request
- dbi_statement=Dbi_search_statement.new(@conn,@search_for,q,checked_case)
- @text_search_flag=false
- @text_search_flag=dbi_statement.text_search_flag
- s_contents=dbi_statement.contents
- s_endnotes=dbi_statement.endnotes
- @body_main,@endnotes=[],[]
- @search_regx=nil
- oldtid=0
- if @text_search_flag
- if checked_sql =~/\S/
- sql_select_body=dbi_statement.sql_select_body_format
- sql_select_endnotes=dbi_statement.sql_select_endnotes_format
- else sql_select_body,sql_select_endnotes='',''
- end
- @body_main << '<p><hr><br /><b>Main Text:</b><br />' << sql_select_body
- @endnotes << '<p><hr><br /><b>Endnotes:</b><br />' << sql_select_endnotes
- else
- end
- #text_objects_body
- s_contents.each do |c| #% text body
- location=c['filename'][/(.+?)\.(?:_?sst|ssm)$/,1]
- file_suffix=c['filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location.gsub!(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #metadata_found_body
- if c['tid'].to_i != oldtid.to_i
- ti=if c['subtitle'] =~/\S+/; "#{c['title']} - #{c['subtitle']}"
- else c['title']
- end
- can_txt_srch=if cgi['view']=~/index/; %{<a href="#{@canned_base_url}&fns=#{c['filename']}&view=text"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- else %{<a href="#{@canned_base_url}&fns=#{c['filename']}&view=index"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- end
- title=%{<span style="background-color: #@color_heading"><a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html">&nbsp;#{ti}</a></span> by #{c['creator']} #{can_txt_srch}<a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html"></a> <a href="#@hosturl_files/#@stub/#{location}/portrait#{lang}.pdf"><img border="0" width="15" height="18" src="#@image_src/b_pdf.png" alt="pdf portrait"></a> <a href="#@hosturl_files/#@stub/#{location}/landscape#{lang}.pdf"><img border="0" width="18" height="15" src="#@image_src/b_pdf.png" alt="pdf landscape"></a> <a href="#@hosturl_files/#@stub/#{location}/opendocument#{lang}.odt"><img border="0" width="15" height="15" src="#@image_src/b_odf.png" alt="odf"></a> <a href="#@hosturl_files/#@stub/#{location}/sisu_manifest#{lang}.html"><img border="0" width="15" height="15" src="#@image_src/b_info.png" alt="manifest"></a><br />} if file_suffix=~/s/ #hmm watch file_suffix
- if @text_search_flag; title='<br /><hr>'+title
- else title='<br />'+title
- end
- @counter_txt_doc+=1
- oldtid=c['tid'].to_i
- else title=''
- end
- if @text_search_flag
- if cgi['view']=~/text/ #% txt body
- text=if c['suffix'] !~/1/ #seg
- if @search_for.text1 =~/\S+/ or q['s1'] =~/\S+/ #% only this branch is working !!
- unescaped_search=if @search_for.text1 =~/\S+/; CGI.unescape(@search_for.text1)
- elsif q['s1'] =~/\S+/; CGI.unescape(q['s1'])
- else nil
- end
- @search_regx=if unescaped_search #check
- search_regex=[]
- build=unescaped_search.scan(/\S+/).each do |g|
- if g.to_s =~/(AND|OR)/
- search_regex << '|'
- else search_regex << %{#{g.to_s}}
- end
- end
- search_regex=search_regex.join(' ')
- search_regex=search_regex.gsub(/\s*\|\s*/,'|')
- Regexp.new(search_regex, Regexp::IGNORECASE)
- else nil
- end
- else nil
- end
- matched_para=if (@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/)
- matched=c['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#@search_regx)/mi,%{<span style="background-color: #@color_match">\\1</span>})
- else c['body']
- end
- %{<hr><p><font size="2">ocn <b><a href="#@hosturl_files/#@stub/#{location}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a></b>:</font></p>#{matched_para}}
- elsif c['suffix'] =~/1/ #doc
- %{#{title}<hr><p><font size="2">ocn #{c['ocn']}:#{c['body']}}
- end
- @counter_txt_ocn+=1
- output=if c['seg'] =~/\S+/; title+text
- else text
- end
- elsif cgi['view']=~/index/ #% idx body
- if c['suffix'] !~/1/ #seg
- index=%{<a href="#@hosturl_files/#@stub/#{location}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag
- elsif c['suffix'] =~/1/ #doc
- index=%{<a href="#@hosturl_files/#@stub/#{location}/doc#{lang}.html##{c['ocn']}">#{c['ocn']}</a>, }
- end
- if c['seg'] =~/\S+/
- if @text_search_flag
- @counter_txt_ocn+=1
- output=title+index
- end
- else
- @counter_txt_ocn+=1
- output=unless c['suffix'] =~/1/; title+index
- else %{#{title}#{c['ocn'].sort}, }
- end
- end
- end
- else output=title
- end
- @counters_txt=if @counter_txt_doc > 0
- if checked_stats =~/\S/
- @@lt_t=if @counter_txt_ocn == dbi_statement.sql_limit.to_i
- over='over'
- true
- else
- over=''
- false
- end
- %{<hr /><font size="2" color="#666666">Found in the main body of #@counter_txt_doc documents, and at #{over} #@counter_txt_ocn locations within.</font><br />}
- else ''
- end
- else ''
- end
- @body_main << output #+ details
- end
- #text_objects_endnote
- oldtid = 0
- s_endnotes.each do |e| #% endnotes
- location=e['filename'][/(.+?)\.(?:_?sst|ssm)$/,1]
- file_suffix=e['filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location.gsub!(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #metadata_found_endnotes
- if @text_search_flag
- if e['metadata_tid'].to_i != oldtid.to_i
- ti=if e['subtitle'] =~/\S+/; "#{e['title']} - #{e['subtitle']}"
- else e['title']
- end
- can_txt_srch=if cgi['view']=~/index/; %{<a href="#{@canned_base_url}&fns=#{e['filename']}&view=text"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- else %{<a href="#{@canned_base_url}&fns=#{e['filename']}&view=index"><img border="0" width="12" height="12" src="#@image_src/bullet_red.png" alt="red bullet"></a> }
- end
- title=%{<br /><hr><span style="background-color: #@color_heading"><a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html">&nbsp;#{ti}</a></span> by #{e['creator']} #{can_txt_srch}<a href="#@hosturl_files/#@stub/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#@image_src/b_toc.png" alt="toc html"></a> <a href="#@hosturl_files/#@stub/#{location}/portrait.pdf"><img border="0" width="15" height="18" src="#@image_src/b_pdf.png" alt="pdf portrait"></a><a href="#@hosturl_files/#@stub/#{location}/landscape.pdf"><img border="0" width="18" height="15" src="#@image_src/b_pdf.png" alt="pdf landscape"></a> <a href="#@hosturl_files/#@stub/#{location}/opendocument#{lang}.odt"><img border="0" width="15" height="15" src="#@image_src/b_odf.png" alt="odf"></a> <a href="#@hosturl_files/#@stub/#{location}/sisu_manifest#{lang}.html"><img border="0" width="15" height="15" src="#@image_src/b_info.png" alt="manifest"></a><br />} if file_suffix=~/s/
- @counter_endn_doc+=1
- oldtid=e['metadata_tid'].to_i
- else title = ''
- end
- if cgi['view']=~/text/ #% txt endnotes
- @counter_endn_ocn+=1
- matched_endnote=if (@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/)
- matched=e['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#@search_regx)/mi,%{<span style="background-color: #@color_match">\\1</span>})
- else e['body']
- end
- output=%{#{title}<hr><font size="2">note <b><a href="#@hosturl_files/#@stub/#{location}/endnotes.html#_#{e['nr']}">#{e['nr']}</a></b> referred to from ocn <a href="#@hosturl_files/#@stub/#{location}/doc.html##{e['ocn']}">#{e['ocn']}</a>:</font> #{matched_endnote}}
- elsif cgi['view']=~/index/ #% idx endnotes
- @counter_endn_ocn+=1
- output=%{#{title}<a href="#@hosturl_files/#@stub/#{location}/endnotes.html#_#{e['nr']}">#{e['nr']}</a> [&sect; <a href="#@hosturl_files/#@stub/#{location}/doc.html##{e['ocn']}">#{e['ocn']}</a>], }
- end
- @counters_endn=if @counter_endn_doc > 0
- if checked_stats =~/\S/
- @@lt_e=if @counter_endn_ocn == dbi_statement.sql_limit.to_i
- over='over'
- true
- else
- over=''
- false
- end
- %{<font size="2" color="#666666">Found in the endnotes of #@counter_endn_doc documents, and at #{over} #@counter_endn_ocn locations within.</font><br />}
- else ''
- end
- end
- @endnotes << output #+ details
- else @endnotes=[] #does not take out yet
- end
- end
- offset=dbi_statement.sql_offset.to_s
- limit=dbi_statement.sql_limit.to_s
- @@lt_t ||=false; @@lt_e ||=false
- canned=if (@@lt_t or @@lt_e)
- dbi_statement.sql_canned_search_url(true).to_s
- else
- dbi_statement.sql_canned_search_url(false).to_s
- end
- limit=dbi_statement.sql_limit.to_s
- cgi.out{@header + @counters_txt + @counters_endn + @body_main.join + @endnotes.join + canned + @tail} #% print cgi_output_header+counters+body+endnotes
- end
- rescue Exception => e
- s='<pre>' + CGI::escapeHTML(e.backtrace.reverse.join("\n"))
- s << CGI::escapeHTML(e.message) + '</pre>'
- cgi.out{s}
- next
- ensure # eg. disconnect from server
- @conn.disconnect if @conn
- end
- end
diff --git a/data/sisu/v3dv/conf/completion/README b/data/sisu/v3dv/conf/completion/README
deleted file mode 100644
index d723a140..00000000
--- a/data/sisu/v3dv/conf/completion/README
+++ /dev/null
@@ -1,7 +0,0 @@
-_sisu (naive zsh completion for SiSU)
- on Debian file is located at /usr/share/sisu/conf/completion
- installation: works if copied somewhere within your $fpath
- do it yourself on Debian copy to ~/.zfunc or
- /usr/local/share/zsh/site-functions and run compinit
-
- note zsh is not installed by default on a Debian system
diff --git a/data/sisu/v3dv/conf/completion/_sisu b/data/sisu/v3dv/conf/completion/_sisu
deleted file mode 100644
index 076795cb..00000000
--- a/data/sisu/v3dv/conf/completion/_sisu
+++ /dev/null
@@ -1,64 +0,0 @@
-#compdef sisu
-# Copyright (C) 2006 Ralph Amissah
-# sisu, version 0.46.1
-# same license as Zsh or SiSU
-local curcontext="$curcontext" state line ret=1
-typeset -A opt_args
-_arguments -s -C -M 'r:|[_-]=* r:|=*' \
- '(--convert --to -C)-U[prints to screen url output map of available output possibilities]' \
- '(--convert --to -C)-u[url mapping of output files for requested processing flags]' \
- '(--convert --to -C)-V[more verbose than -v]' \
- '(--convert --to -C)-v[verbose]' \
- '--no-ocn[-\[hHp\]switches off object citation numbering]' \
- '--no-annotate[-\[mhHpoxXabN\] strips output text of additional editors endnotes]' \
- '(--convert --to -C)-A[plaintext with dos line-feeds, footnotes follow paragraphs in which they occur]' \
- '(--convert --to -C)-a[plaintext with Unix line-feeds, footnotes follow paragraphs in which they occur]' \
- '(--convert --to -C)-b[XHTML output]' \
- '(- *)-C[initialise site]' \
- '(--convert --to -C)-c[toggle screen color on or off depending on set default]' \
- '(--convert --to -C)-E[plaintext with dos line-feeds, endnotes following main text]' \
- '(--convert --to -C)-e[plaintext with Unix line-feeds, endnotes following main text]' \
- '(--convert --to -C)-F[generate sample cgi web search form \[--webserv=webrick for sisu webrick url\]]' \
- '(--convert --to -C -h)-H[HTML output, without link suffixes]' \
- '(--convert --to -C -H)-h[HTML output]' \
- '(--convert --to -C)-I[texinfo output, not maintained]' \
- '(--convert --to -C)-L[print license info]' \
- '(--convert --to -C)-M[maintenance mode, retain intermediate processing files]' \
- '(--convert --to -C)-m[create intermediate markup file, metaverse, assumed for most output instuctions]' \
- '(--convert --to -C)-N[document content certificate, output document digests]' \
- '(--convert --to -C)-n[skip intermediate markup, skip -m]' \
- '(--convert --to -C)-o[Open Document text format output]' \
- '(--convert --to -C)-p[LaTeX pdf output]' \
- '(--convert --to -C)-q[quiet mode]' \
- '(--convert --to -C)-R[post output to remote host using rsync, requires pre-configuration]' \
- '(--convert --to -C)-r[post output to remote host using scp, requires pre-configuration]' \
- '(--convert --to -C)-S[produces and shares tarred gzipped markup source document with associated images etc.]' \
- '(--convert --to -C)-s[shares markup source]' \
- '(--convert --to -C)-t[termsheet, preprocessing]' \
- '(- *)-W[starts ruby webrick server]' \
- '(--convert --to -C)-w[concordance file]' \
- '(--convert --to -C)-X[XML dom style]' \
- '(--convert --to -C)-x[XML sax style]' \
- '(--convert --to -C)-y[output summary page, manifest of existing generated output]' \
- '(--convert --to -C)-Z[Zap delete/destroy output]' \
- '--import[-\[Dd\] imports document to database]' \
- '--update[-\[Dd\] updates document in database]' \
- '--remove[-\[Dd\] removes document from database]' \
- '--dropall[-\[Dd\] drops database, tables, indexes, all!]' \
- '--create[-\[Dd\] creates new database - tables, indexes, etc.]' \
- '--recreate[-\[Dd\] drops database, killing data and creates new empty database - tables, indexes, etc.]' \
- '(--convert --to -C)-D[postgresql database instruction]' \
- '(--convert --to -C)-d[sqlite database instruction]' \
- '(- *)--help[display help information]' \
- '(--convert --to -C -2 -3 -4 -5)-1[shortcut, initial default -mNHwpy]' \
- '(--convert --to -C -1 -3 -4 -5)-2[shortcut, initial default -mNHwpaoy]' \
- '(--convert --to -C -1 -2 -4 -5)-3[shortcut, initial default -mNHwpaobxXy]' \
- '(--convert --to -C -1 -2 -3 -5)-4[shortcut, initial default -mNHwpaobxXDy --import]' \
- '(--convert --to -C -1 -2 -3 -4)-5[shortcut, initial default -mNHwpaobxXDy --update]' \
- '--to=node[XML node based input representation, experimental]' \
- '--to=sax[XML sax based input representation, experimental]' \
- '--to=dom[XML dom based input representation, experimental]' \
- '--convert=footnotes[embedded footnotes]' \
- '--to=current[current markup]' \
- '--to=xml2sst[from sisu xml to sst]' \
- '*:SiSU files:_files -g "*.(sst|ssm)(.)"'
diff --git a/data/sisu/v3dv/conf/convert/kdissert_to_sisu b/data/sisu/v3dv/conf/convert/kdissert_to_sisu
deleted file mode 100644
index 35921c3e..00000000
--- a/data/sisu/v3dv/conf/convert/kdissert_to_sisu
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- * Name: modify.rb
- * Author: Ralph Amissah
- * http://www.jus.uio.no/sisu
- * http://www.jus.uio.no/sisu/SiSU/download
- * Description: Conversion script from kdissert .kdi to sisu markup .sst
- * Copyright (C) 2004, 2006 Ralph Amissah
- * Packaged with: SiSU information Structuring Universe -
- Structured information, Serialized Units
- * SiSU Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Ralph Amissah
-
- * License: GPL 3 or later
-
- Summary of GPL 3
-
- 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, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- http://www.fsf.org/licenses/gpl.html
- http://www.gnu.org/copyleft/gpl.html
- http://www.jus.uio.no/sisu/gpl3.fsf
-
- © Ralph Amissah 1997, current 2006.
- All Rights Reserved.
-
- * Ralph Amissah: ralph@amissah.com
- ralph.amissah@gmail.com
-=end
-require 'rexml/document'
-include REXML
-argv=$*
-@sisu,@sisu_base=Array.new,Array.new
-unless argv.empty?
- argv.each do |kdi|
- if kdi =~/\.kdi$/
- system("cp #{kdi} #{kdi}.tar.gz && tar xzvf #{kdi}.tar.gz && rm #{kdi}.tar.gz")
- file=File.new("maindoc.xml")
- #system("cp #{kdi} /tmp/. && cd /tmp && tar xzvf /tmp/#{kdi} && cd -")
- #file=File.new("/tmp/maindoc.xml")
- @output=File.new("#{kdi}.sst",'w')
- doc=Document.new(file)
- root=doc.root
- @el=Array.new
- root.each do |x|
- end
- root.each_with_index do |content,idx|
- if root.elements["item[#{idx}]/summary"]
- id,ma,ch=nil,nil,Array.new
- if root.elements["item[#{idx}]/id"]
- id=root.elements["item[#{idx}]/id"].text.to_i
- end
- if root.elements["item[#{idx}]/parent"]
- ma=root.elements["item[#{idx}]/parent"].text.to_s
- end
- if root.elements["item[#{idx}]/child"] #problem only get one child, even where several
- root.get_elements("item[#{idx}]/child").each do |x|
- ch << x.text
- end
- end
- if root.elements["item[#{idx}]/summary"]
- sum=root.elements["item[#{idx}]/summary"].text.to_s.strip
- end
- if root.elements["item[#{idx}]/text"]
- txt=root.elements["item[#{idx}]/text"].text.to_s.strip
- end
- @el[id]=Hash.new
- @el[id][:id]=id
- @el[id][:ma]=ma
- @el[id][:ch]=ch
- @el[id][:sum]=sum
- @el[id][:txt]=txt
- if ma == '-1'
- @el[id][:lev]=':A'
- @top=id
- end
- end
- end
- @doc=Array.new
- @title=@el[@top][:sum]
- p @el[@top][:sum]
- @doc << ':A~ ' + @el[@top][:sum]
- @el[@top][:ch].each do |x|
- @el[x.to_i][:lev]='1'
- @doc << '1~ ' + @el[x.to_i][:sum]
- @doc << @el[x.to_i][:txt]
- @el[x.to_i][:ch].each do |y|
- @el[y.to_i][:lev]='2'
- @doc << '2~ ' + @el[y.to_i][:sum]
- @doc << @el[y.to_i][:txt]
- @el[y.to_i][:ch].each do |z|
- @el[z.to_i][:lev]='3'
- @doc << '3~ ' + @el[z.to_i][:sum]
- @doc << @el[z.to_i][:txt]
- @el[z.to_i][:ch].each do |za| #unsupported... consder
- @el[za.to_i][:lev]='4'
- @doc << '!_ ' + @el[za.to_i][:sum]
- @doc << @el[za.to_i][:txt]
- end
- end
- end
- end
- #@el.each_with_index do |x,i|
- # if x: puts "#{i}: lev: #{x[:lev]}, id: #{x[:id]}, ma: #{x[:ma]}, ch: #{x[:ch].join(',')}"
- # end
- #end
-# regexs strip most kdissert markup, and provide minimal info for sisu markup -->
- @doc.each do |c,idx|
- c.gsub!(/<\/summary>/,'')
- c.gsub!(/<html>.+?\n|<\/body>|<\/html>|<p>/m,'')
- c.gsub!(/<\/p>/,"\n")
- c.gsub!(/<span style="font-weight:600">(.+?)<\/span>/," *{ \\1 }* ")
- c.gsub!(/<span style="text-decoration:underline">(.+?)<\/span>/," _{ \\1 }_ ")
- c.gsub!(/<span style="font-style:italic">(.+?)<\/span>/," /{ \\1 }/ ")
- c.gsub!(/<ul type="disc">/,'_* ')
- c.gsub!(/<\S+?>/,'')
- c.gsub!(/&lt;(:p[bn])&gt;/,"<\\1>")
- c.gsub!(/&lt;&lt;(|.?|@|.?|)/,"<<\\1")
- c.gsub!(/&quot;/,'"')
- c.gsub!(/ \s+/,' ')
- @sisu_base << c.strip + "\n\n"
- end
- else puts ".kdi extension expected, filename not recognised: << #{kdi} >>"
- end
- end
-else puts '.kdi file for conversion to sisu expected'
-end
-sisu_head=<<WOK
-% converted from Kdissert to SiSU
-
-@title: #@title
-
-@prefix: Kdissert mind/topic mapping auto conversion to SiSU markup
-
-@links: {Kdissert}http://freehackers.org/~tnagy/kdissert/
-
-@base_program: kdissert
-
-% @date:
-
-@rcs: $Id$
-
-@level: num_top=1
-
-WOK
-#puts @sisu_base
-@output << sisu_head << @sisu_base
-__END__
diff --git a/data/sisu/v3dv/conf/convert/modify.rb b/data/sisu/v3dv/conf/convert/modify.rb
deleted file mode 100644
index 8a4b9074..00000000
--- a/data/sisu/v3dv/conf/convert/modify.rb
+++ /dev/null
@@ -1,376 +0,0 @@
-#!/usr/bin/env ruby
-# encoding: utf-8
-=begin
-
- * Name: modify.rb
-
- * Description: A conversion script for canned substitutions,
- a fairly generic simple tool that can be used to store other canned conversions,
- (used here for altering SiSU markup or the SiSU program)
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- * Packaged with: SiSU a framework for document structuring, publishing & 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
- * Download:
- <http://www.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-=end
-module SiSU_Modify
- class Operations
- def initialize(cf,files)
- @cf,@files=cf,files
- @description="This is a script that contains canned text conversions for reuse"
- pwd=Dir.pwd
- @mod_inst='modify_instructions.rb'
- @modify_instructions_script="#{pwd}/#{@mod_inst}"
- if FileTest.file?(@modify_instructions_script) ==true
- puts <<-WOK
- autoload script: "#{@modify_instructions_script}"
- used by "ruby #{__FILE__} --convert" if
- "Extracted.new.modify.modules_and_classes" is used
- (see "matches_and_replaces")
- EDIT this file manually
- [to rebuild run: "ruby #{__FILE__} --build-gsub"]
-
- WOK
- else
- puts <<-WOK
- autoload script does not exist: "#{@modify_instructions_script}"
- needed for "ruby #{__FILE__} --convert" if
- "Extracted.new.modify.modules_and_classes" is used
- (see "matches_and_replaces")
- try run: "ruby #{__FILE__} --build-gsub"
-
- WOK
- end
- autoload :Extracted, "./#{@mod_inst}"
- end
- def matches_and_replaces #edit manually
- [
- #Extracted.new.modify.modules_and_classes,
- #Extracted.new.modify.modules,
- #Extracted.new.modify.classes,
- #modify.dates,
- #modify.modules,
- #modify.classes,
- #modify.misc,
- ]
- end
- def message(text)
- response=''
- while response !~/yes/
- print %{
- #{text}
- To continue type "yes" [to exit type "no" or "quit"]: }
- response=File.new('/dev/tty').gets.strip
- exit if response =~/^(?:quit|no)$/
- end
- end
- def help
- print <<WOK
-
-#{@description}
-
-note converting twice in a single direction will result
-in markup inconsistency
-
-modify.rb --convert
- performs the current conversion that is set in method "matches_and_replaces",
- this needs to be edited manually, as do the substitutions to be made on the
- files matched in the settings [handle with care]
-
-modify.rb --report
- reports on the names of modules and classes in each file requested
- (the defalt is all)
-
-modify.rb --build-gsub
- creates modify_instructions.rb methods for substitutions of methods and
- classes for editing
-
-WOK
- exit
- end
- #%% substitutions to be made
- # [//, ''],
- #def rename_default
- # message(%q{rename SiSU modules, classes, date})
- # [
- # [/1997\s+-\s+2012/, '1997 - 2012'],
- # ]
- #end
- def modify
- def misc
- [
- #[//, ''],
- ]
- end
- def dates
- [
- [/1997\s+-\s+2011/, '1997 - 2012'],
- ]
- end
- def modules
- [
- #[//, ''],
- ]
- end
- def classes
- [
- #[//, ''],
- ]
- end
- self
- end
- def convert
- message("WARNING, proceed at your own risk,\npermanent changes requested for the above named files\n best that you check (manually) what this file is set to do\n conversions set are at the top of the file")
- if matches_and_replaces.length > 0
- @files.each do |i|
- @new,@matched,@empty1,@empty2=true,false,false,false
- file=File.open(i,'r')
- cont=file.readlines
- file.close
- @file=File.new(i,'w')
- cont.each do |t|
- matches_and_replaces.each do |match_and_replace|
- match_and_replace.each do |m,r|
- if t =~m
- p m.to_s + ' -> ' + r
- puts "in: #{t}"
- t=t.gsub(m,r) if m and r
- puts "out: #{t}"
- end
- end
- end
- if t=~/^\s*$/; @empty1=true
- else @empty1=false
- end
- @file.puts t unless (@empty1==true and @empty2==true)
- if t=~/^\s*$/; @empty2=true
- else @empty2=false
- end
- end
- @file.close
- end
- end
- end
- def report_modules_and_classes
- @f=nil
- @structure={}
- @arr={mod: [], cl: []}
- @files.each do |f|
- @new,@matched,@empty1,@empty2=true,false,false,false
- file=File.open(f,'r')
- cont=file.readlines
- file.close
- cont.each do |t|
- if f != @f
- @f=f
- @mod=nil
- #puts "---\n#{@f}"
- @structure[@f]={}
- end
- if t =~/^\s*module\s+\S+/
- @mod=t.match(/^\s*module\s+(\S+)/)[1]
- #puts ' ' + @mod
- @arr[:mod] << @mod
- @structure[@f].store(@mod,[])
- #@structure[@f] = {@mod => []}
- end
- if t =~/^\s*class\s+\S+/
- cl=t.match(/^\s*class\s+(\S+)/)[1]
- #puts ' ' + cl
- @arr[:cl] << cl
- @structure[@f][@mod] << cl
- end
- end
- end
- @structure.sort.each do |fl,modules|
- puts "---\n" + fl
- modules.sort.each do |mod,classes|
- puts ' ' + mod
- classes.sort.each do |cl|
- puts ' ' + cl
- end
- end
- end
- puts '---'
- puts 'number of modules: ' + @arr[:mod].length.to_s + ', unique: ' + @arr[:mod].uniq.length.to_s
- puts 'number of classes: ' + @arr[:cl].length.to_s + ', unique: ' + @arr[:cl].uniq.length.to_s
- end
- def build_search_and_replace_method_for_modules_and_classes
- @f=nil
- @structure={}
- @arr={mod: [], cl: []}
- @files.each do |f|
- @new,@matched,@empty1,@empty2=true,false,false,false
- file=File.open(f,'r')
- cont=file.readlines
- file.close
- cont.each do |t|
- if f != @f
- @f=f
- @mod=nil
- #puts "---\n#{@f}"
- @structure[@f]={}
- end
- if t =~/^\s*module\s+\S+/
- @mod=t.match(/^\s*module\s+(\S+)/)[1]
- #puts ' ' + @mod
- @arr[:mod] << @mod
- @structure[@f].store(@mod,[])
- #@structure[@f] = {@mod => []}
- end
- if t =~/^\s*class\s+\S+/
- cl=t.match(/^\s*class\s+(\S+)/)[1]
- #puts ' ' + cl
- @arr[:cl] << cl
- @structure[@f][@mod] << cl
- end
- end
- end
- puts 'number of modules: ' + @arr[:mod].length.to_s + ', unique: ' + @arr[:mod].uniq.length.to_s
- puts 'number of classes: ' + @arr[:cl].length.to_s + ', unique: ' + @arr[:cl].uniq.length.to_s
- method_modules_and_classes=[]
- method_modules_and_classes <<<<-WOK
-#module SiSU_MC
- class Extracted
- def modify
- WOK
- #% modules_and_classes
- method_modules_and_classes <<<<-WOK
- def modules_and_classes
- [
- WOK
- @structure.sort.each do |fl,modules|
- method_modules_and_classes << ' '*8 + "##% -- " + fl
- modules.sort.each do |mod,classes|
- method_modules_and_classes << ' '*8 + '# ' + "[/#{mod}/," + ' '*(67 - mod.length) + "'#{mod}'],"
- classes.uniq.sort.each do |cl|
- method_modules_and_classes << ' '*8 + '# ' + "[/#{cl}/," + ' '*(65 - cl.length) + "'#{cl}'],"
- end
- end
- end
- method_modules_and_classes <<<<-WOK
- ]
- end
- WOK
- #% modules
- method_modules_and_classes <<<<-WOK
- def modules
- [
- WOK
- method_modules_and_classes << ' '*8 + '# ' + 'number of modules: ' + @arr[:mod].length.to_s +
- ', unique: ' + @arr[:mod].uniq.length.to_s
- @arr[:mod].uniq.sort.each do |mod|
- method_modules_and_classes << ' '*8 + '# ' + "[/#{mod}/," + ' '*(67 - mod.length) + "'#{mod}'],"
- end
- method_modules_and_classes <<<<-WOK
- ]
- end
- WOK
- #% classes
- method_modules_and_classes <<<<-WOK
- def classes
- [
- WOK
- method_modules_and_classes << ' '*8 + '# ' + 'number of classes: ' + @arr[:cl].length.to_s +
- ', unique: ' + @arr[:cl].uniq.length.to_s
- @arr[:cl].uniq.sort.each do |cl|
- method_modules_and_classes << ' '*8 + '# ' + "[/#{cl}/," + ' '*(67 - cl.length) + "'#{cl}'],"
- end
- method_modules_and_classes <<<<-WOK
- ]
- end
- WOK
- method_modules_and_classes <<<<-WOK
- self
- end
- end
-#end
- WOK
- #method_modules_and_classes.each{|x| puts x}
- if FileTest.file?(@modify_instructions_script) ==true
- message("WARNING << #{@mod_inst} >> exists (and may have been edited). The existing << #{@mod_inst} >> will be overwritten if you proceed.")
- end
- instructs=File.new(@modify_instructions_script,'w')
- method_modules_and_classes.each do |x|
- puts x
- instructs.puts x
- end
- instructs.close
- end
- def action
- if @files and @files.length > 0
- p @files
- mr=nil
- #%% changes to make m match, r replace -------------------------->
- if @cf =~/--help/; help
- else
- case @cf
- when /--convert/; convert
- when /--report/; report_modules_and_classes
- when /--build-gsub/; build_search_and_replace_method_for_modules_and_classes
- else help
- end
- #act
- end
- else puts "this routine makes permanent changes to the contents of the files matched, as instructed within [no matches]"
- end
- end
- end
-end
-#% files to match for this conversion set ------------------------->
-f=$* #; p $*
-cf=f[0].to_s
-f.shift
-match_and_replace=Array.new
-unless f.length > 0
- f=if cf == '--report' \
- or cf == '--build-gsub'
- Dir.glob("[a-zA-Z]*.rb") #restrict to ruby files
- else
- Dir.glob("[a-zA-Z]*")
- end
- f=f.sort.delete_if { |x| x == __FILE__ or x == 'modify_instructions.rb' }
-end
-SiSU_Modify::Operations.new(cf,f).action
-__END__
-#f=Dir.glob("{bin,conf,data,lib}/**/*.rb") #sisu development
-#f=Dir.glob("[^_]/**/*") #all files subdirectories beneath pwd except those starting with _
diff --git a/data/sisu/v3dv/conf/convert/sisu_convert b/data/sisu/v3dv/conf/convert/sisu_convert
deleted file mode 100644
index a3a12189..00000000
--- a/data/sisu/v3dv/conf/convert/sisu_convert
+++ /dev/null
@@ -1,519 +0,0 @@
-#!/usr/bin/env ruby
-# = sisu - SiSU information Structuring Universe
-#
-# Copyright (c) Ralph Amissah 1997,2004
-#
-# Ralph Amissah mailto:ralph@amissah.com
-#
-# * Name: SiSU information Structuring Universe
-# * Author: Ralph@Amissah.com
-# * Description: document conversion tool, to sisu from other formats
-# * License: GPL 3 or later
-# * Notes: word conversion uses wvWare and wvSiSU.xml (a modified/stripped wvHtml.xml)
-# * http://wvware.sourceforge.net/
-# * http://sourceforge.net/projects/wvware
-# * <url:sisu.lnk>|sisu.lnk|@|^|
-# * <url:sisu>
-module CONVERT
- class MyOutput
- def initialize(data, filename, instruct)
- @data=data.compact
- @filename=filename
- @instruct=instruct
- end
- def headerBasic
- <<WOK
-% SiSU 2.0
-
-@title:
- :subtitle:
-
-@creator:
- :author:
-
-@classify:
- :topic_register:
-
-@date:
- :published:
-
-@rights:
- :copyright:
- :license:
-
-WOK
- end
- def headerDefault
- <<WOK
-% SiSU 2.0
-
-@title:
- :subtitle:
-
-@creator:
- :author:
-
-@classify:
- :topic_register:
-
-@date:
- :published:
-
-@rights:
- :copyright:
- :license:
-
-WOK
- end
- def hardOutput
- pre = Array.new
- case @instruct
- when /default/
- pre << headerDefault
- else
- pre << headerBasic
- end
- @filename_wv=File.new(%{,,#{@filename}.sst},'w+')
- @filename_wv << pre
- @data.each do |x|
- y = x.split("\n")
- y.each do |z| # cleaner output this way
- z.strip!
- @filename_wv.puts "#{z}\n\n" unless z =~/^$/
- end
- end
- end
- end
- class WareWord97
- def initialize(data, filename, instruct)
- @data=data
- @filename=filename
- @instruct=instruct
- end
- def songsheet
- data=@data
- print "Convert to SiSU file from Word97 << gvim ,,#{@filename}.sst >\n" #: <<#{@@html_title}>>
- data=WareWord97.new(data.collect,@filename,@instruct).strip
- data=WareWord97.new(data.collect,@filename,@instruct).strip
- data=WareWord97.new(data.collect,@filename,@instruct).markup_rules
- data=MyOutput.new(data.collect,@filename,@instruct).hardOutput
- end
- def strip
- data=@data
- tuned_file=Array.new
- endnote_no=1
- data.each do |para|
- para.strip!
- para.gsub!(/<u>\s*<\/u>/,'')
- para.gsub!(/<\/u>\s*<u>/,'')
- para.gsub!(/<b>\s*<\/b>/,'')
- para.gsub!(/<\/b>\s*<b>/,'')
- para.gsub!(/<i>\s*<\/i>/,'')
- para.gsub!(/<\/i>\s*<i>/,'')
- tuned_file << para unless para == nil
- end
- tuned_file
- end
- def markup_rules
- data=@data
- tuned_file=Array.new
- endnote_no=1
- data.each do |para|
- para.strip!
- para.gsub!(/\s+/,' ')
- para.gsub!(/^<b>(Chapter|Article)(.+?)<\/b>/i,'1~ \1 \2') #watch case insensitivity
- para.gsub!(/^<b>(Part|Section|Book)(.+?)<\/b>/i,':C~ \1 \2') #watch case insensitivity
- para.gsub!(/^<b>(\d+\.\d+\.\d+\.?)(.+?)<\/b>/i,'3~ \1 \2') #numeric, decide what to do, can be different
- para.gsub!(/^<b>(\d+\.\d+\.?)(.+?)<\/b>/i,'2~ \1 \2') #numeric, decide what to do, can be different
- para.gsub!(/^<b>(\d.+?)<\/b>/i,'4~ \1 \2') #numeric, decide what to do, can be different
- #para.gsub!(/^<b>([\d.]+?)<\/b>/i,'4~ \1 \2') #numeric, decide what to do, can be different
- para.gsub!(/<u>(.+?)<\/u>/,'_{\1}_')
- para.gsub!(/<b>(.+?)<\/b>/,'!{\1}!')
- para.gsub!(/<i>(.+?)<\/i>/,'/{\1}/')
- tuned_file << para unless para == nil
- end
- tuned_file
- end
- end
- class Html
- def initialize(data, filename, instruct)
- @data=data
- @filename=filename
- @instruct=instruct
- end
- def songsheet
- data=@data
- print "Convert to SiSU file from #{@filename}.html << gvim ,,#{@filename}.sst >\n" #: <<#{@@html_title}>>
- #data=Html.new(data.collect, @filename, @instruct).space_paragraphs
- #data=Html.new(data.split(''), @filename, @instruct).space_paragraphs
- data=Html.new(data.join.split(/\n\n+/), @filename, @instruct).space_paragraphs
- #data=Html.new(data.split("\n"), @filename, @instruct).space_paragraphs
- #data=Html.new(data.collect.join.split("\n"), @filename, @instruct).space_paragraphs
- data=Html.new(data.collect, @filename, @instruct).multiline
- data=Html.new(data.collect.join.split("\n\n"), @filename, @instruct).markup_rules
- data=MyOutput.new(data.collect, @filename, @instruct).hardOutput
- end
- def space_paragraphs
- #data=@data.join.split(/\n/)
- data=@data
- #p data.length
- tuned_file=Array.new
- data.each do |para|
- para.strip!
- para.gsub!(/\r/,'')
- #para.gsub!(/\n/, ' ') #PROBLEM, serious time issues on a few files also for \n (or multiline matches which is less surprising), edit out if necessary
- para.gsub!(/<\/?p>/i,'zZz')
- para.gsub!(/<\/?\s*p(?:\s+ALIGN=.+?)?>/i,'zZz') #all manner of <p> para.gsub!(/<\/?p>/i, "\n\n")
- para.gsub!(/<p\s+(class|align).+?>/i,'zZz') #
- para.gsub!(/<\/p>/i,'zZz') # repeat actually
- para.gsub!(/<(?:dir|tr|br)>/i,'zZz') #
- #para.gsub!(/<(?:\/\s*)?(?:dir|tr|br)>/i, "zZz") #
- para.gsub!(/(<\/center>)/i,'\1zZz')
- para.gsub!(/(<\/h[1-6]>)/i,'\1zZz')
- para.gsub!(/ \s+/i,' ')
- para.gsub!(/(?:\s*zZz\s*)+/i,'zZz') #
- tuned_file << para unless para == nil
- end
- tuned_file
- end
- def blockquotes(sub='') # SERIOUS PROBLEM INTRODUCED, some blockquotes go missing !, quite unacceptable, debug, for now not used
- res=Array.new
- sub.each do |x|
- if x=~/(<\/blockquote>)/i
- m = $1
- res << x[/(.+?)#{m}/mi,1].gsub!(/zZz/,'zZz_1 ') if x =~/.+?#{m}/mi
- res << x[/#{m}(.+)/mi,1]
- else
- res << x #[/(.+)/mi,1]
- end
- end
- res.join
- end
- def multiline
- data=@data
- tuned_file=Array.new
- data.each do |para|
- para.gsub!(/\n/,' ')
- para.gsub!(/ \s+/mi,' ')
- #ALL HERE could be very time EXPENSIVE but tamed? compromise ... /mi
- para.gsub!(/<([biu]|h[1-6])>(?:zZz)?([^<]+)?zZz(.+?)<\/\1>/i,'zZz<\1>\2 \3</\1>')
- para.gsub!(/<([biu]|h[1-6])>(?:<center>|zZz)+(.+?)(?:<\/center>)?zZz(.+?)?<\/\1>/i,'zZz<\1>\2 \3</\1>')
- #para.gsub!(/<([biu]|h[1-6])>(?:<center>|zZz)+(.+?)<\/center>zZz(.+?)?<\/\1>/i,'zZz<\1>\2 \3</\1>')
- para.gsub!(/<([biu]|h[1-6])>(?:<center>|zZz)+(.+?)<\/\1>/i,'zZz<\1>\2</\1>')
- para.gsub!(/<(h[1-6])>(.+?)(?:<center>|zZz)+<\/\1>/i,'zZz<\1>\2</\1>zZz') #does catch some h1, h2 etc, too expensive to have biu
- #para.gsub!(/<([biu]|h[1-6])>(.+?)(?:<center>|zZz)+<\/\1>/i,'zZz<\1>\2 \3</\1>') #may go too far? useful for h1 h2 etc, remove biu?
- #para.gsub!(/<([biu]|h[1-6])>([^<]+)?zZz(.+?)<\/\1>/i,'zZz<\1>\2 \3</\1>')
- #para.gsub!(/<([biu]|h[1-6])>([^<]+)?zZz(.+?)<\/\1>/i,'zZz<\1>\2 \3</\1>')
- ### SERIOUS PROBLEM INTRODUCED
- # sub = para.split(/<blockquote>/i)
- # para = blockquotes(sub) if sub.length > 0 #check was on >1 could have serious repercussions 2004w29
- para.gsub!(/zZz(\s*zZz)*/,"\n\n")
- tuned_file << para << "\n\n" unless para == nil
- end
- tuned_file
- end
- def markup_rules
- @@flag_blockquote=false
- data=@data
- tuned_file=Array.new
- data.each do |para|
- if para=~/<a href="(http:\/\/.+?)">/i
- #p para.grep(/<a href="(http:\/\/.+?)">/i)
- #m=$1
- #para.gsub!(/(?:&lt;\s*)?<a href="#{m}">#{m}<\/a>(?:\s*&gt;)?\.?/i, "#{m}")
- para.gsub!(/(?:&lt;\s*)?<a href="(http:\/\/.+?)">http:\/\/.+?<\/a>(?:\s*&gt;)?\.?/i,'\1') #risk that url & url are not to match
- #para.gsub!(/(?:&lt;\s*)?<a href="(\w+\.html)">(http:\/\/.+?\/\1)<\/a>(?:\s*&gt;)?\.?/i, "\\2") #does not match
- end
- if para=~/<BLOCKQUOTE>/i
- @@flag_blockquote=true
- end
- if @@flag_blockquote
- para.gsub!(/^/,'_1 ') unless para.empty? or para =~/^\s*<\/?blockquote?>\s*$/i
- end
- if para=~/<\/BLOCKQUOTE>/i
- @@flag_blockquote=false
- end
- para.gsub!(/<\/?blockquote?>/i,'')
- ### clean
- para.gsub!(/^\s+/i,'')
- para.gsub!(/<([bui]|em|su[pb])>\s*<\/\1>/i,'')
- para.gsub!(/<\/?center>/i,'')
- para.gsub!(/\s*<\/dir>/i,'')
- para.gsub!(/<hr>/i,'')
- para.gsub!(/\s*<a href=".+?\.html#(?:[a-z_]+)?(?:[a-z0-9_-]|\*)+">\[(\*+)\]<\/a>/i,'^{[\1]}^ ') #other endnote marker
- para.gsub!(/<a href=".+?\.html#(?:[a-z_$]+)?[0-9_-]+"(?:\s+name=".+?")?>\[[a-z]?\d+\](?:<\/[bi]>)?<\/a>/i,'~^ ') #endnote marker
- para.gsub!(/<a name=".+?"\s+href=".+?\.html#(?:[a-z_$]+)?[0-9_-]+"?>\[[a-z]?\d+\](?:<\/[bi]>)?<\/a>/i,'~^ ') #endnote marker
- para.gsub!(/<a name="(?:[a-z$]+)?[0-9_-]+">\s*(<\/a>)?\s*\d+\.?\s*(<\/a>)?\s*/i,'^~ ') #endnote
- #para.gsub!(/<h([1-6])>\s*(.+?)\s*<\/h\1>\s*/i,'\1~ \2') #
- para.gsub!(/<h([1-6])(?: align=.+?)?>\s*(.+?)\s*<\/h\1>\s*/i,'\1~ \2') #
- para.gsub!(/^<b>(Chapter|Article)(.+?)<\/b>/i,'4~ \1 \2') #watch case insensitivity
- para.gsub!(/^<b>(Part|Section|Book)(.+?)<\/b>/i,'3~ \1 \2') #watch case insensitivity
- para.gsub!(/^<b>(\d+\.\d+\.\d+\.?)(.+?)<\/b>/i,'6~ \1 \2') #numeric, decide what to do, can be different
- para.gsub!(/^<b>(\d+\.\d+\.?)(.+?)<\/b>/i,'5~ \1 \2') #numeric, decide what to do, can be different
- para.gsub!(/^<b>(\d+\.?)(.+?)<\/b>/i,'4~ \1 \2') #numeric, decide what to do, can be different
- #<a name="ii"></a><B>
- para.gsub!(/^(<a name=".+?">)(?:<small>)?<(?:b|strong)>\s*(.+?)\s*<\/(?:b|strong)>/i,'5~ \2 \1') #watch
- para.gsub!(/^(<(a name|A NAME)=".+?">)(\s*|<\/[aA]>)?([A-Z][A-Z])+/,'5~ \2 \1') #watch
- para.gsub!(/^(\s+|<p>)?(<a name=".+?">)(\s*|<\/a>)?<b>/i,'5~ \2 \1') #watch
- para.gsub!(/<h([1-6])>\s*(.+?)\s*<\/h\1>\s*/i,'\1~ \2') #
- para.gsub!(/^<b>\s*(.+?)<\/b>\s*(<\/i>\s*)?$/i,'4~ \1\2') # wish it all were less messy
- para.gsub!(/^<i>\s*([^"(].+?)<\/i>\s*(<\/b>\s*)?$/i,'5~ \1\2') # wish it all were less messy
- para.gsub!(/<\/?[biu]>/i,'') if para =~/[1-6]\{/
- para.gsub!(/<u>\s*(.+?)\s*<\/u>/i,'_{\1}_')
- para.gsub!(/<(b|strong)>\s*(.+?)\s*<\/\1>/i,'*{\2}*')
- para.gsub!(/<(i|em)>\s*(.+?)\s*<\/\1>/i,'/{\2}/')
- para.gsub!(/<sup>\s*(.+?)\s*<\/sup>/i,'^{\1}^')
- para.gsub!(/(([\/\*!_])\{.+?\}\2)\s\s+/i,'\1 ')
- para.gsub!(/(([\/\*!_])\{.+?\}\2)\s+([.,;?\)])\s+/i,'\1\3 ')
- para.gsub!(/(([\/\*!_])\{.+?\}\2)(["'])\s+/i,'\1\3 ')
- para.gsub!(/(([\/\*!_])\{.+?\}\2)\s*([a-z0-9])/i,'\1 \3')
- para.gsub!(/(([\/\*_])\{.+?\}\2)\s*([a-z0-9])/i,'\1 \3')
- para.gsub!(/([a-z0-9])(([\/\*_])\{.+?\}\3)/i,' \1 \2') #eg this/{problem}/
- para.gsub!(/([\/\*_])\{([,.;; ]+)\}\1/i,'\2') #eg /{,}/ or *{ }* etc.
- para.gsub!(/ \s+/i,' ')
- #para.gsub!(/\/\{\*\{/i, '*{/{')
- #para.gsub!(/\}\*\}\//i, '}/}*')
- para.gsub!(/&quot;/i,'"')
- para.gsub!(/&amp;/i,'and')
- para.gsub!(/<!doctype html public .+/i,'')
- para.gsub!(/<\/?(?:html|head|body|font|small)>/i,'')
- para.gsub!(/<\/(?:title)>/i,'')
- para.gsub!(/<title>/i,'#{~title? ')
- para.gsub!(/<blockquote>(.+?)<\/blockquote>/mi,"\n\n_1 \\1\n\n")
- para.gsub!(/<div align=.+?>|<\/div>|<font size=.+?>|<\/a><\/em><\/strong>/i,'')
- para.gsub!(/~^\s+\.\s*/i,'.~^ ') #check vim equiv # %s/\~e\s\+\.\s*/.\~e /c
- para.gsub!(/\s+~^\s+/i,'~^ ')
- para.gsub!(/ \s+/i,' ')
- para.gsub!(/\s+$/i,'')
- para.gsub!(/^(?:<\/[bi]>)+$/i,'')
- para.gsub!(/^(?:(?:<i>)+<b>|(?:<b>)+<i>)\s*([^"(].+?)/i,'5~ \1\2') # wish it all were less messy
- para.gsub!(/^(?:<\/?(?:[ib]|em)>\s*)+$/i,'') # cleaning up left over <i> etc.
- para.gsub!(/<(?:i|em)>\s*(.+)/i,'/{\1}/') # using up left over <i>
- para.gsub!(/<b>\s*(.+)/i,'*{\1}*') # using up left over <b>
- para.gsub!(/<dd>([\d.]+)/i,'5~ \1')
- para.gsub!(/<dd>(?:&nbsp;)+([\d.]+)/i,'6~ \1')
- para.gsub!(/<dd>(\([a-z]\))/i,'7~ \1')
- para.gsub!(/^([1-9]~)( .+?)<a name="(\S+?)">(.+?)(<\/a>)/i,'\1\3\2\4')
- para.gsub!(/^([1-9]~)( .+?)<a name="(\S+?)">/i,'\1\3\2')
- para.gsub!(/http\/\/(\S+)/i,'http:\/\/\1')
- para.gsub!(/\s*<a href="\S+?">(http:\/\/\S+?)<\/a>\s*/i,' \1 ')
- para.gsub!(/([a-zA-Z.,!?;:])([*\/_-]\{)/,'\1 \2')
- para.gsub!(/^\s*(&nbsp;){10,12}/i,'_2 ')
- para.gsub!(/^\s*(&nbsp;){4,5}/i,'_1 ')
- para.gsub!(/&#9;/,' ') #check
- ## glyphs & tildes
- para.gsub!(/&iexcl;/, '¡') #'Inverted exclamation
- para.gsub!(/&cent;/, '¢') #'Cent sign ¢
- para.gsub!(/&pound;/, '£') #'Pound sign £
- para.gsub!(/&curren;/, '¤') #'General currency sign
- para.gsub!(/&yen;/, '¥') #'Yen sign ¥
- para.gsub!(/&brvbar;/, '¦') #'Broken vertical bar
- para.gsub!(/&sect;/, '§') #'Section sign §
- para.gsub!(/&uml;/, '¨') #'Umlaut
- para.gsub!(/&copy;/, '©') #'Copyright ©
- para.gsub!(/&ordf;/, 'ª') #'Feminine ordinal ª
- para.gsub!(/&laquo;/, '«') #'Left angle quote «
- para.gsub!(/&not;/, '¬') #'Not sign
- para.gsub!(/&shy;/, '­') #'Soft hyphen
- para.gsub!(/&reg;/, '®') #'Registered trademark ®
- para.gsub!(/&macr;/, '¯') #'Macron accent
- para.gsub!(/&deg;/, '°') #'Degree sign °
- para.gsub!(/&plusmin;/,'±') #'Plus or minus ±
- para.gsub!(/&sup2;/, '²') #'Superscript 2 ²
- para.gsub!(/&sup3;/, '³') #'Superscript 3 ³
- para.gsub!(/&acute;/, '') #'Acute accent
- para.gsub!(/&micro;/, 'µ') #'Micro sign (Greek mu) µ
- para.gsub!(/&para;/, '¶') #'Paragraph sign ¶
- para.gsub!(/&middot;/, '·') #'Middle dot
- para.gsub!(/&cedil;/, '¸') #'Cedilla
- para.gsub!(/&sup1;/, '¹') #'Superscript 1 ¹
- para.gsub!(/&ordm;/, 'º') #'Masculine ordinal º
- para.gsub!(/&raquo;/, '»') #'Right angle quote
- para.gsub!(/&frac14;/, '¼') #'Fraction one quarter ¼
- para.gsub!(/&frac12;/, '½') #'Fraction on half ½
- para.gsub!(/&frac34;/, '¾') #'Fraction three quarters ¾
- para.gsub!(/&iquest;/, '¿') #'Inverted question mark ¿
- para.gsub!(/&Agrave;/, 'À') #'Capital A, grave accent À
- para.gsub!(/&Aacute;/, 'Á') #'Capital A, acute accent Á
- para.gsub!(/&Acirc;/, 'Â') #'Capital A, circumflex accent Â
- para.gsub!(/&Atilde;/, 'Ã') #'Capital A, tilde Ã
- para.gsub!(/&Auml;/, 'Ä') #'Capital A, umlaut Ä
- para.gsub!(/&Aring;/, 'Å') #'Capital A, ring Å
- para.gsub!(/&AElig;/, 'Æ') #'Capital AE ligature Æ
- para.gsub!(/&Ccedil;/, 'Ç') #'Capital C, cedilla Ç
- para.gsub!(/&Egrave;/, 'È') #'Capital E, grave accent È
- para.gsub!(/&Eacute;/, 'É') #'Capital E, acute accent É
- para.gsub!(/&Ecirc;/, 'Ê') #'Capital E, circumflex accent Ê
- para.gsub!(/&Euml;/, 'Ë') #'Capital E, umlaut Ë
- para.gsub!(/&Igrave;/, 'Ì') #'Capital I, grave accent Ì
- para.gsub!(/&Iacute;/, 'Í') #'Capital I, acute accent Í
- para.gsub!(/&Icirc;/, 'Î') #'Capital I, circumflex accent Î
- para.gsub!(/&Iuml;/, 'Ï') #'Capital I, umlaut Ï
- para.gsub!(/&ETH;/, 'Ð') #'Capital eth, Icelandic
- para.gsub!(/&Ntilde;/, 'Ñ') #'Capital N, tilde Ñ
- para.gsub!(/&Ograve;/, 'Ò') #'Capital O, grave accent Ò
- para.gsub!(/&Oacute;/, 'Ó') #'Capital O, acute accent Ó
- para.gsub!(/&Ocirc;/, 'Ô') #'Capital O, circumflex accent Ô
- para.gsub!(/&Otilde;/, 'Õ') #'Capital O, tilde Õ
- para.gsub!(/&Ouml;/, 'Ö') #'Capital O, umlaut Ö
- para.gsub!(/&times;/, '×') #'Multiply sign ×
- para.gsub!(/&Oslash;/, 'Ø') #'Capital O, slash Ø
- para.gsub!(/&Ugrave;/, 'Ù') #'Capital U, grave accent Ù
- para.gsub!(/&Uacute;/, 'Ú') #'Capital U, acute accent Ú
- para.gsub!(/&Ucirc;/, 'Û') #'Capital U, circumflex accent Û
- para.gsub!(/&Uuml;/, 'Ü') #'Capital U, umlaut Ü
- para.gsub!(/&Yacute;/, 'Ý') #'Capital Y, acute accent Ý
- para.gsub!(/&THORN;/, 'Þ') #'Capital thorn, Icelandic Þ
- para.gsub!(/&szlig;/, 'ß') #'Small sz ligature, German ß
- para.gsub!(/&agrave;/, 'à') #'Small a, grave accent à
- para.gsub!(/&aacute;/, 'á') #'Small a, acute accent á
- para.gsub!(/&acirc;/, 'â') #'Small a, circumflex accent â
- para.gsub!(/&atilde;/, 'ã') #'Small a, tilde ã
- para.gsub!(/&auml;/, 'ä') #'Small a, umlaut ä
- para.gsub!(/&aring;/, 'å') #'Small a, ring å
- para.gsub!(/&aelig;/, 'æ') #'Small ae ligature æ
- para.gsub!(/&ccedil;/, 'ç') #'Small c, cedilla ç
- para.gsub!(/&egrave;/, 'è') #'Small e, grave accent è
- para.gsub!(/&eacute;/, 'é') #'Small e, acute accent é
- para.gsub!(/&ecirc;/, 'ê') #'Small e, circumflex accent ê
- para.gsub!(/&euml;/, 'ë') #'Small e, umlaut ë
- para.gsub!(/&igrave;/, 'ì') #'Small i, grave accent ì
- para.gsub!(/&iacute;/, 'í') #'Small i, acute accent í
- para.gsub!(/&icirc;/, 'î') #'Small i, circumflex accent î
- para.gsub!(/&iuml;/, 'ï') #'Small i, umlaut ï
- para.gsub!(/&eth;/, 'ð') #'Small eth, Icelandic ð
- para.gsub!(/&ntilde;/, 'ñ') #'Small n, tilde ñ
- para.gsub!(/&ograve;/, 'ò') #'Small o, grave accent ò
- para.gsub!(/&oacute;/, 'ó') #'Small o, acute accent ó
- para.gsub!(/&ocirc;/, 'ô') #'Small o, circumflex accent ô
- para.gsub!(/&otilde;/, 'õ') #'Small o, tilde õ
- para.gsub!(/&ouml;/, 'ö') #'Small o, umlaut ö
- para.gsub!(/&divide;/, '÷') #'Divide sign ÷
- para.gsub!(/&oslash;/, 'ø') #'Small o, slash ø
- para.gsub!(/&ugrave;/, 'ù') #'Small u, grave accent ù
- para.gsub!(/&uacute;/, 'ú') #'Small u, acute accent ú
- para.gsub!(/&ucirc;/, 'û') #'Small u, circumflex accent û
- para.gsub!(/&uuml;/, 'ü') #'Small u, umlaut ü
- para.gsub!(/&yacute;/, 'ý') #'Small y, acute accent ý
- para.gsub!(/&thorn;/, 'þ') #'Small thorn, Icelandic þ
- para.gsub!(/&yuml;/, 'ÿ') #'Smally y, umlaut ÿ
- ##
- para.gsub!(/\s\s+/,' ')
- para.gsub!(/\t+/,' ')
- #para.gsub!(/ +/,' ')
- #para.gsub!(/^(?:<(?:\/)?[bi]>)+$/i, '')
- tuned_file << para unless para == nil
- end
- tuned_file
- end
- end
- class Default < Html
- def initialize(data, filename, instruct)
- @data=data
- @filename=filename
- @instruct=instruct
- end
- def songsheet
- data=@data
- print "Convert to SiSU file from #{@filename}.html << gvim ,,#{@filename}.sst >\n" #: <<#{@@html_title}>>
- data=Default.new(data.collect, @filename, @instruct).space_paragraphs
- data=Default.new(data.collect, @filename, @instruct).multiline
- data=Default.new(data.collect.join.split("\n\n"), @filename, @instruct).markup_rules
- data=Default.new(data.collect, @filename, @instruct).markup_default
- data=MyOutput.new(data.collect, @filename, @instruct).hardOutput
- end
- def markup_default
- data=@data
- tuned_file=Array.new
- data.each do |para|
- para.gsub!(/<i>(Id\.?)(\s|$)/i,'/\{\1\}\2/')
- para.gsub!(/^(~\{\{ .+?)(<\/LI>\s*|<\/OL>\s*)+$/i,'\1')
- para.gsub!(/\/\{Id\.\s*<\/LI>\s*\}\//i,'/{Id.}/')
- tuned_file << para unless para == nil
- end
- tuned_file
- end
- end
-end
-def help
- puts <<WOK
-conversion program
-initial SiSU markup from other file formats
-
- zxy_convert --word does initial conversion from word97 to sisu markup, expects [filename].doc (can also use --doc)
- zxy_convert --html does initial conversion from html to sisu markup, expects [filename].html
- zxy_convert --default does initial conversion from defalt html to sisu markup, expects [filename].html
-
-WOK
-end
-def do_word(argv, instruct)
- argv.each do |f|
- if f =~/.+?\.doc$/
- @argv << f[/(.+?)\.doc$/, 1]
- else
- print "not .doc? << #{f} >> "
- end
- end
- @argv.each do |filename|
- system(%{wvWare -x #{@dir.path.home}/.sisu/convert/wvSiSU.xml #{filename}.doc > #{filename}.wv})
- file_array=IO.readlines("#{filename}.wv", "")
- CONVERT::WareWord97.new(file_array, filename, instruct).songsheet # metaverse created here
- end
-end
-def do_html(argv, instruct)
- argv.each do |f|
- if f =~/.+?\.html?$/
- @argv << f[/(.+?)\.html?$/, 1]
- else
- print "not .html? << #{f} >> "
- end
- end
- @argv.each do |filename|
- file_end=if FileTest.file?("#{filename}.html")
- 'html'
- elsif FileTest.file?("#{filename}.htm")
- 'htm'
- end
- file_array=IO.readlines("#{filename}.#{file_end}","\n\r")
- CONVERT::Html.new(file_array,filename,instruct).songsheet # metaverse created here
- end
-end
-def do_default(argv, instruct)
- argv.each do |f|
- if f =~/.+?\.html$/
- @argv << f[/(.+?)\.html$/, 1]
- else
- print "not .html? << #{f} >> "
- end
- end
- @argv.each do |filename|
- file_array=IO.readlines("#{filename}.html", "\n\r")
- CONVERT::Default.new(file_array, filename, instruct).songsheet # metaverse created here
- end
-end
-def cases(argv, instruct)
- case instruct
- when/^--(word(97)?|doc)$/i #creates minimal sisu_small.gz package to send
- do_word(argv, instruct)
- when/^--(html)$/i #creates sisu.gz package to send
- do_html(argv, instruct)
- when/^--(default)$/i #creates sisu.gz package to send
- do_default(argv, instruct)
- else
- help
- end
-end
-$KCODE='u'
-branch='v2'
-@argv=Array.new
-argv=$*
-SiSU_version_dir=(argv.inspect=~/--v1/) ? 'v1' : 'v2'
-SiSU_lib="sisu/#{SiSU_version_dir}"
-require "#{SiSU_lib}/sysenv"
-include SiSU_Env
-@dir=SiSU_Env::Info_env.new
-instruct = "#{argv[0].to_s}"
-argv.shift
-instruct.chomp!
-instruct = "help" if instruct.nil? or instruct == "";
-cases(argv, instruct)
diff --git a/data/sisu/v3dv/conf/convert/wvHtml.xml b/data/sisu/v3dv/conf/convert/wvHtml.xml
deleted file mode 100644
index 3cc9dd29..00000000
--- a/data/sisu/v3dv/conf/convert/wvHtml.xml
+++ /dev/null
@@ -1,388 +0,0 @@
-<main>
-<charentity>
-<begin>HTML</begin>
-</charentity>
-
-<document>
-<begin>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/REC-html40/loose.dtd&quot;&gt;
-&lt;html&gt;
-&lt;head&gt;
-&lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=<charset/>&quot;&gt;
-&lt;META NAME=&quot;GENERATOR&quot; CONTENT=&quot;wvWare/<version/>&quot;&gt;
-&lt;title&gt;
-<title/>
-&lt;/title&gt;
-&lt;/head&gt;
-&lt;body bgcolor=&quot;#FFFFFF&quot; text=&quot;#000000&quot; link=&quot;#0000ee&quot; vlink=&quot;#551a8b&quot;&gt;
-</begin>
-<end>
-&lt;!--
-&lt;hr&gt;
-&lt;address&gt;
-&lt;a href=&quot;http://wvware.sourceforge.net/&quot;&gt;&lt;img
-src=&quot;wvSmall.gif&quot; height=31 width=47
-align=left border=0 alt=&quot;wvWare&quot;&gt;&lt;/a&gt;
-&lt;a href=&quot;http://validator.w3.org/check/referer&quot;&gt;&lt;img
-src=&quot;vh40.gif&quot; height=31 width=88
-align=right border=0 alt=&quot;Valid HTML 4.0!&quot;&gt;&lt;/a&gt;
-Document created with &lt;a href=&quot;http://wvware.sourceforge.net/&quot;&gt;wvWare/<version/>&lt;/a&gt;&lt;br&gt;
-&lt;/address&gt;
---&gt;
-&lt;/body&gt;
-&lt;/html&gt;
-</end>
-</document>
-
-<section>
-<begin>
-&lt;!--Section Begins--&gt;&lt;br&gt;
-</begin>
-<end>
-&lt;!--Section Ends--&gt;
-</end>
-</section>
-
-<justification>
-<left>left</left>
-<right>right</right>
-<center>center</center>
-<block>left</block>
-<asian>&lt;!--Could Someone who sees this tag tell me what was is this type of justification, asian languages only i thing--&gt;</asian>
-</justification>
-
-<numbering>
-<Arabic>type=&quot;1&quot;</Arabic>
-<UpperRoman>type=&quot;I&quot;</UpperRoman>
-<LowerRoman>type=&quot;i&quot;</LowerRoman>
-<UpperCaseN>type=&quot;A&quot;</UpperCaseN>
-<LowerCaseN>type=&quot;a&quot;</LowerCaseN>
-</numbering>
-
-<border>
-<noned>none</noned>
-<singled>solid</singled>
-<thickd>solid</thickd>
-<doubled>double</doubled>
-<number4d>double</number4d>
-<hairlined>solid</hairlined>
-<dotd>dotted</dotd>
-<dashlargegapd>dashed</dashlargegapd>
-<dotdashd>dotted</dotdashd>
-<dotdotdashd>dotted</dotdotdashd>
-<tripled>double</tripled>
-<thin-thicksmallgapd>dashed</thin-thicksmallgapd>
-<thick-thinsmallgapd>dashed</thick-thinsmallgapd>
-<thin-thick-thinsmallgapd>dashed</thin-thick-thinsmallgapd>
-<thin-thickmediumgapd>dashed</thin-thickmediumgapd>
-<thick-thinmediumgapd>dashed</thick-thinmediumgapd>
-<thin-thick-thinmediumgapd>dashed</thin-thick-thinmediumgapd>
-<thin-thicklargegapd>dashed</thin-thicklargegapd>
-<thick-thinlargegapd>dashed</thick-thinlargegapd>
-<thin-thick-thinlargegapd>dashed</thin-thick-thinlargegapd>
-<waved>solid</waved>
-<doublewaved>double</doublewaved>
-<dashsmallgapd>sashed</dashsmallgapd>
-<dashdotstrokedd>dashed</dashdotstrokedd>
-<emboss3Dd>ridge</emboss3Dd>
-<engrave3Dd>groove</engrave3Dd>
-<defaultd>ridge</defaultd>
-</border>
-
-<!-- <begin>&lt;ol <nfc/> start=&quot;<start/>&quot;&gt; -->
-<olist>
-<begin>&lt;ol <nfc/>&gt;
-</begin>
-<end>&lt;/ol&gt;</end>
-</olist>
-
-<ulist>
-<begin>&lt;ul&gt;
-</begin>
-<end>&lt;/ul&gt;</end>
-</ulist>
-
-<!-- <begin>&lt;li&gt;</begin> -->
-<entry>
-<begin>&lt;li value=&quot;<start/>&quot;&gt;</begin>
-<end>&lt;/li&gt;</end>
-</entry>
-
-
-<!--
-this tableoverride option can be used to turn off handling of
-these tags in tables, which I find is necessary for at least netscape
--->
-<tableoverrides>
-<ParaBefore>0</ParaBefore>
-<ParaRight>0</ParaRight>
-<ParaAfter>0</ParaAfter>
-<ParaLeft>0</ParaLeft>
-<ParaLeft1>0</ParaLeft1>
-<VertMergedCells>0</VertMergedCells>
-</tableoverrides>
-
-<table>
-<begin>&lt;table width=&quot;<tablerelwidth/>%&quot; border=&quot;1&quot; cols=&quot;<no_cols/>&quot; rows=&quot;<no_rows/>&quot;&gt;</begin>
-<end>&lt;/table&gt;</end>
-</table>
-
-<row>
-<begin>&lt;tr&gt;</begin>
-<end>&lt;/tr&gt;</end>
-</row>
-
-<cell>
-<begin>&lt;td bgcolor=&quot;<cellbgcolor/>&quot; width=&quot;<cellrelwidth/>%&quot; rowspan=&quot;<rowspan/>&quot; colspan=&quot;<colspan/>&quot;&gt;</begin>
-<end>&lt;/td&gt;</end>
-</cell>
-
-<paragraph>
-<begin>
-<table.end/>
-<table.begin/>
-<row.begin/><cell.begin/><olist.end/><olist.begin/><ulist.end/><ulist.begin/><entry.begin/><text.begin/>
-</begin>
-<end>
-<text.end/><entry.end/><olist.end/><ulist.end/><cell.end/><row.end/>
-</end>
-</paragraph>
-
-<!-- these are all the character properties that can show up in word -->
-<bold><begin>&lt;b&gt;</begin><end>&lt;/b&gt;</end></bold>
-<italic><begin>&lt;i&gt;</begin><end>&lt;/i&gt;</end></italic>
-
-<!--
-text that has been deleted and will be displayed with strikethrough when
-revision marked text is to be displayed
-
-use either this line...
--->
-<RMarkDel><begin>&lt;s&gt;</begin><end>&lt;/s&gt;&lt;a href=&quot;#author<ibstRMarkDel/>&quot;&gt;[Author ID<ibstRMarkDel/>: at <dttmRMarkDel/> ]&lt;/a&gt;</end></RMarkDel>
-
-<!--
-or uncomment below to make deleted text dissappear (well, become commented out)
--->
-<!--
-<RMarkDel><begin>&lt;!-&#45;</begin><end>-&#45;&gt;</end></RMarkDel>
--->
-
-<!-- Overwriting char props. like CaPs->CAPS SmallCaps->smallcaps -->
-<outline><begin></begin><end></end></outline>
-<smallcaps><begin>&lt;span style=&quot;text-transform:lowercase&quot;&gt;</begin><end>&lt;/span&gt;</end></smallcaps>
-<caps><begin>&lt;span style=&quot;text-transform:uppercase&quot;&gt;</begin><end>&lt;/span&gt;</end></caps>
-<vanish><begin></begin><end></end></vanish>
-
-<!--If you uncomment this then the annotation text links will become commented out by html tags-->
-<!--
-<vanish><begin>&lt;!-&#45;</begin><end>-&#45;&gt;</end></vanish>
--->
-
-<!--
-text that has been newly typed since the last time revision marks have been accepted
-and will be displayed with underline when revision marked text is to be displayed
-
-use either this line...
--->
-<RMark><begin>&lt;u&gt;</begin><end>&lt;/u&gt;&lt;a href=&quot;#author<ibstRMark/>&quot;&gt;[Author ID<ibstRMark/>: at <dttmRMark/>]&lt;/a&gt;</end></RMark>
-
-<!--
-or uncomment below to make the underline dissappear
--->
-<!--
-<RMark><begin></begin><end></end></RMark>
--->
-
-
-<strike><begin>&lt;s&gt;</begin><end>&lt;/s&gt;</end></strike>
-<shadow><begin></begin><end></end></shadow>
-<lowercase><begin></begin><end></end></lowercase>
-<emboss><begin></begin><end></end></emboss>
-<imprint><begin></begin><end></end></imprint>
-<!--double strike-->
-<dstrike><begin>&lt;s&gt;</begin><end>&lt;/s&gt;</end></dstrike>
-
-<!--
-ftc's
-&
-hps
-
-keep them for font face and do that later.
--->
-
-<super><begin>&lt;sup&gt;</begin><end>&lt;/sup&gt;</end></super>
-<sub><begin>&lt;sub&gt;</begin><end>&lt;/sub&gt;</end></sub>
-
-<singleu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></singleu>
-<wordu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></wordu>
-<doubleu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></doubleu>
-<dottedu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dottedu>
-<hiddenu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></hiddenu>
-<thicku><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></thicku>
-<dashu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dashu>
-<dotu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dotu>
-<dotdashu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dotdashu>
-<dotdotdashu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dotdotdashu>
-<waveu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></waveu>
-
-<!--
-text whose properties have been changed since the last time revision marks have been accepted
-and will be displayed with a note showing the change points.
-
-use either this line (which admit it a bit scary looking, but harmless)...
--->
-<PropRMark><begin>&lt;a href=&quot;#author<ibstPropRMark/>&quot;&gt;-&#45;&amp;gt;&lt;/a&gt;</begin><end>&lt;a href=&quot;#author<ibstPropRMark/>&quot;&gt;[Author ID<ibstPropRMark/>: at <dttmPropRMark/>]&lt;/a&gt;</end></PropRMark>
-
-<!--
-or uncomment below to make the notes dissappear
--->
-<!--
-<PropRMark><begin></begin><end></end></PropRMark>
--->
-
-<!--
-<color>
--->
-<Black><begin>Black</begin><end></end></Black>
-<Blue><begin>Blue</begin><end></end></Blue>
-<Cyan><begin>Cyan</begin><end></end></Cyan>
-<Green><begin>Green</begin><end></end></Green>
-<Magenta><begin>Magenta</begin><end></end></Magenta>
-<Red><begin>Red</begin><end></end></Red>
-<Yellow><begin>Yellow</begin><end></end></Yellow>
-<White><begin>White</begin><end></end></White>
-<DkBlue><begin>DarkBlue</begin><end></end></DkBlue>
-<DkCyan><begin>DarkCyan</begin><end></end></DkCyan>
-<DkGreen><begin>DarkGreen</begin><end></end></DkGreen>
-<DkMagenta><begin>DarkMagenta</begin><end></end></DkMagenta>
-<DkRed><begin>DarkRed</begin><end></end></DkRed>
-<DkYellow><begin>#8b8b00</begin><end></end></DkYellow>
-<DkGray><begin>DarkGray</begin><end></end></DkGray>
-<LtGray><begin>LightGrey</begin><end></end></LtGray>
-<!--
-</color>
--->
-
-<!--
-<animation>
--->
-<LasVegas><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></LasVegas>
-<BackgroundBlink><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></BackgroundBlink>
-<SparkleText><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></SparkleText>
-<MarchingAnts><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></MarchingAnts>
-<MarchingRedAnts><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></MarchingRedAnts>
-<Shimmer><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></Shimmer>
-<!--
-</animation>
--->
-
-<!--
-I dont understand what this one is, and ive never come across it
-
-use this sample line (which admit it a bit scary looking, but harmless)...
--->
-<DispFldRMark><begin>&lt;a href=&quot;#author<ibstDispFldRMark/>&quot;&gt;--&amp;gt;&lt;/a&gt;</begin><end>&lt;a href=&quot;#author<ibstDispFldRMark/>&quot;&gt;[Author ID<ibstDispFldRMark/>: at <dttmDispFldRMark/> (<xstDispFldRMark/>)]&lt;/a&gt;</end></DispFldRMark>
-
-<!--
-or uncomment below to ignore it, the previous might even crash wv ?
--->
-<!--
-<DispFldRMark><begin></begin><end></end></DispFldRMark>
--->
-
-<animation>
-<begin><LasVegas.begin/><BackgroundBlink.begin/><SparkleText.begin/><MarchingAnts.begin/><MarchingRedAnts.begin/><Shimmer.begin/></begin>
-<end><Shimmer.end/><MarchingRedAnts.end/><MarchingAnts.end/><SparkleText.end/><BackgroundBlink.end/><LasVegas.end/></end>
-</animation>
-
-<fontstr>
-<begin>&lt;font color=&quot;<black.begin/><blue.begin/><cyan.begin/><green.begin/><magenta.begin/><red.begin/><yellow.begin/><white.begin/><dkblue.begin/><dkcyan.begin/><dkgreen.begin/><dkmagenta.begin/><dkred.begin/><dkyellow.begin/><dkgray.begin/><ltgray.begin/>&quot;&gt;</begin>
-<end><ltgray.end/><dkgray.end/><dkyellow.end/><dkred.end/><dkmagenta.end/><dkgreen.end/><dkcyan.end/><dkblue.end/><white.end/><yellow.end/><red.end/><magenta.end/><green.end/><cyan.end/><blue.end/><black.end/>&lt;/font&gt;</end>
-</fontstr>
-
-<comment>
-<begin>
-&lt;a href=&quot;#comment<ibstAnno/> &quot;&gt;-&#45;&amp;gt;&lt;/a&gt;
-</begin>
-<end>&lt;a href=&quot;#comment<ibstAnno/> &quot;&gt;[Author:<xstUsrInitl/>]&lt;/a&gt;
-</end>
-</comment>
-
-<style name="Normal">
-<character>
-<begin><PropRMark.begin/><DispFldRMark.begin/><animation.begin/><fontstr.begin/><bold.begin/><italic.begin/><strike.begin/><RMarkDel.begin/><outline.begin/><smallcaps.begin/><caps.begin/><vanish.begin/><RMark.begin/><shadow.begin/><lowercase.begin/><emboss.begin/><imprint.begin/><dstrike.begin/><super.begin/><sub.begin/><singleu.begin/><wordu.begin/><doubleu.begin/><dottedu.begin/><hiddenu.begin/><thicku.begin/><dashu.begin/><dotu.begin/><dotdashu.begin/><dotdotdashu.begin/><waveu.begin/></begin>
-<end><waveu.end/><dotdotdashu.end/><dotdashu.end/><dotu.end/><dashu.end/><thicku.end/><hiddenu.end/><dottedu.end/><doubleu.end/><wordu.end/><singleu.end/><sub.end/><super.end/><dstrike.end/><imprint.end/><emboss.end/><lowercase.end/><shadow.end/><RMark.end/><vanish.end/><caps.end/><smallcaps.end/><outline.end/><RMarkDel.end/><strike.end/><italic.end/><bold.end/><fontstr.end/><animation.end/><DispFldRMark.end/><PropRMark.end/></end>
-</character>
-
-<!-- Netscape does handle this correctly yet, here is how each different side of the border should work.
-border-top: thin <bordertopstyle/> <bordertopcolor/>;
-border-left: thin <borderleftstyle/> <borderleftcolor/>;
-border-right: thin <borderrightstyle/> <borderrightcolor/>;
-border-bottom: thin <borderbottomstyle/> <borderbottomcolor/>
--->
-
-
-<pmargin>
-<begin>margin: <mmParaBefore/> <mmParaRight/> <mmParaAfter/> <mmParaLeft/>;</begin>
-</pmargin>
-
-<pborder>
-<begin>
-border: thin <borderleftstyle/> <borderleftcolor/>;
-<!--
-border-top: thin <bordertopstyle/> <bordertopcolor/>;
-border-left: thin <borderleftstyle/> <borderleftcolor/>;
-border-right: thin <borderrightstyle/> <borderrightcolor/>;
-border-bottom: thin <borderbottomstyle/> <borderbottomcolor/>
--->
-</begin>
-</pborder>
-
-<text>
-<begin>&lt;p&gt;&lt;div name=&quot;<stylename/>&quot; align=&quot;<just/>&quot; style=&quot;<paramargin/> <paraborder/> padding: <mmPadTop/> <mmPadRight/> <mmPadBottom/> <mmPadLeft/>; &quot;&gt;
-
-&lt;p style=&quot;text-indent: <mmParaLeft1/>; text-align: <just/>; line-height: <mmLineHeight/>; color: <parafgcolor/>; background-color: <parabgcolor/>; &quot;&gt;</begin>
-
-<end>&lt;/p&gt;&lt;/div&gt;</end>
-</text>
-
-<picture>
-<begin>
-&lt;img <htmlAlignGuess/> width=&quot;<pixPicWidth/>&quot; height=&quot;<pixPicHeight/>&quot; alt=&quot;0x01 graphic&quot; src=&quot;placeholder.png&quot;&gt;<htmlNextLineGuess/>
-</begin>
-</picture>
-
-</style>
-
-<!--we need to be override the character properties-->
-<!--
-<style name="Normal">
-<character>
-<begin><PropRMark.begin/><DispFldRMark.begin/><animation.begin/><fontstr.begin/><bold.begin/><italic.begin/><strike.begin/><RMarkDel.begin/><outline.begin/><smallcaps.begin/><caps.begin/><vanish.begin/><RMark.begin/><shadow.begin/><lowercase.begin/><emboss.begin/><imprint.begin/><dstrike.begin/><super.begin/><sub.begin/><singleu.begin/><wordu.begin/><doubleu.begin/><dottedu.begin/><hiddenu.begin/><thicku.begin/><dashu.begin/><dotu.begin/><dotdashu.begin/><dotdotdashu.begin/><waveu.begin/></begin>
-<end><waveu.end/><dotdotdashu.end/><dotdashu.end/><dotu.end/><dashu.end/><thicku.end/><hiddenu.end/><dottedu.end/><doubleu.end/><wordu.end/><singleu.end/><sub.end/><super.end/><dstrike.end/><imprint.end/><emboss.end/><lowercase.end/><shadow.end/><RMark.end/><vanish.end/><caps.end/><smallcaps.end/><outline.end/><RMarkDel.end/><strike.end/><italic.end/><bold.end/><fontstr.end/><animation.end/><DispFldRMark.end/><PropRMark.end/></end>
-</character>
-
-<text>
-<begin>&lt;div name=&quot;<stylename/>&quot; align=&quot;<just/>&quot;&gt;&lt;p&gt;</begin>
-<end>&lt;/p&gt;&lt;/div&gt;</end>
-</text>
-
-</style>
-
-<style name="Heading 1">
-
-<character>
-<begin></begin>
-<end></end>
-</character>
-
-<text>
-<begin>&lt;div name=&quot;<stylename/>&quot; align=&quot;<just/>&quot;&gt;&lt;H1&gt;</begin>
-<end>&lt;/H1&gt;&lt;/div&gt;</end>
-</text>
-
-
-
-</style>
--->
-
-</main>
diff --git a/data/sisu/v3dv/conf/convert/wvSiSU.xml b/data/sisu/v3dv/conf/convert/wvSiSU.xml
deleted file mode 100644
index 271b00ff..00000000
--- a/data/sisu/v3dv/conf/convert/wvSiSU.xml
+++ /dev/null
@@ -1,360 +0,0 @@
-<main>
-<charentity>
-<begin>HTML</begin>
-</charentity>
-<!-- wvWare -x wvSiSU.xml [inputfile.doc] [outputfile.html] -->
-
-<document>
-<begin>
-</begin>
-<end>
-</end>
-</document>
-
-<section>
-<begin>
-</begin>
-<end>
-</end>
-</section>
-
-<justification>
-<left>left</left>
-<right>right</right>
-<center>center</center>
-<block>left</block>
-<asian>&lt;!--Could Someone who sees this tag tell me what was is this type of justification, asian languages only i thing--&gt;</asian>
-</justification>
-
-<numbering>
-<Arabic>type=&quot;1&quot;</Arabic>
-<UpperRoman>type=&quot;I&quot;</UpperRoman>
-<LowerRoman>type=&quot;i&quot;</LowerRoman>
-<UpperCaseN>type=&quot;A&quot;</UpperCaseN>
-<LowerCaseN>type=&quot;a&quot;</LowerCaseN>
-</numbering>
-
-<border>
-<noned>none</noned>
-<singled>solid</singled>
-<thickd>solid</thickd>
-<doubled>double</doubled>
-<number4d>double</number4d>
-<hairlined>solid</hairlined>
-<dotd>dotted</dotd>
-<dashlargegapd>dashed</dashlargegapd>
-<dotdashd>dotted</dotdashd>
-<dotdotdashd>dotted</dotdotdashd>
-<tripled>double</tripled>
-<thin-thicksmallgapd>dashed</thin-thicksmallgapd>
-<thick-thinsmallgapd>dashed</thick-thinsmallgapd>
-<thin-thick-thinsmallgapd>dashed</thin-thick-thinsmallgapd>
-<thin-thickmediumgapd>dashed</thin-thickmediumgapd>
-<thick-thinmediumgapd>dashed</thick-thinmediumgapd>
-<thin-thick-thinmediumgapd>dashed</thin-thick-thinmediumgapd>
-<thin-thicklargegapd>dashed</thin-thicklargegapd>
-<thick-thinlargegapd>dashed</thick-thinlargegapd>
-<thin-thick-thinlargegapd>dashed</thin-thick-thinlargegapd>
-<waved>solid</waved>
-<doublewaved>double</doublewaved>
-<dashsmallgapd>sashed</dashsmallgapd>
-<dashdotstrokedd>dashed</dashdotstrokedd>
-<emboss3Dd>ridge</emboss3Dd>
-<engrave3Dd>groove</engrave3Dd>
-<defaultd>ridge</defaultd>
-</border>
-
-<!-- <begin>&lt;ol <nfc/> start=&quot;<start/>&quot;&gt; -->
-<olist>
-<begin>
-</begin>
-<end></end>
-</olist>
-
-<ulist>
-<begin>
-</begin>
-<end></end>
-</ulist>
-
-<!-- <begin>&lt;li&gt;</begin> -->
-<entry>
-<begin></begin>
-<end></end>
-</entry>
-
-
-<!--
-this tableoverride option can be used to turn off handling of
-these tags in tables, which I find is necessary for at least netscape
--->
-<tableoverrides>
-<ParaBefore>0</ParaBefore>
-<ParaRight>0</ParaRight>
-<ParaAfter>0</ParaAfter>
-<ParaLeft>0</ParaLeft>
-<ParaLeft1>0</ParaLeft1>
-<VertMergedCells>0</VertMergedCells>
-</tableoverrides>
-
-<table>
-<begin></begin>
-<end></end>
-</table>
-
-<row>
-<begin>&lt;tr&gt;</begin>
-<end>&lt;/tr&gt;</end>
-</row>
-
-<cell>
-<begin></begin>
-<end></end>
-</cell>
-
-<!-- EDITING OUT DID MUCH OF TRICK -->
-<paragraph>
-<begin>
-</begin>
-<end>
-</end>
-</paragraph>
-
-<!-- these are all the character properties that can show up in word -->
-<bold><begin>&lt;b&gt;</begin><end>&lt;/b&gt;</end></bold>
-<italic><begin>&lt;i&gt;</begin><end>&lt;/i&gt;</end></italic>
-
-<!--
-text that has been deleted and will be displayed with strikethrough when
-revision marked text is to be displayed
-
-use either this line...
--->
-<RMarkDel><begin>&lt;s&gt;</begin><end>&lt;/s&gt;&lt;a href=&quot;#author<ibstRMarkDel/>&quot;&gt;[Author ID<ibstRMarkDel/>: at <dttmRMarkDel/> ]&lt;/a&gt;</end></RMarkDel>
-
-<!--
-or uncomment below to make deleted text dissappear (well, become commented out)
--->
-<!--
-<RMarkDel><begin>&lt;!-&#45;</begin><end>-&#45;&gt;</end></RMarkDel>
--->
-
-<!-- Overwriting char props. like CaPs->CAPS SmallCaps->smallcaps -->
-<outline><begin></begin><end></end></outline>
-<smallcaps><begin></begin><end></end></smallcaps>
-<caps><begin></begin><end></end></caps>
-<vanish><begin></begin><end></end></vanish>
-
-<!--If you uncomment this then the annotation text links will become commented out by html tags-->
-<!--
-<vanish><begin>&lt;!-&#45;</begin><end>-&#45;&gt;</end></vanish>
--->
-
-<!--
-text that has been newly typed since the last time revision marks have been accepted
-and will be displayed with underline when revision marked text is to be displayed
-
-use either this line...
--->
-<RMark><begin></begin><end></end></RMark>
-
-<!--
-or uncomment below to make the underline dissappear
--->
-<!--
-<RMark><begin></begin><end></end></RMark>
--->
-
-
-<strike><begin>&lt;s&gt;</begin><end>&lt;/s&gt;</end></strike>
-<shadow><begin></begin><end></end></shadow>
-<lowercase><begin></begin><end></end></lowercase>
-<emboss><begin></begin><end></end></emboss>
-<imprint><begin></begin><end></end></imprint>
-<!--double strike-->
-<dstrike><begin>&lt;s&gt;</begin><end>&lt;/s&gt;</end></dstrike>
-
-<!--
-ftc's
-&
-hps
-
-keep them for font face and do that later.
--->
-
-<super><begin>&lt;sup&gt;</begin><end>&lt;/sup&gt;</end></super>
-<sub><begin>&lt;sub&gt;</begin><end>&lt;/sub&gt;</end></sub>
-
-<singleu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></singleu>
-<wordu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></wordu>
-<doubleu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></doubleu>
-<dottedu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dottedu>
-<hiddenu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></hiddenu>
-<thicku><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></thicku>
-<dashu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dashu>
-<dotu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dotu>
-<dotdashu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dotdashu>
-<dotdotdashu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></dotdotdashu>
-<waveu><begin>&lt;u&gt;</begin><end>&lt;/u&gt;</end></waveu>
-
-<!--
-text whose properties have been changed since the last time revision marks have been accepted
-and will be displayed with a note showing the change points.
-
-use either this line (which admit it a bit scary looking, but harmless)...
--->
-<PropRMark><begin></begin><end></end></PropRMark>
-
-<!--
-or uncomment below to make the notes dissappear
--->
-<!--
-<PropRMark><begin></begin><end></end></PropRMark>
--->
-
-<!--
-<color>
--->
-<Black><begin>Black</begin><end></end></Black>
-<Blue><begin>Blue</begin><end></end></Blue>
-<Cyan><begin>Cyan</begin><end></end></Cyan>
-<Green><begin>Green</begin><end></end></Green>
-<Magenta><begin>Magenta</begin><end></end></Magenta>
-<Red><begin>Red</begin><end></end></Red>
-<Yellow><begin>Yellow</begin><end></end></Yellow>
-<White><begin>White</begin><end></end></White>
-<DkBlue><begin>DarkBlue</begin><end></end></DkBlue>
-<DkCyan><begin>DarkCyan</begin><end></end></DkCyan>
-<DkGreen><begin>DarkGreen</begin><end></end></DkGreen>
-<DkMagenta><begin>DarkMagenta</begin><end></end></DkMagenta>
-<DkRed><begin>DarkRed</begin><end></end></DkRed>
-<DkYellow><begin>#8b8b00</begin><end></end></DkYellow>
-<DkGray><begin>DarkGray</begin><end></end></DkGray>
-<LtGray><begin>LightGrey</begin><end></end></LtGray>
-<!--
-</color>
--->
-
-<!--
-<animation>
--->
-<LasVegas><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></LasVegas>
-<BackgroundBlink><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></BackgroundBlink>
-<SparkleText><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></SparkleText>
-<MarchingAnts><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></MarchingAnts>
-<MarchingRedAnts><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></MarchingRedAnts>
-<Shimmer><begin>&lt;blink&gt;</begin><end>&lt;/blink&gt;</end></Shimmer>
-<!--
-</animation>
--->
-
-<!--
-I dont understand what this one is, and ive never come across it
-
-use this sample line (which admit it a bit scary looking, but harmless)...
--->
-<DispFldRMark><begin></begin><end></end></DispFldRMark>
-
-<!--
-or uncomment below to ignore it, the previous might even crash wv ?
--->
-<!--
-<DispFldRMark><begin></begin><end></end></DispFldRMark>
--->
-
-<animation>
-<begin></begin>
-<end></end>
-</animation>
-
-<fontstr>
-<begin></begin>
-<end></end>
-</fontstr>
-
-<comment>
-<begin>
-</begin>
-<end>
-</end>
-</comment>
-
-<style name="Normal">
-<character>
-<begin><bold.begin/><italic.begin/><strike.begin/><RMarkDel.begin/><outline.begin/><smallcaps.begin/><caps.begin/><vanish.begin/><RMark.begin/><shadow.begin/><lowercase.begin/><emboss.begin/><imprint.begin/><dstrike.begin/><super.begin/><sub.begin/><singleu.begin/><wordu.begin/><doubleu.begin/><dottedu.begin/><hiddenu.begin/><thicku.begin/><dashu.begin/><dotu.begin/><dotdashu.begin/><dotdotdashu.begin/><waveu.begin/></begin>
-<end><waveu.end/><dotdotdashu.end/><dotdashu.end/><dotu.end/><dashu.end/><thicku.end/><hiddenu.end/><dottedu.end/><doubleu.end/><wordu.end/><singleu.end/><sub.end/><super.end/><dstrike.end/><imprint.end/><emboss.end/><lowercase.end/><shadow.end/><RMark.end/><vanish.end/><caps.end/><smallcaps.end/><outline.end/><RMarkDel.end/><strike.end/><italic.end/><bold.end/></end>
-</character>
-
-<!-- KEEP
-<style name="Normal">
-<character>
-<begin><PropRMark.begin/><DispFldRMark.begin/><animation.begin/><fontstr.begin/><bold.begin/><italic.begin/><strike.begin/><RMarkDel.begin/><outline.begin/><smallcaps.begin/><caps.begin/><vanish.begin/><RMark.begin/><shadow.begin/><lowercase.begin/><emboss.begin/><imprint.begin/><dstrike.begin/><super.begin/><sub.begin/><singleu.begin/><wordu.begin/><doubleu.begin/><dottedu.begin/><hiddenu.begin/><thicku.begin/><dashu.begin/><dotu.begin/><dotdashu.begin/><dotdotdashu.begin/><waveu.begin/></begin>
-<end><waveu.end/><dotdotdashu.end/><dotdashu.end/><dotu.end/><dashu.end/><thicku.end/><hiddenu.end/><dottedu.end/><doubleu.end/><wordu.end/><singleu.end/><sub.end/><super.end/><dstrike.end/><imprint.end/><emboss.end/><lowercase.end/><shadow.end/><RMark.end/><vanish.end/><caps.end/><smallcaps.end/><outline.end/><RMarkDel.end/><strike.end/><italic.end/><bold.end/><fontstr.end/><animation.end/><DispFldRMark.end/><PropRMark.end/></end>
-</character>
--->
-
-<!-- Netscape does handle this correctly yet, here is how each different side of the border should work.
-border-top: thin <bordertopstyle/> <bordertopcolor/>;
-border-left: thin <borderleftstyle/> <borderleftcolor/>;
-border-right: thin <borderrightstyle/> <borderrightcolor/>;
-border-bottom: thin <borderbottomstyle/> <borderbottomcolor/>
--->
-
-
-<pmargin>
-<begin></begin>
-</pmargin>
-
-<pborder>
-<begin>
-</begin>
-</pborder>
-
-<text>
-<begin>
-
-<mmParaLeft1/></begin>
-
-<end></end>
-</text>
-
-<picture>
-<begin>
-</begin>
-</picture>
-
-</style>
-
-<!--we need to be override the character properties-->
-<!--
-<style name="Normal">
-<character>
-<begin><PropRMark.begin/><DispFldRMark.begin/><animation.begin/><fontstr.begin/><bold.begin/><italic.begin/><strike.begin/><RMarkDel.begin/><outline.begin/><smallcaps.begin/><caps.begin/><vanish.begin/><RMark.begin/><shadow.begin/><lowercase.begin/><emboss.begin/><imprint.begin/><dstrike.begin/><super.begin/><sub.begin/><singleu.begin/><wordu.begin/><doubleu.begin/><dottedu.begin/><hiddenu.begin/><thicku.begin/><dashu.begin/><dotu.begin/><dotdashu.begin/><dotdotdashu.begin/><waveu.begin/></begin>
-<end><waveu.end/><dotdotdashu.end/><dotdashu.end/><dotu.end/><dashu.end/><thicku.end/><hiddenu.end/><dottedu.end/><doubleu.end/><wordu.end/><singleu.end/><sub.end/><super.end/><dstrike.end/><imprint.end/><emboss.end/><lowercase.end/><shadow.end/><RMark.end/><vanish.end/><caps.end/><smallcaps.end/><outline.end/><RMarkDel.end/><strike.end/><italic.end/><bold.end/><fontstr.end/><animation.end/><DispFldRMark.end/><PropRMark.end/></end>
-</character>
-
-<text>
-<begin>&lt;div name=&quot;<stylename/>&quot; align=&quot;<just/>&quot;&gt;&lt;p&gt;</begin>
-<end>&lt;/p&gt;&lt;/div&gt;</end>
-</text>
-
-</style>
-
-<style name="Heading 1">
-
-<character>
-<begin></begin>
-<end></end>
-</character>
-
-<text>
-<begin>&lt;div name=&quot;<stylename/>&quot; align=&quot;<just/>&quot;&gt;&lt;H1&gt;</begin>
-<end>&lt;/H1&gt;&lt;/div&gt;</end>
-</text>
-
-
-
-</style>
--->
-
-</main>
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/README b/data/sisu/v3dv/conf/editor-syntax-etc/README
deleted file mode 100644
index c03f3569..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/README
+++ /dev/null
@@ -1,90 +0,0 @@
-This directory
- ./data/sisu/conf/editor-syntax-etc/
- /usr/share/sisu/conf/editor-syntax-etc/
-contains rudimentary sisu syntax highlighting files for:
-
-* (g)vim <http://www.vim.org>
- * package: sisu-vim
- * status: largely done
- there is a vim syntax highlighting and folds component
-
-* gedit <http://www.gnome.org/projects/gedit>
-* gobby <http://gobby.0x539.de/>
- file: sisu.lang
- place in:
- /usr/share/gtksourceview-1.0/language-specs
- or
- ~/.gnome2/gtksourceview-1.0/language-specs
- * status: very basic syntax highlighting
- * comments: this editor features display line wrap and is used by Goby!
-
-* nano <http://www.nano-editor.org>
- file: nanorc
- save as:
- ~/.nanorc
- includes:
- * status: basic syntax highlighting
- * comments: assumes dark background
- no display line-wrap
- does line breaks
-
-* diakonos (an editor written in ruby) <http://purepistos.net/diakonos>
- file: diakonos.conf
- save as:
- ~/.diakonos/diakonos.conf
- includes:
- * status: basic syntax highlighting
- * comments: assumes dark background
- no display line-wrap
-
-* kate & kwrite http://kate.kde.org
- file: sisu.xml
- place in:
- /usr/share/apps/katepart/syntax
- or
- ~/.kde/share/apps/katepart/syntax
- [settings::configure kate::{highlighting,filetypes}]
- [tools::highlighting::{markup,scripts}::SiSU]
-
-* nedit <http://www.nedit.org>
- file: sisu_nedit.pats
- nedit -import sisu_nedit.pats
- * status: a very clumsy first attempt
- [not really done]
- * comments: this editor features display line wrap
-
-* emacs <http://www.gnu.org/software/emacs/emacs.html>
- files: sisu-mode.el
- to file ~/.emacs add the following 2 lines:
- (add-to-list 'load-path "/usr/share/sisu-examples/config/syntax_hi")
- (require 'sisu-mode.el)
- [not done / not yet included]
-
-* vim & gvim <http://www.vim.org>
- files: sisu-vim <http://www.jus.uio.no/sisu/SiSU/download>
- package is the most comprehensive sisu syntax highlighting and editor
- environment provided to date (is for vim/ gvim, and is separate from the
- contents of this directory)
- on debian:
- aptitude install sisu-vim
- * status: this includes:
- syntax highlighting
- vim folds
- some error checking
- * comments: this editor features display line wrap
-
-NOTE:
-
-[SiSU parses files with long lines or line breaks,
-but, display linewrap (without line-breaks) is a
-convenient editor feature to have for sisu markup]
-
-kde-config --prefix
-KDEDIR/share/apps/katepart/syntax/
-KDEHOME/share/apps/katepart/syntax
-[In the configure dialog in kate, go to the "Editor->highlighting" page and
->select a highlight to change the mimetype/pattern associations for it.]
-/etc/mime.types
-/usr/share/mime/text
-#
-# * aeditor (an editor written in ruby)
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/diakonos/diakonos.conf b/data/sisu/v3dv/conf/editor-syntax-etc/diakonos/diakonos.conf
deleted file mode 100644
index a3c3afe4..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/diakonos/diakonos.conf
+++ /dev/null
@@ -1,1159 +0,0 @@
-logfile ~/.diakonos/diakonos.log
-
-# When the cursor is view.margin.y lines or less from the top or
-# bottom line, repeatedly scroll the screen view.jump.y lines until
-# the cursor is more than view.margin.y lines from the top and
-# bottom line.
-# Similarly for view.margin.x and view.jump.x, with respect to the
-# left-most and right-most screen columns.
-view.margin.x 10
-view.margin.y 5
-view.jump.x 10
-view.jump.y 5
-view.scroll_amount 1
-view.lookback 200
-view.nonfilelines.visible false
-view.nonfilelines.character ~
-view.wrap.visual true
-
-# bol_behaviour: This specifies where the cursor should go when the
-# beginning-of-line key (the default is the Home key) is pressed.
-# zero: Always move to the left-most column of the line
-# first-char: Always move to the left-most non-whitespace character
-# alternating-zero: As with 'zero', unless the cursor is
-# already there, in which case, as with 'first-char'.
-# alternating-first-char: As with 'first-char', unless the cursor is
-# already there, in which case, as with 'zero'.
-# bol_behavior is a synonym for bol_behaviour.
-bol_behaviour alternating-first-char
-
-# eol_behaviour: This specifies where the cursor should go when the
-# end-of-line key (the default is the End key) is pressed.
-# end: Always move to the right-most column of the line
-# last-char: Always move to the right-most non-whitespace character
-# alternating-end: As with 'end', unless the cursor is
-# already there, in which case, as with 'last-char'.
-# alternating-last-char: As with 'last-char', unless the cursor is
-# already there, in which case, as with 'end'.
-# eol_behavior is a synonym for eol_behaviour.
-eol_behaviour alternating-end
-
-# Ensures saved files end with a newline character by adding it if necessary.
-eof_newline false
-
-delete_newline_on_delete_to_eol false
-
-# Specifies whether the cursor should be at the end (false) of found text, or the
-# beginning (true).
-found_cursor_start false
-
-max_clips 30
-
-# The maximum number of undo lines held in memory per file
-# Smaller files will be able to have more undo levels.
-max_undo_lines 16384
-
-convert_tabs false
-
-diff_command diff -U 5
-
-# Whether or not to use /usr/bin/file to determine whether files are readable
-# before opening them.
-use_magic_file false
-
-# ---------------------------------------------------------------------
-# Status Line
-
-# Use "% syntax" as placeholders
-# e.g. %d for decimal integers, %s for strings
-status.left -- %s %s%s%s -- (%s) --%s
-status.right - Buf %d of %d --- L%3d/%3d C%2d --
-# The string to use to fill in the space between the left and right sides
-# of the status line.
-status.filler -
-status.modified_str (modified)
-status.selecting_str (selecting)
-status.unnamed_str (unnamed file)
-status.read_only_str (read-only)
-# status.vars: any subset of:
-# line row num_lines col filename modified type buffer_number num_buffers selecting read_only
-status.vars filename modified read_only selecting type @git_branch buffer_number num_buffers row num_lines col
-status.format inverse
-
-# ---------------------------------------------------------------------
-# Context Line
-
-# The context line shows the wrapping context of the cursor, with respect to
-# indentation. This shows the current code block(s) that the cursor is in.
-
-context.visible false
-context.combined false
-context.max_levels 4
-context.format inverse
-context.separator |
-context.separator.format red inverse
-#context.max_segment_width 10
-
-# ---------------------------------------------------------------------
-# Interaction Line
-
-# Duration of "alert" blink (in seconds) when user has made an invalid choice
-interaction.blink_duration 0.05
-interaction.blink_string ***********************************************************
-# Time to wait (in seconds) before accepting user keystrokes when prompting for
-# a choice which has no default
-interaction.choice_delay 3
-
-# ---------------------------------------------------------------------
-# Key Configuration
-# key <keystroke> [<keystroke>...];<function> [<arg>[,<arg>...]]
-# If no function is specified, it unmaps any previous mapping.
-# i.e. key <keystroke> [<keystroke>...];
-# <keystroke> can be "keycode##" to specify specific keycodes.
-# e.g. key keycode8;delete
-# Note the lack of space after the word keycode.
-
-# To obtain the string to use for any keychain, use the printKeychain command
-# (default alt+k).
-
-# The shell, execute and pasteShellResult commands can take variables:
-
-# $f current buffer's filepath
-# $F all current buffer filepaths, space-separated
-# $i get a string from user input
-# $c temp file containing current clipboard text
-# $k temp file containing current klipper (KDE clipboard) text
-# $s temp file containing currently selected text
-
-key left;cursorLeft
-key esc [ D;cursorLeft
-key right;cursorRight
-key esc [ C;cursorRight
-key up;cursorUp
-key esc [ A;cursorUp
-key down;cursorDown
-key esc [ B;cursorDown
-key home;cursorBOL
-key esc O H;cursorBOL
-key esc [ H;cursorBOL
-key esc [ 1 ~ cursorBOL
-key esc [ 7 ~ cursorBOL
-key end;cursorEOL
-key esc O F;cursorEOL
-key esc [ F;cursorEOL
-key esc [ 4 ~;cursorEOL
-key esc [ 8 ~;cursorEOL
-key pageup;pageUp
-key pagedown;pageDown
-#key ctrl+a;cursorBOL
-key ctrl+e;cursorEOL
-key alt+<;cursorBOF
-key esc [ 1 ; 5 H cursorBOF
-key alt+>;cursorEOF
-key esc [ 1 ; 5 F cursorEOF
-key alt+,;cursorTOV
-key alt+.;cursorBOV
-key ctrl+j;cursorReturn
-key ctrl+l;cursorReturn "forward"
-key alt+n;scrollDown
-key alt+p;scrollUp
-key esc up;scrollUp
-key esc [ 1 ; 3 A scrollUp
-key esc [ 1 ; 5 A scrollUp
-key keycode520 scrollUp
-key keycode521 scrollUp
-key esc down;scrollDown
-key esc [ 1 ; 3 B scrollDown
-key esc [ 1 ; 5 B scrollDown
-key keycode513 scrollDown
-key keycode514 scrollDown
-key esc right;seek /(?:^|\W)(\w)|\w(\W|$)/
-key esc [ 1 ; 3 C seek /\w(\W|$)|(?:^|\W)(\w)/
-key esc [ 1 ; 5 C seek /\w(\W|$)|(?:^|\W)(\w)/
-key keycode517 seek /\w(\W|$)|(?:^|\W)(\w)/
-key keycode518 seek /\w(\W|$)|(?:^|\W)(\w)/
-key esc left;seek /\w(\W|$)|(?:^|\W)(\w)/, "up"
-key esc [ 1 ; 3 D seek /\w(\W|$)|(?:^|\W)(\w)/, "up"
-key esc [ 1 ; 5 D seek /\w(\W|$)|(?:^|\W)(\w)/, "up"
-key keycode515 seek /\w(\W|$)|(?:^|\W)(\w)/, "up"
-key keycode516 seek /\w(\W|$)|(?:^|\W)(\w)/, "up"
-
-key ctrl+g;goToLineAsk
-key alt+b alt+b;toggleBookmark
-key alt+b alt+n;goToNextBookmark
-key alt+b alt+p;goToPreviousBookmark
-key alt+b alt+a;addNamedBookmark
-key alt+b alt+r;removeNamedBookmark
-key alt+b alt+g;goToNamedBookmark
-key alt+b alt+!;addNamedBookmark 1
-key alt+b alt+@;addNamedBookmark 2
-key alt+b alt+#;addNamedBookmark 3
-key alt+b alt+$;addNamedBookmark 4
-key alt+b alt+%;addNamedBookmark 5
-key alt+b alt+1;goToNamedBookmark 1
-key alt+b alt+2;goToNamedBookmark 2
-key alt+b alt+3;goToNamedBookmark 3
-key alt+b alt+4;goToNamedBookmark 4
-key alt+b alt+5;goToNamedBookmark 5
-key alt+t;goToTag
-key alt+);goToTagUnderCursor
-key alt+(;popTag
-
-key backspace;backspace
-key ctrl+h;backspace
-key del;delete
-#key ctrl+k;deleteLine
-key ctrl+k;deleteAndStoreLine
-key ctrl+alt+k;deleteToEOL
-key esc del;collapseWhitespace
-key esc [ 3 ; 3 ~ collapseWhitespace
-key alt+w wrap_paragraph
-key alt+a columnize
-key enter;carriageReturn
-key tab;parsedIndent
-#key tab;indent
-#key ctrl+alt+l;unindent
-key alt+i;indent
-key esc i;indent
-key esc I;unindent
-key esc [ Z unindent
-key keycode353 unindent
-#key tab;insertSpaces 4
-#key tab;insertTab
-key ctrl+t;insertTab
-key alt+j joinLines
-
-key f1 help
-key esc O P help
-key esc [ 1 1 ~ help
-key esc [ [ A help
-key f11;loadConfiguration
-key esc [ 2 3 ~;loadConfiguration
-key f12;openFile "~/.diakonos/diakonos.conf"
-key esc [ 2 4 ~;openFile "~/.diakonos/diakonos.conf"
-
-key ctrl+alt+r;redraw
-key esc C;toggleSessionSetting 'context.visible', DO_REDRAW
-key ctrl+alt+d;toggleSessionSetting 'display'
-key esc W;toggleSessionSetting 'view.wrap.visual', DO_REDRAW
-
-key ctrl+n;newFile
-key ctrl+o;openFileAsk
-key ctrl+s;saveFile
-key alt+s;saveFileAs
-key ctrl+w;closeFile
-key ctrl+alt+o;revert
-key alt+!;setReadOnly
-key ctrl+q;quit
-key esc T;setBufferType
-
-key alt+1;switchToBufferNumber 1
-key alt+2;switchToBufferNumber 2
-key alt+3;switchToBufferNumber 3
-key alt+4;switchToBufferNumber 4
-key alt+5;switchToBufferNumber 5
-key alt+6;switchToBufferNumber 6
-key alt+7;switchToBufferNumber 7
-key alt+8;switchToBufferNumber 8
-key alt+9;switchToBufferNumber 9
-key alt+0;switchToBufferNumber 10
-key alt+-;switchToPreviousBuffer
-key alt+=;switchToNextBuffer
-key ctrl+alt+b list_buffers
-
-key ctrl+space;anchorSelection
-#key ctrl+space;toggleSelection
-key ctrl+c;copySelection
-key ctrl+x;cutSelection
-key alt+u;removeSelection
-key ctrl+a select_all
-
-# If you are using KDE, you can uncomment these lines to synchronize
-# the Diakonos clipboard with the KDE clipboard
-#key ctrl+c copy_selection_to_klipper
-#key ctrl+x cut_selection_to_klipper
-#key ctrl+v paste_from_klipper
-#key ctrl+k delete_and_store_line_to_klipper
-#key ctrl+alt+k delete_to_eol_to_klipper
-
-key ctrl+b select_block
-# Select file diff in a patch
-key ctrl+alt+d f select_block /^Index: /, /^(Index: |$)/, false
-# Select a diff hunk in a patch
-key ctrl+alt+d h select_block /^@@ /, /^(@@ |$)/, false
-key esc # comment_out
-key esc @ uncomment
-
-key ctrl+alt+v;showClips
-key ctrl+v;paste
-key ctrl+y;unundo
-key ctrl+z;undo
-#key ctrl+z;suspend
-key suspend;undo
-#key suspend;suspend
-
-key ctrl+f;find
-#key ctrl+f;find "down", CASE_SENSITIVE
-key alt+f;find "down", CASE_SENSITIVE
-#key alt+f;findExact
-key ctrl+alt+f;find "up"
-#key ctrl+alt+f;find "up", CASE_SENSITIVE
-key f3;findAgain "down"
-key esc [ [ C findAgain "down"
-key esc O R;findAgain "down"
-key esc [ 1 3 ~;findAgain "down"
-key f15;findAgain "up"
-key esc [ 2 8 ~ findAgain "up"
-key esc O 2 R;findAgain "up"
-key ctrl+r searchAndReplace
-key alt+r searchAndReplace CASE_SENSITIVE
-key ctrl+alt+u;clearMatches
-key alt+c;close_code
-
-key f2 shell
-key esc O Q shell
-key esc [ 1 2 ~ shell
-key esc [ [ B shell
-key f8;execute
-key esc F;execute "glark '$i' $F | less"
-key esc d shell "diff -U 5 -w -b $c $s", "clipboard.diff"
-#key esc F;shell "grep -n '$i' $F"
-#key esc F;execute "grep -n '$i' $F | less"
-#key esc l execute "aspell check $f"
-key f14 evaluate
-key esc O 2 Q evaluate
-key esc [ 2 6 ~ evaluate
-key ctrl+alt+c shell "ruby -c $f"
-
-# To use the following:
-# 1) Copy to the clipboard some Ruby code which operates on stdin text and outputs to stdout.
-# 2) Select (highlight) some text to operate on.
-# 3) Activate this pasteShellResult command.
-# 4) The selected text should now be replaced with the script's results.
-key ctrl+alt+p;pasteShellResult "cat $s | ruby $c"
-#key ctrl+alt+p;pasteShellResult "cat $s | perl $c"
-#key ctrl+alt+p;pasteShellResult "cat $s | python $c"
-#key ctrl+alt+p;pasteShellResult "cat $s | sed -f $c"
-#key ctrl+alt+p;pasteShellResult "cat $s | awk -f $c"
-
-key alt+k printKeychain
-key esc K print_mapped_function
-key alt+m;toggleMacroRecording
-key f4 playMacro
-key esc O S playMacro
-key esc [ 1 4 ~ playMacro
-key esc [ [ D playMacro
-key f5 loadScript
-key esc [ 1 5 ~ loadScript
-key esc [ [ E loadScript
-key f6;repeatLast
-key esc [ 1 7 ~;repeatLast
-key f7;operateOnEachLine
-key f19;operateOnString
-key esc [ 1 8 ; 2 ~ operateOnString
-key esc f7 operateOnLines
-key esc [ 1 8 ; 3 ~ operateOnLines
-key keycode319 operateOnLines
-
-# Emacs-like keychains
-
-#key ctrl+s;find
-#key ctrl+x ctrl+c;quit
-#key ctrl+x ctrl+f;openFileAsk
-#key ctrl+x ctrl+s;saveFile
-
-# ---------------------------------------------------------------------
-# Colour Definitions
-#
-# colour <integer greater than 7> <foreground colour> <background colour>
-#
-# For a list of colour names, see the list of format codes in the
-# Language Definitions section, below.
-#
-# With this colour command you can set a different background colour than the
-# terminal default.
-#
-# color is a synonym for colour.
-colour 8 white blue
-colour 9 white red
-colour 10 white magenta
-colour 11 yellow blue
-colour 12 white green
-colour 13 white brown
-colour 14 black cyan
-colour 15 yellow red
-
-# ---------------------------------------------------------------------
-# Language Definitions
-# For syntax highlighting and indentation.
-
-# lang.<language>.tokens.<any name>[.case_insensitive] <regexp with one pair of parentheses identifying the token>
-# lang.<language>.tokens.<any name>.format <format codes>
-# <format codes> can be any subset of:
-# normal black red green brown blue magenta cyan white standout underline inverse blink dim bold
-# The numbers of colour pairs (as defined by the configuration command "colour")
-# can also be used as format codes.
-#
-# indent.roundup: If a line's indentation is not evenly divisible by the
-# indent.size, and indent.roundup is true, then the non-integer indentation
-# level will be rounded up. If indent.roundup is false, then it will be
-# rounded down.
-# e.g. given an indent.size of 4, and a line with 6 spaces, indent.roundup
-# true will make Diakonos consider the line indented 2 levels. With
-# indent.roundup false, it will be considered indented 1 level.
-#
-# The filemask can also be used to specify specific filenames which
-# don't conform to the standard extensions for a language.
-
-# Text (default)
-
-lang.text.format.default white
-lang.text.format.selection inverse
-lang.text.format.found yellow inverse
-lang.text.indent.size 2
-lang.text.indent.auto true
-lang.text.indent.roundup false
-#lang.text.indent.using_tabs true
-lang.text.tabsize 8
-lang.text.wrap_margin 80
-
-# Diakonos help files
-
-lang.dhf.filemask \.dhf
-lang.dhf.format.default white
-lang.dhf.format.selection inverse
-lang.dhf.format.found yellow inverse
-lang.dhf.tokens.tags (^Tags: .+)
-lang.dhf.tokens.tags.format blue
-lang.dhf.tokens.title (^# .*)
-lang.dhf.tokens.title.format 8 bold
-lang.dhf.tokens.subtitle (^## .*)
-lang.dhf.tokens.subtitle.format cyan bold
-lang.dhf.tokens.subsubtitle (^### .*)
-lang.dhf.tokens.subsubtitle.format cyan
-lang.dhf.tokens.keys <(.+?)>
-lang.dhf.tokens.keys.format white bold
-lang.dhf.indent.size 2
-lang.dhf.indent.auto true
-lang.dhf.indent.roundup true
-lang.dhf.wrap_margin 80
-
-# XML
-
-lang.xml.filemask \.(xml|xsl|rdl|aiml|xhtml)$
-lang.xml.format.default white
-lang.xml.format.selection inverse
-lang.xml.format.found yellow inverse
-lang.xml.tabsize 8
-lang.xml.indent.size 2
-lang.xml.indent.auto true
-lang.xml.indent.roundup true
-#lang.xml.indent.using_tabs true
-lang.xml.tokens.entities &\S+?;
-lang.xml.tokens.entities.format magenta bold
-lang.xml.tokens.code.open (<)(?:[^%]|$)
-lang.xml.tokens.code.close (?:[^%]|^)(>)
-lang.xml.tokens.code.format white bold
-lang.xml.tokens.code.change_to xml_tag
-lang.xml.tokens.comments.open (<!--)
-lang.xml.tokens.comments.close (-->)
-lang.xml.tokens.comments.format 8
-lang.xml.tokens.comments.change_to xml_comment
-lang.xml.comment_string <!--
-lang.xml.comment_close_string " -->"
-lang.xml.tokens.template.open \[@--
-lang.xml.tokens.template.close --@\]
-lang.xml.tokens.template.format brown
-lang.xml.tokens.template.change_to perl
-lang.xml.closers.tag.regexp <([^/> ]*)
-lang.xml.closers.tag.closer { |m| "</" + m[ 1 ] + ">" }
-lang.xml_tag.format.default white bold
-lang.xml_tag.format.selection inverse
-lang.xml_tag.format.found yellow inverse
-lang.xml_tag.tabsize 8
-lang.xml_tag.indent.size 2
-lang.xml_tag.indent.auto true
-lang.xml_tag.indent.roundup true
-#lang.xml_tag.indent.using_tabs true
-lang.xml_tag.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.xml_tag.tokens.doublequoted_strings.format green bold
-lang.xml_tag.tokens.singlequoted_strings ('.*?[^\\]')
-lang.xml_tag.tokens.singlequoted_strings.format green bold
-lang.xml_tag.tokens.non_alphanum ([@!#$%^&*()\[\]{}/?=+\-\\|,<.>;:])
-lang.xml_tag.tokens.non_alphanum.format white
-lang.xml_tag.tokens.namespaces ([a-zA-Z_-]+):
-lang.xml_tag.tokens.namespaces.format yellow bold
-lang.xml_comment.format.default 8
-lang.xml_comment.format.selection inverse
-lang.xml_comment.format.found yellow inverse
-lang.xml_comment.tabsize 8
-lang.xml_comment.indent.size 2
-lang.xml_comment.indent.auto true
-lang.xml_comment.indent.roundup true
-#lang.xml_comment.indent.using_tabs true
-
-lang.html.filemask \.([rx]?html?|php|asp)$
-lang.html.format.default white
-lang.html.format.selection inverse
-lang.html.format.found yellow inverse
-lang.html.tabsize 8
-lang.html.indent.size 2
-lang.html.indent.auto true
-lang.html.indent.roundup true
-#lang.html.indent.using_tabs true
-lang.html.tokens.code.open (<)(?:[^%]|$)
-lang.html.tokens.code.close (?:[^%]|^)(>)
-lang.html.tokens.code.format white bold
-lang.html.tokens.code.change_to html_tag
-lang.html.tokens.entities &\S+?;
-lang.html.tokens.entities.format magenta bold
-lang.html.tokens.eruby.open <%
-lang.html.tokens.eruby.close %>
-lang.html.tokens.eruby.format 9 bold
-lang.html.tokens.eruby.change_to ruby
-lang.html.tokens.ezamar.open <\?r
-lang.html.tokens.ezamar.close \?>
-lang.html.tokens.ezamar.format 9 bold
-lang.html.tokens.ezamar.change_to ruby
-lang.html.tokens.ezamar-value.open \#\{
-lang.html.tokens.ezamar-value.close \}
-lang.html.tokens.ezamar-value.format 9 bold
-lang.html.tokens.ezamar-value.change_to ruby
-lang.html.tokens.php.open <\?(?:php)?
-lang.html.tokens.php.close \?>
-lang.html.tokens.php.format 10 bold
-lang.html.tokens.php.change_to php
-lang.html.tokens.comments.open (<!--)
-lang.html.tokens.comments.close (-->)
-lang.html.tokens.comments.format 8
-lang.html.tokens.comments.change_to html_comment
-lang.html.comment_string <!--
-lang.html.comment_close_string " -->"
-lang.html.closers.tag.regexp <([^/> ]*)
-lang.html.closers.tag.closer { |m| "</" + m[ 1 ] + ">" }
-lang.html_tag.format.default white bold
-lang.html_tag.format.selection inverse
-lang.html_tag.format.found yellow inverse
-lang.html_tag.tabsize 8
-lang.html_tag.indent.size 4
-lang.html_tag.indent.auto true
-lang.html_tag.indent.roundup true
-#lang.html_tag.indent.using_tabs true
-lang.html_tag.tokens.attribute (href)
-lang.html_tag.tokens.attribute.format green bold
-lang.html_tag.tokens.elements.case_insensitive \b(A|ABBR|ACRONYM|ADDRES|APPLET|AREA|B|BASE|BASEFONT|BDO|BIG|BLOCKQUOTE|BODY|BR|BUTTON|CAPTION|CENTER|CITE|CODE|COL|COLGROUP|DD|DEL|DFN|DIR|DIV|DL|DT|EM|FIELDSET|FONT|FORM|FRAME|FRAMESET|H1|H2|H3|H4|H5|H6|HEAD|HR|HTML|I|IFRAME|IMG|INPUT|INS|ISINDEX|KBD|LABEL|LEGEND|LI|LINK|MAP|MENU|META|NOFRAMES|NOSCRIPT|OBJECT|OL|OPTGROUP|OPTION|P|PARAM|PRE|Q|S|SAMP|SCRIPT|SELECT|SMALL|SPAN|STRIKE|STRONG|STYLE|SUB|SUP|TABLE|TBODY|TD|TEXTAREA|TFOOT|TH|THEAD|TITLE|TR|TT|U|UL|VA)\b
-lang.html_tag.tokens.elements.format cyan
-lang.html_tag.tokens.attributes.case_insensitive \b(abbr|accept-charset|accept|accesskey|action|align|alink|alt|archive|axis|background|bgcolor|border|cellpadding|cellspacing|char|charoff|charset|checked|cite|class|classid|clear|code|codebase|codetype|color|cols|colspan|compact|content|coords|data|datetime|declare|defer|dir|disabled|enctype|face|for|frame|frameborder|headers|height|href|href|hreflang|hspace|http-equiv|id|ismap|label|lang|language|link|longdesc|marginheight|marginwidth|maxlength|media|method|multiple|name|nohref|noresize|noshade|nowrap|object|onblur|onchange|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onselect|onsubmit|onunload|profile|prompt|readonly|rel|rev|rows|rowspan|rules|scheme|scope|scrolling|selected|shape|size|span|src|standby|start|style|summary|tabindex|target|text|title|type|usemap|valign|value|valuetype|version|vlink|vspace|width)\b
-lang.html_tag.tokens.attributes.format white
-lang.html_tag.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.html_tag.tokens.doublequoted_strings.format green bold
-lang.html_tag.tokens.singlequoted_strings ('.*?[^\\]')
-lang.html_tag.tokens.singlequoted_strings.format green bold
-lang.html_tag.tokens.non_alphanum ([@!#$%^&*()\[\]{}/?=+\-\\|,<.>;:])
-lang.html_tag.tokens.non_alphanum.format white
-lang.html_comment.format.default 8
-lang.html_comment.format.selection inverse
-lang.html_comment.format.found yellow inverse
-lang.html_comment.tabsize 8
-lang.html_comment.indent.size 4
-lang.html_comment.indent.auto true
-lang.html_comment.indent.roundup true
-#lang.html_comment.indent.using_tabs true
-
-# CSS
-
-lang.css.filemask \.css$
-lang.css.format.default white
-lang.css.format.selection inverse
-lang.css.format.found yellow inverse
-lang.css.tabsize 8
-lang.css.indent.size 4
-lang.css.indent.auto true
-lang.css.indent.roundup true
-#lang.css.indent.using_tabs true
-lang.css.indent.indenters (\{)
-lang.css.indent.unindenters (\})
-lang.css.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
-lang.css.tokens.properties \b(azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-collapse|border-color|border-spacing|border-style|border-top|border-bottom|border-right|border-left|border-top-color|border-top-style|border-top-width|border-width|border|bottom|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-right|margin-top|margin-left|margin-bottom|margin|max-height|max-width|min-height|min-width|orphans|outline-color|outline-style|outline-width|outline|overflow|padding-top|padding-left|padding-right|padding-bottom|padding|page-break-after|page-break-before|page-break-inside|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|table-layout|text-align|text-decoration|text-indent|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index)\s*:
-lang.css.tokens.properties.format white bold
-lang.css.tokens.colours #[A-Fa-f0-9]{6}|\b(?:aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\b
-lang.css.tokens.colours.format yellow bold
-lang.css.tokens.long_comments.open \/\*
-lang.css.tokens.long_comments.close \*\/
-lang.css.tokens.long_comments.format 8 bold
-lang.css.comment_string /*
-lang.css.comment_close_string " */"
-lang.css.tokens.numbers \b([0-9]+\.[0-9]+|[0-9]+)
-lang.css.tokens.numbers.format blue bold
-lang.css.tokens.units [^A-Za-z](em|pt|px)\b
-lang.css.tokens.units.format cyan
-lang.css.tokens.html_elements.case_insensitive \b(A|ABBR|ACRONYM|ADDRES|APPLET|AREA|B|BASE|BASEFONT|BDO|BIG|BLOCKQUOTE|BODY|BR|BUTTON|CAPTION|CENTER|CITE|CODE|COL|COLGROUP|DD|DEL|DFN|DIR|DIV|DL|DT|FIELDSET|FORM|FRAME|FRAMESET|H1|H2|H3|H4|H5|H6|HEAD|HR|HTML|I|IFRAME|IMG|INPUT|INS|ISINDEX|KBD|LABEL|LEGEND|LI|LINK|MAP|MENU|META|NOFRAMES|NOSCRIPT|OBJECT|OL|OPTGROUP|OPTION|P|PARAM|PRE|Q|S|SAMP|SCRIPT|SELECT|SMALL|SPAN|STRIKE|STRONG|STYLE|SUB|SUP|TABLE|TBODY|TD|TEXTAREA|TFOOT|TH|THEAD|TITLE|TR|TT|U|UL|VA)\b
-lang.css.tokens.html_elements.format green
-lang.css.tokens.values \b(auto|block|inherit|inline|larger|none|smaller|solid)\b
-lang.css.tokens.values.format blue bold
-lang.css.column_delimiters :|,
-
-# Ruby
-
-lang.ruby.filemask (?:[Rr]akefile)|(?:\.(?:rb|gem(?:spec)?)$)
-lang.ruby.bangmask ruby
-lang.ruby.format.default white bold
-lang.ruby.format.selection inverse
-lang.ruby.format.found yellow inverse
-lang.ruby.tokens.reserved_words \b(__FILE__|and|def|end|in|or|self|unless|__LINE__|begin|defined\?|ensure|module|redo|super|until|BEGIN|break|do|false|next|rescue|then|when|END|case|else|for|nil|retry|true|while|alias|class|elsif|if|not|return|undef|yield)\b
-lang.ruby.tokens.reserved_words.format white
-lang.ruby.tokens.constants \b([A-Z_]+|[A-Z_][A-Z0-9_]+)\b
-lang.ruby.tokens.constants.format yellow bold
-lang.ruby.tokens.symbols [^:](:[a-zA-Z_][a-zA-Z_0-9]*)
-lang.ruby.tokens.symbols.format white bold
-lang.ruby.tokens.non_alphanum [@!#$%^&*()\[\]{}/?=+\-\\|,<.>;~]
-lang.ruby.tokens.non_alphanum.format white
-lang.ruby.tokens.instance_variables (@[A-Za-z_][A-Za-z_0-9]*)
-lang.ruby.tokens.instance_variables.format white bold
-lang.ruby.tokens.comments (#.*)
-lang.ruby.tokens.comments.format 8 bold
-lang.ruby.comment_string #
-lang.ruby.tokens.regular_expressions (\/.+?[^\\]\/)
-lang.ruby.tokens.regular_expressions.format red bold
-lang.ruby.tokens.regular_expressions2 (%r\{.+?[^\}]\})
-lang.ruby.tokens.regular_expressions2.format red bold
-lang.ruby.tokens.doublequoted_strings (\".*?[^\\]\"|\"\")
-lang.ruby.tokens.doublequoted_strings.format green bold
-lang.ruby.tokens.interpolated_string.open (%Q?\{)
-lang.ruby.tokens.interpolated_string.close (\})
-lang.ruby.tokens.interpolated_string.format green bold
-lang.ruby.tokens.interpolated_string.change_to interpolated_ruby
-lang.interpolated_ruby.format.default green bold
-lang.interpolated_ruby.tokens.interpolation.open (#\{)
-lang.interpolated_ruby.tokens.interpolation.close (\})
-lang.interpolated_ruby.tokens.interpolation.format 12 bold
-lang.interpolated_ruby.tokens.interpolation.change_to ruby
-lang.ruby.tokens.singlequoted_strings ('.*?[^\\]'|'')
-lang.ruby.tokens.singlequoted_strings.format green bold
-lang.ruby.tokens.backquoted_strings (`.*?[^\\]`|``)
-lang.ruby.tokens.backquoted_strings.format red bold
-lang.ruby.tokens.interpolated_exec_string.open (%x\{)
-lang.ruby.tokens.interpolated_exec_string.close (\})
-lang.ruby.tokens.interpolated_exec_string.format red bold
-lang.ruby.tokens.interpolated_exec_string.change_to interpolated_exec_ruby
-lang.interpolated_exec_ruby.format.default red bold
-lang.interpolated_exec_ruby.tokens.interpolation.open (#\{)
-lang.interpolated_exec_ruby.tokens.interpolation.close (\})
-lang.interpolated_exec_ruby.tokens.interpolation.format 9 bold
-lang.interpolated_exec_ruby.tokens.interpolation.change_to ruby
-lang.ruby.tokens.character_codes \W(\?\S)
-lang.ruby.tokens.character_codes.format magenta bold
-lang.ruby.tokens.long_comments.open ^=begin
-lang.ruby.tokens.long_comments.close ^=end
-lang.ruby.tokens.long_comments.format 8 bold
-lang.ruby.tokens.sql_string.open (<<-EOSQL)
-lang.ruby.tokens.sql_string.close (EOSQL)
-lang.ruby.tokens.sql_string.format 1
-lang.ruby.tokens.sql_string.change_to sql
-lang.ruby.indent.size 2
-lang.ruby.indent.auto true
-lang.ruby.indent.roundup true
-#lang.ruby.indent.using_tabs true
-lang.ruby.tabsize 2
-lang.ruby.indent.indenters ^\s*(case|def|begin|ensure|when|else|ensure|for|while|until|elsif|if|class|module|rescue)\b|([{\[(]$|\{\s*\|[\w\s,]*\|\s*$)|\b(do)\b
-lang.ruby.indent.unindenters ^\s*(end|else|elsif|ensure|when|rescue)\b|(^\s+[\]})])
-lang.ruby.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(`.+?[^\\]`)|(\/.+?[^\\]\/)|(^\s*#.*)|\S\s+if
-lang.ruby.indent.ignore ^\s*$
-lang.ruby.context.ignore ^=(begin|end)$
-lang.ruby.column_delimiters =>?|:|,
-
-# PHP
-
-lang.php.filemask \.php\d?$
-lang.php.bangmask php
-lang.php.format.default white bold
-lang.php.format.selection inverse
-lang.php.format.found yellow inverse
-lang.php.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.php.tokens.doublequoted_strings.format green bold
-lang.php.tokens.singlequoted_strings ('.*?[^\\]')
-lang.php.tokens.singlequoted_strings.format green bold
-lang.php.tokens.reserved_words \b(NULL|E_ALL|__wakeup|not|endwhile|__sleep|new|endswitch|__LINE__|list|endif|__FILE__|global|endforeach|while|include_once|endfor|virtual|include|enddeclare|xor|if|empty|var|elseif|TRUE|true|else|this|echo|stdClass|die|switch|do|static|default|return|function|declare|require_once|foreach|continue|require|for|class|print|FALSE|false|cfunction|PHP_VERSION|extends|case|exit|break|PHP_OS|eval|argc|parent|E_WARNING|as|or|E_ERROR|argv|old_function|E_PARSE|and)\b
-lang.php.tokens.reserved_words.format white
-lang.php.tokens.constants \b([A-Z_]+|[A-Z_][A-Z0-9_]+)\b
-lang.php.tokens.constants.format yellow bold
-lang.php.tokens.comments (\/\/.*)
-lang.php.tokens.comments.format 8 bold
-lang.php.comment_string //
-lang.php.tokens.preprocessor (^\s*#.*)
-lang.php.tokens.preprocessor.format yellow bold
-lang.php.tokens.non_alphanum ([!@#$%\^&*()\[\]{}/?=+\-\\|,<.>;:])
-lang.php.tokens.non_alphanum.format white
-lang.php.tokens.long_comments.open \/\*
-lang.php.tokens.long_comments.close \*\/
-lang.php.tokens.long_comments.format 8 bold
-lang.php.tokens.sql_string.open (<<<EOS)
-lang.php.tokens.sql_string.close (EOS)
-lang.php.tokens.sql_string.format 1
-lang.php.tokens.sql_string.change_to sql
-lang.php.tokens.js.open (<<<EOJS)
-lang.php.tokens.js.close (EOJS)
-lang.php.tokens.js.format 12 bold
-lang.php.tokens.js.change_to java
-lang.php.indent.size 4
-lang.php.indent.auto true
-lang.php.indent.roundup false
-#lang.php.indent.using_tabs true
-lang.php.indent.indenters ([{\[(]$)
-lang.php.indent.unindenters (^\s+[\]})])
-lang.php.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
-lang.php.indent.ignore ^(.+:|\s*?)$
-lang.php.context.ignore ^(.+:|\s*\{?)$
-
-# Perl
-
-lang.perl.filemask \.(?:pl|pm)$
-lang.perl.bangmask perl
-lang.perl.format.default white bold
-lang.perl.format.selection inverse
-lang.perl.format.found yellow inverse
-lang.perl.tokens.comments (#.*)
-lang.perl.tokens.comments.format 8 bold
-lang.perl.comment_string #
-lang.perl.tokens.constants \b([A-Z_]+|[A-Z_][A-Z0-9_]+)\b
-lang.perl.tokens.constants.format yellow bold
-lang.perl.tokens.non_alphanum [!#^&*()\[\]{}/?=+\-\\|,<.>;:~]
-lang.perl.tokens.non_alphanum.format white
-lang.perl.tokens.regular_expressions (\/.+?[^\\]\/)
-lang.perl.tokens.regular_expressions.format red bold
-lang.perl.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.perl.tokens.doublequoted_strings.format green bold
-lang.perl.tokens.singlequoted_strings ('.*?[^\\]')
-lang.perl.tokens.singlequoted_strings.format green bold
-lang.perl.tokens.backquoted_strings (`.*?[^\\]`)
-lang.perl.tokens.backquoted_strings.format red bold
-lang.perl.tokens.reserved_words \b(unless|until|else|for|while|foreach|if|return|do|next|elsif|last|redo|continue|sub|goto)\b
-lang.perl.tokens.reserved_words.format white
-lang.perl.tokens.builtins \b(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|q|qq|qr|quotemeta|qw|qx|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|s|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)\b
-lang.perl.tokens.builtins.format cyan bold
-lang.perl.tokens.array_variables \s(@[A-Za-z_][A-Za-z_0-9]*)\b
-lang.perl.tokens.array_variables.format red bold
-lang.perl.tokens.hash_variables \s(%[A-Za-z_][A-Za-z_0-9]*)\b
-lang.perl.tokens.hash_variables.format magenta bold
-lang.perl.indent.size 4
-lang.perl.indent.auto true
-lang.perl.indent.roundup true
-#lang.perl.indent.using_tabs true
-lang.perl.indent.indenters (case|[{\[(]$)
-lang.perl.indent.unindenters (case|^\s+[\]})])
-#lang.perl.indent.indenters \b(unless|else|for|while|foreach|if|do|elsif|sub)\b
-#lang.perl.indent.unindenters \b(else)\b
-lang.perl.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(`.+?[^\\]`)|(\/.+?[^\\]\/)|(^\s*#.*)
-lang.perl.indent.ignore ^\s*$
-lang.perl.context.ignore ^(.+:|\s*\{?)$
-lang.perl.column_delimiters =>?|:|,
-
-# Python
-
-lang.python.filemask \.py$
-lang.python.bangmask python
-lang.python.format.default white bold
-lang.python.format.selection inverse
-lang.python.format.found yellow inverse
-lang.python.tokens.constants \b([A-Z_]+|[A-Z_][A-Z0-9_]+)\b
-lang.python.tokens.constants.format yellow bold
-lang.python.tokens.non_alphanum [@!#$%^&*()\[\]{}/?=+\-\\|,<.>;:~]
-lang.python.tokens.non_alphanum.format white
-lang.python.tokens.comments (#.*)
-lang.python.tokens.comments.format 8 bold
-lang.python.comment_string #
-lang.python.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.python.tokens.doublequoted_strings.format green bold
-lang.python.tokens.singlequoted_strings ('.*?[^\\]')
-lang.python.tokens.singlequoted_strings.format green bold
-lang.python.tokens.backquoted_strings (`.*?[^\\]`)
-lang.python.tokens.backquoted_strings.format red bold
-lang.python.tokens.reserved_words \b(and|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|yield)\b
-lang.python.tokens.reserved_words.format white
-lang.python.indent.size 4
-lang.python.indent.auto true
-lang.python.indent.roundup true
-#lang.python.indent.using_tabs true
-lang.python.indent.indenters \b(class|def|elif|else|except|finally|for|if|try|while)\b
-#lang.python.indent.indenters :
-lang.python.indent.unindenters \b(else|elif|except)\b
-lang.python.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(`.+?[^\\]`)|(^\s*#.*)
-lang.python.indent.ignore ^\s*$
-
-# Java
-
-lang.java.filemask \.(?:java|js)$
-lang.java.format.default white bold
-lang.java.format.selection inverse
-lang.java.format.found yellow inverse
-lang.java.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.java.tokens.doublequoted_strings.format green bold
-lang.java.tokens.singlequoted_strings ('.*?[^\\]')
-lang.java.tokens.singlequoted_strings.format green bold
-lang.java.tokens.reserved_words \b(abstract|do|if|package|synchronized|boolean|double|implements|private|this|break|else|import|protected|throw|byte|extends|instanceof|public|throws|case|false|int|return|transient|catch|final|interface|short|true|char|finally|long|static|try|class|float|native|strictfp|void|const|for|new|super|volatile|continue|goto|null|switch|while|default|assert)\b
-lang.java.tokens.reserved_words.format white
-lang.java.tokens.constants \b([A-Z_]+|[A-Z_][A-Z0-9_]+)\b
-lang.java.tokens.constants.format yellow bold
-lang.java.tokens.comments (\/\/.*)
-lang.java.tokens.comments.format 8 bold
-lang.java.comment_string //
-lang.java.tokens.non_alphanum ([!@#$%\^&*()\[\]{}/?=+\-\\|,<.>;:])
-lang.java.tokens.non_alphanum.format white
-lang.java.tokens.long_comments.open \/\*
-lang.java.tokens.long_comments.close \*\/
-lang.java.tokens.long_comments.format 8 bold
-lang.java.tokens.regular_expressions (\/.+?[^\\]\/)
-lang.java.tokens.regular_expressions.format red bold
-lang.java.indent.size 4
-lang.java.indent.auto true
-lang.java.indent.roundup false
-#lang.java.indent.using_tabs true
-lang.java.indent.indenters (\{)
-lang.java.indent.unindenters (\})
-lang.java.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
-lang.java.indent.ignore ^(.+:|\s*?)$
-lang.java.context.ignore ^(.+:|\s*\{?)$
-lang.java.closers.for.regexp for$
-lang.java.closers.for.closer { |m| "( $i = 0; $i < limit; $i++ ) {\n%_\n}" }
-lang.java.column_delimiters =|:|,
-
-# C
-
-lang.c.filemask \.(c(pp|xx)?|h)$
-lang.c.format.default white bold
-lang.c.format.selection inverse
-lang.c.format.found yellow inverse
-lang.c.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.c.tokens.doublequoted_strings.format green bold
-lang.c.tokens.singlequoted_strings ('.*?[^\\]')
-lang.c.tokens.singlequoted_strings.format green bold
-lang.c.tokens.reserved_words \b(if|double|break|else|byte|case|int|return|short|char|long|static|void|for|super|continue|goto|switch|while)\b
-lang.c.tokens.reserved_words.format white
-lang.c.tokens.constants \b([A-Z_]+|[A-Z_][A-Z0-9_]+)\b
-lang.c.tokens.constants.format yellow bold
-lang.c.tokens.comments (\/\/.*)
-lang.c.tokens.comments.format 8 bold
-lang.c.comment_string //
-lang.c.tokens.preprocessor (^\s*#.*)
-lang.c.tokens.preprocessor.format yellow bold
-lang.c.tokens.non_alphanum ([!@#$%\^&*()\[\]{}/?=+\-\\|,<.>;:])
-lang.c.tokens.non_alphanum.format white
-lang.c.tokens.long_comments.open \/\*
-lang.c.tokens.long_comments.close \*\/
-lang.c.tokens.long_comments.format 8 bold
-lang.c.indent.size 4
-lang.c.indent.auto true
-lang.c.indent.roundup false
-#lang.c.indent.using_tabs true
-lang.c.indent.indenters (case|[{\[(]$)
-lang.c.indent.unindenters (case|^\s+[\]})])
-lang.c.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
-lang.c.indent.ignore ^(.+:|\s*?)$
-lang.c.context.ignore ^(.+:|\s*\{?)$
-
-# Configuration files
-
-lang.conf.filemask (?:\.conf(?:ig)?|\.cfg|\.cnf|user_prefs|XF86Config)$
-lang.conf.format.default white
-lang.conf.format.selection inverse
-lang.conf.format.found yellow inverse
-lang.conf.tokens.commands ^\s*([^\s=]+)
-lang.conf.tokens.commands.format cyan bold
-lang.conf.tokens.comments (^\s*#.*)
-lang.conf.tokens.comments.format yellow bold
-lang.conf.comment_string #
-lang.conf.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.conf.tokens.doublequoted_strings.format green bold
-lang.conf.tokens.singlequoted_strings ('.*?[^\\]')
-lang.conf.tokens.singlequoted_strings.format green bold
-lang.conf.indent.size 4
-lang.conf.indent.auto true
-lang.conf.indent.roundup true
-#lang.conf.indent.using_tabs true
-
-# crontab
-
-lang.crontab.filemask (?:^|\/)crontab$
-lang.crontab.format.default white
-lang.crontab.format.selection inverse
-lang.crontab.format.found yellow inverse
-lang.crontab.tokens.comments (^\s*#.*)
-lang.crontab.tokens.comments.format yellow bold
-lang.crontab.comment_string #
-lang.crontab.tokens.schedule ^((?:[0-9\/*,-]+\s+){5})
-lang.crontab.tokens.schedule.format cyan bold
-lang.crontab.tokens.commands ^(\S+=.+)
-lang.crontab.tokens.commands.format cyan
-lang.crontab.indent.size 4
-lang.crontab.indent.auto true
-lang.crontab.indent.roundup true
-#lang.crontab.indent.using_tabs true
-
-lang.fstab.filemask ^fstab$
-lang.fstab.format.default white
-lang.fstab.format.selection inverse
-lang.fstab.format.found yellow inverse
-lang.fstab.tokens.comments (^\s*#.*)
-lang.fstab.tokens.comments.format yellow bold
-lang.fstab.comment_string #
-lang.fstab.indent.size 4
-lang.fstab.indent.auto true
-lang.fstab.indent.roundup true
-#lang.fstab.indent.using_tabs true
-
-# SQL
-
-lang.sql.filemask \.sql$
-lang.sql.format.default white bold
-lang.sql.format.selection inverse
-lang.sql.format.found yellow inverse
-lang.sql.indent.size 4
-lang.sql.indent.auto true
-lang.sql.indent.roundup true
-#lang.sql.indent.using_tabs true
-#lang.sql.tokens.reserved_words.case_insensitive \b(ABSOLUTE|ACCESS|ACTION|ADD|ADMIN|AFTER|ALIAS|ALL|ALLOCATE|AND|ANY|ARE|AS|ASC|ASSERTION|AT|AUDIT|AUTHORIZATION|AVG|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BOTH|BREADTH|BY|CASCADE|CASCADED|CASE|CAST|CATALOG|CHAR_LENGTH|CHARACTER_LENGTH|CHECK|CLASS|CLOSE|CLUSTER|COALESCE|COBOL|COLLATE|COLLATION|COLUMN|COMPLETION|COMPRESS|COMPUTED|CONCAT|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTINUE|CONVERT|CORRESPONDING|COUNT|CROSS|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURRENT|CURSOR|CYCLE|DATA|DAY|DBHIGH|DBKEY|DBLOW|DBMAC|DEALLOCATE|DECLARE|DECODE|DEFAULT|DEFERRABLE|DEFERRED|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISTINCT|DO|DOMAIN|EACH|ELEMENT|ELSE|ELSEIF|END-EXEC|END|EQUALS|ESCAPE|EXCEPT|EXCEPTION|EXCEPTIONS|EXCLUSIVE|EXISTS|EXTERNAL|EXTERNALLY|EXTRACT|FALSE|FILE|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FROM|FULL|FUNCTION|GENERAL|GET|GLOBAL|GO|GOTO|GROUP|HAVING|HOUR|IDENTIFIED|IDENTITY|IF|IGNORE|IMMEDIATE|IN|INCREMENT|INDEX|INDICATOR|INITIAL|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSTEAD|INTERSECT|INTERVAL|INTO|IS|ISOLATION|JOIN|KEY|LABEL|LANGUAGE|LAST|LEADING|LEAVE|LEFT|LESS|LEVEL|LIKE|LIMIT|LOCAL|LOCK|LOOP|LOWER|MATCH|MAX|MAXEXTENTS|MIN|MINUS|MINUTE|MLSLABEL|MLS_LABEL_FORMAT|MODE|MODIFY|MODULE|MONTH|MOVE|MULTISET|NAMES|NATIONAL|NATURAL|NEW_TABLE|NEXT|NO|NOAUDIT|NOCOMPRESS|NONE|NOT|NOWAIT|NULL|NULLIF|NUMBER|NVL|OCTET_LENGTH|OF|OFF|OFFLINE|OID|OLD|OLD_TABLE|ON|ONLINE|ONLY|OPEN|OPERATION|OPERATORS|OPTION|OR|ORDER|OTHERS|OUT|OUTER|OUTPUT|OVERLAPS|PAD|PARAMETER|PARTIAL|PASCAL|PCTFREE|PENDANT|PLI|POSITION|PRECISION|PREORDER|PRESERVE|PRIMARY|PRIOR|PRIVATE|PRIVILEGES|PROCEDURE|PROTECTED|PUBLIC|RAW|READ|READUP|REAL|RECORD|RECURSIVE|REF|REFERENCES|REFERENCING|RELATIVE|RENAME|REPLACE|REPRESENTATION|RESIGNAL|RESOURCE|RESTRICT|RETURN|RETURNS|RIGHT|ROLE|ROUTINE|ROW|ROWID|ROWNUM|ROWS|SAVEPOINT|SCHEMA|SCROLL|SEARCH|SECOND|SECTION|SENSITIVE|SEQUENCE|SESSION|SESSION_USER|SET|SHARE|SIGNAL|SIMILAR|SIZE|SOME|SPACE|SPECIFIC|SQL|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STRUCTURE|SUBSTRING|SUCCESSFUL|SUM|SYNONYM|SYSDATE|SYSTEM_USER|TABLE|TEMPLATE|TEMPORARY|TEST|THAN|THEN|THERE|SQ92|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TRAILING|TRANSACTION|TRANSLATE|TRANSLATION|TRIGGER|TRIM|TRUE|TUPLE|TYPE|UID|UNDER|UNION|UNIQUE|UNKNOWN|UPPER|USAGE|USER|USING|VALIDATE|VALUE|VALUES|VARIABLE|VARIANT|VIRTUAL|VARYING|VIEW|VISIBLE|VOID|WAIT|WHEN|WHENEVER|WHERE|WHILE|WITH|WITHOUT|WORK|WRITE|WRITEDOWN|WRITEUP|YEAR|ZONE)\b
-lang.sql.tokens.reserved_words.case_insensitive \b(ALL|AND|ANY|AS|ASC|BEGIN|BY|CASCADE|CASE|CAST|CHECK|COALESCE|COLUMN|CONSTRAINT|COUNT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURSOR|DECLARE|DEFAULT|DESC|DISTINCT|DO|ELSE|ELSEIF|END|EXCEPT|EXISTS|FALSE|FIRST|FOR|FOREIGN|FOUND|FROM|FULL|FUNCTION|GROUP|HAVING|HOUR|IF|IN|INCREMENT|INDEX|INNER|INPUT|INSTEAD|INTERSECT|INTERVAL|INTO|IS|JOIN|KEY|LANGUAGE|LAST|LEFT|LIKE|LIMIT|LOOP|MAX|MIN|NATURAL|NEXT|NO|NONE|NOT|NULL|NUMBER|OF|OFF|OLD|ON|ONLY|OR|ORDER|OUT|OUTER|PARTIAL|PRECISION|PRIMARY|REAL|RECORD|REF|REFERENCES|REPLACE|RESTRICT|RETURN|RETURNS|RIGHT|SCHEMA|SEQUENCE|SET|SUM|TABLE|TEMPORARY|THAN|THEN|TO|TRANSACTION|TRIGGER|TRUE|TYPE|UNION|UNIQUE|UPPER|USING|VALUE|VALUES|VARYING|VIEW|WHEN|WHERE|WHILE|WITH|WITHOUT|WORK)\b
-lang.sql.tokens.reserved_words.format white
-lang.sql.tokens.commands.case_insensitive \b(ALTER|COMMENT|COMMIT|CREATE|DELETE|DROP|EXEC|EXECUTE|FETCH|GRANT|INSERT|PERFORM|PREPARE|REVOKE|ROLLBACK|SELECT|UPDATE)\b
-lang.sql.tokens.commands.format cyan
-lang.sql.tokens.data_types.case_insensitive \b(BIT|BOOLEAN|CHAR|CHARACTER|DATE|DEC|DECIMAL|DOUBLE|FLOAT|INT|INTEGER|INTERVAL|LONG|NCHAR|NUMBER|NUMERIC|REAL|RECORD|ROW|SMALLINT|STRUCTURE|TIME|TIMESTAMP|TUPLE|VARCHAR|VARCHAR2)\b
-lang.sql.tokens.data_types.format brown
-lang.sql.tokens.comments (--.*)
-lang.sql.tokens.comments.format 8 bold
-lang.sql.comment_string --
-lang.sql.tokens.singlequoted_strings ('.*?[^\\]')
-lang.sql.tokens.singlequoted_strings.format green bold
-lang.sql.tokens.non_alphanum ([!@#$%\^&*()\[\]{}/?=+\-\\|,<.>;:])
-lang.sql.tokens.non_alphanum.format white
-lang.sql.tokens.typos (==)
-lang.sql.tokens.typos.format 15 bold
-lang.sql.indent.indenters ((?:\(|BEGIN|DECLARE|FROM|LOOP|ORDER BY|SELECT|SET|WHERE)$)
-lang.sql.indent.unindenters (^\s+(?:\)|;|BEGIN|DECLARE|END))
-lang.sql.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')
-lang.sql.context.ignore ^(\W+)$
-
-# Bash
-
-lang.bash.filemask (?:\.(?:ebuild|bash_profile|bashrc))$
-lang.bash.bangmask (?:ba)?sh\b
-lang.bash.format.default white bold
-lang.bash.format.selection inverse
-lang.bash.format.found yellow inverse
-lang.bash.indent.size 4
-lang.bash.indent.auto true
-lang.bash.indent.roundup true
-#lang.bash.indent.using_tabs true
-lang.bash.tabsize 4
-lang.bash.tokens.comments (^\s*#.*)
-lang.bash.tokens.comments.format 8 bold
-lang.bash.comment_string #
-lang.bash.tokens.singlequoted_strings ('.*?[^\\]')
-lang.bash.tokens.singlequoted_strings.format green bold
-lang.bash.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.bash.tokens.doublequoted_strings.format green bold
-lang.bash.tokens.backquoted_strings (`.*?[^\\]`)
-lang.bash.tokens.backquoted_strings.format red bold
-lang.bash.indent.indenters (\{)
-lang.bash.indent.unindenters (\})
-lang.bash.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
-lang.bash.indent.ignore ^(.+:|\s*?)$
-
-# Tcl
-
-lang.tcl.filemask \.tcl$
-lang.tcl.bangmask tcl
-lang.tcl.format.default white bold
-lang.tcl.format.selection inverse
-lang.tcl.format.found yellow inverse
-lang.tcl.indent.size 4
-lang.tcl.indent.auto true
-lang.tcl.indent.roundup true
-#lang.tcl.indent.using_tabs true
-lang.tcl.tabsize 4
-lang.tcl.tokens.comments (^\s*#.*)
-lang.tcl.tokens.comments.format 8 bold
-lang.tcl.comment_string #
-lang.tcl.tokens.reserved_words \b(encoding|incr|pid|tcl_endOfWord|Tcl|eof|info|tcl_findLibrary|after|error|interp|pkg_mkIndex|tcl_startOfNextWord|append|eval|join|proc|tcl_startOfPreviousWord|array|exec|lappend|puts|tcl_wordBreakAfter|auto_execok|exit|lassign|pwd|tcl_wordBreakBefore|auto_import|expr|lindex|re_syntax|tcltest|auto_load|fblocked|linsert|read|tclvars|auto_mkindex|fconfigure|list|regexp|tell|auto_mkindex_old|fcopy|llength|registry|time|auto_qualify|file|load|regsub|trace|auto_reset|fileevent|lrange|rename|unknown|bgerror|filename|lrepeat|resource|unload|binary|flush|lreplace|return|unset|break|for|lsearch|scan|update|catch|foreach|lset|seek|uplevel|cd|format|lsort|set|upvar|clock|gets|memory|socket|variable|close|glob|msgcat|source|vwait|concat|global|namespace|split|while|continue|history|open|string|dde|http|package|subst|dict|if|parray|switch)\b
-lang.tcl.tokens.reserved_words.format white
-lang.tcl.tokens.non_alphanum ([!@#$%\^&*()\[\]{}/?=+\-\\|,<.>;:])
-lang.tcl.tokens.non_alphanum.format white
-lang.tcl.tokens.variables (\$[A-Za-z_][A-Za-z_0-9]*)\b
-lang.tcl.tokens.variables.format yellow bold
-lang.tcl.tokens.doublequoted_strings (\".*?[^\\]\")
-lang.tcl.tokens.doublequoted_strings.format green bold
-lang.tcl.indent.indenters (\{)
-lang.tcl.indent.unindenters (\})
-lang.tcl.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
-
-lang.diff.filemask (?:\.(?:diff|patch)|COMMIT_EDITMSG)$
-lang.diff.format.default white
-lang.diff.format.selection inverse
-lang.diff.format.found yellow inverse
-lang.diff.indent.size 4
-lang.diff.indent.auto false
-#lang.diff.indent.using_tabs true
-lang.diff.tabsize 4
-lang.diff.tokens.oldfile (^--- .+$)
-lang.diff.tokens.oldfile.format red bold
-lang.diff.tokens.newfile (^\+\+\+ .+$)
-lang.diff.tokens.newfile.format green bold
-lang.diff.tokens.oldline (^-.+$)
-lang.diff.tokens.oldline.format red bold
-lang.diff.tokens.newline (^\+.+$)
-lang.diff.tokens.newline.format green bold
-lang.diff.tokens.location (^@@.+$)
-lang.diff.tokens.location.format green
-lang.diff.tokens.filediff (^Only in .+$)
-lang.diff.tokens.filediff.format magenta bold
-lang.diff.tokens.diff_command (^diff .+$)
-lang.diff.tokens.diff_command.format 13 bold
-
-lang.yaml.filemask (?:\.ya?ml)$
-lang.yaml.bangmask ^---
-lang.yaml.format.default white bold
-lang.yaml.format.selection inverse
-lang.yaml.format.found yellow inverse
-lang.yaml.indent.size 4
-lang.yaml.indent.auto false
-lang.yaml.indent.roundup false
-lang.yaml.tabsize 8
-lang.yaml.tokens.value_indicator (:)(?: |$)
-lang.yaml.tokens.value_indicator.format white
-lang.yaml.tokens.key_indicator (\? )
-lang.yaml.tokens.key_indicator.format white
-lang.yaml.tokens.nested_series (?:^|[^-])(- )
-lang.yaml.tokens.nested_series.format magenta bold
-lang.yaml.tokens.series_separator (,)
-lang.yaml.tokens.series_separator.format white
-lang.yaml.tokens.inline_series ([\[\]])
-lang.yaml.tokens.inline_series.format white
-lang.yaml.tokens.inline_keyed ([{}])
-lang.yaml.tokens.inline_keyed.format white
-lang.yaml.tokens.doublequoted_strings (\".*?[^\\]\"|\"\")
-lang.yaml.tokens.doublequoted_strings.format green bold
-lang.yaml.tokens.singlequoted_strings ('.*?[^\\]'|'')
-lang.yaml.tokens.singlequoted_strings.format green bold
-lang.yaml.tokens.block_scalar (\|[0-9+-]*)$
-lang.yaml.tokens.block_scalar.format blue bold
-lang.yaml.tokens.folded_scalar (>[0-9+-]*)$
-lang.yaml.tokens.folded_scalar.format blue bold
-lang.yaml.tokens.document_header ^(---.*)$
-lang.yaml.tokens.document_header.format 10 bold
-lang.yaml.tokens.document_terminator ^(\.\.\.)
-lang.yaml.tokens.document_terminator.format 10
-lang.yaml.tokens.directive_indicator ^(%.*)
-lang.yaml.tokens.directive_indicator.format 10
-lang.yaml.tokens.comment_indicator (#.+)
-lang.yaml.tokens.comment_indicator.format 8 bold
-lang.yaml.comment_string #
-lang.yaml.tokens.anchor_indicator (&\w+)
-lang.yaml.tokens.anchor_indicator.format red bold
-lang.yaml.tokens.alias_indicator (\*\w+)
-lang.yaml.tokens.alias_indicator.format yellow
-lang.yaml.tokens.tag (!\w*)
-lang.yaml.tokens.tag.format yellow bold
-lang.yaml.tokens.null (~|null)
-lang.yaml.tokens.null.format red
-lang.yaml.indent.size 4
-lang.yaml.indent.auto true
-lang.yaml.indent.roundup true
-lang.yaml.indent.indenters :$
-lang.yaml.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(`.+?[^\\]`)|(^\s*#.*)
-lang.yaml.indent.ignore ^\s*$
-
-lang.haml.filemask \.haml$
-lang.haml.format.default white bold
-lang.haml.format.selection inverse
-lang.haml.format.found yellow inverse
-lang.haml.tabsize 8
-lang.haml.indent.size 2
-lang.haml.indent.auto true
-lang.haml.indent.roundup true
-lang.haml.indent.using_tabs false
-lang.haml.tokens.code.open [=~-]
-lang.haml.tokens.code.close $
-lang.haml.tokens.code.format 9 bold
-lang.haml.tokens.code.change_to ruby
-lang.haml.tokens.tags (%\w+\b)
-lang.haml.tokens.tags.format white
-lang.haml.tokens.hash.open [{\[]
-lang.haml.tokens.hash.close [}\]]
-lang.haml.tokens.hash.format blue bold
-lang.haml.tokens.hash.change_to ruby
-lang.haml.tokens.class \.\w+
-lang.haml.tokens.class.format cyan bold
-lang.haml.tokens.id #\w+
-lang.haml.tokens.id.format cyan
-lang.haml.tokens.xml !!!
-lang.haml.tokens.xml.format magenta bold
-lang.haml.tokens.html_comment ^ *(\/.*)
-lang.haml.tokens.html_comment.format 8 bold
-lang.haml.tokens.line_joiner \|$
-lang.haml.tokens.line_joiner.format 12 bold
-
-#% SiSU
-lang.sisu.filemask \.(?:sst|ssm|ssi|[_-]sst)$
-lang.sisu.format.default white
-lang.sisu.tokens.comment ^%+\s+.*
-lang.sisu.tokens.comment.format 8
-#langsisu.tokens.comments.format 8 bold
-lang.sisu.tokens.header ^(@\S+?:|0~\S+)\s+.*
-lang.sisu.tokens.header.format cyan
-lang.sisu.tokens.heading ^:?[A-C1-9]~(?:\S+)?\s+.*
-lang.sisu.tokens.heading.format yellow bold
-#lang.sisu.tokens.heading.format white inverse
-lang.sisu.tokens.headings.case_insensitive ^(?:Chapter|Part|Section|Book|Article|Preamble|Appendix)\s.*
-lang.sisu.tokens.headings.format white bold
-lang.sisu.tokens.bullet ^_[1-9]?\*\s+
-lang.sisu.tokens.bullet.format yellow
-lang.sisu.tokens.indent ^_[1-9]\s+
-lang.sisu.tokens.indent.format yellow
-lang.sisu.tokens.link \{.+?\}(?:https?://\S+|\.\./\S+|image)
-lang.sisu.tokens.link.format cyan
-lang.sisu.tokens.url http://\S+
-lang.sisu.tokens.url.format blue bold
-lang.sisu.tokens.url ^\<\<\s+\S+?\.ss[it]$
-lang.sisu.tokens.line_bold ^!_\s+.*
-lang.sisu.tokens.line_bold.format white bold
-lang.sisu.tokens.font_bold (([!*])\{.+?\}\2)
-lang.sisu.tokens.font_bold.format white bold
-lang.sisu.tokens.font_modify (([/_^,+-])\{.+?\}\2)
-lang.sisu.tokens.font_modify.format brown
-lang.sisu.tokens.page_break <:(?:pb|np)>
-lang.sisu.tokens.page_break.format white bold inverse
-lang.sisu.tokens.br <:?br>
-lang.sisu.tokens.br.format white bold inverse
-lang.sisu.tokens.endnote_mark ~\^(?:\s|$)
-lang.sisu.tokens.endnote_mark.format green
-lang.sisu.tokens.endnote_content ^\^~\s.+
-lang.sisu.tokens.endnote_content.format green
-#lang.sisu.tokens.endnote.open ~\{
-#lang.sisu.tokens.endnote.close \}~
-lang.sisu.tokens.endnotes ~\{.+?\}~
-lang.sisu.tokens.endnotes.format green
-lang.sisu.tokens.group.open ^group\{
-lang.sisu.tokens.group.close ^\}group
-lang.sisu.tokens.group.format green
-lang.sisu.tokens.poem.open ^poem\{
-lang.sisu.tokens.poem.close ^\}poem
-lang.sisu.tokens.poem.format green
-lang.sisu.tokens.code.open ^code\{
-lang.sisu.tokens.code.close ^\}code
-lang.sisu.tokens.code.format green
-lang.sisu.tokens.sem (([a-z]+):\{.+?\}:\2)
-lang.sisu.tokens.sem (([a-z]+);\{.+?\};\2)
-lang.sisu.tokens.sem (([a-z]+):\[.+?\]:\2)
-lang.sisu.tokens.sem (([a-z]+);\[.+?\];\2)
-lang.sisu.tokens.sem.format green
-lang.sisu.tokens.error \s+$|<\S{2}\S+?>|[a-zA-Z0-9,.::?!&><]+http://\S+|http://\S+<
-#lang.sisu.tokens.error \s+$|<\S+?>|[a-zA-Z0-9,.::?!&><]+http://\S+|http://\S+<
-lang.sisu.tokens.error.format magenta reverse
-
-# Custom configuration files can be included.
-# If a setting is specified again, it overrides the previous setting given
-# higher up in the configuration file(s).
-
-include ~/.diakonos/pistos.conf
-
-# Uncomment this line if your terminal supports 256 colours.
-#include ~/.diakonos/diakonos-256-colour.conf
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/emacs/README b/data/sisu/v3dv/conf/editor-syntax-etc/emacs/README
deleted file mode 100644
index 24816c1e..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/emacs/README
+++ /dev/null
@@ -1,5 +0,0 @@
-put this into your .emacs file, then use the mode file:
-
-(load-file "~/emacs/el/sisu-mode.el")
-(add-to-list 'auto-mode-alist '("\\.sst$" . sisu-mode))
-
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/emacs/sisu-mode.el b/data/sisu/v3dv/conf/editor-syntax-etc/emacs/sisu-mode.el
deleted file mode 100644
index 84e7cbef..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/emacs/sisu-mode.el
+++ /dev/null
@@ -1,368 +0,0 @@
-;;; sisu-mode.el --- a major-mode for highlighting a hierarchy structured text.
-;; @Author: Ambrose Kofi Laing & Ralph Amissah
-;; @Keywords: text, syntax, processes, tools
-;; @Version: 3.0.7 2011-04-20 (2008-12-14)
-;; @URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/emacs/sisu-mode.el;hb=HEAD>
-;; @Copyright: Assigned to FSF 2011-04-08 (GNU EMACS)
-;; @License: GPLv3
-;; @Home URL: SiSU: http://www.jus.uio.no/sisu
-;; originally looked at (based on) doc-mode, with kind permission of the author
-;; Author: SUN, Tong <suntong001@users.sf.net>, (c)2001-6, all right reserved
-;; Version: $Date: 2006/01/19 03:13:41 $ $Revision: 1.14 $
-;; Home URL: http://xpt.sourceforge.net/
-;;
-;; Distribute freely, but please include the author's info & copyright,
-;; the file's version & url with the distribution.
-;;
-; Viva Software Libre!
-;; Support the free software movement!
-;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;{{{ Commentary:
-
-;;
-;; To enter sisu-mode automatically, add (autoload 'sisu-mode "sisu-mode")
-;; to your .emacs file and change the first line of your sisu file to:
-;; # -*- Sisu -*-
-;; if it doesn't have a .sisu extension.
-;;
-;; To handle .sisu files, e.g., 'filename.sisu', add something like
-;; (add-to-list 'auto-mode-alist '("\\.sisu$" . sisu-mode))
-;; to your .emacs file
-
-;;
-;; The documentation for the "Structure Of The Hierarchy Text" can be found in
-;; the sisustring for the sisu-mode function.
-;;
-
-;;}}}
-
-;;{{{ Variables:
-
-(defgroup sisu-faces nil
- "AsciiSisu highlighting"
- :group 'sisus)
-
-;; == Colors
-; color n is more prominent than color n+1
-
-(defface sisu-title-1-face
- `((((class color)
- (background dark))
- (:foreground "brown3" :bold t :height 1.2 :inherit variable-pitch))
- (((class color)
- (background light))
- (:foreground "brown3" :bold t :height 1.2 :inherit variable-pitch))
- (t (:weight bold :inherit variable-pitch)))
- "Face for AsciiSisu titles at level 1."
- :group 'sisu-faces)
-
-(defface sisu-title-2-face
- `((((class color)
- (background dark))
- (:foreground "yellow4" :bold t :height 1.1 :inherit variable-pitch))
- (((class color)
- (background light))
- (:foreground "yellow4" :bold t :height 1.1 :inherit variable-pitch))
- (t (:weight bold :inherit variable-pitch)))
- "Face for AsciiSisu titles at level 2."
- :group 'sisu-faces)
-
-(defface sisu-title-3-face
- `((((class color)
- (background dark))
- (:foreground "sienna3" :bold t))
- (((class color)
- (background light))
- (:foreground "sienna3" :bold t))
- (t (:weight bold)))
- "Face for AsciiSisu titles at level 3."
- :group 'sisu-faces)
-
-(defface sisu-title-4-face
- `((((class color)
- (background dark))
- (:foreground "burlywood3"))
- (((class color)
- (background light))
- (:foreground "burlywood3"))
- (t ()))
- "Face for AsciiSisu titles at level 4."
- :group 'sisu-faces)
-
-(defface info-node
- '((((class color) (background light)) (:foreground "brown" :bold t :italic t))
- (((class color) (background dark)) (:foreground "white" :bold t :italic t))
- (t (:bold t :italic t)))
- "Face for Info node names."
- :group 'sisu-faces)
-
-(defvar sisu-title-1 'sisu-title-1-face)
-(defvar sisu-title-2 'sisu-title-2-face)
-(defvar sisu-title-3 'sisu-title-3-face)
-(defvar sisu-title-4 'sisu-title-4-face)
-
-(defvar general-font-lock-red1 font-lock-warning-face)
-(defvar general-font-lock-red2 font-lock-comment-face)
-(defvar general-font-lock-red3 font-lock-string-face)
-
-(defvar general-font-lock-green1 font-lock-type-face)
-(defvar general-font-lock-green2 font-lock-constant-face)
-
-(defvar general-font-lock-blue1 font-lock-keyword-face)
-(defvar general-font-lock-blue2 font-lock-function-name-face)
-(defvar general-font-lock-blue3 font-lock-builtin-face)
-
-(defvar general-font-lock-yellow1 font-lock-variable-name-face)
-(defvar general-font-lock-yellow2 font-lock-comment-face)
-
-;; == sisu-mode settings
-
-(defvar sisu-mode-hook nil
- "Normal hook run when entering Sisu Text mode.")
-
-(defvar sisu-mode-abbrev-table nil
- "Abbrev table in use in Sisu-mode buffers.")
-(define-abbrev-table 'sisu-mode-abbrev-table ())
-
-(defconst sisu-font-lock-keywords
- (eval-when-compile
- (list
-
- ;;grouped text
- (cons "^group\{\\|^\}group" 'general-font-lock-red2)
- (cons "^block\{\\|^\}block" 'general-font-lock-red2)
- (cons "^code\{\\|^\}code" 'general-font-lock-red2)
- (cons "^poem\{\\|^\}poem" 'general-font-lock-red2)
- (cons "^alt\{\\|^\}alt" 'general-font-lock-red2)
- (cons "^table\{.+\\|^\}table" 'general-font-lock-red2)
- (cons "^\{table[^}]+\}" 'general-font-lock-red2)
-
- ;; footnote/endnote
- ;(cons "\~\{.+?\}\~" 'general-font-lock-green1)
- (cons "\~\{\\*\\*\\|\~\{\\*\\|\~\{\\|\}\~" 'general-font-lock-red2)
- (cons "\~\\[\\+\\|\~\\[\\*\\|\~\\[\\|\\]\~" 'general-font-lock-red2)
-
- (cons "\~\\^ \\|^\\^\~ " 'general-font-lock-red2)
-
- (list (concat
- "\\(\*\~\\)"
- "\\([^ \r\t\n]+\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-blue2 t))
-
- ;; emphasis (can be program configured to be bold italics or underscore)
- (list (concat
- "\\([*]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[*]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;; bold
- (list (concat
- "\\([!]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[!]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
- (cons "\\*[^ ]+\\*" 'general-font-lock-red1)
- (cons "^!_ .+" 'general-font-lock-red1)
-
- ;;; italics
- (list (concat
- "\\([/]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[/]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-blue1 t)
- '(3 general-font-lock-red1 t))
-
- ;; underscore
- (list (concat
- "\\([_]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[_]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;; monospace
- (list (concat
- "\\([#]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[#]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;; citation
- (list (concat
- "\\([\"]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[\"]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;; inserted text
- (list (concat
- "\\([\+]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[\+]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;; strike through
- (list (concat
- "\\(\\-\{\\)"
- "\\([^\}]+\\)"
- "\\(\}\\-\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;; superscript
- (list (concat
- "\\(\\^\{\\)"
- "\\([^\}]+\\)"
- "\\(\}\\^\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;; subscript
- (list (concat
- "\\([,]\{\\)"
- "\\([^\}]+\\)"
- "\\(\}[,]\\)")
- '(1 general-font-lock-red1 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-red1 t))
-
- ;;numbered list
- (cons "^# \\|^_# " 'general-font-lock-red1)
-
- ;;bullet text
- (cons "^_\\*[1-9] \\|^_\\* " 'general-font-lock-red1)
-
- ;;indented text
- (cons "^_[1-9] " 'general-font-lock-red1)
- (cons "^_[1-9]! " 'general-font-lock-red1)
-
- ;hanging indented text [proposed enable when implemented]
- (cons "^__[1-9] " 'general-font-lock-red1)
- (cons "^_[0-9]_[0-9] " 'general-font-lock-red1)
- (cons "^__[1-9]! " 'general-font-lock-red1)
- (cons "^_[0-9]_[0-9]! " 'general-font-lock-red1)
-
- ;;url
- (cons "\\(^\\|[ ]\\)http:[/][/][^ \t\n\r<]+" 'general-font-lock-blue2)
-
- ;; Comment Lines
- (cons "^% .*" 'general-font-lock-blue1)
-
- ;; line break
- (cons " \\\\\\\\ " 'general-font-lock-red1)
- ;; line break (depreciated)
- (cons "<br>" 'general-font-lock-red1)
-
- ;; Section titles
- (list "^\\(\\([1-8]\\|:?[A-C]\\)\\~\\)\\(.*\\)"
- '(1 sisu-title-1 t)
- '(3 sisu-title-2 t))
-
- ;; hyper-links
- (list (concat
- "\\(\{~^\\|\{\\)"
- "\\([^\}\{]+\\)"
- "\\(\}http:[/][/][^ \r\n\t<]+\\)")
- '(1 general-font-lock-blue2 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-blue2 t))
-
- ;; book index
- (cons "^\=\{.+\}" 'general-font-lock-green1)
-
- ;; numbers
- (cons "\\<[.0-9]+\\>" 'general-font-lock-green2)
-
- ;; bullets sisu_normal (nearly copied regexp)
- (cons "^_\\([1-9*]\\|[1-9]\\*\\) " 'general-font-lock-blue2)
-
- ;; image links
- (list (concat
- "\\(\{\\)"
- "\\([^\}\{]+\\)"
- "\\(\}image\\)")
- '(1 general-font-lock-blue2 t)
- '(2 general-font-lock-red1 t)
- '(3 general-font-lock-blue2 t))
-
- ;; insert file links
- (list (concat
- "\\(<< \\)"
- "\\([^ \r\t\n]+\\.ss\\)"
- "\\(i\\|t\\)")
- '(1 general-font-lock-blue2 t)
- '(2 general-font-lock-blue2 t)
- '(3 general-font-lock-blue2 t))
-
- ;; raw keywords
- (list (concat
- "^\\(\\@\\("
- "title\\|"
- "creator\\|"
- "date\\|"
- "publisher\\|"
- "rights\\|"
- "classify\\|"
- "original\\|"
- "notes\\|"
- "links\\|"
- "make\\|"
- "\\):\\)\\(.*\\)")
- '(1 sisu-title-2 keep)
- '(3 sisu-title-3 keep))
-
- ))
- "Default expressions to highlight in AsciiSisu mode.")
-
-;;}}}
-
-;;{{{ Sisu & Autoload:
-
-;;###autoload
-(define-derived-mode sisu-mode text-mode "SiSU"
- "Major mode for editing SiSU files."
- (interactive)
- (modify-syntax-entry ?\' ".")
- ;(flyspell-mode nil)
-
- (make-local-variable 'paragraph-start)
- (setq paragraph-start (concat "$\\|>" page-delimiter))
- (make-local-variable 'paragraph-separate)
- (setq paragraph-separate paragraph-start)
- (make-local-variable 'paragraph-ignore-fill-prefix)
- (setq paragraph-ignore-fill-prefix t)
-
- (make-local-variable 'require-final-newline)
- (setq require-final-newline t)
-
- (make-local-variable 'font-lock-defaults)
- (setq font-lock-defaults
- '(sisu-font-lock-keywords
- nil ; KEYWORDS-ONLY: no
- nil ; CASE-FOLD: no
- ((?_ . "w")) ; SYNTAX-ALIST
- ))
- (run-hooks 'sisu-mode-hook))
-
-(provide 'sisu-mode)
-
-;;}}}
-
-;;; sisu-mode.el ends here
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/gedit/sisu.lang b/data/sisu/v3dv/conf/editor-syntax-etc/gedit/sisu.lang
deleted file mode 100644
index b82d5f80..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/gedit/sisu.lang
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language _name="SiSU" version="1.0" _section="Markup" mimetypes="text/x-ruby">
-<!-- SiSU syntax highligting for gedit, place in:
- /usr/share/gtksourceview-1.0/language-specs
-or:
- ~/gtksourceview-1.0/language-specs
--->
-
- <syntax-item _name="Header" style="Data Type">
- <start-regex>^0~\S|^\@\S+:\s</start-regex>
- <end-regex>\n\n</end-regex>
- </syntax-item>
-
- <pattern-item _name="Bold" style="Keyword" end-at-line-end = "TRUE">
- <regex>^(:[A-C]|[1-6])~[a-zA-Z0-9.?_-]*\s+.+</regex>
- </pattern-item>
-
- <pattern-item _name="Operators" style="Function">
- <regex>^(!_|_[1-9]|_[1-9]?\*)\s</regex>
- </pattern-item>
-
- <syntax-item _name="Note Function" style="Function">
- <start-regex>~\{</start-regex>
- <end-regex>\}~</end-regex>
- </syntax-item>
-
- <syntax-item _name="Bold Function" style="Function">
- <start-regex>[*]\{</start-regex>
- <end-regex>\}[*]</end-regex>
- </syntax-item>
-
- <syntax-item _name="Exclaim Function" style="Function">
- <start-regex>!\{</start-regex>
- <end-regex>\}!</end-regex>
- </syntax-item>
-
- <syntax-item _name="Italics Function" style="Function">
- <start-regex>/\{</start-regex>
- <end-regex>\}/</end-regex>
- </syntax-item>
-
- <syntax-item _name="Underscore Function" style="Function">
- <start-regex>_\{</start-regex>
- <end-regex>\}_</end-regex>
- </syntax-item>
-
- <syntax-item _name="Supercript Function" style="Function">
- <start-regex>\^{</start-regex>
- <end-regex>\}\^</end-regex>
- </syntax-item>
-
- <syntax-item _name="Subscript Function" style="Function">
- <start-regex>,{</start-regex>
- <end-regex>\},</end-regex>
- </syntax-item>
-
- <syntax-item _name="Added Function" style="Function">
- <start-regex>[+]\{</start-regex>
- <end-regex>\}[+]</end-regex>
- </syntax-item>
-
- <syntax-item _name="Strikethrough Function" style="Function">
- <start-regex>[-]\{</start-regex>
- <end-regex>\}[-]</end-regex>
- </syntax-item>
-
- <pattern-item _name="Bold Single" style="String">
- <regex>[*]\S+[*]</regex>
- </pattern-item>
-
- <pattern-item _name="Link" style="String">
- <regex>\{[^}]+\}(https?:\/\/\S+|image)\s</regex>
- </pattern-item>
-
- <pattern-item _name="Link Internal" style="String">
- <regex>\s\*~\S+</regex>
- </pattern-item>
-
- <pattern-item _name="Url" style="String">
- <regex>http[s]*:\/\/\S+</regex>
- </pattern-item>
-
- <pattern-item _name="Url" style="String">
- <regex>^&lt;&lt;\s+\S+\.ss[ti]</regex>
- </pattern-item>
-
- <line-comment _name="Line Comment" style="Comment">
- <start-regex>^%+\s.</start-regex>
- </line-comment>
-
- <syntax-item _name="Multiline Code" style="Others">
- <start-regex>^code\{\s*$</start-regex>
- <end-regex>^\}code\s*$</end-regex>
- </syntax-item>
-
- <syntax-item _name="Multiline Poem" style="Others">
- <start-regex>^poem\{\s*$</start-regex>
- <end-regex>^\}poem\s*$</end-regex>
- </syntax-item>
-
- <syntax-item _name="Multiline Group" style="Others">
- <start-regex>^group\{\s*$</start-regex>
- <end-regex>^\}group\s*$</end-regex>
- </syntax-item>
-
- <syntax-item _name="Multiline Alt" style="Others">
- <start-regex>^alt\{\s*$</start-regex>
- <end-regex>^\}alt\s*$</end-regex>
- </syntax-item>
-
- <pattern-item _name="Page Break" style="Others 2" end-at-line-end = "TRUE">
- <regex>&lt;:(pb|np)&gt;</regex>
- </pattern-item>
-
- <pattern-item _name="Line Break" style="Others 2" end-at-line-end = "TRUE">
- <regex>&lt;:?br&gt;</regex>
- </pattern-item>
-
- <pattern-item _name="Footnote Reference" style="Others" end-at-line-end = "TRUE">
- <regex>~\^(\s|$)</regex>
- </pattern-item>
-
- <pattern-item _name="Footnote Content" style="Others" end-at-line-end = "TRUE">
- <regex>^\^~\s.+</regex>
- </pattern-item>
-
-</language>
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/kate/sisu.xml b/data/sisu/v3dv/conf/editor-syntax-etc/kate/sisu.xml
deleted file mode 100644
index a8054f2d..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/kate/sisu.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="SiSU" version="1.00" section="Markup" kateversion="2.4" extensions="*.sst; *.ssm; *.ssi; *._sst; *.-sst;" author="Ralph Amissah (ralph.amissah@gmail.com)" license="LGPL" >
- <highlighting>
- <list name="somename">
- <item> class </item>
- <item> const </item>
- </list>
- <contexts>
- <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
- <StringDetect String="&lt;br&gt;" attribute="Break" context="#pop" />
- <RegExpr String="\s+$" attribute="Warn" context="#pop" />
- <RegExpr String="&lt;\S+&gt;" attribute="Warn" context="#pop" />
- <RegExpr String="&lt;a href=\S+&gt;" attribute="Warn" context="#pop" />
- <RegExpr String="&lt;a href=" attribute="Warn" context="#pop" />
- <RegExpr String="&lt;/a&gt;" attribute="Warn" context="#pop" />
- <RegExpr String="&lt;https?:\/\/\S+&gt;" attribute="Warn" context="#pop"/>
- <RegExpr String="&gt;https?:\/\/\S+" attribute="Warn" context="#pop"/>
- <RegExpr String="^&lt;&lt;\s+[a-zA-Z._]+\.ss[it]" attribute="Link" context="#pop"/>
- <RegExpr String="^&lt;&lt;\{\s*[a-zA-Z._]+\.ss[it]\s*\}" attribute="Link" context="#pop"/>
- <RegExpr String="&lt;&lt;\s+&#124;" attribute="Link" context="#pop"/>
- <RegExpr String="https?:\/\/\S+&lt;" attribute="Warn" context="#pop"/>
- <keyword attribute="Keyword" context="#stay" String="somename" />
- <DetectChar attribute="String" context="string" char="&quot;" />
- <RegExpr String="^(0~\S+|@\S+)\s.+$" attribute="Header" context="#pop" />
- <RegExpr String="^:?[A-C1-9]~.+$" attribute="Heading" context="#pop" />
- <StringDetect String="~{" attribute="Endnote" context="footnote"/>
- <StringDetect String="^~" attribute="Endnote" context="endnote"/>
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- <RegExpr String="\{[\s\S]+\}https?:\/\/\S+(\s|$)" attribute="Link" context="#pop" minimal="true" />
- <RegExpr String="\{[\s\S]+\}\.\.\/\S+(\s|$)" attribute="Link" context="#stay" minimal="true" />
- <RegExpr String="\{[\s\S]+\}image(\s|$)" attribute="Link" context="#stay" minimal="true" />
- <RegExpr String="\s_?https?:\/\/\S+" attribute="Link" context="#stay"/>
- <RegExpr String="^_?https?:\/\/\S+" attribute="Link" context="#stay"/>
- <RegExpr String="^!_ .+" attribute="Bold" context="boldline"/>
- <RegExpr String="^(_[1-9]|_\*|_[1-9]\*)\s" attribute="Indent" context="#stay"/>
- <RegExpr String="~\^" attribute="Endnote" context="#stay"/>
- <RegExpr String="^%+\s.+$" attribute="Comment" context="#stay" endRegion="regionMarker" firstNonSpace="true" />
- </context>
- <context attribute="String" lineEndContext="#stay" name="string" >
- <DetectChar attribute="String" context="#pop" char="&quot;" />
- </context>
- <context attribute="Endnote" lineEndContext="#stay" name="footnote" >
- <StringDetect attribute="Endnote" context="#pop" String="}~" />
- <RegExpr String="\{[\s\S]+\}https?:\/\/\S+(\s|$)" attribute="Link" context="#pop" minimal="true" />
- <RegExpr String="\{[\s\S]+\}\.\.\/\S+(\s|$)" attribute="Link" context="#stay" minimal="true" />
- <RegExpr String="\{[\s\S]+\}image(\s|$)" attribute="Link" context="#stay" minimal="true" />
- <RegExpr String="\s_?https?:\/\/\S+" attribute="Link" context="#stay"/>
- <RegExpr String="^_?https?:\/\/\S+" attribute="Link" context="#stay"/>
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Bold" lineEndContext="#stay" name="bold" >
- <StringDetect attribute="Bold" context="#pop" String="}*" />
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Bold" lineEndContext="#stay" name="emphasis" >
- <StringDetect attribute="Bold" context="#pop" String="}!" />
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Italic" lineEndContext="#stay" name="italic" >
- <StringDetect attribute="Italic" context="#pop" String="}/" />
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Underscore" lineEndContext="#stay" name="underscore" >
- <StringDetect attribute="Underscore" context="#pop" String="}_" />
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Superscript" lineEndContext="#stay" name="superscript" >
- <StringDetect attribute="Superscript" context="#pop" String="}^" />
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Subscript" lineEndContext="#stay" name="subscript" >
- <StringDetect attribute="Subscript" context="#pop" String="}," />
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Strike" lineEndContext="#stay" name="strike" >
- <StringDetect attribute="Strike" context="#pop" String="}-" />
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="+{" attribute="Insert" context="insert"/>
- </context>
- <context attribute="Insert" lineEndContext="#stay" name="insert" >
- <StringDetect attribute="Insert" context="#pop" String="}+" />
- <StringDetect String="!{" attribute="Bold" context="emphasis"/>
- <StringDetect String="*{" attribute="Bold" context="bold"/>
- <StringDetect String="/{" attribute="Italic" context="italic"/>
- <StringDetect String="_{" attribute="Underscore" context="underscore"/>
- <StringDetect String="^{" attribute="Superscript" context="superscript"/>
- <StringDetect String=",{" attribute="Subscript" context="subscript"/>
- <StringDetect String="-{" attribute="Strike" context="strike"/>
- </context>
- <context attribute="Endnote" lineEndContext="#pop" name="endnote" />
- <context attribute="Bold" lineEndContext="#pop" name="boldline" />
- <context attribute="Indent" lineEndContext="#pop" name="indent" />
- <context attribute="Warn" lineEndContext="#pop" name="warn" />
- </contexts>
- <itemDatas>
- <itemData name="Normal Text" defStyleNum="dsNormal" />
- <itemData name="Header" defStyleNum="dsNormal" color="#1c869b" selColor="#60FFFF" bold="0" italic="0"/>
- <itemData name="Heading" defStyleNum="dsNormal" color="#ff0000" selColor="#60FFFF" bold="1" italic="0"/>
- <itemData name="Bold" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="1" italic="0"/>
- <itemData name="Italic" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="0" italic="1"/>
- <itemData name="Underscore" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
- <itemData name="Superscript" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
- <itemData name="Subscript" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
- <itemData name="Strike" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
- <itemData name="Insert" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
- <itemData name="Keyword" defStyleNum="dsKeyword" />
- <itemData name="Endnote" defStyleNum="dsNormal" color="#0AAA00" selColor="#60FFFF" bold="0" italic="0"/>
- <itemData name="Link" defStyleNum="dsNormal" color="#0000FF" selColor="#60FFFF" bold="0" italic="0"/>
- <itemData name="String" defStyleNum="dsString" />
- <itemData name="Comment" defStyleNum="dsComment"/>
- <itemData name="Group" defStyleNum="dsRegionMarker"/>
- <itemData name="Break" defStyleNum="dsNormal" color="#FF0000" selColor="#60FFFF" bold="0" italic="0"/>
- <itemData name="Indent" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
- <itemData name="Structure" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
- <itemData name="Warn" defStyleNum="dsError" color="#FF00FF" selColor="#000000" bold="1" italic="0"/>
- </itemDatas>
- </highlighting>
- <general>
- <keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
- <comments>
- <comment name="singleLine" start="%" />
- </comments>
- </general>
-</language>
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/nano/nanorc b/data/sisu/v3dv/conf/editor-syntax-etc/nano/nanorc
deleted file mode 100644
index 30ba439c..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/nano/nanorc
+++ /dev/null
@@ -1,221 +0,0 @@
-## Sample initialization file for GNU nano
-## Please note that you must have configured nano with --enable-nanorc
-## for this file to be read! Also note that characters specially
-## interpreted by the shell should not be escaped here.
-##
-## To make sure a value is not enabled, use "unset <option>"
-##
-## For the options that take parameters, the default value is given.
-## Other options are unset by default.
-
-## Use auto-indentation.
-# set autoindent
-
-## Backup files to filename~.
-# set backup
-
-## The directory to put unique backup files in.
-# set backupdir ""
-
-## Do backwards searches by default.
-# set backwards
-
-## The characters treated as closing brackets. They cannot contain
-## blank characters. Only closing punctuation, optionally followed by
-## closing brackets, can end sentences.
-##
-# set brackets "'")}]>"
-
-## Do case sensitive searches by default.
-# set casesensitive
-
-## Constantly display the cursor position in the statusbar. Note that
-## this cancels out "quickblank".
-# set const
-
-## Use cut to end of line by default.
-# set cut
-
-## Set the line length for wrapping text and justifying paragraphs.
-## If fill is 0 or less, the line length will be the screen width less
-## this number.
-##
-# set fill -8
-
-## Enable ~/.nano_history for saving and reading search/replace strings.
-# set historylog
-
-## Use the blank line below the titlebar as extra editing space.
-# set morespace
-
-## Enable mouse support, so that mouse clicks can be used to set the
-## mark and run shortcuts.
-# set mouse
-
-## Allow multiple file buffers (inserting a file will put it into a
-## separate buffer). You must have configured with --enable-multibuffer
-## for this to work.
-##
-# set multibuffer
-
-## Don't convert files from DOS/Mac format.
-# set noconvert
-
-## Don't follow symlinks when writing files.
-# set nofollow
-
-## Don't display the helpful shortcut lists at the bottom of the screen.
-# set nohelp
-
-## Don't wrap text at all.
-# set nowrap
-
-## Set operating directory. nano will not read or write files outside
-## this directory and its subdirectories. Also, the current directory
-## is changed to here, so files are inserted from this dir. A blank
-## string means the operating directory feature is turned off.
-##
-# set operatingdir ""
-
-## Preserve the XON and XOFF keys (^Q and ^S).
-# set preserve
-
-## The characters treated as closing punctuation. They cannot contain
-## blank characters. Only closing punctuation, optionally followed by
-## closing brackets, can end sentences.
-##
-# set punct ".?!"
-
-## Do quick statusbar blanking. Statusbar messages will disappear after
-## 1 keystroke instead of 25. Note that "const" cancels this out.
-##
-# set quickblank
-
-## The email-quote string, used to justify email-quoted paragraphs.
-## This is an extended regular expression if your system supports them,
-## otherwise a literal string. Default:
-# set quotestr "^([ ]*[\|>:}#])+"
-## if you have regexps, otherwise:
-# set quotestr "> "
-## You can get old nano quoted-justify behavior via:
-# set quotestr "(> )+"
-
-## Fix Backspace/Delete confusion problem.
-# set rebinddelete
-
-## Do extended regular expression searches by default.
-# set regexp
-
-## Make the Home key smarter. When Home is pressed anywhere but at the
-## very beginning of non-whitespace characters on a line, the cursor
-## will jump to that beginning (either forwards or backwards). If the
-## cursor is already at that position, it will jump to the true
-## beginning of the line.
-# set smarthome
-
-## Use smooth scrolling as the default.
-# set smooth
-
-## Use this spelling checker instead of the internal one. This option
-## does not properly have a default value.
-##
-# set speller "aspell -x -c"
-
-## Allow nano to be suspended.
-# set suspend
-
-## Use this tab size instead of the default; it must be greater than 0.
-# set tabsize 8
-
-## Convert typed tabs to spaces.
-# set tabstospaces
-
-## Save automatically on exit, don't prompt.
-# set tempfile
-
-## Disallow file modification; why would you want this in an rcfile? ;)
-# set view
-
-## The two single-column characters used to display the first characters
-## of tabs and spaces. 187 decimal (00BB hexadecimal) and 183 decimal
-## (00B7 hexadecimal) seem to be good values for these.
-# set whitespace " "
-
-## Color setup
-##
-## Format:
-##
-## syntax "short description" ["filename regex" ...]
-##
-## color foreground,background "regex" ["regex"...]
-## or
-## icolor foreground,background "regex" ["regex"...]
-##
-## "color" will do case sensitive matches, while "icolor" will do case
-## insensitive matches.
-##
-## Legal colors: white, black, red, blue, green, yellow, magenta, cyan.
-## You may use the prefix "bright" to mean a stronger color highlight
-## for the foreground.
-##
-## To use multi-line regexes, use the start="regex" end="regex" format.
-##
-## If your system supports transparency, not specifying a background
-## color will use a transparent color. If you don't want this, be sure
-## to set the background color to black or white.
-##
-# syntax "c-file" "\.(c|C|cc|cpp|cxx|h|H|hh|hpp|hxx)$"
-# color red "\<[A-Z_]{2,}\>"
-# color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|signed|unsigned|inline)\>"
-# color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
-# color brightyellow "\<(for|if|while|do|else|case|default|switch|goto|continue|break|return)\>"
-# color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
-# color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
-# color brightmagenta "'([^\]|(\\['abfnrtv\\]))'" "'\\(([0-7][0-7]?)|([0-3][0-7][0-7]))'" "'\\x[0-9A-Fa-f][0-9A-Fa-f]?'"
-## color foreground,background "regex" ["regex"...]
-##
-#% sisu
-syntax "sisu" "\.ss[tmi]$"
-#color white,black ".*"
-color cyan start="^0~" end="^$"
-color cyan start="^@\S+:" end="^$"
-#color cyan "^0~.*"
-color brightyellow "^[1-6]~.*"
-color brightyellow "^:?[A-C]~.*"
-icolor brightwhite "^(Chapter|Part|Section|Book|Article|Preamble|Appendix)\s.*"
-color brightyellow "^!_\s.*"
-color brightyellow "[!*]\{.+?\}[!*]"
-color yellow "[/_+-^,]\{.+?\}[/_+-^,]"
-color green "~\{.+?\}~"
-color green "~\^(\s|$)"
-color green "^\^~\s.+"
-#color green start="~\{" end="\}~"
-color yellow "\{.+?\}http:\/\/\S+"
-color brightblue "http:\/\/\S+"
-color brightblue "^<<\s\S+?\.ss[it]"
-color yellow "^(_[12]?\*|_[12])"
-color magenta "^%+\s+.*"
-color green start="^poem\{$" end="^\}poem$"
-color green start="^code\{$" end="^\}code$"
-color green start="^group\{$" end="^\}group$"
-color green start="^alt\{$" end="^\}alt$"
-color magenta "<:(pb|np)>"
-color magenta "<(\/\s*)?br>"
-color magenta "[a-zA-Z0-9,.::?!&]+http:\/\/\S+"
-
-# .nanorc
-#
- syntax "nanorc" "(\.|/|)nanorc$"
-# highlight possible errors and parameters
- icolor brightwhite "^[[:space:]]*(set|unset|syntax|i?color).*$"
-# set, unset and syntax
- icolor cyan "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|backupdir|backwards|brackets|casesensitive|const|cut|fill|historylog|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nowrap|operatingdir|preserve|punct|quickblank|quotestr|rebinddelete)\>" "^[[:space:]]*(set|unset)[[:space:]]+(regexp|smarthome|smooth|speller|suspend|tabsize|tabstospaces|tempfile|view|whitespace)\>"
- icolor green "^[[:space:]]*(set|unset|syntax)\>"
-# colors
- icolor yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"
- icolor magenta "^[[:space:]]*i?color\>" "\<(start|end)="
-# strings
- icolor white "\"(\\.|[^\"])*\""
-# comments
- icolor blue "^[[:space:]]*#.*$"
-
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/nedit/sisu_nedit.pats b/data/sisu/v3dv/conf/editor-syntax-etc/nedit/sisu_nedit.pats
deleted file mode 100644
index ef01b2be..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/nedit/sisu_nedit.pats
+++ /dev/null
@@ -1,79 +0,0 @@
-! Nedit Syntax highlighting patterns and commenting for SiSU
-! Version 0.1
-!
-! INSTALLATION
-!
-! Load this pattern by starting nedit with:
-!
-! nedit -import <name of this file>
-!
-! Then, check that the patterns were loaded correctly, and choose Save Defaults
-! from the Preferences menu. The new patterns will now be incorporated into
-! your own .nedit file, so the next time you start NEdit, you will no longer
-! need to use -import.
-!
-! These comments will not appear in your ~/.nedit
-!
-nedit.macroCommands: \
- SiSU Comments>Comment Out Lines@SiSU:::R: {\n\
- replace_in_selection("^.*$", "%+ &", "regex")\n\
- }\n\
- SiSU Comments>Uncomment Lines@SiSU:::R: {\n\
- replace_in_selection("(^[ \\\\t]*# ?)(.*)$", "\\\\2", "regex")\n\
- }\n\
- SiSU Comments>Comment Out Sel.@SiSU:::R: {\n\
- beginning-of-selection()\n\
- mark("1")\n\
- deselect-all()\n\
- insert-string("=begin\\n")\n\
- goto-mark("1")\n\
- beginning-of-selection()\n\
- backward-character("extend")\n\
- backward-character("extend")\n\
- backward-character("extend")\n\
- backward-character("extend")\n\
- backward-character("extend")\n\
- backward-character("extend")\n\
- backward-character("extend")\n\
- mark("1")\n\
- end-of-selection()\n\
- deselect-all()\n\
- insert-string("\\n=end")\n\
- goto-mark("1")\n\
- }\n\
- SiSU Comments>Uncomment Sel.@SiSU:::R: {\n\
- beginning-of-selection()\n\
- mark("1")\n\
- deselect-all()\n\
- replace("=begin\\n","")\n\
- goto-mark("1")\n\
- deselect-all()\n\
- replace("\\n=end","","backward")\n\
- goto-mark("1")\n\
- }\n
-nedit.highlightPatterns: SiSU:1:0{\n\
- comment:"^%+ ":"$"::Comment::\n\
- endnote1:"~\\^(\s|$)":::Keyword::D\n\
- endnote2:"^\\^~ ":"$"::Comment::\n\
- header:"^0~|@\S+:\s":"$"::Keyword::\n\
- bold_line:"^!_ ":"$"::Keyword::\n\
- heading:"^[1-9]~":"$"::Keyword::\n\
- code_block:"^code\\{":"^\\}code"::Comment::\n\
- poem_block:"^poem\\{":"^\\}poem"::Comment::\n\
- group_block:"^group\\{":"^\\}group"::Comment::\n\
- alt_block:"^alt\\{":"^\\}alt"::Comment::\n\
- endnote:"~\\{":"\\}~":"\\n":String::\n\
- string2:"'":"'":"\\n":String1::\n\
- string escape chars:"\\\\(.|\\n)":::String1:endnote:\n\
- character constant:"'":"'":"[^\\\\][^']":Character Const::\n\
- numeric constant:"<((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?>":::Plain::D\n\
- storage keyword:"<(class)>":::Storage Type::D\n\
- line:"^(_[1-9]|_\\*|_[1-9]\\*)":::Keyword::D\n\
- link:"[{}](http://[a-zA-Z0-9?.!+\\-_/&=#]+)?":::Keyword::D\n\
- url:"http://[a-zA-Z0-9?.!+\\-_/&=#]+":::Keyword::D\n\
- }
-! endnote:"~\\{":"\\}~"::Keyword::\n\
-! link:"\\{":"\\}http://\S+"::Keyword::D\n\
-nedit.languageModes: SiSU:.sst::::::".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~"
-! nedit.languageModes: SiSU:.sst::::::".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~"
-! nedit.languageModes: SiSU:.ss[tmi]::::::
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/8.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/8.vim
deleted file mode 100644
index 46d618f3..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/8.vim
+++ /dev/null
@@ -1,65 +0,0 @@
-" Vim color file
-" Name: 8
-" Maintainer: Ralph Amissah <ralph@amissah.com>
-" Last Change: 2011-06-26
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/colors/8.vim;hb=HEAD>
-" Note: 8 color cterm, related colorschemes frugal & sparse
-:set background=dark
-:hi clear
-if exists("syntax_on")
- syntax reset
-endif
-:let colors_name = "8"
-" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white
-:hi Normal ctermbg=0 ctermfg=7
-:hi Cursor term=reverse cterm=reverse
-:hi lCursor term=reverse cterm=reverse
-:hi StatusLine term=bold,reverse cterm=bold,reverse
-:hi StatusLineNC term=reverse cterm=reverse
-:hi Search term=reverse cterm=none ctermbg=2 ctermfg=0
-:hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7
-:hi SpecialKey term=bold ctermfg=4
-:hi Visual term=reverse cterm=reverse
-:hi VisualNOS term=bold,underline cterm=bold,underline
-:hi MoreMsg term=bold ctermfg=2
-:hi ModeMsg term=bold cterm=bold
-:hi Question term=standout ctermfg=2
-:hi Title term=bold ctermfg=1
-:hi NonText term=bold cterm=bold ctermfg=4
-:hi LineNr term=underline cterm=none ctermbg=7 ctermfg=0
-:hi Directory term=bold ctermfg=4
-:hi WildMenu term=standout ctermbg=3 ctermfg=0
-:hi VertSplit term=reverse cterm=reverse
-:hi Folded term=standout cterm=none ctermbg=0 ctermfg=7
-:hi FoldColumn term=standout ctermbg=7 ctermfg=4
-:hi DiffChange cterm=none ctermbg=7 ctermfg=0
-:hi DiffText cterm=none ctermbg=6 ctermfg=0
-:hi DiffAdd cterm=none ctermbg=2 ctermfg=0
-:hi DiffDelete cterm=none ctermbg=7 ctermfg=0
-:hi String cterm=none ctermfg=3
-:hi Comment cterm=none ctermbg=0 ctermfg=4
-:hi Constant term=underline ctermfg=1
-:hi Special term=bold ctermfg=3
-:hi Identifier term=underline cterm=none ctermfg=6
-:hi Statement term=bold cterm=none ctermfg=2
-":hi Operator term=bold ctermfg=1
-:hi PreProc term=underline ctermfg=1
-:hi Type term=underline cterm=bold ctermfg=3
-:hi Delimiter cterm=none ctermfg=2
-:hi Ignore cterm=bold ctermfg=7
-:hi Todo term=standout ctermbg=3 ctermfg=0
-:hi Underlined term=underline cterm=underline
-":hi Include ctermfg=1
-":hi Define ctermfg=3
-":hi Function ctermfg=6
-":hi Structure ctermfg=2
-:hi MatchParen cterm=bold ctermbg=4 ctermfg=7
-:hi CursorLine cterm=bold,underline
-:hi CursorColumn cterm=bold,underline
-:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi WarningMsg term=standout ctermfg=1
-:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7
-:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-ruby.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-ruby.vim
deleted file mode 100644
index aad6de0f..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-ruby.vim
+++ /dev/null
@@ -1,65 +0,0 @@
-" Vim color file
-" Name: frugal-cterm-ruby
-" Maintainer: Ralph Amissah <ralph@amissah.com>
-" Last Change: 2011-06-26
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/colors/frugal-cterm-ruby.vim;hb=HEAD>
-" Note: 8 color cterm, related colorschemes 8 & sparse
-:set background=dark
-:hi clear
-if exists("syntax_on")
- syntax reset
-endif
-:let colors_name = "frugal-cterm-ruby"
-" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white
-:hi Normal ctermbg=0 ctermfg=7
-:hi Cursor term=reverse cterm=reverse
-:hi lCursor term=reverse cterm=reverse
-:hi StatusLine term=reverse cterm=reverse
-:hi StatusLineNC term=reverse cterm=reverse
-:hi Search term=reverse cterm=none ctermbg=2 ctermfg=0
-:hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7
-:hi SpecialKey term=bold ctermfg=4
-:hi Visual term=reverse cterm=reverse
-:hi VisualNOS term=bold,underline cterm=bold,underline
-:hi MoreMsg term=bold ctermfg=2
-:hi ModeMsg term=bold cterm=bold
-:hi Question term=standout ctermfg=2
-:hi Title term=bold ctermfg=1
-:hi NonText term=bold cterm=bold ctermfg=4
-:hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0*
-:hi Directory term=bold ctermfg=4
-:hi WildMenu term=standout ctermbg=3 ctermfg=0
-:hi VertSplit term=reverse cterm=reverse
-:hi Folded term=standout cterm=none ctermbg=0 ctermfg=7
-:hi FoldColumn term=standout ctermbg=7 ctermfg=4
-:hi DiffChange cterm=none ctermbg=7 ctermfg=0
-:hi DiffText cterm=none ctermbg=6 ctermfg=0
-:hi DiffAdd cterm=none ctermbg=2 ctermfg=0
-:hi DiffDelete cterm=none ctermbg=7 ctermfg=0
-:hi String cterm=none ctermfg=3
-:hi Comment cterm=bold ctermbg=0 ctermfg=4
-:hi Constant term=underline ctermfg=1
-:hi Special term=bold ctermfg=6
-:hi Identifier term=underline cterm=none ctermfg=6
-:hi Statement term=bold cterm=none ctermfg=2
-":hi Operator term=bold ctermfg=1
-:hi PreProc term=underline ctermfg=1
-:hi Type term=underline cterm=bold ctermfg=3
-:hi Delimiter cterm=none ctermfg=2
-:hi Ignore cterm=bold ctermfg=7
-:hi Todo term=standout ctermbg=3 ctermfg=0
-:hi Underlined term=underline cterm=underline
-":hi Include ctermfg=1
-":hi Define ctermfg=3
-":hi Function ctermfg=6
-":hi Structure ctermfg=2
-:hi MatchParen cterm=bold ctermbg=4 ctermfg=7
-:hi CursorLine cterm=bold,underline
-:hi CursorColumn cterm=bold,underline
-:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi WarningMsg term=standout ctermfg=1
-:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7
-:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim
deleted file mode 100644
index 03f192df..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim
+++ /dev/null
@@ -1,65 +0,0 @@
-" Vim color file
-" Name: frugal-cterm-sisu
-" Maintainer: Ralph Amissah <ralph@amissah.com>
-" Last Change: 2011-06-26
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim;hb=HEAD>
-" Note: 8 color cterm, related colorschemes 8 & sparse
-:set background=dark
-:hi clear
-if exists("syntax_on")
- syntax reset
-endif
-:let colors_name = "frugal-cterm-sisu"
-" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white
-:hi Normal ctermbg=0 ctermfg=7
-:hi Cursor term=reverse cterm=reverse
-:hi lCursor term=reverse cterm=reverse
-:hi StatusLine term=reverse cterm=bold,reverse
-:hi StatusLineNC term=reverse cterm=reverse
-:hi Search term=reverse cterm=none ctermbg=2 ctermfg=0
-:hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7
-:hi SpecialKey term=bold ctermfg=4
-:hi Visual term=reverse cterm=reverse
-:hi VisualNOS term=bold,underline cterm=bold,underline
-:hi MoreMsg term=bold ctermfg=2
-:hi ModeMsg term=bold cterm=bold
-:hi Question term=standout ctermfg=2
-:hi Title term=bold cterm=bold ctermfg=3
-:hi NonText term=bold cterm=bold ctermfg=4
-:hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0*
-:hi Directory term=bold ctermfg=4
-:hi WildMenu term=standout ctermbg=3 ctermfg=0
-:hi VertSplit term=reverse cterm=reverse
-:hi Folded term=standout cterm=none ctermbg=0 ctermfg=7
-:hi FoldColumn term=standout ctermbg=7 ctermfg=4
-:hi DiffChange cterm=none ctermbg=7 ctermfg=0
-:hi DiffText cterm=none ctermbg=6 ctermfg=0
-:hi DiffAdd cterm=none ctermbg=2 ctermfg=0
-:hi DiffDelete cterm=none ctermbg=7 ctermfg=0
-:hi String cterm=none ctermfg=3
-:hi Comment term=bold cterm=none ctermbg=0 ctermfg=7
-:hi Constant term=underline ctermfg=1
-:hi Special term=bold ctermfg=6
-:hi Identifier term=underline ctermfg=6
-:hi Statement term=bold ctermfg=6
-:hi Operator term=bold ctermfg=1
-:hi PreProc term=underline ctermbg=7 ctermfg=1
-:hi Type term=underline ctermfg=2
-:hi Delimiter term=none cterm=none ctermfg=1
-:hi Ignore cterm=bold ctermfg=7
-:hi Todo term=standout ctermbg=3 ctermfg=0
-:hi Underlined term=underline cterm=underline
-:hi Include ctermfg=1
-:hi Define ctermfg=3
-:hi Function ctermfg=6
-:hi Structure ctermfg=2
-:hi MatchParen cterm=bold ctermbg=4 ctermfg=7
-:hi CursorLine cterm=bold,underline
-:hi CursorColumn cterm=bold,underline
-:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi WarningMsg term=standout ctermfg=1
-:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7
-:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal.vim
deleted file mode 100644
index 1ff26a58..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/frugal.vim
+++ /dev/null
@@ -1,65 +0,0 @@
-" Vim color file
-" Name: frugal
-" Maintainer: Ralph Amissah <ralph@amissah.com>
-" Last Change: 2011-06-26
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/colors/frugal.vim;hb=HEAD>
-" Note: 8 color cterm, related colorschemes 8 & sparse
-:set background=dark
-:hi clear
-if exists("syntax_on")
- syntax reset
-endif
-:let colors_name = "frugal"
-" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white
-:hi Normal ctermbg=0 ctermfg=7 guibg=black guifg=white
-:hi Cursor term=reverse cterm=reverse gui=bold guibg=white guifg=black
-:hi lCursor term=reverse cterm=reverse gui=bold guibg=white guifg=black
-:hi StatusLine term=bold,reverse cterm=bold,reverse gui=bold,reverse
-:hi StatusLineNC term=reverse cterm=reverse gui=reverse
-:hi Search term=reverse ctermbg=2 guifg=green
-:hi IncSearch term=reverse cterm=reverse gui=reverse
-:hi SpecialKey term=bold ctermfg=4 guifg=blue
-:hi Visual term=reverse cterm=reverse gui=reverse
-:hi VisualNOS term=bold,underline cterm=bold,underline gui=bold,underline
-:hi MoreMsg term=bold ctermfg=2 guifg=green
-:hi ModeMsg term=bold cterm=bold
-:hi Question term=standout ctermfg=2 guifg=green
-:hi Title term=bold ctermfg=1 guifg=red
-:hi NonText term=bold cterm=bold ctermfg=4 guifg=blue
-:hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0* gui=bold guibg=black guifg=grey
-:hi Directory term=bold ctermfg=4 guifg=blue
-:hi WildMenu term=standout ctermbg=3 ctermfg=0 guibg=yellow guifg=black
-:hi VertSplit term=reverse cterm=reverse gui=reverse
-:hi Folded term=standout cterm=none ctermbg=0 ctermfg=7 gui=none guibg=black guifg=white
-:hi FoldColumn term=standout ctermbg=7 ctermfg=4
-:hi DiffChange cterm=none ctermbg=7 ctermfg=0 gui=none guibg=white guifg=black
-:hi DiffText cterm=none ctermbg=6 ctermfg=0 gui=none guibg=magenta guifg=black
-:hi DiffAdd cterm=none ctermbg=2 ctermfg=0 gui=none guibg=green guifg=black
-:hi DiffDelete cterm=none ctermbg=7 ctermfg=0 gui=none guibg=white guifg=black
-:hi String cterm=none ctermfg=3 gui=none guifg=yellow
-:hi Comment cterm=none ctermbg=0 ctermfg=4 gui=bold guibg=black guifg=grey
-:hi Constant term=underline ctermfg=1 guifg=red
-:hi Special term=bold ctermfg=3 guifg=yellow
-:hi Identifier term=underline cterm=none ctermfg=6 gui=none guifg=magenta
-:hi Statement term=bold cterm=none ctermfg=2 gui=none guifg=green
-":hi Operator term=bold ctermfg=1 guifg=red
-:hi PreProc term=underline ctermfg=1 guifg=red
-:hi Type term=underline cterm=bold ctermfg=3 gui=bold guifg=yellow
-:hi Delimiter cterm=none ctermfg=2 gui=none guifg=green
-:hi Ignore cterm=bold ctermfg=7 gui=bold guifg=white
-:hi Todo term=standout ctermbg=3 ctermfg=0 guibg=yellow guifg=black
-:hi Underlined term=underline cterm=underline gui=underline
-":hi Include ctermfg=1 guifg=red
-":hi Define ctermfg=3 guifg=yellow
-":hi Function ctermfg=6 guifg=magenta
-":hi Structure ctermfg=2 guifg=green
-:hi MatchParen cterm=bold ctermbg=4 ctermfg=7
-:hi CursorLine cterm=bold,underline
-:hi CursorColumn cterm=bold,underline
-:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=white guifg=black
-:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=white guifg=black
-:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=white guifg=black
-:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=white guifg=black
-:hi WarningMsg term=standout ctermfg=1 guifg=red
-:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7 gui=bold guibg=red guifg=white
-:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7 gui=bold guibg=red guifg=white
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/slate.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/slate.vim
deleted file mode 100644
index 238b27df..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/slate.vim
+++ /dev/null
@@ -1,75 +0,0 @@
-"%% SiSU Vim color file
-" Name: Slate
-" Maintainer: Ralph Amissah <ralph@amissah.com>
-" Last Change: 2011-06-26
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/colors/slate.vim;hb=HEAD>
-" Notes: cterm now uses frugal-sisu 8 colors for term
-" (for gui originally looked at desert Hans Fugal <hans@fugal.net>
-" <http://hans.fugal.net/vim/colors/desert.vim> (April/May 2003))
-:set background=dark
-:hi clear
-if exists("syntax_on")
- syntax reset
-endif
-:let colors_name = "slate"
-" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white
-:hi Normal ctermbg=0 ctermfg=7 guibg=grey15 guifg=white
-:hi Cursor term=reverse cterm=reverse guibg=khaki guifg=slategrey
-:hi lCursor term=reverse cterm=reverse
-:hi StatusLine term=reverse cterm=bold,reverse gui=none guibg=#c2bfa5 guifg=black
-:hi StatusLineNC term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40
-:hi Search term=reverse cterm=none ctermbg=2 ctermfg=0 guibg=peru guifg=wheat
-:hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7 guibg=black guifg=green
-:hi SpecialKey term=bold ctermfg=4 guifg=yellowgreen
-:hi Visual term=reverse cterm=reverse gui=none guibg=olivedrab guifg=khaki
-:hi VisualNOS term=bold,underline cterm=bold,underline
-:hi MoreMsg term=bold ctermfg=2 guifg=SeaGreen
-:hi ModeMsg term=bold cterm=bold guifg=goldenrod
-:hi Question term=standout ctermfg=2 guifg=springgreen
-:hi Title term=bold cterm=bold ctermfg=3 gui=bold guifg=gold
-:hi NonText term=bold cterm=bold ctermfg=4 guibg=grey15 guifg=RoyalBlue
-:hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0* guifg=grey50
-:hi Directory term=bold ctermfg=4
-:hi WildMenu term=standout ctermbg=3 ctermfg=0 guibg=darkyellow guifg=black
-:hi VertSplit term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40
-:hi Folded term=standout cterm=none ctermbg=0 ctermfg=7 guibg=black guifg=grey40
-:hi FoldColumn term=standout ctermbg=7 ctermfg=4 guibg=black guifg=grey20
-:hi DiffChange cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=white
-:hi DiffText cterm=none ctermbg=6 ctermfg=0 guibg=darkcyan guifg=white
-:hi DiffAdd cterm=none ctermbg=2 ctermfg=0 guibg=darkgreen guifg=white
-:hi DiffDelete cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=black
-:hi String cterm=none ctermfg=3 guifg=SkyBlue
-:hi Comment term=bold cterm=none ctermbg=0 ctermfg=7 guifg=grey40
-:hi Constant term=underline ctermfg=1 guifg=#ffa0a0
-:hi Special term=bold ctermfg=6 guifg=darkkhaki
-:hi Identifier term=underline ctermfg=6 guifg=salmon
-:hi Statement term=bold ctermfg=6 guifg=CornflowerBlue
-:hi Operator term=bold ctermfg=1 guifg=red
-:hi PreProc term=underline ctermbg=7 ctermfg=1 guibg=white guifg=red
-:hi Type term=underline ctermfg=2 guifg=CornflowerBlue
-:hi Delimiter term=none cterm=none ctermfg=1
-:hi Ignore cterm=bold ctermfg=7 guifg=grey40
-:hi Todo term=standout ctermbg=3 ctermfg=0 guibg=yellow2 guifg=orangered
-:hi Underlined term=underline cterm=underline
-:hi Include ctermfg=1 guifg=red
-:hi Define ctermfg=3 gui=bold guifg=gold
-:hi Function ctermfg=6 guifg=navajowhite
-:hi Structure ctermfg=2 guifg=green
-:hi MatchParen cterm=bold ctermbg=4 ctermfg=7
-:hi CursorLine cterm=bold,underline guibg=black
-:hi CursorColumn cterm=bold,underline guibg=black
-:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white
-:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white
-:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi WarningMsg term=standout ctermfg=1 guibg=darkmagenta guifg=salmon
-:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white
-:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white
-:hi Black ctermbg=grey ctermfg=black guibg=grey guifg=black
-:hi Red ctermbg=black ctermfg=red guibg=black guifg=red
-:hi Magenta ctermbg=black ctermfg=magenta guibg=black guifg=magenta
-:hi Blue ctermbg=black ctermfg=blue guibg=black guifg=blue
-:hi Cyan ctermbg=black ctermfg=cyan guibg=black guifg=cyan
-:hi Green ctermbg=black ctermfg=green guibg=black guifg=green
-:hi Yellow ctermbg=black ctermfg=yellow guibg=black guifg=yellow
-:hi White ctermbg=black ctermfg=white guibg=black guifg=white
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-ruby.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-ruby.vim
deleted file mode 100644
index 3d8f92e1..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-ruby.vim
+++ /dev/null
@@ -1,65 +0,0 @@
-" Vim color file
-" Name: sparse-cterm-ruby
-" Maintainer: Ralph Amissah <ralph@amissah.com>
-" Last Change: 2011-06-26
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/colors/sparse-cterm-ruby.vim;hb=HEAD>
-" Note: 8 color cterm, related colorschemes 8 & frugal
-:set background=dark
-:hi clear
-if exists("syntax_on")
- syntax reset
-endif
-:let colors_name = "frugal-cterm-ruby"
-" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white
-:hi Normal ctermbg=0 ctermfg=7
-:hi Cursor term=reverse cterm=reverse
-:hi lCursor term=reverse cterm=reverse
-:hi StatusLine term=reverse cterm=reverse
-:hi StatusLineNC term=reverse cterm=reverse
-:hi Search term=reverse cterm=none ctermbg=2 ctermfg=0
-:hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7
-:hi SpecialKey term=bold ctermfg=4
-:hi Visual term=reverse cterm=reverse
-:hi VisualNOS term=bold,underline cterm=bold,underline
-:hi MoreMsg term=bold ctermfg=2
-:hi ModeMsg term=bold cterm=bold
-:hi Question term=standout ctermfg=2
-:hi Title term=bold ctermfg=1
-:hi NonText term=bold cterm=bold ctermfg=4
-:hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0*
-:hi Directory term=bold ctermfg=4
-:hi WildMenu term=standout ctermbg=3 ctermfg=0
-:hi VertSplit term=reverse cterm=reverse
-:hi Folded term=standout cterm=bold ctermbg=0 ctermfg=0*
-:hi FoldColumn term=standout ctermbg=7 ctermfg=4
-:hi DiffChange cterm=none ctermbg=7 ctermfg=0
-:hi DiffText cterm=none ctermbg=6 ctermfg=0
-:hi DiffAdd cterm=none ctermbg=2 ctermfg=0
-:hi DiffDelete cterm=bold ctermbg=0 ctermfg=0*
-:hi String cterm=none ctermfg=3
-:hi Comment cterm=bold ctermbg=0 ctermfg=0*
-:hi Constant term=underline ctermfg=1
-:hi Special term=bold ctermfg=6
-:hi Identifier term=underline cterm=none ctermfg=6
-:hi Statement term=bold cterm=none ctermfg=2
-":hi Operator term=bold ctermfg=1
-:hi PreProc term=underline ctermfg=1
-:hi Type term=underline cterm=bold ctermfg=3
-:hi Delimiter cterm=none ctermfg=2
-:hi Ignore cterm=bold ctermfg=7
-:hi Todo term=standout ctermbg=3 ctermfg=0
-:hi Underlined term=underline cterm=underline
-":hi Include ctermfg=1
-":hi Define ctermfg=3
-":hi Function ctermfg=6
-":hi Structure ctermfg=2
-:hi MatchParen cterm=bold ctermbg=4 ctermfg=7
-:hi CursorLine cterm=bold,underline
-:hi CursorColumn cterm=bold,underline
-:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi WarningMsg term=standout ctermfg=1
-:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7
-:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-sisu.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-sisu.vim
deleted file mode 100644
index 9704dbd2..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/colors/sparse-cterm-sisu.vim
+++ /dev/null
@@ -1,65 +0,0 @@
-" Vim color file
-" Name: sparse-cterm-sisu
-" Maintainer: Ralph Amissah <ralph@amissah.com>
-" Last Change: 2011-06-26
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/colors/sparse-cterm-sisu.vim;hb=HEAD>
-" Note: 8 color cterm, related colorschemes 8 & frugal
-:set background=dark
-:hi clear
-if exists("syntax_on")
- syntax reset
-endif
-:let colors_name = "sparse-cterm-sisu"
-" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white
-:hi Normal ctermbg=0 ctermfg=7
-:hi Cursor term=reverse cterm=reverse
-:hi lCursor term=reverse cterm=reverse
-:hi StatusLine term=reverse cterm=bold,reverse
-:hi StatusLineNC term=reverse cterm=reverse
-:hi Search term=reverse cterm=none ctermbg=2 ctermfg=0
-:hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7
-:hi SpecialKey term=bold ctermfg=4
-:hi Visual term=reverse cterm=reverse
-:hi VisualNOS term=bold,underline cterm=bold,underline
-:hi MoreMsg term=bold ctermfg=2
-:hi ModeMsg term=bold cterm=bold
-:hi Question term=standout ctermfg=2
-:hi Title term=bold cterm=bold ctermfg=3
-:hi NonText term=bold cterm=bold ctermfg=4
-:hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0*
-:hi Directory term=bold ctermfg=4
-:hi WildMenu term=standout ctermbg=3 ctermfg=0
-:hi VertSplit term=reverse cterm=reverse
-:hi Folded term=standout cterm=bold ctermbg=0 ctermfg=0*
-:hi FoldColumn term=standout ctermbg=7 ctermfg=4
-:hi DiffChange cterm=none ctermbg=7 ctermfg=0
-:hi DiffText cterm=none ctermbg=6 ctermfg=0
-:hi DiffAdd cterm=none ctermbg=2 ctermfg=0
-:hi DiffDelete cterm=bold ctermbg=0 ctermfg=0*
-:hi String cterm=none ctermfg=3
-:hi Comment cterm=bold ctermbg=0 ctermfg=0*
-:hi Constant term=underline ctermfg=1
-:hi Special term=bold ctermfg=6
-:hi Identifier term=underline ctermfg=6
-:hi Statement term=bold ctermfg=6
-:hi Operator term=bold ctermfg=1
-:hi PreProc term=underline ctermbg=7 ctermfg=1
-:hi Type term=underline ctermfg=2
-:hi Delimiter term=none cterm=none ctermfg=1
-:hi Ignore cterm=bold ctermfg=7
-:hi Todo term=standout ctermbg=3 ctermfg=0
-:hi Underlined term=underline cterm=underline
-:hi Include ctermfg=1
-:hi Define ctermfg=3
-:hi Function ctermfg=6
-:hi Structure ctermfg=2
-:hi MatchParen cterm=bold ctermbg=4 ctermfg=7
-:hi CursorLine cterm=bold,underline
-:hi CursorColumn cterm=bold,underline
-:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0
-:hi WarningMsg term=standout ctermfg=1
-:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7
-:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/filetype.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/filetype.vim
deleted file mode 100644
index 917c3e04..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/filetype.vim
+++ /dev/null
@@ -1,8 +0,0 @@
-" SiSU filetype file
-if exists("did_load_filetypes")
- finish
-endif
-augroup filetypedetect
- au! BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst setf sisu
- au! BufNewFile,BufRead *._sst,*.sst.meta,*.-sst.meta,*._sst.meta setf sisu
-augroup END
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/ftplugin/sisu.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/ftplugin/sisu.vim
deleted file mode 100644
index 160444fd..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/ftplugin/sisu.vim
+++ /dev/null
@@ -1,182 +0,0 @@
-"%% SiSU Vim ftplugin
-" SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
-" SiSU Markup: SiSU (sisu-2.0) 2010-06-05
-" an ftplugin setting defaults for editing sisu markup files
-:syntax on
-:filetype on
-:filetype indent on
-:autocmd FileType sisu :set nonumber
-:set encoding=utf-8 fileencodings=
-:set ff=unix
-:set autowrite " Automatically save before commands like :next and :make
-:set nocompatible
-:set tabstop=2
-:set expandtab
-:set shiftwidth=2
-:set autoindent
-:set showcmd " Show (partial) command in status line.
-:set showmatch " Show matching brackets.
-:set ignorecase " Do case insensitive matching
-:set smartcase
-:set incsearch
-:set hlsearch
-:set gdefault
-:set guioptions=agr " add 'm' for menu
-:map <silent> <C-m> :if &guioptions =~# 'm' <Bar>
- \set guioptions-=m <Bar>
- \set guioptions-=T <Bar>
- \else <Bar>
- \set guioptions+=m <Bar>
- \set guioptions-=T <Bar>
- \endif<CR>
-:set paste
-:set statusline=%f%m%r%h%w\ [type=%Y]\ [format=%{&ff}]\ [%v:%l/%L\ %p%%]
-:set laststatus=2 " status line always on
-"% textwrap
-:set whichwrap=<,>,h,l,[,]
-:set nolinebreak " only affects display not buffer
-:set wrap
-:set wrapmargin=0
-"% map
-":let mapleader = "," " consider
-:map <leader>paste :set invpaste<cr>
-"% wrap/formatting paragraph according to the current 'textwidth' with ^J (control-j):
-:imap <C-J> <C-O>gqap
-:nmap <C-J> gqap
-:vmap <C-J> gq
-"% save file, go to next file in buffer
-:map <leader>nf :w <enter> :n <enter>
-"% vimdiff q exits
-:if &diff
-: cmap q qa
-:endif
-"% directory files, placed in vertical split window
-:map <leader>ls :vs<cr> :Explore<cr>
-:map <leader>dir :vs<cr> :Explore<cr>
-:if &diff
-: cmap q qa
-:endif
-"% remapping lines make cursor jump a line at a time within wrapped text
-:nnoremap j gj
-:nnoremap k gk
-:vnoremap j gj
-:vnoremap k gk
-:nnoremap <Down> gj
-:nnoremap <Up> gk
-:vnoremap <Down> gj
-:vnoremap <Up> gk
-:inoremap <Down> <C-o>gj
-:inoremap <Up> <C-o>gk
-"% colorscheme slate
-:map <C-C> :syntax on <cr> :colorscheme slate<cr>
-"% search and replace
-:map <leader>rd :.,$s///c "search and replace down
-:map <leader>rg :%s///c "search and replace whole file
-:map <leader>rr :rubyd gsub!(//,"")
-"% pwd t64 working directory set to that of the file you're editing
-"changes pwd to directory of file in current buffer
-:function! CHANGE_CURR_DIR()
-: let _dir = expand("%:p:h")
-: exec "cd " . _dir
-: unlet _dir
-:endfunction
-"% Change to the directory the file in your current buffer is in
-:if has("autocmd")
- autocmd BufEnter * :lcd %:p:h
-:endif
-"% autocompletefilenames To search for files in the current directory
-:set path=,,
-"auto-completion for file to edit in current dir, used in normal mode
-:map <leader>e :e <c-r>=expand("%:p:h") . "/" <cr>
-:map <leader>pwd :exe 'cd ' . expand ("%:p:h")<cr>
-"% searchhighlight t93: Toggle search highlight <C-n>
-:function! ToggleHLSearched()
-: if &hls
-: set nohls
-: else
-: set hls
-: endif
-:endfun
-:nmap <silent> <C-n> :silent call ToggleHLSearched()<cr>
-"%% SiSU vim folds
-"% foldsearchx FoldSearch (opens result of search all else closed) t77
-:map fs :set foldmethod=expr foldcolumn=2 foldlevel=0 <cr>
-:map <leader>ff :F<cr>
-:map <leader>fe :F<cr> zE
-"% foldtoggle Fold Toggle mapped to <space>
-:fun! ToggleFold()
-: if foldlevel('.') == 0
-: normal! l
-: else
-: if foldclosed('.') < 0
-: foldclose
-: else
-: foldopen
-: endif
-: endif
-" Clear status line
-: echo
-:endfun
-" Map this function to Space key.
-:noremap <space> :call ToggleFold()<cr>
-"% foldtype Fold? set foldtext
-:set foldtext=v:folddashes.substitute(getline(v:foldstart),'\\=','','g',)
-:set foldexpr=getline(v:lnum-1)!~@/&&getline(v:lnum)!~@/&&getline(v:lnum+1)!~@/
-"% foldsearch t77: Fold on search result
-:function! FoldMake(search)
-: set fdm=manual
-: normal zE
-: normal G$
-: let folded = 0 "flag to set when a fold is found
-: let flags = "w" "allow wrapping in the search
-: let line1 = 0 "set marker for beginning of fold
-: while search(a:search, flags) > 0
-: let line2 = line(".")
-: if (line2 -1 > line1)
-: "echo line1 . ":" . (line2-1)
-: "echo "a fold goes here."
-: execute ":" . line1 . "," . (line2-1) . "fold"
-: let folded = 1 "at least one fold has been found
-: endif
-: let line1 = line2 "update marker
-: let flags = "W" "turn off wrapping
-: endwhile
-" create the last fold which goes to the end of the file.
-: normal $G
-: let line2 = line(".")
-: if (line2 > line1 && folded == 1)
-: execute ":". line1 . "," . line2 . "fold"
-: endif
-: normal 1G
-:endfunction
-"% folds Fold Patterns
-:command! -nargs=+ -complete=command FMake call FoldMake(<q-args>)
-: if ( &filetype == "ruby" )
-: command! F FMake ^# ==\?\|^\s*\(\(def\|class\|module\)\s\|\(public\|protected\|private\|__END__\)\s*$\)\|\(^\s*\|\s\+\)#%\s
-: command! Fa FMake \(^# ==\?\|^\s*\(\(\(def\|class\|module\)\s\)\|\(\(public\|protected\|private\|__END__\)\(\s*$\)\)\)\)\|^[0-9]\~\|\([#%]\|^["]\)\{1,4\}\s*%\|{\({\|!!\)
-: command! FD FMake \(^# ==\?\|^\s*\(\(def\|class\|module\)\s\)\)\|^\s*\([#%"0-9]\{0,4\}\~\(%\+\s\|!!\)\|#\s\+=\+\s\+\)
-: else
-"% folds :F Fold Patterns SiSU Markup :F
-: command! F FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*|
-: command! Fa FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*|\|^\(Book\|Part\|Chapter\|Section\|Article\|BOOK\|PART\|CHAPTER\|SECTION\|ARTICLE\)\s
-: command! F0 FMake ^\(\s*0\~\|@\S\+:[+-]\?\s\+\)
-: command! FA FMake ^:\?A\~
-: command! FB FMake ^:\?[AB]\~
-: command! FC FMake ^:\?[A-C]\~
-: command! F1 FMake ^\(:\?[A-C]\|1\)\~
-: command! F2 FMake ^\(:\?[A-C]\|[12]\)\~
-: command! F3 FMake ^\(:\?[A-C]\|[1-3]\)\~
-: command! F4 FMake ^[1-4]\~
-: command! F5 FMake ^[4-5]\~
-: command! F6 FMake ^[4-6]\~
-: command! Fc FMake ^[%]\+\s\+
-: endif
-"% folds Fold Patterns misc
-":command! Fp FMake ^\s*[A-Za-z0-9#]
-:command! Fp FMake ^\s*\S
-:command! Fo FMake ^[%\"]\s*[{>]
-"% cursorline
-:highlight CursorLine guibg=black ctermbg=black
-:highlight CursorColumn guibg=black ctermbg=black
-:map <leader>cu- :set nocursorline nocursorcolumn<cr>
-:map <leader>cu+ :set cursorline cursorcolumn<cr>
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu.vim
deleted file mode 100644
index 71d72d3a..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu.vim
+++ /dev/null
@@ -1,266 +0,0 @@
-" SiSU Vim syntax file
-" SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
-" SiSU Markup: SiSU (sisu-3.2.0)
-" Last Change: 2012-03-06
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD>
-"(originally looked at Ruby Vim by Mirko Nasato)
-
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
- finish
-else
-endif
-let s:cpo_save = &cpo
-set cpo&vim
-
-"% "Errors:
-syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
-
-"% "Markers Identifiers:
-if !exists("sisu_no_identifiers")
- syn match sisu_mark_endnote "\~^"
- syn match sisu_break contains=@NoSpell " \\\\\( \|$\)"
- syn match sisu_break contains=@NoSpell "<br>\|<br />"
- syn match sisu_control contains=@NoSpell "^<:p[bn]>\s*$"
- "syn match sisu_control contains=@NoSpell "^<\(br\)\?:\(pg\|pgn\|pn\)>\s*$"
- "syn match sisu_control contains=@NoSpell "^\[\(br\)\?:\(pg\|pgn\|pn\)\]\s*$"
- syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$"
- "syn match sisu_control contains=@NoSpell "^<\(br\)\?:\(pr\|o\)>\s*$"
- "syn match sisu_control contains=@NoSpell "^\[\(br\)\?:\(pr\|o\)\]\s*$"
- syn match sisu_marktail "[~-]#"
- syn match sisu_control "\""
- syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
- syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
- syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+"
- syn match sisu_link " \*\~\S\+"
- syn match sisu_action "^<:insert\d\+>"
- syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$"
- syn match sisu_require contains=@NoSpell "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$"
- syn match sisu_structure "^:A\~$"
-
-"% "Document Sub Headers:
- syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content
- syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution
- syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license
- syn match sisu_sub_header_classify "^\s\+:\(topic_register\|coverage\|format\|identifier\|keywords\|relation\|subject\|type\|dewey\|loc\|oclc\|pg\|isbn\):\s"
- syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s"
- syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s"
- syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|skin\|stamp\|promo\|ad\|manpage\):\s"
- syn match sisu_sub_header_notes "^\s\+:\(abstract\|comment\|description\|history\|prefix\|prefix_[ab]\|suffix\):\s"
-
-"% "semantic markers: (ignore)
- syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]"
- syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]"
- syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]"
- syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]"
- syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1"
- syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+"
- syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1"
- syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+"
-endif
-
-"% "URLs Numbers And ASCII Codes:
-syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>"
-syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)"
-
-"% "Tuned Error: (is error if not already matched)
-syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]"
-syn match sisu_error contains=sisu_error "<a href\|</a>]"
-
-"% "Simple Paired Enclosed Markup:
-"url/link
-syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$"
-
-"% "Document Header:
-" title
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" creator
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" dates
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" publisher
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" rights
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" classify document
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" original language (depreciated)
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" notes
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" links of interest
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" make, processing instructions
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-
-"% "Headings:
-syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$"
-
-"% "Block Group Text:
-" table
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table"
-" table
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$"
-" block, group, poem, alt
-syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(block\|group\|poem\|alt\){" end="^}\(block\|group\|poem\|alt\)"
-" code
-syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code"
-
-"% "Endnotes:
-" regular endnote or asterisk or plus sign endnote
-syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n"
-" numbered asterisk or plus sign endnote
-syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n"
-" endnote content marker (for binary content marking)
-syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$"
-
-"% "Links And Images:
-" image with url link (and possibly footnote of url)
-syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline
-" sisu outputs, short notation
-syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline
-" image
-syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline
-
-"% "Some Line Operations:
-" bold line
-syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$"
-" indent and bullet paragraph
-syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$"
-" indent and bullet (bold start) paragraph
-syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$"
-" hanging indent paragraph [proposed]
-syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$"
-" hanging indent (bold start/ definition) paragraph [proposed]
-syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$"
-" list numbering
-syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$"
-
-"% "Font Face Curly Brackets:
-"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
-" book index:
-syn region sisu_index matchgroup=sisu_index_block start="^={" end="}"
-" emphasis:
-syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
-" bold:
-syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
-" underscore:
-syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
-" italics:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/"
-" added:
-syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+"
-" superscript:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^"
-" subscript:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="},"
-" monospace:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#"
-" strikethrough:
-syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-"
-
-"% "Single Words Bold Italicise Etc: (depreciated)
-syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline
-syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline
-"misc
-syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
-
-"% "Expensive Mode:
-if !exists("sisu_no_expensive")
-else " not Expensive
- syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline
-endif " Expensive?
-
-"% "Headers And Headings: (Document Instructions)
-syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
-syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$"
-
-"% "Errors:
-syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]"
-syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+"
-syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$"
-syn match sisu_error contains=sisu_error_wspace "\t\+"
-syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+"
-syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]"
-syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$"
-syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$"
-syn match sisu_error contains=sisu_error "\s\+.{{"
-syn match sisu_error contains=sisu_error "^\~\s*$"
-syn match sisu_error contains=sisu_error "^0\~.*"
-syn match sisu_error contains=sisu_error "^[1-9]\~\s*$"
-syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$"
-syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]"
-syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*"
-syn match sisu_error contains=sisu_error "{\~^\S\+"
-syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]"
-syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']"
-syn match sisu_error contains=sisu_error "<dir>"
-"errors for filetype sisu, though not error in 'metaverse':
-syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>"
-syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$"
-
-"% "Error Exceptions:
-syn match sisu_control "\n$" "contains=ALL
-"syn match sisu_control " //"
-syn match sisu_error "%{"
-syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
-syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
-syn match sisu_comment "^%\{1,2\}.\+"
-
-"% "Definitions Default Highlighting:
-hi def link sisu_normal Normal
-hi def link sisu_bold Statement
-hi def link sisu_header PreProc
-hi def link sisu_header_content Normal
-hi def link sisu_sub_header_title Statement
-hi def link sisu_sub_header_creator Statement
-hi def link sisu_sub_header_date Statement
-hi def link sisu_sub_header_publisher Statement
-hi def link sisu_sub_header_rights Statement
-hi def link sisu_sub_header_classify Statement
-hi def link sisu_sub_header_original Statement
-hi def link sisu_sub_header_links Statement
-hi def link sisu_sub_header_notes Statement
-hi def link sisu_sub_header_make Statement
-hi def link sisu_heading Title
-hi def link sisu_structure Operator
-hi def link sisu_contain Include
-hi def link sisu_mark_endnote Delimiter
-hi def link sisu_require NonText
-hi def link sisu_link NonText
-hi def link sisu_linked String
-hi def link sisu_fontface Delimiter
-hi def link sisu_strikeout DiffDelete
-hi def link sisu_content_alt Special
-hi def link sisu_sem_content SpecialKey
-hi def link sisu_sem_block Special
-hi def link sisu_sem_marker Visual
-"hi def link sisu_sem_marker Structure
-hi def link sisu_sem_marker_block MatchParen
-hi def link sisu_sem_ex_marker FoldColumn
-hi def link sisu_sem_ex_marker_block Folded
-hi def link sisu_sem_ex_content Comment
-"hi def link sisu_sem_ex_content SpecialKey
-hi def link sisu_sem_ex_block Comment
-hi def link sisu_index SpecialKey
-hi def link sisu_index_block Visual
-hi def link sisu_content_endnote Special
-hi def link sisu_control Delimiter
-hi def link sisu_ocn Include
-hi def link sisu_number Number
-hi def link sisu_identifier Function
-hi def link sisu_underline Underlined
-hi def link sisu_markpara Include
-hi def link sisu_marktail Include
-hi def link sisu_mark Identifier
-hi def link sisu_break Structure
-hi def link sisu_html Type
-hi def link sisu_action Identifier
-hi def link sisu_comment Comment
-hi def link sisu_error_sem_marker Error
-hi def link sisu_error_wspace Error
-hi def link sisu_error Error
-let b:current_syntax = "sisu"
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu_next.vim b/data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu_next.vim
deleted file mode 100644
index 257e1cba..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/syntax/sisu_next.vim
+++ /dev/null
@@ -1,281 +0,0 @@
-" SiSU Vim syntax file
-" SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
-" SiSU Markup: SiSU (sisu-3.1.0)
-" Last Change: 2011-10-03
-" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD>
-"(originally looked at Ruby Vim by Mirko Nasato)
-
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
- finish
-else
-endif
-let s:cpo_save = &cpo
-set cpo&vim
-
-"% "Errors:
-syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
-
-"% "Markers Identifiers:
-if !exists("sisu_no_identifiers")
- syn match sisu_mark_endnote "\~^"
- syn match sisu_break contains=@NoSpell " \\\\\( \|$\)"
- syn match sisu_break contains=@NoSpell "<br>\|<br />"
- syn match sisu_control contains=@NoSpell "^<:p[bn]>\s*$"
- "syn match sisu_control contains=@NoSpell "^<\(br\)\?:\(pg\|pgn\|pn\)>\s*$"
- "syn match sisu_control contains=@NoSpell "^\[\(br\)\?:\(pg\|pgn\|pn\)\]\s*$"
- syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$"
- "syn match sisu_control contains=@NoSpell "^<\(br\)\?:\(pr\|o\)>\s*$"
- "syn match sisu_control contains=@NoSpell "^\[\(br\)\?:\(pr\|o\)\]\s*$"
- syn match sisu_marktail "[~-]#"
- syn match sisu_control "\""
- syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
- syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
- syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+"
- syn match sisu_link " \*\~\S\+"
- syn match sisu_action "^<:insert\d\+>"
- syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$"
- syn match sisu_require contains=@NoSpell "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$"
- syn match sisu_structure "^:A\~$"
-
-"% "Document Sub Headers:
- syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content
- syn match sisu_sub_header_creator "^\s\+:\(author\|editor\):\s" " &hon &institution
- syn match sisu_sub_header_contributor "^\s\+:\(editor\|translator\|illustrator\|photographer\|audio\|video\|prepared_by\|digitized_by\):\s"
- syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license
- syn match sisu_sub_header_classify "^\s\+:\(topic_register\|coverage\|identifier\|keywords\|relation\|subject\|type\|dewey\|loc\):\s"
- syn match sisu_sub_header_identify "^\s\+:\(isbn\|urn\|oclc\|pg\):\s"
- syn match sisu_sub_header_format "^\s\+:\(mimetype\):\s"
- syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s"
- syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s"
- syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|skin\|stamp\|promo\|ad\|manpage\):\s"
- syn match sisu_sub_header_notes "^\s\+:\(abstract\|comment\|description\|history\|prefix\|prefix_[ab]\|suffix\):\s"
-
-"% "semantic markers: (ignore)
- syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]"
- syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]"
- syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]"
- syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]"
- syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1"
- syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+"
- syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1"
- syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+"
-endif
-
-"% "URLs Numbers And ASCII Codes:
-syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>"
-syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)"
-
-"% "Tuned Error: (is error if not already matched)
-syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]"
-syn match sisu_error contains=sisu_error "<a href\|</a>]"
-
-"% "Simple Paired Enclosed Markup:
-"url/link
-syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$"
-
-"% "Document Header:
-" title
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" creator
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" contributor
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_contributor matchgroup=sisu_header start="^[@]contributor:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" dates
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" publisher
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" rights
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" classify document
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" identifier
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" format
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_format matchgroup=sisu_header start="^[@]format:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" original language (depreciated)
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" notes
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" links of interest
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-" make, processing instructions
-syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
-
-"% "Headings:
-syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$"
-
-"% "Block Group Text:
-" table
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table"
-" table
-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$"
-" block, group, poem, alt
-syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(block\|group\|poem\|alt\){" end="^}\(block\|group\|poem\|alt\)"
-" code
-syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code"
-
-"% "Endnotes:
-" regular endnote or asterisk or plus sign endnote
-syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n"
-" numbered asterisk or plus sign endnote
-syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n"
-" endnote content marker (for binary content marking)
-syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$"
-
-"% "Links And Images:
-" image with url link (and possibly footnote of url)
-syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline
-" sisu outputs, short notation
-syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline
-" image
-syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline
-
-"% "Some Line Operations:
-" bold line
-syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$"
-" indent and bullet paragraph
-syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$"
-" indent and bullet (bold start) paragraph
-syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$"
-" hanging indent paragraph [proposed]
-syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$"
-" hanging indent (bold start/ definition) paragraph [proposed]
-syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$"
-" list numbering
-syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$"
-
-"% "Font Face Curly Brackets:
-"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
-" book index:
-syn region sisu_index matchgroup=sisu_index_block start="^={" end="}"
-" emphasis:
-syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
-" bold:
-syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
-" underscore:
-syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
-" italics:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/"
-" added:
-syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+"
-" superscript:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^"
-" subscript:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="},"
-" monospace:
-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#"
-" strikethrough:
-syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-"
-" (depreciated remove, consider marking as error):
-" syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="<a href=\".\{-}\">" end="</a>" oneline
-
-"% "Single Words Bold Italicise Etc: (depreciated)
-syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline
-syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline
-"misc
-syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
-
-"% "Expensive Mode:
-if !exists("sisu_no_expensive")
-else " not Expensive
- syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline
-endif " Expensive?
-
-"% "Headers And Headings: (Document Instructions)
-syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
-syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$"
-
-"% "Errors:
-syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]"
-syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+"
-"syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+\|\t\+"
-syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$"
-syn match sisu_error contains=sisu_error_wspace "\t\+"
-syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+"
-syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]"
-syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$"
-syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$"
-syn match sisu_error contains=sisu_error "\s\+.{{"
-syn match sisu_error contains=sisu_error "^\~\s*$"
-syn match sisu_error contains=sisu_error "^0\~.*"
-syn match sisu_error contains=sisu_error "^[1-9]\~\s*$"
-syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$"
-syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]"
-syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*"
-syn match sisu_error contains=sisu_error "{\~^\S\+"
-syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]"
-syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']"
-syn match sisu_error contains=sisu_error "<dir>"
-"errors for filetype sisu, though not error in 'metaverse':
-syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>"
-syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$"
-
-"% "Error Exceptions:
-syn match sisu_control "\n$" "contains=ALL
-"syn match sisu_control " //"
-syn match sisu_error "%{"
-syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
-syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
-syn match sisu_comment "^%\{1,2\}.\+"
-
-"% "Definitions Default Highlighting:
-hi def link sisu_normal Normal
-hi def link sisu_bold Statement
-hi def link sisu_header PreProc
-hi def link sisu_header_content Normal
-hi def link sisu_sub_header_title Statement
-hi def link sisu_sub_header_creator Statement
-hi def link sisu_sub_header_date Statement
-hi def link sisu_sub_header_publisher Statement
-hi def link sisu_sub_header_rights Statement
-hi def link sisu_sub_header_classify Statement
-hi def link sisu_sub_header_original Statement
-hi def link sisu_sub_header_links Statement
-hi def link sisu_sub_header_notes Statement
-hi def link sisu_sub_header_make Statement
-hi def link sisu_heading Title
-hi def link sisu_structure Operator
-hi def link sisu_contain Include
-hi def link sisu_mark_endnote Delimiter
-"hi def link sisu_mark_endnote Include
-hi def link sisu_require NonText
-hi def link sisu_link NonText
-hi def link sisu_linked String
-hi def link sisu_fontface Delimiter
-"hi def link sisu_fontface Include
-hi def link sisu_strikeout DiffDelete
-hi def link sisu_content_alt Special
-hi def link sisu_sem_content SpecialKey
-hi def link sisu_sem_block Special
-hi def link sisu_sem_marker Visual
-"hi def link sisu_sem_marker Structure
-hi def link sisu_sem_marker_block MatchParen
-hi def link sisu_sem_ex_marker FoldColumn
-hi def link sisu_sem_ex_marker_block Folded
-hi def link sisu_sem_ex_content Comment
-"hi def link sisu_sem_ex_content SpecialKey
-hi def link sisu_sem_ex_block Comment
-hi def link sisu_index SpecialKey
-hi def link sisu_index_block Visual
-hi def link sisu_content_endnote Special
-hi def link sisu_control Delimiter
-"hi def link sisu_control Define
-hi def link sisu_ocn Include
-hi def link sisu_number Number
-hi def link sisu_identifier Function
-hi def link sisu_underline Underlined
-hi def link sisu_markpara Include
-hi def link sisu_marktail Include
-hi def link sisu_mark Identifier
-hi def link sisu_break Structure
-hi def link sisu_html Type
-hi def link sisu_action Identifier
-hi def link sisu_comment Comment
-hi def link sisu_error_sem_marker Error
-hi def link sisu_error_wspace Error
-hi def link sisu_error Error
-let b:current_syntax = "sisu"
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssi.tpl b/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssi.tpl
deleted file mode 100644
index a101dee6..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssi.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-% SiSU 2.0 insert
-
-@title: #___#
- :subtitle: #___#
-
-@creator:
- :author: #___#
-
-@rights:
- :copyright: #___#
- :license: #___#
-
-@classify:
- :topic_register: #___#
- :subject: #___#
- :type: #___#
- :loc: #___#
- :oclc: #___#
- :isbn: #___#
-
-@date:
- :published: 20YY-MM-DD
- :added_to_site: 20YY-MM-DD
- :modified: 20YY-MM-DD
-
-@make:
- :headings: none; none; none; none;
- :num_top: 1
- :breaks: new=:C; break=1
- :bold: / #___#/i
- :italics: / #___#/i
- :skin: #___#
-
-@links:
- {SiSU}http://www.jus.uio.no/sisu/SiSU
-
-:A~ @title @author
-
-1~ #___#
-
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssm.tpl b/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssm.tpl
deleted file mode 100644
index cbda5053..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/ssm.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-% SiSU 2.0 master
-
-@title: #___#
- :subtitle: #___#
-
-@creator:
- :author: #___#
-
-@rights:
- :copyright: #___#
- :license: #___#
-
-@classify:
- :topic_register: #___#
- :subject: #___#
- :type: #___#
- :loc: #___#
- :oclc: #___#
- :isbn: #___#
-
-@date:
- :published: 20YY-MM-DD
- :added_to_site: 20YY-MM-DD
- :modified: 20YY-MM-DD
-
-@make:
- :headings: none; none; none; none;
- :num_top: 1
- :breaks: new=:C; break=1
- :bold: / #___#/i
- :italics: / #___#/i
- :skin: #___#
-
-@links:
- {SiSU}http://www.jus.uio.no/sisu/SiSU
-
-:A~ @title @author
-
-1~ #___#
-
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/sst.tpl b/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/sst.tpl
deleted file mode 100644
index dd19efb4..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/templates/sst.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-% SiSU 2.0
-
-@title: #___#
- :subtitle: #___#
-
-@creator:
- :author: #___#
-
-@rights:
- :copyright: #___#
- :license: #___#
-
-@classify:
- :topic_register: #___#
- :subject: #___#
- :type: #___#
- :loc: #___#
- :oclc: #___#
- :isbn: #___#
-
-@date:
- :published: 20YY-MM-DD
- :added_to_site: 20YY-MM-DD
- :modified: 20YY-MM-DD
-
-@make:
- :headings: none; none; none; none;
- :num_top: 1
- :breaks: new=:C; break=1
- :bold: / #___#/i
- :italics: / #___#/i
- :skin: #___#
-
-@links:
- {SiSU}http://www.jus.uio.no/sisu/SiSU
-
-:A~ @title @author
-
-1~ #___#
-
diff --git a/data/sisu/v3dv/conf/editor-syntax-etc/vim/vim-sisu.yaml b/data/sisu/v3dv/conf/editor-syntax-etc/vim/vim-sisu.yaml
deleted file mode 100644
index ca665bc8..00000000
--- a/data/sisu/v3dv/conf/editor-syntax-etc/vim/vim-sisu.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-#vim-addons: debian vim-addon-manager
-addon: sisu
-description: SiSU documents - structuring, publishing in multiple formats and search
-basedir: /usr/share/vim-scripts/
-files:
- - ftplugin/sisu.vim
- - syntax/sisu.vim
diff --git a/data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu b/data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu
deleted file mode 100644
index 6647de9f..00000000
--- a/data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu
+++ /dev/null
@@ -1,115 +0,0 @@
-# lighttpd configuration file
-#
-# use a it as base for lighttpd 1.0.0 and above
-#
-#%% Options you really have to take care of
-#%
-# modules to load
-# at least mod_access and mod_accesslog should be loaded
-# all other module should only be loaded if really neccesary
-# - saves some time
-# - saves memory
-server.dir-listing = "disable"
-server.modules = ( "mod_rewrite",
- "mod_access",
- "mod_fastcgi",
- "mod_compress",
- "mod_accesslog")
-#%% a static document-root, for virtual-hosting take look at the
-#% server.virtual-* options
-server.document-root = "/var/www/"
-#server.document-root = "/home/*username*/web/public/"
-## 'Parent' domain on any server except davie.
-#server.document-root = "/home/*username*/public_html/"
-##'Parent' domain for those of you currently on davie.textdrive.com, and all future servers.
-#server.document-root = "/home/*username*/web/public/"
-#% where to send error-messages to
-server.errorlog = "/home/[*username*]/var/lighttpd/log/lighttpd.error.log"
-#% files to check for if .../ is requested
-server.indexfiles = ( "index.php", "index.html",
- "index.htm", "index.rb")
-##% mimetype mapping
-##include "mime.types.conf"
-##include_shell "/usr/local/bin/confmimetype /etc/mime.types"
-#% mimetype mapping
-mimetype.assign = (
- ".pdf" => "application/pdf",
- ".gz" => "application/x-gzip",
- ".tar.gz" => "application/x-tgz",
- ".tgz" => "application/x-tgz",
- ".zip" => "application/zip",
- ".gif" => "image/gif",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".png" => "image/png",
- ".css" => "text/css",
- ".html" => "text/html",
- ".htm" => "text/html",
- ".js" => "text/javascript",
- ".text" => "text/plain",
- ".txt" => "text/plain",
- ".s1" => "text/plain",
- ".s2" => "text/plain",
- ".s3" => "text/plain",
- ".dtd" => "text/xml",
- ".xml" => "text/xml",
- ".odt" => "application/vnd.oasis.opendocument.text",
- ".bz2" => "application/x-bzip",
- ".tbz" => "application/x-bzip-compressed-tar",
- ".tar.bz2" => "application/x-bzip-compressed-tar"
- )
-# text/x-server-parsed-html
-#%Server ID Header
-server.tag = "lighttpd | TextDriven"
-#%### accesslog module
-accesslog.filename = "/home/[*username*]/var/lighttpd/log/access_log"
-#% deny access the file-extensions
-#
-# ~ is for backupfiles from vi, emacs, joe, ...
-# .inc is often used for code includes which should in general not be part
-# of the document-root
-url.access-deny = ( "~", ".inc" )
-
-#%% Options that are good to be but not neccesary to be changed
-##% bind to port (default: 80)
-server.port = 81
-#server.port = 8111
-#server.port = 8965
-##% bind to localhost (default: all interfaces)
-server.bind = "localhost"
-#server.bind = "corundum"
-##server.bind = "grisu.home.kneschke.de"
-##% to help the rc.scripts
-server.pid-file = "/home/[*username*]/var/lighttpd/run/lighttpd.pid"
-#$HTTP["host"] =~ "\.corundum\.(name|com|net|org)" {
-$HTTP["host"] == "localhost" {
- server.document-root = "/var/www/"
- server.errorlog = "/home/[*username*]/var/lighttpd/log/lighttpd-error.log"
- accesslog.filename = "/home/[*username*]/var/lighttpd/log/access_log"
- url.rewrite-repeat = (
- "^.*/$" => "index.html",
- "^(.*/(landscape|portrait))$" => "$1.pdf",
- "^(.*/(opendocument))$" => "$1.odt",
- "^(.*/(sax|dom))$" => "$1.xml",
- "^([^.]+)$" => "$1.html"
- )
- server.error-handler-404 = "/dispatch.fcgi"
-# fastcgi.server = ( ".fcgi" =>
-# ( "localhost" =>
-# (
-# "socket" => "/home/[*username*]/var/lighttpd/cgi/lighttpd-fcgi.socket",
-# "bin-path" => "/home/[*username*]/var/lighttpd/public/dispatch.fcgi",
-# "min-procs" => 1,
-# "max-procs" => 2,
-# "idle-timeout" => 60
-# )
-# )
-# )
-}
-#% change uid to <uid> (default: don't care)
-server.username = "[*username*]"
-#% change uid to <uid> (default: don't care)
-server.groupname = "[*username*]"
-#%## compress module
-compress.cache-dir = "/home/[*username*]/var/lighttpd/cache/compress/"
-compress.filetype = ("text/plain", "text/html")
diff --git a/data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu_www b/data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu_www
deleted file mode 100644
index 0dd16c94..00000000
--- a/data/sisu/v3dv/conf/lighttpd/lighttpd.cfg.sisu_www
+++ /dev/null
@@ -1,115 +0,0 @@
-# lighttpd configuration file
-#
-# use a it as base for lighttpd 1.0.0 and above
-#
-#%% Options you really have to take care of
-#%
-# modules to load
-# at least mod_access and mod_accesslog should be loaded
-# all other module should only be loaded if really neccesary
-# - saves some time
-# - saves memory
-server.dir-listing = "disable"
-server.modules = ( "mod_rewrite",
- "mod_access",
- "mod_fastcgi",
- "mod_compress",
- "mod_accesslog")
-#%% a static document-root, for virtual-hosting take look at the
-#% server.virtual-* options
-server.document-root = "/home/[user home]/sisu_www/"
-#server.document-root = "/home/*username*/web/public/"
-## 'Parent' domain on any server except davie.
-#server.document-root = "/home/*username*/public_html/"
-##'Parent' domain for those of you currently on davie.textdrive.com, and all future servers.
-#server.document-root = "/home/*username*/web/public/"
-#% where to send error-messages to
-server.errorlog = "/home/[*username*]/var/lighttpd/log/lighttpd.error.log"
-#% files to check for if .../ is requested
-server.indexfiles = ( "index.php", "index.html",
- "index.htm", "index.rb")
-##% mimetype mapping
-##include "mime.types.conf"
-##include_shell "/usr/local/bin/confmimetype /etc/mime.types"
-#% mimetype mapping
-mimetype.assign = (
- ".pdf" => "application/pdf",
- ".gz" => "application/x-gzip",
- ".tar.gz" => "application/x-tgz",
- ".tgz" => "application/x-tgz",
- ".zip" => "application/zip",
- ".gif" => "image/gif",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".png" => "image/png",
- ".css" => "text/css",
- ".html" => "text/html",
- ".htm" => "text/html",
- ".js" => "text/javascript",
- ".text" => "text/plain",
- ".txt" => "text/plain",
- ".s1" => "text/plain",
- ".s2" => "text/plain",
- ".s3" => "text/plain",
- ".dtd" => "text/xml",
- ".xml" => "text/xml",
- ".odt" => "application/vnd.oasis.opendocument.text",
- ".bz2" => "application/x-bzip",
- ".tbz" => "application/x-bzip-compressed-tar",
- ".tar.bz2" => "application/x-bzip-compressed-tar"
- )
-# text/x-server-parsed-html
-#%Server ID Header
-server.tag = "lighttpd | TextDriven"
-#%### accesslog module
-accesslog.filename = "/home/[*username*]/var/lighttpd/log/access_log"
-#% deny access the file-extensions
-#
-# ~ is for backupfiles from vi, emacs, joe, ...
-# .inc is often used for code includes which should in general not be part
-# of the document-root
-url.access-deny = ( "~", ".inc" )
-
-#%% Options that are good to be but not neccesary to be changed
-##% bind to port (default: 80)
-server.port = 8111
-#server.port = 8111
-#server.port = 8965
-##% bind to localhost (default: all interfaces)
-server.bind = "localhost"
-#server.bind = "corundum"
-##server.bind = "grisu.home.kneschke.de"
-##% to help the rc.scripts
-server.pid-file = "/home/[*username*]/var/lighttpd/run/lighttpd.pid"
-#$HTTP["host"] =~ "\.corundum\.(name|com|net|org)" {
-$HTTP["host"] == "localhost" {
- server.document-root = "/home/[*username*]/sisu_www/"
- server.errorlog = "/home/[*username*]/var/lighttpd/log/lighttpd-error.log"
- accesslog.filename = "/home/[*username*]/var/lighttpd/log/access_log"
- url.rewrite-repeat = (
- "^.*/$" => "index.html",
- "^(.*/(landscape|portrait))$" => "$1.pdf",
- "^(.*/(opendocument))$" => "$1.odt",
- "^(.*/(sax|dom))$" => "$1.xml",
- "^([^.]+)$" => "$1.html"
- )
- server.error-handler-404 = "/dispatch.fcgi"
-# fastcgi.server = ( ".fcgi" =>
-# ( "localhost" =>
-# (
-# "socket" => "/home/[*username*]/var/lighttpd/cgi/lighttpd-fcgi.socket",
-# "bin-path" => "/home/[*username*]/var/lighttpd/public/dispatch.fcgi",
-# "min-procs" => 1,
-# "max-procs" => 2,
-# "idle-timeout" => 60
-# )
-# )
-# )
-}
-#% change uid to <uid> (default: don't care)
-server.username = "[*username*]"
-#% change uid to <uid> (default: don't care)
-server.groupname = "[*username*]"
-#%## compress module
-compress.cache-dir = "/home/[*username*]/var/lighttpd/cache/compress/"
-compress.filetype = ("text/plain", "text/html")
diff --git a/data/sisu/v3dv/conf/ruby/irbrc b/data/sisu/v3dv/conf/ruby/irbrc
deleted file mode 100644
index cceffdfc..00000000
--- a/data/sisu/v3dv/conf/ruby/irbrc
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'irb/completion'
-IRB.conf[:use_readline] = true
-IRB.conf[:PROMPT_MODE] = :XMP
-#IRB.conf[:PROMPT] =
-#simple-prompt
-def ri arg
- puts `ri #{arg}`
-end
-def ri(*names)
- system(%{ri #{names.map {|name| name.to_s}.join(" ")}})
-end
-#require 'rdoc/ri/ri_driver'
-#def ri(*names)
-# oargv = Object.const_get(:ARGV)
-# Object.const_set(:ARGV, names)
-# RiDriver.new.process_args
-# Object.const_set(:ARGV, oargv)
-#end
-
diff --git a/data/sisu/v3dv/v/version.yml b/data/sisu/v3dv/v/version.yml
deleted file mode 100644
index ec85acd5..00000000
--- a/data/sisu/v3dv/v/version.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-:version: 3.2.0
-:date_stamp: 2012w12/1
-:date: "2012-03-19"
-:project: SiSU
diff --git a/lib/sisu/v3/author_format.rb b/lib/sisu/v3/author_format.rb
index 481674d0..cfc485f3 100644
--- a/lib/sisu/v3/author_format.rb
+++ b/lib/sisu/v3/author_format.rb
@@ -56,7 +56,7 @@
** Description: system environment, resource control and configuration details
=end
-module FORMAT
+module SiSU_FormatAuthor
class Author
def initialize(author_param)
@author_param=author_param
@@ -65,14 +65,14 @@ module FORMAT
@authors,@author_array=[],[]
authors=@author_param.scan(/[^;]+/)
authors.each do |a|
- a.strip!
+ a=a.strip
if a =~/"(.+?)"/
@authors << { the: $1 }
@author_array << $1.upcase
else #if a =~/,/
x=a.scan(/[^,]+/)
- x[0].strip!
- x[1].strip! if x[1]
+ x[0]=x[0].strip
+ x[1]=x[1].strip if x[1]
if x.length==1
@authors << { the: x[0] }
@author_array << x[0].upcase
diff --git a/lib/sisu/v3/cgi.rb b/lib/sisu/v3/cgi.rb
index 779ee35a..b2a9c0b3 100644
--- a/lib/sisu/v3/cgi.rb
+++ b/lib/sisu/v3/cgi.rb
@@ -61,7 +61,7 @@ module SiSU_CGI
require_relative 'sysenv' # sysenv.rb
require_relative 'cgi_pgsql' # cgi_pgsql.rb
require_relative 'cgi_sqlite' # cgi_sqlite.rb
- class SiSU_search
+ class SearchSQL
def initialize(opt)
@opt=opt
@webserv=@opt.files[0].to_s.strip
@@ -74,8 +74,8 @@ module SiSU_CGI
SiSU_Screen::Ansi.new(@opt.cmd,a).print_grey
end
def read
- SiSU_CGI_sqlite::SiSU_search_sqlite.new(@opt,@webserv).sqlite
- SiSU_CGI_pgsql::SiSU_search_pgsql.new(@opt,@webserv).pgsql
+ SiSU_CGI_SQLite::SearchSQLite.new(@opt,@webserv).sqlite
+ SiSU_CGI_PgSQL::SearchPgSQL.new(@opt,@webserv).pgsql
search_info unless @opt.cmd =~/q/
end
end
diff --git a/lib/sisu/v3/cgi_pgsql.rb b/lib/sisu/v3/cgi_pgsql.rb
index 6fb35714..8b3f0224 100644
--- a/lib/sisu/v3/cgi_pgsql.rb
+++ b/lib/sisu/v3/cgi_pgsql.rb
@@ -56,19 +56,19 @@
** Description: generates naive cgi search form for search of sisu database (pgsql sqlite)
=end
-module SiSU_CGI_pgsql #% database building documents
+module SiSU_CGI_PgSQL #% database building documents
require_relative 'sysenv' # sysenv.rb
require_relative 'cgi_sql_common' # cgi_sql_common.rb
- include SiSU_CGI_sql
- class SiSU_search_pgsql < SiSU_CGI_common
+ include SiSU_CGI_SQL
+ class SearchPgSQL < CGI_Common
def initialize(opt,webserv)
@opt,@webserv=opt,webserv
- @env=SiSU_Env::Info_env.new('',opt)
- @sys=SiSU_Env::System_call.new
+ @env=SiSU_Env::InfoEnv.new('',opt)
+ @sys=SiSU_Env::SystemCall.new
@image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @common=SiSU_CGI_sql::SiSU_CGI_common.new(@webserv,@opt,@image_src,@env)
- @db=SiSU_Env::Info_db.new
- @cgi_file_name="#{Db[:name_prefix_db]}by_#{opt.dir_structure_by}_pgsql.cgi"
+ @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
+ @db=SiSU_Env::InfoDb.new
+ @cgi_file_name="#{Db[:name_prefix_db]}by_#{opt.dir_structure_by.to_s}_pgsql.cgi"
end
def pgsql
serve=[]
@@ -82,7 +82,7 @@ module SiSU_CGI_pgsql
end
else put "WARNING: no postgresql database available, (have you created one?)"
end
- serve.sort!
+ serve=serve.sort
f1,f2,f3='','',''
serve.each do |x|
f1 << %{ <option value="#{Db[:name_prefix]}#{x}">#{x}</option>\n} unless x =~/apache|sisu\/image/ #check
@@ -140,7 +140,7 @@ module SiSU_CGI_pgsql
end
def search_statement
<<-'WOK_SQL'
- class Dbi_search_string
+ class DBI_SearchString
def initialize(l,t,q,cse=false)
@l,@t,@q,@c=l,t,q,cse
end
@@ -151,12 +151,12 @@ module SiSU_CGI_pgsql
elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q)
end
search_construct=[]
- if @c
- unescaped_search.gsub!(/\s*(AND|OR)\s*/,"' \) \\1 #{@l}~\( '")
- unescaped_search.gsub!(/(.+)/,"#{@l}~\( '\\1' \)")
+ unescaped_search=if @c
+ unescaped_search.gsub(/\s*(AND|OR)\s*/,"' \) \\1 #{@l}~\( '").
+ gsub(/(.+)/,"#{@l}~\( '\\1' \)")
else
- unescaped_search.gsub!(/\s*(AND|OR)\s*/,"' \) \\1 #{@l}~*\( '")
- unescaped_search.gsub!(/(.+)/,"#{@l}~*\( '\\1' \)")
+ unescaped_search.gsub(/\s*(AND|OR)\s*/,"' \) \\1 #{@l}~*\( '").
+ gsub(/(.+)/,"#{@l}~*\( '\\1' \)")
end
search_construct << unescaped_search
search_construct=search_construct.join(' ')
@@ -173,11 +173,11 @@ module SiSU_CGI_pgsql
<<-'WOK_SQL'
@search_text,@search_endnotes='',''
search[:text].flatten.each {|x| @search_text << "#{x} AND " }
- @search_text=@search_text.gsub!(/AND\s+$/m,'') #watch
- @search_text.gsub!(/(doc_objects\.clean~[*]?\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean~[*]?\(\s*'[^']+'\s*\))+)/,'(\1)')
+ @search_text=@search_text.gsub(/AND\s+$/m,''). #watch
+ gsub(/(doc_objects\.clean~[*]?\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean~[*]?\(\s*'[^']+'\s*\))+)/,'(\1)')
search[:endnotes].flatten.each {|x| @search_endnotes << "#{x} AND " }
- @search_endnotes=@search_endnotes.gsub!(/AND\s+$/m,'') #watch
- @search_endnotes.gsub!(/(endnotes\.clean~\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean~\(\s*'[^']+'\s*\))+)/,'(\1)')
+ @search_endnotes=@search_endnotes.gsub(/AND\s+$/m,''). #watch
+ gsub(/(endnotes\.clean~\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean~\(\s*'[^']+'\s*\))+)/,'(\1)')
end
WOK_SQL
end
diff --git a/lib/sisu/v3/cgi_sql_common.rb b/lib/sisu/v3/cgi_sql_common.rb
index 9f4dd457..8a7c126f 100644
--- a/lib/sisu/v3/cgi_sql_common.rb
+++ b/lib/sisu/v3/cgi_sql_common.rb
@@ -56,8 +56,8 @@
** Description: generates naive cgi search form for search of sisu database (pgsql sqlite)
=end
-module SiSU_CGI_sql
- class SiSU_CGI_common
+module SiSU_CGI_SQL
+ class CGI_Common
def initialize(webserv,opt,image_src,dir)
@webserv,@opt,@image_src,@env=webserv,opt,image_src,dir
@cmd=opt.cmd
@@ -230,7 +230,7 @@ module SiSU_CGI_sql
end
def search_request
<<-'WOK_SQL'
- class Search_request #% search_for
+ class SearchRequest #% search_for
attr_accessor :text1,:fulltext,:keywords,:title,:author,:topic_register,:subject,:description,:publisher,:editor,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:filename
def initialize(search_field='',q='')
@search_field,@q=search_field,q
@@ -311,12 +311,10 @@ module SiSU_CGI_sql
elsif @search_field =~m[:string]; m[:string].match(@search_field)[1]
else
str=m[:word].match(@search_field)[1]
- str.gsub!(/[()]/,'')
+ str=str.gsub(/[()]/,'')
str
end
- search_string.strip!
- search_string.gsub!(/\s+/,'+')
- search_string
+ search_string=search_string.strip.search_string.gsub(/\s+/,'+')
#else
# "__"
end
@@ -326,7 +324,7 @@ module SiSU_CGI_sql
end
def search_statement_common
<<-'WOK_SQL'
- class Dbi_search_statement
+ class DBI_SearchStatement
attr_reader :text_search_flag,:sql_select_body_format,:sql_select_endnotes_format,:sql_offset,:sql_limit
def initialize(conn,search_for,q,c)
@conn=conn
@@ -336,114 +334,114 @@ module SiSU_CGI_sql
#@offset+=@@limit
search={ :text => [], :endnotes => [] }
cse=(c =~/\S/) ? true : false
- st=Dbi_search_string.new('doc_objects.clean',search_for.text1,q['s1'],cse).string
- se=Dbi_search_string.new('endnotes.clean',search_for.text1,q['s1'],cse).string
+ st=DBI_SearchString.new('doc_objects.clean',search_for.text1,q['s1'],cse).string
+ se=DBI_SearchString.new('endnotes.clean',search_for.text1,q['s1'],cse).string
@text_search_flag=st[:flag]
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << se[:search]
end
- st=Dbi_search_string.new('metadata_and_text.fulltext',search_for.fulltext,q['ft'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.fulltext',search_for.fulltext,q['ft'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.classify_keywords',search_for.keywords,q['key'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.classify_keywords',search_for.keywords,q['key'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.title',search_for.title,q['ti'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.title',search_for.title,q['ti'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.creator_author',search_for.author,q['au'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.creator_author',search_for.author,q['au'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.classify_topic_register',search_for.topic_register,q['tr'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.classify_topic_register',search_for.topic_register,q['tr'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.classify_subject',search_for.subject,q['sj'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.classify_subject',search_for.subject,q['sj'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.notes_description',search_for.description,q['dsc'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.notes_description',search_for.description,q['dsc'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.publisher',search_for.publisher,q['pb'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.publisher',search_for.publisher,q['pb'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.creator_editor',search_for.editor,q['cntr'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.creator_editor',search_for.editor,q['cntr'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.creator_contributor',search_for.contributor,q['cntr'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.creator_contributor',search_for.contributor,q['cntr'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.date_published',search_for.date,q['dt'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.date_published',search_for.date,q['dt'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.classify_type',search_for.type,q['ty'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.classify_type',search_for.type,q['ty'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.classify_identifier',search_for.identifier,q['id'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.classify_identifier',search_for.identifier,q['id'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.original_source',search_for.source,q['src'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.original_source',search_for.source,q['src'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.language_document_char',search_for.language,q['lang'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.language_document_char',search_for.language,q['lang'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.classify_relation',search_for.relation,q['rel'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.classify_relation',search_for.relation,q['rel'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.classify_coverage',search_for.coverage,q['cov'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.classify_coverage',search_for.coverage,q['cov'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.rights_all',search_for.rights,q['cr'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.rights_all',search_for.rights,q['cr'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.notes_comment',search_for.comment,q['co'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.notes_comment',search_for.comment,q['co'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.notes_abstract',search_for.abstract,q['ab'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.notes_abstract',search_for.abstract,q['ab'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
end
- st=Dbi_search_string.new('metadata_and_text.src_filename',search_for.filename,q['fns'],cse).string
+ st=DBI_SearchString.new('metadata_and_text.src_filename',search_for.filename,q['fns'],cse).string
if st[:flag]
search[:text] << st[:search]
search[:endnotes] << st[:search]
@@ -539,7 +537,7 @@ module SiSU_CGI_sql
WOK_SQL
end
def tail
- v=SiSU_Env::Info_version.instance.get_version
+ v=SiSU_Env::InfoVersion.instance.get_version
<<-WOK_SQL
def tail
<<-'WOK'
@@ -703,7 +701,7 @@ module SiSU_CGI_sql
def main2
<<-'WOK_SQL'
search_field=cgi['find'] if cgi['find'] # =~/\S+/
- @search_for=Search_request.new(search_field,q) #.analyze #% search_for
+ @search_for=SearchRequest.new(search_field,q) #.analyze #% search_for
#% searches
#Canned_search.new(@base,@search_for.text1,cgi)
if @search_for.text1=~/\S+/ or @search_for.fulltext=~/\S+/ or @search_for.author=~/\S+/ or @search_for.topic_register=~/\S+/ #and search_field =~/\S/
@@ -756,13 +754,13 @@ module SiSU_CGI_sql
elsif checked_all =~/checked/ or checked_url =~/checked/
canned_search=@@canned_search_url.scan(/(?:s1|ft|au|ti|fns|tr)=[^&]+/)
af=canned_search.join('; ')
- af.gsub!(/s1=/,'text: ')
- af.gsub!(/ft=/,'fulltxt: ')
- af.gsub!(/au=/,'author: ')
- af.gsub!(/ti=/,'title: ')
- af.gsub!(/fns=/,'filename: ')
- af.gsub!(/tr=/,'topic_register: ')
- af.gsub!(/%2B/,' ')
+ af=af.gsub(/s1=/,'text: ').
+ gsub(/ft=/,'fulltxt: ').
+ gsub(/au=/,'author: ').
+ gsub(/ti=/,'title: ').
+ gsub(/fns=/,'filename: ').
+ gsub(/tr=/,'topic_register: ').
+ gsub(/%2B/,' ')
analyze_format=af
st=af.split(/\s*;\s*/)
search_field=st.join("\n")
@@ -819,7 +817,7 @@ module SiSU_CGI_sql
@search[:endnotes]<<%{endnotes.clean~*'#{CGI.unescape(s1)}'}
end
#% dbi_request
- dbi_statement=Dbi_search_statement.new(@conn,@search_for,q,checked_case)
+ dbi_statement=DBI_SearchStatement.new(@conn,@search_for,q,checked_case)
@text_search_flag=false
@text_search_flag=dbi_statement.text_search_flag
s_contents=dbi_statement.contents
@@ -843,7 +841,7 @@ module SiSU_CGI_sql
end
def dir_structure
case @opt.dir_structure_by
- when /language/
+ when :language
<<-'WOK_SQL'
def path_manifest(fn,ln=nil)
"#{@hostpath}/#{ln}/manifest/#{fn}.html"
@@ -864,7 +862,7 @@ module SiSU_CGI_sql
"#{@hostpath}/#{ln}/html/#{fn}.html"
end
WOK_SQL
- when /filetype/
+ when :filetype
<<-'WOK_SQL'
def path_manifest(fn,ln=nil)
"#{@hostpath}/manifest/#{fn}.#{ln}.html"
@@ -916,7 +914,7 @@ module SiSU_CGI_sql
file_suffix=c['src_filename'][/.+?\.(_?sst|ssm)$/,1]
lang=if location =~ /\S+?~(\S\S\S?)$/
l=location[/\S+?~(\S\S\S?)$/,1]
- location.gsub!(/(\S+?)~\S\S\S?/,'\1')
+ location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
l=".#{l}"
else ''
end
@@ -1008,7 +1006,7 @@ module SiSU_CGI_sql
file_suffix=e['src_filename'][/.+?\.(_?sst|ssm)$/,1]
lang=if location =~ /\S+?~(\S\S\S?)$/
l=location[/\S+?~(\S\S\S?)$/,1]
- location.gsub!(/(\S+?)~\S\S\S?/,'\1')
+ location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
l=".#{l}"
else ''
end
diff --git a/lib/sisu/v3/cgi_sqlite.rb b/lib/sisu/v3/cgi_sqlite.rb
index a046fe31..9c2a6a8d 100644
--- a/lib/sisu/v3/cgi_sqlite.rb
+++ b/lib/sisu/v3/cgi_sqlite.rb
@@ -56,17 +56,17 @@
** Description: generates naive cgi search form for search of sisu database (pgsql sqlite)
=end
-module SiSU_CGI_sqlite #% database building documents
+module SiSU_CGI_SQLite #% database building documents
require_relative 'sysenv' # sysenv.rb
require_relative 'cgi_sql_common' # cgi_sql_common.rb
- include SiSU_CGI_sql
- class SiSU_search_sqlite < SiSU_CGI_common
+ include SiSU_CGI_SQL
+ class SearchSQLite < CGI_Common
def initialize(opt,webserv)
@opt,@webserv=opt,webserv
- @env=SiSU_Env::Info_env.new('',opt)
+ @env=SiSU_Env::InfoEnv.new('',opt)
@image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @common=SiSU_CGI_sql::SiSU_CGI_common.new(@webserv,@opt,@image_src,@env)
- @cgi_file_name="#{Db[:name_prefix_db]}by_#{opt.dir_structure_by}_sqlite.cgi"
+ @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
+ @cgi_file_name="#{Db[:name_prefix_db]}by_#{opt.dir_structure_by.to_s}_sqlite.cgi"
end
def sqlite
serve=[]
@@ -78,7 +78,7 @@ module SiSU_CGI_sqlite
end
end
end
- serve.sort!
+ serve=serve.sort
f1,f2,f3='','',''
serve.each do |x|
f1 << %{ <option value="#{Db[:name_prefix]}#{x}">#{x}</option>\n}
@@ -137,7 +137,7 @@ module SiSU_CGI_sqlite
end
def search_statement
<<-'WOK_SQL'
- class Dbi_search_string
+ class DBI_SearchString
def initialize(l,t,q,cse=false)
@l,@t,@q=l,t,q
end
@@ -148,8 +148,8 @@ module SiSU_CGI_sqlite
elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q)
end
search_construct=[]
- unescaped_search.gsub!(/\s*(AND|OR)\s*/,"%' \) \\1 #{@l} LIKE \( '%")
- unescaped_search.gsub!(/(.+)/,"#{@l} LIKE \( '%\\1%' \)")
+ unescaped_search=unescaped_search.gsub(/\s*(AND|OR)\s*/,"%' \) \\1 #{@l} LIKE \( '%").
+ gsub(/(.+)/,"#{@l} LIKE \( '%\\1%' \)")
search_construct << unescaped_search
search_construct=search_construct.join(' ')
search[:search] << search_construct
@@ -165,11 +165,11 @@ module SiSU_CGI_sqlite
<<-'WOK_SQL'
@search_text,@search_endnotes='',''
search[:text].flatten.each {|x| @search_text << "#{x} AND " }
- @search_text=@search_text.gsub!(/AND\s+$/m,'')
- @search_text.gsub!(/(doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
+ @search_text=@search_text.gsub(/AND\s+$/m,'').
+ gsub(/(doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
search[:endnotes].flatten.each {|x| @search_endnotes << "#{x} AND " }
- @search_endnotes=@search_endnotes.gsub!(/AND\s+$/m,'')
- @search_endnotes.gsub!(/(endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
+ @search_endnotes=@search_endnotes.gsub(/AND\s+$/m,'').
+ gsub(/(endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
end
WOK_SQL
end
diff --git a/lib/sisu/v3/character_encoding.rb b/lib/sisu/v3/character_encoding.rb
index 0b565fb9..1931c466 100644
--- a/lib/sisu/v3/character_encoding.rb
+++ b/lib/sisu/v3/character_encoding.rb
@@ -57,7 +57,7 @@
output generators [requires kirbybase]
=end
-module SiSU_character_encode
+module SiSU_CharacterEncode
require 'kirbybase'
require_relative 'sysenv' # sysenv.rb
class Characters
@@ -73,7 +73,7 @@ module SiSU_character_encode
@ce_tbl=@db.create_table.documents(:character_encoding, :glyph,:String, :dec,:Integer, :hex,:String, :rb,:String, :html,:String, :html_name,:String, :tex,:String, :tex_licr,:String, :tex_alt,:String, :name,:String)
end
def db
- x=Character_encoding.new.table
+ x=CharacterEncoding.new.table
#x.each {|y| puts y[2].inspect}
x.each do |c|
#puts "#{c[0]}, #{c[1]}, #{c[2]}, #{c[3]}, #{c[4]}, #{c[5]}, #{c[6]}, #{c[7]}, #{c[8]}, #{c[9]}"
@@ -138,7 +138,7 @@ module SiSU_character_encode
end
end
end
- class Character_encoding
+ class CharacterEncoding
def table
x=[]
#:glyph, :dec,:hex, :rb, :xml , :html_name, :tex, :tex_licr, :tex_alt, :name
diff --git a/lib/sisu/v3/composite.rb b/lib/sisu/v3/composite.rb
index 95be6d1e..21adb030 100644
--- a/lib/sisu/v3/composite.rb
+++ b/lib/sisu/v3/composite.rb
@@ -59,9 +59,9 @@
=end
module SiSU_Assemble
require_relative 'sysenv' # sysenv.rb
- class Remote_image
+ class RemoteImage
def initialize
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def image(dir)
images=[]
@@ -82,7 +82,7 @@ module SiSU_Assemble
end
output_path="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external"
FileUtils::mkdir_p(output_path) unless FileTest.directory?(output_path)
- SiSU_Env::System_call.new("#{path}/*",output_path,'q').rsync
+ SiSU_Env::SystemCall.new("#{path}/*",output_path,'q').rsync
end
def download_doc_skin(doc_skin) #first element in array is source url
path="#{@env.processing_path.processing}/external_document/skin/doc"
@@ -104,14 +104,14 @@ module SiSU_Assemble
@@imager={}
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def read
begin
@fns_array=IO.readlines(@opt.fns,'')
assembled=insertions?
write(assembled)
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -161,11 +161,11 @@ module SiSU_Assemble
end
if not @code_flag \
and i !~/^%+\s/
- i.gsub!(/^([123]|:?[ABC])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax)
+ i=i.gsub(/^([123]|:?[ABC])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax)
if i =~/^@\S+?:/
- i.gsub!(/\n/m,"\n% ")
- i.gsub!(/\n%\s+$/m,'')
- i.gsub!(/^@\S+?:/m,"\n% [imported header:] ") #off imported headers
+ i=i.gsub(/\n/m,"\n% ").
+ gsub(/\n%\s+$/m,'').
+ gsub(/^@\S+?:/m,"\n% [imported header:] ") #off imported headers
end
end
file[:prepared] << i
@@ -176,8 +176,7 @@ module SiSU_Assemble
end
file[:prepared] << "\n% end import" << "\n\n"
if file[:images].length > 0
- file[:images].flatten!
- file[:images].uniq!
+ file[:images]=file[:images].flatten.uniq
file[:images].delete_if {|x| x =~/https?:\/\// }
end
file
@@ -218,32 +217,30 @@ module SiSU_Assemble
end
else tuned_file << para
end
- tuned_file.flatten!
- tuned_file.compact!
+ tuned_file=tuned_file.flatten.compact
end
if @@imager.length >0
@@imager.each do |d,i|
- i.flatten!
- i.uniq!
+ i=i.flatten.uniq
image_info=d + i
- download_images(mage_info.flatten)
+ download_images(image_info.flatten)
end
end
tuned_file
end
end
- class Composite_file_list
+ class CompositeFileList
@@imager={}
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def read
begin
@opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm') #FIX earlier, hub
@fns_array=IO.readlines(@opt.fns,'')
files=insertions?
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
diff --git a/lib/sisu/v3/concordance.rb b/lib/sisu/v3/concordance.rb
index 96101585..3d8ab38a 100644
--- a/lib/sisu/v3/concordance.rb
+++ b/lib/sisu/v3/concordance.rb
@@ -70,7 +70,7 @@ module SiSU_Concordance
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
begin
@@ -95,23 +95,23 @@ module SiSU_Concordance
SiSU_Screen::Ansi.new(@md.opt.cmd,"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.cmd =~/q/
SiSU_Concordance::Source::Words.new(@particulars).songsheet
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
private
- class Doc_title
+ 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
require_relative 'html' # html.rb
def initialize(particulars)
@particulars,@md=particulars,particulars.md
- @data=SiSU_HTML::Source::Html_environment.new(particulars).tuned_file_instructions
- @file=SiSU_Env::SiSU_file.new(@md)
- @vz=SiSU_Env::Get_init.instance.skin
+ @data=SiSU_HTML::Source::HTML_Environment.new(particulars).tuned_file_instructions
+ @file=SiSU_Env::FileOp.new(@md)
+ @vz=SiSU_Env::GetInit.instance.skin
txt_path=%{#{@md.dir_out}}
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
@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="#{@file.path_rel_links.html_seg_2}_sisu/image/sisu.png" alt="SiSU home --&gt;"></a>}
@doc_details =<<WOK
@@ -119,10 +119,21 @@ module SiSU_Concordance
WOK
end
def create
- head_banner=SiSU_HTML_Format::Head_toc.new(@md)
- minitoc=SiSU_HTML_minitoc::Toc_mini.new(@md,@data).songsheet.join("\n")
- @css=SiSU_Env::CSS_stylesheet.new(@md)
- toc='<div class="toc">' + minitoc + '</div>'
+ head_banner=SiSU_HTML_Format::HeadToc.new(@md)
+ minitoc=SiSU_HTML_MiniToc::TocMini.new(@md,@data).songsheet.join("\n")
+ stylesheet=SiSU_Style::CSS_HeadInfo.new(@md).stylesheet
+ make=SiSU_Env::ProcessingSettings.new(@md)
+ if make.build.manifest_minitoc?
+ toc='<div class="toc">' + minitoc + '</div>'
+ div_class='content'
+ else
+ toc=''
+ div_class='content0'
+ end
+ top_band=if make.build.html_top_band?
+ head_banner.concordance_navigation_band('pdf')
+ else ''
+ end
<<WOK
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
@@ -136,14 +147,14 @@ WOK
<meta name="generator" content="SiSU (Linux &amp; Ruby!)">
<link rel="generator" href="http://www.jus.uio.no/sisu" />
<link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
- #{@css.html_seg}
+ #{stylesheet.css_head_seg}
#{@vz.js_head}
</head>
<body>
#{@vz.js_top}
- #{head_banner.concordance_navigation_band('pdf')}
+ #{top_band}
#{toc}
-<div class="content">
+<div class="#{div_class}">
#{@doc_details}
<p>Word index links are to html versions of the text the segmented version followed by the scroll (single document) version.<br />[For segmented text references [T1], [T2] or [T3] appearing without a link, indicates that the word appears in a title (or subtitle) of the text (that is identifiable by the appended object citation number).]</p>
<p>(The word listing/index is Case sensitive: Capitalized words appear before lower case)</p>
@@ -185,11 +196,11 @@ WOK
def initialize(particulars)
@particulars=particulars
begin
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
@freq=Hash.new(0)
- @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
@rxp_lv1=/^#{Mx[:lv_o]}1:/ #fix @rxp_lv # Mx[:lv_o]
@rxp_lv2=/^#{Mx[:lv_o]}2:/ #fix @rxp_lv # Mx[:lv_o]
@rxp_lv3=/^#{Mx[:lv_o]}3:/ #fix @rxp_lv # Mx[:lv_o]
@@ -203,7 +214,7 @@ WOK
@alph=SiSU_i18n::Alphabet.new(@md.opt.lng).hash_arrays
@alphlst=SiSU_i18n::Alphabet.new(@md.opt.lng).hash_strings
@rgx_scanlist=%r{#{Mx[:fa_italics_o]}[#{@alphlst[:l]}#{@alphlst[:u]}0-9"\s]{2,12}#{Mx[:fa_italics_c]}|#{Mx[:fa_bold_o]}[#{@alphlst[:l]}#{@alphlst[:u]}0-9"\s]{2,12}#{Mx[:fa_bold_c]}|(?:https?|file)://\S+|<\S+?>|[#{@alphlst[:l]}#{@alphlst[:u]}]+|\w+}mi
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
def songsheet
@@ -211,7 +222,7 @@ WOK
FileUtils::mkdir_p(@file.output_path.html_concordance.dir) unless FileTest.directory?(@file.output_path.html_concordance.dir)
@file_concordance=File.open(@file.place_file.html_concordance.dir,'w')
map_para
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
@file_concordance.close
end
@@ -238,61 +249,63 @@ WOK
@dal_array.each do |line|
if defined? line.ocn \
and line.ocn.to_s =~/\d/
- if line.is =~/heading/ \
- and line.ln==4
+ if (line.is ==:heading \
+ || line.is ==:heading_insert) \
+ && line.ln==4
@seg=line.name
end
ocn=line.ocn.to_s
if ocn =~/\d+/ \
and ocn !~/^0$/
- line.obj.gsub!(/#{@rxp_excluded1}/,' ')
+ line.obj=line.obj.gsub(/#{@rxp_excluded1}/,' ')
line.obj=line.obj.split(@rgx_splitlist).join(' ') #%take in word or other match
for word in line.obj.scan(@rgx_scanlist) #%take in word or other match
if word =~ /^([#{@alphlst[:l]}])/
firstletter=$1
flu=firstletter.tr(@alphlst[:l],@alphlst[:u])
- word.gsub!(/^#{firstletter}/,flu )
+ word=word.gsub(/^#{firstletter}/,flu )
end
- word.gsub!(/#{Mx[:lnk_o]}|#{Mx[:lnk_c]}|#{Mx[:url_o]}|#{Mx[:url_c]}/,'')
- word.gsub!(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'')
- word.gsub!(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'')
- word.gsub!(/#{Mx[:gl_o]}#[a-z]+#{Mx[:gl_c]}/,'')
- word.gsub!(/#{Mx[:gl_o]}#[0-9]+#{Mx[:gl_c]}/,'')
- word.gsub!(/[0-9a-f]{10,}/,' ') if word =~/[0-9]/
- word.gsub!(/#{Mx[:br_line]}/,' ')
- word.gsub!(/^ +/,'')
- word.gsub!(/^\S$/,'')
+ word=word.gsub(/#{Mx[:lnk_o]}|#{Mx[:lnk_c]}|#{Mx[:url_o]}|#{Mx[:url_c]}/,'').
+ gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').
+ gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
+ gsub(/#{Mx[:gl_o]}#[a-z]+#{Mx[:gl_c]}/,'').
+ gsub(/#{Mx[:gl_o]}#[0-9]+#{Mx[:gl_c]}/,'')
+ word=word.gsub(/[0-9a-f]{10,}/,' ') if word =~/[0-9]/
+ word=word.gsub(/#{Mx[:br_line]}/,' ').
+ gsub(/^ +/,'').
+ gsub(/^\S$/,'')
word=nil if word.empty?
word=nil if word =~@rxp_excluded0 #watch
word=nil if word =~/^\S$/
if word
- word.gsub!(/#{Mx[:br_nl]}|#{Mx[:br_line]}/,' ')
- word.gsub!(/#{Mx[:fa_o]}[a-z]{1,7}#{Mx[:fa_o_c]}|#{Mx[:fa_c_o]}[a-z]{1,7}#{Mx[:fa_c]}/,'')
- word.gsub!(/#{Mx[:en_a_o]}(?:\d|[*+])*|#{Mx[:en_b_o]}(?:\d|[*+])*|#{Mx[:en_a_c]}|#{Mx[:en_b_c]}/mi,'')
- word.gsub!(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,''); word.gsub!(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'')
- word.gsub!(/<\/?\S+?>/,'')
- word.gsub!(/^\@+/,'')
- word.strip!
- word.gsub!(/#{Mx[:tc_p]}.+/,'')
- word.gsub!(/[\.,;:"]$/,'')
- word.gsub!(/["]/,'')
- word.gsub!(/^\s*[\(]/,'')
- word.gsub!(/[\(]\s*$/,'')
- word.gsub!(/^(?:See|e\.?g\.?).+/,'')
- word.gsub!(/^\s*[.,;:]\s*/,'')
- word.strip!
- word.gsub!(/^\(?[a-zA-Z]\)$/,'')
- word.gsub!(/^\d+(st|nd|rd|th)$/,'')
- word.gsub!(/^(\d+\.?)+$/, '')
- word.gsub!(/#{Mx[:mk_o]}|#{Mx[:mk_c]}/,'')
- word.gsub!(/:name#\S+/,'')
- word.gsub!(/^\S$/,'')
+ word=word.gsub(/#{Mx[:br_nl]}|#{Mx[:br_line]}/,' ').
+ gsub(/#{Mx[:fa_o]}[a-z]{1,7}#{Mx[:fa_o_c]}|#{Mx[:fa_c_o]}[a-z]{1,7}#{Mx[:fa_c]}/,'').
+ gsub(/#{Mx[:en_a_o]}(?:\d|[*+])*|#{Mx[:en_b_o]}(?:\d|[*+])*|#{Mx[:en_a_c]}|#{Mx[:en_b_c]}/mi,'').
+ gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').
+ gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
+ gsub(/<\/?\S+?>/,'').
+ gsub(/^\@+/,'').
+ strip.
+ gsub(/#{Mx[:tc_p]}.+/,'').
+ gsub(/[\.,;:"]$/,'').
+ gsub(/["]/,'').
+ gsub(/^\s*[\(]/,'').
+ gsub(/[\(]\s*$/,'').
+ gsub(/^(?:See|e\.?g\.?).+/,'').
+ gsub(/^\s*[.,;:]\s*/,'').
+ strip.
+ gsub(/^\(?[a-zA-Z]\)$/,'').
+ gsub(/^\d+(st|nd|rd|th)$/,'').
+ gsub(/^(\d+\.?)+$/, '').
+ gsub(/#{Mx[:mk_o]}|#{Mx[:mk_c]}/,'').
+ gsub(/:name#\S+/,'').
+ gsub(/^\S$/,'')
word=nil if word =~/^\S$/
word=nil if word =~/^\s*$/ #watch
if word
unless word =~/[A-Z][A-Z]/ \
or word =~/\w+\s\w+/
- word.capitalize!
+ word=word.capitalize
end
@freq[word] +=1
@word_map[word] ||= []
@@ -315,9 +328,9 @@ WOK
end
scr='<font size="1" color="#777777" face=times new roman><img border="0" height="15" width="15" src="../_sisu/image/b_doc.png" alt="Full Text">&nbsp;scroll:&nbsp;</font><font size="1" color="#222222" face=times new roman>doc#&nbsp;</font> '
seg=''
- head=SiSU_Concordance::Source::Doc_title.new(@particulars).create
- head.gsub!(/#{Xx[:html_relative2]}/m,@file.path_rel_links.html_seg_2)
- head.gsub!(/#{Xx[:html_relative1]}/m,@file.path_rel_links.html_seg_1)
+ head=SiSU_Concordance::Source::DocTitle.new(@particulars).create
+ head=head.gsub(/#{Xx[:html_relative2]}/m,@file.path_rel_links.html_seg_2).
+ gsub(/#{Xx[:html_relative1]}/m,@file.path_rel_links.html_seg_1)
@file_concordance << head
@file_concordance << '<p>'
alph=@alph[:u]
diff --git a/lib/sisu/v3/conf.rb b/lib/sisu/v3/conf.rb
index 05bc8608..5eb1b116 100644
--- a/lib/sisu/v3/conf.rb
+++ b/lib/sisu/v3/conf.rb
@@ -61,7 +61,7 @@ module SiSU_Initialize
include SiSU_Env
include SiSU_Screen
require_relative 'relaxng' # relaxng.rb
- include SiSU_relaxng
+ include SiSU_Relaxng
require_relative 'css' # css.rb
include SiSU_Style
class Source
@@ -69,19 +69,19 @@ module SiSU_Initialize
@opt=opt
end
def read
- SiSU_Config.new(@opt).make_homepage
- SiSU_Config.new(@opt).css
- SiSU_Config.new(@opt).dtd
- SiSU_Config.new(@opt).cp_local_images
- SiSU_Config.new(@opt).cp_external_images
- SiSU_Config.new(@opt).cp_webserver_images #if @opt.mod.inspect =~/--init(?:ialize)?=site/
+ ConfigSite.new(@opt).make_homepage
+ ConfigSite.new(@opt).css
+ ConfigSite.new(@opt).dtd
+ ConfigSite.new(@opt).cp_local_images
+ ConfigSite.new(@opt).cp_external_images
+ ConfigSite.new(@opt).cp_webserver_images #if @opt.mod.inspect =~/--init(?:ialize)?=site/
end
end
- class SiSU_Config #config files such as css are not updated if they already exist unless forced using the --init=site modifier
+ class ConfigSite #config files such as css are not updated if they already exist unless forced using the --init=site modifier
require_relative 'sysenv' # sysenv.rb
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
@suffix,@path={},{}
@suffix[:rnc]='rnc'
@suffix[:rng]='rng'
@@ -94,30 +94,30 @@ module SiSU_Initialize
end
def make_homepage
SiSU_Screen::Ansi.new(@opt.cmd,'invert','Make homepage','').colorize unless @opt.cmd =~/q/
- SiSU_Env::Create_site.new(@opt.cmd).homepage
+ SiSU_Env::CreateSite.new(@opt.cmd).homepage
end
def cp_local_images
SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy images','').colorize unless @opt.cmd =~/q/
- SiSU_Env::Create_site.new(@opt.cmd).cp_local_images
- SiSU_Env::Create_site.new(@opt.cmd).cp_webserver_images_local #this should not have been necessary
- SiSU_Env::Create_site.new(@opt.cmd).cp_base_images #base images (nav etc.) used by all html
+ SiSU_Env::CreateSite.new(@opt.cmd).cp_local_images
+ SiSU_Env::CreateSite.new(@opt.cmd).cp_webserver_images_local #this should not have been necessary
+ SiSU_Env::CreateSite.new(@opt.cmd).cp_base_images #base images (nav etc.) used by all html
end
def cp_external_images
SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy external images','').colorize if @opt.cmd =~/V/
- SiSU_Env::Create_site.new(@opt.cmd).cp_external_images
+ SiSU_Env::CreateSite.new(@opt.cmd).cp_external_images
end
def cp_webserver_images
SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy webserver/output file images','').colorize unless @opt.cmd =~/q/
- SiSU_Env::Create_site.new(@opt.cmd).cp_webserver_images
- SiSU_Env::Create_system_link.new.images
+ SiSU_Env::CreateSite.new(@opt.cmd).cp_webserver_images
+ SiSU_Env::CreateSystemLink.new.images
end
def css
SiSU_Screen::Ansi.new(@opt.cmd,'invert','Configuring CSSs','').colorize unless @opt.cmd =~/q/
- SiSU_Env::Create_site.new(@opt.cmd).cp_css
+ SiSU_Env::CreateSite.new(@opt.cmd).cp_css
end
def dtd
SiSU_Screen::Ansi.new(@opt.cmd,'invert','Configuring DTDs','').colorize unless @opt.cmd =~/q/
- @rxng=SiSU_relaxng::RelaxNG.new
+ @rxng=SiSU_Relaxng::RelaxNG.new
@path.each { |d| FileUtils::mkdir_p(d[1]) unless FileTest.directory?(d[1]) }
#ugly code, sort later
if @rxng.methods.join =~/[^_]dtd_sax\b/
@@ -167,10 +167,10 @@ module SiSU_Initialize
rnc << @rxng.rnc_model_output_sax
rnc.close
#xsd
- schema=SiSU_Env::System_call.new(rnc_src,xsd_file)
+ schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
schema.relaxng(@opt.cmd)
#rng
- schema=SiSU_Env::System_call.new(rnc_src,rng_file)
+ schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
schema.relaxng(@opt.cmd)
#rnc
FileUtils::cp(rnc_src,rnc_file)
@@ -186,10 +186,10 @@ module SiSU_Initialize
rnc << @rxng.rnc_model_output_dom
rnc.close
#xsd
- schema=SiSU_Env::System_call.new(rnc_src,xsd_file)
+ schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
schema.relaxng(@opt.cmd)
#rng
- schema=SiSU_Env::System_call.new(rnc_src,rng_file)
+ schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
schema.relaxng(@opt.cmd)
#rnc
FileUtils::cp(rnc_src,rnc_file)
@@ -205,10 +205,10 @@ module SiSU_Initialize
rnc << @rxng.rnc_model_output_xhtml
rnc.close
#xsd
- schema=SiSU_Env::System_call.new(rnc_src,xsd_file)
+ schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
schema.relaxng(@opt.cmd)
#rng
- schema=SiSU_Env::System_call.new(rnc_src,rng_file)
+ schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
schema.relaxng(@opt.cmd)
#rnc
FileUtils::cp(rnc_src,rnc_file)
@@ -220,7 +220,7 @@ module SiSU_Initialize
rnc=File.new(rnc_file,'w')
rnc << @rxng.rnc_model_output_sax
rnc.close
- schema=SiSU_Env::System_call.new(rnc_file,dtd_file)
+ schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
schema.relaxng(@opt.cmd)
end
def trang_rnc_model_input_dom
@@ -229,7 +229,7 @@ module SiSU_Initialize
rnc=File.new(rnc_file,'w')
rnc << @rxng.rnc_model_output_dom
rnc.close
- schema=SiSU_Env::System_call.new(rnc_file,dtd_file)
+ schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
schema.relaxng(@opt.cmd)
end
def trang_rnc_model_input_node
@@ -239,7 +239,7 @@ module SiSU_Initialize
rnc=File.new(rnc_file,'w')
rnc << @rxng.rnc_model_input_node
rnc.close
- schema=SiSU_Env::System_call.new(rnc_file,dtd_file)
+ schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
schema.relaxng(@opt.cmd)
end
end
diff --git a/lib/sisu/v3/constants.rb b/lib/sisu/v3/constants.rb
index d39c56ea..439dee68 100644
--- a/lib/sisu/v3/constants.rb
+++ b/lib/sisu/v3/constants.rb
@@ -273,8 +273,8 @@ puts "#{__FILE__} #{__LINE__} #{o.inspect}"
puts __FILE__ + ' ' + __LINE__.to_s + '--> ' + o.inspect
puts %{-\t#{__FILE__}::#{__LINE__}::#{caller}:\n"#{name}"}
p "\t" + txt.obj + " << #{__FILE__} #{__LINE__} >>"
-p (__FILE__ + ' ' + __LINE__.to_s + '--> ' + dob.inspect) if dob.is=='heading'
-data.each {|o| p (__FILE__ + ' ' + __LINE__.to_s + '--> ' + o.inspect) if o.is=='heading'}
+p (__FILE__ + ' ' + __LINE__.to_s + '--> ' + dob.inspect) if dob.is==:heading
+data.each {|o| p (__FILE__ + ' ' + __LINE__.to_s + '--> ' + o.inspect) if o.is==:heading}
puts "#{__FILE__} #{__LINE__} #{para}" if @opt.cmd =~/M/
puts "#{__FILE__} #{__LINE__} #{t_o}" if @opt.cmd =~/M/
dr ┌ 9484 dR ┍ 9485 Dr ┎ 9486 DR ┏ 9487 dl ┐ 9488 dL ┑ 9489 Dl ┒ 9490 LD ┓ 9491 ur └ 9492 uR ┕ 9493 Ur ┖ 9494 UR ┗ 9495 ul ┘ 9496 uL ┙ 9497 Ul ┚ 9498 UL ┛ 9499 vr ├
diff --git a/lib/sisu/v3/css.rb b/lib/sisu/v3/css.rb
index 348c89e7..cbbd05ca 100644
--- a/lib/sisu/v3/css.rb
+++ b/lib/sisu/v3/css.rb
@@ -59,9 +59,101 @@
module SiSU_Style
require_relative 'sysenv' # sysenv.rb
require_relative 'defaults' # defaults.rb
+ class CSS_HeadInfo
+ def initialize(md,ft='html')
+ @md,@ft=md,ft
+ @env=SiSU_Env::InfoEnv.new('',md)
+ @fn_css ||=SiSU_Env::CSS_Default.new
+ @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
+ css_copy
+ end
+ def stylesheet
+ def css_path
+ SiSU_Env::CSS_Stylesheet.new(@md)
+ end
+ def css_embed_content
+ @css_embed_content ||=SiSU_Style::CSS.new
+ end
+ def css_embed?
+ if @ft=='html' \
+ && @o_str.dump_or_redirect?
+ true
+ else
+ false
+ end
+ end
+ def css_embed(css)
+ <<-WOK
+ <style TYPE="text/css">
+ #{css}
+ </style>
+ WOK
+ end
+ def css_action
+ style_css=SiSU_Style::CSS.new
+ css=case @ft
+ when 'html'
+ css=css_embed_content.html
+ css_embed(css)
+ when 'xhtml'
+ css_path.xhtml
+ when 'xml_sax'
+ css_path.xml_sax
+ when 'xml_dom'
+ css_path.xml_dom
+ else
+ css_embed_content.html
+ end
+ end
+ def css_head
+ (css_embed?) \
+ ? css_action
+ : "#{css_path.html}#{css_path.html_seg}"
+ end
+ def css_head_seg
+ (css_embed?) \
+ ? css_action
+ : css_path.html_seg
+ end
+ def css_head_xml
+ css_action
+ end
+ self
+ end
+ def css_copy
+ if @o_str.dump_or_redirect?
+ css=SiSU_Style::CSS.new
+ if @o_str.dump?
+ css_pth="#{@md.opt.opt_act[:dump][:inst]}/#{@env.path.style}"
+ elsif @o_str.redirect?
+ css_pth="#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}/#{@env.path.style}"
+ end
+ FileUtils::mkdir_p(css_pth) unless FileTest.directory?(css_pth)
+ case @ft
+ when 'html'
+ style=File.new("#{css_pth}/#{@fn_css.html}",'w')
+ style << css.html
+ style.close
+ when 'xhtml'
+ style=File.new("#{css_pth}/#{@fn_css.xhtml}",'w')
+ style << css.xhtml
+ style.close
+ when 'xml_sax'
+ style=File.new("#{css_pth}/#{@fn_css.xml_sax}",'w')
+ style << css.xml_sax
+ style.close
+ when 'xml_dom'
+ style=File.new("#{css_pth}/#{@fn_css.xml_dom}",'w')
+ style << css.xml_dom
+ style.close
+ css_path.xml_dom
+ end
+ end
+ end
+ end
class CSS
def initialize
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def fonts
@vz.font_fonts
@@ -1442,12 +1534,12 @@ WOK
padding-left: 1em;
padding-right: 1em;
}
-/*
- div.content {
- margin-left: 1em;
- margin-right: 1em;
+ div.content0, div.main_column0 {
+ margin: 0;
+ padding: 0;
+ border-left: 0% solid #ffffff;
+ padding-left: 5%;
}
-*/
div.scroll {
margin: 0;
padding: 0;
diff --git a/lib/sisu/v3/dal.rb b/lib/sisu/v3/dal.rb
index 50cf94f9..bd8d32dd 100644
--- a/lib/sisu/v3/dal.rb
+++ b/lib/sisu/v3/dal.rb
@@ -66,7 +66,7 @@ module SiSU_DAL
include SiSU_Param
require_relative 'dal_doc_objects' # dal_doc_objects.rb
require_relative 'dal_syntax' # dal_syntax.rb
- include SiSU_Syntax
+ 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
@@ -94,9 +94,9 @@ module SiSU_DAL
@opt,@fnx=opt,fnx
@@fns||@opt.fns
@make_fns=if @fnx and @fnx =~/\.ss[tmi]$/
- SiSU_Env::Info_file.new(@fnx)
+ SiSU_Env::InfoFile.new(@fnx)
else
- SiSU_Env::Info_file.new(@opt.fns)
+ SiSU_Env::InfoFile.new(@opt.fns)
end
@fnm=@make_fns.marshal.dal_metadata
@fnc=@make_fns.marshal.dal_content
@@ -106,8 +106,8 @@ module SiSU_DAL
@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
- SiSU_Env::Create_system_link.new.images
- @env=SiSU_Env::Info_env.new
+ SiSU_Env::CreateSystemLink.new.images
+ @env=SiSU_Env::InfoEnv.new
end
def read #creates dal
begin
@@ -117,9 +117,9 @@ module SiSU_DAL
? @fnx
: @opt.fns
create_dal
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@@fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@@fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
def get #reads dal, unless does not exist then creates first
@@ -133,9 +133,9 @@ module SiSU_DAL
@@dal_array=[]
end
dal=(@@dal_array.empty?) ? read_fnc : @@dal_array.dup
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
def get_idx_sst #reads dal idx.sst, #unless does not exist then creates first
@@ -149,9 +149,9 @@ module SiSU_DAL
@@idx_arr[:sst]=[]
end
dal=(@@idx_arr[:sst].empty?) ? read_idx_sst : @@idx_arr[:sst].dup #check
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
def get_idx_tex #reads dal idx.tex, #unless does not exist then creates first
@@ -165,9 +165,9 @@ module SiSU_DAL
@@idx_arr[:tex]=[]
end
dal=(@@idx_arr[:tex].empty?) ? read_idx_tex : @@idx_arr[:tex].dup #check
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
def get_idx_html #reads dal idx.html, #unless does not exist then creates first
@@ -181,9 +181,9 @@ module SiSU_DAL
@@idx_arr[:html]=[]
end
dal=(@@idx_arr[:html].empty?) ? read_idx_html : @@idx_arr[:html].dup
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
def get_idx_xhtml #reads dal idx.xhtml, #unless does not exist then creates first
@@ -197,9 +197,9 @@ module SiSU_DAL
@@idx_arr[:xthml]=[]
end
dal=(@@idx_arr[:xhtml].empty?) ? read_idx_xhtml : @@idx_arr[:xhtml].dup
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
def get_map_nametags #reads dal map.nametags, #unless does not exist then creates first
@@ -213,9 +213,9 @@ module SiSU_DAL
@@map_arr[:nametags]=[]
end
dal=(@@map_arr[:nametags].empty?) ? read_map_nametags : @@map_arr[:nametags].dup
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
def get_map_ocn_htmlseg #reads dal map.ocn_htmlseg, #unless does not exist then creates first
@@ -229,9 +229,9 @@ module SiSU_DAL
@@map_arr[:ocn_htmlseg]=[]
end
dal=(@@map_arr[:ocn_htmlseg].empty?) ? read_map_ocn_htmlseg : @@map_arr[:ocn_htmlseg].dup
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
- Instantiate.new
+ SiSU_DAL::Instantiate.new
end
end
protected
@@ -257,7 +257,7 @@ module SiSU_DAL
meta=nil
dal=SiSU_DAL::Make.new(fn,@md,file_array).song
if @opt.cmd =~/[vM]/
- cf=SiSU_Env::Create_file.new(fn)
+ cf=SiSU_Env::CreateFile.new(fn)
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"~meta/#{@opt.fns}.meta").output if @opt.cmd =~/v/i
SiSU_Screen::Ansi.new(@opt.cmd,"dal -> #{cf.meta}").txt_grey if @opt.cmd =~/M/
end
@@ -340,16 +340,16 @@ module SiSU_DAL
class Output
def initialize(fn,md,data)
@fn,@md,@data=fn,md,data
- @cf=SiSU_Env::Create_file.new(@fn)
- @make=SiSU_Env::Info_file.new(@fn)
- @dir=SiSU_Env::Info_env.new(@fn)
+ @cf=SiSU_Env::CreateFile.new(@fn)
+ @make=SiSU_Env::InfoFile.new(@fn)
+ @dir=SiSU_Env::InfoEnv.new(@fn)
end
def screen_dump(o)
if defined? o.of
print %{OF: #{o.of}; }
end
if defined? o.is
- print %{IS: #{o.is}; }
+ print %{IS: #{o.is.to_s}; }
end
if defined? o.ocn
print %{OCN: #{o.ocn}; }
@@ -386,15 +386,15 @@ module SiSU_DAL
@data.each do |o|
if defined? o.ocn
filename_txt.puts case o.is
- when 'heading'
- "[#{o.is} #{o.lv}~#{o.name} [#{o.ocn}]] #{o.obj}"
- else "[#{o.is} [#{o.ocn}]] #{o.obj}"
+ when :heading
+ "[#{o.is.to_s} #{o.lv}~#{o.name} [#{o.ocn}]] #{o.obj}"
+ else "[#{o.is.to_s} [#{o.ocn}]] #{o.obj}"
end
else
filename_txt.puts case o.is
- when 'meta'
+ when :meta
"[m~#{o.tag}] #{o.obj}"
- else "[#{o.is}] #{o.obj}"
+ else "[#{o.is.to_s}] #{o.obj}"
end
end
end
@@ -402,8 +402,8 @@ module SiSU_DAL
@data.each do |o|
if defined? o.ocn
case o.is
- when 'heading'
- filename_debug.puts "#{o.is} #{o.lv}~#{o.name} odv=#{o.odv} osp=#{o.osp} [#{o.ocn}] -->\n\t#{o.obj}"
+ when :heading
+ filename_debug.puts "#{o.is.to_s} #{o.lv}~#{o.name} odv=#{o.odv} osp=#{o.osp} [#{o.ocn}] -->\n\t#{o.obj}"
end
end
end
@@ -465,7 +465,7 @@ module SiSU_DAL
class Make
def initialize(fn,md,data)
@fn,@md,@data=fn,md,data
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
end
def reset
@@flag_vocab=0
@@ -475,15 +475,15 @@ module SiSU_DAL
reset
data=@data
data=data.join.split("\n\n")
- data=SiSU_insertions::Insertions.new(@md,data).expand_insertions? # dal_expand_insertions.rb
- data=SiSU_substitute_and_insert::SI.new(@md,data).substitutions_and_insertions? # dal_substitutions_and_insertions.rb
- data,metadata=SiSU_document_structure_extract::Build.new(@md,data).identify_parts # dal_doc_str.rb
- data=SiSU_Syntax::Markup.new(@md,data).songsheet # dal_syntax.rb
- data,endnote_array=SiSU_character_check::Check.new(data).character_check_and_oldstyle_endnote_array # dal_character_check.rb
- data=SiSU_images::Images.new(@md,data).images # dal_images.rb
- data,tags_map,ocn_html_seg_map=SiSU_numbering::Numbering.new(@md,data).numbering_song # dal_numbering.rb
- data,book_index_rel,book_index_rel_html_seg,html_idx,xhtml_idx=SiSU_book_index::Book_index.new(@md,data,@env).indexing_song if @md.book_idx # dal_idx.rb
- data=SiSU_endnotes::Endnotes.new(@md,data,endnote_array).endnotes # dal_endnotes.rb
+ data=SiSU_DAL_Insertions::Insertions.new(@md,data).expand_insertions? # dal_expand_insertions.rb
+ data=SiSU_DAL_SubstituteAndInsert::SI.new(@md,data).substitutions_and_insertions? # dal_substitutions_and_insertions.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
outputdata=data
if @md.opt.cmd =~/[mM]/
SiSU_DAL::Output.new(@fn,@md,outputdata).hard_output
diff --git a/lib/sisu/v3/dal_character_check.rb b/lib/sisu/v3/dal_character_check.rb
index 70cddf91..e5ab7578 100644
--- a/lib/sisu/v3/dal_character_check.rb
+++ b/lib/sisu/v3/dal_character_check.rb
@@ -56,7 +56,7 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_character_check
+module SiSU_DAL_CharacterCheck
class Check
def initialize(data)
@data=data
@@ -68,26 +68,27 @@ module SiSU_character_check
@tuned_file,@endnote_array=[],[]
endnote_no=1
data.each do |dob|
- unless dob.is =='table'
- dob.obj.strip!
- dob.obj.gsub!(/^[{~}]\s*$/,'')
- dob.obj.gsub!(/~#\s*/,"#{Mx[:pa_non_object_no_heading]}")
- dob.obj.gsub!(/-#\s*/,"#{Mx[:pa_non_object_dummy_heading]}")
- dob.obj.gsub!(/(#{Mx[:en_a_o]})\s*\s+/,'\1 '); dob.obj.gsub!(/(~\{\s*)\s+/,'\1 ')
- dob.obj.gsub!(/ \/\//,"#{Mx[:br_line]}")
- dob.obj.gsub!(/<br>/,"#{Mx[:br_line]}") #needed by xml, xhtml etc.
- dob.obj.gsub!(/\t/,' ')
- dob.obj.gsub!(/\342\200\231/u,"'") #if dob =~/’/ #Avoid #&lsquo; &rsquo; #&ldquo; &rdquo;
- dob.obj.gsub!(/�/u,' ') #watch, replace with char code
- dob.obj.gsub!(/·/u,'*')
- dob.obj.gsub!(/\\copy(?:right)?\b/,'&#169;')
- dob.obj.gsub!(/\\trademark\b|\\tm\b/,'&#174;')
+ unless dob.is ==:table
+ dob.obj=dob.obj.strip.
+ gsub(/^[{~}]\s*$/,'').
+ gsub(/~#\s*/,"#{Mx[:pa_non_object_no_heading]}").
+ gsub(/-#\s*/,"#{Mx[:pa_non_object_dummy_heading]}").
+ gsub(/(#{Mx[:en_a_o]})\s*\s+/,'\1 ').
+ gsub(/(~\{\s*)\s+/,'\1 ').
+ gsub(/ \/\//,"#{Mx[:br_line]}").
+ gsub(/<br>/,"#{Mx[:br_line]}"). #needed by xml, xhtml etc.
+ gsub(/\t/,' ').
+ gsub(/\342\200\231/u,"'"). #if dob =~/’/ #Avoid #&lsquo; &rsquo; #&ldquo; &rdquo;
+ gsub(/�/u,' '). #watch, replace with char code
+ gsub(/·/u,'*').
+ gsub(/\\copy(?:right)?\b/,'&#169;').
+ gsub(/\\trademark\b|\\tm\b/,'&#174;')
dob.obj=dob.obj + "\n"
- unless dob.is =~/^code/
+ unless dob.is ==:code
case dob.obj
when /\^~/ #% Note must do this first (earlier loop) and then enter gathered data into ~^\d+
sub_dob=dob.obj.dup
- @endnote_array << sub_dob.gsub!(/\n/,'').gsub!(/\^~\s+(.+)\s*/,%{#{Mx[:en_a_o]}#{endnote_no} \\1 #{Mx[:en_a_c]}}).strip
+ @endnote_array << sub_dob.gsub(/\n/,'').gsub(/\^~\s+(.+)\s*/,%{#{Mx[:en_a_o]}#{endnote_no} \\1 #{Mx[:en_a_c]}}).strip
endnote_no+=1
dob=nil if dob.obj =~/\^~ .+/ #watch, removes 'binary' endnote now in endnote array for later insertion
end
diff --git a/lib/sisu/v3/dal_doc_objects.rb b/lib/sisu/v3/dal_doc_objects.rb
index 4e8b5c0f..e413993a 100644
--- a/lib/sisu/v3/dal_doc_objects.rb
+++ b/lib/sisu/v3/dal_doc_objects.rb
@@ -56,37 +56,37 @@
** Description: document abstraction
=end
-module SiSU_document_structure
+module SiSU_DAL_DocumentStructure
class Extract
def extract(h,o)
obj=h ? h : o
end
end
- class Object_metadata
+ class ObjectMetadata
attr_accessor :is,:of,:tags,:obj,:digest
def initialize
@tags={}
@is=@tmp=@digest=nil
- @of='meta'
+ @of=:meta
end
def metadata(tags)
of= @of #String, classification - group
- is= 'meta' #String, classification - specific type
+ is= :meta #String, classification - specific type
tags= tags || ((defined? o.tags) ? o.tags : {}) #String, metadata type/tag
obj= nil
@of,@is,@tags,@obj=of,is,tags,obj
self
end
end
- class Object_meta
+ class ObjectMeta
attr_accessor :obj,:is,:of,:tag,:digest,:tmp
def initialize
@is=@obj=@tag=@digest=@digest=@tmp=nil
- @of='meta'
+ @of=:meta
end
def metadata(h,o=nil)
of= @of #String, classification - group
- is= 'meta' #String, classification - specific type
+ is= :meta #String, classification - specific type
tag= h[:tag] || ((defined? o.tag) ? o.tag : nil) #String, metadata type/tag
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
@@ -95,10 +95,10 @@ module SiSU_document_structure
self
end
end
- class Object_heading
+ class ObjectHeading
attr_accessor :obj,:is,:tags,:of,:lv,:ln,:toc_,:name,:idx,:ocn,:odv,:osp,:node,:parent,:ocn_,:note_,:autonum_,:digest,:tmp
def initialize
- @of='para'
+ @of=:para
@is=@obj=@lv=@ln=@toc_=@name=@idx=@size=@ocn=@odv=@osp=@node=@parent=@ocn_=@note_=@autonum_=@digest=@tmp=nil
@tags=[]
end
@@ -135,7 +135,7 @@ module SiSU_document_structure
h[:lv]=heading_lv(h[:ln])
end
of= @of #String, classification - group
- is= 'heading' #String, classification - specific type
+ is= :heading #String, classification - specific type
name= h[:name] || ((defined? o.name) ? o.name : nil) #String, named object?
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
@@ -162,20 +162,20 @@ module SiSU_document_structure
end
def heading_insert(h,o=nil)
heading(h,o=nil)
- @is= 'heading_insert' #String, classification - specific type
+ @is= :heading_insert #String, classification - specific type
self
end
end
- class Object_para
+ class ObjectPara
attr_accessor :obj,:is,:tags,:of,:name,:idx,:bullet_,:indent,:hang,:ocn,:odv,:osp,:parent,:note_,:image_,:ocn_,:digest,:tmp
def initialize
- @of='para'
+ @of=:para
@is=@obj=@name=@idx=@bullet_=@indent=@hang=@size=@ocn=@odv=@osp=@parent=@note_=@image_=@ocn_=@digest=@tmp=nil
@tags=[]
end
def paragraph(h,o=nil)
of= @of #String, classification - group
- is= 'para' #String, classification - specific type
+ is= :para #String, classification - specific type
name= h[:name] || ((defined? o.name) ? o.name : nil) #String, named object?
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
@@ -199,7 +199,7 @@ module SiSU_document_structure
end
def docinfo(h,o=nil)
of= @of #String, classification - group
- is= 'docinfo' #String, classification - specific type
+ is= :docinfo #String, classification - specific type
name= h[:name] || ((defined? o.name) ? o.name : nil) #String, named object?
tags= h[:tags] || ((defined? o.tags) ? o.tags : nil) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
@@ -222,16 +222,16 @@ module SiSU_document_structure
self
end
end
- class Object_block_txt
+ class ObjectBlockTxt
attr_accessor :obj,:is,:of,:tags,:idx,:ocn,:odv,:osp,:parent,:note_,:number_,:ocn_,:digest,:tmp
def initialize
- @of='block'
+ @of=:block
@is=@obj=@idx=@ocn=@odv=@osp=@parent=@note_=@number_=@ocn_=@digest=@tmp=nil
@tags=[]
end
def code(h,o=nil)
of= @of #String, classification - group #alt 'code'
- is= 'code' #String, classification - specific type
+ is= :code #String, classification - specific type
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
@@ -251,7 +251,7 @@ module SiSU_document_structure
end
def block(h,o=nil)
of= @of #String, classification - group
- is= 'block' #String, classification - specific type
+ is= :block #String, classification - specific type
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
@@ -270,7 +270,7 @@ module SiSU_document_structure
end
def group(h,o=nil)
of= @of #String, classification - group
- is= 'group' #String, classification - specific type
+ is= :group #String, classification - specific type
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
@@ -289,7 +289,7 @@ module SiSU_document_structure
end
def alt(h,o=nil) #see block
of= @of #String, classification - group
- is= 'alt' #String, classification - specific type
+ is= :alt #String, classification - specific type
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
@@ -308,7 +308,7 @@ module SiSU_document_structure
end
def verse(h,o=nil) #part of poem decide how you deal with this
of= @of #String, classification - group
- is= 'verse' #String, classification - specific type
+ is= :verse #String, classification - specific type
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
@@ -326,16 +326,16 @@ module SiSU_document_structure
self
end
end
- class Object_table
+ class ObjectTable
attr_accessor :obj,:is,:of,:lv,:tags,:name,:idx,:indent,:hang,:size,:ocn,:number,:head_,:cols,:widths,:odv,:osp,:parent,:note_,:ocn_,:digest,:tmp
def initialize
- @of='block'
+ @of=:block
@is=@obj=@lv=@name=@idx=@indent=@hang=@size=@ocn,@number,@head_,@cols,@widths=@odv=@osp=@parent=@note_=@ocn_=@digest=@tmp=nil
@tags=[]
end
def table(h,o=nil)
of= @of #String, classification - group
- is= 'table' #String, classification - specific type
+ is= :table #String, classification - specific type
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
cols= h[:cols] || ((defined? o.cols) ? o.cols : nil)
widths= h[:widths] || ((defined? o.widths) ? o.widths : nil)
@@ -356,16 +356,16 @@ module SiSU_document_structure
self
end
end
- class Object_image
+ class ObjectImage
attr_accessor :obj,:is,:of,:lv,:idx,:size,:ocn,:parent,:note_,:ocn_,:digest,:tmp
def initialize
- @of='image'
+ @of=:image
@is=@obj=@lv=@idx=@size=@ocn=@parent=@note_=@ocn_=@tmp=@digest=nil
@tags=[]
end
def image(h,o=nil) #not yet used, and what of a paragraph containing several images, consider
of= @of #String, classification - group
- is= 'image' #String, classification - specific type
+ is= :image #String, classification - specific type
tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
size= h[:size] || ((defined? o.size) ? o.size : nil)
@@ -384,15 +384,15 @@ module SiSU_document_structure
self
end
end
- class Object_structure
+ class ObjectStructure
attr_accessor :obj,:tag,:node,:lv,:ln,:status,:is,:of,:tmp
def initialize
- @of='structure'
+ @of=:structure
@is=@obj=@node=@lv=@ln=@status=@tmp=nil
end
def xml_dom(h,o=nil)
of= @of #String, classification - group
- is= 'xml_dom' #String, classification - specific type
+ is= :xml_dom #String, classification - specific type
obj= h[:obj] || ((defined? o.obj) ? o.obj : '') #String, text content
lv= h[:lv] || ((defined? o.lv) ? o.lv : nil) #Alpha-numeric, document structure as used in markup, A-C then 1-6
ln= h[:ln] || ((defined? o.ln) ? o.ln : nil) #Integer, document structure level, for convenience in processing 1-9
@@ -403,30 +403,30 @@ module SiSU_document_structure
self
end
end
- class Object_comment
+ class ObjectComment
attr_accessor :obj,:is,:of,:tmp
def initialize
- @of='comment'
+ @of=:comment
@is=@obj=@tmp=nil
end
def comment(h,o=nil)
of= @of #String, classification - group
- is= 'comment' #String, classification - specific type
+ is= :comment #String, classification - specific type
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
@of,@is,@obj,@tmp=of,is,obj,tmp
self
end
end
- class Object_layout
+ class ObjectLayout
attr_accessor :obj,:is,:of,:tmp
def initialize
- @of='layout'
+ @of=:layout
@is=@obj=@tmp=nil
end
def break(h,o=nil) #decide how to deal with, perhaps no obj?
of= @of #String, classification - group
- is= 'break' #String, classification - specific type
+ is= :break #String, classification - specific type
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
@of,@is,@obj,@tmp=of,is,obj,tmp
@@ -434,7 +434,7 @@ module SiSU_document_structure
end
def insert(h,o=nil) #decide how to deal with, could mimic paragraph?
of= @of #String, classification - group
- is= 'insert' #String, classification - specific type
+ is= :insert #String, classification - specific type
obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
@of,@is,@obj,@tmp=of,is,obj,tmp
diff --git a/lib/sisu/v3/dal_doc_str.rb b/lib/sisu/v3/dal_doc_str.rb
index 7bc36e11..b4a98edd 100644
--- a/lib/sisu/v3/dal_doc_str.rb
+++ b/lib/sisu/v3/dal_doc_str.rb
@@ -56,7 +56,7 @@
** Description: document abstraction
=end
-module SiSU_document_structure_extract
+module SiSU_DAL_DocumentStructureExtract
class Instantiate < SiSU_Param::Parameters::Instructions
@@flag={} #Beware!!
def initialize
@@ -69,9 +69,9 @@ module SiSU_document_structure_extract
@@flag={} #Beware!!
def initialize(md,data)
@md,@data=md,data
- Instantiate.new
- @pb=SiSU_document_structure::Object_layout.new.break(Hx[:br_page])
- @pbn=SiSU_document_structure::Object_layout.new.break(Hx[:br_page_new])
+ 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])
end
def ln_get(lv)
ln=case lv
@@ -131,11 +131,11 @@ module SiSU_document_structure_extract
if str.nil?
else
if str =~/(?:^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/
- str.gsub!(/(^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/i,
- "\\1#{Mx[:tag_o]}\\2#{Mx[:tag_c]}")
- str.gsub!(/ [ ]+/i,' ')
+ str=str.gsub(/(^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/i,
+ "\\1#{Mx[:tag_o]}\\2#{Mx[:tag_c]}").
+ gsub(/ [ ]+/i,' ')
tags=str.scan(/#{Mx[:tag_o]}(\S+?)#{Mx[:tag_c]}/).flatten
- str.gsub!(/[ ]?#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}[ ]?/,' ') #may be issues with spaces would leave one, but "code" blocks?
+ str=str.gsub(/[ ]?#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}[ ]?/,' ') #may be issues with spaces would leave one, but "code" blocks?
end
tags=nametag ? (tags << nametag) : tags
end
@@ -148,7 +148,7 @@ module SiSU_document_structure_extract
@@counter,@verse_count=0,0
@metadata={}
@data.each do |t_o|
- t_o.gsub!(/(?:\n\s*\n)+/m,"\n") unless @@flag['code']
+ t_o=t_o.gsub(/(?:\n\s*\n)+/m,"\n") unless @@flag['code']
if t_o !~/^(?:code|poem|alt|group|block)\{|^\}(?:code|poem|alt|group|block)|^(?:table\{|\{table)[ ~]/ \
and not @@flag['code'] \
and not @@flag['poem'] \
@@ -158,7 +158,7 @@ module SiSU_document_structure_extract
and not @@flag['table']
unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any
idx=if t_o=~/^=\{(.+)\}\s*$\Z/m; m=$1
- t_o.gsub!(/\n=\{.+\}\s*$\Z/m,'')
+ t_o=t_o.gsub(/\n=\{.+\}\s*$\Z/m,'')
m
else nil
end
@@ -173,7 +173,7 @@ module SiSU_document_structure_extract
when /^%+\s/ #comment
t_o=if t_o=~/^%+\s+(.+)/
h={obj: $1}
- SiSU_document_structure::Object_comment.new.comment(h)
+ SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
else nil
end
when /^:?([A-C1-6])\~/ #heading / lv
@@ -184,19 +184,19 @@ module SiSU_document_structure_extract
note=endnote_test?(obj)
obj,tags=extract_tags(obj)
h={ lv: lv, ln: ln, obj: obj, idx: idx, tags: tags }
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
elsif t_o=~/^:?[A-C1-6]\~(\S+?)-\s+(.+)/m
name,obj=$1,$2
note=endnote_test?(obj)
obj,tags=extract_tags(obj)
h={ lv: lv, name: name, obj: obj, idx: idx, autonum_: false, tags: tags}
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
elsif t_o=~/^:?[A-C1-6]\~(\S+)\s+(.+)/m
name,obj=$1,$2
note=endnote_test?(obj)
obj,tags=extract_tags(obj,name)
h={ lv: lv, name: name, obj: obj, idx: idx, tags: tags }
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
else nil
end
when /^_(?:[1-9]!?|[1-9]?\*)\s+/ #indented and/or bullet paragraph
@@ -213,7 +213,7 @@ module SiSU_document_structure_extract
obj,tags=extract_tags(obj)
unless obj=~/\A\s*\Z/m
h={ bullet_: bullet, hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
else nil
end
@@ -230,23 +230,23 @@ module SiSU_document_structure_extract
obj,tags=extract_tags(obj)
unless obj=~/\A\s*\Z/m
h={ hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
else nil
end
when /^[<\[](?:br)?:(?:pa?r|o(?:bj|---)?)[>\]]\s*$/ #[br:par] #[br:obj]
- SiSU_document_structure::Object_layout.new.break(Hx[:br_obj])
+ SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_obj])
when /^(?:[<\[](?:br)?:pg[>\]]|<?:pb>?)\s*$/ #[br:pg]
- SiSU_document_structure::Object_layout.new.break(Hx[:br_page])
+ SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page])
when /^[<\[](?:br)?:pg?n[>\]]\s*$/ #[br:pgn]
- SiSU_document_structure::Object_layout.new.break(Hx[:br_page_new])
+ SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new])
else #paragraph
image=image_test(t_o)
note=endnote_test?(t_o)
obj,tags=extract_tags(t_o)
unless obj=~/\A\s*\Z/m
h={ bullet_: false, indent: 0, hang: 0, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
end
elsif not @@flag['code']
@@ -255,30 +255,30 @@ module SiSU_document_structure_extract
@@counter=1
@codeblock_numbered=(t_o =~/^code\{#/) ? true : false
h={ obj: 'code block start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif t_o =~/^poem\{/
@@flag['poem']=true
h={ obj: 'poem start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^group\{/
@@flag['group']=true
h={ obj: 'group text start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^block\{/
@@flag['block']=true
h={ obj: 'block text start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^alt\{/
@@flag['alt']=true
h={ obj: 'alt text start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^(?:table\{|\{table)[ ~]/
h={ obj: 'table start' } #introduce a counter
- ins=SiSU_document_structure::Object_comment.new.comment(h) #ins=SiSU_document_structure::Object_layout.new.insert(h)
+ ins=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #ins=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << ins
if t_o=~/^table\{(?:~h)?\s+/
@@flag['table']=true
@@ -304,7 +304,7 @@ module SiSU_document_structure_extract
cols=nil
rws.each do |r|
cols=(cols ? cols : (r.scan('|').length) +1)
- r.gsub!(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
+ r=r.gsub(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
rows += r + Mx[:tc_c]
end
col=[]
@@ -318,10 +318,10 @@ module SiSU_document_structure_extract
cols.times { col << width }
end
h={ head_: hd, cols: cols, widths: col, obj: rows, idx: idx, tags: tags }
- t_o=SiSU_document_structure::Object_table.new.table(h) unless h.nil?
+ t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(h) unless h.nil?
tuned_file << t_o
h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
t_o
elsif t_o=~/^\{table(?:~h)?\s+/
m1,m2,hd=nil,nil,nil
@@ -337,14 +337,14 @@ module SiSU_document_structure_extract
rws=tbl.split(/\n/)
rows=''
rws.each do |r|
- r.gsub!(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
+ r=r.gsub(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
rows += r + Mx[:tc_c]
end
h={ head_: hd, cols: col.length, widths: col, obj: rows, idx: idx, tags: tags }
- t_o=SiSU_document_structure::Object_table.new.table(h) unless h.nil?
+ t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(h) unless h.nil?
tuned_file << t_o
h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
t_o
end
end
@@ -356,18 +356,18 @@ module SiSU_document_structure_extract
@@flag['table']=false
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_document_structure::Object_table.new.table(@h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(@h)
tuned_file << t_o
@h,@rows=nil,''
t_o
h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
t_o
else
if t_o !~/^table\{/ \
and not t_o.nil?
- t_o.gsub!(/^\n+/m,'') #check added for ruby 1.9.2 not needed in 1.8 series (tested in v2)
- t_o.gsub!(/\n+/m,"#{Mx[:tc_p]}")
+ t_o=t_o.gsub(/^\n+/m,''). #check added for ruby 1.9.2 not needed in 1.8 series (tested in v2)
+ gsub(/\n+/m,"#{Mx[:tc_p]}")
@rows += t_o + Mx[:tc_c]
end
t_o=nil
@@ -379,11 +379,11 @@ module SiSU_document_structure_extract
obj=@tuned_code.join("\n")
tags=[]
h={ obj: obj, tags: tags, number_: @codeblock_numbered }
- t_o=SiSU_document_structure::Object_block_txt.new.code(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.code(h)
@tuned_code=[]
tuned_file << t_o
h={ obj: 'code block end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
end
if @@flag['code'] \
and t_o.class==String \
@@ -392,7 +392,7 @@ module SiSU_document_structure_extract
@line_mode=sub_array.scan(/.+/)
@line_mode=[]
sub_array.scan(/.+/) {|w| @line_mode << w if w =~/[\S]+/}
- t_o=SiSU_document_structure_extract::Build.new(@md,@line_mode).build_lines('code').join
+ t_o=SiSU_DAL_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines('code').join
@tuned_code << t_o
t_o=nil
end
@@ -404,37 +404,37 @@ module SiSU_document_structure_extract
and t_o =~/^\}poem/
@@flag['poem']=false
h={ obj: 'poem end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif ( @@flag['group'] \
and t_o =~/^\}group/ )
@@flag['group']=false
obj,tags=extract_tags(@tuned_block.join("\n"))
h={ obj: obj, tags: tags }
@tuned_block=[]
- t_o=SiSU_document_structure::Object_block_txt.new.group(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.group(h)
tuned_file << t_o
h={ obj: 'group text end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif ( @@flag['block'] \
and t_o =~/^\}block/ )
@@flag['block']=false
obj,tags=extract_tags(@tuned_block.join("\n"))
h={ obj: obj, tags: tags }
@tuned_block=[]
- t_o=SiSU_document_structure::Object_block_txt.new.block(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.block(h)
tuned_file << t_o
h={ obj: 'block text end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif ( @@flag['alt'] \
and t_o =~/^\}alt/ )
@@flag['alt']=false
obj,tags=extract_tags(@tuned_block.join("\n"))
h={ obj: obj, tags: tags }
- t_o=SiSU_document_structure::Object_block_txt.new.alt(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.alt(h)
@tuned_block=[]
tuned_file << t_o
h={ obj: 'alt text end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
end
if @@flag['poem'] \
or @@flag['group'] \
@@ -444,13 +444,13 @@ module SiSU_document_structure_extract
sub_array=t_o.dup
@line_mode=sub_array.scan(/.+/)
type=if @@flag['poem']; 'poem'
- t_o=SiSU_document_structure_extract::Build.new(@md,@line_mode).build_lines(type).join
+ t_o=SiSU_DAL_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(type).join
poem=t_o.split(/\n\n/)
poem.each do |v|
- v.gsub!(/\n/m,"#{Mx[:br_nl]}\n")
+ v=v.gsub(/\n/m,"#{Mx[:br_nl]}\n")
obj,tags=extract_tags(v)
h={ obj: obj, tags: tags }
- t_o=SiSU_document_structure::Object_block_txt.new.verse(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.verse(h)
tuned_file << t_o
end
else 'group'
@@ -463,17 +463,17 @@ module SiSU_document_structure_extract
or @@flag['group'] \
or @@flag['alt']
if t_o.class==String
- t_o.gsub!(/\n/m,"#{Mx[:br_nl]}")
- t_o.gsub!(/[ ][ ]/m,"#{Mx[:nbsp]*2}")
- t_o.gsub!(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
+ t_o=t_o.gsub(/\n/m,"#{Mx[:br_nl]}").
+ gsub(/[ ][ ]/m,"#{Mx[:nbsp]*2}").
+ gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
t_o=t_o + Mx[:br_nl] if t_o =~/\S+/
- elsif t_o.is=='group' \
- or t_o.is=='block' \
- or t_o.is=='alt' \
- or t_o.is=='verse'
- t_o.obj.gsub!(/\n/m,"#{Mx[:br_nl]}")
- t_o.obj.gsub!(/[ ][ ]/m,"#{Mx[:nbsp]*2}")
- t_o.obj.gsub!(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
+ elsif t_o.is==:group \
+ || t_o.is==:block \
+ || t_o.is==:alt \
+ || t_o.is==:verse
+ t_o.obj=t_o.obj.gsub(/\n/m,"#{Mx[:br_nl]}").
+ gsub(/[ ][ ]/m,"#{Mx[:nbsp]*2}").
+ gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
end
@tuned_block << t_o if t_o =~/\S+/
else tuned_file << t_o
@@ -484,32 +484,27 @@ module SiSU_document_structure_extract
if @md.flag_endnotes
tuned_file << @pb
h={ ln: 2, obj: 'Endnotes', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ ln: 4, obj: 'Endnotes', name: 'endnotes', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ obj: 'Endnotes' }
end
if @md.book_idx
tuned_file << @pb
h={ ln: 2, obj: 'Index', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ ln: 4, obj: 'Index', name: 'book_index', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ obj: 'Index' }
end
tuned_file << @pb
h={ ln: 2, obj: 'Metadata', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ ln: 4, obj: 'SiSU Metadata, document information', name: 'metadata', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
- tuned_file << @pb
- h={ ln: 2, obj: 'Manifest', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
- h={ ln: 4, obj: 'SiSU Manifest, alternative outputs etc.', name: 'sisu_manifest', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
tuned_file
h={ obj: 'eof' }
- meta=SiSU_document_structure::Object_metadata.new.metadata(@metadata)
+ meta=SiSU_DAL_DocumentStructure::ObjectMetadata.new.metadata(@metadata)
[tuned_file,meta]
end
def table_rows_and_columns_array(table_str)
@@ -522,33 +517,33 @@ module SiSU_document_structure_extract
end
def meta_heading(h)
h={ lv: h[:lv], ln: h[:ln], name: h[:name], obj: h[:obj], ocn: '0' }
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
end
def meta_para(str)
h={ obj: str, ocn_: false }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
def build_lines(type='')
- data=@data
- data.each do |line|
- if line =~/\S/ \
+ lines,lines_new=@data,[]
+ lines.each do |line|
+ line=if line =~/\S/ \
and line !~/^code\{|^\}code/ \
and line.class != Hash
- line.gsub!(/\s\s/,"#{Mx[:nbsp]*2}")
- line.gsub!(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
- line.gsub!(/^/,"#{Mx[:gr_o]}codeline#{Mx[:gr_c]}") if type=='code' # REMOVE try sort for texpdf special case
- if line =~/(?:https?|file|ftp):\/\/\S+$/
- line.gsub!(/\s*$/," #{Mx[:br_nl]}")
- else line.gsub!(/\s*$/,"#{Mx[:br_nl]}") #unless type=='code'
- end
- if @@flag['code']; @@counter+=1
- else
+ @@counter+=1 if @@flag['code']
+ line=line.gsub(/\s\s/,"#{Mx[:nbsp]*2}").
+ gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
+ line=line.gsub(/^/,"#{Mx[:gr_o]}codeline#{Mx[:gr_c]}") if type=='code' # REMOVE try sort for texpdf special case
+ line=if line =~/(?:https?|file|ftp):\/\/\S+$/
+ line.gsub(/\s*$/," #{Mx[:br_nl]}")
+ else line.gsub(/\s*$/,"#{Mx[:br_nl]}") #unless type=='code'
end
elsif line =~/^\s*$/
- line.gsub!(/\s*$/,"#{Mx[:br_nl]}")
+ line.gsub(/\s*$/,"#{Mx[:br_nl]}")
+ else line
end
+ lines_new << line
end
- data
+ lines_new
end
end
class Structure # this must happen early
@@ -561,29 +556,29 @@ module SiSU_document_structure_extract
@dob
end
def structure_markup #build structure where structure provided only in meta header
- @dob=if @dob.is =~/para/ \
- and ((@dob.hang !~/[1-9]/ and @dob.indent !~/[1-9]/) \
- or (@dob.hang != @dob.indent)) \
+ @dob=if @dob.is ==:para \
+ && (((@dob.hang !~/[1-9]/) && (@dob.indent !~/[1-9]/)) \
+ || (@dob.hang != @dob.indent)) \
and not @dob.bullet_
@dob=case @dob.obj
when /^#{@md.lv1}/
h={ lv: 'A', ln: 1 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv2}/
h={ lv: 'B', ln: 2 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv3}/
h={ lv: 'C', ln: 3 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv4}/
h={ lv: '1', ln: 4 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv5}/
h={ lv: '2', ln: 5 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv6}/
h={ lv: '3', ln: 6 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
else @dob
end
else @dob
@@ -592,26 +587,26 @@ module SiSU_document_structure_extract
end
def structure_markup_normalize #needs a bit of thinking
dob=if @md.markup_version.determined < 0.38 #%convert internal representation, consider making 0.38 structure default ([A-C1-6] instead of [1-9]), requires downstream changes
- @dob.gsub!(/^[456]~/,'!_')
- @dob.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}")
- @dob.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^2~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}")
- @dob.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^1~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}")
- @dob.gsub!(/^:?C~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^:?C~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}")
- @dob.gsub!(/^:?B~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^:?B~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}")
- @dob.gsub!(/^:?A~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^:?A~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
+ @dob=@dob.gsub(/^[456]~/,'!_').
+ gsub(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}").
+ gsub(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}").
+ gsub(/^2~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}").
+ gsub(/^2~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}").
+ gsub(/^1~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}").
+ gsub(/^1~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}").
+ gsub(/^:?C~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}").
+ gsub(/^:?C~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}").
+ gsub(/^:?B~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}").
+ gsub(/^:?B~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}").
+ gsub(/^:?A~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}").
+ gsub(/^:?A~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
@dob=if @dob =~/^@(?:level|markup):\s/
- @dob.gsub!(/3/,'6')
- @dob.gsub!(/2/,'5')
- @dob.gsub!(/1/,'4')
- @dob.gsub!(/:?C/,'3')
- @dob.gsub!(/:?B/,'2')
- @dob.gsub!(/:?A/,'1')
+ @dob=@dob.gsub(/3/,'6').
+ gsub(/2/,'5').
+ gsub(/1/,'4').
+ gsub(/:?C/,'3').
+ gsub(/:?B/,'2').
+ gsub(/:?A/,'1')
@dob
else @dob
end
@@ -620,19 +615,19 @@ module SiSU_document_structure_extract
end
def structure_marks
t_o=if @md.markup_version.determined < 0.38
- @t_o.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
- @t_o.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^2~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}")
- @t_o.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^3~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}")
- @t_o.gsub!(/^4~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^4~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}")
- @t_o.gsub!(/^5~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^5~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}")
- @t_o.gsub!(/^6~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^6~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}")
- @t_o.gsub!(/^[789]~/,'!_')
+ @t_o=@t_o.gsub(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}").
+ gsub(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}").
+ gsub(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}").
+ gsub(/^2~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}").
+ gsub(/^3~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}").
+ gsub(/^3~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}").
+ gsub(/^4~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}").
+ gsub(/^4~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}").
+ gsub(/^5~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}").
+ gsub(/^5~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}").
+ gsub(/^6~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}").
+ gsub(/^6~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}").
+ gsub(/^[789]~/,'!_')
@t_o
else @t_o
end
@@ -651,12 +646,14 @@ module SiSU_document_structure_extract
parent=node1=node2=node3=node4=node5=node6=nil
data.each do |dob|
h={}
- if (dob.obj !~ regex_exclude_ocn_and_node || dob.is =='code') \
- and dob.of !~/(?:comment|layout|meta)/ \
- and dob.obj !~/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/ \
- and dob.ocn_
+ if (dob.obj !~ regex_exclude_ocn_and_node || dob.is ==:code) \
+ && (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'
+ if dob.is==:heading
ln=case dob.lv
when 'A'; 1
when 'B'; 2
@@ -672,7 +669,7 @@ module SiSU_document_structure_extract
if not dob.obj =~/<:#>|~#|-#/ \
or not dob.toc_ # fix this no longer in dob.obj
ocn+=1
- if dob.is=='heading' \
+ if dob.is==:heading \
and (ln.to_s =~/^[1-9]/ \
or ln.to_s =~@md.lv1 \
or ln.to_s =~@md.lv2 \
@@ -708,56 +705,67 @@ module SiSU_document_structure_extract
end
else
ocno+=1
- if dob.is=='table'
+ if dob.is==:table
ocnt+=1
ocn_sp,parent="t#{ocnt}",node
- elsif dob.is=='code'
+ elsif dob.is==:code
ocnc+=1
ocn_sp,parent="c#{ocnc}",node
- elsif dob.is=~/^(?:group|block|alt|verse)/
+ 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|#{Mx[:lnk_o]}\S+?\.(?:png|jpg|gif)\s+/m
+ 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 dob.is==:heading
dob.ln,dob.node,dob.ocn,dob.odv,dob.osp,dob.parent=ln,node,ocn,ocn_dv,ocn_sp,parent
else
- unless dob.of=~/meta|comment|layout/
+ if dob.of !=:meta \
+ && dob.of !=:comment \
+ && dob.of !=:layout
dob.ocn,dob.odv,dob.osp,dob.parent=ocn,ocn_dv,ocn_sp,parent
end
end
else ocnu+=1
- dob.obj.gsub!(/#{Mx[:fa_o]}~##{Mx[:fa_c]}/,'') if dob.obj
+ 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.gsub!(/#{Mx[:pa_non_object_no_heading]}/,'')
- if dob.is=='para'
+ dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_no_heading]}/,'')
+ if dob.is==:para
h={ obj: dob.obj, ocn_: false, ocn: nil }
- dob=SiSU_document_structure::Object_para.new.paragraph(h,dob)
- elsif dob.is=='heading'
+ dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob)
+ elsif dob.is==:heading
h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: true }
- dob=SiSU_document_structure::Object_heading.new.heading(h,dob)
+ dob=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,dob)
end
elsif dob.obj=~/#{Mx[:pa_non_object_dummy_heading]}/
- dob.obj.gsub!(/#{Mx[:pa_non_object_dummy_heading]}/,'')
- if dob.is=='para'
+ dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_dummy_heading]}/,'')
+ if dob.is==:para
h={ obj: dob.obj, ocn_: false, ocn: nil }
- dob=SiSU_document_structure::Object_para.new.paragraph(h,dob)
- elsif dob.is=='heading'
+ dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob)
+ elsif dob.is==:heading
h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: false }
- dob=SiSU_document_structure::Object_heading.new.heading(h,dob)
+ dob=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,dob)
end
else dob
end
- dob.obj.gsub!(/\n\n/,"\n") if dob.is =~/(?:code|verse|alt|group|block)/ #newlines taken out
+ if dob.is==:code \
+ || dob.is==:verse \
+ || dob.is==:alt \
+ || dob.is==:group \
+ || dob.is==:block
+ dob.obj=dob.obj.gsub(/\n\n/,"\n") #newlines taken out
+ end
@o_array << dob
end
@o_array
@@ -791,7 +799,8 @@ module SiSU_document_structure_extract
puts "<#{@s[0]}>"
end
data.each_with_index do |o,i|
- if o.is =~/^heading/
+ if o.is ==:heading \
+ || o.is ==:heading_insert
case o.ln
when 1
tuned_file << tag_close(o.ln,hs)
@@ -847,8 +856,7 @@ module SiSU_document_structure_extract
end
puts_tag_close(0,hs) if @md.opt.cmd =~/V/
tuned_file << tag_close(0,hs)
- tuned_file.flatten!
- tuned_file
+ tuned_file=tuned_file.flatten
end
def tags(o)
tag=if o[:status]=='open'
@@ -867,7 +875,7 @@ module SiSU_document_structure_extract
when '6'; 9
end
h={ tag: tag, node: o[:node], lv: o[:lv], ln: ln, status: o[:status] }
- SiSU_document_structure::Object_structure.new.xml_dom(h) #downstream code utilise else ignore like comments
+ SiSU_DAL_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/v3/dal_endnotes.rb b/lib/sisu/v3/dal_endnotes.rb
index 53b6e8d3..191260c4 100644
--- a/lib/sisu/v3/dal_endnotes.rb
+++ b/lib/sisu/v3/dal_endnotes.rb
@@ -56,7 +56,7 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_endnotes
+module SiSU_DAL_Endnotes
class Endnotes
def initialize(md,data,endnote_array=nil)
@md,@data,@endnote_array=md,data,endnote_array
@@ -69,17 +69,17 @@ module SiSU_endnotes
data.each do |dob|
# manually numbered endnotes <!e(\d)!> <!e_(\d)!> -->
if @md.opt.mod.inspect =~/--no-asterisk|--no-annotate/
- dob.obj.gsub!(/#{Mx[:en_b_o]}\s.+?#{Mx[:en_b_c]}/,'')
+ dob.obj=dob.obj.gsub(/#{Mx[:en_b_o]}\s.+?#{Mx[:en_b_c]}/,'')
end
if @md.opt.mod.inspect =~/--no-dagger|--no-annotate/
- dob.obj.gsub!(/#{Mx[:en_b_o]}[+]\s.+?#{Mx[:en_b_c]}/,'')
+ dob.obj=dob.obj.gsub(/#{Mx[:en_b_o]}[+]\s.+?#{Mx[:en_b_c]}/,'')
end
- if defined? dob.obj \
- and defined? dob.is \
- and dob.is !~/^code/
+ if (defined? dob.obj) \
+ && (defined? dob.is) \
+ && 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.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') # required 2003w31
word_mode=dob.obj.scan(/\S+/m)
word_mode=endnote_call_number(word_mode)
dob.obj=word_mode.join(' ')
diff --git a/lib/sisu/v3/dal_expand_insertions.rb b/lib/sisu/v3/dal_expand_insertions.rb
index e48acd47..ef25fcdd 100644
--- a/lib/sisu/v3/dal_expand_insertions.rb
+++ b/lib/sisu/v3/dal_expand_insertions.rb
@@ -56,13 +56,13 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_insertions
+module SiSU_DAL_Insertions
class Insertions
def initialize(md,data)
@md,@data=md,data
end
def output_filetypes_in_cmd(cmd_shortcut,lnk=nil) #make list of file types in shortcut command (as configured), e.g. when sisu -3 is used
- cf_defaults=SiSU_Env::Info_processing_flag.new
+ cf_defaults=SiSU_Env::InfoProcessingFlag.new
cmd_list=case cmd_shortcut.inspect
when /0/; cf_defaults.cf_0
when /1/; cf_defaults.cf_1
@@ -141,7 +141,7 @@ module SiSU_insertions
def xml_dom
"#{@base_path}/xml/#{@linked_doc}.xml"
end
- def txt
+ def txt
"#{@base_path}/txt/#{@linked_doc}.txt"
end
def digest
@@ -241,7 +241,7 @@ module SiSU_insertions
def xml_dom
"#{@base_path}/scroll.#{@lng}.dom.xml"
end
- def txt
+ def txt
"#{@base_path}/plain.#{@lng}.txt"
end
def digest
@@ -270,17 +270,17 @@ module SiSU_insertions
and not codeblock_ \
and para =~/\{(?:~\^\s+)?(.+?)\s\[(?:\d(?:[sS]*))\]\}(?:\.\.\/\S+?\/|\S+?\.ss[tm]\b)/
txt,cmd,source,linked_doc,note,manifest=nil,nil,nil,nil,nil,nil
- @u=SiSU_Env::Info_env.new.url
+ @u=SiSU_Env::InfoEnv.new.url
pre=txt=cmd=source=linked_doc=note=''
if defined? @u.remote
if /(?<pre>.+?)\{(?<txt>.+?)\s\[(?<cmd>\d[sS]*)\]\}(?<source>(?<linked_doc>\S+?)\.ss[tm]\b)(?<note>.*)/m =~ para
- pre.strip!
+ pre=pre.strip
elsif /\{(?<txt>.+?)\s\[(?<cmd>\d[sS]*)\]\}(?<source>(?<linked_doc>\S+?)\.ss[tm]\b)(?<note>.*)/m =~ para
end
- if linked_doc =~ /(\S+?)\/(\S+)/
+ if linked_doc =~ /(\S+?)\/(\S+)/
linked_doc,linked_doc_lang=$1,$2
else
- linked_doc,linked_doc_lang=linked_doc,@md.opt.lng_base
+ linked_doc,linked_doc_lang=linked_doc,@md.opt.lng_base
end
else
puts "error, does currently support relative paths (reltive paths were removed, as had problems for citation, and was not suited to all output types should possibly reconsider) #{__FILE__} #{__LINE__}"
@@ -289,7 +289,7 @@ module SiSU_insertions
end
lnk={}
case @md.opt.dir_structure_by
- when /language/
+ when :language
lnk={
manifest: by_language(linked_doc,linked_doc_lang).manifest,
html_toc: by_language(linked_doc,linked_doc_lang).html_toc,
@@ -307,7 +307,7 @@ module SiSU_insertions
sisupod: by_language(linked_doc,linked_doc_lang,source).sisupod,
source: by_language(linked_doc,linked_doc_lang,source).source,
}
- when /filetype/
+ when :filetype
lnk={
manifest: by_filetype(linked_doc,linked_doc_lang).manifest,
html_toc: by_filetype(linked_doc,linked_doc_lang).html_toc,
diff --git a/lib/sisu/v3/dal_hash_digest.rb b/lib/sisu/v3/dal_hash_digest.rb
index 2c983919..ad201752 100644
--- a/lib/sisu/v3/dal_hash_digest.rb
+++ b/lib/sisu/v3/dal_hash_digest.rb
@@ -56,29 +56,30 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_hash
+module SiSU_DAL_Hash
require_relative 'shared_markup_alt.rb' #shared_markup_alt.rb
- class Object_digest
+ class ObjectDigest
def initialize(md,data,env=nil)
@md,@data,@env=md,data,env
- @env ||=SiSU_Env::Info_env.new(@md.fns)
+ @env ||=SiSU_Env::InfoEnv.new(@md.fns)
end
def object_digest
# 1. clean/stripped text without any markup, paragraph, headings etc. without endnotes
# 2. endnotes clean/stripped text digest only (there may be several endnotes within a paragraph)
# 3. whole object, text with markup and any endnotes, (question: with or without the endnote digests??? presumption better without, [however may be easier to check with?])
# [digests should not include other digests]
- data=@data
+ data=@data.compact
@tuned_file=[]
- data.compact!
sha_ =(@env.digest.type=='sha256' ? true : false)
sha_ ? (require 'digest/sha2') : (require 'digest/md5')
data.each do |t_o|
unless t_o.obj.class==Array
- t_o.obj.strip!
+ t_o.obj=t_o.obj.strip
end
- if t_o.of !~/structure|comment|layout/ \
- and t_o.ocn.class==Fixnum
+ if (t_o.of !=:structure \
+ && t_o.of !=:comment \
+ && t_o.of !=:layout) \
+ && t_o.ocn.class==Fixnum
if sha_
for hash_class in [ Digest::SHA256 ]
@tuned_file << stamped(t_o,hash_class)
@@ -101,7 +102,7 @@ module SiSU_hash
when /#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/
if en_plus =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/
t_o_txt,en_open,en_txt,en_close=/(.*?)(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m.match(en_plus)[1..4]
- stripped_en=SiSU_text_representation::Alter.new(en_txt).strip_clean_of_markup
+ stripped_en=SiSU_TextRepresentation::Alter.new(en_txt).strip_clean_of_markup
digest_en_strip=if @env.digest.type =~/sha256/
Digest::SHA256.hexdigest(stripped_en)
else
@@ -116,16 +117,16 @@ module SiSU_hash
t_o_bit.join
end
def stamped(t_o,hash_class) #decide what hash information is most useful, is compromise necessary?
- t_o.obj=SiSU_text_representation::Alter.new(t_o).strip_clean_of_extra_spaces
+ t_o.obj=SiSU_TextRepresentation::Alter.new(t_o).strip_clean_of_extra_spaces
t_obj=t_o.inspect.sub(/:0x[0-9a-f]{8}\s/,': ')
- stripped=SiSU_text_representation::Alter.new(t_o).strip_clean_of_markup
- markup=SiSU_text_representation::Alter.new(t_o).semi_revert_markup
- digests=SiSU_text_representation::Modified_text_plus_Hash_digest.new(@md,t_o).composite.dgst
- unless t_o.is=='code'
+ stripped=SiSU_TextRepresentation::Alter.new(t_o).strip_clean_of_markup
+ markup=SiSU_TextRepresentation::Alter.new(t_o).semi_revert_markup
+ digests=SiSU_TextRepresentation::ModifiedTextPlusHashDigest.new(@md,t_o).composite.dgst
+ unless t_o.is==:code
case t_o.obj
when /#{Mx[:en_a_o]}[\d*+]+\s+.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}[*+]\d+\s+.+?#{Mx[:en_b_c]}/m
en_and_t_o,en_and_t_o_digest=[],[]
- t_o.obj.gsub!(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,' \1') #watch
+ t_o.obj=t_o.obj.gsub(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,' \1') #watch
t_o_plus_en=t_o.obj.scan(/.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/m)
t_o_tail=if t_o.obj =~/(?:.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})+([\s\S]+)/m
/(?:.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})+.*/m.match(t_o.obj)[1]
@@ -144,11 +145,11 @@ module SiSU_hash
def strip_clean_extra_spaces(s) # dal output tuned
s=s.dup
s=s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1') unless s =~/#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/
- s=s.gsub(/ [ ]+/,' ')
- s=s.gsub(/^ [ ]+/,'')
- s=s.gsub(/ [ ]+$/,'')
- s=s.gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
- s=s.gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
+ s=s.gsub(/ [ ]+/,' ').
+ gsub(/^ [ ]+/,'').
+ gsub(/ [ ]+$/,'').
+ gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2').
+ gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
end
end
end
diff --git a/lib/sisu/v3/dal_idx.rb b/lib/sisu/v3/dal_idx.rb
index 5845437e..21567c14 100644
--- a/lib/sisu/v3/dal_idx.rb
+++ b/lib/sisu/v3/dal_idx.rb
@@ -56,14 +56,14 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_book_index
- class Book_index
+module SiSU_DAL_BookIndex
+ class BookIndex
def initialize(md,data,env=nil)
@md,@data,@env=md,data,env
@rgx_idx=/#{Mx[:idx_o]}(?:.+?)#{Mx[:idx_c]}\s*/
@rgx_idx_ocn_seg=/(.+?)~(\d+)~(\S+)/
@rgx_idx_ocn=/(.+?)~(\d+)/
- @env ||=SiSU_Env::Info_env.new(@md.fns)
+ @env ||=SiSU_Env::InfoEnv.new(@md.fns)
end
def indexing_song
data=@data
@@ -75,8 +75,9 @@ module SiSU_book_index
tuned_file=[]
idx_array=[]
data.each do |dob|
- if dob.is =~/heading/ \
- and dob.ln==4
+ if (dob.is ==:heading \
+ || dob.is ==:heading_insert) \
+ && dob.ln==4
@seg=dob.name
end
idx_array << "#{dob.idx}~#{dob.ocn}~#{@seg}" if defined? dob.idx and not (dob.idx.nil? or dob.idx.empty?)
@@ -101,21 +102,20 @@ module SiSU_book_index
g=idx_list.scan(/[^;]+/)
idxl=[]
g.each do |i|
- i.strip!
+ i=i.strip
idxl << { rough_idx: i, ocn: ocn, seg: seg }
end
idxl
else { rough_idx: idx_list, ocn: ocn, seg: seg }
end
end
- idx_lst.flatten!
- idx_lst
+ idx_lst=idx_lst.flatten
end
def construct_book_index(idx_array)
the_idx={}
idx_array.each do |idx|
idx_lst=idx[:rough_idx].scan(/[^|:]+/)
- idx_lst[0].strip!
+ idx_lst[0]=idx_lst[0].strip
if idx_lst[0] =~/.+?\+\d+/
use,plus=/(.+?)\+(\d+)/.match(idx_lst[0])[1,2]
else use=idx_lst[0]
@@ -123,7 +123,7 @@ module SiSU_book_index
use=use[0].chr.capitalize + use[1,use.length]
the_idx[use]={} unless the_idx[use] and defined? the_idx[use]
idx_lst.each do |i|
- i.strip!
+ i=i.strip
i,r=/(.+?)\+(\d+)/.match(i)[1,2] if i =~/.+?\+\d+/
x=if idx_lst.length==1 or idx_lst[0].gsub(/\+\d+/,'')==i
the_idx[use]['term_node_lev1']=[] unless the_idx[use]['term_node_lev1'] and defined? the_idx[use]['term_node_lev1']
@@ -151,12 +151,12 @@ module SiSU_book_index
the_idx
end
def clean_xml(str)
- str.gsub!(/&/,'&#038;')
- str.gsub!(/\(/,'&#040;')
- str.gsub!(/\)/,'&#041;')
- str.gsub!(/\*/,'&#042;')
- str.gsub!(/\+/,'&#043;')
- str.gsub!(/,/,'&#044;')
+ str=str.gsub(/&/,'&#038;').
+ gsub(/\(/,'&#040;').
+ gsub(/\)/,'&#041;').
+ gsub(/\*/,'&#042;').
+ gsub(/\+/,'&#043;').
+ gsub(/,/,'&#044;')
str
end
def index(the_idx)
@@ -164,15 +164,15 @@ module SiSU_book_index
idx={}
idx[:sst_rel_html_seg],idx[:sst_rel],idx[:html],idx[:xhtml]=[],[],[],[]
h={obj: Mx[:br_page]}
- o=SiSU_document_structure::Object_layout.new.break(h)
+ o=SiSU_DAL_DocumentStructure::ObjectLayout.new.break(h)
idx[:sst_rel_html_seg] << o
idx[:sst_rel] << o
h={lv: '2', name: 'index', obj: "Index"}
- o=SiSU_document_structure::Object_heading.new.heading(h)
+ o=SiSU_DAL_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_document_structure::Object_heading.new.heading(h)
+ o=SiSU_DAL_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]
@@ -347,7 +347,7 @@ module SiSU_book_index
def clean_index(data) #check on use of dob
tuned_file=[]
data.each do |para|
- para.gsub!(/\n*#{@rgx_idx}/m,'')
+ para=para.gsub(/\n*#{@rgx_idx}/m,'')
tuned_file << para
end
tuned_file
diff --git a/lib/sisu/v3/dal_images.rb b/lib/sisu/v3/dal_images.rb
index 34157f74..6455daf1 100644
--- a/lib/sisu/v3/dal_images.rb
+++ b/lib/sisu/v3/dal_images.rb
@@ -56,7 +56,7 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_images
+module SiSU_DAL_Images
class Images
#require 'RMagick'
#include Magick
@@ -67,7 +67,7 @@ module SiSU_images
data=@data
tuned_file=[]
@rmgk=false
- imagemagick_=true #imagemagick_=SiSU_Env::Info_settings.new.program?('rmagick')
+ imagemagick_=true #imagemagick_=SiSU_Env::InfoSettings.new.program?('rmagick')
if imagemagick_
begin
@rmgk=SiSU_Env::Load.new('RMagick').prog
@@ -80,8 +80,8 @@ module SiSU_images
end
end
data.each do |dob|
- unless dob.is =~/^table/
- dob.obj.strip!
+ unless dob.is ==:table
+ dob.obj=dob.obj.strip
if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
if dob.obj !~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)\s+\d+x\d+/
m=/#{Mx[:lnk_o]}\s*(\S+\.(?:png|jpg|gif))/
@@ -89,7 +89,7 @@ module SiSU_images
imgs=dob.obj.scan(m).flatten
img_col=img_row=nil
images=imgs.each do |image|
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
path_image=[dir.path.image_source_include_local,dir.path.image_source_include_remote,dir.path.image_source_include]
image_path=nil
path_image.each do |img_pth|
@@ -104,8 +104,8 @@ module SiSU_images
if @md.opt.cmd =~/[vVM]/
SiSU_Screen::Ansi.new(@md.opt.cmd,'RMagick not present, will attempt to use imagemagick (identify) directly').warn
end
- imgk=SiSU_Env::System_call.new.imagemagick
- gmgk=SiSU_Env::System_call.new.graphicksmagick
+ imgk=SiSU_Env::SystemCall.new.imagemagick
+ gmgk=SiSU_Env::SystemCall.new.graphicksmagick
if imgk or gmgk
if imgk
imgsys=`identify #{image_path}/#{image}`.strip #system call
@@ -133,8 +133,8 @@ module SiSU_images
img_col=((1.00*img_row/row)*col).round
end
end
- dob.obj.gsub!(/(#{image})/,"#{image} #{img_col}x#{img_row}")
- else dob.obj.gsub!(/#{Mx[:lnk_o]}\s*(\S+)\.(png|jpg|gif).+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,'[ \1 (\2 missing) ]')
+ dob.obj=dob.obj.gsub(/(#{image})/,"#{image} #{img_col}x#{img_row}")
+ else dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}\s*(\S+)\.(png|jpg|gif).+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,'[ \1 (\2 missing) ]')
end
end
else
@@ -144,7 +144,9 @@ module SiSU_images
end
end
end
- dob.obj.gsub!(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ') if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
+ if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
+ dob.obj=dob.obj.gsub(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ')
+ end
end
tuned_file << dob unless dob.nil?
end
diff --git a/lib/sisu/v3/dal_metadata.rb b/lib/sisu/v3/dal_metadata.rb
index 8647a075..f7dc9579 100644
--- a/lib/sisu/v3/dal_metadata.rb
+++ b/lib/sisu/v3/dal_metadata.rb
@@ -56,21 +56,21 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_metadata
+module SiSU_DAL_Metadata
class Metadata
def initialize(md,metad)
@md,@metadata=md,metad
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
language=l[:n]
@tr=SiSU_Translate::Source.new(md,language)
end
def make_para(obj,ocn)
h={ obj: obj, ocn: 0 }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_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_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
end
def metadata
end
diff --git a/lib/sisu/v3/dal_numbering.rb b/lib/sisu/v3/dal_numbering.rb
index 4b12793f..f5a09ef6 100644
--- a/lib/sisu/v3/dal_numbering.rb
+++ b/lib/sisu/v3/dal_numbering.rb
@@ -56,7 +56,7 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_numbering
+module SiSU_DAL_Numbering
class Numbering
attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment
def initialize(md,data)
@@ -77,12 +77,15 @@ module SiSU_numbering
def number_plaintext_para(data)
@tuned_file=[]
data.each do |dob|
- if dob.of !~/(?:block|comment|layout)/ and dob.ocn_ #and dob.obj !~ /#{Mx[:gr_o]}Th|#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}/ #FIX
- dob.obj.gsub!(/(.+)\n/,'\1 ') #messy, but idea is that tables should retain breaks
+ if (dob.of !=:block \
+ && dob.of !=:comment \
+ && dob.of !=:layout) \
+ && dob.ocn_ #and dob.obj !~ /#{Mx[:gr_o]}Th|#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}/ #FIX
+ dob.obj=dob.obj.gsub(/(.+)\n/,'\1 ') #messy, but idea is that tables should retain breaks
end
unless dob.obj.class==Array
- dob.obj.gsub!(/^\s+/,'')
- dob.obj.gsub!(/\s$/,"\n")
+ dob.obj=dob.obj.gsub(/^\s+/,'').
+ gsub(/\s$/,"\n")
end
@tuned_file << dob
end
@@ -90,37 +93,35 @@ module SiSU_numbering
end
def number_sub_heading(dob,num,title_no)
unless dob.obj =~/\d+\.|(?:chapter|article|section|clause)\s+\d+/i #name selection arbitrary, fix
- case dob.name
- when /-/; dob.obj.gsub!(/^/,"#{title_no} ")
- when /^#/; dob.obj.gsub!(/^/,"#{title_no} ")
- when /^[a-z_\.]+/
- dob.obj.gsub!(/^/,"#{title_no} ")
+ dob.obj=case dob.name
+ when /-/; dob.obj.gsub(/^/,"#{title_no} ")
+ when /^#/; dob.obj.gsub(/^/,"#{title_no} ")
+ when /^[a-z_\.]+/; dob.obj.gsub(/^/,"#{title_no} ")
else
dob.name=title_no if dob.name=~/^$/ #where title contains title number
- dob.obj.gsub!(/^/,"#{title_no} ") if title_no =~/\d+/ #main, where title number is to be provided #watch changed placement
+ dob.obj.gsub(/^/,"#{title_no} ") if title_no =~/\d+/ #main, where title number is to be provided #watch changed placement
end
if @md.toc_lev_limit \
and @md.toc_lev_limit < num
- dob.obj.gsub!(/^/,'!_ ') #bold line, watch
+ dob.obj=dob.obj.gsub(/^/,'!_ ') #bold line, watch
end
end
dob
end
def heading_tag_clean(heading_tag)
- heading_tag.gsub!(/[ ]+/,'_')
- heading_tag.gsub!(/["']/,'')
- heading_tag.gsub!(/[\/]/,'-')
- heading_tag.gsub!(/#{Mx[:fa_bold_o]}|#{Mx[:fa_bold_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_italics_o]}|#{Mx[:fa_italics_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_underscore_o]}|#{Mx[:fa_underscore_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_cite_o]}|#{Mx[:fa_cite_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_insert_o]}|#{Mx[:fa_insert_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_strike_o]}|#{Mx[:fa_strike_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_superscript_o]}|#{Mx[:fa_superscript_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_subscript_o]}|#{Mx[:fa_subscript_c]}/,'')
- heading_tag.gsub!(/#{Mx[:fa_hilite_o]}|#{Mx[:fa_hilite_c]}/,'')
- heading_tag.gsub!(/#{Mx[:gl_bullet]}/,'')
- heading_tag
+ heading_tag=heading_tag.gsub(/[ ]+/,'_').
+ gsub(/["']/,'').
+ gsub(/[\/]/,'-').
+ gsub(/#{Mx[:fa_bold_o]}|#{Mx[:fa_bold_c]}/,'').
+ gsub(/#{Mx[:fa_italics_o]}|#{Mx[:fa_italics_c]}/,'').
+ gsub(/#{Mx[:fa_underscore_o]}|#{Mx[:fa_underscore_c]}/,'').
+ gsub(/#{Mx[:fa_cite_o]}|#{Mx[:fa_cite_c]}/,'').
+ gsub(/#{Mx[:fa_insert_o]}|#{Mx[:fa_insert_c]}/,'').
+ gsub(/#{Mx[:fa_strike_o]}|#{Mx[:fa_strike_c]}/,'').
+ gsub(/#{Mx[:fa_superscript_o]}|#{Mx[:fa_superscript_c]}/,'').
+ gsub(/#{Mx[:fa_subscript_o]}|#{Mx[:fa_subscript_c]}/,'').
+ gsub(/#{Mx[:fa_hilite_o]}|#{Mx[:fa_hilite_c]}/,'').
+ gsub(/#{Mx[:gl_bullet]}/,'')
end
def auto_number_heading_ie_title(data) #also does some segment naming
@tuned_file=[]
@@ -135,20 +136,20 @@ module SiSU_numbering
no1=num_top; no2=(num_top + 1); no3=(num_top + 2); no4=(num_top + 3)
end
t_not=0
- data.compact!
chapter_number_counter=0
+ data=data.compact
data.each do |dob| #@md.seg_names << [additions to segment names]
title_no=nil
- dob=SiSU_document_structure_extract::Structure.new(@md,dob).structure_markup #must happen earlier, node info etc. require
- if dob.is =='heading' \
- and dob.autonum_ \
+ dob=SiSU_DAL_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 \
and @md.make.num_top !~/^$/
if dob.lv=='1' \
and dob.obj =~/^#\s|\s#(?:\s|$)/
chapter_number_counter +=1
- dob.obj.gsub!(/^#\s/,"#{chapter_number_counter} ")
- dob.obj.gsub!(/#([:,]?\s|[.]?$)/,"#{chapter_number_counter}\\1")
+ dob.obj=dob.obj.gsub(/^#\s/,"#{chapter_number_counter} ").
+ gsub(/#([:,]?\s|[.]?$)/,"#{chapter_number_counter}\\1")
end
if dob.ln==no1
@subnumber=1
@@ -168,15 +169,15 @@ module SiSU_numbering
tag=dob.obj.gsub(/(Article|Clause|Section|Chapter)\s+/,"\\1_#{title_no}").downcase
tag=heading_tag_clean(tag)
dob.tags=[tag,dob.tags].flatten if tag !~/^\d+$/ #check whether will work across file types with stop signs
- (dob.obj =~/(Article|Clause|Section)\s+/) \
- ? (dob.obj.gsub!(/(Article|Clause|Section)\s+/,"\\1 #{title_no} "))
- : (dob.obj.gsub!(/^/,"#{title_no}. ")) #fix stop later
+ dob.obj=(dob.obj =~/(Article|Clause|Section)\s+/) \
+ ? (dob.obj.gsub(/(Article|Clause|Section)\s+/,"\\1 #{title_no} "))
+ : (dob.obj.gsub(/^/,"#{title_no}. ")) #fix stop later
end
if dob.ln !=no1 \
and dob.obj =~/^[\d.]+\s/ #fix -> if the title starts with a numbering scheme, do not auto-number, review
dob.name ="#{title_no}" if not dob.name
dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj.gsub!(/^/,"#{title_no}. ")
+ dob.obj=dob.obj.gsub(/^/,"#{title_no}. ")
end
@md.seg_names << title_no
end
@@ -184,7 +185,7 @@ module SiSU_numbering
and dob.name!~/^[a-z_\.]+$/ \
and dob.obj !~/[A-Z]\.?\s/ #bug -> tmp fix, excludes A. B. C. lettering, but not roman numerals, is arbitrary, review required # not fixed, work on
dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj.gsub!(/^/i,"#{title_no}. ")
+ dob.obj=dob.obj.gsub(/^/i,"#{title_no}. ")
end
end
if dob.ln==no1 #watch because here you change dob.name
@@ -207,7 +208,7 @@ module SiSU_numbering
dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
dob.name.gsub(/^([a-z_\.]+)-$/,'\1')
end
- elsif dob.is =='heading' \
+ elsif dob.is ==:heading \
and dob.autonum_ \
and @md.markup =~/num_extract/ #AS DANGEROUS force enable with document, note already does this type of numbering for cisg, locate and coordinate logic, is currently misplaced in code, chengwei inspired 2004w23/4
#here lies a bug, as is nil when run from -Dv --update, FIX
@@ -229,11 +230,11 @@ module SiSU_numbering
@tuned_file=@tuned_file.flatten
end
def ocn(data) #and auto segment numbering increment
- @tuned_file=SiSU_document_structure_extract::OCN.new(@md,data).ocn
+ @tuned_file=SiSU_DAL_DocumentStructureExtract::OCN.new(@md,data).ocn
@tuned_file
end
def xml(data)
- @tuned_file=SiSU_document_structure_extract::XML.new(@md,data).dom
+ @tuned_file=SiSU_DAL_DocumentStructureExtract::XML.new(@md,data).dom
@tuned_file
end
def minor_numbering(data) #and auto segment numbering increment
@@ -241,20 +242,23 @@ module SiSU_numbering
number_small,letter_small=0,0
letter=%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 )
data.each do |dob|
- if dob.of =~/heading|para|block/
- if dob.is =='heading' \
+ if dob.of ==:heading \
+ || dob.of ==:heading_insert \
+ || dob.of ==:para \
+ || dob.of ==:block
+ if dob.is ==:heading \
and dob.ln.to_s=~/^[1-9]/ #% sub-number system, (baby numbering) reset with any change of major number (more obviously should be placed in number titles, but that is conditionally executed, check and move later)
number_small,letter_small=0,0
- elsif dob.is =~/para/
+ elsif dob.is ==:para
if dob.obj =~/^#[ 1]/ \
and dob.obj !~/^#\s+(?:~#)?$/
letter_small=0
number_small=0 if dob.obj =~ /^#1/
number_small+=1
- dob.obj.gsub!(/^#[ 1]/,"#{number_small}. ") #change 2004
+ dob.obj=dob.obj.gsub(/^#[ 1]/,"#{number_small}. ")
end
if dob.obj =~/^_# /
- dob.obj.gsub!(/^_# /,"#{letter[letter_small]}. ") #change 2004
+ dob.obj=dob.obj.gsub(/^_# /,"#{letter[letter_small]}. ")
dob.indent='1'
letter_small+=1
end
@@ -287,8 +291,8 @@ module SiSU_numbering
end
ocn_html_seg=[]
data.each do |dob|
- if dob.is=='heading' \
- and dob.ln \
+ if dob.is==:heading \
+ && dob.ln \
and dob.ln.to_s =~/^[456]/
if dob.ln==4 \
and not dob.name \
@@ -298,8 +302,8 @@ module SiSU_numbering
if dob.name !~/^\S+/ \
and dob.obj =~/^\s*(?:\S+\s+)?([\d.,:-]+)/m #heading starts with a recognised numeric or word followed by a recognised numerical construct, use that as name
possible_seg_name=$1
- possible_seg_name.gsub!(/(?:[:,-]|\W)/,'.')
- possible_seg_name.gsub!(/\.$/,'')
+ possible_seg_name=possible_seg_name.gsub(/(?:[:,-]|\W)/,'.').
+ gsub(/\.$/,'')
if not @md.seg_names.nil? \
and not @md.seg_names.include?(possible_seg_name)
dob.name=possible_seg_name
@@ -334,18 +338,19 @@ module SiSU_numbering
puts "e r r o r -\t#{__FILE__}::#{__LINE__}\n#{dob.inspect}"
end
end
- if dob.is =~/heading/ \
- and dob.ln==4
+ if (dob.is ==:heading \
+ || dob.is ==:heading_insert) \
+ && dob.ln==4
@seg=dob.name
end
- @tuned_file << if dob.is=='heading' \
- and (@md.pagenew or @md.pagebreak)
+ @tuned_file << if dob.is==:heading \
+ && (@md.pagenew || @md.pagebreak)
m=dob.ln.to_s
dob_tmp=[]
if @md.pagenew.inspect =~/#{m}/
- dob_tmp << SiSU_document_structure::Object_layout.new.break(Hx[:br_page_new]) << dob
+ dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) << dob
elsif @md.pagebreak.inspect =~/#{m}/
- dob_tmp << SiSU_document_structure::Object_layout.new.break(Hx[:br_page]) << dob
+ dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) << dob
end
para_result=unless dob_tmp.length > 0; dob
else dob_tmp
@@ -354,11 +359,11 @@ module SiSU_numbering
end
if defined? dob.ocn \
and dob.ocn
- @segname=((dob.is=='heading'|| dob.is=='heading_insert') && dob.ln==4 && (defined? dob.name)) \
+ @segname=((dob.is==:heading || dob.is==:heading_insert) && dob.ln==4 && (defined? dob.name)) \
? (dob.name)
: @segname
tags["#{dob.ocn}"]={ segname: @segname }
- ocn_html_seg[dob.ocn]=if dob.is =~/heading/
+ ocn_html_seg[dob.ocn]=if (dob.is==:heading || dob.is==:heading_insert)
x=if dob.ln =~/[1-3]/
{ seg: nil, level: dob.ln }
else #elsif dob.ln =~/[4-6]/
@@ -429,7 +434,7 @@ module SiSU_numbering
unless @md.set_heading_seg
if defined? dob.ln and dob.ln.to_s !~/^[123]/m \
and dob.obj !~/\A\s*\Z/m \
- and dob.is !='layout'
+ and dob.is !=:layout
@md.set_heading_seg=true
head=if @md.title.main ; dob.ln,dob.name,dob.obj=4,'seg',@md.title.main
else dob.ln,dob.name,dob.obj=4,'seg','[segment]'
diff --git a/lib/sisu/v3/dal_substitutions_and_insertions.rb b/lib/sisu/v3/dal_substitutions_and_insertions.rb
index 5844071f..2ae365be 100644
--- a/lib/sisu/v3/dal_substitutions_and_insertions.rb
+++ b/lib/sisu/v3/dal_substitutions_and_insertions.rb
@@ -56,22 +56,22 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_substitute_and_insert
+module SiSU_DAL_SubstituteAndInsert
class SI
def initialize(md,data)
@md,@data=md,data
- @skin=SiSU_Env::Info_skin.new(@md)
+ @skin=SiSU_Env::InfoSkin.new(@md)
end
def substitutions_and_insertions?
data=@data
data_expand=[]
if data[0] =~ /^#!\s*(?:\/usr\/bin\/env sisu|\/usr\/bin\/sisu)/ # remove bang from top #! (however file is stripped, so will be removed provided no content precedes it)
- data[0].gsub!(/^#!\s*\/usr\/bin\/sisu/,'')
- data[0].gsub!(/^#!\s*\/usr\/bin\/env sisu/,'')
+ data[0]=data[0].gsub(/^#!\s*\/usr\/bin\/sisu/,'').
+ gsub(/^#!\s*\/usr\/bin\/env sisu/,'')
end
if data[0] =~ /^(SiSU\s+[\d.]*|sisu-[\d.]+)$/ # SiSU identifier
- data[0].gsub!(/^(SiSU\s*[\d.]*)$/,'% \1')
- data[0].gsub!(/^(sisu-[\d.]+)$/,'% \1')
+ data[0]=data[0].gsub(/^(SiSU\s*[\d.]*)$/,'% \1').
+ gsub(/^(sisu-[\d.]+)$/,'% \1')
end
data.each do |para|
if para =~/<:(insert\d+)!?>/ \
@@ -132,22 +132,24 @@ module SiSU_substitute_and_insert
para.each {|x| data_expand << x }
else data_expand << para
end
- data_expand.flatten!
- data_expand.compact!
+ data_expand=data_expand.flatten.compact
end
+ data_new=[]
data_expand.each do |para|
para=if @md.markup_version.determined >= 0.38
- SiSU_document_structure_extract::Structure.new(@md,para).structure_markup_normalize
+ SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure_markup_normalize
else
- SiSU_document_structure_extract::Structure.new(@md,para).structure_marks
+ SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure_marks
end
- para.gsub!(/^(:?A~)\s*$/,'\1~ @title @author') #conditional header
- para.gsub!(/^((?:[1-9]|:?[A-C])~\S*)\s*$/,'\1~ [Note: heading marker::required title missing]~#') #conditional header for incorporated document 2004w12
+ para=para.gsub(/^(:?A~)\s*$/,'\1~ @title @author'). #conditional header
+ gsub(/^((?:[1-9]|:?[A-C])~\S*)\s*$/,'\1~ [Note: heading marker::required title missing]~#') #conditional header for incorporated document 2004w12
if para =~/^@\S+?:/
- para.gsub!(/^@(\S+?):(\s+|$)/,"#{Mx[:meta_o]}\\1#{Mx[:meta_c]}\\2")
- para.gsub!(/^@(\S+?):([+-])(\s+|$)/,"#{Mx[:meta_o]}\\1\\2#{Mx[:meta_c]}\\3")
+ para=para.gsub(/^@(\S+?):(\s+|$)/,"#{Mx[:meta_o]}\\1#{Mx[:meta_c]}\\2").
+ gsub(/^@(\S+?):([+-])(\s+|$)/,"#{Mx[:meta_o]}\\1\\2#{Mx[:meta_c]}\\3")
end
+ data_new << para
end
+ data_new
end
end
end
diff --git a/lib/sisu/v3/dal_syntax.rb b/lib/sisu/v3/dal_syntax.rb
index 2d2a8430..73bb6a64 100644
--- a/lib/sisu/v3/dal_syntax.rb
+++ b/lib/sisu/v3/dal_syntax.rb
@@ -56,7 +56,7 @@
** Description: Syntax for markup, input markup syntaxes, determined here
=end
-module SiSU_Syntax
+module SiSU_DAL_Syntax
class Words
def initialize(line,md,mkp)
@line,@md,@mkp=line,md,mkp
@@ -65,11 +65,11 @@ module SiSU_Syntax
class Markup
def initialize(md='',data='')
@data,@md=data,md
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@data_new=[]
- url_and_stub=SiSU_Env::Info_env.new.url
+ url_and_stub=SiSU_Env::InfoEnv.new.url
@output_url="#{url_and_stub.remote}"
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
emph_set=if defined? @md.make.emphasis \
and not @md.make.emphasis.nil?
@md.make.emphasis
@@ -120,7 +120,7 @@ module SiSU_Syntax
end
end
def songsheet
- @data.compact!
+ @data=@data.compact
@data.each do |dob|
dob=breaks(dob)
dob=if @md.sem_tag then sem(dob) else dob end #revisit
@@ -132,12 +132,15 @@ module SiSU_Syntax
@data_new
end
def sem(dob) #revisit
- dob=SiSU_sem::Tags.new(dob,@md).rm.all
+ dob=SiSU_Sem::Tags.new(dob,@md).rm.all
end
def breaks(dob)
- if dob.is !~/^(?:meta|comment|code|table)/
- dob.obj.gsub!(/ \\\\(?: |$)/,"#{Mx[:br_line]}")
- dob.obj.gsub!(/(?:<:?br>|<br \/>)/,"#{Mx[:br_line]}") # depreciated
+ if dob.is !=:meta \
+ && dob.is !=:comment \
+ && dob.is !=:code \
+ && dob.is !=:table
+ dob.obj=dob.obj.gsub(/ \\\\(?: |$)/,"#{Mx[:br_line]}").
+ gsub(/(?:<:?br>|<br \/>)/,"#{Mx[:br_line]}") # depreciated
end
dob
end
@@ -147,20 +150,23 @@ module SiSU_Syntax
and @md.make.italics[:str]) \
or (defined? @vz.markup_make_italic[:str] \
and @vz.markup_make_italic[:str])
- dob.obj=if dob.is !~/^(?:meta|heading|code|comment)/
+ dob.obj=if dob.is !=:meta \
+ && dob.is !=:heading \
+ && dob.is !=:heading_insert \
+ && dob.is !=:code \
+ && dob.is !=:comment
word=dob.obj.scan(@line_scan_ital)
- word.flatten!
- word.compact! #reinstated
+ word=word.flatten.compact
line_array=[]
word.each do |w|
unless /#{@manmkp_ital}|#{@http_m}/.match(w)
if defined? @md.make.italics[:regx] \
and @md.make.italics[:regx]
- w.gsub!(@md.make.italics[:regx],
+ w=w.gsub(@md.make.italics[:regx],
"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
elsif defined? @vz.markup_make_italic \
and @vz.markup_make_italic
- w.gsub!(@vz.markup_make_italic,
+ w=w.gsub(@vz.markup_make_italic,
"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
else w
end
@@ -174,28 +180,28 @@ module SiSU_Syntax
dob
end
def embolden(given)
- given.gsub!(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}\\2")
- given.gsub!(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*)/,
- "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}")
- given.gsub!(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2")
- given.gsub!(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2")
- given.gsub!(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s*([~-]#)$/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2")
- given.gsub!(/(?:^!_\s+|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]}\s*)(.*)?\s*$/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
+ given=given.gsub(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
+ "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}\\2").
+ gsub(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*)/,
+ "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}").
+ gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
+ "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
+ gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
+ "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
+ gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s*([~-]#)$/,
+ "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
+ gsub(/(?:^!_\s+|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]}\s*)(.*)?\s*$/,
+ "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
end
def italicise(given)
- given.gsub!(/^\/_\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2")
- given.gsub!(/^\/_\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2")
- given.gsub!(/^\/_\s*(.+?)\s*([~-]#)$/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2")
- given.gsub!(/^\/_\s+(.*)?\s*$/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
+ given=given.gsub(/^\/_\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
+ "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
+ gsub(/^\/_\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
+ "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
+ gsub(/^\/_\s*(.+?)\s*([~-]#)$/,
+ "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
+ gsub(/^\/_\s+(.*)?\s*$/,
+ "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
end
def wordlist_bold(dob)
dob=dob.dup
@@ -203,22 +209,26 @@ module SiSU_Syntax
and @md.make.bold[:str]) \
or (defined? @vz.markup_make_bold[:str] \
and @vz.markup_make_bold[:str])
- dob.obj=if dob.is !~/^(?:meta|heading|code|comment|table)/
+ dob.obj=if dob.is !=:meta \
+ && dob.is !=:heading \
+ && dob.is !=:heading_insert \
+ && dob.is !=:code \
+ && dob.is !=:comment \
+ && dob.is !=:table
line_array=[]
word=dob.obj.scan(@line_scan_bold)
- word.flatten!
- word.compact!
+ word=word.flatten.compact
word.each do |w|
unless /#{@manmkp_bold}|#{@http_m}/.match(w)
if defined? @md.make.bold[:regx] \
and @md.make.bold[:regx] #document header: @bold: [bold word list]
- w.gsub!(@md.make.bold[:regx],"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
+ w=w.gsub(@md.make.bold[:regx],"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
elsif defined? @vz.markup_make_bold \
and @vz.markup_make_bold #defaults and skin adjusted bold word list
- w.gsub!(@vz.markup_make_bold,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
+ w=w.gsub(@vz.markup_make_bold,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
end
else
- if w =~ /(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s+/; embolden(w) #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost!
+ w=if w =~ /(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s+/; embolden(w) #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost!
elsif w =~/^\/_\s+/; italicise(w)
else w
end
@@ -229,42 +239,46 @@ module SiSU_Syntax
else dob.obj
end
else
- if dob.is !~/^(?:heading|comment|meta)/ \
+ dob.obj=if (dob.is !=:heading \
+ && dob.is !=:heading_insert \
+ && dob.is !=:comment \
+ && dob.is !=:meta) \
and dob.obj =~ /^!_\s+/
embolden(dob.obj)
- elsif dob.is=='heading' \
+ elsif dob.is==:heading \
and dob.ln.to_s =~/[7-9]/
embolden(dob.obj)
+ else dob.obj
end
if dob.obj =~ /\/_\s+/
- italicise(dob.obj)
+ dob.obj=italicise(dob.obj)
end
end
dob
end
def fontface(dob)
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)\*\{(.+?)\}\*/m,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}") #emphasis
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)!\{(.+?)\}!/m,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\(|\>)\/\{(.+?)\}\//m,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}") #italics
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)_\{(.+?)\}_/m,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)#\{(.+?)\}#/m,
- "\\1#{Mx[:fa_monospace_o]}\\2#{Mx[:fa_monospace_c]}") #monospace
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/m,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}") #cite /blockquote?
- dob.obj.gsub!(/(^|[^\\])\^\{(.+?)\}\^/m,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript
- dob.obj.gsub!(/(^|[^\\]),\{(.+?)\},/m,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}") #subscript
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/m,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}") #inserted text
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/m,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}") #strikethrough - deleted text
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>|\d+)\^(\S+?)\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript single word, watch digit added
+ dob.obj=dob.obj.gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)\*\{(.+?)\}\*/m,
+ "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)!\{(.+?)\}!/m,
+ "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\(|\>)\/\{(.+?)\}\//m,
+ "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)_\{(.+?)\}_/m,
+ "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)#\{(.+?)\}#/m,
+ "\\1#{Mx[:fa_monospace_o]}\\2#{Mx[:fa_monospace_c]}"). #monospace
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/m,
+ "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}"). #cite /blockquote?
+ gsub(/(^|[^\\])\^\{(.+?)\}\^/m,
+ "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}"). #superscript
+ gsub(/(^|[^\\]),\{(.+?)\},/m,
+ "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}"). #subscript
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/m,
+ "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}"). #inserted text
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/m,
+ "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}"). #strikethrough - deleted text
+ gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>|\d+)\^(\S+?)\^/,
+ "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript single word, watch digit added
dob
end
def bodymarkup(dob)
@@ -298,32 +312,34 @@ module SiSU_Syntax
# # #numbered (list) level 1
# _# #numbered (list) level 2
dob=dob.dup
- if dob.is !~/^(?:meta|comment|code|table)/
+ if dob.is !=:meta \
+ && dob.is !=:comment \
+ && dob.is !=:code \
+ && dob.is !=:table
line_array=[]
word=dob.obj.scan(/\S+|\n/) #unless line =~/^(?:#{Mx[:meta_o]}|%+\s)/ #visit
if word
word.each do |w| # _ - / # | : ! ^ ~
unless w =~/~\{|\}~|~\[|\]~|^\^~|~\^|\*~\S+|~#|\{t?~|\{table|https?:\/\/\S+/ # do something earlier about table!!
- w.gsub!(/\\?~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") #escaped special character
+ w=w.gsub(/\\?~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") #escaped special character
end
- w.gsub!(/^\<$/,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}") #escaped special character
- w.gsub!(/^\>$/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character
+ w=w.gsub(/^\<$/,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}").gsub(/^\>$/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character
line_array << w
end
dob.obj=line_array.join(' ')
dob.obj=dob.obj.strip
end
- dob.obj.gsub!(/^([*#-.]{1,12})$/,'\1 ~#') #ocn off for these paragraph separators
- dob.obj.gsub!(/~\{(.+?)\}~/m,Mx[:en_a_o] + '\1' + Mx[:en_a_c])
- dob.obj.gsub!(/~\[([^*+].+?)\]~/m,Mx[:en_b_o] + '* \1' + Mx[:en_b_c]) #default if markup does not specify
- dob.obj.gsub!(/~\[(.+?)\]~/m,Mx[:en_b_o] + '\1' + Mx[:en_b_c])
- if dob.is =='heading' \
+ dob.obj=dob.obj.gsub(/^([*#-.]{1,12})$/,'\1 ~#'). #ocn off for these paragraph separators
+ gsub(/~\{(.+?)\}~/m,Mx[:en_a_o] + '\1' + Mx[:en_a_c]).
+ gsub(/~\[([^*+].+?)\]~/m,Mx[:en_b_o] + '* \1' + Mx[:en_b_c]). #default if markup does not specify
+ gsub(/~\[(.+?)\]~/m,Mx[:en_b_o] + '\1' + Mx[:en_b_c])
+ if dob.is ==:heading \
and dob.ln ==1
- dob.obj.gsub!(/\s*@title\b/," #{@md.title.full}")
- if defined? @md.creator.author \
+ dob.obj=dob.obj.gsub(/\s*@title\b/," #{@md.title.full}")
+ dob.obj=if defined? @md.creator.author \
and @md.creator.author
- dob.obj.gsub!(/\s+(?:@creator|@author)/,",#{Mx[:br_line]}#{@md.creator.author}")
- else dob.obj.gsub!(/\s+(?:@creator|@author)/,'')
+ dob.obj.gsub(/\s+(?:@creator|@author)/,",#{Mx[:br_line]}#{@md.creator.author}")
+ else dob.obj.gsub(/\s+(?:@creator|@author)/,'')
end
end
if defined? @md.title \
@@ -331,114 +347,114 @@ module SiSU_Syntax
and defined? @md.title.full \
and defined? @md.creator \
and @md.creator
- if dob.is =='heading'
- dob.obj.gsub!(/^\s*@title\s*$/,@md.title.full) if dob.lv =~/1/
- if dob.lv =~/[23]/ \
+ if dob.is ==:heading
+ dob.obj=dob.obj.gsub(/^\s*@title\s*$/,@md.title.full) if dob.lv =~/1/
+ dob.obj=if dob.lv =~/[23]/ \
and defined? @md.creator.author \
and @md.creator.author
- dob.obj.gsub!(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1#{@md.creator.author}")
- else dob.obj.gsub!(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,'\1')
+ dob.obj.gsub(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1#{@md.creator.author}")
+ else dob.obj.gsub(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,'\1')
end
end
end
- dob.obj.gsub!(/<(https?:\/\/\S+?)>/,'< \1 >') #catch problem markup
- dob.obj.gsub!(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image')
- dob.obj.gsub!(/<!(\S+)!>/,'<:\1>') #escaped special character
- dob.obj.gsub!(/&nbsp;/,"#{Mx[:nbsp]}") #escaped special character
- dob.obj.gsub!(/\\~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\{/,"#{Mx[:gl_o]}#123#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\}/,"#{Mx[:gl_o]}#125#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\<</,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}#{Mx[:gl_o]}#lt#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\>>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\</,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\_/,"#{Mx[:gl_o]}#095#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\-/,"#{Mx[:gl_o]}#045#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\+/,"#{Mx[:gl_o]}#043#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\//,"#{Mx[:gl_o]}#047#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\#/,"#{Mx[:gl_o]}#035#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\&/,"#{Mx[:gl_o]}#038#{Mx[:gl_c]}") #&amp; #escaped special character
- dob.obj.gsub!(/\\\|/,"#{Mx[:gl_o]}#124#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility
- dob.obj.gsub!(/\\\:/,"#{Mx[:gl_o]}#058#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility
- dob.obj.gsub!(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility
- dob.obj.gsub!(/\\\^/,"#{Mx[:gl_o]}#094#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility
- dob.obj.gsub!(/\\\,/,"#{Mx[:gl_o]}#044#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility
- dob.obj.gsub!(/\\\\/,"#{Mx[:gl_o]}#092#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\*/,"#{Mx[:gl_o]}#042#{Mx[:gl_c]}") #escaped special character
- dob.obj.gsub!(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}") #escaped special character
+ dob.obj=dob.obj.gsub(/<(https?:\/\/\S+?)>/,'< \1 >'). #catch problem markup
+ gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image').
+ gsub(/<!(\S+)!>/,'<:\1>'). #escaped special character
+ gsub(/&nbsp;/,"#{Mx[:nbsp]}"). #escaped special character
+ gsub(/\\~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\{/,"#{Mx[:gl_o]}#123#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\}/,"#{Mx[:gl_o]}#125#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\<</,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}#{Mx[:gl_o]}#lt#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\>>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}#{Mx[:gl_o]}#gt#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\</,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\_/,"#{Mx[:gl_o]}#095#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\-/,"#{Mx[:gl_o]}#045#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\+/,"#{Mx[:gl_o]}#043#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\//,"#{Mx[:gl_o]}#047#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\#/,"#{Mx[:gl_o]}#035#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\&/,"#{Mx[:gl_o]}#038#{Mx[:gl_c]}"). #&amp; #escaped special character
+ gsub(/\\\|/,"#{Mx[:gl_o]}#124#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
+ gsub(/\\\:/,"#{Mx[:gl_o]}#058#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
+ gsub(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
+ gsub(/\\\^/,"#{Mx[:gl_o]}#094#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
+ gsub(/\\\,/,"#{Mx[:gl_o]}#044#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
+ gsub(/\\\\/,"#{Mx[:gl_o]}#092#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\*/,"#{Mx[:gl_o]}#042#{Mx[:gl_c]}"). #escaped special character
+ gsub(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}") #escaped special character
if dob.obj=~/(?:https?:|ftp:|\{([^{}]+?)\}(?:#|:|[.]{1,2}\/))\S+/m
if dob.obj=~/(?:^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (?:.+?)\s*\}(?:(?:https?:|ftp:|:|[.]{1,2}\/)\S+?)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m
- dob.obj.gsub!(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ ([^}]+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m,
+ dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ ([^}]+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m,
"\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3 #{Mx[:en_a_o]}\\3 \\4#{Mx[:en_a_c]}") # watch
end
if dob.obj=~/(?:^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (?:.+?)\s*\}(?:(?:https?:|ftp:|:|[.]{1,2}\/)\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m
- dob.obj.gsub!(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (.+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
+ dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (.+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
"\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4 #{Mx[:en_a_o]}\\3#{Mx[:en_a_c]} ")
end
- dob.obj.gsub!(/(^|[^#])\{\s*([^{}]+?)\s*\}((?:https?:|:|[.]{2}\/|#)\S+?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3") #linked (text or image, however text cannot include modified face, e.g. bold, ital, underline)
- dob.obj.gsub!(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])((?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3})
- dob.obj.gsub!(/#{Mx[:lnk_c]}#(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}\\1#{Mx[:rel_c]}\\2})
- dob.obj.gsub!(/#{Mx[:lnk_c]}:(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2})
- dob.obj.gsub!(/#{Mx[:lnk_c]}[.]{2}\/(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2})
+ dob.obj=dob.obj.gsub(/(^|[^#])\{\s*([^{}]+?)\s*\}((?:https?:|:|[.]{2}\/|#)\S+?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
+ "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3"). #linked (text or image, however text cannot include modified face, e.g. bold, ital, underline)
+ gsub(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])((?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
+ %{\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3}).
+ gsub(/#{Mx[:lnk_c]}#(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
+ %{#{Mx[:lnk_c]}#{Mx[:rel_o]}\\1#{Mx[:rel_c]}\\2}).
+ gsub(/#{Mx[:lnk_c]}:(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
+ %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2}).
+ gsub(/#{Mx[:lnk_c]}[.]{2}\/(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
+ %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2})
end
if dob.obj=~/_(?:https?|ftp):\S+/m # _http://url #CHECK
- dob.obj.gsub!(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])(_(?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
+ dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])(_(?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
%{\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3})
end
dob=fontface(dob)
- dob.obj.gsub!(/<[:e]\s+(.+?)!?>/,
- "#{Mx[:en_a_o]}\\1#{Mx[:en_a_c]}") #not tested
- dob.obj.gsub!(/^\s*_\*\s*/,
- "#{Mx[:gl_bullet]}") #bullets, shortcut
- dob.obj.gsub!(/=\{(.+?)\}/,
- "#{Mx[:idx_o]}\\1#{Mx[:idx_c]}")
- dob.obj.gsub!(/^\s*_([1-9])\*\s*/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:gl_bullet]}") #bullets, shortcut
- dob.obj.gsub!(/^\s*_([1-9])\s+/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}") #indent
- dob.obj.gsub!(/^\s*_([1-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} ") #indent bold
- dob.obj.gsub!(/^\s*__([1-9])\s+/,
- "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}") #hang
- dob.obj.gsub!(/^\s*__([1-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} ") #hangdef
- dob.obj.gsub!(/^\s*_([0-9])_([0-9])\s+/,
- "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}") #hang
- dob.obj.gsub!(/^\s*_([0-9])_([0-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\3#{Mx[:fa_bold_c]} ") #hangdef
- dob.obj.gsub!(/<:hi>/,"#{Mx[:fa_hilite_o]}") #'<span style="background-color: rgb(255,240,196)">') # bright yellow rgb(255,255,0) pale yellow rgb(255,255,200)
- dob.obj.gsub!(/<:\/hi>/,"#{Mx[:fa_hilite_c]}") #'</span>')
- dob.obj.gsub!(/(#{Mx[:gr_o]}verse#{Mx[:gr_c]}.+)/m,"\\1\n")
- dob.obj.gsub!(/[ ]+($)/,'\1')
- dob.obj.gsub!(/\{\s*(.+?)\s*\}(https?:\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3") #any remaining linked text or image
- dob.obj.gsub!(/\{\s*(.+?)\s*\}(#{Mx[:url_o]}\S+?#{Mx[:url_c]})/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #any remaining linked text or image
- dob.obj.gsub!(/(^|\s)([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)/,"\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}")
- dob.obj.gsub!(/(^|[ ])\{\s*(.+?)\s*\}(\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4") #any remaining linked text or image
- dob.obj.gsub!(/\{\s*(.+?)\s*\}#([a-zA-Z0-9][a-zA-Z0-9_-]*)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:rel_o]}\\2#{Mx[:rel_c]}\\3") #any remaining linked text or image, check need
- dob.obj.gsub!(/\{\s*(.+?)\s*\}(#{Mx[:rel_o]}\S+?#{Mx[:rel_c]})/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #any remaining linked text or image, check need
- dob.obj.gsub!(/\{\s*(.+?)\s*\}(image)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #linked image
- elsif dob.is=='table'
+ dob.obj=dob.obj.gsub(/<[:e]\s+(.+?)!?>/,
+ "#{Mx[:en_a_o]}\\1#{Mx[:en_a_c]}"). #not tested
+ gsub(/^\s*_\*\s*/,
+ "#{Mx[:gl_bullet]}"). #bullets, shortcut
+ gsub(/=\{(.+?)\}/,
+ "#{Mx[:idx_o]}\\1#{Mx[:idx_c]}").
+ gsub(/^\s*_([1-9])\*\s*/,
+ "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:gl_bullet]}"). #bullets, shortcut
+ gsub(/^\s*_([1-9])\s+/,
+ "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}"). #indent
+ gsub(/^\s*_([1-9])!\s+(.+?)\s*$/,
+ "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} "). #indent bold
+ gsub(/^\s*__([1-9])\s+/,
+ "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}"). #hang
+ gsub(/^\s*__([1-9])!\s+(.+?)\s*$/,
+ "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} "). #hangdef
+ gsub(/^\s*_([0-9])_([0-9])\s+/,
+ "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}"). #hang
+ gsub(/^\s*_([0-9])_([0-9])!\s+(.+?)\s*$/,
+ "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\3#{Mx[:fa_bold_c]} "). #hangdef
+ gsub(/<:hi>/,"#{Mx[:fa_hilite_o]}"). #'<span style="background-color: rgb(255,240,196)">') # bright yellow rgb(255,255,0) pale yellow rgb(255,255,200)
+ gsub(/<:\/hi>/,"#{Mx[:fa_hilite_c]}"). #'</span>')
+ gsub(/(#{Mx[:gr_o]}verse#{Mx[:gr_c]}.+)/m,"\\1\n").
+ gsub(/[ ]+($)/,'\1').
+ gsub(/\{\s*(.+?)\s*\}(https?:\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
+ "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3"). #any remaining linked text or image
+ gsub(/\{\s*(.+?)\s*\}(#{Mx[:url_o]}\S+?#{Mx[:url_c]})/,
+ "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2"). #any remaining linked text or image
+ gsub(/(^|\s)([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)/,"\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}").
+ gsub(/(^|[ ])\{\s*(.+?)\s*\}(\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
+ "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4"). #any remaining linked text or image
+ gsub(/\{\s*(.+?)\s*\}#([a-zA-Z0-9][a-zA-Z0-9_-]*)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
+ "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:rel_o]}\\2#{Mx[:rel_c]}\\3"). #any remaining linked text or image, check need
+ gsub(/\{\s*(.+?)\s*\}(#{Mx[:rel_o]}\S+?#{Mx[:rel_c]})/,
+ "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2"). #any remaining linked text or image, check need
+ gsub(/\{\s*(.+?)\s*\}(image)/,
+ "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #linked image
+ elsif dob.is==:table
dob=fontface(dob)
- elsif dob.is =='code'
- dob.obj.gsub!(/#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}\s*/,'@\1: ')
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)&lt;(br(?: \/)?)&gt;([\s,.]|$)/,'\1<\2>\3') #convert <br> <br /> back, clumsy
+ elsif dob.is ==:code
+ dob.obj=dob.obj.gsub(/#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}\s*/,'@\1: ').
+ gsub(/(^|#{Mx[:gl_c]}|\s)&lt;(br(?: \/)?)&gt;([\s,.]|$)/,'\1<\2>\3') #convert <br> <br /> back, clumsy
if dob.number_
codeline=[]
ln=1
dob.obj.split(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}|<br(?: \/)?>|\n/).each_with_index do |cl,i|
unless i == 0
- cl.gsub!(Mx[:br_nl],'')
+ cl=cl.gsub(Mx[:br_nl],'')
w=3-ln.to_s.length
cl = "#{ln}#{Mx[:nbsp]*w}#{Mx[:vline]}#{cl}#{Mx[:br_nl]}"
ln +=1
@@ -448,7 +464,7 @@ module SiSU_Syntax
codeline= codeline.join("")
dob.obj=codeline
else
- dob.obj.gsub!(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}/,"\n")
+ dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}/,"\n")
end
dob
else # @\S+?:
@@ -474,62 +490,62 @@ module SiSU_Syntax
# +2 <!i2!>
puts 'tech'
@data.each do |line|
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)e\{(.+?)\}e/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}") #emphasis
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)b\{(.+?)\}b/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)u\{(.+?)\}u/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)c\{(.+?)\}c/,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}") #cite
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)i\{(.+?)\}i/,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}") #italics
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)!\{(.+?)\}!/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)\*\{(.+?)\}\*/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}") #emphasis
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)_\{(.+?)\}_/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\(|\>)\/\{(.+?)\}\//,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}") #italics
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^\{(.+?)\}\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)9\{(.+?)\}9/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>),\{(.+?)\},/,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)6\{(.+?)\}6/,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)v\{(.+?)\}v/,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)x\{(.+?)\}x/,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}")
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\*(\S+?)\*/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}") #emphasise single word, watch
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\!(\S+?)\!/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold single word, watch
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\/([\(\)a-zA-Z0-9']+?)\/([ ,.;:'"~$]|[^a-zA-Z0-9])/,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}\\3") #italics single word, watch
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)_(\S+?)_/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore single word, watch
- line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^(\S+?)\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #check #superscript single word, watch digit added
- line.gsub!(/^\s*_\([1-9]\)\(\*\+\)\s*/,
- "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:fa_o]}\\2#{Mx[:fa_c_o]}") #bullets, shortcut
- line.gsub!(/^\s*_\([1-9]\)\s+/,
- "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}") #watch
- line.gsub!(/^\s*__\([1-9]\)\s+/,
- "#{Mx[:pa_o]}:h\\1#{Mx[:pa_c]}") #watch
- #line.gsub!(/^\s*__\([1-9]\)!\s+/,
- # "#{Mx[:pa_o]}:hd\\1#{Mx[:pa_c]}") #watch
- line.gsub!(/#{Mx[:br_line]}\s*_[12]\s+/,
- "#{Mx[:br_line]} ") #indent used in endnotes, not implemented, replace when ready with: line.gsub!(/(?:<br>|<br \/>)\s*_([12])\s+/,'<br><:i\1> ')
+ line=line.gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)e\{(.+?)\}e/,
+ "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)b\{(.+?)\}b/,
+ "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)u\{(.+?)\}u/,
+ "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)c\{(.+?)\}c/,
+ "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}"). #cite
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)i\{(.+?)\}i/,
+ "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)!\{(.+?)\}!/,
+ "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)\*\{(.+?)\}\*/,
+ "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)_\{(.+?)\}_/,
+ "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\(|\>)\/\{(.+?)\}\//,
+ "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/,
+ "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^\{(.+?)\}\^/,
+ "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)9\{(.+?)\}9/,
+ "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>),\{(.+?)\},/,
+ "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)6\{(.+?)\}6/,
+ "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/,
+ "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)v\{(.+?)\}v/,
+ "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/,
+ "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)x\{(.+?)\}x/,
+ "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}").
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\*(\S+?)\*/,
+ "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasise single word, watch
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\!(\S+?)\!/,
+ "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold single word, watch
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\/([\(\)a-zA-Z0-9']+?)\/([ ,.;:'"~$]|[^a-zA-Z0-9])/,
+ "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}\\3"). #italics single word, watch
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)_(\S+?)_/,
+ "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore single word, watch
+ gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^(\S+?)\^/,
+ "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}"). #check #superscript single word, watch digit added
+ gsub(/^\s*_\([1-9]\)\(\*\+\)\s*/,
+ "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:fa_o]}\\2#{Mx[:fa_c_o]}"). #bullets, shortcut
+ gsub(/^\s*_\([1-9]\)\s+/,
+ "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}"). #watch
+ gsub(/^\s*__\([1-9]\)\s+/,
+ "#{Mx[:pa_o]}:h\\1#{Mx[:pa_c]}"). #watch
+ #line.gsub(/^\s*__\([1-9]\)!\s+/,
+ # "#{Mx[:pa_o]}:hd\\1#{Mx[:pa_c]}"). #watch
+ gsub(/#{Mx[:br_line]}\s*_[12]\s+/,
+ "#{Mx[:br_line]} ") #indent used in endnotes, not implemented, replace when ready with: line.gsub(/(?:<br>|<br \/>)\s*_([12])\s+/,'<br><:i\1> ')
end
@data
end
diff --git a/lib/sisu/v3/db_columns.rb b/lib/sisu/v3/db_columns.rb
index 10b9635f..cf4ba9c7 100644
--- a/lib/sisu/v3/db_columns.rb
+++ b/lib/sisu/v3/db_columns.rb
@@ -57,13 +57,13 @@
sqlite
=end
-module SiSU_DB_columns
+module SiSU_DbColumns
require_relative 'sysenv' # sysenv.rb
require_relative 'db_sqltxt' # db_sqltxt.rb
- class Columns < SiSU_DB_text::Prepare
+ class Columns < SiSU_DbText::Prepare
def initialize(md=nil)
@md=md
- @db=SiSU_Env::Info_db.new #watch
+ @db=SiSU_Env::InfoDb.new #watch
@lang ||=SiSU_i18n::Languages.new
if defined? md.opt.mod \
and md.opt.mod.inspect=~/import|update/ \
@@ -109,7 +109,7 @@ module SiSU_DB_columns
t=if defined? @md.title.full \
and @md.title.full=~/\S+/
txt=@md.title.full
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -131,7 +131,7 @@ module SiSU_DB_columns
t=if defined? @md.title.main \
and @md.title.main=~/\S+/
txt=@md.title.main
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -153,7 +153,7 @@ module SiSU_DB_columns
t=if defined? @md.title.sub \
and @md.title.sub=~/\S+/
txt=@md.title.sub
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -175,7 +175,7 @@ module SiSU_DB_columns
t=if defined? @md.title.short \
and @md.title.short=~/\S+/
txt=@md.title.short
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -197,7 +197,7 @@ module SiSU_DB_columns
t=if defined? @md.title.edition \
and @md.title.edition=~/\S+/
txt=@md.title.edition
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -219,7 +219,7 @@ module SiSU_DB_columns
t=if defined? @md.title.note \
and @md.title.note=~/\S+/
txt=@md.title.note
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -240,7 +240,7 @@ module SiSU_DB_columns
def tuple
t=if @lang.list[@md.opt.lng][:n]
txt=@lang.list[@md.opt.lng][:n]
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -262,7 +262,7 @@ module SiSU_DB_columns
t=if defined? @md.opt.lng \
and @md.opt.lng=~/\S+/
txt=@md.opt.lng
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -302,8 +302,8 @@ module SiSU_DB_columns
@md.creator.author_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -325,7 +325,7 @@ module SiSU_DB_columns
t=if defined? @md.creator.author_hon \
and @md.creator.author_hon=~/\S+/
txt=@md.creator.author_hon
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -347,7 +347,7 @@ module SiSU_DB_columns
t=if defined? @md.creator.author_nationality_detail \
and @md.creator.author_nationality=~/\S+/
txt=@md.creator.author_nationality_detail
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -374,8 +374,8 @@ module SiSU_DB_columns
@md.creator.editor_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -402,8 +402,8 @@ module SiSU_DB_columns
@md.creator.contributor_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -430,8 +430,8 @@ module SiSU_DB_columns
@md.creator.illustrator_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -458,8 +458,8 @@ module SiSU_DB_columns
@md.creator.photographer_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -485,8 +485,8 @@ module SiSU_DB_columns
@md.creator.translator_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -513,8 +513,8 @@ module SiSU_DB_columns
@md.creator.prepared_by_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -541,8 +541,8 @@ module SiSU_DB_columns
@md.creator.digitized_by_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -569,8 +569,8 @@ module SiSU_DB_columns
@md.creator.audio_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -596,8 +596,8 @@ module SiSU_DB_columns
@md.creator.video_detail.each do |h|
txt=txt + %{#{h[:the]}, #{h[:others]}; }
end
- txt.gsub!(/[;, ]+\s*$/,'')
- special_character_escape(txt)
+ txt=txt.gsub(/[;, ]+\s*$/,'')
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -630,7 +630,7 @@ module SiSU_DB_columns
def tuple
t=if @lang.list[@md.opt.lng][:n]
txt=@lang.list[@md.opt.lng][:n]
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -653,7 +653,7 @@ module SiSU_DB_columns
t=if defined? @md.opt.lng \
and @md.opt.lng=~/\S+/
txt=@md.opt.lng
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -675,7 +675,7 @@ module SiSU_DB_columns
t=if defined? @md.language.original \
and @md.language.original=~/\S+/
txt=@md.language.original
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -697,7 +697,7 @@ module SiSU_DB_columns
t=if defined? @md.language.original_char \
and @md.language.original_char=~/\S+/
txt=@md.language.original_char
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -733,7 +733,7 @@ module SiSU_DB_columns
t=if defined? @md.date.added_to_site \
and @md.date.added_to_site=~/\S+/
txt=@md.date.added_to_site
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -755,7 +755,7 @@ module SiSU_DB_columns
t=if defined? @md.date.available \
and @md.date.available=~/\S+/
txt=@md.date.available
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -777,7 +777,7 @@ module SiSU_DB_columns
t=if defined? @md.date.created \
and @md.date.created=~/\S+/
txt=@md.date.created
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -799,7 +799,7 @@ module SiSU_DB_columns
t=if defined? @md.date.issued \
and @md.date.issued=~/\S+/
txt=@md.date.issued
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -821,7 +821,7 @@ module SiSU_DB_columns
t=if defined? @md.date.modified \
and @md.date.modified=~/\S+/
txt=@md.date.modified
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -843,7 +843,7 @@ module SiSU_DB_columns
t=if defined? @md.date.published \
and @md.date.published=~/\S+/
txt=@md.date.published
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -865,7 +865,7 @@ module SiSU_DB_columns
t=if defined? @md.date.valid \
and @md.date.valid=~/\S+/
txt=@md.date.valid
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -887,7 +887,7 @@ module SiSU_DB_columns
t=if defined? @md.date.translated \
and @md.date.translated=~/\S+/
txt=@md.date.translated
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -909,7 +909,7 @@ module SiSU_DB_columns
t=if defined? @md.date.original_publication \
and @md.date.original_publication=~/\S+/
txt=@md.date.original_publication
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -932,7 +932,7 @@ module SiSU_DB_columns
t=if defined? @md.generated \
and @md.generated.to_s=~/\S+/
txt=@md.generated.to_s
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -958,7 +958,7 @@ module SiSU_DB_columns
t=if defined? @md.publisher \
and @md.publisher=~/\S+/
txt=@md.publisher
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -980,7 +980,7 @@ module SiSU_DB_columns
# t=if defined? @md.current.publisher \
# and @md.current.publisher=~/\S+/
# txt=@md.current.publisher
-# special_character_escape(txt)
+# txt=special_character_escape(txt)
# "'#{txt}', "
# end
# end
@@ -1011,7 +1011,7 @@ module SiSU_DB_columns
t=if defined? @md.original.publisher \
and @md.original.publisher=~/\S+/
txt=@md.original.publisher
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1033,7 +1033,7 @@ module SiSU_DB_columns
t=if defined? @md.original.language \
and @md.original.language=~/\S+/
txt=@md.original.language
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1055,7 +1055,7 @@ module SiSU_DB_columns
t=if defined? @md.original.language_char \
and @md.original.language_char=~/\S+/
txt=@md.original.language_char
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1077,7 +1077,7 @@ module SiSU_DB_columns
t=if defined? @md.original.source \
and @md.original.source=~/\S+/
txt=@md.original.source
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1099,7 +1099,7 @@ module SiSU_DB_columns
t=if defined? @md.original.institution \
and @md.original.institution=~/\S+/
txt=@md.original.institution
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1121,7 +1121,7 @@ module SiSU_DB_columns
t=if defined? @md.original.nationality \
and @md.original.nationality=~/\S+/
txt=@md.original.nationality
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1158,7 +1158,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.all \
and @md.rights.all=~/\S+/
txt=@md.rights.all
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1180,7 +1180,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_text \
and @md.rights.copyright_text=~/\S+/
txt=@md.rights.copyright_text
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1202,7 +1202,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_translation \
and @md.rights.copyright_translation=~/\S+/
txt=@md.rights.copyright_translation
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1224,7 +1224,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_illustrations \
and @md.rights.copyright_illustrations=~/\S+/
txt=@md.rights.copyright_illustrations
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1246,7 +1246,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_photographs \
and @md.rights.copyright_photographs=~/\S+/
txt=@md.rights.copyright_photographs
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1268,7 +1268,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_preparation \
and @md.rights.copyright_preparation=~/\S+/
txt=@md.rights.copyright_preparation
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1290,7 +1290,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_digitization \
and @md.rights.copyright_digitization=~/\S+/
txt=@md.rights.copyright_digitization
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1312,7 +1312,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_audio \
and @md.rights.copyright_audio=~/\S+/
txt=@md.rights.copyright_audio
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1334,7 +1334,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.copyright_video \
and @md.rights.copyright_video=~/\S+/
txt=@md.rights.copyright_video
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1356,7 +1356,7 @@ module SiSU_DB_columns
t=if defined? @md.rights.license \
and @md.rights.license=~/\S+/
txt=@md.rights.license
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1394,7 +1394,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.topic_register \
and @md.classify.topic_register=~/\S+/
txt=@md.classify.topic_register
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1416,7 +1416,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.subject \
and @md.classify.subject=~/\S+/
txt=@md.classify.subject
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1438,7 +1438,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.type \
and @md.classify.type=~/\S+/
txt=@md.classify.type
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1460,7 +1460,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.loc \
and @md.classify.loc=~/\S+/
txt=@md.classify.loc
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1482,7 +1482,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.dewey \
and @md.classify.dewey=~/\S+/
txt=@md.classify.dewey
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1504,7 +1504,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.oclc \
and @md.classify.oclc=~/\S+/
txt=@md.classify.oclc
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1526,7 +1526,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.pg \
and @md.classify.pg=~/\S+/
txt=@md.classify.pg
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1548,7 +1548,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.isbn \
and @md.classify.isbn=~/\S+/
txt=@md.classify.isbn
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1570,7 +1570,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.format \
and @md.classify.format=~/\S+/
txt=@md.classify.format
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1592,7 +1592,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.identifier \
and @md.classify.identifier=~/\S+/
txt=@md.classify.identifier
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1614,7 +1614,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.relation \
and @md.classify.relation=~/\S+/
txt=@md.classify.relation
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1636,7 +1636,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.coverage \
and @md.classify.coverage=~/\S+/
txt=@md.classify.coverage
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1658,7 +1658,7 @@ module SiSU_DB_columns
t=if defined? @md.classify.keywords \
and @md.classify.keywords=~/\S+/
txt=@md.classify.keywords
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1692,7 +1692,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.abstract \
and @md.notes.abstract=~/\S+/
txt=@md.notes.abstract
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1714,7 +1714,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.comment \
and @md.notes.comment=~/\S+/
txt=@md.notes.comment
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1736,7 +1736,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.description \
and @md.notes.description=~/\S+/
txt=@md.notes.description
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1758,7 +1758,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.history \
and @md.notes.history=~/\S+/
txt=@md.notes.history
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1780,7 +1780,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.prefix \
and @md.notes.prefix=~/\S+/
txt=@md.notes.prefix
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1802,7 +1802,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.prefix_a \
and @md.notes.prefix_a=~/\S+/
txt=@md.notes.prefix_a
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1824,7 +1824,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.prefix_b \
and @md.notes.prefix_b=~/\S+/
txt=@md.notes.prefix_b
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1846,7 +1846,7 @@ module SiSU_DB_columns
t=if defined? @md.notes.suffix \
and @md.notes.suffix=~/\S+/
txt=@md.notes.suffix
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1871,7 +1871,7 @@ module SiSU_DB_columns
t=if defined? @md.fns \
and @md.fns=~/\S+/
txt=@md.fns
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1916,7 +1916,7 @@ module SiSU_DB_columns
t=if defined? @md.filesize \
and @md.filesize=~/\S+/
txt=@md.filesize
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -1938,7 +1938,7 @@ module SiSU_DB_columns
t=if defined? @md.wc_words \
and @md.wc_words=~/\S+/
txt=@md.wc_words
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -2006,7 +2006,7 @@ module SiSU_DB_columns
t=if defined? @md.skin_name \
and @md.skin_name=~/\S+/
txt=@md.skin_name
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -2029,7 +2029,7 @@ module SiSU_DB_columns
and @md.dgst_skin.class==Array \
and @md.dgst_skin[1]=~/\S+/
txt=@md.dgst_skin[1]
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -2051,7 +2051,7 @@ module SiSU_DB_columns
t=if defined? @md.skin \
and @md.skin=~/\S+/
txt=@md.skin
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -2074,7 +2074,7 @@ module SiSU_DB_columns
t=if defined? @md.links \
and @md.links=~/\S+/
txt=@md.links
- special_character_escape(txt)
+ txt=special_character_escape(txt)
["#{name}, ","'#{txt}', "]
else ['','']
end
@@ -2084,7 +2084,7 @@ module SiSU_DB_columns
self
end
end
- class Column_size
+ class ColumnSize
def document_clean # restriction not necessary
60000
end
diff --git a/lib/sisu/v3/db_create.rb b/lib/sisu/v3/db_create.rb
index 71d0ce09..627f0ea5 100644
--- a/lib/sisu/v3/db_create.rb
+++ b/lib/sisu/v3/db_create.rb
@@ -57,18 +57,18 @@
sqlite
=end
-module SiSU_DB_create
+module SiSU_DbCreate
require_relative 'db_columns' # db_columns.rb
- class Create < SiSU_DB_columns::Columns
+ class Create < SiSU_DbColumns::Columns
require_relative 'sysenv' # sysenv.rb
@@dl=nil
def initialize(opt,conn,file,sql_type='pg')
@opt,@conn,@file,@sql_type=opt,conn,file,sql_type
@cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
@comment=(@sql_type=='pg') \
- ? (Comment.new(@conn,@sql_type))
+ ? (SiSU_DbCreate::Comment.new(@conn,@sql_type))
: nil
- @@dl ||=SiSU_Env::Info_env.new.digest.length
+ @@dl ||=SiSU_Env::InfoEnv.new.digest.length
end
def available
DBI.available_drivers.each do |driver|
@@ -79,15 +79,15 @@ module SiSU_DB_create
end
end
def create_db
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
tell=(@sql_type=='sqlite') \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create Sqlite db tables in:',%{"#{@env.path.output}/sisu_sqlite.db"})
+ ? SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create Sqlite db tables in:',%{"#{@file}"})
: SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create PG db tables in:',%{"#{Db[:name_prefix]}#{@env.path.stub_pwd}"})
- tell.colorize if @opt.cmd =~/vVM/
- SiSU_Env::System_call.new.create_pg_db(@env.path.stub_pwd) if @sql_type=='pg' #watch use of path.stub_pwd instead of stub
+ tell.colorize if @opt.cmd =~/[vVM]/
+ SiSU_Env::SystemCall.new.create_pg_db(@env.path.stub_pwd) if @sql_type=='pg' #watch use of path.stub_pwd instead of stub
end
def output_dir?
- dir=SiSU_Env::Info_env.new('')
+ dir=SiSU_Env::InfoEnv.new('')
if @opt.cmd =~/d/
dir.path.webserv_stub_ensure
end
@@ -345,7 +345,7 @@ module SiSU_DB_create
self
end
end
- class Comment < SiSU_DB_columns::Columns
+ class Comment < SiSU_DbColumns::Columns
def initialize(conn,sql_type='pg')
@conn=conn
if sql_type =~ /pg/; psql
diff --git a/lib/sisu/v3/db_dbi.rb b/lib/sisu/v3/db_dbi.rb
index c290c9e3..0c19578f 100644
--- a/lib/sisu/v3/db_dbi.rb
+++ b/lib/sisu/v3/db_dbi.rb
@@ -57,7 +57,7 @@
sqlite
=end
-module SiSU_DB_DBI
+module SiSU_DbDBI
require_relative 'db_columns' # db_columns.rb
require_relative 'db_tests' # db_tests.rb
require_relative 'db_create' # db_create.rb
@@ -67,27 +67,27 @@ module SiSU_DB_DBI
require_relative 'db_remove' # db_remove.rb
require_relative 'db_load_tuple' # db_load_tuple.rb
require_relative 'db_import' # db_import.rb
- class Column_size < SiSU_DB_columns::Column_size # db_columns.rb
+ class ColumnSize < SiSU_DbColumns::ColumnSize # db_columns.rb
end
- class Test < SiSU_DB_tests::Test # db_tests.rb
+ class Test < SiSU_DbTests::Test # db_tests.rb
end
- class Create <SiSU_DB_create::Create # db_create.rb
+ class Create <SiSU_DbCreate::Create # db_create.rb
end
- class Case <SiSU_DB_select::Case # db_select.rb
+ class Case <SiSU_DbSelect::Case # db_select.rb
end
- class Index <SiSU_DB_index::Index # db_indexes.rb
+ class Index <SiSU_DbIndex::Index # db_indexes.rb
end
- class Drop <SiSU_DB_drop::Drop # db_drop.rb
+ class Drop <SiSU_DbDrop::Drop # db_drop.rb
end
- class Remove <SiSU_DB_remove::Remove # db_remove.rb
+ class Remove <SiSU_DbRemove::Remove # db_remove.rb
end
- class Load_documents <SiSU_DB_tuple::Load_documents # db_load_tuple.rb
+ class LoadDocuments <SiSU_DbTuple::LoadDocuments # db_load_tuple.rb
end
- class Load_metadata <SiSU_DB_tuple::Load_metadata # db_load_tuple.rb
+ class LoadMetadata <SiSU_DbTuple::LoadMetadata # db_load_tuple.rb
end
- class Load_urls <SiSU_DB_tuple::Load_urls # db_update urls
+ class LoadUrls <SiSU_DbTuple::LoadUrls # db_update urls
end
- class Import <SiSU_DB_import::Import #<SiSU_DB::Column_size # db_import.rb
+ class Import <SiSU_DbImport::Import #<SiSU_DB::ColumnSize # db_import.rb
end
end
__END__
diff --git a/lib/sisu/v3/db_drop.rb b/lib/sisu/v3/db_drop.rb
index 1baecb73..4b9aba7d 100644
--- a/lib/sisu/v3/db_drop.rb
+++ b/lib/sisu/v3/db_drop.rb
@@ -57,7 +57,7 @@
sqlite
=end
-module SiSU_DB_drop
+module SiSU_DbDrop
class Drop
require_relative 'response' # response.rb
def initialize(opt,conn,db_info,sql_type='')
@@ -90,10 +90,10 @@ module SiSU_DB_drop
and File.exist?(@db_info.sqlite.db)
@conn.close
File.unlink(@db_info.sqlite.db)
- db=SiSU_Env::Info_db.new
+ db=SiSU_Env::InfoDb.new
conn=db.sqlite.conn_sqlite3
- sdb=SiSU_DB_DBI::Create.new(@opt,conn,@db_info,@sql_type)
- sdb_index=SiSU_DB_DBI::Index.new(@opt,conn,@db_info,@sql_type)
+ sdb=SiSU_DbDBI::Create.new(@opt,conn,@db_info,@sql_type)
+ sdb_index=SiSU_DbDBI::Index.new(@opt,conn,@db_info,@sql_type)
sdb.output_dir?
begin
sdb.create_db
@@ -104,7 +104,7 @@ module SiSU_DB_drop
sdb.create_table.endnotes_plus
sdb.create_table.urls
sdb_index.create_indexes
- rescue; SiSU_Errors::Info_error.new($!,$@,'-D').error; @sdb.output_dir?
+ rescue; SiSU_Errors::InfoError.new($!,$@,'-D').error; sdb.output_dir?
end
exit
else
diff --git a/lib/sisu/v3/db_import.rb b/lib/sisu/v3/db_import.rb
index a78a0656..3bb6e210 100644
--- a/lib/sisu/v3/db_import.rb
+++ b/lib/sisu/v3/db_import.rb
@@ -57,13 +57,13 @@
sqlite
=end
-module SiSU_DB_import
+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 'sqlite3'
- class Import < SiSU_DB_text::Prepare
+ class Import < SiSU_DbText::Prepare
include SiSU_Param
include SiSU_Screen
@@dl=nil
@@ -72,7 +72,7 @@ module SiSU_DB_import
def initialize(opt,conn,file,sql_type='pg')
@opt,@conn,@file,@sql_type=opt,conn,file,sql_type
@cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
@dal="#{@env.processing_path.dal}"
if @opt.fns.empty? or @opt.cmd.empty?; @fnb=''
else
@@ -85,7 +85,7 @@ module SiSU_DB_import
@col=Hash.new('')
@col[:ocn]=''
@counter={}
- @db=SiSU_Env::Info_db.new
+ @db=SiSU_Env::InfoDb.new
if @sql_type=='sqlite'
@driver_sqlite3=(@conn.inspect.match(/^(.{10})/)[1]==@db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1]) \
? true
@@ -112,8 +112,9 @@ module SiSU_DB_import
end
@id_n =0 if @col[:lid].nil? or @col[:lid].to_s.empty?
@col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0
- @db=SiSU_Env::Info_db.new
- @@dl ||=SiSU_Env::Info_env.new.digest.length
+ @db=SiSU_Env::InfoDb.new
+ @pdf_fn=SiSU_Env::FileOp.new(@md).base_filename
+ @@dl ||=SiSU_Env::InfoEnv.new.digest.length
end
def marshal_load
require_relative 'dal' # dal.rb
@@ -167,7 +168,7 @@ module SiSU_DB_import
puts "Error code: #{e.err}"
puts "Error message: #{e.errstr}"
puts "Error SQLSTATE: #{e.state}"
- SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
sqlfn="#{@env.processing_path.sql}/#{@md.fnb}.sql"
sql=File.new(sqlfn,'w')
t_d.each {|i| sql.puts i}
@@ -178,7 +179,7 @@ module SiSU_DB_import
puts "#{__FILE__}:#{__LINE__}"
end
rescue
- SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
sqlfn="#{@env.processing_path.sql}/#{@md.fnb}.sql"
sql=File.new(sqlfn,'w')
t_d.each {|i| sql.puts i}
@@ -192,7 +193,7 @@ module SiSU_DB_import
end
else
if file_exist
- @db=SiSU_Env::Info_db.new
+ @db=SiSU_Env::InfoDb.new
puts "\n#{@cX.grey}file #{@cX.off} #{@cX.blue}#{@opt.fns}#{@cX.off} in language code #{cX.blue}#{@opt.lng}#{cX.off} #{@cX.grey}already exists in database#{@cX.off} #{@cX.blue}#{@db.psql.db}#{@cX.off} #{@cX.brown}update instead?#{@cX.off}"
end
end
@@ -212,7 +213,7 @@ module SiSU_DB_import
src=special_character_escape(src)
@tp[:sisutxt_f],@tp[:sisutxt_i]='sisutxt, ',"'#{src}', "
txt=clean_searchable_text(txt_arr)
- #special_character_escape(txt)
+ #txt=special_character_escape(txt)
@tp[:fulltxt_f],@tp[:fulltxt_i]='fulltxt, ',"'#{txt}', "
end
#% title
@@ -237,8 +238,8 @@ module SiSU_DB_import
puts %{\n#{@cX.grey}Processing file number#{@cX.off}: #{@cX.green}#{@@id_t}#{@@cX.off}} if @opt.cmd =~/vVM/
end
################ CLEAR ##############
- SiSU_DB_DBI::Test.new(self,@opt).verify #% import title names, filenames (tuple)
- t=SiSU_DB_tuple::Load_metadata.new(@conn,@@id_t,@md,@file)
+ SiSU_DbDBI::Test.new(self,@opt).verify #% import title names, filenames (tuple)
+ t=SiSU_DbTuple::LoadMetadata.new(@conn,@@id_t,@md,@file)
tuple=t.tuple
tuple
end
@@ -260,15 +261,19 @@ module SiSU_DB_import
data.obj.gsub!(/#{Mx[:gl_o]}(●)#{Mx[:gl_c]}\s*/,'\1 ')
data.obj.gsub!(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
@col[:seg]=@@seg
- if data.of =~/para|heading|block|group/ # regular text what of code-blocks grouped text etc.
+ if data.of ==:para \
+ || :heading \
+ || :heading_insert \
+ || :block \
+ || :group # regular text what of code-blocks grouped text etc.
notedata=data.obj.dup
- if data.is=='heading' \
- and data.ln.inspect=~/[123]/
+ if data.is==:heading \
+ && (data.ln.inspect=~/[123]/)
@col[:lev],txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.ln,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
@col[:lid]+=1
txt=endnotes(txt).extract_any
- @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,data).lev4_minus
- special_character_escape(@col[:body])
+ @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_minus
+ @col[:body]=special_character_escape(@col[:body])
@col[:plaintext]=@col[:body].dup
@col[:plaintext]=strip_markup(@col[:plaintext])
@col[:plaintext]=clean_searchable_text(@col[:plaintext])
@@ -278,7 +283,7 @@ module SiSU_DB_import
end
if @en_pls[0]; @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last
end
- t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file)
+ t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
@tuple_array << t.tuple
case @col[:lev]
when /1/; @col[:lv1]+=1
@@ -286,8 +291,8 @@ module SiSU_DB_import
when /3/; @col[:lv3]+=1
end
@col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is=='heading' \
- and data.ln==4
+ elsif data.is==:heading \
+ && data.ln==4
@@seg,txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.name,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
@col[:seg]=@@seg
@col[:lv4]+=1
@@ -298,23 +303,26 @@ module SiSU_DB_import
@@hname=@col[:seg].to_s
else @@hname
end
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
txt=endnotes(txt).extract_any
- @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,data).lev4_plus
- special_character_escape(@col[:body])
+ @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
+ @col[:body]=special_character_escape(@col[:body])
@col[:plaintext]=@col[:body].dup
@col[:plaintext]=strip_markup(@col[:plaintext])
@col[:plaintext]=clean_searchable_text(@col[:plaintext])
@en_a,@en_z=@en[0].first,@en[0].last if @en[0]
@en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
@en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file)
+ t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
@tuple_array << t.tuple
@col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is=='heading' and data.ln==5
+ elsif data.is==:heading \
+ && data.ln==5
txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @@seg_full=data.name if data.is=='heading' and data.ln==5 and data.name #check data.name
+ @@seg_full=data.name if data.is==:heading \
+ && data.ln==5 \
+ && data.name #check data.name
@@seg ||='' #nil # watch
@col[:seg]=@@seg
@col[:lv5]+=1
@@ -325,23 +333,24 @@ module SiSU_DB_import
@@hname=@col[:seg].to_s
else @@hname
end
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
txt=endnotes(txt).extract_any
- @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,data).lev4_plus
- special_character_escape(@col[:body])
+ @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
+ @col[:body]=special_character_escape(@col[:body])
@col[:plaintext]=@col[:body].dup
@col[:plaintext]=strip_markup(@col[:plaintext])
@col[:plaintext]=clean_searchable_text(@col[:plaintext])
@en_a,@en_z=@en[0].first,@en[0].last if @en[0]
@en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
@en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file)
+ t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
@tuple_array << t.tuple
@col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is=='heading' and data.ln==6
+ elsif data.is==:heading \
+ && data.ln==6
txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @@seg_full=data.name if data.is=='heading' and data.ln==6 and data.name #check data.name
+ @@seg_full=data.name if data.is==:heading && data.ln==6 && data.name #check data.name
@@seg ||='' #nil # watch
@col[:seg]=@@seg
@col[:lv6]+=1
@@ -352,20 +361,24 @@ module SiSU_DB_import
@@hname=@col[:seg].to_s
else @@hname
end
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
txt=endnotes(txt).extract_any
- @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,data).lev4_plus
- special_character_escape(@col[:body])
+ @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
+ @col[:body]=special_character_escape(@col[:body])
@col[:plaintext]=@col[:body].dup
@col[:plaintext]=strip_markup(@col[:plaintext])
@col[:plaintext]=clean_searchable_text(@col[:plaintext])
@en_a,@en_z=@en[0].first,@en[0].last if @en[0]
@en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
@en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file)
+ t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
@tuple_array << t.tuple
@col[:lev]=@col[:plaintext]=@col[:body]=''
+ elsif data.of==:structure \
+ || data.of==:layout \
+ || data.of==:comment
+ #added watch
else #% regular text
@col[:lid]+=1
txt=''
@@ -375,11 +388,11 @@ module SiSU_DB_import
@@hname=@col[:seg].to_s
else @@hname
end
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
txt=endnotes(txt).extract_any
if @sql_type=~/pg/ \
- and txt.size > (SiSU_DB_columns::Column_size.new.document_clean - 1) #% examine pg build & remove limitation
+ and txt.size > (SiSU_DbColumns::ColumnSize.new.document_clean - 1) #% examine pg build & remove limitation
puts "\n\nTOO LARGE (TXT - see error log)\n\n"
open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
error.puts("\n#{@opt.fns}\nTEXT BODY\n#{@col[:body].size} object #{@col[:ocn]} -> #{@col[:body].slice(0..500)}")
@@ -389,28 +402,28 @@ module SiSU_DB_import
@en_a,@en_z=@en[0].first,@en[0].last if @en[0]
@en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
@en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- @col[:body]=if data.is=='table'
- SiSU_Format_Shared::CSS_Format.new(@md,data).html_table
- elsif data.is=='code'
- SiSU_Format_Shared::CSS_Format.new(@md,data).code
+ @col[:body]=if data.is==:table
+ SiSU_FormatShared::CSS_Format.new(@md,data).html_table
+ elsif data.is==:code
+ SiSU_FormatShared::CSS_Format.new(@md,data).code
elsif defined? data.indent \
and defined? data.hang \
and data.indent =~/[1-9]/ \
and data.indent == data.hang
- SiSU_Format_Shared::CSS_Format.new(@md,data).indent(data.indent)
+ SiSU_FormatShared::CSS_Format.new(@md,data).indent(data.indent)
elsif defined? data.indent \
and defined? data.hang \
and data.hang =~/[0-9]/ \
and data.indent != data.hang
- SiSU_Format_Shared::CSS_Format.new(@md,data).hang_indent(data.hang,data.indent)
+ SiSU_FormatShared::CSS_Format.new(@md,data).hang_indent(data.hang,data.indent)
else
- SiSU_Format_Shared::CSS_Format.new(@md,data).norm
+ SiSU_FormatShared::CSS_Format.new(@md,data).norm
end
- special_character_escape(@col[:body])
+ @col[:body]=special_character_escape(@col[:body])
@col[:plaintext]=@col[:body].dup
@col[:plaintext]=strip_markup(@col[:plaintext])
@col[:plaintext]=clean_searchable_text(@col[:plaintext])
- t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file)
+ t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
@tuple_array << t.tuple
@en,@en_ast,@en_pls=[],[],[]
@col[:en_a]=@col[:en_z]=nil
@@ -424,10 +437,10 @@ module SiSU_DB_import
nr,txt,digest_clean=$1,$2.strip,0
end
@id_n+=1
- special_character_escape(txt)
- body=SiSU_Format_Shared::CSS_Format.new(@md,data).endnote(nr,txt)
- strip_markup(txt)
- if txt.size > (SiSU_DB_columns::Column_size.new.endnote_clean - 1)
+ txt=special_character_escape(txt)
+ body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
+ txt=strip_markup(txt)
+ if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
@@ -448,7 +461,7 @@ module SiSU_DB_import
id_t: @@id_t,
hash: digest_clean
}
- t=SiSU_DB_tuple::Load_endnotes.new(@conn,en,@opt,@file)
+ t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file)
@tuple_array << t.tuple
end
end
@@ -463,10 +476,10 @@ module SiSU_DB_import
nr,txt,digest_clean=$1,$2.strip,0
end
@id_n+=1
- special_character_escape(txt)
- body=SiSU_Format_Shared::CSS_Format.new(@md,data).endnote(nr,txt)
- strip_markup(txt)
- if txt.size > (SiSU_DB_columns::Column_size.new.endnote_clean - 1)
+ txt=special_character_escape(txt)
+ body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
+ txt=strip_markup(txt)
+ if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
@@ -487,7 +500,7 @@ module SiSU_DB_import
id_t: @@id_t,
hash: digest_clean
}
- t=SiSU_DB_tuple::Load_endnotes.new(@conn,en,@opt,@file)
+ t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file)
@tuple_array << t.tuple
end
end
@@ -502,10 +515,10 @@ module SiSU_DB_import
nr,txt,digest_clean=$1,$2.strip,0
end
@id_n+=1
- special_character_escape(txt)
- body=SiSU_Format_Shared::CSS_Format.new(@md,data).endnote(nr,txt)
- strip_markup(txt)
- if txt.size > (SiSU_DB_columns::Column_size.new.endnote_clean - 1)
+ txt=special_character_escape(txt)
+ body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
+ txt=strip_markup(txt)
+ if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
@@ -526,7 +539,7 @@ module SiSU_DB_import
id_t: @@id_t,
hash: digest_clean
}
- t=SiSU_DB_tuple::Load_endnotes.new(@conn,en,@opt,@file)
+ t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file)
@tuple_array << t.tuple
end
end
@@ -535,7 +548,7 @@ module SiSU_DB_import
end
end
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
@tuple_array
@@ -568,14 +581,14 @@ module SiSU_DB_import
: nil
end
def clean_text(base_url=nil)
- if base_url
- @txt.gsub!(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>})
- @txt.gsub!(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>})
- @txt.gsub!(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>})
+ @txt=if base_url
+ @txt.gsub(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>}).
+ gsub(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>}).
+ gsub(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>})
else
- @txt.gsub!(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,'<sup>\1</sup>')
- @txt.gsub!(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,'<sup>\1</sup>')
- @txt.gsub!(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,'<sup>\1</sup>')
+ @txt.gsub(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,'<sup>\1</sup>').
+ gsub(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,'<sup>\1</sup>').
+ gsub(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,'<sup>\1</sup>')
end
@txt
end
@@ -598,7 +611,7 @@ module SiSU_DB_import
def db_import_urls(dbi_unit,content) #% import documents OID - populate database
begin
@fnc=content
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
base=@env.url.root
out=@env.path.output
f,u={},{}
@@ -606,57 +619,68 @@ module SiSU_DB_import
or @fnb.nil?
p 'file output path error' #remove
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:plain]}")==true
- f[:txt],u[:txt]='plaintext,', "'#{base}/#{@fnb}/#{@md.fn[:plain]}',"
+ if FileTest.file?("#{@md.file.output_path.txt.dir}/#{@md.file.base_filename.txt}")==true
+ f[:txt],u[:txt]='plaintext,', "'#{@md.file.output_path.txt.url}/#{@md.file.base_filename.txt}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:toc]}")==true
- f[:html_toc],u[:html_toc]='html_toc,', "'#{base}/#{@fnb}/#{@md.fn[:toc]}',"
+ if FileTest.file?("#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_seg}")==true
+ f[:html_toc],u[:html_toc]='html_toc,', "'#{@md.file.output_path.html_seg.url}/#{@md.file.base_filename.html_seg}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:doc]}")==true
- f[:html_doc],u[:html_doc]='html_doc,', "'#{base}/#{@fnb}/#{@md.fn[:doc]}',"
+ if FileTest.file?("#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_scroll}")==true
+ f[:html_doc],u[:html_doc]='html_doc,', "'#{@md.file.output_path.html_scroll.url}/#{@md.file.base_filename.html_scroll}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:xhtml]}")==true
- f[:xhtml],u[:xhtml]='xhtml,', "'#{base}/#{@fnb}/#{@md.fn[:xhtml]}',"
+ if FileTest.file?("#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}")==true
+ f[:xhtml],u[:xhtml]='xhtml,', "'#{@md.file.output_path.xhtml.url}/#{@md.file.base_filename.xhtml}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:sax]}")==true
- f[:xml_sax],u[:xml_sax]='xml_sax,', "'#{base}/#{@fnb}/#{@md.fn[:sax]}',"
+ if FileTest.file?("#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}")==true
+ f[:xml_sax],u[:xml_sax]='xml_sax,', "'#{@md.file.output_path.xml_sax.url}/#{@md.file.base_filename.xml_sax}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:dom]}")==true
- f[:xml_dom],u[:xml_dom]='xml_dom,', "'#{base}/#{@fnb}/#{@md.fn[:dom]}',"
+ if FileTest.file?("#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}")==true
+ f[:xml_dom],u[:xml_dom]='xml_dom,', "'#{@md.file.output_path.xml_dom.url}/#{@md.file.base_filename.xml_dom}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:odf]}")==true
- f[:odf],u[:odf]='odf,', "'#{base}/#{@fnb}/#{@md.fn[:odf]}',"
+ if FileTest.file?("#{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}")==true
+ f[:epub],u[:epub]='epub,', "'#{@md.file.output_path.epub.url}/#{@md.file.base_filename.epub}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:pdf_p]}")==true
- f[:pdf_p],u[:pdf_p]='pdf_p,', "'#{base}/#{@fnb}/#{@md.fn[:pdf_p]}',"
+ if FileTest.file?("#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}")==true
+ f[:odf],u[:odf]='odf,', "'#{@md.file.output_path.odt.url}/#{@md.file.base_filename.odt}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:pdf_l]}")==true
- f[:pdf_l],u[:pdf_l]='pdf_l,', "'#{base}/#{@fnb}/#{@md.fn[:pdf_l]}',"
+ if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_a4}")==true #\
+ #or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_letter}")==true
+ f[:pdf_p],u[:pdf_p]='pdf_p,', "'#{@md.file.output_path.pdf.url}/#{@pdf_fn.pdf_p_a4}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:concordance]}")==true
- f[:concordance],u[:concordance]='concordance,', "'#{base}/#{@fnb}/#{@md.fn[:concordance]}',"
+ if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_a4}")==true #\
+ #or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_letter}")==true
+ f[:pdf_l],u[:pdf_l]='pdf_l,', "'#{@md.file.output_path.pdf.url}/#{@pdf_fn.pdf_l_a4}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.tex")==true
- f[:latex_p],u[:latex_p]='latex_p,', "'#{base}/#{@fnb}/#{@opt.fns}.tex',"
+ if FileTest.file?("#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}")==true
+ f[:concordance],u[:concordance]='concordance,', "'#{@md.file.output_path.html_concordance.url}/#{@md.file.base_filename.html_concordance}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.landscape.tex")==true
- f[:latex_l],u[:latex_l]='latex_l,', "'#{base}/#{@fnb}/#{@opt}.fns}.landscape.tex',"
+ #if FileTest.file?("#{@md.file.output_path.x.dir}/#{@md.file.base_filename.x}")==true
+ # f[:latex_p],u[:latex_p]='latex_p,', "'#{@md.file.output_path.x.url}/#{@md.file.base_filename.x}',"
+ #end
+ ##if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.tex")==true
+ ## f[:latex_p],u[:latex_p]='latex_p,', "'#{base}/#{@fnb}/#{@opt.fns}.tex',"
+ ##end
+ #if FileTest.file?("#{@md.file.output_path.x.dir}/#{@md.file.base_filename.x}")==true
+ # f[:latex_l],u[:latex_l]='latex_l,', "'#{@md.file.output_path.x.url}/#{@md.file.base_filename.x}',"
+ #end
+ ##if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.landscape.tex")==true
+ ## f[:latex_l],u[:latex_l]='latex_l,', "'#{base}/#{@fnb}/#{@opt}.fns}.landscape.tex',"
+ ##end
+ if FileTest.file?("#{@md.file.output_path.digest.dir}/#{@md.file.base_filename.digest}")==true
+ f[:digest],u[:digest]='digest,', "'#{@md.file.output_path.digest.url}/#{@md.file.base_filename.digest}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:digest]}")==true
- f[:digest],u[:digest]='digest,', "'#{base}/#{@fnb}/#{@md.fn[:digest]}',"
+ if FileTest.file?("#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}")==true #revisit, was to be text, this is html
+ f[:manifest],u[:manifest]='manifest,', "'#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@md.fn[:manifest]}")==true #revisit, was to be text, this is html
- f[:manifest],u[:manifest]='manifest,', "'#{base}/#{@fnb}/#{@md.fn[:manifest]}',"
+ if FileTest.file?("#{@md.file.output_path.src.dir}/#{@md.file.base_filename.src}")==true
+ f[:markup],u[:markup]='markup,', "'#{@md.file.output_path.src.url}/#{@md.file.base_filename.src}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.meta")==true
- f[:markup],u[:markup]='markup,', "'#{base}/#{@fnb}/#{@opt.fns}.meta',"
+ if FileTest.file?("#{@md.file.output_path.sisupod.dir}/#{@md.file.base_filename.sisupod}")==true
+ f[:sisupod],u[:sisupod]='sisupod,', "'#{@md.file.output_path.sisupod.url}/#{@md.file.base_filename.sisupod}',"
end
- if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.tgz")==true
- f[:sisupod],u[:sisupod]='sisupod,', "'#{base}/#{@fnb}/#{@opt.fns}.tgz',"
- end
- t=SiSU_DB_tuple::Load_urls.new(@conn,f,u,@@id_t,@opt,@file)
+ t=SiSU_DbTuple::LoadUrls.new(@conn,f,u,@@id_t,@opt,@file)
tuple=t.tuple
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
tuple
diff --git a/lib/sisu/v3/db_indexes.rb b/lib/sisu/v3/db_indexes.rb
index 5e387e27..f61c584f 100644
--- a/lib/sisu/v3/db_indexes.rb
+++ b/lib/sisu/v3/db_indexes.rb
@@ -57,7 +57,7 @@
sqlite
=end
-module SiSU_DB_index
+module SiSU_DbIndex
class Index # create documents Indexes def initialize(opt,conn='',sql_type='')
def initialize(opt,conn,file,sql_type='')
@opt,@conn,@file,@sql_type=opt,conn,file,sql_type
diff --git a/lib/sisu/v3/db_load_tuple.rb b/lib/sisu/v3/db_load_tuple.rb
index 812e8e5a..c3273ace 100644
--- a/lib/sisu/v3/db_load_tuple.rb
+++ b/lib/sisu/v3/db_load_tuple.rb
@@ -57,9 +57,9 @@
sqlite
=end
-module SiSU_DB_tuple
+module SiSU_DbTuple
require_relative 'db_columns' # db_columns.rb
- class Load_documents
+ class LoadDocuments
require_relative 'param' # param.rb
include SiSU_Param
def initialize(conn,col,opt,file)
@@ -114,10 +114,10 @@ module SiSU_DB_tuple
sql_entry
end
end
- class Load_metadata #< SiSU_DB_columns::Columns
+ class LoadMetadata #< SiSU_DbColumns::Columns
def initialize(conn,id,md,file)
@conn,@id,@md,@file=conn,id,md,file
- @tp=SiSU_DB_columns::Columns.new(md)
+ @tp=SiSU_DbColumns::Columns.new(md)
end
def tuple
sql_entry="INSERT INTO metadata_and_text (
@@ -299,7 +299,7 @@ tid)
sql_entry
end
end
- class Load_urls
+ class LoadUrls
def initialize(conn,f,u,id,opt,file)
@conn,@f,@u,@id,@opt,@file=conn,f,u,id,opt,file
end
@@ -314,7 +314,7 @@ tid)
sql_entry
end
end
- class Load_endnotes
+ class LoadEndnotes
def initialize(conn,en,opt,file)
@conn,@en,@opt,@file=conn,en,opt,file
end
diff --git a/lib/sisu/v3/db_remove.rb b/lib/sisu/v3/db_remove.rb
index 8147cda1..e34a0a93 100644
--- a/lib/sisu/v3/db_remove.rb
+++ b/lib/sisu/v3/db_remove.rb
@@ -57,13 +57,13 @@
sqlite
=end
-module SiSU_DB_remove
+module SiSU_DbRemove
class Remove
def initialize(opt,conn,file,sql_type)
@opt,@conn,@file,@sql_type=opt,conn,file,sql_type
@md=SiSU_Param::Parameters.new(@opt).get
@fnb=@md.fnb
- @db=SiSU_Env::Info_db.new
+ @db=SiSU_Env::InfoDb.new
end
def remove
driver_sqlite3=if @sql_type=='sqlite'
diff --git a/lib/sisu/v3/db_select.rb b/lib/sisu/v3/db_select.rb
index bce2b21c..52fbe8ba 100644
--- a/lib/sisu/v3/db_select.rb
+++ b/lib/sisu/v3/db_select.rb
@@ -57,20 +57,20 @@
sqlite
=end
-module SiSU_DB_select
+module SiSU_DbSelect
class Case
def initialize(opt,conn='',sql_type='pg')
@opt,@conn,@sql_type=opt,conn,sql_type
- @db=SiSU_Env::Info_db.new
+ @db=SiSU_Env::InfoDb.new
@file=sql_maintenance_file
- @sdb=SiSU_DB_DBI::Create.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
- @sdb_index=SiSU_DB_DBI::Index.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
- @sdb_no=SiSU_DB_DBI::Drop.new(@opt,@conn,@db,@sql_type) # db_dbi.rb
+ @sdb=SiSU_DbDBI::Create.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
+ @sdb_index=SiSU_DbDBI::Index.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
+ @sdb_no=SiSU_DbDBI::Drop.new(@opt,@conn,@db,@sql_type) # db_dbi.rb
if @opt.mod.inspect =~/update|import/
- @sdb_import=SiSU_DB_DBI::Import.new(@opt,@conn,@file,@sql_type)
- @sdb_remove_doc=SiSU_DB_DBI::Remove.new(@opt,@conn,@file,@sql_type)
+ @sdb_import=SiSU_DbDBI::Import.new(@opt,@conn,@file,@sql_type)
+ @sdb_remove_doc=SiSU_DbDBI::Remove.new(@opt,@conn,@file,@sql_type)
elsif @opt.mod.inspect =~/remove/
- @sdb_remove_doc=SiSU_DB_DBI::Remove.new(@opt,@conn,@file,@sql_type)
+ @sdb_remove_doc=SiSU_DbDBI::Remove.new(@opt,@conn,@file,@sql_type)
end
end
def db_exist?
@@ -90,9 +90,9 @@ module SiSU_DB_select
def sql_maintenance_file
file=if @opt.inspect =~/M/
x=if @opt.fns and not @opt.fns.empty?
- @env=SiSU_Env::Info_env.new(@opt.fns) if @opt.fns
+ @env=SiSU_Env::InfoEnv.new(@opt.fns) if @opt.fns
puts "\n#{@env.processing_path.sqlite}/#{@opt.fns}.sql" if @sql_type =~/sqlite/ and @opt.cmd =~/M/
- @db=SiSU_Env::Info_db.new
+ @db=SiSU_Env::InfoDb.new
@job="sqlite3 #{@db.sqlite.db} < #{@env.processing_path.sqlite}/#{@opt.fns}.sql"
File.new("#{@env.processing_path.sqlite}/#{@opt.fns}.sql",'w+')
elsif @opt.fns and @opt.fns.inspect =~/create/; nil #sort variations later
@@ -108,56 +108,56 @@ module SiSU_DB_select
when /^--createdb$/
@sdb.output_dir?
begin
- @sdb.create_db
+ @sdb.create_db
rescue; @sdb.output_dir?
end
when /^--(?:init(?:ialize)?|create(?:all)?)$/
@sdb.output_dir?
begin
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
- rescue; SiSU_Errors::Info_error.new($!,$@,'-D').error; @sdb.output_dir?
+ @sdb.create_table.metadata_and_text
+ @sdb.create_table.doc_objects
+ @sdb.create_table.endnotes
+ @sdb.create_table.endnotes_asterisk
+ @sdb.create_table.endnotes_plus
+ @sdb.create_table.urls
+ @sdb_index.create_indexes
+ rescue; SiSU_Errors::InfoError.new($!,$@,'-D').error; @sdb.output_dir?
end
when /^--createtables?$/
@sdb.output_dir?
begin
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
+ @sdb.create_table.metadata_and_text
+ @sdb.create_table.doc_objects
+ @sdb.create_table.endnotes
+ @sdb.create_table.endnotes_asterisk
+ @sdb.create_table.endnotes_plus
+ @sdb.create_table.urls
+ @sdb_index.create_indexes
rescue; @sdb.output_dir?
end
when /^--recreate$/
@sdb.output_dir?
begin
- @sdb_no.drop.tables
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
+ @sdb_no.drop.tables
+ @sdb.create_table.metadata_and_text
+ @sdb.create_table.doc_objects
+ @sdb.create_table.endnotes
+ @sdb.create_table.endnotes_asterisk
+ @sdb.create_table.endnotes_plus
+ @sdb.create_table.urls
+ @sdb_index.create_indexes
rescue; @sdb.output_dir?
end
when /^--cr(eate)?lex$/
@sdb.output_dir?
begin
- @sdb.create_table.doc_objects
+ @sdb.create_table.doc_objects
rescue; @sdb.output_dir?
end
when /^--cr(eate)?metadata$/
@sdb.output_dir?
begin
- @sdb.create_table.metadata_and_text
+ @sdb.create_table.metadata_and_text
rescue; @sdb.output_dir?
end
when /^--import$/
@@ -196,6 +196,7 @@ module SiSU_DB_select
db_exist?
@sdb_no.drop.tables
when /^--(?:db=)?(?:(?:sq)?lite|pg(?:sql)?|my(?:sql)?)$/
+ when /^--(?:v\d+|dev)$/
else
help=SiSU_Help::Help.new
help.summary
diff --git a/lib/sisu/v3/db_sqltxt.rb b/lib/sisu/v3/db_sqltxt.rb
index d1705c2b..e65a8521 100644
--- a/lib/sisu/v3/db_sqltxt.rb
+++ b/lib/sisu/v3/db_sqltxt.rb
@@ -56,49 +56,48 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_DB_text
+module SiSU_DbText
class Prepare
def special_character_escape(str)
- str.gsub!(/'/,"''") #string.gsub!(/'/,"\047") #string.gsub!(/'/,"\\'")
- str.gsub!(/(\\)/m,'\1\1') #ok but with warnings, double backslash on sqlite #str.gsub!(/[\\]/m,'\\x5C') #ok but with warnings, but not for sqlite #str.gsub!(/(\\)/m,'\1') #ok for sqlite not for pgsql
- str.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"<br />\n")
- str.gsub!(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
- str.gsub!(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg))(?:\s+\d+x\d+)?(.+?)#{Mx[:lnk_c]}\S+/,'[image: \1] \2')
- str.gsub!(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}(?:file|ftp):\/\/\S+?([.,!?]?(?:\s|$))/,'\1\2')
- str.gsub!(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'\1')
- str
+ str=str.gsub(/'/,"''"). #string.gsub!(/'/,"\047") #string.gsub!(/'/,"\\'")
+ gsub(/(\\)/m,'\1\1'). #ok but with warnings, double backslash on sqlite #str.gsub!(/[\\]/m,'\\x5C') #ok but with warnings, but not for sqlite #str.gsub!(/(\\)/m,'\1') #ok for sqlite not for pgsql
+ gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"<br />\n").
+ gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,''). #check
+ gsub(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg))(?:\s+\d+x\d+)?(.+?)#{Mx[:lnk_c]}\S+/,'[image: \1] \2').
+ gsub(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}(?:file|ftp):\/\/\S+?([.,!?]?(?:\s|$))/,'\1\2').
+ gsub(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'\1')
end
def clean_searchable_text(arr) #produce clean, searchable, plaintext from document source
txt_arr,en=[],[]
arr=arr.class==String ? arr.split(/\n+/m) : arr
arr.each do |s|
- s.gsub!(/([*\/_-])\{(.+?)\}\1/m,'\2')
- s.gsub!(/^(?:block|group|poem|code)\{/m,''); s.gsub!(/^\}(?:block|group|poem|code)/m,'')
- s.gsub!(/\A(?:@\S+:\s+.+)\Z/m,'')
+ s=s.gsub(/([*\/_-])\{(.+?)\}\1/m,'\2').
+ gsub(/^(?:block|group|poem|code)\{/m,'').gsub(/^\}(?:block|group|poem|code)/m,'').
+ gsub(/\A(?:@\S+:\s+.+)\Z/m,'')
if s =~/^:A~/
if defined? @md.creator \
and defined? @md.creator.author \
and not @md.creator.author.empty?
- s.gsub!(/@author/,@md.creator.author)
+ s=s.gsub(/@author/,@md.creator.author)
else
SiSU_Screen::Ansi.new('v','WARNING Document Author information missing; provide @creator: :author:',@md.fnb).warn unless @md.opt.cmd.inspect =~/q/
end
if defined? @md.title \
and defined? @md.title.full \
and not @md.title.full.empty?
- s.gsub!(/@title/,@md.title.full)
+ s=s.gsub(/@title/,@md.title.full)
else
SiSU_Screen::Ansi.new('v','WARNING Document Title missing; provide @title:',@md.fnb).warn unless @md.opt.cmd.inspect =~/q/
end
end
- s.gsub!(/^(?:_[1-9]\*?|_\*)\s+/m,'')
- s.gsub!(/^(?:[1-9]\~(\S+)?)\s+/m,'')
- s.gsub!(/^(?::?[A-C]\~(\S+)?)\s+/m,'')
- s.gsub!(/^%{1,3} .+/m,'') #removed even if contained in code block
- s.gsub!(/<br>/m,' ')
+ s=s.gsub(/^(?:_[1-9]\*?|_\*)\s+/m,'').
+ gsub(/^(?:[1-9]\~(\S+)?)\s+/m,'').
+ gsub(/^(?::?[A-C]\~(\S+)?)\s+/m,'').
+ gsub(/^%{1,3} .+/m,''). #removed even if contained in code block
+ gsub(/<br>/m,' ')
en << s.scan(/~\{\s*(.+?)\s*\}~/m)
- s.gsub!(/~\{.+?\}~/m,'')
- s.gsub!(/ \s+/m,' ')
+ s=s.gsub(/~\{.+?\}~/m,'').
+ gsub(/ \s+/m,' ')
#special_character_escape(s)
s
end
@@ -109,17 +108,16 @@ module SiSU_DB_text
txt
end
def strip_markup(str) #define rules, make same as in dal clean
- str.gsub!(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]')
- str.gsub!(/(?:&nbsp\\;|#{Mx[:nbsp]})+/,' ')
- str.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}\d+(.+)#{Mx[:tc_c]}/u,'\1') #tables
- str.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}\d+#{Mx[:tc_p]}/u,' ') #tables
- str.gsub!(/#{Mx[:tc_p]}/u,' ') #tables tidy later
- str.gsub!(/<.+?>/,'')
- str.gsub!(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:file|ftp)\/\/:\S+ /,' [image] ') # else image names found in search
- str.gsub!(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [image]') # else image names found in search
- str.gsub!(/\s\s+/,' ')
- str.strip!
- str
+ str=str.gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]').
+ gsub(/(?:&nbsp\\;|#{Mx[:nbsp]})+/,' ').
+ gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}\d+(.+)#{Mx[:tc_c]}/u,'\1'). #tables
+ gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}\d+#{Mx[:tc_p]}/u,' '). #tables
+ gsub(/#{Mx[:tc_p]}/u,' '). #tables tidy later
+ gsub(/<.+?>/,'').
+ gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:file|ftp)\/\/:\S+ /,' [image] '). # else image names found in search
+ gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [image]'). # else image names found in search
+ gsub(/\s\s+/,' ').
+ strip
end
def unique_words(str)
a=str.scan(/[a-zA-Z0-9\\\/_-]{2,}/) #a=str.scan(/\S+{2,}/)
diff --git a/lib/sisu/v3/db_tests.rb b/lib/sisu/v3/db_tests.rb
index 0fe1370b..3bef2f5f 100644
--- a/lib/sisu/v3/db_tests.rb
+++ b/lib/sisu/v3/db_tests.rb
@@ -57,7 +57,7 @@
sqlite
=end
-module SiSU_DB_tests
+module SiSU_DbTests
class Test
def initialize(info,opt)
@ck,@opt=info,opt
diff --git a/lib/sisu/v3/dbi.rb b/lib/sisu/v3/dbi.rb
index 008ac5d4..f11d9e81 100644
--- a/lib/sisu/v3/dbi.rb
+++ b/lib/sisu/v3/dbi.rb
@@ -63,15 +63,15 @@ module SiSU_DBI
require_relative 'param' # param.rb
include SiSU_Param
require_relative 'db_dbi' # db_dbi.rb
- include SiSU_DB_DBI
+ include SiSU_DbDBI
require_relative 'shared_html_lite' # shared_html_lite.rb
- include SiSU_Format_Shared
- class SiSU_SQL
+ include SiSU_FormatShared
+ class SQL
def initialize(opt)
SiSU_Env::Load.new('dbi',true).prog
@opt=opt
- @db=SiSU_Env::Info_db.new
- if @opt.cmd =~/d/i \
+ @db=SiSU_Env::InfoDb.new
+ if @opt.cmd =~/[Dd]/ \
or @opt.mod.inspect =~/--(pg(?:sql)?|(?:sq)?lite)/
@sql_type=if @opt.cmd=~/D/ \
or @opt.mod.inspect =~/--pg(?:sql)?/
@@ -108,7 +108,7 @@ module SiSU_DBI
puts %{manually create the database: "#{@db.db}" if it does not yet exist}
#sudo su -p postgres; createdb #{@db.db}; #[createuser?]
end
- SiSU_DB_DBI::Case.new(@opt,@conn,@sql_type).cases
+ SiSU_DbDBI::Case.new(@opt,@conn,@sql_type).cases
@conn=DBI.connect(@db.dbi,@db.user,@db.db)
ensure
end
@@ -128,9 +128,9 @@ module SiSU_DBI
end
SiSU_Screen::Ansi.new(@opt.cmd,"DBI (#{@sql_type}) #{@opt.mod}",@opt.fns).dbi_title unless @opt.cmd =~/q/
begin
- SiSU_DB_DBI::Case.new(@opt,@conn,@sql_type).cases
+ SiSU_DbDBI::Case.new(@opt,@conn,@sql_type).cases
rescue
- SiSU_Errors::Info_error.new($!,$@,@cf,@opt.fns).error
+ SiSU_Errors::InfoError.new($!,$@,@cf,@opt.fns).error
ensure
end
begin
diff --git a/lib/sisu/v3dv/dbi_discreet.rb b/lib/sisu/v3/dbi_discreet.rb
index d9ecd8e7..d9ecd8e7 100644
--- a/lib/sisu/v3dv/dbi_discreet.rb
+++ b/lib/sisu/v3/dbi_discreet.rb
diff --git a/lib/sisu/v3/defaults.rb b/lib/sisu/v3/defaults.rb
index 7278c5f9..e74ff83c 100644
--- a/lib/sisu/v3/defaults.rb
+++ b/lib/sisu/v3/defaults.rb
@@ -66,9 +66,9 @@ module SiSU_Viz
class Skin
def initialize
@fonts='verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman' # 'verdana, arial, georgia, tahoma, sans-serif, helvetica, "times new roman", times, roman'
- @dir=SiSU_Env::Info_env.new
- @date=SiSU_Env::Info_date.new #{@date.year}
- @v=SiSU_Env::Info_version.instance.get_version
+ @dir=SiSU_Env::InfoEnv.new
+ @date=SiSU_Env::InfoDate.new #{@date.year}
+ @v=SiSU_Env::InfoVersion.instance.get_version
end
#% glyph
def glyph_bullet # &bullet;
@@ -735,8 +735,8 @@ module SiSU_Viz
when /\/i$/; 'i'
else ''
end
- r.gsub!(/^\/(.+?)\/i?/,'\1')
- r.gsub!(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
+ r=r.gsub(/^\/(.+?)\/i?/,'\1').
+ gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
m='\b(' + r + ')\b'
make[:str]
make[:regx]=if x =~/i/; /#{m}/i
@@ -756,8 +756,8 @@ module SiSU_Viz
when /\/i$/; 'i'
else ''
end
- r.gsub!(/^\/(.+?)\/i?/,'\1')
- r.gsub!(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
+ r.gsub(/^\/(.+?)\/i?/,'\1').
+ gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
m='\b(' + r + ')\b'
make[:str]
make[:regx]=if x =~/i/; /#{m}/i
@@ -957,7 +957,7 @@ module SiSU_Viz
</a>}
end
def png_hp
- dir=SiSU_Env::Info_env.new #(@fns)
+ dir=SiSU_Env::InfoEnv.new #(@fns)
%{ <a href="#{url.site}">
<img border="0" width="160" height="60" src="#{@dir.url.images_local}/#{icon_home_banner}" alt="#{txt_home}" />
</a>}
@@ -1029,7 +1029,7 @@ module SiSU_Viz
%{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_external_toc}" alt="lateral hop" />}
end
def png_home
- #dir=SiSU_Env::Info_env.new #(@fns)
+ #dir=SiSU_Env::InfoEnv.new #(@fns)
%{<img border="0" src="#{url_path_image_base}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
#%{<img border="0" src="#{dir.url.images_local}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
end
@@ -1040,7 +1040,7 @@ module SiSU_Viz
def png_book
%{<img border="2" height="15" width="15" src="#{url_path_image_sys}/#{icon_book}" alt="Cameron May Books" />}
end
- #% png_nav
+ #% png_nav #not currently used
def png_nav_home
end
def png_nav_toc
@@ -1724,9 +1724,9 @@ WOK
end
class Home < Skin
def initialize
- @v=SiSU_Env::Info_version.instance.get_version
- @dir=SiSU_Env::Info_env.new
- @date=SiSU_Env::Info_date.new #{@date.year}
+ @v=SiSU_Env::InfoVersion.instance.get_version
+ @dir=SiSU_Env::InfoEnv.new
+ @date=SiSU_Env::InfoDate.new #{@date.year}
end
def redirect
<<WOK
@@ -1890,7 +1890,7 @@ outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), EPUB, LaTeX, P
---
</p>
<p class="small">
- License, SiSU is licensed under
+ License, SiSU is licensed under
<a href="http://www.gnu.org/licenses/gpl.html" target="_top">
GPLv3 or later
</a>
@@ -2032,7 +2032,7 @@ as a developers tool it is flexible and extensible
</p>
<br />
<p class="small">
-<a href="http://www.sisudoc.org"><b>SiSU</b></a> at <a href="http://www.sisudoc.org">&lt;www.sisudoc.org&gt;</a> or <a href="http://www.jus.uio.no/sisu/">&lt;www.jus.uio.no/sisu/&gt;</a></p>
+<a href="http://www.sisudoc.org"><b>SiSU</b></a> at <a href="http://www.sisudoc.org">&lt;www.sisudoc.org&gt;</a> or <a href="http://www.jus.uio.no/sisu/">&lt;www.jus.uio.no/sisu/&gt;</a></p>
</div>
<div id="column_right">
<p class="tiny">
diff --git a/lib/sisu/v3/digests.rb b/lib/sisu/v3/digests.rb
index 4062b029..bc4a37e5 100644
--- a/lib/sisu/v3/digests.rb
+++ b/lib/sisu/v3/digests.rb
@@ -56,7 +56,7 @@
** Description: document digests (md5|sha256) and structure processing
=end
-module SiSU_Digest_view
+module SiSU_DigestView
require_relative 'particulars' # particulars.rb
require_relative 'prog_text_translation' # prog_text_translation.rb
require_relative 'shared_markup_alt.rb' # shared_markup_alt.rb
@@ -68,8 +68,8 @@ module SiSU_Digest_view
@fnb=@opt.fnb
@@endnotes_para=[]
@@dg=nil
- @dg=@@dg ||=SiSU_Env::Info_env.new.digest.type
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @dg=@@dg ||=SiSU_Env::InfoEnv.new.digest.type
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
begin
@@ -83,9 +83,9 @@ module SiSU_Digest_view
: SiSU_Screen::Ansi.new(@opt.cmd,"Document #{@dg} Digests",tool).green_title_hi
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.hash_digest.dir}/#{@md.file.base_filename.hash_digest}").flow if @opt.cmd =~/[MV]/
end
- SiSU_Digest_view::Source::Scroll.new(@particulars).songsheet
- SiSU_Env::Info_skin.new(@md).select
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_DigestView::Source::Scroll.new(@particulars).songsheet
+ SiSU_Env::InfoSkin.new(@md).select
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -97,11 +97,11 @@ module SiSU_Digest_view
def initialize(particulars) #data='',md='')
@particulars=particulars
@data,@env,@md=@particulars.dal_array,@particulars.env,@particulars.md
- SiSU_Env::SiSU_file.new(@md).mkdir
+ SiSU_Env::FileOp.new(@md).mkdir
@@dg ||=@env.digest.type
@@dl ||=@env.digest.length
@dg,@dl=@@dg,@@dl
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
@language=l[:n]
@tr=SiSU_Translate::Source.new(@md,@language)
@sp=' '
@@ -134,7 +134,7 @@ module SiSU_Digest_view
@@sc_info << f << e
end
def output
- file=SiSU_Env::SiSU_file.new(@md)
+ file=SiSU_Env::FileOp.new(@md)
filename_digest=file.write_file.hash_digest
filename_digest << @@description.join << @@ds[:digests].join << @@ds[:tree].join << @@ds[:summary].join << @@sc_info.join
end
@@ -143,7 +143,7 @@ module SiSU_Digest_view
end
def message_digest
data=@data
- sys=SiSU_Env::System_call.new
+ sys=SiSU_Env::SystemCall.new
l=Hash.new(0)
@p=[]
@g,@v,@r='','',''
@@ -153,9 +153,9 @@ module SiSU_Digest_view
if para =~/#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}#{Mx[:id_o]}([0-9a-f]{#{@dl}}):([0-9a-f]{#{@dl}})#{Mx[:id_c]}/
ocn,h1,h2,d_clean,d_all=$1,$2,$3,$4,$5
@ocn=ocn unless ocn.to_i==0
- para.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>')
- para.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>')
- para.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
+ para=para.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>')
if para=~/#{Mx[:en_a_o]}[\d*+]+.+?#{Mx[:id_o]}[0-9a-f]{#{@dl}}#{Mx[:id_c]}#{Mx[:en_a_c]}/
para_endnotes << para.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+).+?#{Mx[:id_o]}([0-9a-f]{#{@dl}})#{Mx[:id_c]}(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/)
end
@@ -298,11 +298,11 @@ module SiSU_Digest_view
data=@data
endnotes=nil
data.each do |t_o|
- dgst=SiSU_text_representation::Modified_text_plus_Hash_digest.new(@md,t_o).composite.dgst
+ dgst=SiSU_TextRepresentation::ModifiedTextPlusHashDigest.new(@md,t_o).composite.dgst
if dgst
- if t_o.is=='heading'
+ if t_o.is==:heading
digests("#{@sp*0}#{dgst[:ocn]}#{@sp*(8-dgst[:ocn].to_s.length)}#{dgst[:dgst_stripped_txt]} #{dgst[:dgst_markedup_txt]} #{dgst[:is]} #{t_o.lv}")
- elsif t_o.is=='heading_insert'
+ elsif t_o.is==:heading_insert
digests("#{@sp*0}[#{dgst[:ocn]}]#{@sp*(6-dgst[:ocn].to_s.length)}#{dgst[:dgst_stripped_txt]} #{dgst[:dgst_markedup_txt]} #{dgst[:is]} #{t_o.lv}")
else
digests("#{@sp*0}#{dgst[:ocn]}#{@sp*(8-dgst[:ocn].to_s.length)}#{dgst[:dgst_stripped_txt]} #{dgst[:dgst_markedup_txt]} #{dgst[:is]}")
@@ -325,7 +325,7 @@ module SiSU_Digest_view
dal_structure_tree("------------\n")
dal_structure_tree("document structure[*]\n")
data.each do |t_o|
- if t_o.is=='heading'
+ if t_o.is==:heading
x=case t_o.ln
when 1; l[1] +=1 #fix Mx[:lv_o]
' '*0 +':A'
@@ -342,7 +342,7 @@ module SiSU_Digest_view
else nil
end
end
- ocn=t_o.ocn if defined? t_o.ocn and t_o.is !='heading_insert'
+ 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?
end
dal_structure_tree(" [*] heading levels\n")
diff --git a/lib/sisu/v3/embedded.rb b/lib/sisu/v3/embedded.rb
index 1dcc4fac..0c73e9e3 100644
--- a/lib/sisu/v3/embedded.rb
+++ b/lib/sisu/v3/embedded.rb
@@ -65,10 +65,10 @@ module SiSU_Embedded
def initialize(opt)
@opt=opt
@md=SiSU_Param::Parameters.new(@opt).get
- @env=SiSU_Env::Info_env.new(@md.fns)
- @rhost=SiSU_Env::Info_remote.new(@opt).remote_host_base
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ @rhost=SiSU_Env::InfoRemote.new(@opt).remote_host_base
@base_src_dir=@opt.f_pth[:pth].sub(/\/#{@opt.f_pth[:lng]}$/,'')
- @f=SiSU_Env::SiSU_file.new(@md)
+ @f=SiSU_Env::FileOp.new(@md)
end
def read
songsheet
@@ -78,7 +78,7 @@ module SiSU_Embedded
audio
multimedia
begin
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -95,9 +95,9 @@ module SiSU_Embedded
FileUtils::mkdir_p(img_dir) unless FileTest.directory?(img_dir)
src_ec=@f.place_file.images.rel + '/' + @md.ec[:image].join(" #{@f.output_path.images.rel}/")
unless @opt.fns =~/\.-sst$/
- SiSU_Env::System_call.new(src_ec,ldest,'q').rsync('--relative',@opt.base_path)
+ SiSU_Env::SystemCall.new(src_ec,ldest,'q').rsync('--relative',@opt.base_path)
#if @md.opt.cmd.inspect =~/R/ #rsync to remote image directory
- # SiSU_Env::System_call.new(src_ec,remote_rel,'q').rsync('--relative')
+ # SiSU_Env::SystemCall.new(src_ec,remote_rel,'q').rsync('--relative')
#end
end
end
@@ -113,9 +113,9 @@ module SiSU_Embedded
and FileTest.directory?(src)
FileUtils::mkdir_p(ldest) unless FileTest.directory?(ldest)
src_ec="#{src}/" + @md.ec[:audio].join(" #{src}/")
- SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync
+ SiSU_Env::SystemCall.new(src_ec,"#{ldest}/.",'q').rsync
if @md.opt.cmd.inspect =~/R/ #rsync to remote audio directory
- SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync
+ SiSU_Env::SystemCall.new(src_ec,"#{rdest}/.",'q').rsync
end
end
end
@@ -130,9 +130,9 @@ module SiSU_Embedded
and FileTest.directory?(src)
FileUtils::mkdir_p(ldest) unless FileTest.directory?(ldest)
src_ec="#{src}/" + @md.ec[:multimedia].join(" #{src}/")
- SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync
+ SiSU_Env::SystemCall.new(src_ec,"#{ldest}/.",'q').rsync
if @md.opt.cmd.inspect =~/R/ #rsync to remote video directory
- SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync
+ SiSU_Env::SystemCall.new(src_ec,"#{rdest}/.",'q').rsync
end
end
end
diff --git a/lib/sisu/v3/epub.rb b/lib/sisu/v3/epub.rb
index e0a1d219..e9aeb4de 100644
--- a/lib/sisu/v3/epub.rb
+++ b/lib/sisu/v3/epub.rb
@@ -66,14 +66,14 @@ module SiSU_EPUB
require_relative 'epub_format' # epub_format.rb
include SiSU_EPUB_Format
require_relative 'epub_segments' # epub_segments.rb
- include SiSU_EPUB_seg
+ include SiSU_EPUB_Seg
require_relative 'epub_tune' # epub_tune.rb
include SiSU_EPUB_Tune
require_relative 'epub_concordance' # epub_concordance.rb
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
songsheet
@@ -96,18 +96,18 @@ module SiSU_EPUB
@env.processing_path.epub_bld #(@md)
@env.processing_path.epub_cp_images(@md)
dir_epub=@env.processing_path.epub
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
data=nil
- SiSU_Env::SiSU_file.new(@md).mkdir.output.epub
- @tuned_file_array=SiSU_EPUB::Source::XHtml_environment.new(@particulars).tuned_file_instructions
+ SiSU_Env::FileOp.new(@md).mkdir.output.epub
+ @tuned_file_array=SiSU_EPUB::Source::XHTML_Environment.new(@particulars).tuned_file_instructions
data=@tuned_file_array
scr_endnotes=SiSU_EPUB::Source::Endnotes.new(@md,data).scroll
toc=SiSU_EPUB::Source::Toc.new(@md,data).songsheet
data=@tuned_file_array
- scr_toc=SiSU_EPUB::Source::Scroll_head_and_segtoc.new(@md,toc).in_common #watch
+ scr_toc=SiSU_EPUB::Source::ScrollHeadAndSegToc.new(@md,toc).in_common #watch
SiSU_EPUB::Source::Seg.new(@md,data).songsheet
- SiSU_EPUB::Source::Epub_output.new(@md).songsheet
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_EPUB::Source::Output.new(@md).songsheet
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
unless @opt.cmd =~/[MV]/ #check maintenance flag
texfiles=Dir["#{@env.processing_path.tune}/#{@opt.fns}*"]
@@ -126,19 +126,19 @@ module SiSU_EPUB
end
end
private
- class XHtml_environment
+ class XHTML_Environment
def initialize(particulars)
@particulars=particulars
@md,@env=particulars.md,particulars.env
- @vz=SiSU_Env::Get_init.instance.skin
- @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::Create_system_link.new #home
+ @vz=SiSU_Env::GetInit.instance.skin
+ @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::CreateSystemLink.new #home
end
def link_images
@symlnk.images
end
def directories
title=File.basename(@md.fns,'.rb')
- SiSU_Env::SiSU_file.new(@md).mkdir.output.epub
+ SiSU_Env::FileOp.new(@md).mkdir.output.epub
end
def tuned_file_instructions
@tell=SiSU_Screen::Ansi.new(@md.opt.cmd)
@@ -157,10 +157,10 @@ module SiSU_EPUB
end
def scroll
@scr_endnotes=[]
- format_head_scroll=SiSU_EPUB_Format::Head_scroll.new(@md)
+ format_head_scroll=SiSU_EPUB_Format::HeadScroll.new(@md)
@data.each do |dob|
pg=dob.dup
- unless pg.is =~/^code/
+ unless pg.is ==:code
if pg.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ /
endnote_array=[]
if pg.obj=~/#{Mx[:en_a_o]}[\d*+].+?#{Mx[:en_a_c]}/m
@@ -174,7 +174,7 @@ module SiSU_EPUB
end
endnote_array.flatten.each do |note|
txt_obj={ txt: note }
- format_scroll=SiSU_EPUB_Format::Format_scroll.new(@md,txt_obj)
+ format_scroll=SiSU_EPUB_Format::FormatScroll.new(@md,txt_obj)
@scr_endnotes << format_scroll.endnote_body
end
end
@@ -189,9 +189,10 @@ module SiSU_EPUB
@@firstseg=nil
def initialize(md=nil,data='')
@md,@data=md,data
- @vz=SiSU_Env::Get_init.instance.skin
- @epub=SiSU_EPUB_Format::Head_information.new(@md)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @epub=SiSU_EPUB_Format::HeadInformation.new(@md)
@tell=SiSU_Screen::Ansi.new(@md.opt.cmd) if @md
+ @make=SiSU_Env::ProcessingSettings.new(@md)
end
def songsheet #extracts toc for scroll & seg
SiSU_Screen::Ansi.new(@md.opt.cmd,'Toc').txt_grey if @md.opt.cmd =~/[MVv]/
@@ -211,15 +212,17 @@ module SiSU_EPUB
@@toc[:seg] << %{<div class="content">\n<div class="substance">}
@@toc[:scr] << %{<div class="content">\n<div class="substance">}
md_opf_a_content << @epub.metadata_opf.manifest_content_sisu_toc
- md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc
- md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc
+ if @make.build.toc?
+ md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc
+ md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc
+ end
@ncxo=[nil,false,false,false,false,false,false]
@dob_toc2,@dob_toc3=nil,nil
@ncx_cls=[]
@level_a_first_occurrence=true
@data.each do |dob|
- if dob.is=='heading' \
- or dob.is=='heading_insert'
+ if dob.is==:heading \
+ || dob.is==:heading_insert
dob_toc=dob.dup
toc=case dob_toc.ln
when 1
@@ -234,7 +237,8 @@ module SiSU_EPUB
@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4]=true,false,false,false
@epub.sections(dob_toc,name_s_a)
@@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_s_a) if dob_toc
- if @level_a_first_occurrence
+ if @level_a_first_occurrence \
+ && @make.build.toc?
@nav_no+=1
@@toc[:ncx] << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc
@level_a_first_occurrence=false
@@ -242,7 +246,7 @@ module SiSU_EPUB
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_a)
md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_a)
md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_a)
- Toc.new(@md,dob_toc).level_1
+ SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_1
when 2
@s_b_no +=1
name_s_b='section_b' + @s_b_no.to_s
@@ -257,7 +261,7 @@ module SiSU_EPUB
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_b)
md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_b)
md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_b)
- Toc.new(@md,dob_toc).level_2
+ SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_2
when 3
@s_c_no +=1
name_s_c='section_c' + @s_c_no.to_s
@@ -271,7 +275,7 @@ module SiSU_EPUB
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_c)
md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_c)
md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_c)
- Toc.new(@md,dob_toc).level_3
+ SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_3
when 4
@ncx_cls=[]
@nav_no+=1
@@ -281,9 +285,9 @@ module SiSU_EPUB
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc)
md_opf_a_spine << @epub.metadata_opf.spine(dob_toc)
md_opf_a_guide << @epub.metadata_opf.guide(dob_toc)
- Toc.new(@md,dob_toc).level_4
- when 5; Toc.new(@md,dob_toc).level_5
- when 6; Toc.new(@md,dob_toc).level_6
+ SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_4
+ when 5; SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_5
+ when 6; SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_6
else nil
end
toc.each do |k,d|
@@ -298,8 +302,7 @@ module SiSU_EPUB
begin
@@toc[:seg] << toc[:seg]
@@toc[:scr] << toc[:seg]
- @@toc[:seg_mini] << toc[:seg_mini] if toc[:seg_mini]
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
end
@@ -318,22 +321,18 @@ 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
- Epub_output.new(@md,@@toc[:opf]).epub_metadata_opf
- Epub_output.new(@md,@@toc[:ncx]).epub_toc_ncx
+ SiSU_EPUB::Source::Output.new(@md,@@toc[:opf]).epub_metadata_opf
+ SiSU_EPUB::Source::Output.new(@md,@@toc[:ncx]).epub_toc_ncx
@md.firstseg=@@firstseg
@@toc
end
- def minitoc
- minitoc=@@toc[:seg_mini].join("\n")
- '<div class="toc">' + minitoc + '</div>'
- end
protected
def level_1
dob=@data
linkname,link=dob.obj.strip,dob.ocn
if link \
and link !~/#/ #% keep eye on link
- p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,link)
+ p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,link)
end
title=if dob.obj !~/Document Information/; linkname
else
@@ -342,20 +341,12 @@ module SiSU_EPUB
end
toc={}
txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:seg]=if dob.name =~/^meta/ \
and dob.obj =~/Document Information/ #check
format_toc.lev0
else format_toc.lev1
end
- toc[:seg_mini]=if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/ #check
- x=if @md.concord_make
- format_toc.mini_concord_tail
- else format_toc.mini_tail
- end
- else format_toc.mini_lev1
- end
title=if dob.ocn ==0
if dob.name =~/^meta/ \
and dob.obj =~/Document Information/
@@ -370,7 +361,7 @@ module SiSU_EPUB
%{<b><a href="##{link}">#{linkname}</a></b>}
end
txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=if dob.name =~/^meta/ \
and dob.obj =~/Document Information/
format_toc.lev0
@@ -383,17 +374,16 @@ module SiSU_EPUB
linkname,ocn=dob.obj.strip,dob.ocn
if ocn \
and ocn !~/#/
- p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
end
txt_obj={ txt: linkname }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc={}
toc[:seg]=format_toc.lev2
- toc[:seg_mini]=format_toc.mini_lev2
if p_num
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev2
end
toc
@@ -403,17 +393,16 @@ module SiSU_EPUB
linkname,ocn=dob.obj.strip,dob.ocn
if ocn \
and ocn !~/#/
- p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
end
txt_obj={ txt: linkname }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc={}
toc[:seg]=format_toc.lev3
- toc[:seg_mini]=format_toc.mini_lev3
if p_num
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev3
end
toc
@@ -421,7 +410,7 @@ module SiSU_EPUB
def level_4
dob=@data
linkname,ocn=dob.obj.strip,dob.ocn
- p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) if ocn
+ p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn
if dob.ln==4
seg_link=%{ <a href="#{dob.name}#{Sfx[:epub_xhtml]}">
#{dob.obj}
@@ -432,15 +421,14 @@ module SiSU_EPUB
%{<a href="\\1#{Sfx[:epub_xhtml]}">} +
%{\\1 \\2</a> })
end
- p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) if ocn
+ p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn
txt_obj={ txt: seg_link }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc={}
toc[:seg]=format_toc.lev4
- toc[:seg_mini]=format_toc.mini_lev4
title=%{#{p_num.goto}#{linkname}</a>} if p_num
txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev4
toc
end
@@ -450,17 +438,16 @@ module SiSU_EPUB
toc={}
if ocn \
and ocn !~/#/
- p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ p_num=SiSU_EPUB_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::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:seg]=format_toc.lev5
- toc[:seg_mini]=format_toc.mini_lev5
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev5
end
toc
@@ -471,72 +458,48 @@ module SiSU_EPUB
toc={}
if ocn \
and ocn !~/#/
- p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ p_num=SiSU_EPUB_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::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:seg]=format_toc.lev6
- toc[:seg_mini]=format_toc.mini_lev6
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev6
end
toc
end
- def level_crosslink
- dob=@data
- if dob !~/^4~!/
- dob.gsub!(/^4~!\s+(\S+)\s+(.+)/,
- %{<table><tr><td width =\"80\"></td>
- <td><a href="http://\\1">
- #{@png.crosslink_ext}
- &nbsp;&nbsp;\\2
- <\/a>
- </td></tr></table>
-})
- else
- dob.gsub!(/^4~!\s+(\S+)\s+(.+)/,
- %{<table><tr><td width ="80">
- </td><td>
- <a href="\\1">
- #{@png.crosslink}
- &nbsp;&nbsp;\\2
- <\/a>
- </td></tr></table>
-})
- end
- end
end
- class Scroll_head_and_segtoc < Toc
+ class ScrollHeadAndSegToc < Toc
def initialize(md='',toc='',links_guide_toc='')
@md,@toc,@links_guide_toc=md,toc,links_guide_toc
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def in_common
toc_shared=[]
segtoc=[]
SiSU_Screen::Ansi.new(@md.opt.cmd,'Scroll & Segtoc').txt_grey if @md.opt.cmd =~/[MVv]/
- format_head_toc=SiSU_EPUB_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_EPUB_Format::HeadToc.new(@md)
dochead=format_head_toc.head
- dochead.gsub!(/toc\.(html)/,'doc.\1') #kludge
+ dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge
toc_shared << dochead #<< ads.div.major
segtoc << format_head_toc.head #<< ads.div.major
- if SiSU_EPUB_Format::Head_toc.method_defined? :toc_head_escript
+ if SiSU_EPUB_Format::HeadToc.method_defined? :toc_head_escript
toc_shared << format_head_toc.toc_head_escript
segtoc << format_head_toc.toc_head_escript
end
if defined? @md.rights.all \
and @md.rights.all
rights=format_head_toc.rights.all
- rights=SiSU_EPUB_Tune::Clean_xhtml.new(rights).clean
+ rights=SiSU_EPUB_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::Clean_xhtml.new(prefix_b).clean
+ prefix_b=SiSU_EPUB_Tune::CleanXHTML.new(prefix_b).clean
end
seg_toc_band=format_head_toc.seg_head_navigation_band
seg_toc_band_bottom=format_head_toc.seg_head_navigation_band_bottom
@@ -544,7 +507,7 @@ module SiSU_EPUB
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::Format_text_object.new(@md,txt_obj)
+ format_txt_obj=SiSU_EPUB_Format::FormatTextObject.new(@md,txt_obj)
toc_shared << format_txt_obj.center_bold
segtoc << format_txt_obj.center_bold
if defined? @md.creator.author \
@@ -552,7 +515,7 @@ module SiSU_EPUB
creator_endnote=@md.creator.author.gsub(/(\*+)/,%{&nbsp;<sup><a href="#notes">\\1</a></sup>})
tmp_head=creator_endnote + "\n"
txt_obj={ txt: tmp_head }
- format_txt_obj=SiSU_EPUB_Format::Format_text_object.new(@md,txt_obj)
+ format_txt_obj=SiSU_EPUB_Format::FormatTextObject.new(@md,txt_obj)
toc_shared << format_txt_obj.center_bold
segtoc << format_txt_obj.center_bold
end
@@ -589,23 +552,24 @@ module SiSU_EPUB
#Segtoc tail added here
segtoc << seg_toc_band_bottom
segtoc << format_head_toc.xhtml_close
- segtoc.flatten!.compact!
- Epub_output.new(@md,segtoc).segtoc
+ segtoc=segtoc.flatten.compact #watch
+ SiSU_EPUB::Source::Output.new(@md,segtoc).segtoc
segtoc=[]
@toc[:scr],@toc[:seg]=[],[]
toc_shared
end
end
- class Table < SiSU_XHTML_table::Table_xhtml
+ class Table < SiSU_XHTML_Table::TableXHTML
end
- class Seg < SiSU_EPUB_seg::Seg
+ class Seg < SiSU_EPUB_Seg::Seg
end
- class Epub_output
+ class Output
def initialize(md,output='')
@md,@output=md,output
@epub_doc="#{@md.fnb}.epub"
- @epub_header=SiSU_EPUB_Format::Head_information.new(@md)
- @make=SiSU_Env::Create_file.new(@md.fns)
+ @epub_header=SiSU_EPUB_Format::HeadInformation.new(@md)
+ @make=SiSU_Env::ProcessingSettings.new(@md)
+ @make_file=SiSU_Env::CreateFile.new(@md.fns)
end
def songsheet
mimetype
@@ -616,42 +580,42 @@ module SiSU_EPUB
output_zip
end
def mimetype
- out=@make.epub.mimetype
+ out=@make_file.epub.mimetype
out<<@epub_header.mimetype
out.close
end
def metainf_container #container.xml file in META-INF directory
- out=@make.epub.metainf_cont
+ out=@make_file.epub.metainf_cont
out<<@epub_header.metainf_container
out.close
end
def css
- out=@make.epub.xhtml_css
- out << SiSU_EPUB_Format::Css.new.css_epub_xhtml
+ out=@make_file.epub.xhtml_css
+ out << SiSU_EPUB_Format::CSS.new.css_epub_xhtml
out.close
end
def epub_toc_ncx
begin
- out=@make.epub.toc_ncx
+ out=@make_file.epub.toc_ncx
@output.each do |para|
unless para =~/\A\s*\Z/
out.puts para
end
end
out.close
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
def epub_metadata_opf
begin
- out=@make.epub.metadata
+ out=@make_file.epub.metadata
@output.each do |para|
unless para =~/\A\s*\Z/
out.puts para
end
end
out.close
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
def images
@@ -686,18 +650,17 @@ module SiSU_EPUB
end
def segtoc
begin
- filename_html_segtoc=@make.epub.xhtml_segtoc
- filename_html_index=@make.epub.xhtml_index
- @output.each do |para|
- para.strip!
- unless para =~/\A\s*\Z/
- filename_html_segtoc.puts para,"\n"
- filename_html_index.puts para,"\n"
+ if @make.build.toc?
+ filename_html_index=@make_file.epub.xhtml_index
+ @output.each do |para|
+ para=para.strip
+ unless para =~/\A\s*\Z/
+ filename_html_index.puts para,"\n"
+ end
end
+ filename_html_index.close
end
- filename_html_segtoc.close
- filename_html_index.close
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
end
diff --git a/lib/sisu/v3/epub_concordance.rb b/lib/sisu/v3/epub_concordance.rb
index c2a289a2..e2e5bb5c 100644
--- a/lib/sisu/v3/epub_concordance.rb
+++ b/lib/sisu/v3/epub_concordance.rb
@@ -69,7 +69,7 @@ module SiSU_EPUB_Concordance
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
begin
@@ -85,21 +85,21 @@ module SiSU_EPUB_Concordance
SiSU_Screen::Ansi.new(@md.opt.cmd,"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.cmd =~/q/
SiSU_EPUB_Concordance::Source::Words.new(@particulars).songsheet
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
private
- class Doc_title
+ class DocTitle
include SiSU_Viz
#revisit, both requires (html & shared_xml) needed for stand alone operation (sisu -w [filename])
require_relative 'epub' # epub.rb
def initialize(particulars)
@particulars,@md=particulars,particulars.md
- @data=SiSU_EPUB::Source::XHtml_environment.new(particulars).tuned_file_instructions
- @vz=SiSU_Env::Get_init.instance.skin
+ @data=SiSU_EPUB::Source::XHTML_Environment.new(particulars).tuned_file_instructions
+ @vz=SiSU_Env::GetInit.instance.skin
txt_path=%{#{@md.dir_out}}
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
@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 --&gt;"></a>}
@doc_details =<<WOK
@@ -107,8 +107,8 @@ module SiSU_EPUB_Concordance
WOK
end
def create
- @css=SiSU_Env::CSS_stylesheet.new(@particulars.md)
- format_head_toc=SiSU_EPUB_Format::Head_toc.new(@md)
+ @css=SiSU_Env::CSS_Stylesheet.new(@particulars.md)
+ format_head_toc=SiSU_EPUB_Format::HeadToc.new(@md)
dochead=format_head_toc.head
<<WOK
#{dochead}
@@ -151,7 +151,7 @@ WOK
def initialize(particulars)
@particulars=particulars
begin
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array
@path="#{@env.processing_path.epub}"
@freq=Hash.new(0)
@@ -167,14 +167,18 @@ WOK
@rxp_excluded0=/^(?:#{Mx[:fa_bold_o]}|#{Mx[:fa_italics_o]})?(?:to\d+|\d+|&nbsp;|#{Mx[:br_endnotes]}|EOF|#{Mx[:br_eof]}|thumb_\S+|snap_\S+|_+|-+|[(]?(?:ii+|iv|vi+|ix|xi+|xiv|xv|xvi+|xix|xx)[).]?|\S+?_\S+|[\d_]+\w\S+|[\w\d]{1,2}|\d{1,3}\w?|[0-9a-f]{16,64}|\d{2,3}x\d{2,3}|\S{0,2}sha\d|\S{0,3}\d{4}w\d\d|\b\w\d+|\d_all\b|e\.?g\.?)(?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})?$/mi #this regex causes and cures a stack dump in ruby 1.9 !!!
@rgx_splitlist=%r{[—.,;:-]+|#{Mx[:nbsp]}+}mi
@rgx_scanlist=%r{#{Mx[:fa_italics_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_italics_c]}|#{Mx[:fa_bold_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_bold_c]}|#{Mx[:url_o]}https?://\S+?#{Mx[:url_c]}|file://\S+|<\S+?>|\w+|[a-zA-Z]+}mi
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
def songsheet
begin
+ #fix to use
+ p __LINE__.to_s + ':' + __FILE__
+ p "#{@path}/content/#{@md.fn[:epub_concord]}"
+ p "#{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}"
@file_concordance=File.open("#{@path}/content/#{@md.fn[:epub_concord]}",'w')
map_para
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
@file_concordance.close
end
@@ -202,7 +206,10 @@ WOK
@word_map={}
@dal_array.each do |line|
if defined? line.ocn
- if line.is =~/heading/ and line.ln==4; @seg=line.name
+ if (line.is ==:heading \
+ || line.is ==:heading_insert) \
+ && line.ln==4
+ @seg=line.name
end
if line.ocn.to_s =~/\d+/; toy=line.ocn.to_s
end
@@ -210,46 +217,46 @@ WOK
and toy !~/^0$/
line.obj=line.obj.split(@rgx_splitlist).join(' ') #%take in word or other match
for word in line.obj.scan(@rgx_scanlist) #%take in word or other match
- word.gsub!(/#{Mx[:lnk_o]}|#{Mx[:lnk_c]}|#{Mx[:url_o]}|#{Mx[:url_c]}/,'')
- word.gsub!(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'')
- word.gsub!(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'')
- word.gsub!(/#{Mx[:gl_o]}#[a-z]+#{Mx[:gl_c]}/,'')
- word.gsub!(/#{Mx[:gl_o]}#[0-9]+#{Mx[:gl_c]}/,'')
- word.gsub!(/^\S$/,'')
+ word=word.gsub(/#{Mx[:lnk_o]}|#{Mx[:lnk_c]}|#{Mx[:url_o]}|#{Mx[:url_c]}/,'').
+ gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').
+ gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
+ gsub(/#{Mx[:gl_o]}#[a-z]+#{Mx[:gl_c]}/,'').
+ gsub(/#{Mx[:gl_o]}#[0-9]+#{Mx[:gl_c]}/,'').
+ gsub(/^\S$/,'')
word=nil if word.empty?
word=nil if word =~@rxp_excluded0 #watch
word=nil if word =~@rxp_excluded1 #watch
word=nil if word =~/^\S$/
if word
- word.gsub!(/#{Mx[:br_nl]}|#{Mx[:br_line]}/,' ')
- word.gsub!(/#{Mx[:fa_o]}[a-z]{1,7}#{Mx[:fa_o_c]}|#{Mx[:fa_c_o]}[a-z]{1,7}#{Mx[:fa_c]}/,'')
- word.gsub!(/#{Mx[:mk_o]}(?:[0-9a-f]{32}:[0-9a-f]{32}|[0-9a-f]{64}:[0-9a-f]{64})#{Mx[:mk_c]}/,'')
- word.gsub!(/#{Mx[:mk_o]}(?:[0-9a-f]{32}|[0-9a-f]{64})#{Mx[:mk_c]}/,'')
- word.gsub!(/#{Mx[:en_a_o]}(?:\d|[*+])*|#{Mx[:en_b_o]}(?:\d|[*+])*|#{Mx[:en_a_c]}|#{Mx[:en_b_c]}/mi,'')
- word.gsub!(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,''); word.gsub!(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'')
- word.gsub!(/<\/?\S+?>/,'')
- word.gsub!(/^\@+/,'')
- word.strip!
- word.gsub!(/#{Mx[:tc_p]}.+/,'')
- word.gsub!(/[\.,;:"]$/,'')
- word.gsub!(/["]/,'')
- word.gsub!(/^\s*[\(]/,'')
- word.gsub!(/[\(]\s*$/,'')
- word.gsub!(/^(?:See|e\.?g\.?).+/,'')
- word.gsub!(/^\s*[.,;:]\s*/,'')
- word.strip!
- word.gsub!(/^\(?[a-zA-Z]\)$/,'')
- word.gsub!(/^\d+(st|nd|rd|th)$/,'')
- word.gsub!(/^(\d+\.?)+$/, '')
- word.gsub!(/#{Mx[:mk_o]}|#{Mx[:mk_c]}/,'')
- word.gsub!(/:name#\S+/,'')
- word.gsub!(/^\S$/,'')
+ word=word.gsub(/#{Mx[:br_nl]}|#{Mx[:br_line]}/,' ').
+ gsub(/#{Mx[:fa_o]}[a-z]{1,7}#{Mx[:fa_o_c]}|#{Mx[:fa_c_o]}[a-z]{1,7}#{Mx[:fa_c]}/,'').
+ gsub(/#{Mx[:mk_o]}(?:[0-9a-f]{32}:[0-9a-f]{32}|[0-9a-f]{64}:[0-9a-f]{64})#{Mx[:mk_c]}/,'').
+ gsub(/#{Mx[:mk_o]}(?:[0-9a-f]{32}|[0-9a-f]{64})#{Mx[:mk_c]}/,'').
+ gsub(/#{Mx[:en_a_o]}(?:\d|[*+])*|#{Mx[:en_b_o]}(?:\d|[*+])*|#{Mx[:en_a_c]}|#{Mx[:en_b_c]}/mi,'').
+ gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
+ gsub(/<\/?\S+?>/,'').
+ gsub(/^\@+/,'').
+ strip.
+ gsub(/#{Mx[:tc_p]}.+/,'').
+ gsub(/[\.,;:"]$/,'').
+ gsub(/["]/,'').
+ gsub(/^\s*[\(]/,'').
+ gsub(/[\(]\s*$/,'').
+ gsub(/^(?:See|e\.?g\.?).+/,'').
+ gsub(/^\s*[.,;:]\s*/,'').
+ strip.
+ gsub(/^\(?[a-zA-Z]\)$/,'').
+ gsub(/^\d+(st|nd|rd|th)$/,'').
+ gsub(/^(\d+\.?)+$/, '').
+ gsub(/#{Mx[:mk_o]}|#{Mx[:mk_c]}/,'').
+ gsub(/:name#\S+/,'').
+ gsub(/^\S$/,'')
word=nil if word =~/^\S$/
word=nil if word =~/^\s*$/ #watch
if word
unless word =~/[A-Z][A-Z]/ \
or word =~/\w+\s\w+/
- word.capitalize!
+ word=word.capitalize
end
@freq[word] +=1
@word_map[word] ||= []
@@ -272,7 +279,7 @@ WOK
end
scr='<font size="1" color="#777777" face=times new roman><img border="0" height="15" width="15" src="../_sisu/image/b_doc.png" alt="Full Text">&nbsp;scroll:&nbsp;</font><font size="1" color="#222222" face=times new roman>doc#&nbsp;</font> '
seg=''
- @file_concordance << SiSU_EPUB_Concordance::Source::Doc_title.new(@particulars).create
+ @file_concordance << SiSU_EPUB_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>,&nbsp;}}
diff --git a/lib/sisu/v3/epub_format.rb b/lib/sisu/v3/epub_format.rb
index 31bae51b..e11f5d3d 100644
--- a/lib/sisu/v3/epub_format.rb
+++ b/lib/sisu/v3/epub_format.rb
@@ -58,31 +58,27 @@
=end
module SiSU_EPUB_Format
include SiSU_Viz
- class Paragraph_number
+ class ParagraphNumber
def initialize(md,ocn)
@md,@ocn=md,ocn.to_s
@ocn ||=''
- vz=SiSU_Env::Get_init.instance.skin
- @skin_no_ocn=if defined? vz.ocn_display_off \
- and vz.ocn_display_off==true
- true
- else false
- end
+ vz=SiSU_Env::GetInit.instance.skin
end
def ocn_display
- if @md.markup.inspect =~/no_ocn/ \
- or @md.opt.mod.inspect =~/--no-ocn/ \
- or @skin_no_ocn
- ocn_class='ocn_off'
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- elsif @ocn.to_i==0
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- else
+ @make=SiSU_Env::ProcessingSettings.new(@md)
+ if @make.build.ocn?
ocn_class='ocn'
+ if @ocn.to_i==0
+ @ocn.gsub(/^(\d+|)$/,
+ %{<label class="#{ocn_class}">&nbsp;</label>})
+ else
+ @ocn.gsub(/^(\d+|)$/,
+ %{<label class="#{ocn_class}"><a href="#o\\1" class="lnk#{ocn_class}">\\1</a></label>})
+ end
+ else
+ ocn_class='ocn_off'
@ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a href="#o\\1" class="lnk#{ocn_class}">\\1</a></label>})
+ %{<label class="#{ocn_class}">&nbsp;</label>})
end
end
def name
@@ -95,7 +91,7 @@ module SiSU_EPUB_Format
%{<a href="##{@ocn}">}
end
end
- class Css
+ class CSS
def css_epub_xhtml
<<WOK
/* SiSU epub css default stylesheet */
@@ -1198,36 +1194,6 @@ module SiSU_EPUB_Format
background-color: #f9f9aa;
}
- .minitoc {
- font-weight: normal;
- margin-top: 2px;
- margin-bottom: 2px;
- }
- h1.minitoc, h2.minitoc, h3.minitoc {
- margin-left: 0em;
- font-weight: bold;
- text-align: left;
- font-size: 90%;
- margin-top: 4px;
- margin-bottom: 4px;
- }
- h4.minitoc {
- margin-left: 0em;
- font-size: 90%;
- }
- h5.minitoc {
- margin-left: 1em;
- font-size: 85%;
- }
- h6.minitoc {
- margin-left: 2em;
- font-size: 85%;
- }
- h0.minitoc {
- margin-left: 0em;
- font-size: 90%;
- }
-
h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c {
text-align: center
}
@@ -1252,14 +1218,14 @@ module SiSU_EPUB_Format
WOK
end
end
- class Head_information
+ class HeadInformation
include SiSU_Viz
attr_reader :md,:rdf,:vz
def initialize(md)
@md=md
# DublinCore 1 - title
- @vz=SiSU_Env::Get_init.instance.skin
- @css=SiSU_Env::CSS_stylesheet.new(md)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @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 || [])
@index='index'
@@ -1493,12 +1459,12 @@ WOK
m=(m.empty?) \
? (surname + other_names)
: (m + '; ' + surname + ', ' + other_names)
- m.gsub!(/</,'&lt;'); m.gsub!(/>/,'&gt;')
- m.gsub!(/&lt;br(?: \/)?&gt;/,';')
+ m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,';')
end
x=@md.creator.author.dup
- x.gsub!(/</,'&lt;'); x.gsub!(/>/,'&gt;')
- x.gsub!(/&lt;br(?: \/)?&gt;/,'<br />')
+ x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,'<br />')
%{\n <dc:creator opf:file-as="#{m}" opf:role="aut">#{x}</dc:creator>}
else ''
end
@@ -1515,12 +1481,12 @@ WOK
m=(m.empty?) \
? (surname + other_names)
: (m + '; ' + surname + ', ' + other_names)
- m.gsub!(/</,'&lt;'); m.gsub!(/>/,'&gt;')
- m.gsub!(/&lt;br(?: \/)?&gt;/,';')
+ m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,';')
end
x=@md.creator.editor.dup
- x.gsub!(/</,'&lt;'); x.gsub!(/>/,'&gt;')
- x.gsub!(/&lt;br(?: \/)?&gt;/,'<br />')
+ x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,'<br />')
%{\n <dc:creator opf:file-as="#{m}" opf:role="edt">#{x}</dc:creator>}
else ''
end
@@ -1537,12 +1503,12 @@ WOK
m=(m.empty?) \
? (surname + other_names)
: (m + '; ' + surname + ', ' + other_names)
- m.gsub!(/</,'&lt;'); m.gsub!(/>/,'&gt;')
- m.gsub!(/&lt;br(?: \/)?&gt;/,';')
+ m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,';')
end
x=@md.creator.translator.dup
- x.gsub!(/</,'&lt;'); x.gsub!(/>/,'&gt;')
- x.gsub!(/&lt;br(?: \/)?&gt;/,'<br />')
+ x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,'<br />')
%{\n <dc:creator opf:file-as="#{m}" opf:role="trl">#{x}</dc:creator>}
else ''
end
@@ -1559,28 +1525,28 @@ WOK
m=(m.empty?) \
? (surname + other_names)
: (m + '; ' + surname + ', ' + other_names)
- m.gsub!(/</,'&lt;'); m.gsub!(/>/,'&gt;')
- m.gsub!(/&lt;br(?: \/)?&gt;/,';')
+ m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,';')
end
x=@md.creator.illustrator.dup
- x.gsub!(/</,'&lt;'); x.gsub!(/>/,'&gt;')
- x.gsub!(/&lt;br(?: \/)?&gt;/,'<br />')
+ x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,'<br />')
%{\n <dc:creator opf:file-as="#{m}" opf:role="ill">#{x}</dc:creator>}
else ''
end
date_published=if defined? @md.date.published \
and @md.date.published =~/\S+/
x=@md.date.published.dup
- x.gsub!(/</,'&lt;'); x.gsub!(/>/,'&gt;')
- x.gsub!(/&lt;br(?: \/)?&gt;/,'<br />')
+ x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,'<br />')
%{\n <dc:date opf:event="published">#{x}</dc:date>}
else ''
end
subject=if defined? @md.classify.subject \
and @md.classify.subject =~/\S+/
x=@md.classify.subject.dup
- x.gsub!(/</,'&lt;'); x.gsub!(/>/,'&gt;')
- x.gsub!(/&lt;br(?: \/)?&gt;/,'<br />')
+ x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,'<br />')
%{\n <dc:subject>#{x}</dc:subject>}
else ''
end
@@ -1596,7 +1562,7 @@ WOK
%{\n <dc:rights>#{rights}</dc:rights>}
else ''
end
- f=SiSU_Env::SiSU_file.new(@md)
+ f=SiSU_Env::FileOp.new(@md)
<<WOK
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:opf="http://www.idpf.org/2007/opf"
@@ -1718,7 +1684,7 @@ WOK
</html>}
end
end
- class Head_toc < Head_information
+ class HeadToc < HeadInformation
def initialize(md)
super(md)
@md=md
@@ -1743,7 +1709,7 @@ WOK
def manifest_link(text)
%{ <a href="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}" target="_top" #{@vz.js_manifest}>#{text}</a>}
end
- def concordance_link(text) #watch fix removed font size 2
+ def concordance_link(text)
if @md.concord_make
%{<a href="#{@md.file.base_filename.html_concordance}" target="_top" #{@vz.js_concordance}>
#{text}
@@ -1829,7 +1795,7 @@ WOK
#{@vz.table_close}}
end
end
- class Head_seg < Head_information
+ class HeadSeg < HeadInformation
def initialize(md)
super(md)
end
@@ -1850,10 +1816,8 @@ WOK
<hr class="endnote" />
}
end
- def title_banner(title,subtitle,creator)
- end
end
- class Head_scroll < Head_toc
+ class HeadScroll < HeadToc
def initialize(md)
super(md)
end
@@ -1870,8 +1834,8 @@ WOK
#{@vz.table_close}}
end
end
- class Format_text_object
- @vz=SiSU_Env::Get_init.instance.skin
+ class FormatTextObject
+ @vz=SiSU_Env::GetInit.instance.skin
attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
def initialize(md,t_o)
@md,@t_o=md,t_o
@@ -1903,7 +1867,7 @@ WOK
@named=nametags_seg(@dob)
@txt=((defined? t_o.obj) ? t_o.obj : nil)
@ocn=((defined? t_o.ocn) ? t_o.ocn.to_s : nil)
- @headname=((t_o.is=='heading' and defined? t_o.name) ? t_o.name : nil)
+ @headname=((t_o.is==:heading and defined? t_o.name) ? t_o.name : nil)
else
if @md.opt.cmd =~/M/
p __FILE__ +':'+ __LINE__.to_s
@@ -1912,10 +1876,10 @@ WOK
end
end
if @txt and not @txt.empty?
- @txt.gsub!(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
+ @txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
end
- @p_num=Paragraph_number.new(@md,@ocn)
- @vz=SiSU_Env::Get_init.instance.skin
+ @p_num=ParagraphNumber.new(@md,@ocn)
+ @vz=SiSU_Env::GetInit.instance.skin
end
def nametags_seg(dob) #FIX
tags=''
@@ -1951,60 +1915,60 @@ WOK
</div>
}
end
- def para_form_css(tag,attrib) # regular paragraphs shaped here
+ def para_form_css(tag,attrib,txt) # regular paragraphs shaped here
ul=ulc=''
ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/
%{
<div class="substance">
#{@p_num.ocn_display}
#{ul}<#{tag} class="#{attrib}" #{@p_num.id}>
- #{@named}#{@txt}
+ #{@named}#{txt}
</#{tag}>#{ulc}
</div>
}
end
def para
- para_form_css('p','norm')
+ para_form_css('p','norm',@txt)
end
def group
- para_form_css('p','group')
+ para_form_css('p','group',@txt)
end
def block
- para_form_css('p','block')
+ para_form_css('p','block',@txt)
end
def alt
- para_form_css('p','alt')
+ para_form_css('p','alt',@txt)
end
def verse
- para_form_css('p','verse')
+ para_form_css('p','verse',@txt)
end
def code
- para_form_css('p','code')
+ para_form_css('p','code',@txt)
end
def center
- para_form_css('p','center')
+ para_form_css('p','center',@txt)
end
def bold
- para_form_css('p','bold')
+ para_form_css('p','bold',@txt)
end
def bullet
- para_form_css('li','bullet')
+ para_form_css('li','bullet',@txt)
end
def table
@txt=if @t_o.obj !~/^<table\s/
- table=SiSU_XHTML_shared::Table_xhtml.new(@t_o) #move, make happen earlier
- @txt=table.table.obj
+ table=SiSU_XHTML_Shared::TableXHTML.new(@t_o) #move, make happen earlier
+ table.table.obj
else @txt
end
- para_form_css('p','norm')
+ para_form_css('p','norm',@txt)
end
def break
- @txt.gsub!(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />')
- @txt.gsub!(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />')
- para_form_css('p','norm')
+ @txt=@txt.gsub(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />').
+ gsub(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />')
+ para_form_css('p','norm',@txt)
end
def format(tag,attrib)
- para_form_css(tag,attrib)
+ para_form_css(tag,attrib,@txt)
end
def title_heading(tag,attrib)
%{
@@ -2033,8 +1997,8 @@ WOK
def title_heading4
''
end
- def seg_heading_sub(tag,attrib)
- @txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ def seg_heading_sub(tag,attrib,txt)
+ txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
%{
<div class="substance">
#{@p_num.ocn_display}
@@ -2055,10 +2019,10 @@ WOK
}
end
def seg_heading5
- seg_heading_sub('p','bold')
+ seg_heading_sub('p','bold',@txt)
end
def seg_heading6
- seg_heading_sub('p','bold')
+ seg_heading_sub('p','bold',@txt)
end
def dl #check :trailer
"<dl><b>#{@txt}</b> #{@trailer}</dl>"
@@ -2068,18 +2032,19 @@ WOK
</p>
</div>'
end
- def gsub_body
- case @txt
+ def gsub_body #unused
+ @txt=case @txt
when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\((i+|iv|v|vi+|ix|x|xi+)\)/
- @txt.gsub!(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>')
- @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>')
+ @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>').
+ gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>')
when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\(?(\d|[a-z])+\)/
- @txt.gsub!(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>')
- @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>')
+ @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>').
+ gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>')
when /^\s*\d{1,3}\.\s/
- @txt.gsub!(/^\s*(\d+\.)/,'<b>\1</b>')
+ @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>')
when /^\s*[A-Z]\.\s/
- @txt.gsub!(/^\s*([A-Z]\.)/,'<b>\1</b>')
+ @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>')
+ else @txt
end
end
def bold_para
@@ -2091,9 +2056,9 @@ WOK
&nbsp;&nbsp;&nbsp;
#{@vz.table_close}}
end
- def bold_heading
- @txt.gsub!(/[1-9]~\S+/,'')
- @txt.gsub!(/[1-9]~/,'')
+ def bold_heading #unused
+ @txt=@txt.gsub(/[1-9]~\S+/,'').
+ gsub(/[1-9]~/,'')
%{<p class="bold">
#{@txt}
</p>
@@ -2114,62 +2079,16 @@ WOK
%{<p class="centerbold">#{@txt}</p>\n}
end
end
- class Format_scroll < Format_text_object
+ class FormatScroll < FormatTextObject
def initialize(md,txt)
super(md,txt)
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
end
- class Format_seg < Format_text_object
+ class FormatSeg < FormatTextObject
def initialize(md,txt)
super(md,txt)
end
- def navigation_toc_lev1_advert
- %{#{@banner.home_button}\n
-<p class="center">
-#{@txt}
-#{@two}
-</a></p>}
- end
- def navigation_toc_lev1
- %{#{@banner.nav_toc}}
- end
- def navigation_toc_lev2 #change bold use css
- %{<table summary="navigation segment level 2">
-<tr><td width ="20">
-</td>
-<td>
- <font size="3" #{@vz.font_face}>
- <b>#{@txt}</b>
- </font>
- </p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev3 #change bold use css
- %{<table summary="navigation segment level 3">
-<tr><td width ="20">
-</td>
-<td>
- <font size="3" #{@vz.font_face}>
- <b>#{@txt}</b>
- </font>
- </p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev4
- %{<table summary="navigation segment level 4">
-<tr><td width ="80">
-</td>
-<td>
-<p>
- #{@txt}
-</p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev5
- end
- def navigation_toc_lev6
- end
def endnote_seg_body(fn='') #FIX #url construction keep within single line... BUG WATCH 200408
fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info
%{
@@ -2179,9 +2098,8 @@ WOK
}
end
def clean(txt)
- txt.gsub!(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,'')
- txt.gsub!(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
- txt
+ txt=txt.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,'').
+ gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
end
def subtoc_lev(tag,attrib)
@txt=clean(@txt)
@@ -2193,10 +2111,10 @@ WOK
note=''
if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
note=$1
- note.gsub!(/[\n\s]+/m,' ')
- txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- txt.gsub!(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">&nbsp;<sup id="note\d+">\d+<\/sup>&nbsp;/m,'')
- txt.gsub!(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{Mx[:nbsp]}<sup id="note\d+">\d+<\/sup>#{Mx[:nbsp]}/m,'') #remove
+ note=note.gsub(/[\n\s]+/m,' ')
+ txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
+ gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">&nbsp;<sup id="note\d+">\d+<\/sup>&nbsp;/m,'').
+ gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{Mx[:nbsp]}<sup id="note\d+">\d+<\/sup>#{Mx[:nbsp]}/m,'') #remove
end
%{<#{tag} class="#{attrib}">
<a href="#o#{@ocn}"><i>#{txt}</i></a> #{note}
@@ -2208,8 +2126,8 @@ WOK
def subtoc_lev6
subtoc_lev('h6','subtoc') if @txt
end
- def heading_sub(tag,attrib)
- @txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ def heading_sub(tag,attrib,txt)
+ txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
%{
<div class="substance">
#{@p_num.ocn_display}
@@ -2231,10 +2149,10 @@ WOK
}
end
def heading5
- heading_sub('p','bold')
+ heading_sub('p','bold',@txt)
end
def heading6
- heading_sub('p','bold')
+ heading_sub('p','bold',@txt)
end
def navigation_heading4
%{<table summary="navigation segment heading 4" width=100% bgcolor="#08163f" border="0">
@@ -2258,7 +2176,7 @@ WOK
%{<p class="centerbold">#{@txt}</p>}
end
end
- class Format_toc < Format_text_object
+ class FormatToc < FormatTextObject
def initialize(md,txt)
super(md,txt)
end
@@ -2300,44 +2218,6 @@ WOK
def lev0 #docinfo
lev('h0','toc')
end
- def mini_lev1
- lev('h1','minitoc')
- end
- def mini_lev2
- lev('h2','minitoc')
- end
- def mini_lev3
- lev('h3','minitoc')
- end
- def mini_lev4
- lev('h4','minitoc')
- end
- def mini_lev5
- lev('h5','minitoc')
- end
- def mini_lev6
- lev('h6','minitoc')
- end
- def mini_lev0 #docinfo
- lev('h0','minitoc')
- end
- def mini_tail
- %{
- <h4 class="minitoc">
- <a href="sisu_manifest.html">Manifest (alternative outputs)</a>
- </h4>
-}
- end
- def mini_concord_tail
- %{
- <h4 class="minitoc">
- <a href="concordance.html">Concordance (wordlist)</a>
- </h4>
- <h4 class="minitoc">
- <a href="sisu_manifest.html">Manifest (alternative outputs)</a>
- </h4>
-}
- end
end
end
__END__
diff --git a/lib/sisu/v3/epub_segments.rb b/lib/sisu/v3/epub_segments.rb
index 5e08968a..262fde3c 100644
--- a/lib/sisu/v3/epub_segments.rb
+++ b/lib/sisu/v3/epub_segments.rb
@@ -56,41 +56,38 @@
** Description: epub segment generation, processing
=end
-module SiSU_EPUB_seg
+module SiSU_EPUB_Seg
require_relative 'shared_xhtml' # shared_xhtml.rb
require_relative 'epub' # epub.rb
require_relative 'shared_metadata' # shared_metadata.rb
- class Seg_output
- def initialize(md,outputfile,seg,minitoc,type='')
- @md,@output_epub_cont_seg,@seg,@minitoc,@type=md,outputfile,seg,minitoc,type
+ class Output
+ def initialize(md,outputfile,seg,type='')
+ @md,@output_epub_cont_seg,@seg,@type=md,outputfile,seg,type
end
def output #CONSIDER
if @seg[:title] =~/\S/
filename_seg=[]
filename_seg << @seg[:title] << @seg[:nav]
if @type=='endnotes'
- @seg[:headings]=[]
+ @seg[:headings]=[] #watch
txt_obj={ txt: 'Endnotes', ocn_display: ''}
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_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_head_seg=SiSU_EPUB_Format::Head_seg.new(@md)
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_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=Metadata::Summary.new(@md).xhtml_display.metadata
+ metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata
@seg[:headings]=[]
- format_head_seg=SiSU_EPUB_Format::Head_seg.new(@md)
- @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
txt_obj={ txt: 'Metadata', ocn_display: ''}
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_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'
- env=SiSU_Env::Info_env.new(@md.fns)
+ env=SiSU_Env::InfoEnv.new(@md.fns)
path_and_name,url_and_name="#{env.path.output}/#{@md.fnb}/sisu_manifest.html","#{env.url.root}/#{@md.fnb}/sisu_manifest.html"
manifest=if FileTest.file?("#{path_and_name}")==true
<<WOK
@@ -100,21 +97,18 @@ WOK
else ''
end
@seg[:headings]=[]
- format_head_seg=SiSU_EPUB_Format::Head_seg.new(@md)
- @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
txt_obj={ txt: 'Manifest', ocn_display: ''}
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_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
filename_seg << @seg[:headings] << @seg[:main] << "\n</div>\n"
end
filename_seg << @seg[:tail] << @seg[:nav] << @seg[:close]
- filename_seg.flatten!.compact!
+ filename_seg=filename_seg.flatten.compact #watch
filename_seg.each do |str|
unless str =~/\A\s*\Z/
- str.strip!
- @output_epub_cont_seg << str
+ @output_epub_cont_seg << str.strip
end
end
@output_epub_cont_seg.close
@@ -128,25 +122,25 @@ WOK
@@loop_count=@@seg_total=@@tracker=0
@@is4=@@is3=@@is2=@@is1=0
@@heading1=@@heading2=@@heading3=@@heading4=0
- @@seg[:title],@@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(8){[]}
+ @@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(7){[]}
@@seg[:heading_endnotes]=''
@@tablehead,@@number_of_cols=0,0
@@fns_previous=''
attr_reader :seg_name_xhtml,:seg_name_xhtml_tracker
def initialize(md='',data='')
@md,@data=md,data
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@seg_name_xhtml=@@seg_name_xhtml || nil
@seg_name_xhtml_tracker=@@tracker || nil
+ @make=SiSU_Env::ProcessingSettings.new(@md) if @md
end
def songsheet
begin
- @minitoc=SiSU_EPUB::Source::Toc.new(@md,@data).minitoc
data=get_subtoc_endnotes(@data)
data=articles(data)
- Seg.new.cleanup # (((( added ))))
+ SiSU_EPUB_Seg::Seg.new.cleanup # (((( added ))))
#### (((( END )))) ####
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
@@seg_name=[]
end
@@ -158,13 +152,13 @@ WOK
printed_endnote_seg='n'
idx_xhtml=nil
if @md.book_idx
- idx_xhtml=SiSU_Particulars::Combined_singleton.instance.get_idx_xhtml(@md).xhtml_idx
+ idx_xhtml=SiSU_Particulars::CombinedSingleton.instance.get_idx_xhtml(@md).xhtml_idx
idx_xhtml.each {|x| @@seg[:idx] << x }
@@seg[:heading_idx]=''
end
data.each do |dob|
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==4
@@seg_name << dob.name
seg_name=dob.name
@@ -174,7 +168,7 @@ WOK
@@seg_total=@@seg_name.length
testforartnum=@@seg_name_xhtml
SiSU_Screen::Ansi.new(@md.opt.cmd,@@seg_name.length) if @md.opt.cmd =~/[MVv]/
- map_nametags=SiSU_Particulars::Combined_singleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
+ map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
data.each do |dob|
#if defined? dob.obj \
#and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/
@@ -182,15 +176,15 @@ WOK
# #while dob.obj =~/href="#{Xx[:segment]}#+(\S+?)"/
# # m=$1
# # if map_nametags[m][:segname]
- # # dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#{map_nametags[m][:segname]}#{Sfx[:html]}#\\1"})
+ # # dob.obj=dob.obj.sub(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#{map_nametags[m][:segname]}#{Sfx[:html]}#\\1"})
# # else
# # p "NOT FOUND name_tags: #{m}"
- # # dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#\\1"}) # not satisfactory
+ # # dob.obj=dob.obj.sub(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#\\1"}) # not satisfactory
# # end
# #end
#end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==4
if dob.ocn==0
@@heading4=dob.obj
@@ -198,27 +192,27 @@ WOK
end
@@is4=newfile=1
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==3
@@heading3=dob.obj
@@is4,@@is3=0,1
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==2
@@heading2=dob.obj
@@is4,@@is3,@@is2=0,0,1
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==1
@@heading1=dob.obj
@@is4,@@is3,@@is2,@@is1=0,0,0,1
end
if (@@is1 && !@@is2 && !@@is3 && !@@is4)
- if not (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if not (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==1
head1=$_ #; check
end
@@ -228,36 +222,36 @@ WOK
if newfile==1 \
or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/
newfile=0
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==4
if tracking != 0
- Seg.new(@md).tail
+ SiSU_EPUB_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' \
+ if dob.is==:heading \
or @@seg_name_xhtml[tracking-1] !~/endnotes|book_index|metadata/
- Seg_output.new(@md,output_epub_cont_seg,@@seg,@minitoc).output
- elsif dob.is=='heading_insert'
+ SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg).output
+ elsif dob.is==:heading_insert
if @@seg_name_xhtml[tracking-1]=='endnotes'
- Seg_output.new(@md,output_epub_cont_seg,@@seg,@minitoc,'endnotes').output
+ SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'endnotes').output
elsif @@seg_name_xhtml[tracking-1]=='book_index'
- Seg_output.new(@md,output_epub_cont_seg,@@seg,@minitoc,'idx').output
+ SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'idx').output
@@seg[:idx]=[]
elsif @@seg_name_xhtml[tracking-1]=='metadata' # navigation bug FIX
- Seg_output.new(@md,output_epub_cont_seg,@@seg,@minitoc,'metadata').output
+ SiSU_EPUB_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'metadata').output
else puts "#{__FILE__}::#{__LINE__}"
end
else puts "#{__FILE__}::#{__LINE__}"
end
- Seg.new.reinitialise
+ SiSU_EPUB_Seg::Seg.new.reinitialise
heading_art(dob)
head(dob)
- if @@seg_name_xhtml[tracking]=='sisu_manifest' # this is for manifest, includes navigation bug
+ 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')
- Seg_output.new(@md,output_epub_cont_seg,@@seg,@minitoc,'sisu_manifest').output
- 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_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
end
#@output_epub_cont_seg.close #%(((( EOF )))) -->
end
@@ -268,8 +262,8 @@ WOK
end
tracking=tracking+1
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==4 \
and dob.name
@@get_hash_to=dob.name
@@ -292,8 +286,7 @@ WOK
data
end
def heading_art(dob)
- format_head_seg=SiSU_EPUB_Format::Head_seg.new(@md)
- @@seg[:title]=format_head_seg.head
+ @@seg[:title]=SiSU_EPUB_Format::HeadSeg.new(@md).head
end
def head(dob)
clean=/<!.*?!>|<:.*?>$/
@@ -306,65 +299,67 @@ WOK
ocn=if @@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: @@heading1, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading1.gsub(clean,'')
- @@heading1.gsub!(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
+ @@heading1=@@heading1.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
end
if @@is2==1
heading2=@@heading2
ocn=if heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading2.gsub(clean,'')
- @@heading2.gsub!(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
+ @@heading2=@@heading2.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
end
if @@is3==1
heading3=@@heading3
ocn=if heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading3.gsub(clean,'')
- @@heading3.gsub!(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
+ @@heading3=@@heading3.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
end
if @@is4==1
heading4=@@heading4
ocn=if heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading4.gsub(clean,'')
end
@@tracker=@@tracker+1
end
def markup(dob)
@debug=[]
- format_head_seg=SiSU_EPUB_Format::Head_seg.new(@md)
- if dob.is =~/(?:heading|para)/ #extend as necessary FIX
- @p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,dob.ocn)
+ if dob.is ==:heading \
+ || dob.is ==:heading_insert \
+ || dob.is ==:para
+ #extend as necessary FIX
+ @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,dob.ocn)
end
- sto=SiSU_EPUB_Format::Format_text_object.new(@md,dob)
- dob_xhtml=if dob.is=='heading' \
- or dob.is=='heading_insert' \
- or dob.is=='para'
- dob_xhtml=if dob.is=='heading' \
- or dob.is=='heading_insert'
+ sto=SiSU_EPUB_Format::FormatTextObject.new(@md,dob)
+ dob_xhtml=if dob.is==:heading \
+ || dob.is==:heading_insert \
+ || dob.is==:para
+ dob_xhtml=if dob.is==:heading \
+ or dob.is==:heading_insert
if dob.ln==4
- sto.seg_heading4 # work on see Split_text_object
+ sto.seg_heading4 # work on see SplitTextObject
elsif dob.ln==5
sto.seg_heading5
elsif dob.ln==6; sto.seg_heading6
end
- elsif dob.is=='para'
+ elsif dob.is==:para
if dob.indent \
and dob.hang \
and dob.indent =~/[0-9]/ \
@@ -382,43 +377,49 @@ WOK
else sto.para
end
end
- elsif dob.is =~/^(?:block|group|alt)$/
+ elsif dob.is ==:block \
+ || dob.is ==:group \
+ || dob.is ==:alt
sto.para #fix this should be block type specific #FIX
- elsif dob.is=='verse'
+ elsif dob.is==:verse
sto.verse
- elsif dob.is=='code'
+ elsif dob.is==:code
sto.code
- elsif dob.is=='table'
+ elsif dob.is==:table
sto.table
- elsif dob.is=='break'
+ elsif dob.is==:break
sto.break
end
if @md.flag_separate_endnotes # may need to revisit, check
- dob.obj.gsub!(/"\s+href="#note_ref(\d+)">/,%{" href=\"endnotes#{Sfx[:epub_xhtml]}#note_ref\\1">}) #endnote- twice #removed file type
+ dob.obj=dob.obj.gsub(/"\s+href="#note_ref(\d+)">/,%{" href=\"endnotes#{Sfx[:epub_xhtml]}#note_ref\\1">}) #endnote- twice #removed file type
end
- if dob.is =~/heading|para/ \
- and (not dob.ocn or dob.ocn.to_s.empty?)
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,dob)
+ if (dob.is ==:heading \
+ || 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)
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert' \
- || dob.is=='para') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert \
+ || dob.is==:para) \
and dob.note_ #dob.obj =~/<a href="#note_ref\d+">&nbsp;<sup id=/ #endnote- note-
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,dob)
+ format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,dob)
dob.obj=format_seg.no_paranum
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==4
@@seg[:main] << %{\n<div class="content">\n}
@@seg[:main] << dob_xhtml
- @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc
+ if @make.build.segsubtoc?
+ @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc
+ end
else
@@seg[:main] << dob_xhtml
end
end
def tail
- format_head_seg=SiSU_EPUB_Format::Head_seg.new(@md)
+ format_head_seg=SiSU_EPUB_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}
@@ -433,7 +434,7 @@ WOK
@@seg[:close] << format_head_seg.xhtml_close
end
def reinitialise
- @@seg[:title],@@seg[:headings],@@seg[:main],@@seg[:tail],@@seg[:credits]=Array.new(5){[]}
+ @@seg[:headings],@@seg[:main],@@seg[:tail],@@seg[:credits]=Array.new(4){[]}
end
def cleanup
reinitialise
@@ -444,10 +445,10 @@ WOK
end
def get_subtoc_endnotes(data) #get endnotes & sub-table of contents subtoc
data.each do |dob|
- dob.obj.gsub!(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
+ dob.obj=dob.obj.gsub(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
if @md.flag_auto_endnotes
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln.to_s =~/^[1234]/ \
and not @@fn.to_s.empty?
@@seg_endnotes[@@fn]=[]
@@ -455,8 +456,8 @@ WOK
@@seg_endnotes_array=[] if dob.ln==4
@@fns_previous=@md.fns if dob.ln==4 and dob.name =~/^meta/
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
and dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs
@@seg_subtoc[@@fn]=@@seg_subtoc_array
@@seg_subtoc_array=[]
@@ -470,14 +471,14 @@ WOK
end
end
end
- if dob.is=='heading' \
+ if dob.is==:heading \
and dob.ln.to_s =~/^[56]/
case dob.ln
when 5
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,dob)
+ format_seg=SiSU_EPUB_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::Format_seg.new(@md,dob)
+ format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,dob)
subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc
end
@@seg_subtoc_array << subtoc
@@ -485,7 +486,7 @@ WOK
if @md.flag_auto_endnotes
ast,pls='&#042;','&#043;'
if dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(?:\d|#{ast}|#{pls})+ / \
- and dob.is !~/^code/ # endnote-
+ and dob.is !=:code # endnote-
endnote_array=[]
if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
endnote_array << dob.obj.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m)
@@ -496,7 +497,7 @@ WOK
if dob.obj=~/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m
endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m)
end
- endnote_array.flatten! #.compact! #check compacting
+ endnote_array=endnote_array.flatten #.compact #check compacting
endnote_array.each do |note|
note_match=note.dup
note_match_seg=note.dup
@@ -504,7 +505,7 @@ WOK
try=e_n.split(/<br \/>/)
try.each do |e|
txt_obj={ txt: e }
- format_seg=SiSU_EPUB_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_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
@@ -517,11 +518,11 @@ 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::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_EPUB_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
- dob.obj.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
end
end
end
diff --git a/lib/sisu/v3/epub_tune.rb b/lib/sisu/v3/epub_tune.rb
index b348a7bf..34466926 100644
--- a/lib/sisu/v3/epub_tune.rb
+++ b/lib/sisu/v3/epub_tune.rb
@@ -76,7 +76,7 @@ module SiSU_EPUB_Tune
class Output
def initialize(data,md)
@data,@md=data,md
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
@cX=SiSU_Screen::Ansi.new(@md.opt.cmd).cX
end
def hard_output
@@ -91,7 +91,7 @@ module SiSU_EPUB_Tune
File.open(@file.marshal.html_tune,'w') {|f| Marshal.dump(@data.to_a,f)}
end
end
- class Clean_xhtml
+ class CleanXHTML
def initialize(html='')
@html=html
end
@@ -101,160 +101,151 @@ module SiSU_EPUB_Tune
html
else html.obj
end
- str.gsub!(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;')
- str.gsub!(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
- str.gsub!(/\*/u,'&#042;') # &#042;
- str.gsub!(/\+/u,'&#043;') # &#043;
- str.gsub!(/¢/u,'&cent;') # &#162;
- str.gsub!(/£/u,'&pound;') # &#163;
- str.gsub!(/¥/u,'&yen;') # &#165;
- str.gsub!(/§/u,'&sect;') # &#167;
- str.gsub!(/©/u,'&copy;') # &#169;
- str.gsub!(/ª/u,'&ordf;') # &#170;
- str.gsub!(/«/u,'&laquo;') # &#171;
- str.gsub!(/®/u,'&reg;') # &#174;
- str.gsub!(/°/u,'&deg;') # &#176;
- str.gsub!(/±/u,'&plusmn;') # &#177;
- str.gsub!(/²/u,'&sup2;') # &#178;
- str.gsub!(/³/u,'&sup3;') # &#179;
- str.gsub!(/µ/u,'&micro;') # &#181;
- str.gsub!(/¶/u,'&para;') # &#182;
- str.gsub!(/¹/u,'&sup1;') # &#185;
- str.gsub!(/º/u,'&ordm;') # &#186;
- str.gsub!(/»/u,'&raquo;') # &#187;
- str.gsub!(/¼/u,'&frac14;') # &#188;
- str.gsub!(/½/u,'&frac12;') # &#189;
- str.gsub!(/¾/u,'&frac34;') # &#190;
- str.gsub!(/×/u,'&times;') # &#215;
- str.gsub!(/÷/u,'&divide;') # &#247;
- str.gsub!(/¿/u,'&iquest;') # &#191;
- str.gsub!(/À/u,'&Agrave;') # &#192;
- str.gsub!(/Á/u,'&Aacute;') # &#193;
- str.gsub!(/Â/u,'&Acirc;') # &#194;
- str.gsub!(/Ã/u,'&Atilde;') # &#195;
- str.gsub!(/Ä/u,'&Auml;') # &#196;
- str.gsub!(/Å/u,'&Aring;') # &#197;
- str.gsub!(/Æ/u,'&AElig;') # &#198;
- str.gsub!(/Ç/u,'&Ccedil;') # &#199;
- str.gsub!(/È/u,'&Egrave;') # &#200;
- str.gsub!(/É/u,'&Eacute;') # &#201;
- str.gsub!(/Ê/u,'&Ecirc;') # &#202;
- str.gsub!(/Ë/u,'&Euml;') # &#203;
- str.gsub!(/Ì/u,'&Igrave;') # &#204;
- str.gsub!(/Í/u,'&Iacute;') # &#205;
- str.gsub!(/Î/u,'&Icirc;') # &#206;
- str.gsub!(/Ï/u,'&Iuml;') # &#207;
- str.gsub!(/Ð/u,'&ETH;') # &#208;
- str.gsub!(/Ñ/u,'&Ntilde;') # &#209;
- str.gsub!(/Ò/u,'&Ograve;') # &#210;
- str.gsub!(/Ó/u,'&Oacute;') # &#211;
- str.gsub!(/Ô/u,'&Ocirc;') # &#212;
- str.gsub!(/Õ/u,'&Otilde;') # &#213;
- str.gsub!(/Ö/u,'&Ouml;') # &#214;
- str.gsub!(/Ø/u,'&Oslash;') # &#216;
- str.gsub!(/Ù/u,'&Ugrave;') # &#217;
- str.gsub!(/Ú/u,'&Uacute;') # &#218;
- str.gsub!(/Û/u,'&Ucirc;') # &#219;
- str.gsub!(/Ü/u,'&Uuml;') # &#220;
- str.gsub!(/Ý/u,'&Yacute;') # &#221;
- str.gsub!(/Þ/u,'&THORN;') # &#222;
- str.gsub!(/ß/u,'&szlig;') # &#223;
- str.gsub!(/à/u,'&agrave;') # &#224;
- str.gsub!(/á/u,'&aacute;') # &#225;
- str.gsub!(/â/u,'&acirc;') # &#226;
- str.gsub!(/ã/u,'&atilde;') # &#227;
- str.gsub!(/ä/u,'&auml;') # &#228;
- str.gsub!(/å/u,'&aring;') # &#229;
- str.gsub!(/æ/u,'&aelig;') # &#230;
- str.gsub!(/ç/u,'&ccedil;') # &#231;
- str.gsub!(/è/u,'&egrave;') # &#232;
- str.gsub!(/é/u,'&eacute;') # &#233;
- str.gsub!(/ê/u,'&ecirc;') # &#234;
- str.gsub!(/ë/u,'&euml;') # &#235;
- str.gsub!(/ì/u,'&igrave;') # &#236;
- str.gsub!(/í/u,'&iacute;') # &#237;
- str.gsub!(/î/u,'&icirc;') # &#238;
- str.gsub!(/ï/u,'&iuml;') # &#239;
- str.gsub!(/ð/u,'&eth;') # &#240;
- str.gsub!(/ñ/u,'&ntilde;') # &#241;
- str.gsub!(/ò/u,'&ograve;') # &#242;
- str.gsub!(/ó/u,'&oacute;') # &#243;
- str.gsub!(/ô/u,'&ocirc;') # &#244;
- str.gsub!(/õ/u,'&otilde;') # &#245;
- str.gsub!(/ö/u,'&ouml;') # &#246;
- str.gsub!(/ø/u,'&oslash;') # &#248;
- str.gsub!(/ù/u,'&ugrave;') # &#250;
- str.gsub!(/ú/u,'&uacute;') # &#251;
- str.gsub!(/û/u,'&ucirc;') # &#252;
- str.gsub!(/ü/u,'&uuml;') # &#253;
- str.gsub!(/þ/u,'&thorn;') # &#254;
- str.gsub!(/ÿ/u,'&yuml;') # &#255;
- str.gsub!(/ý/u,'&yacute;')
- str.gsub!(/<br>/u,'<br />')
- str.gsub(/#{Mx[:nbsp]}/u,'&nbsp;')
- 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;').
+ gsub(/\*/u,'&#042;'). # &#042;
+ gsub(/\+/u,'&#043;'). # &#043;
+ gsub(/¢/u,'&cent;'). # &#162;
+ gsub(/£/u,'&pound;'). # &#163;
+ gsub(/¥/u,'&yen;'). # &#165;
+ gsub(/§/u,'&sect;'). # &#167;
+ gsub(/©/u,'&copy;'). # &#169;
+ gsub(/ª/u,'&ordf;'). # &#170;
+ gsub(/«/u,'&laquo;'). # &#171;
+ gsub(/®/u,'&reg;'). # &#174;
+ gsub(/°/u,'&deg;'). # &#176;
+ gsub(/±/u,'&plusmn;'). # &#177;
+ gsub(/²/u,'&sup2;'). # &#178;
+ gsub(/³/u,'&sup3;'). # &#179;
+ gsub(/µ/u,'&micro;'). # &#181;
+ gsub(/¶/u,'&para;'). # &#182;
+ gsub(/¹/u,'&sup1;'). # &#185;
+ gsub(/º/u,'&ordm;'). # &#186;
+ gsub(/»/u,'&raquo;'). # &#187;
+ gsub(/¼/u,'&frac14;'). # &#188;
+ gsub(/½/u,'&frac12;'). # &#189;
+ gsub(/¾/u,'&frac34;'). # &#190;
+ gsub(/×/u,'&times;'). # &#215;
+ gsub(/÷/u,'&divide;'). # &#247;
+ gsub(/¿/u,'&iquest;'). # &#191;
+ gsub(/À/u,'&Agrave;'). # &#192;
+ gsub(/Á/u,'&Aacute;'). # &#193;
+ gsub(/Â/u,'&Acirc;'). # &#194;
+ gsub(/Ã/u,'&Atilde;'). # &#195;
+ gsub(/Ä/u,'&Auml;'). # &#196;
+ gsub(/Å/u,'&Aring;'). # &#197;
+ gsub(/Æ/u,'&AElig;'). # &#198;
+ gsub(/Ç/u,'&Ccedil;'). # &#199;
+ gsub(/È/u,'&Egrave;'). # &#200;
+ gsub(/É/u,'&Eacute;'). # &#201;
+ gsub(/Ê/u,'&Ecirc;'). # &#202;
+ gsub(/Ë/u,'&Euml;'). # &#203;
+ gsub(/Ì/u,'&Igrave;'). # &#204;
+ gsub(/Í/u,'&Iacute;'). # &#205;
+ gsub(/Î/u,'&Icirc;'). # &#206;
+ gsub(/Ï/u,'&Iuml;'). # &#207;
+ gsub(/Ð/u,'&ETH;'). # &#208;
+ gsub(/Ñ/u,'&Ntilde;'). # &#209;
+ gsub(/Ò/u,'&Ograve;'). # &#210;
+ gsub(/Ó/u,'&Oacute;'). # &#211;
+ gsub(/Ô/u,'&Ocirc;'). # &#212;
+ gsub(/Õ/u,'&Otilde;'). # &#213;
+ gsub(/Ö/u,'&Ouml;'). # &#214;
+ gsub(/Ø/u,'&Oslash;'). # &#216;
+ gsub(/Ù/u,'&Ugrave;'). # &#217;
+ gsub(/Ú/u,'&Uacute;'). # &#218;
+ gsub(/Û/u,'&Ucirc;'). # &#219;
+ gsub(/Ü/u,'&Uuml;'). # &#220;
+ gsub(/Ý/u,'&Yacute;'). # &#221;
+ gsub(/Þ/u,'&THORN;'). # &#222;
+ gsub(/ß/u,'&szlig;'). # &#223;
+ gsub(/à/u,'&agrave;'). # &#224;
+ gsub(/á/u,'&aacute;'). # &#225;
+ gsub(/â/u,'&acirc;'). # &#226;
+ gsub(/ã/u,'&atilde;'). # &#227;
+ gsub(/ä/u,'&auml;'). # &#228;
+ gsub(/å/u,'&aring;'). # &#229;
+ gsub(/æ/u,'&aelig;'). # &#230;
+ gsub(/ç/u,'&ccedil;'). # &#231;
+ gsub(/è/u,'&egrave;'). # &#232;
+ gsub(/é/u,'&eacute;'). # &#233;
+ gsub(/ê/u,'&ecirc;'). # &#234;
+ gsub(/ë/u,'&euml;'). # &#235;
+ gsub(/ì/u,'&igrave;'). # &#236;
+ gsub(/í/u,'&iacute;'). # &#237;
+ gsub(/î/u,'&icirc;'). # &#238;
+ gsub(/ï/u,'&iuml;'). # &#239;
+ gsub(/ð/u,'&eth;'). # &#240;
+ gsub(/ñ/u,'&ntilde;'). # &#241;
+ gsub(/ò/u,'&ograve;'). # &#242;
+ gsub(/ó/u,'&oacute;'). # &#243;
+ gsub(/ô/u,'&ocirc;'). # &#244;
+ gsub(/õ/u,'&otilde;'). # &#245;
+ gsub(/ö/u,'&ouml;'). # &#246;
+ gsub(/ø/u,'&oslash;'). # &#248;
+ gsub(/ù/u,'&ugrave;'). # &#250;
+ gsub(/ú/u,'&uacute;'). # &#251;
+ gsub(/û/u,'&ucirc;'). # &#252;
+ gsub(/ü/u,'&uuml;'). # &#253;
+ gsub(/þ/u,'&thorn;'). # &#254;
+ gsub(/ÿ/u,'&yuml;'). # &#255;
+ gsub(/ý/u,'&yacute;').
+ gsub(/<br>/u,'<br />').
+ gsub(/#{Mx[:nbsp]}/u,'&nbsp;')
end
end
class Tune
def initialize(data,md)
@data,@md=data,md
- @vz=SiSU_Env::Get_init.instance.skin
- @env=SiSU_Env::Info_env.new(@md.fns)
- @sys=SiSU_Env::System_call.new
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ @sys=SiSU_Env::SystemCall.new
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@brace_url=SiSU_Viz::Skin.new.url_decoration
end
def songsheet
begin
@cX=SiSU_Screen::Ansi.new(@md.opt.cmd).cX
SiSU_Screen::Ansi.new(@md.opt.cmd,'Tune').txt_grey if @md.opt.cmd =~/[MVv]/
- data=Tune.new(@data,@md).amp_html
- data=Tune.new(data,@md).endnotes_html
- data=Tune.new(data,@md).url_markup
- data=Tune.new(data,@md).markup
+ data=SiSU_EPUB_Tune::Tune.new(@data,@md).amp_html
+ 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
if @md.opt.cmd =~/M/ #Hard Output Tune Optional on/off here
- data=Output.new(data,@md).hard_output
- Output.new(data,@md).marshal
+ data=SiSU_EPUB_Tune::Output.new(data,@md).hard_output
+ SiSU_EPUB_Tune::Output.new(data,@md).marshal
end
- tuned=Tune.new(@data,@md).output
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ tuned=SiSU_EPUB_Tune::Tune.new(@data,@md).output
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
- def para_numbers
- data=@data
- @tuned_file=[]
- data.each do |dob|
- dob.gsub!(/#{Mx[:lv_o]}\d:(\S?)#{Mx[:lv_c]}/,'\0#\1.&nbsp;') #fix Mx[:lv_o]
- @tuned_file << dob
- end
- end
def markup
@tuned_file=[]
@data.each do |dob|
- dob.obj.gsub!(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is=='table'
- dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>')
- dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>')
- dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
- dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>')
- dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>')
- dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>')
- dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>')
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
- dob.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>') # tt, kbd
- dob.obj.gsub!(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'')
- dob.obj.gsub!(/^#{Mx[:gl_bullet]}/m,'●&nbsp;&nbsp;')
- dob.obj.gsub!(/#{Mx[:nbsp]}/,'&nbsp;')
- dob.obj.gsub!(/<(p|br)>/,'<\1 />')
- dob=SiSU_EPUB_Tune::Clean_xhtml.new(dob).clean
+ dob.obj=dob.obj.gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
+ 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[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'').
+ gsub(/^#{Mx[:gl_bullet]}/m,'●&nbsp;&nbsp;').
+ gsub(/#{Mx[:nbsp]}/,'&nbsp;').
+ gsub(/<(p|br)>/,'<\1 />')
+ dob.obj=SiSU_EPUB_Tune::CleanXHTML.new(dob.obj).clean
@tuned_file << dob
end
end
def urls(data)
@words=[]
- map_nametags=SiSU_Particulars::Combined_singleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
+ map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
data.each do |word|
@words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
http_=true
@@ -280,29 +271,32 @@ module SiSU_EPUB_Tune
%{<a href="#{u}"><img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0" /></a>#{caption}}
else %{<img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0" />#{caption}}
end
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
+ word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
else
link=m[/(.+)/m]
png=m.scan(/\S+/)[0].strip
link=link.strip
- u.sub!(/^#*/,'') #make neater
+ u=u.sub(/^#*/,'') #make neater
if map_nametags[u] \
and map_nametags[u][:segname]
- if u=~/^\d+$/
- u.gsub!(/^(\d+)$/,"#{map_nametags[u][:segname]}#{Sfx[:xhtml]}#o\\1") if u !~/\// unless http_
- else
- u.gsub!(/(\S+)/,"#{map_nametags[u][:segname]}#{Sfx[:xhtml]}#\\1") if u !~/\// unless http_
+ u=unless http_
+ u=if u=~/^\d+$/
+ u.gsub(/^(\d+)$/,"#{map_nametags[u][:segname]}#{Sfx[:xhtml]}#o\\1") if u !~/\//
+ else
+ u.gsub(/(\S+)/,"#{map_nametags[u][:segname]}#{Sfx[:xhtml]}#\\1") if u !~/\//
+ end
+ else u
end
elsif u =~/^:/
- u.gsub!(/^:/,"#{@env.url.root}/")
+ u=u.gsub(/^:/,"#{@env.url.root}/")
elsif u =~/^\.\.\//
- u.gsub!(/^\.\.\//,"#{@env.url.root}/")
+ u=u.gsub(/^\.\.\//,"#{@env.url.root}/")
elsif u =~/https?:\/\//
else p "NOT FOUND name_tags: #{u}"
end
ins=%{<a href="#{u}">#{link}</a>}
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins)
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
+ word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins).
+ gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
end
word
else word
@@ -315,58 +309,59 @@ module SiSU_EPUB_Tune
data=@data
@tuned_file=[]
data.each do |dob|
- unless dob.is=='code'
+ unless dob.is==:code
if dob.obj =~/<::\s+/ #watch
- dob.obj.gsub!(/<::\s+(\S+?)\s+!>/,
+ dob.obj=dob.obj.gsub(/<::\s+(\S+?)\s+!>/,
%{<img src="#{@env.url.images_epub}/c_\\1.png" alt="\\1" width="14" height="14" align="bottom" border="0" />})
end
if dob.obj =~/<:image\s+/
- dob.obj.gsub!(/<:image\s+(http\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+>/,
- %{<a href="\\1"><img src="#{@env.url.images_epub}/\\2" \\3 \\4 naturalsizeflag="0" align="bottom" border="0" /></a>})
- dob.obj.gsub!(/<:image\s+(http\S+)\s+(\S+)\s+>/,
- %{<a href="\\1"><img src="#{@env.url.images_epub}/\\2" naturalsizeflag="0" align="bottom" border="0" /></a>})
- dob.obj.gsub!(/<:image\s+(\S+)\s+(\S+)\s+(\S+)\s+>/,
- %{<img src="#{@env.url.images_epub}/\\1" \\2 \\3 naturalsizeflag="0" align="bottom" border="0" />})
- dob.obj.gsub!(/<:image\s+(\S+)\s+>/,
- %{<img src="#{@env.url.images_epub}/\\1" naturalsizeflag="0" align="bottom" border="0" />})
+ dob.obj=dob.obj.gsub(/<:image\s+(http\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+>/,
+ %{<a href="\\1"><img src="#{@env.url.images_epub}/\\2" \\3 \\4 naturalsizeflag="0" align="bottom" border="0" /></a>}).
+ gsub(/<:image\s+(http\S+)\s+(\S+)\s+>/,
+ %{<a href="\\1"><img src="#{@env.url.images_epub}/\\2" naturalsizeflag="0" align="bottom" border="0" /></a>}).
+ gsub(/<:image\s+(\S+)\s+(\S+)\s+(\S+)\s+>/,
+ %{<img src="#{@env.url.images_epub}/\\1" \\2 \\3 naturalsizeflag="0" align="bottom" border="0" />}).
+ gsub(/<:image\s+(\S+)\s+>/,
+ %{<img src="#{@env.url.images_epub}/\\1" naturalsizeflag="0" align="bottom" border="0" />})
end
if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
@word_mode=dob.obj.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)[()\[\]]*[,.;:!?'"]{0,2}|(?:#{Mx[:gl_o]}\S+?#{Mx[:gl_c]})+|[^#{Mx[:lnk_o]}#{Mx[:lnk_c]}]+/mu)
words=urls(@word_mode)
- dob.obj.gsub!(/.+/m,words)
+ dob.obj=dob.obj.gsub(/.+/m,words)
end
- dob.obj.gsub!(/\\copyright/i,%{<sup>&copy;</sup>})
- if (dob.obj !~/\<:ad\s+\.\.\//)
- dob.obj.gsub!(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*!\>/,
+ dob.obj=dob.obj.gsub(/\\copyright/i,%{<sup>&copy;</sup>})
+ dob.obj=if (dob.obj !~/\<:ad\s+\.\.\//)
+ dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*!\>/,
%{\n<center><a href="http:\/\/\\1" target="external"><img src="#{@env.url.images_epub}/\\2" alt="\\3" /></a></center>\n})
else
- dob.obj.gsub!(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*\>/,
+ dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*\>/,
%{\n<center><a href="\\1" target="_top"><img src="#{@env.url.images_epub}/\\2" alt="\\3" /></a></center>\n})
end
- dob.obj.gsub!(/!pick/,%{<img border="0" height="15" width="15" src="#{@env.url.images_epub}/#{@vz.icon_choice}" alt="stellar" />})
- dob.obj.gsub!(/!new/,%{&nbsp;<img border="0" height="15" width="15" src="#{@env.url.images_epub}/#{@vz.icon_new}" alt="new" />})
- dob.obj.gsub!(/<:h(.{1,7}?)>/,'<a href="#h\1">\1</a>')
- dob.obj.gsub!(/<:to(\d{1,7}?)>/,'<a href="#to\1">to&nbsp;{&nbsp;\1&nbsp;}</a> ')
- dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>') #http ftp matches escaped, no decoration
- dob.obj.gsub!(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="mailto:\\1">\\1</a>#{@brace_url.xml_close}})
- dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
+ dob.obj=dob.obj.gsub(/!pick/,%{<img border="0" height="15" width="15" src="#{@env.url.images_epub}/#{@vz.icon_choice}" alt="stellar" />}).
+ gsub(/!new/,%{&nbsp;<img border="0" height="15" width="15" src="#{@env.url.images_epub}/#{@vz.icon_new}" alt="new" />}).
+ gsub(/<:h(.{1,7}?)>/,'<a href="#h\1">\1</a>').
+ gsub(/<:to(\d{1,7}?)>/,'<a href="#to\1">to&nbsp;{&nbsp;\1&nbsp;}</a> ').
+ gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</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}<a href="mailto:\\1">\\1</a>#{@brace_url.xml_close}}).
+ gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
if dob.obj =~/..\/\S+/ \
and dob.obj !~/(\"..\/\S+?\"|>\s*..\/\S+<)/
- dob.obj.gsub!(/(\.\.\/\S+)/,'<a href="\1">\1</a>')
+ dob.obj=dob.obj.gsub(/(\.\.\/\S+)/,'<a href="\1">\1</a>')
end
- dob.obj.gsub!(/<a href="\.\.\//,%{<a href="#{@vz.url_site}/})
+ dob.obj=dob.obj.gsub(/<a href="\.\.\//,%{<a href="#{@vz.url_site}/})
else
- dob.obj.gsub!(/</m,'&lt;'); dob.obj.gsub!(/>/m,'&gt;')
+ dob.obj=dob.obj.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
end
@tuned_file << dob
end
end
def amp_html
- data=@data
+ data,data_new=@data,[]
data.each do |dob|
- dob.obj.gsub!(/&/u,'&amp;')
+ dob.obj=dob.obj.gsub(/&/u,'&amp;')
+ data_new << dob
end
- data
+ data_new
end
def endnotes_html
data=@data
@@ -374,24 +369,24 @@ module SiSU_EPUB_Tune
a,s='_a','_s'
ast,pls='&#042;','&#043;'
data.each do |dob|
- unless dob.is =~/^code/
- dob.obj.gsub!(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note\\2">#{Mx[:nbsp]}<sup id="note_ref\\2">\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1\\2 <a href="#note_ref\\2">#{Mx[:nbsp]}<sup id="note\\2">\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched)
- dob.obj.gsub!(/(#{Mx[:en_b_o]})[*](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_astx\\2">#{Mx[:nbsp]}<sup id="note_ref_astx\\2">#{ast}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast}\\2 <a href="#note_ref_astx\\2">#{Mx[:nbsp]}<sup id="note_astx\\2">#{ast}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched)
- dob.obj.gsub!(/(#{Mx[:en_b_o]})[+](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_plus\\2">#{Mx[:nbsp]}<sup id="note_ref_plus\\2">#{pls}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls}\\2 <a href="#note_ref_plus\\2">#{Mx[:nbsp]}<sup id="note_plus\\2">#{pls}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched) # double-check there may here be a bug
+ unless dob.is ==:code
+ dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
+ %{#{Mx[:nbsp]}<a href="#note\\2">#{Mx[:nbsp]}<sup id="note_ref\\2">\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1\\2 <a href="#note_ref\\2">#{Mx[:nbsp]}<sup id="note\\2">\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
+ gsub(/(#{Mx[:en_b_o]})[*](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
+ %{#{Mx[:nbsp]}<a href="#note_astx\\2">#{Mx[:nbsp]}<sup id="note_ref_astx\\2">#{ast}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{ast}\\2 <a href="#note_ref_astx\\2">#{Mx[:nbsp]}<sup id="note_astx\\2">#{ast}\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
+ gsub(/(#{Mx[:en_b_o]})[+](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
+ %{#{Mx[:nbsp]}<a href="#note_plus\\2">#{Mx[:nbsp]}<sup id="note_ref_plus\\2">#{pls}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{pls}\\2 <a href="#note_ref_plus\\2">#{Mx[:nbsp]}<sup id="note_plus\\2">#{pls}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched) # double-check there may here be a bug
if dob.obj =~/#{Mx[:en_a_o]}([*+]+)\s+.+?#{Mx[:en_a_c]}/
m=$1.length.to_i
- dob.obj.gsub!(/(#{Mx[:en_a_o]})[*]+\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{a*m}">#{Mx[:nbsp]}<sup id="note_ref#{a*m}">#{ast*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast*m} <a href="#note_ref#{a*m}">#{Mx[:nbsp]}<sup id="note#{a*m}">#{ast*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
- dob.obj.gsub!(/(#{Mx[:en_a_o]})([+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{s*m}">#{Mx[:nbsp]}<sup id="note_ref#{s*m}">#{pls*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls*m} <a href="#note_ref#{s*m}">#{Mx[:nbsp]}<sup id="note#{s*m}">#{pls*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
+ dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]})[*]+\s+(.+?)(#{Mx[:en_a_c]})/,
+ %{#{Mx[:nbsp]}<a href="#note#{a*m}">#{Mx[:nbsp]}<sup id="note_ref#{a*m}">#{ast*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{ast*m} <a href="#note_ref#{a*m}">#{Mx[:nbsp]}<sup id="note#{a*m}">#{ast*m}</sup></a> \\2 \\3}). #endnote- note- (careful may have switched)
+ gsub(/(#{Mx[:en_a_o]})([+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
+ %{#{Mx[:nbsp]}<a href="#note#{s*m}">#{Mx[:nbsp]}<sup id="note_ref#{s*m}">#{pls*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{pls*m} <a href="#note_ref#{s*m}">#{Mx[:nbsp]}<sup id="note#{s*m}">#{pls*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
end
end
@tuned_file << dob
@@ -401,8 +396,7 @@ module SiSU_EPUB_Tune
data=@data
@tuned_file=[]
data.each do |dob|
- dob.obj.strip!
- dob.obj.chomp!
+ dob.obj=dob.obj.strip.chomp
@tuned_file << dob
end
@tuned_file << "\n<EOF>" if (@md.fns =~/\.sst0/) #remove
diff --git a/lib/sisu/v3/errors.rb b/lib/sisu/v3/errors.rb
index 70ab4666..25ef688c 100644
--- a/lib/sisu/v3/errors.rb
+++ b/lib/sisu/v3/errors.rb
@@ -59,7 +59,7 @@
module SiSU_Errors
require_relative 'sysenv' # sysenv.rb
include SiSU_Env; include SiSU_Screen
- class Info_error <Create_file
+ class InfoError <CreateFile
def initialize(error,errorlist,cmd,fns='')
@fns,@cmd,@error,@errorlist=fns,cmd,error,errorlist
@cmd=if cmd and cmd =~/c/; 'Vc'
@@ -67,7 +67,7 @@ module SiSU_Errors
end
end
def error #creates file errorlog.sisu in pwd of last error reported
- file=if @fns; SiSU_Env::Create_file.new(@fns).file_error
+ file=if @fns; SiSU_Env::CreateFile.new(@fns).file_error
else File.new('/tmp/errorlog.sisu','w+')
end
file << @fns << "\n" << @error << "\n" << @errorlist
diff --git a/lib/sisu/v3/git.rb b/lib/sisu/v3/git.rb
index 148b35fc..82700d9c 100644
--- a/lib/sisu/v3/git.rb
+++ b/lib/sisu/v3/git.rb
@@ -63,10 +63,10 @@ module SiSU_Git
class Source
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
@md=SiSU_Param::Parameters.new(@opt).get
- @file=SiSU_Env::SiSU_file.new(@md)
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ @file=SiSU_Env::FileOp.new(@md)
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
unless @opt.lng==l[:c] # @md.i18n[0]==l[:c]
p "using: #{@opt.lng} (@make: :language:); filename #{@md.fns} filename language: #{l[:c]}, mismatch"
end
@@ -197,7 +197,7 @@ module SiSU_Git
end
end
def locate_skin
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
end
def read_composite
#print __FILE__ + ':'
diff --git a/lib/sisu/v3/harvest.rb b/lib/sisu/v3/harvest.rb
index b8b82524..71adb0f0 100644
--- a/lib/sisu/v3/harvest.rb
+++ b/lib/sisu/v3/harvest.rb
@@ -68,7 +68,7 @@ module SiSU_Harvest
include SiSU_Env
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def read
harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}"
@@ -78,13 +78,13 @@ module SiSU_Harvest
def help
puts <<WOK
harvest --harvest extracts document index metadata
-
+
WOK
end
def css(opt)
require_relative 'css' # css.rb
css=SiSU_Style::CSS.new
- fn_css=SiSU_Env::CSS_default.new
+ fn_css=SiSU_Env::CSS_Default.new
style=File.new("#{@env.path.pwd}/#{fn_css.harvest}",'w')
style << css.harvest
style.close
@@ -93,8 +93,8 @@ WOK
case opt.mod.inspect
when/--harvest/i
css(opt) if opt.cmd.inspect =~/M/
- HARVEST_authors::Songsheet.new(opt,env).songsheet
- HARVEST_topics::Songsheet.new(opt,env).songsheet
+ SiSU_Harvest_Authors::Songsheet.new(opt,env).songsheet
+ SiSU_Harvest_Topics::Songsheet.new(opt,env).songsheet
if opt.cmd.inspect =~/R/
require_relative 'remote' # remote.rb
SiSU_Remote::Put.new(opt).rsync_harvest
diff --git a/lib/sisu/v3/harvest_authors.rb b/lib/sisu/v3/harvest_authors.rb
index 996b748c..5bb702be 100644
--- a/lib/sisu/v3/harvest_authors.rb
+++ b/lib/sisu/v3/harvest_authors.rb
@@ -57,7 +57,7 @@
** Description: simple xml representation (sax style)
=end
-module HARVEST_authors
+module SiSU_Harvest_Authors
require_relative 'author_format' # author_format.rb
class Songsheet
@@the_idx_authors={}
@@ -70,8 +70,8 @@ module HARVEST_authors
idx_array={}
@opt.f_pths.each do |y|
lang_hash_file_array={}
- name=y[:f]
- filename=y[:pth] + '/' + y[:f]
+ name=y[:f]
+ filename=y[:pth] + '/' + y[:f]
File.open(filename,'r') do |file|
file.each_line("\n\n") do |line|
if line =~/^@(?:title|creator|date):(?:\s|$)/m
@@ -85,11 +85,11 @@ module HARVEST_authors
end
lang_hash_file_array.each_pair do |lang,a|
idx_array[lang] ||= []
- idx_array=HARVEST_authors::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest
+ idx_array=SiSU_Harvest_Authors::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest
end
end
- the_idx=HARVEST_authors::Index.new(idx_array,@@the_idx_authors).construct_book_author_index
- HARVEST_authors::Output_index.new(@opt,the_idx).html_print.html_songsheet
+ the_idx=SiSU_Harvest_Authors::Index.new(idx_array,@@the_idx_authors).construct_book_author_index
+ SiSU_Harvest_Authors::OutputIndex.new(@opt,the_idx).html_print.html_songsheet
end
end
class Harvest
@@ -123,7 +123,7 @@ module HARVEST_authors
@fulltitle=@subtitle ? (@title + ' - ' + @subtitle) : @title
if @title \
and @author_format
- creator=FORMAT::Author.new(@author_format.strip).author_details
+ creator=SiSU_FormatAuthor::Author.new(@author_format.strip).author_details
@authors,@authorship=creator[:authors],creator[:authorship]
file=if name=~/~[a-z]{2,3}\.ss[mt]$/
name.sub(/~[a-z]{2,3}\.ss[mt]$/,'')
@@ -139,7 +139,7 @@ module HARVEST_authors
else
#p "missing author field: #{@filename} title: #{@title}; author: #{@author_format}"
end
- idx_array[lang].flatten!
+ idx_array[lang]=idx_array[lang].flatten
idx_array
end
end
@@ -157,7 +157,7 @@ module HARVEST_authors
@@the_idx_authors[lang] ||= {}
idx_array.each do |idx|
idx[:author][:last_first_format_a].each do |author|
- author.strip!
+ author=author.strip
if @@the_idx_authors[lang][author].class==NilClass
@@the_idx_authors[lang][author]={ md: [] }
end
@@ -168,15 +168,15 @@ module HARVEST_authors
@the_idx=@@the_idx_authors
end
end
- class Output_index
+ class OutputIndex
require_relative 'i18n' # i18n.rb
def initialize(opt,the_idx)
@opt,@the_idx=opt,the_idx
- @env=SiSU_Env::Info_env.new
- @rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
+ @env=SiSU_Env::InfoEnv.new
+ @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
@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]
@letter=@alph.shift
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def html_file_open
@the_idx.keys.each do |lng|
@@ -241,7 +241,7 @@ module HARVEST_authors
l=ln[lng][:t]
harvest_languages += %{<a href="#{file}">#{l}</a>&nbsp;&nbsp;&nbsp;}
end
- sv=SiSU_Env::Info_version.instance.get_version
+ sv=SiSU_Env::InfoVersion.instance.get_version
<<WOK
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/lib/sisu/v3/harvest_topics.rb b/lib/sisu/v3/harvest_topics.rb
index de03b615..dd7ec8c2 100644
--- a/lib/sisu/v3/harvest_topics.rb
+++ b/lib/sisu/v3/harvest_topics.rb
@@ -58,7 +58,7 @@
** Description: simple xml representation (sax style)
=end
-module HARVEST_topics
+module SiSU_Harvest_Topics
require_relative 'author_format' # author_format.rb
include SiSU_Viz
class Songsheet
@@ -72,8 +72,8 @@ module HARVEST_topics
idx_array={}
@opt.f_pths.each do |y|
lang_hash_file_array={}
- name=y[:f]
- filename=y[:pth] + '/' + y[:f]
+ name=y[:f]
+ filename=y[:pth] + '/' + y[:f]
File.open(filename,'r') do |file|
file.each_line("\n\n") do |line|
if line =~/^@(?:title|creator|classify):(?:\s|$)/m
@@ -87,11 +87,11 @@ module HARVEST_topics
end
lang_hash_file_array.each_pair do |lang,a|
idx_array[lang] ||= []
- idx_array=HARVEST_topics::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest
+ idx_array=SiSU_Harvest_Topics::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest
end
end
- the_idx=HARVEST_topics::Index.new(@opt,@env,idx_array,@@the_idx_topics).construct_book_topic_index
- HARVEST_topics::Output_index.new(@opt,the_idx).html_print.html_songsheet
+ the_idx=SiSU_Harvest_Topics::Index.new(@opt,@env,idx_array,@@the_idx_topics).construct_book_topic_index
+ SiSU_Harvest_Topics::OutputIndex.new(@opt,the_idx).html_print.html_songsheet
end
end
class Harvest
@@ -125,7 +125,7 @@ module HARVEST_topics
if @title \
and @author_format \
and @idx_list
- creator=FORMAT::Author.new(@author_format.strip).author_details
+ creator=SiSU_FormatAuthor::Author.new(@author_format.strip).author_details
@authors,@authorship=creator[:authors],creator[:authorship]
file=if name=~/~[a-z]{2,3}\.ss[mt]$/
name.sub(/~[a-z]{2,3}\.ss[mt]$/,'')
@@ -144,7 +144,7 @@ module HARVEST_topics
g=@idx_list.scan(/[^;]+/)
idxl=[]
g.each do |i|
- i.strip!
+ i=i.strip
idxl << { filename: filename, file: file, rough_idx: i, title: @fulltitle, author: creator, page: page, lang: lang }
end
idxl
@@ -153,7 +153,7 @@ module HARVEST_topics
else
p "missing required field in #{@filename} - [title]: <<#{@title}>>; [author]: <<#{@author_format}>>; [idx]: <<#{@idx_list}>>" if @opt.cmd.inspect =~/[VM]/
end
- idx_array[lang].flatten!
+ idx_array[lang]=idx_array[lang].flatten
idx_array
end
end
@@ -259,15 +259,15 @@ module HARVEST_topics
@the_idx
end
end
- class Output_index
+ class OutputIndex
require_relative 'i18n' # i18n.rb
def initialize(opt,the_idx)
@opt,@the_idx=opt,the_idx
- @env=SiSU_Env::Info_env.new
- @rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
+ @env=SiSU_Env::InfoEnv.new
+ @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
@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]
@letter=@alph.shift
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def html_file_open
@the_idx.keys.each do |lng|
@@ -335,7 +335,7 @@ module HARVEST_topics
l=ln[lng][:t]
harvest_languages += %{<a href="#{file}">#{l}</a>&nbsp;&nbsp;&nbsp;}
end
- sv=SiSU_Env::Info_version.instance.get_version
+ sv=SiSU_Env::InfoVersion.instance.get_version
<<WOK
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/lib/sisu/v3/help.rb b/lib/sisu/v3/help.rb
index 9dc26aec..35a96170 100644
--- a/lib/sisu/v3/help.rb
+++ b/lib/sisu/v3/help.rb
@@ -68,8 +68,8 @@ module SiSU_Help
else @cX=SiSU_Screen::Ansi.new('yes').cX
end
fns='help_example_dummy_file_name.sst'
- @env=SiSU_Env::Info_env.new(fns)
- @db=SiSU_Env::Info_db.new
+ @env=SiSU_Env::InfoEnv.new(fns)
+ @db=SiSU_Env::InfoDb.new
m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
@output_stub=Dir.pwd[m,1]
end
@@ -337,7 +337,7 @@ WOK
WOK
end
def shortcuts
- cf_defaults=SiSU_Env::Info_processing_flag.new
+ cf_defaults=SiSU_Env::InfoProcessingFlag.new
print <<WOK
#{@cX.ruby}Shorthand for multiple flags#{@cX.off}
@@ -898,14 +898,14 @@ WOK
end
def program_found?(program)
if program
- rc=if SiSU_Env::Info_settings.new.program?(program)
- SiSU_Env::Info_settings.new.program?(program)
+ rc=if SiSU_Env::InfoSettings.new.program?(program)
+ SiSU_Env::InfoSettings.new.program?(program)
else ''
end
if program =='rmagick'; program='identify' #rmagick is ruby lib uses imagemagick's identify
end
- bin=if SiSU_Env::System_call.new.program_found?(program)
- SiSU_Env::System_call.new.program_found?(program)
+ bin=if SiSU_Env::SystemCall.new.program_found?(program)
+ SiSU_Env::SystemCall.new.program_found?(program)
else 'false'
end
else bin,rc='false','false'
@@ -915,8 +915,8 @@ WOK
end
end
def sisu_version
- version=SiSU_Env::Info_version.instance.get_version
- rb_ver=SiSU_Env::Info_version.instance.rbversion
+ version=SiSU_Env::InfoVersion.instance.get_version
+ rb_ver=SiSU_Env::InfoVersion.instance.rbversion
if version[:version]
SiSU_Screen::Ansi.new('-v',version[:project],version[:version],version[:date_stamp],version[:date],rb_ver).version
else puts 'SiSU version information not available'
@@ -924,7 +924,7 @@ WOK
end
def rhost
@ls=leading_spaces=' '*49
- @rhost=SiSU_Env::Info_remote_host.new.rhost
+ @rhost=SiSU_Env::InfoRemoteHost.new.rhost
def r1
if @rhost.r1; @rhost.r1 + "\n"
else ''
@@ -964,7 +964,7 @@ WOK
self
end
def environment
- cf_defaults=SiSU_Env::Info_processing_flag.new
+ cf_defaults=SiSU_Env::InfoProcessingFlag.new
sisu_version
x =<<WOK
#{@cX.green}current and output directories#{@cX.off}
@@ -1023,8 +1023,8 @@ WOK
sisu -5 #{@cX.blue}#{cf_defaults.cf_5}#{@cX.off}
(defaults may be changed in active sisurc.yml file under flag:)
#{@cX.green}special powers, risky operations set:#{@cX.off}
- zap (delete output directories) #{@cX.blue}#{SiSU_Env::Info_settings.new.permission?('zap')}#{@cX.off}
- css copy (copy over css files) #{@cX.blue}#{SiSU_Env::Info_settings.new.permission?('css_modify')}#{@cX.off}
+ zap (delete output directories) #{@cX.blue}#{SiSU_Env::InfoSettings.new.permission?('zap')}#{@cX.off}
+ css copy (copy over css files) #{@cX.blue}#{SiSU_Env::InfoSettings.new.permission?('css_modify')}#{@cX.off}
(true/false defaults may be changed in active sisurc.yml file under permissions_set:)
NOTE: for HELP type 'sisu --help', 'sisu --help [help request]', 'man sisu', (or see the system or online documentation)
diff --git a/lib/sisu/v3/html.rb b/lib/sisu/v3/html.rb
index 85c1d602..fee51f2c 100644
--- a/lib/sisu/v3/html.rb
+++ b/lib/sisu/v3/html.rb
@@ -66,16 +66,16 @@ module SiSU_HTML
require_relative 'html_format' # html_format.rb
include SiSU_HTML_Format
require_relative 'html_segments' # html_segments.rb
- include SiSU_HTML_seg
+ include SiSU_HTML_Seg
require_relative 'html_scroll' # html_scroll.rb
require_relative 'html_promo' # html_promo.rb
- include SiSU_HTML_promo
+ include SiSU_HTML_Promo
require_relative 'html_tune' # html_tune.rb
include SiSU_HTML_Tune
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
songsheet
@@ -95,21 +95,21 @@ module SiSU_HTML
: SiSU_Screen::Ansi.new(@opt.cmd,'HTML',tool).green_title_hi
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_segtoc}").flow if @opt.cmd =~/[MV]/
end
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
data=nil
- @tuned_file_array=SiSU_HTML::Source::Html_environment.new(@particulars).tuned_file_instructions
+ @tuned_file_array=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
data=@tuned_file_array
scr_endnotes=SiSU_HTML::Source::Endnotes.new(data,@md).scroll
toc=SiSU_HTML::Source::Toc.new(@md,data).songsheet
- links_guide=SiSU_HTML::Source::Links_guide.new(data,@md).toc
+ links_guide=SiSU_HTML::Source::LinksGuide.new(data,@md).toc
data=@tuned_file_array
- scr_toc=SiSU_HTML::Source::Scroll_head_and_segtoc.new(@md,toc,links_guide).in_common #watch
+ scr_toc=SiSU_HTML::Source::ScrollHeadAndSegToc.new(@md,toc,links_guide).in_common #watch
SiSU_HTML::Source::Seg.new(@md,data).songsheet
data=@tuned_file_array
scr=SiSU_HTML::Source::Scroll.new(@md,data,scr_endnotes).songsheet
- scroll=SiSU_HTML::Source::Scroll_output.new(scr_toc,scr[:body],scr[:metadata],scr[:owner_details],scr[:tails],@md).publish
+ scroll=SiSU_HTML::Source::ScrollOutput.new(scr_toc,scr[:body],scr[:metadata],scr[:owner_details],scr[:tails],@md).publish
SiSU_HTML::Source::Output.new(scroll,@md).scroll
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
unless @opt.cmd =~/[MV]/ #check maintenance flag
texfiles=Dir["#{@env.processing_path.tune}/#{@opt.fns}*"]
@@ -128,40 +128,36 @@ module SiSU_HTML
end
end
private
- class Html_environment
+ class HTML_Environment
def initialize(particulars)
@particulars=particulars
@md,@env=particulars.md,particulars.env
- @vz=SiSU_Env::Get_init.instance.skin
- @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::Create_system_link.new #home
+ @vz=SiSU_Env::GetInit.instance.skin
+ @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::CreateSystemLink.new #home
end
def link_images
@symlnk.images
end
- def directories
- title=File.basename(@md.fns,'.rb')
- end
def tuned_file_instructions
@tell=SiSU_Screen::Ansi.new(@md.opt.cmd)
@md.opt.cmd=@md.opt.cmd.gsub(/H/,'h')
- @md.file_type='html' if @md.opt.cmd =~/[hon]/
- directories
+ @md.file_type='html' if @md.opt.cmd =~/[hw]/
newfilename=%{#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_segtoc}} if @md.file_type =~/html/
dal_array=@particulars.dal_array # dal file drawn here
@tuned_file_array=SiSU_HTML_Tune::Tune.new(dal_array,@md).songsheet
@tuned_file_array
end
end
- class Links_guide
+ class LinksGuide
@links_guide_toc=[]
def initialize(data,md)
@data,@md=data,md
- @links_guide_=SiSU_Env::Create_site.new(@md.opt.cmd).html_quick_ref?
+ @links_guide_=SiSU_Env::CreateSite.new(@md.opt.cmd).html_quick_ref?
end
def toc
@links_guide_toc=[]
if @links_guide_
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
guide_type='horzontal' #values: horizontal or vertical
@links_guide_toc << format_head_toc.links_guide_open(guide_type)
if defined? @md.lnk \
@@ -173,12 +169,12 @@ module SiSU_HTML
end
s_lnk_url,s_lnk_lnk=l[:url],l[:say]
txt_obj={ lnk_url: s_lnk_url, lnk_txt: s_lnk_lnk, target: target }
- lev_dob_ocn=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ lev_dob_ocn=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
@links_guide_toc << lev_dob_ocn.links_guide if s_lnk_lnk
end
end
end
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
@links_guide_toc << format_head_toc.links_guide_close #(guide_type)
@links_guide_toc
else ''
@@ -192,10 +188,10 @@ module SiSU_HTML
end
def scroll
@scr_endnotes=[]
- format_head_scroll=SiSU_HTML_Format::Head_scroll.new(@md)
+ format_head_scroll=SiSU_HTML_Format::HeadScroll.new(@md)
@data.each do |dob|
pg=dob.dup
- unless pg.is =~/^code/
+ unless pg.is ==:code
if pg.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ /
endnote_array=[]
if pg.obj=~/#{Mx[:en_a_o]}[\d*+].+?#{Mx[:en_a_c]}/m
@@ -209,7 +205,7 @@ module SiSU_HTML
end
endnote_array.flatten.each do |note|
txt_obj={ txt: note }
- format_scroll=SiSU_HTML_Format::Format_scroll.new(@md,txt_obj)
+ format_scroll=SiSU_HTML_Format::FormatScroll.new(@md,txt_obj)
@scr_endnotes << format_scroll.endnote_body
end
end
@@ -218,13 +214,13 @@ module SiSU_HTML
@scr_endnotes
end
end
- class Toc <Links_guide
+ class Toc <LinksGuide
@@toc={ seg: [], seg_mini: [], scr: [] }
@@seg_url=''
@@firstseg=nil
def initialize(md=nil,data='')
@data,@md=data,md
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@tell=SiSU_Screen::Ansi.new(@md.opt.cmd) if @md
end
def songsheet #extracts toc for scroll & seg
@@ -233,18 +229,18 @@ module SiSU_HTML
@@firstseg=nil
@@toc={ seg: [], seg_mini: [], scr: [] }
@data.each do |dob|
- if dob.is=='heading' \
- or dob.is=='heading_insert'
+ if dob.is==:heading \
+ || dob.is==:heading_insert
dob_toc=dob.dup
- toc=if dob_toc.is =='heading' \
- or dob.is=='heading_insert'
+ toc=if dob_toc.is ==:heading \
+ || dob.is==:heading_insert
toc=case dob_toc.ln
- when 1; Toc.new(@md,dob_toc).level_1
- when 2; Toc.new(@md,dob_toc).level_2
- when 3; Toc.new(@md,dob_toc).level_3
- when 4; Toc.new(@md,dob_toc).level_4
- when 5; Toc.new(@md,dob_toc).level_5
- when 6; Toc.new(@md,dob_toc).level_6
+ when 1; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_1
+ when 2; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_2
+ when 3; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_3
+ when 4; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_4
+ when 5; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_5
+ when 6; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_6
else nil
end
end
@@ -261,7 +257,7 @@ module SiSU_HTML
@@toc[:seg] << toc[:seg] if toc[:seg]
@@toc[:seg_mini] << toc[:seg_mini] if toc[:seg_mini]
@@toc[:scr] << toc[:scr] if toc[:scr]
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
end
@@ -291,22 +287,22 @@ WOK
#not used -->
def level_endnotes
if @md.flag_endnotes
- format_head_scroll=SiSU_HTML_Format::Head_scroll.new(@md)
+ format_head_scroll=SiSU_HTML_Format::HeadScroll.new(@md)
@@toc[:scr] << format_head_scroll.toc_endnote
end
end
def level_concordance
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
@@toc[:seg_mini] << format_head_toc.mini_seg_concordance
end
def level_metadata
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
@@toc[:scr] << format_head_toc.metadata
@@toc[:seg] << format_head_toc.seg_metadata
@@toc[:seg_mini] << format_head_toc.mini_seg_metadata
end
def level_word_index
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@d0c)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@d0c)
@@toc[:scr] << format_head_toc.concordance
@@toc[:seg] << format_head_toc.concordance
@@toc[:seg_mini] << format_head_toc.mini_concordance
@@ -317,7 +313,7 @@ WOK
linkname,link=dob.obj.strip,dob.ocn
if link \
and link !~/#/ #% keep eye on link
- p_num=SiSU_HTML_Format::Paragraph_number.new(@md,link)
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,link)
end
title=if dob.obj !~/Metadata/; linkname
else
@@ -326,7 +322,7 @@ WOK
end
toc={}
txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:seg]=if dob.name =~/^meta/ \
and dob.obj =~/Document Information/
format_toc.lev0
@@ -354,7 +350,7 @@ WOK
%{<b><a href="##{link}">#{linkname}</a></b>}
end
txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=if dob.name =~/^meta/ \
and dob.obj =~/Document Information/
format_toc.lev0
@@ -367,18 +363,18 @@ WOK
linkname,ocn=dob.obj.strip,dob.ocn
p_num=if ocn \
and ocn !~/#/
- SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
else nil
end
txt_obj={ txt: linkname }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc={}
toc[:seg]=format_toc.lev2
toc[:seg_mini]=format_toc.mini_lev2
if p_num
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev2
end
toc
@@ -388,18 +384,18 @@ WOK
linkname,ocn=dob.obj.strip,dob.ocn
p_num=if ocn \
and ocn !~/#/
- SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
else nil
end
txt_obj={ txt: linkname }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc={}
toc[:seg]=format_toc.lev3
toc[:seg_mini]=format_toc.mini_lev3
if p_num
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev3
end
toc
@@ -407,7 +403,7 @@ WOK
def level_4
dob=@data
linkname,ocn=dob.obj.strip,dob.ocn
- p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) if ocn
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) if ocn
if dob.ln ==4
seg_link=%{ <a href="#{dob.name}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top">
#{dob.obj}
@@ -418,8 +414,8 @@ WOK
%{<a href="\\1#{@md.lang_code_insert}#{Sfx[:html]}" } +
%{target="_top">\\1 \\2</a> })
end
- p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) if ocn
- @file=SiSU_Env::SiSU_file.new(@md) if @md
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) if ocn
+ @file=SiSU_Env::FileOp.new(@md) if @md
txt_obj=if seg_link=~/sisu_manifest\.html/
man_link=if @file.output_dir_structure.by_language_code? \
or @file.output_dir_structure.by_filetype?
@@ -429,7 +425,7 @@ WOK
{ txt: man_link }
else { txt: seg_link }
end
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc={}
toc[:seg]=format_toc.lev4
toc[:seg_mini]=format_toc.mini_lev4
@@ -439,7 +435,7 @@ WOK
{ txt: man_link }
else { txt: title }
end
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev4
toc
#end
@@ -450,17 +446,17 @@ WOK
toc={}
if ocn \
and ocn !~/#/
- p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{ocn}">
#{linkname}
</a>}
txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:seg]=format_toc.lev5
toc[:seg_mini]=format_toc.mini_lev5
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev5
end
toc
@@ -471,25 +467,25 @@ WOK
toc={}
if ocn \
and ocn !~/#/
- p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{ocn}">
#{linkname}
</a>}
txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:seg]=format_toc.lev6
toc[:seg_mini]=format_toc.mini_lev6
title=%{#{p_num.goto}#{linkname}</a>}
txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc[:scr]=format_toc.lev6
end
toc
end
def level_crosslink
dob=@data
- if dob !~/^4~!/
- dob.gsub!(/^4~!\s+(\S+)\s+(.+)/,
+ dob=if dob !~/^4~!/
+ dob.gsub(/^4~!\s+(\S+)\s+(.+)/,
%{<table><tr><td width =\"80\"></td>
<td><a href="http://\\1" target="_top">
#{@png.crosslink_ext}
@@ -498,7 +494,7 @@ WOK
</td></tr></table>
})
else
- dob.gsub!(/^4~!\s+(\S+)\s+(.+)/,
+ dob.gsub(/^4~!\s+(\S+)\s+(.+)/,
%{<table><tr><td width ="80">
</td><td>
<a href="\\1" target="_top">
@@ -510,31 +506,32 @@ WOK
end
end
end
- class Scroll_head_and_segtoc < Toc
+ class ScrollHeadAndSegToc < Toc
def initialize(md='',toc='',links_guide_toc='')
@md,@toc,@links_guide_toc=md,toc,links_guide_toc
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
+ @make=SiSU_Env::ProcessingSettings.new(@md)
end
def in_common
toc_shared=[]
@segtoc=[]
SiSU_Screen::Ansi.new(@md.opt.cmd,'Scroll & Segtoc').txt_grey if @md.opt.cmd =~/[MVv]/
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
dochead=format_head_toc.head
- dochead.gsub!(/toc\.(html)/,'doc.\1') #kludge
- ads=SiSU_HTML_promo::Ad.new(@md)
+ dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge
+ ads=SiSU_HTML_Promo::Ad.new(@md)
toc_shared << dochead << ads.div.major
@segtoc << format_head_toc.head << ads.div.major
- toc_shared << format_head_toc.toc_head_escript if SiSU_HTML_Format::Head_toc.method_defined? :toc_head_escript
- @segtoc << format_head_toc.toc_head_escript if SiSU_HTML_Format::Head_toc.method_defined? :toc_head_escript
+ toc_shared << format_head_toc.toc_head_escript if SiSU_HTML_Format::HeadToc.method_defined? :toc_head_escript
+ @segtoc << format_head_toc.toc_head_escript if SiSU_HTML_Format::HeadToc.method_defined? :toc_head_escript
toc_shared << format_head_toc.scroll_head_navigation_band
if defined? @md.rights.all
rights=format_head_toc.rights.all
- rights=SiSU_HTML_Tune::Clean_html.new(rights).clean
+ rights=SiSU_HTML_Tune::CleanHTML.new(rights).clean
end
if @md.prefix_b
prefix_b=format_head_toc.notes.prefix_b
- prefix_b=SiSU_HTML_Tune::Clean_html.new(prefix_b).clean
+ prefix_b=SiSU_HTML_Tune::CleanHTML.new(prefix_b).clean
end
@segtoc << format_head_toc.seg_head_navigation_band
toc_shared << format_head_toc.scroll_head_title_banner_open
@@ -543,14 +540,14 @@ WOK
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_HTML_Format::Format_text_object.new(@md,txt_obj)
+ format_txt_obj=SiSU_HTML_Format::FormatTextObject.new(@md,txt_obj)
toc_shared << format_txt_obj.center_bold
@segtoc << format_txt_obj.center_bold
if defined? @md.creator.author
creator_endnote=@md.creator.author.gsub(/(\*+)/,%{&nbsp;<sup><a href="#notes">\\1</a></sup>})
tmp_head=creator_endnote + "\n"
txt_obj={ txt: tmp_head }
- format_txt_obj=SiSU_HTML_Format::Format_text_object.new(@md,txt_obj)
+ format_txt_obj=SiSU_HTML_Format::FormatTextObject.new(@md,txt_obj)
toc_shared << format_txt_obj.center_bold
@segtoc << format_txt_obj.center_bold
end
@@ -570,8 +567,9 @@ WOK
if defined? @md.prefix_b
toc_shared << prefix_b
end
- #Table of Contents added/appended here
- toc_shared << @toc[:scr]
+ scr_toc=if @make.build.toc? #Table of Contents added/appended here
+ toc_shared << @toc[:scr]
+ end
@segtoc << @links_guide_toc
@segtoc << @toc[:seg]
if defined? @md.rights.all \
@@ -582,20 +580,20 @@ WOK
#Segtoc tail added here
@segtoc << "</p>\n" #bugfix sort later DEBUGNOW
@segtoc << @seg_toc_band_bottom
- ads=SiSU_HTML_promo::Ad.new(@md)
+ ads=SiSU_HTML_Promo::Ad.new(@md)
@segtoc << format_head_toc.seg_navigation_tail << ads.div.close << ads.display << format_head_toc.html_close
- @segtoc.flatten!.compact!
- Output.new(@segtoc,@md).segtoc
+ @segtoc=@segtoc.flatten.compact #watch
+ SiSU_HTML::Source::Output.new(@segtoc,@md).segtoc
@segtoc=[]
@toc[:scr],@toc[:seg]=[],[]
toc_shared
end
end
- class Table < SiSU_HTML_table::Table_html
+ class Table < SiSU_HTML_Table::TableHTML
end
- class Scroll < SiSU_HTML_scroll::Scroll
+ class Scroll < SiSU_HTML_Scroll::Scroll
end
- class Scroll_output
+ class ScrollOutput
def initialize(scr_toc,scr_body,scr_metadata,scr_owner_details,scr_tails,md)
@scr_toc,@scr_body,@scr_metadata,@scr_owner_details,@scr_tails,@md=scr_toc,scr_body,scr_metadata,scr_owner_details,scr_tails,md
end
@@ -603,31 +601,32 @@ WOK
scroll=[]
hr='<center><hr width=90% /></center>'
scroll << @scr_toc << '<div class="scroll">' << hr << @scr_body << @scr_endnotes << hr << @scr_owner_details << '</div>' << @scr_tails
- scroll.flatten!.compact!
+ scroll=scroll.flatten.compact #watch
end
end
- class Seg < SiSU_HTML_seg::Seg
+ class Seg < SiSU_HTML_Seg::Seg
end
class Output
def initialize(data='',md='')
@data,@md=data,md
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(md)
+ @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
end
def scroll
begin
@filename_html_scroll=@file.write_file.html_scroll
@data.each do |para|
- para.strip!
- para.gsub!(/<:.+?>/,'')
- para.gsub!(Xx[:html_relative2],@file.path_rel_links.html_scroll_2)
- para.gsub!(Xx[:html_relative1],@file.path_rel_links.html_scroll_1)
- #para.gsub!(/#{Xx[:html_relative]}/,@file.path_rel_links.html_scroll)
- para.gsub!(/#{Rx[:mx_fa_clean]}/,'')
+ para=para.strip.
+ gsub(/<:.+?>/,'').
+ gsub(Xx[:html_relative2],@file.path_rel_links.html_scroll_2).
+ gsub(Xx[:html_relative1],@file.path_rel_links.html_scroll_1).
+ #gsub(/#{Xx[:html_relative]}/,@file.path_rel_links.html_scroll).
+ gsub(/#{Rx[:mx_fa_clean]}/,'')
unless para =~/\A\s*\Z/
@filename_html_scroll.puts para,"\n"
end
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure; @filename_html_scroll.close
end
end
@@ -635,26 +634,28 @@ WOK
begin
@filename_html_segtoc=@file.write_file.html_segtoc
@data.each do |para|
- para.strip!
- para.gsub!(/<!.+?!>/,'')
- para.gsub!(Xx[:html_relative2],@file.path_rel_links.html_seg_2)
- para.gsub!(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
+ para=para.strip.
+ gsub(/<!.+?!>/,'').
+ gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2).
+ gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
unless para =~/\A\s*\Z/
@filename_html_segtoc.puts para,"\n"
end
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
@filename_html_segtoc.close
- unless FileTest.file?("#{@file.output_path.html_seg.dir}/#{@md.file.base_filename.html_seg_index}")
- pwd_set=Dir.pwd
- idx_lnk=@file.base_filename.html_segtoc
- mlnk=@file.base_filename.html_seg_index
- Dir.chdir(@file.output_path.html_seg.dir)
- FileUtils::rm_f(mlnk)
- FileUtils::ln_s(idx_lnk, mlnk)
- Dir.chdir(pwd_set)
+ pwd_set=Dir.pwd
+ idx_lnk=if @o_str.dump_or_redirect?
+ @file.base_filename.manifest
+ else
+ @file.base_filename.html_segtoc
end
+ mlnk=@file.base_filename.html_seg_index
+ Dir.chdir(@file.output_path.html_seg.dir)
+ FileUtils::rm_f(mlnk)
+ FileUtils::ln_s(idx_lnk,mlnk)
+ Dir.chdir(pwd_set)
end
end
end
diff --git a/lib/sisu/v3/html_format.rb b/lib/sisu/v3/html_format.rb
index 3dd0cecc..56360455 100644
--- a/lib/sisu/v3/html_format.rb
+++ b/lib/sisu/v3/html_format.rb
@@ -58,31 +58,26 @@
=end
module SiSU_HTML_Format
include SiSU_Viz
- class Paragraph_number
+ class ParagraphNumber
def initialize(md,ocn)
@md,@ocn=md,ocn.to_s
@ocn ||=''
- vz=SiSU_Env::Get_init.instance.skin
- @skin_no_ocn=if defined? vz.ocn_display_off \
- and vz.ocn_display_off==true
- true
- else false
- end
end
def ocn_display
- if @md.markup.inspect =~/no_ocn/ \
- or @md.opt.mod.inspect =~/--no-ocn/ \
- or @skin_no_ocn
- ocn_class='ocn_off'
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- elsif @ocn.to_i==0
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}">&nbsp;</a></label>})
- else
+ @make=SiSU_Env::ProcessingSettings.new(@md)
+ if @make.build.ocn?
ocn_class='ocn'
+ if @ocn.to_i==0
+ @ocn.gsub(/^(\d+|)$/,
+ %{<label class="#{ocn_class}"><a name="#{@ocn}">&nbsp;</a></label>})
+ else
+ @ocn.gsub(/^(\d+|)$/,
+ %{<label class="#{ocn_class}"><a name="#{@ocn}" href="##{@ocn}" class="lnk#{ocn_class}">\\1</a></label>})
+ end
+ else
+ ocn_class='ocn_off'
@ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}" href="##{@ocn}" class="lnk#{ocn_class}">\\1</a></label>})
+ %{<label class="#{ocn_class}">&nbsp;</label>})
end
end
def name
@@ -95,24 +90,74 @@ module SiSU_HTML_Format
%{<a href="##{@ocn}">}
end
end
- class Head_information
+ class HeadInformation
+ require_relative 'css' # css.rb
require_relative 'shared_xml' # shared_xml.rb
include SiSU_Viz
attr_reader :md,:rdf,:vz
def initialize(md)
@md=md
# DublinCore 1 - title
- @vz=SiSU_Env::Get_init.instance.skin
- @css=SiSU_Env::CSS_stylesheet.new(md)
+ @vz=SiSU_Env::GetInit.instance.skin
@seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || [])
@seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || [])
- @toc,@index='toc','index'
@metalink='#metadata'
@tocband_scroll,@tocband_segtoc=nil,nil
+ @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet
+ @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
+ @index='index'
+ @toc="#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_segtoc}"
+ end
+ def url_path_image_sys
+ (@o_str.dump_or_redirect?) \
+ ? './image'
+ : "#{Xx[:html_relative2]}_sisu/image_sys"
+ end
+ def icon
+ def up
+ 'arrow_up_red.png'
+ end
+ def next
+ 'arrow_next_red.png'
+ end
+ def previous
+ 'arrow_prev_red.png'
+ end
+ def dot_clear
+ 'dot_clear.png'
+ end
+ def dot_white
+ 'dot_white.png'
+ end
+ def dot
+ dot_white
+ end
+ self
+ end
+ def png_nav
+ def toc
+ %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.up}" alt="TOC" />}
+ end
+ def pre
+ %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.previous}" alt="&lt;&lt;&nbsp;previous" />}
+ end
+ def nxt
+ %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.next}" alt="next&nbsp;&gt;&gt;" />}
+ end
+ def dot_toc
+ %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="&#094;" />}
+ end
+ def dot_pre
+ %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="&lt;" />}
+ end
+ def dot_nxt
+ %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="&gt;" />}
+ end
+ self
end
def doc_types #used in toc & seg_nav_band
scroll=seg=''
- wgt=Widget.new(@md)
+ wgt=SiSU_HTML_Format::Widget.new(@md)
%{
<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0">
<tr>
@@ -122,7 +167,7 @@ module SiSU_HTML_Format
</tr></table>}
end
def rdf
- SiSU_XML_tags::RDF.new(md)
+ SiSU_XML_Tags::RDF.new(md)
end
def doc_type
%{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -149,13 +194,15 @@ module SiSU_HTML_Format
</html>}
end
end
- class Widget < Head_information
+ class Widget < HeadInformation
def initialize(md)
super(md)
@md=md
- @cf_defaults=SiSU_Env::Info_processing_flag.new
- @env=SiSU_Env::Info_env.new(@md.fns)
- @file=SiSU_Env::SiSU_file.new(@md)
+ @cf_defaults=SiSU_Env::InfoProcessingFlag.new
+ @env=SiSU_Env::InfoEnv.new(md.fns)
+ @file=SiSU_Env::FileOp.new(md)
+ @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
+ @make=SiSU_Env::ProcessingSettings.new(@md)
end
def home
%{<td align="center" bgcolor=#{@vz.color_band2}>
@@ -183,20 +230,27 @@ module SiSU_HTML_Format
}
end
def search
- env=SiSU_Env::Info_env.new(@md.fns,@md)
- env.widget.search_form('sisusearch',nil,nil,true)
+ if @make.build.html_search_form?
+ env=SiSU_Env::InfoEnv.new(@md.fns,@md)
+ env.widget.search_form('sisusearch',nil,nil,true)
+ else ''
+ end
end
def manifest
- manifest_lnk=if @file.output_dir_structure.by_language_code? \
- or @file.output_dir_structure.by_filetype?
- "#{Xx[:html_relative1]}manifest/#{@file.base_filename.manifest}"
- else @file.base_filename.manifest
- end
+ if @make.build.links_to_manifest? \
+ and not @o_str.dump_or_redirect?
+ manifest_lnk=if @file.output_dir_structure.by_language_code? \
+ or @file.output_dir_structure.by_filetype?
+ "#{Xx[:html_relative1]}manifest/#{@file.base_filename.manifest}"
+ else @file.base_filename.manifest
+ end
%{<td align="center" bgcolor=#{@vz.color_band2}>
<a href="#{manifest_lnk}" target="_top" #{@vz.js_manifest}>
#{@vz.nav_txt_manifest}
</a>
</td>}
+ else ''
+ end
end
def pdf #retired 2.7.9
pdf=if @md.programs[:pdf] \
@@ -263,44 +317,49 @@ module SiSU_HTML_Format
end
class XML
end
- class Head_toc < Head_information
+ class HeadToc < HeadInformation
def initialize(md)
super(md)
@md=md
+ @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
+ @make=SiSU_Env::ProcessingSettings.new(@md)
end
def scroll_head_navigation_band
- pdf=if @md.programs[:pdf]
- <<WOK
+ if @make.build.html_top_band?
+ search_and_manifest=<<WOK
<td align="center" width="60%">
- #{make_seg_scroll_pdf}
+ #{make_scroll_search_form_and_manifest_link}
</td>
WOK
- else ''
- end
- %{<table summary="table of contents scroll navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
+ %{<table summary="table of contents scroll navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
<tr><td width="20%">
#{@vz.banner_band}
-</td>#{pdf}
+</td>#{search_and_manifest}
<td width="20%">
&nbsp;
#{@vz.table_close}
<p />}
+ else ''
+ end
end
def concordance_navigation_band(type='')
- %{<table summary="concordance navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
+ if @make.build.html_top_band?
+ %{<table summary="concordance navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
<tr><td width="20%">
#{@vz.banner_band}
</td>
<td width="20%" align="right">
&nbsp;<a href="toc.html" target="_top" alt="-&gt;">
- #{@vz.png_nav_toc}
+ #{png_nav.toc}
</a>&nbsp;
#{@vz.table_close}
<p />}
+ else ''
+ end
end
def seg_head_navigation_band(type='')
firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" alt="-&gt;">
- #{@vz.png_nav_nxt}
+ #{png_nav.nxt}
</a>} if @md.firstseg =~/\S+/
%{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
<tr><td width="20%">
@@ -314,27 +373,8 @@ WOK
#{@vz.table_close}
<p />}
end
- def seg_head_navigation_band_bottom(type='') #retired 2.7.9
- if type=~/pdf/
- @tocband_segtoc=make_scroll_seg_pdf
- end
- firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" alt="-&gt;">
- #{@vz.png_nav_nxt}
- </a>} if @md.firstseg =~/\S+/
- %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- &nbsp;
-</td>
-<td width="75%" align="center">
- #{@tocband_segtoc}
-</td>
-<td width="5%" align="right">
- &nbsp;#{firstseg}&nbsp;
-#{@vz.table_close}
-<p />}
- end
def manifest_link(text)
-# @file=SiSU_Env::SiSU_file.new(@md) if @md
+# @file=SiSU_Env::FileOp.new(@md) if @md
%{<font size=2>
<a href="#{@md.file.base_filename.manifest}" target="_top" #{@vz.js_manifest}>#{text}</a>
</font>}
@@ -349,8 +389,8 @@ WOK
else ''
end
end
- def make_seg_scroll_pdf
- wgt=Widget.new(@md)
+ def make_scroll_search_form_and_manifest_link
+ wgt=SiSU_HTML_Format::Widget.new(@md)
scroll=%{<td align="center" bgcolor=#{@vz.color_band2}>
#{@vz.nav_txt_doc_link}
</td>
@@ -363,7 +403,7 @@ WOK
end
def make_scroll_seg_pdf
manifest=scroll=seg=''
- wgt=Widget.new(@md)
+ wgt=SiSU_HTML_Format::Widget.new(@md)
seg=%{<td align="center" bgcolor=#{@vz.color_band2}>
#{@vz.nav_txt_toc_link}
</td>
@@ -377,7 +417,7 @@ WOK
end
def make_concordance
manifest=scroll=seg=''
- wgt=Widget.new(@md)
+ wgt=SiSU_HTML_Format::Widget.new(@md)
%{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0">
<tr>
<td align="center" bgcolor=#{@vz.color_band2}>
@@ -386,7 +426,7 @@ WOK
</tr></table>}
end
def head
- rdf=SiSU_XML_tags::RDF.new(@md)
+ rdf=SiSU_XML_Tags::RDF.new(@md)
%{#{doc_type}
<head>
<title>
@@ -394,7 +434,7 @@ WOK
</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
#{rdf.metatag_html}
-#{@css.html}#{@css.html_seg}
+#{@stylesheet.css_head}
</head>
#{@vz.color_body}
<a name="top" id="top"></a>
@@ -417,7 +457,7 @@ WOK
end
end
def links_guide_vertical_open
-# @file=SiSU_Env::SiSU_file.new(@md) if @md
+# @file=SiSU_Env::FileOp.new(@md) if @md
url=((defined? @vz.url_hp) && @vz.url_hp =~/^https?:\/\/\S+$/ ? @vz.url_hp : @vz.url_home)
%{
<div id="vertical_links">
@@ -438,7 +478,7 @@ WOK
<!- quick ref -!>}
end
def links_guide_horizontal_open
-# @file=SiSU_Env::SiSU_file.new(@md) if @md
+# @file=SiSU_Env::FileOp.new(@md) if @md
url=((defined? @vz.url_hp) && @vz.url_hp =~/^https?:\/\/\S+$/ ? @vz.url_hp : @vz.url_home)
%{
<div id="horizontal_links">
@@ -529,12 +569,15 @@ WOK
#{@vz.table_close}}
end
def manifest #check structure
- manifest=manifest_link(@vz.nav_txt_manifest)
- %{#{@vz.margin_txt_3}
+ if not @o_str.dump_or_redirect?
+ manifest=manifest_link(@vz.nav_txt_manifest)
+ %{#{@vz.margin_txt_3}
#{@vz.paragraph_font_small}
#{manifest}
</font>
#{@vz.table_close}}
+ else ''
+ end
end
def concordance #check structure
concord=concordance_link(@vz.nav_txt_concordance)
@@ -617,83 +660,83 @@ WOK
}
end
end
- class Head_seg < Head_information
- def initialize(md) #(md='')
+ class HeadSeg < HeadInformation
+ def initialize(md)
super(md)
end
def title_banner(title,subtitle,creator)
end
def dot_control_pre_next
pre="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}"
- up="#{@toc}#{@md.lang_code_insert}#{Sfx[:html]}"
+ up=@toc
nxt="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}"
if nxt=~/sisu_manifest\.html/
- @file=SiSU_Env::SiSU_file.new(@md) if @md
+ @file=SiSU_Env::FileOp.new(@md) if @md
if @file.output_dir_structure.by_language_code? \
or @file.output_dir_structure.by_filetype?
- nxt.gsub!(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
+ nxt=nxt.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
end
end
%{<table summary="segment hidden control pre and next" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">
<tr><td align="left">
<a href="#{pre}" target="_top" #{@vz.js_prev}>
- #{@vz.png_nav_dot_pre}
+ #{png_nav.dot_pre}
</a>
</td>
<td align="center">
<a href="#{up}" target="_top" #{@vz.js_toc}>
- #{@vz.png_nav_dot_toc}
+ #{png_nav.dot_toc}
</a>
</td>
<td align="right">
<a href="#{nxt}" target="_top" #{@vz.js_next}>
- #{@vz.png_nav_dot_nxt}
+ #{png_nav.dot_nxt}
</a>
#{@vz.table_close}}
end
def dot_control_pre
pre="#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.lang_code_insert}#{Sfx[:html]}"
- up="#{@toc}#{@md.lang_code_insert}#{Sfx[:html]}"
+ up=@toc
nxt="#{@md.file.base_filename.html_segtoc}"
%{<table summary="segment hidden control pre" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">
<tr><td align="left">
<a href="#{pre}" target="_top" #{@vz.js_prev}>
- #{@vz.png_nav_dot_pre}
+ #{png_nav.dot_pre}
</a>
</td>
<td align="center">
<a href="#{up}" target="_top" #{@vz.js_toc}>
- #{@vz.png_nav_dot_toc}
+ #{png_nav.dot_toc}
</a>
</td>
<td align="right">
<a href="#{nxt}" target="_top" #{@vz.js_next}>
- #{@vz.png_nav_dot_nxt}
+ #{png_nav.dot_nxt}
</a>
#{@vz.table_close}}
end
def toc_nav(f_pre=false,f_nxt=false,use=1)
pre=nxt=''
toc=%{<td align="center" bgcolor=#{@vz.color_band1}>
- <a href="#{@toc}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_toc}>
- #{@vz.png_nav_toc}
+ <a href="#{@toc}" target="_top" #{@vz.js_toc}>
+ #{png_nav.toc}
</a>
</td>}
pre=%{<td align="center" bgcolor=#{@vz.color_band1}>
<a href="#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_prev}>
- #{@vz.png_nav_pre}
+ #{png_nav.pre}
</a>
</td>} if f_pre==true
nxt=%{<td align="center" bgcolor=#{@vz.color_band1}>
<a href="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_next}>
- #{@vz.png_nav_nxt}
+ #{png_nav.nxt}
</a>
</td>} if f_nxt==true
if nxt =~/sisu_manifest.html/
- @file=SiSU_Env::SiSU_file.new(@md) if @md
+ @file=SiSU_Env::FileOp.new(@md) if @md
if @file.output_dir_structure.by_language_code? \
or @file.output_dir_structure.by_filetype?
- nxt.gsub!(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
+ nxt=nxt.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
end
end
%{<table summary="segment navigation pre/next" border="0" cellpadding="3" cellspacing="0">
@@ -749,7 +792,7 @@ WOK
<font size="2">}
end
def heading_advert_local_1
- dir=SiSU_Env::Info_env.new(@fns)
+ dir=SiSU_Env::InfoEnv.new(@fns)
%{ <center>
<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
<tr><td align="center" bgcolor="white">
@@ -761,7 +804,7 @@ WOK
</center>}
end
def heading_advert_local_2
- dir=SiSU_Env::Info_env.new(@fns)
+ dir=SiSU_Env::InfoEnv.new(@fns)
%{ <center>
<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
<tr><td align="center" bgcolor="white">
@@ -773,7 +816,7 @@ WOK
</center>}
end
def heading_advert_external
- dir=SiSU_Env::Info_env.new(@fns)
+ dir=SiSU_Env::InfoEnv.new(@fns)
%{ <center>
<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
<tr><td align="center" bgcolor="white">
@@ -844,7 +887,7 @@ WOK
} #revisit
end
def head_seg
- rdf=SiSU_XML_tags::RDF.new(@md)
+ rdf=SiSU_XML_Tags::RDF.new(@md)
%{#{doc_type}
<head>
<title>
@@ -853,7 +896,7 @@ WOK
</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
#{rdf.metatag_html}
-#{@css.html_seg}
+#{@stylesheet.css_head_seg}
</head>
#{@vz.color_body}
<a name="top" id="top"></a>
@@ -883,7 +926,7 @@ WOK
}
end
end
- class Head_scroll < Head_toc
+ class HeadScroll < HeadToc
def initialize(md)
super(md)
end
@@ -900,8 +943,8 @@ WOK
#{@vz.table_close}}
end
end
- class Format_text_object
- @vz=SiSU_Env::Get_init.instance.skin
+ class FormatTextObject
+ @vz=SiSU_Env::GetInit.instance.skin
attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
def initialize(md,t_o)
@md,@t_o=md,t_o
@@ -916,12 +959,12 @@ 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_document_structure/
+ elsif t_o.class.inspect =~/^(?:#<)?SiSU_DAL_DocumentStructure/
@dob=t_o if defined? t_o.is
@named=nametags_seg(@dob)
@txt=((defined? t_o.obj) ? t_o.obj : nil)
@ocn=((defined? t_o.ocn) ? t_o.ocn.to_s : nil)
- @headname=((t_o.is=='heading' and defined? t_o.name) ? t_o.name : nil)
+ @headname=((t_o.is==:heading and defined? t_o.name) ? t_o.name : nil)
else
if @md.opt.cmd =~/M/
p t_o.class
@@ -930,10 +973,11 @@ WOK
end
@headnamed= (@headname ? %{<a name="h#{@headname}" id="h#{@headname}"></a>} : nil)
if @txt and not @txt.empty?
- @txt.gsub!(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
+ @txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
end
- @p_num=Paragraph_number.new(@md,@ocn)
- @vz=SiSU_Env::Get_init.instance.skin
+ @p_num=ParagraphNumber.new(@md,@ocn)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @make=SiSU_Env::ProcessingSettings.new(@md)
end
def nametags_scroll(dob)
tags=''
@@ -956,9 +1000,9 @@ WOK
tags
end
def headname #check whether used
- hn=if @t_o.is =='heading' \
+ hn=if @t_o.is ==:heading \
and not @t_o.name.empty? #determine use
- hn=if @t_o.is =='heading'; %{<a name="h#{@t_o.name}" id="h#{@t_o.name}"></a>}
+ hn=if @t_o.is ==:heading; %{<a name="h#{@t_o.name}" id="h#{@t_o.name}"></a>}
else %{<a name="#{@t_o.name}" id="#{@t_o.name}"></a>}
end
else nil
@@ -1030,15 +1074,15 @@ WOK
end
def table
@txt=if @t_o.obj !~/^<table\s/
- table=SiSU_HTML_shared::Table_html.new(@t_o) #move, make happen earlier
+ table=SiSU_HTML_Shared::TableHTML.new(@t_o) #move, make happen earlier
@txt=table.table.obj
else @txt
end
para_form_css('p','norm')
end
def break
- @txt.gsub!(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />')
- @txt.gsub!(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />')
+ @txt=@txt.gsub(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />').
+ gsub(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />')
para_form_css('p','norm')
end
def format(tag,attrib)
@@ -1076,8 +1120,11 @@ WOK
heading_normal('h6','norm')
end
def title_heading(tag,attrib)
+ cl=(@make.build.html_minitoc?) \
+ ? 'content'
+ : 'content0'
%{
-<div class="content">
+<div class="#{cl}">
<#{tag} class="#{attrib}">
#{@named}#{@txt}
</#{tag}>
@@ -1097,7 +1144,7 @@ WOK
''
end
def seg_heading_sub(tag,attrib)
- @txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
%{
<div class="substance">
#{@p_num.ocn_display}
@@ -1132,15 +1179,16 @@ WOK
</div>'
end
def gsub_body #fix
- case @txt
+ @txt=case @txt
when /^\((i+|iv|v|vi+|ix|x|xi+)\)/
- @txt.gsub!(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>')
+ @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>')
when /^\(?(\d|[a-z])+\)/
- @txt.gsub!(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>')
+ @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>')
when /^\s*\d{1,3}\.\s/
- @txt.gsub!(/^\s*(\d+\.)/,'<b>\1</b>')
+ @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>')
when /^\s*[A-Z]\.\s/
- @txt.gsub!(/^\s*([A-Z]\.)/,'<b>\1</b>')
+ @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>')
+ else @txt
end
end
def bold_para
@@ -1153,8 +1201,8 @@ WOK
#{@vz.table_close}}
end
def bold_heading
- @txt.gsub!(/[1-9]~(\S+)/,'<a name="\1"></a>')
- @txt.gsub!(/[1-9]~/,'')
+ @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>').
+ gsub(/[1-9]~/,'')
%{<p class="bold">
#{@txt}
</p>
@@ -1175,13 +1223,13 @@ WOK
%{<p class="centerbold">#{@txt}</p>\n}
end
end
- class Format_scroll < Format_text_object
+ class FormatScroll < FormatTextObject
def initialize(md,txt)
super(md,txt)
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
end
- class Format_seg < Format_text_object
+ class FormatSeg < FormatTextObject
def initialize(md,txt)
super(md,txt)
end
@@ -1242,8 +1290,8 @@ WOK
}
end
def clean(txt)
- txt.gsub!(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,'')
- txt.gsub!(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
+ txt=txt.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,'').
+ gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
txt
end
def subtoc_lev(tag,attrib)
@@ -1256,9 +1304,9 @@ WOK
note=''
if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
note=$1
- note.gsub!(/[\n\s]+/m,' ')
- txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- txt.gsub!(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
+ note=note.gsub(/[\n\s]+/m,' ')
+ txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
+ gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
end
%{<#{tag} class="#{attrib}">
<a href="##{@ocn}"><i>#{txt}</i></a> #{note}
@@ -1271,7 +1319,7 @@ WOK
subtoc_lev('h6','subtoc') if @txt
end
def heading_sub(tag,attrib)
- @txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
%{
<div class="substance">
#{@p_num.ocn_display}
@@ -1320,7 +1368,7 @@ WOK
"<center>#{@txt}</center>"
end
end
- class Format_toc < Format_text_object
+ class FormatToc < FormatTextObject
def initialize(md,txt)
super(md,txt)
end
@@ -1363,7 +1411,7 @@ WOK
lev('h0','toc')
end
def strip_endnotes(txt)
- txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
txt
end
def mini_lev1
@@ -1411,7 +1459,7 @@ WOK
}
end
end
- class Format_str
+ class FormatStr
def initialize(md,str)
@str=str
end
diff --git a/lib/sisu/v3/html_minitoc.rb b/lib/sisu/v3/html_minitoc.rb
index fef0bb3f..729eee50 100644
--- a/lib/sisu/v3/html_minitoc.rb
+++ b/lib/sisu/v3/html_minitoc.rb
@@ -57,10 +57,10 @@
** Description: system environment, resource control and configuration details
=end
- module SiSU_HTML_minitoc
+ module SiSU_HTML_MiniToc
require_relative 'html_tune' # html_tune.rb
include SiSU_HTML_Tune
- class Toc_mini
+ class TocMini
@@seg_mini=nil
@@seg_url=''
@@firstseg=nil
@@ -74,18 +74,19 @@
toc=nil
@toc=[]
@data.each do |txt|
- if (txt.is =='heading' or txt.is =='heading_insert')
- txt.obj.gsub!(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,'') #remove endnotes from toc
- txt.obj.gsub!(/<a name="-\d+" href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;<\/a>/,'')
- txt.obj.gsub!(@pat_strip_heading_name,'\1')
- txt.obj.gsub(/(.*?)<a name="(\d+)"><\/a>(.*)/,'\1') #2002w42 altered gsub! - problematic? - suspect
+ if txt.is ==:heading \
+ || txt.is ==:heading_insert
+ txt.obj=txt.obj.gsub(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,''). #remove endnotes from toc
+ gsub(/<a name="-\d+" href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;<\/a>/,'').
+ gsub(@pat_strip_heading_name,'\1')
+ #gsub(/(.*?)<a name="(\d+)"><\/a>(.*)/,'\1') #2002w42 altered gsub - problematic? - suspect
toc=case txt.ln
- when 1; Toc_mini.new(@md,txt).level_1
- when 2; Toc_mini.new(@md,txt).level_2
- when 3; Toc_mini.new(@md,txt).level_3
- when 4; Toc_mini.new(@md,txt).level_4
- when 5; Toc_mini.new(@md,txt).level_5
- when 6; Toc_mini.new(@md,txt).level_6
+ when 1; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_1
+ when 2; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_2
+ when 3; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_3
+ when 4; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_4
+ when 5; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_5
+ when 6; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_6
else
end
@toc << toc
@@ -95,22 +96,23 @@
end
protected
def level_concordance
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
@@seg_mini << format_head_toc.mini_seg_concordance
end
def level_metadata
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@md)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
@@seg_mini << format_head_toc.mini_seg_metadata
end
def level_word_index
- format_head_toc=SiSU_HTML_Format::Head_toc.new(@d0c)
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@d0c)
@@seg_mini << format_head_toc.mini_concordance
end
def level_1
txt=@data
- if (txt.is =='heading' or txt.is =='heading_insert') \
- and txt.ocn !=0
- txt.obj.gsub!(@pat_strip_heading_name,'\1')
+ if (txt.is ==:heading \
+ || txt.is ==:heading_insert) \
+ && txt.ocn !=0
+ txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
end
title=unless txt.obj =~/Document Information/; txt.obj
else
@@ -119,7 +121,7 @@
end
toc={}
txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc_mini=if txt.name =~/^meta/ and txt.obj=~/Document Information/
format_toc.mini_tail
else format_toc.mini_lev1
@@ -128,19 +130,20 @@
end
def level_2
txt=@data
- if (txt.is =='heading' or txt.is =='heading_insert') \
- and txt.ocn !=0
- txt.obj.gsub!(@pat_strip_heading_name,'\1')
+ if (txt.is ==:heading \
+ || txt.is ==:heading_insert) \
+ && txt.ocn !=0
+ txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
end
txt_obj={ txt: txt.obj }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc_mini=format_toc.mini_lev2
toc_mini
end
def level_3
txt=@data
txt_obj={ txt: txt.obj }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc_mini=format_toc.mini_lev3
toc_mini
end
@@ -158,38 +161,40 @@
%{target="_top">\\1 \\2</a> })
end
txt_obj={ txt: seg_link }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc_mini=format_toc.mini_lev4
toc_mini
end
end
def level_5
txt=@data
- if (txt.is =='heading' or txt.is =='heading_insert') \
- and txt.ocn !=0
- txt.obj.gsub!(@pat_strip_heading_name,'\1')
+ if (txt.is ==:heading \
+ || txt.is ==:heading_insert) \
+ && txt.ocn !=0
+ txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
end
toc={}
lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{txt.ocn}">
#{txt.obj}
</a>}
txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc_mini=format_toc.mini_lev5
toc_mini
end
def level_6
txt=@data
- if (txt.is =='heading' or txt.is =='heading_insert') \
- and txt.ocn !=0
- txt.obj.gsub!(@pat_strip_heading_name,'\1')
+ if (txt.is ==:heading \
+ || txt.is ==:heading_insert) \
+ && txt.ocn !=0
+ txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
end
toc={}
lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{txt.ocn}">
#{txt.obj}
</a>}
txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj)
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
toc_mini=format_toc.mini_lev6
toc_mini
end
diff --git a/lib/sisu/v3/html_promo.rb b/lib/sisu/v3/html_promo.rb
index acc924b6..f53211e9 100644
--- a/lib/sisu/v3/html_promo.rb
+++ b/lib/sisu/v3/html_promo.rb
@@ -56,33 +56,44 @@
** Description: html advertising component, build here, mockup
=end
-module SiSU_HTML_promo
+module SiSU_HTML_Promo
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
class Ad
def initialize(md)
@md=md
- @env=SiSU_Env::Info_env.new(@md.fns,@md)
- @rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
- @ad=SiSU_Env::Get_init.instance.ads
- @vz=SiSU_Env::Get_init.instance.skin
+ @env=SiSU_Env::InfoEnv.new(@md.fns,@md)
+ @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
+ @ad=SiSU_Env::GetInit.instance.ads
+ @vz=SiSU_Env::GetInit.instance.skin
@flag=@env.widget.promo?
+ @make=SiSU_Env::ProcessingSettings.new(@md)
end
def div
def major
- @flag[:ad] ? '<div id="pane_major">' : ''
+ (@make.build.html_right_pane? \
+ && @flag[:ad]) \
+ ? '<div id="pane_major">'
+ : ''
end
def minor
- @flag[:ad] ? '<div id="pane_minor">' : ''
+ (@make.build.html_right_pane? \
+ && @flag[:ad]) \
+ ? '<div id="pane_minor">'
+ : ''
end
def close
- @flag[:ad] ? '</div>' : ''
+ (@make.build.html_right_pane? \
+ && @flag[:ad]) \
+ ? '</div>'
+ : ''
end
self
end
- def display #(type=nil,id=nil)
+ def display
ads_array,promo_array=[],[]
- if @flag[:ad]
+ if @make.build.html_right_pane? \
+ && @flag[:ad]
ads=if @md.promo && @md.promo.length > 0 #promo set in document
promo_array=@md.promo
elsif @flag[:sk] #promo set in associated skin
diff --git a/lib/sisu/v3/html_scroll.rb b/lib/sisu/v3/html_scroll.rb
index c09ae68f..a4d2089e 100644
--- a/lib/sisu/v3/html_scroll.rb
+++ b/lib/sisu/v3/html_scroll.rb
@@ -56,7 +56,7 @@
** Description: html scroll generation, processing
=end
-module SiSU_HTML_scroll
+module SiSU_HTML_Scroll
require_relative 'shared_html' # shared_html.rb
require_relative 'html' # html.rb
require_relative 'shared_metadata' # shared_metadata.rb
@@ -64,14 +64,14 @@ module SiSU_HTML_scroll
class Scroll
def initialize(md='',data='',endnotes='')
@md,@data,@endnotes=md,data,endnotes
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def songsheet
begin
- scr=Scroll.new(@md,@data,@endnotes).markup
- scr[:tails]=Scroll.new(@md).tails
+ scr=SiSU_HTML_Scroll::Scroll.new(@md,@data,@endnotes).markup
+ scr[:tails]=SiSU_HTML_Scroll::Scroll.new(@md).tails
scr
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
@@ -81,14 +81,14 @@ module SiSU_HTML_scroll
@rcdc=false
@scr={ body: [], metadata: [], owner_details: [] }
data.each do |dob|
- dob.obj.gsub!(/#{@md.file.output_path.html_seg.rel_image}/m,@md.file.output_path.html_scroll.rel_image)
+ dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m,@md.file.output_path.html_scroll.rel_image)
if defined? dob.name and dob.name =~/^meta/ \
and dob.obj =~/Document Information/
- dob.obj.gsub!(/(Document Information(?: \(metadata\))?)/,'\1<a name="docinfo"></a>')
+ dob.obj=dob.obj.gsub(/(Document Information(?: \(metadata\))?)/,'\1<a name="docinfo"></a>')
end
if dob.obj =~/^Metadata$/ \
and dob.lv =='B'
- dob.obj.gsub!(/Metadata/,'')
+ dob.obj=dob.obj.gsub(/Metadata/,'')
end
if defined? dob.name \
and dob.name =~/^metadata/ \
@@ -96,17 +96,18 @@ module SiSU_HTML_scroll
and dob.obj =~/SiSU Metadata, document information/
@rcdc=true
end
- dob.obj.gsub!(/href="[a-z0-9._-]+(#\S+?")/m,'href="\1') # internal document links
- dob.obj.gsub!(/href="#{Xx[:segment]}/m,'href="')
- dob.obj.gsub!(/(?:\s*#{Mx[:br_page]}\s*|\s*#{Mx[:br_page_new]}\s*)+/m,'<p><hr width=90% /></p>')
+ dob.obj=dob.obj.gsub(/href="[a-z0-9._-]+(#\S+?")/m,'href="\1'). # internal document links
+ gsub(/href="#{Xx[:segment]}/m,'href="').
+ gsub(/(?:\s*#{Mx[:br_page]}\s*|\s*#{Mx[:br_page_new]}\s*)+/m,'<p><hr width=90% /></p>')
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]})/
- unless dob.is =~/^code/; dob.obj.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ unless dob.is ==:code
+ dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
end
if defined? dob.ocn
- @p_num=SiSU_HTML_Format::Paragraph_number.new(@md,dob.ocn)
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn)
end
- sto=SiSU_HTML_Format::Format_text_object.new(@md,dob)
- para_html=if dob.is=='heading'
+ sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
+ para_html=if dob.is==:heading
x=if dob.ln==1
sto.heading_body1
elsif dob.ln==2
@@ -120,7 +121,7 @@ module SiSU_HTML_scroll
elsif dob.ln==6
sto.heading_body6
end
- elsif dob.is=='heading_insert'
+ elsif dob.is==:heading_insert
x=if dob.ln==1
sto.heading_body1
elsif dob.ln==2
@@ -137,22 +138,22 @@ module SiSU_HTML_scroll
elsif dob.ln==4 \
and dob.obj=='Index'
sto.heading_body4
- book_idx=SiSU_Particulars::Combined_singleton.instance.get_idx_html(@md.opt).html_idx
+ book_idx=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx
book_idx.each do |x| #takes book index prepared for segments and strips segment identifying info
- x.gsub!(/<a href="\S+?\.html#(\d+)">(\1(?:-\d+)?)<\/a>/,'<a href="#\1">\2</a>')
+ x=x.gsub(/<a href="\S+?\.html#(\d+)">(\1(?:-\d+)?)<\/a>/,'<a href="#\1">\2</a>')
end
book_idx.join("\n")
#elsif dob.ln==4 \
#and dob.obj=~/Meta/
#p __LINE__
##and dob.obj=='Metadata'
- #metadata=Metadata::Summary.new(@md).xhtml.metadata
+ #metadata=SiSU_Metadata::Summary.new(@md).xhtml.metadata
elsif dob.ln==5
sto.heading_body5
elsif dob.ln==6
sto.heading_body6
end
- elsif dob.is=='para'
+ elsif dob.is==:para
if dob.indent \
and dob.hang \
and dob.indent =~/[0-9]/ \
@@ -171,19 +172,19 @@ module SiSU_HTML_scroll
end
else sto.para
end
- elsif dob.is=='block'
+ elsif dob.is==:block
sto.block
- elsif dob.is=='group'
+ elsif dob.is==:group
sto.group
- elsif dob.is=='alt'
+ elsif dob.is==:alt
sto.alt
- elsif dob.is=='verse'
+ elsif dob.is==:verse
sto.verse
- elsif dob.is=='code'
+ elsif dob.is==:code
sto.code
- elsif dob.is=='table'
+ elsif dob.is==:table
sto.table
- elsif dob.is=='break'
+ elsif dob.is==:break
sto.break
end
if dob =~/<a name="n\d+">/ \
@@ -199,8 +200,8 @@ module SiSU_HTML_scroll
end
def tails
scr_tail=[]
- format_head_scroll=SiSU_HTML_Format::Head_toc.new(@md)
- ads=SiSU_HTML_promo::Ad.new(@md)
+ format_head_scroll=SiSU_HTML_Format::HeadToc.new(@md)
+ ads=SiSU_HTML_Promo::Ad.new(@md)
scr_tail << format_head_scroll.scroll_tail << ads.div.close << ads.display << format_head_scroll.html_close
scr_tail
end
diff --git a/lib/sisu/v3/html_segments.rb b/lib/sisu/v3/html_segments.rb
index a7e37227..b1dbf73f 100644
--- a/lib/sisu/v3/html_segments.rb
+++ b/lib/sisu/v3/html_segments.rb
@@ -56,62 +56,78 @@
** Description: html segment generation, processing
=end
-module SiSU_HTML_seg
+module SiSU_HTML_Seg
require_relative 'shared_html' # shared_html.rb
require_relative 'html' # html.rb
require_relative 'html_promo' # html_promo.rb
require_relative 'shared_metadata' # shared_metadata.rb
- class Seg_output
+ class Output
def initialize(md,outputfile,seg,minitoc,type='')
@md,@output_seg_file,@seg,@minitoc,@type=md,outputfile,seg,minitoc,type
- @title_banner_=SiSU_Env::Create_site.new(@md.opt.cmd).html_seg_title_banner?
- @file=SiSU_Env::SiSU_file.new(@md)
+ @title_banner_=SiSU_Env::CreateSite.new(@md.opt.cmd).html_seg_title_banner?
+ @file=SiSU_Env::FileOp.new(@md)
+ @make=SiSU_Env::ProcessingSettings.new(@md)
+ @cl=(@make.build.html_minitoc?) \
+ ? 'content'
+ : 'content0'
end
def output
if @seg[:title] =~/\S/
filename_seg=[]
- filename_seg << @seg[:title] << @seg[:tocband_banner]
+ if @make.build.html_top_band?
+ filename_seg << @seg[:title] << @seg[:tocband_banner]
+ else
+ filename_seg << @seg[:title]
+ end
if @type=='endnotes'
@seg[:headings]=[]
- format_head_seg=SiSU_HTML_Format::Head_seg.new(@md)
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
if @title_banner_
@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
end
txt_obj={ txt: 'Endnotes', ocn_display: '' }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@seg[:headings] << format_seg.title_heading1
- filename_seg << @seg[:heading_endnotes] << @minitoc << @seg[:headings] << %{\n<div class="content">\n} << @seg[:endnote_all] << '</div>' # << '</div>'
+ filename_seg << @seg[:heading_endnotes] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:endnote_all] << '</div>' # << '</div>'
elsif @type=='idx'
@seg[:headings]=[]
- format_head_seg=SiSU_HTML_Format::Head_seg.new(@md)
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
if @title_banner_
@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
end
txt_obj={ txt: 'Index', ocn_display: '' }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@seg[:headings] << format_seg.title_heading1
- filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="content">\n} << @seg[:idx] << '</div>' # << '</div>'
+ filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:idx] << '</div>' # << '</div>'
elsif @type=='metadata'
- metadata=Metadata::Summary.new(@md).xhtml_display.metadata
+ metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata
@seg[:headings]=[]
- format_head_seg=SiSU_HTML_Format::Head_seg.new(@md)
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
if @title_banner_
@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
end
txt_obj={ txt: 'Metadata', ocn_display: '' }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@seg[:headings] << format_seg.title_heading1
- filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="content">\n} << metadata << '</div>' # << '</div>'
+ filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << metadata << '</div>' # << '</div>'
+ else
+ if @make.build.html_top_band?
+ filename_seg << @minitoc << @seg[:headings] << @seg[:main] << "\n</div>\n"
+ else
+ filename_seg << @minitoc << @seg[:main] << "\n</div>\n"
+ end
+ end
+ filename_seg <<=if @make.build.html_top_band?
+ @seg[:tail] << @seg[:tocband_bannerless] << @seg[:credits]
else
- filename_seg << @minitoc << @seg[:headings] << @seg[:main] << "\n</div>\n"
+ @seg[:tail] << @seg[:credits]
end
- filename_seg << @seg[:tail] << @seg[:tocband_bannerless] << @seg[:credits]
- filename_seg.flatten!.compact!
+ filename_seg=filename_seg.flatten.compact #watch
filename_seg.each do |str|
unless str =~/\A\s*\Z/
- str.strip!
- str.gsub!(Xx[:html_relative2],@file.path_rel_links.html_seg_2)
- str.gsub!(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
+ str=str.strip.
+ gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2).
+ gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
@output_seg_file << str
end
end
@@ -134,12 +150,19 @@ module SiSU_HTML_seg
attr_reader :seg_name_html,:seg_name_html_tracker
def initialize(md=nil,data='')
@md,@data=md,data
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@seg_name_html=@@seg_name_html || nil
@seg_name_html_tracker=@@tracker || nil
- @env=SiSU_Env::Info_env.new(@md.fns) if @md
+ @env=SiSU_Env::InfoEnv.new(@md.fns) if @md
if @md
- @title_banner_=SiSU_Env::Create_site.new(@md.opt.cmd).html_seg_title_banner?
+ @make=SiSU_Env::ProcessingSettings.new(@md)
+ @cl=(@make.build.html_minitoc?) \
+ ? 'content'
+ : 'content0'
+ else @cl='content'
+ end
+ if @md
+ @title_banner_=SiSU_Env::CreateSite.new(@md.opt.cmd).html_seg_title_banner?
end
end
def songsheet
@@ -147,9 +170,9 @@ module SiSU_HTML_seg
@minitoc=SiSU_HTML::Source::Toc.new(@md,@data).minitoc
data=get_subtoc_endnotes(@data)
data=articles(data)
- Seg.new.cleanup # (((( added ))))
+ SiSU_HTML_Seg::Seg.new.cleanup # (((( added ))))
#### (((( END )))) ####
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
@@seg_name=[]
end
@@ -161,14 +184,15 @@ module SiSU_HTML_seg
printed_endnote_seg='n'
idx_html=nil
if @md.book_idx
- #my_make_source_file=SiSU_Env::Create_file.new(@md.fns)
- idx_html=SiSU_Particulars::Combined_singleton.instance.get_idx_html(@md.opt).html_idx
+ #my_make_source_file=SiSU_Env::CreateFile.new(@md.fns)
+ idx_html=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx
idx_html.each {|x| @@seg[:idx] << x }
@@seg[:heading_idx]=''
end
data.each do |dob|
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==4
+ if (dob.is == :heading \
+ || dob.is == :heading_insert) \
+ && dob.ln == 4
@@seg_name << dob.name
seg_name=dob.name
end
@@ -177,7 +201,7 @@ module SiSU_HTML_seg
@@seg_total=@@seg_name.length
testforartnum=@@seg_name_html
SiSU_Screen::Ansi.new(@md.opt.cmd,@@seg_name.length).segmented if @md.opt.cmd =~/[MVv]/
- map_nametags=SiSU_Particulars::Combined_singleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
+ map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
data.each do |dob|
if defined? dob.obj \
and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/
@@ -192,32 +216,37 @@ module SiSU_HTML_seg
end
end
end
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==4
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==4
if dob.ocn==0
@@heading4=dob.obj
else @@heading4=dob.obj
end
@@is4=newfile=1
end
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==3
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==3
@@heading3=dob.obj
@@is4,@@is3=0,1
end
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==2
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==2
@@heading2=dob.obj
@@is4,@@is3,@@is2=0,0,1
end
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==1
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==1
@@heading1=dob.obj
@@is4,@@is3,@@is2,@@is1=0,0,0,1
end
if (@@is1 && !@@is2 && !@@is3 && !@@is4)
- if not (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==1
+ if not (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==1
head1=$_ #; check
end
end
@@ -225,46 +254,47 @@ module SiSU_HTML_seg
if newfile==1 \
or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/
newfile=0
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==4
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==4
if tracking != 0
- dirout=SiSU_Env::Info_env.new(@md.fns)
+ dirout=SiSU_Env::InfoEnv.new(@md.fns)
dir_sisu=dirout.path.output
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
unless FileTest.directory?(@file.output_path.html_seg.dir)
FileUtils::mkdir_p(@file.output_path.html_seg.dir) if File.writable?("#{@file.output_path.base.dir}/.")
end
- Seg.new(@md).tail
+ SiSU_HTML_Seg::Seg.new(@md).tail
segfilename="#{@file.output_path.html_seg.dir}/#{@@seg_name_html[tracking-1]}#{@md.lang_code_insert}#{Sfx[:html]}"
output_seg_file=File.new(segfilename,'w') if @@seg_name_html[tracking-1]
- minitoc=(@env.html_minitoc?) \
+ minitoc=(@make.build.html_minitoc?) \
? @minitoc
: ''
- if dob.is=='heading' \
- or @@seg_name_html[tracking-1] !~/endnotes|book_index|metadata/
- Seg_output.new(@md,output_seg_file,@@seg,minitoc).output
- elsif dob.is=='heading_insert'
+ if dob.is==:heading \
+ || (@@seg_name_html[tracking-1] !~/endnotes|book_index|metadata/)
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc).output
+ elsif dob.is==:heading_insert
if @@seg_name_html[tracking-1]=='endnotes'
- Seg_output.new(@md,output_seg_file,@@seg,minitoc,'endnotes').output
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'endnotes').output
elsif @@seg_name_html[tracking-1]=='book_index'
- Seg_output.new(@md,output_seg_file,@@seg,minitoc,'idx').output
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'idx').output
@@seg[:idx]=[]
elsif @@seg_name_html[tracking-1]=='metadata'
- Seg_output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output
else puts "#{__FILE__}::#{__LINE__}"
end
else puts "#{__FILE__}::#{__LINE__}"
end
- Seg.new.reinitialise
+ SiSU_HTML_Seg::Seg.new.reinitialise
heading_art(dob)
head(dob)
#keep use for last segment, eg if metadata is last segment
- #if @@seg_name_html[tracking] =~/metadata/ # this is for metadata
- # segfilename="#{@md.dir_out}/#{@md.fnl[:pre]}#{@@seg_name_html[tracking]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}"
- # output_seg_file=File.new(segfilename,'w')
- # Seg_output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output
- # Seg.new.reinitialise
- #end
+ if @@seg_name_html[tracking] =='metadata' # this is for metadata
+ segfilename="#{@file.output_path.html_seg.dir}/#{@@seg_name_html[tracking]}#{@md.lang_code_insert}#{Sfx[:html]}"
+ output_seg_file=File.new(segfilename,'w')
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output
+ Seg.new.reinitialise
+ end
end
if tracking==0
heading_art(dob)
@@ -273,8 +303,13 @@ module SiSU_HTML_seg
end
tracking=tracking+1
end
- @@get_hash_to=dob.name if (dob.is=='heading' or dob.is=='heading_insert') and dob.ln==4 and dob.name
- @@get_hash_fn=dob.name if (dob.is=='heading' or dob.is=='heading_insert') and dob.ln==4 and dob.name
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==4 \
+ && dob.name
+ @@get_hash_to=dob.name
+ @@get_hash_fn=dob.name
+ end
if dob.obj.class==String
markup(dob)
elsif dob.obj.class==Array
@@ -292,19 +327,27 @@ module SiSU_HTML_seg
data
end
def heading_art(dob)
- format_head_seg=SiSU_HTML_Format::Head_seg.new(@md)
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln.to_s =~/^[1-6]/
- if @@tracker < @@seg_total-1; @@seg[:dot_nav]=format_head_seg.dot_control_pre_next
- else @@seg[:dot_nav]=format_head_seg.dot_control_pre
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
+ @@seg[:dot_nav]=if (@make.build.html_navigation?) \
+ && (@make.build.html_navigation_bar?)
+ x=if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && (dob.ln.to_s =~/^[1-6]/)
+ x=if @@tracker < @@seg_total-1
+ format_head_seg.dot_control_pre_next
+ else
+ format_head_seg.dot_control_pre
+ end
+ else @@seg[:dot_nav]
end
+ else @@seg[:dot_nav]=''
end
- ads=SiSU_HTML_promo::Ad.new(@md)
+ ads=SiSU_HTML_Promo::Ad.new(@md)
@@seg[:title]=format_head_seg.head_seg << ads.div.major
end
def head(dob)
clean=/<!.*?!>|<:.*?>/
- format_head_seg=SiSU_HTML_Format::Head_seg.new(@md)
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
if @@tracker < @@seg_total-1
if @@tracker==0; @@segtocband=format_head_seg.toc_next2 #if format_head_seg.toc_next2
else @@segtocband=format_head_seg.toc_pre_next2 #if format_head_seg.toc_pre_next2
@@ -320,64 +363,68 @@ module SiSU_HTML_seg
else ''
end
@@seg[:tocband_bannerless] << '<br />' << conditional_div_close << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav])
- @@seg[:headings] << format_head_seg.seg_head_escript if SiSU_HTML_Format::Head_seg.method_defined? :seg_head_escript #debug PHP move up in text #bug
+ @@seg[:headings] << format_head_seg.seg_head_escript if SiSU_HTML_Format::HeadSeg.method_defined? :seg_head_escript #debug PHP move up in text #bug
if @title_banner_
@@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'')
end
ocn=if @@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: @@heading1, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading1.gsub(clean,'')
- @@heading1.gsub!(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
+ @@heading1=@@heading1.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
end
if @@is2==1
heading2=@@heading2
ocn=if heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading2.gsub(clean,'')
- @@heading2.gsub!(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
+ @@heading2=@@heading2.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
end
if @@is3==1
heading3=@@heading3
ocn=if heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading3.gsub(clean,'')
- @@heading3.gsub!(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
+ @@heading3=@@heading3.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
end
if @@is4==1
heading4=@@heading4
ocn=if heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
else ''
end
- @p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading4.gsub(clean,'')
end
@@tracker=@@tracker+1
end
def markup(dob)
@debug=[]
- format_head_seg=SiSU_HTML_Format::Head_seg.new(@md)
- if dob.is !~/meta/
- if dob.is =~/(?:heading|para)/ #extend as necessary FIX
- @p_num=SiSU_HTML_Format::Paragraph_number.new(@md,dob.ocn)
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
+ if dob.is !=:meta
+ if dob.is==:heading \
+ || dob.is==:heading_insert \
+ || dob.is == :para
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn)
end
- sto=SiSU_HTML_Format::Format_text_object.new(@md,dob)
- dob_html=if dob.is =~/heading|para/
- dob_html=if (dob.is=='heading' \
- or dob.is=='heading_insert')
+ sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
+ dob_html=if dob.is == :heading \
+ || dob.is==:heading_insert \
+ || dob.is==:para
+ dob_html=if dob.is==:heading \
+ || dob.is==:heading_insert
x=if dob.ln==4
sto.seg_heading4
elsif dob.ln==5
@@ -385,7 +432,7 @@ module SiSU_HTML_seg
elsif dob.ln==6
sto.seg_heading6
end
- elsif dob.is=='para'
+ elsif dob.is==:para
if dob.indent \
and dob.hang \
and dob.indent =~/[0-9]/ \
@@ -405,49 +452,55 @@ module SiSU_HTML_seg
else sto.para
end
end
- elsif dob.is=='block'
+ elsif dob.is==:block
sto.block
- elsif dob.is=='group'
+ elsif dob.is==:group
sto.group
- elsif dob.is=='alt'
+ elsif dob.is==:alt
sto.alt
- elsif dob.is=='verse'
+ elsif dob.is==:verse
sto.verse
- elsif dob.is=='code'
+ elsif dob.is==:code
sto.code
- elsif dob.is=='table'
+ elsif dob.is==:table
sto.table
- elsif dob.is=='break'
+ elsif dob.is==:break
sto.break
end
if @md.flag_separate_endnotes
- dob.obj.gsub!(/"\s+href="#_(\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#_\\1">}) #endnote- twice #removed file type
+ dob.obj=dob.obj.gsub(/"\s+href="#_(\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#_\\1">}) #endnote- twice #removed file type
end
if dob.obj !~/#{@vz.margin_txt_w1}|#{@vz.margin_txt_w2}/
- if dob.is =~/heading|para/ and (not dob.ocn or dob.ocn.to_s.empty?)
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,dob)
+ if (dob.is==:heading \
+ || dob.is==:heading_insert \
+ || dob.is==:para) \
+ && (not dob.ocn \
+ || (dob.ocn.to_s.empty?))
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,dob)
end
- dob.obj.gsub!(/\s*(-\{{2}~\d+|<:e[:_]\d+>).*/,'') #potentially dagerous - removes all paragraphs with <!e_!> #?? workpoint
+ dob.obj=dob.obj.gsub(/\s*(-\{{2}~\d+|<:e[:_]\d+>).*/,'') #potentially dagerous - removes all paragraphs with <!e_!> #?? workpoint
if dob.obj =~/<a name="_\d+" href="#-\d+">&nbsp;<sup>/ #endnote- note-
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,dob)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,dob)
dob=format_seg.no_paranum
end
end
- if (dob.is=='heading' \
- || dob.is=='heading_insert') \
- and dob.ln==4
- @@seg[:main] << %{\n<div class="content">\n}
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==4
+ @@seg[:main] << %{\n<div class="#{@cl}">\n}
@@seg[:main] << dob_html
- @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc
+ if @make.build.segsubtoc?
+ @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc
+ end
else
@@seg[:main] << dob_html #unless @@flag_alt==true
end
end
end
def tail
- format_head_seg=SiSU_HTML_Format::Head_seg.new(@md)
+ format_head_seg=SiSU_HTML_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}
+ @@seg[:tail] << %{\n<div class="#{@cl}">\n<div class="endnote">\n}
if @@seg_endnotes[@@get_hash_fn].flatten.length > 0
@@seg[:tail] << format_head_seg.endnote_mark
@@seg[:tail] << @@seg_endnotes[@@get_hash_fn].flatten #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES|
@@ -455,7 +508,7 @@ module SiSU_HTML_seg
@@seg[:tail] << '</div>'
@@seg[:tail] << '</div>' #this div closes div class content
end
- ads=SiSU_HTML_promo::Ad.new(@md)
+ ads=SiSU_HTML_Promo::Ad.new(@md)
@@seg[:credits] << format_head_seg.credit << ads.div.close << ads.display << format_head_seg.html_close
end
def reinitialise
@@ -471,18 +524,20 @@ module SiSU_HTML_seg
end
def get_subtoc_endnotes(data) #get endnotes & sub-table of contents subtoc
data.each do |dob|
- dob.obj.gsub!(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
+ dob.obj=dob.obj.gsub(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
if @md.flag_auto_endnotes
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln.to_s =~/^[1234]/ \
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && (dob.ln.to_s =~/^[1234]/) \
and not @@fn.to_s.empty?
@@seg_endnotes[@@fn]=[]
@@seg_endnotes[@@fn] << @@seg_endnotes_array
@@seg_endnotes_array=[] if dob.ln==4
@@fns_previous=@md.fns if dob.ln==4 and dob.name =~/^meta/
end
- if (dob.is=='heading' or dob.is=='heading_insert') \
- and dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs
@@seg_subtoc[@@fn]=@@seg_subtoc_array
@@seg_subtoc_array=[]
if dob.name \
@@ -496,23 +551,23 @@ module SiSU_HTML_seg
end
end
end
- if dob.is=='heading' \
- and dob.ln.to_s =~/^[56]/
+ if dob.is==:heading \
+ && (dob.ln.to_s =~/^[56]/)
case dob.ln
when 5
txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
subtoc=format_seg.subtoc_lev5 #keep and make available, this is the subtoc
when 6
txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc
end
@@seg_subtoc_array << subtoc
end
if @md.flag_auto_endnotes
- if dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <a name="_[\d*+]+"/ \
- and dob.is !~/^code/ # endnote-
+ if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <a name="_[\d*+]+"/) \
+ && dob.is !=:code # endnote-
endnote_array=[]
if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
endnote_array << dob.obj.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m)
@@ -523,7 +578,7 @@ module SiSU_HTML_seg
if dob.obj=~/#{Mx[:en_b_o]}[+]\d+\s.+?#{Mx[:en_b_c]}/m
endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}[+]\d+\s.+?#{Mx[:en_b_c]}/m)
end
- endnote_array.flatten!.compact! #check compacting
+ endnote_array=endnote_array.flatten.compact #watch, check compacting
endnote_array.each do |note|
note_match=note.dup
note_match_seg=note.dup
@@ -531,7 +586,7 @@ module SiSU_HTML_seg
try=e_n.split(/<br \/>/)
try.each do |e|
txt_obj={ txt: e }
- format_seg=SiSU_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_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
@@ -544,11 +599,11 @@ module SiSU_HTML_seg
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_HTML_Format::Format_seg.new(@md,txt_obj)
+ format_seg=SiSU_HTML_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
- dob.obj.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
end
end
end
diff --git a/lib/sisu/v3/html_table.rb b/lib/sisu/v3/html_table.rb
index ca944dea..87a4c4b6 100644
--- a/lib/sisu/v3/html_table.rb
+++ b/lib/sisu/v3/html_table.rb
@@ -56,10 +56,10 @@
** Description: shared html parts
=end
-module SiSU_HTML_table
+module SiSU_HTML_Table
require_relative 'defaults' # defaults.rb
require_relative 'xhtml_table.rb' # xhtml_table.rb
- class Table_html <SiSU_XHTML_table::Table_xhtml
+ class TableHTML <SiSU_XHTML_Table::TableXHTML
end
end
__END__
diff --git a/lib/sisu/v3/html_tune.rb b/lib/sisu/v3/html_tune.rb
index e8c12d6a..e4ac08ee 100644
--- a/lib/sisu/v3/html_tune.rb
+++ b/lib/sisu/v3/html_tune.rb
@@ -76,7 +76,7 @@ module SiSU_HTML_Tune
class Output
def initialize(data,md)
@data,@md=data,md
- @file=SiSU_Env::Info_file.new(@md.fns)
+ @file=SiSU_Env::InfoFile.new(@md.fns)
@cX=SiSU_Screen::Ansi.new(@md.opt.cmd).cX
end
def hard_output
@@ -84,7 +84,7 @@ module SiSU_HTML_Tune
data=[]
@data.each do |x|
unless x.obj.empty?
- x.obj.strip!
+ x.obj=x.obj.strip
data << x
end
end
@@ -96,7 +96,7 @@ module SiSU_HTML_Tune
File.open(@file.marshal.html_tune,'w') {|f| Marshal.dump(@data.to_a,f)}
end
end
- class Clean_html
+ class CleanHTML
def initialize(html='')
@html=html
end
@@ -106,103 +106,102 @@ module SiSU_HTML_Tune
html
else html.obj
end
- str.gsub!(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;')
- str.gsub!(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
- str.gsub!(/¢/u,'&cent;') # &#162;
- str.gsub!(/£/u,'&pound;') # &#163;
- str.gsub!(/¥/u,'&yen;') # &#165;
- str.gsub!(/§/u,'&sect;') # &#167;
- str.gsub!(/©/u,'&copy;') # &#169;
- str.gsub!(/ª/u,'&ordf;') # &#170;
- str.gsub!(/«/u,'&laquo;') # &#171;
- str.gsub!(/®/u,'&reg;') # &#174;
- str.gsub!(/°/u,'&deg;') # &#176;
- str.gsub!(/±/u,'&plusmn;') # &#177;
- str.gsub!(/²/u,'&sup2;') # &#178;
- str.gsub!(/³/u,'&sup3;') # &#179;
- str.gsub!(/µ/u,'&micro;') # &#181;
- str.gsub!(/¶/u,'&para;') # &#182;
- str.gsub!(/¹/u,'&sup1;') # &#185;
- str.gsub!(/º/u,'&ordm;') # &#186;
- str.gsub!(/»/u,'&raquo;') # &#187;
- str.gsub!(/¼/u,'&frac14;') # &#188;
- str.gsub!(/½/u,'&frac12;') # &#189;
- str.gsub!(/¾/u,'&frac34;') # &#190;
- str.gsub!(/×/u,'&times;') # &#215;
- str.gsub!(/÷/u,'&divide;') # &#247;
- str.gsub!(/¿/u,'&iquest;') # &#191;
- str.gsub!(/À/u,'&Agrave;') # &#192;
- str.gsub!(/Á/u,'&Aacute;') # &#193;
- str.gsub!(/Â/u,'&Acirc;') # &#194;
- str.gsub!(/Ã/u,'&Atilde;') # &#195;
- str.gsub!(/Ä/u,'&Auml;') # &#196;
- str.gsub!(/Å/u,'&Aring;') # &#197;
- str.gsub!(/Æ/u,'&AElig;') # &#198;
- str.gsub!(/Ç/u,'&Ccedil;') # &#199;
- str.gsub!(/È/u,'&Egrave;') # &#200;
- str.gsub!(/É/u,'&Eacute;') # &#201;
- str.gsub!(/Ê/u,'&Ecirc;') # &#202;
- str.gsub!(/Ë/u,'&Euml;') # &#203;
- str.gsub!(/Ì/u,'&Igrave;') # &#204;
- str.gsub!(/Í/u,'&Iacute;') # &#205;
- str.gsub!(/Î/u,'&Icirc;') # &#206;
- str.gsub!(/Ï/u,'&Iuml;') # &#207;
- str.gsub!(/Ð/u,'&ETH;') # &#208;
- str.gsub!(/Ñ/u,'&Ntilde;') # &#209;
- str.gsub!(/Ò/u,'&Ograve;') # &#210;
- str.gsub!(/Ó/u,'&Oacute;') # &#211;
- str.gsub!(/Ô/u,'&Ocirc;') # &#212;
- str.gsub!(/Õ/u,'&Otilde;') # &#213;
- str.gsub!(/Ö/u,'&Ouml;') # &#214;
- str.gsub!(/Ø/u,'&Oslash;') # &#216;
- str.gsub!(/Ù/u,'&Ugrave;') # &#217;
- str.gsub!(/Ú/u,'&Uacute;') # &#218;
- str.gsub!(/Û/u,'&Ucirc;') # &#219;
- str.gsub!(/Ü/u,'&Uuml;') # &#220;
- str.gsub!(/Ý/u,'&Yacute;') # &#221;
- str.gsub!(/Þ/u,'&THORN;') # &#222;
- str.gsub!(/ß/u,'&szlig;') # &#223;
- str.gsub!(/à/u,'&agrave;') # &#224;
- str.gsub!(/á/u,'&aacute;') # &#225;
- str.gsub!(/â/u,'&acirc;') # &#226;
- str.gsub!(/ã/u,'&atilde;') # &#227;
- str.gsub!(/ä/u,'&auml;') # &#228;
- str.gsub!(/å/u,'&aring;') # &#229;
- str.gsub!(/æ/u,'&aelig;') # &#230;
- str.gsub!(/ç/u,'&ccedil;') # &#231;
- str.gsub!(/è/u,'&egrave;') # &#232;
- str.gsub!(/é/u,'&eacute;') # &#233;
- str.gsub!(/ê/u,'&ecirc;') # &#234;
- str.gsub!(/ë/u,'&euml;') # &#235;
- str.gsub!(/ì/u,'&igrave;') # &#236;
- str.gsub!(/í/u,'&iacute;') # &#237;
- str.gsub!(/î/u,'&icirc;') # &#238;
- str.gsub!(/ï/u,'&iuml;') # &#239;
- str.gsub!(/ð/u,'&eth;') # &#240;
- str.gsub!(/ñ/u,'&ntilde;') # &#241;
- str.gsub!(/ò/u,'&ograve;') # &#242;
- str.gsub!(/ó/u,'&oacute;') # &#243;
- str.gsub!(/ô/u,'&ocirc;') # &#244;
- str.gsub!(/õ/u,'&otilde;') # &#245;
- str.gsub!(/ö/u,'&ouml;') # &#246;
- str.gsub!(/ø/u,'&oslash;') # &#248;
- str.gsub!(/ù/u,'&ugrave;') # &#250;
- str.gsub!(/ú/u,'&uacute;') # &#251;
- str.gsub!(/û/u,'&ucirc;') # &#252;
- str.gsub!(/ü/u,'&uuml;') # &#253;
- str.gsub!(/þ/u,'&thorn;') # &#254;
- str.gsub!(/ÿ/u,'&yuml;') # &#255;
- str.gsub!(/ý/u,'&yacute;')
- 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;').
+ gsub(/¢/u,'&cent;'). # &#162;
+ gsub(/£/u,'&pound;'). # &#163;
+ gsub(/¥/u,'&yen;'). # &#165;
+ gsub(/§/u,'&sect;'). # &#167;
+ gsub(/©/u,'&copy;'). # &#169;
+ gsub(/ª/u,'&ordf;'). # &#170;
+ gsub(/«/u,'&laquo;'). # &#171;
+ gsub(/®/u,'&reg;'). # &#174;
+ gsub(/°/u,'&deg;'). # &#176;
+ gsub(/±/u,'&plusmn;'). # &#177;
+ gsub(/²/u,'&sup2;'). # &#178;
+ gsub(/³/u,'&sup3;'). # &#179;
+ gsub(/µ/u,'&micro;'). # &#181;
+ gsub(/¶/u,'&para;'). # &#182;
+ gsub(/¹/u,'&sup1;'). # &#185;
+ gsub(/º/u,'&ordm;'). # &#186;
+ gsub(/»/u,'&raquo;'). # &#187;
+ gsub(/¼/u,'&frac14;'). # &#188;
+ gsub(/½/u,'&frac12;'). # &#189;
+ gsub(/¾/u,'&frac34;'). # &#190;
+ gsub(/×/u,'&times;'). # &#215;
+ gsub(/÷/u,'&divide;'). # &#247;
+ gsub(/¿/u,'&iquest;'). # &#191;
+ gsub(/À/u,'&Agrave;'). # &#192;
+ gsub(/Á/u,'&Aacute;'). # &#193;
+ gsub(/Â/u,'&Acirc;'). # &#194;
+ gsub(/Ã/u,'&Atilde;'). # &#195;
+ gsub(/Ä/u,'&Auml;'). # &#196;
+ gsub(/Å/u,'&Aring;'). # &#197;
+ gsub(/Æ/u,'&AElig;'). # &#198;
+ gsub(/Ç/u,'&Ccedil;'). # &#199;
+ gsub(/È/u,'&Egrave;'). # &#200;
+ gsub(/É/u,'&Eacute;'). # &#201;
+ gsub(/Ê/u,'&Ecirc;'). # &#202;
+ gsub(/Ë/u,'&Euml;'). # &#203;
+ gsub(/Ì/u,'&Igrave;'). # &#204;
+ gsub(/Í/u,'&Iacute;'). # &#205;
+ gsub(/Î/u,'&Icirc;'). # &#206;
+ gsub(/Ï/u,'&Iuml;'). # &#207;
+ gsub(/Ð/u,'&ETH;'). # &#208;
+ gsub(/Ñ/u,'&Ntilde;'). # &#209;
+ gsub(/Ò/u,'&Ograve;'). # &#210;
+ gsub(/Ó/u,'&Oacute;'). # &#211;
+ gsub(/Ô/u,'&Ocirc;'). # &#212;
+ gsub(/Õ/u,'&Otilde;'). # &#213;
+ gsub(/Ö/u,'&Ouml;'). # &#214;
+ gsub(/Ø/u,'&Oslash;'). # &#216;
+ gsub(/Ù/u,'&Ugrave;'). # &#217;
+ gsub(/Ú/u,'&Uacute;'). # &#218;
+ gsub(/Û/u,'&Ucirc;'). # &#219;
+ gsub(/Ü/u,'&Uuml;'). # &#220;
+ gsub(/Ý/u,'&Yacute;'). # &#221;
+ gsub(/Þ/u,'&THORN;'). # &#222;
+ gsub(/ß/u,'&szlig;'). # &#223;
+ gsub(/à/u,'&agrave;'). # &#224;
+ gsub(/á/u,'&aacute;'). # &#225;
+ gsub(/â/u,'&acirc;'). # &#226;
+ gsub(/ã/u,'&atilde;'). # &#227;
+ gsub(/ä/u,'&auml;'). # &#228;
+ gsub(/å/u,'&aring;'). # &#229;
+ gsub(/æ/u,'&aelig;'). # &#230;
+ gsub(/ç/u,'&ccedil;'). # &#231;
+ gsub(/è/u,'&egrave;'). # &#232;
+ gsub(/é/u,'&eacute;'). # &#233;
+ gsub(/ê/u,'&ecirc;'). # &#234;
+ gsub(/ë/u,'&euml;'). # &#235;
+ gsub(/ì/u,'&igrave;'). # &#236;
+ gsub(/í/u,'&iacute;'). # &#237;
+ gsub(/î/u,'&icirc;'). # &#238;
+ gsub(/ï/u,'&iuml;'). # &#239;
+ gsub(/ð/u,'&eth;'). # &#240;
+ gsub(/ñ/u,'&ntilde;'). # &#241;
+ gsub(/ò/u,'&ograve;'). # &#242;
+ gsub(/ó/u,'&oacute;'). # &#243;
+ gsub(/ô/u,'&ocirc;'). # &#244;
+ gsub(/õ/u,'&otilde;'). # &#245;
+ gsub(/ö/u,'&ouml;'). # &#246;
+ gsub(/ø/u,'&oslash;'). # &#248;
+ gsub(/ù/u,'&ugrave;'). # &#250;
+ gsub(/ú/u,'&uacute;'). # &#251;
+ gsub(/û/u,'&ucirc;'). # &#252;
+ gsub(/ü/u,'&uuml;'). # &#253;
+ gsub(/þ/u,'&thorn;'). # &#254;
+ gsub(/ÿ/u,'&yuml;'). # &#255;
+ gsub(/ý/u,'&yacute;')
end
end
class Tune
def initialize(data,md)
@data,@md=data,md
- @vz=SiSU_Env::Get_init.instance.skin
- @env=SiSU_Env::Info_env.new(@md.fns)
- @sys=SiSU_Env::System_call.new
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ @sys=SiSU_Env::SystemCall.new
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@brace_url=SiSU_Viz::Skin.new.url_decoration
end
def songsheet
@@ -212,11 +211,11 @@ module SiSU_HTML_Tune
songsheet_array(@data)
#data=songsheet_array(@data)
if @md.opt.cmd =~/M/ #Hard Output Tune Optional on/off here
- data=Output.new(@data,@md).hard_output
- Output.new(@data,@md).marshal
+ data=SiSU_HTML_Tune::Output.new(@data,@md).hard_output
+ SiSU_HTML_Tune::Output.new(@data,@md).marshal
end
- tuned=Tune.new(@data,@md).output
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ tuned=SiSU_HTML_Tune::Tune.new(@data,@md).output
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
@@ -266,15 +265,15 @@ module SiSU_HTML_Tune
%{<a href="#{u}"><img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0"></a>#{caption}}
else %{<img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0">#{caption}}
end
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
+ word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
else
link=m[/(.+)/m]
png=m.scan(/\S+/)[0].strip
link=link.strip
- u.gsub!(/(\S+)/,"#{Xx[:segment]}#\\1") if u !~/\// unless http_ #marker: in scroll remove; in seg replace
+ u=u.gsub(/(\S+)/,"#{Xx[:segment]}#\\1") if u !~/\// unless http_ #marker: in scroll remove; in seg replace
ins=%{<a href="#{u}">#{link}</a>}
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins)
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
+ word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins).
+ gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
end
word
else word
@@ -284,95 +283,86 @@ module SiSU_HTML_Tune
@words=@words.join(' ')
end
def url_markup(dob)
- unless dob.is=='code'
+ unless dob.is==:code
if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
@word_mode=dob.obj.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)[()\[\]]*[,.;:!?'"]{0,2}|(?:#{Mx[:gl_o]}\S+?#{Mx[:gl_c]})+|[^#{Mx[:lnk_o]}#{Mx[:lnk_c]}]+/mu)
words=urls(@word_mode)
- dob.obj.gsub!(/.+/m,words)
+ dob.obj=dob.obj.gsub(/.+/m,words)
end #consider change, do a while loop
- dob.obj.gsub!(/\\copyright/i,%{<sup>&copy;</sup>})
+ dob.obj=dob.obj.gsub(/\\copyright/i,%{<sup>&copy;</sup>})
if (dob.obj !~/\<:ad\s+\.\.\//)
- dob.obj.gsub!(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*!\>/,
+ dob.obj=dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*!\>/,
%{\n<center><a href="http:\/\/\\1" target="external"><img src="#{@env.url.images_local}/\\2" alt="\\3"></a></center>\n})
else
- dob.obj.gsub!(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*\>/,
+ dob.obj=dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*\>/,
%{\n<center><a href="\\1" target="_top"><img src="#{@env.url.images_local}/\\2" alt="\\3"></a></center>\n})
end
- dob.obj.gsub!(/!pick/,%{<img border="0" height="15" width="15" src="#{@env.url.images}/#{@vz.icon_choice}" alt="stellar">})
- dob.obj.gsub!(/!new/,%{&nbsp;<img border="0" height="15" width="15" src="#{@env.url.images}/#{@vz.icon_new}" alt="new">})
- dob.obj.gsub!(/<:h(.{1,7}?)>/,'<a href="#h\1">\1</a>')
- dob.obj.gsub!(/<:to(\d{1,7}?)>/,'<a href="#to\1">to&nbsp;{&nbsp;\1&nbsp;}</a> ')
- dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>') #http ftp matches escaped, no decoration
- dob.obj.gsub!(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="mailto:\\1">\\1</a>#{@brace_url.xml_close}})
- dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
+ dob.obj=dob.obj.gsub(/!pick/,%{<img border="0" height="15" width="15" src="#{@env.url.images}/#{@vz.icon_choice}" alt="stellar">}).
+ gsub(/!new/,%{&nbsp;<img border="0" height="15" width="15" src="#{@env.url.images}/#{@vz.icon_new}" alt="new">}).
+ gsub(/<:h(.{1,7}?)>/,'<a href="#h\1">\1</a>').
+ gsub(/<:to(\d{1,7}?)>/,'<a href="#to\1">to&nbsp;{&nbsp;\1&nbsp;}</a> ').
+ gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</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}<a href="mailto:\\1">\\1</a>#{@brace_url.xml_close}}).
+ gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
if dob.obj =~/#{Xx[:html_relative2]}\/\S+/ \
and dob.obj !~/(\"#{Xx[:html_relative2]}\/\S+?\"|>\s*#{Xx[:html_relative2]}\/\S+<)/
- dob.obj.gsub!(/(#{Xx[:html_relative2]}\/\S+)/,'<a href="\1">\1</a>')
+ dob.obj=dob.obj.gsub(/(#{Xx[:html_relative2]}\/\S+)/,'<a href="\1">\1</a>')
end
if dob.obj =~/..\/\S+/ \
and dob.obj !~/(\"..\/\S+?\"|>\s*..\/\S+<)/
- dob.obj.gsub!(/\.\.(\/\S+)/,%{<a href="#{Xx[:html_relative2]}\1">\1</a>})
+ dob.obj=dob.obj.gsub(/\.\.(\/\S+)/,%{<a href="#{Xx[:html_relative2]}\1">\1</a>})
end
- dob.obj.gsub!(/<a href=":/,%{<a href="#{@vz.url_site}/})
- dob.obj.gsub!(/<a href="\.\.\//,%{<a href="#{@vz.url_site}/})
- dob.obj.gsub!(/<a href="#{Xx[:html_relative2]}\//,%{<a href="#{@vz.url_site}/})
+ dob.obj=dob.obj.gsub(/<a href=":/,%{<a href="#{@vz.url_site}/}).
+ gsub(/<a href="\.\.\//,%{<a href="#{@vz.url_site}/}).
+ gsub(/<a href="#{Xx[:html_relative2]}\//,%{<a href="#{@vz.url_site}/})
else
- dob.obj.gsub!(/</m,'&lt;'); dob.obj.gsub!(/>/m,'&gt;')
+ dob.obj=dob.obj.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
end
dob
end
- def para_numbers
- data=@data
- @tuned_file=[]
- data.each do |dob|
- dob.gsub!(/#{Mx[:lv_o]}\d:(\S?)#{Mx[:lv_c]}/,'\0<a name="H#\1">#\1.</a>&nbsp;') #fix Mx[:lv_o]
- @tuned_file << dob
- end
- end
def angle_brackets(dob)
- dob.obj.gsub!(/<([a-z:\/]+)>/,"#{Dx[:lt_xml]}\\1#{Dx[:gt_xml]}")
+ dob.obj=dob.obj.gsub(/<([a-z:\/]+)>/,"#{Dx[:lt_xml]}\\1#{Dx[:gt_xml]}")
dob
end
def endnotes_html(dob)
- unless dob.is =~/^code/
- dob.obj.gsub!(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4') #endnote- note- (careful may have switched)
- dob.obj.gsub!(/(#{Mx[:en_b_o]})([*+]\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4') #endnote- note- (careful may have switched)
- dob.obj.gsub!(/(#{Mx[:en_a_o]})([*+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2</sup></a> \3 \4') #endnote- note- (careful may have switched)
+ unless dob.is ==:code
+ dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
+ '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
+ '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
+ gsub(/(#{Mx[:en_b_o]})([*+]\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
+ '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
+ '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
+ gsub(/(#{Mx[:en_a_o]})([*+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
+ '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
+ '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2</sup></a> \3 \4') #endnote- note- (careful may have switched)
end
dob
end
def markup(dob)
- dob.obj.gsub!(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is=='table'
- dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>')
- dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>')
- dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
- dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>')
- dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>')
- dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>')
- dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>')
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
- dob.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>') # tt, kbd
- dob.obj.gsub!(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'<a name="\1"></a>')
- dob.obj.gsub!(/^#{Mx[:gl_bullet]}/m,'●&nbsp;&nbsp;')
- dob.obj.gsub!(/#{Mx[:nbsp]}/,'&nbsp;')
- dob.obj.gsub!(/<(p|br)>/,'<\1 />')
- dob=SiSU_HTML_Tune::Clean_html.new(dob).clean
+ dob.obj=dob.obj.gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
+ 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[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'<a name="\1"></a>').
+ gsub(/^#{Mx[:gl_bullet]}/m,'●&nbsp;&nbsp;').
+ gsub(/#{Mx[:nbsp]}/,'&nbsp;').
+ gsub(/<(p|br)>/,'<\1 />')
+ dob=SiSU_HTML_Tune::CleanHTML.new(dob).clean
dob
end
def output
data=@data
@tuned_file=[]
data.each do |dob|
- dob.obj.strip!
- dob.obj.chomp!
+ dob.obj=dob.obj.strip.chomp
@tuned_file << dob
end
@tuned_file << "\n<EOF>" if (@md.fns =~/\.sst0/) #remove
diff --git a/lib/sisu/v3/hub.rb b/lib/sisu/v3/hub.rb
index 149a5727..5f256314 100644
--- a/lib/sisu/v3/hub.rb
+++ b/lib/sisu/v3/hub.rb
@@ -63,7 +63,7 @@ module SiSU
include SiSU_Screen
@@pwd_the=Dir.pwd
class Op
- @@env=SiSU_Env::Info_env.new
+ @@env=SiSU_Env::InfoEnv.new
def initialize(opt,req,message)
@opt,@req,@message=opt,req,message
@n_do=0
@@ -129,11 +129,11 @@ module SiSU
end
if not @opt.files.empty?
@opt.files.each_with_index do |fns,i|
- env=SiSU_Env::Info_env.new(fns)
+ env=SiSU_Env::InfoEnv.new(fns)
if fns =~ /sisupod(?:\.txz)?|\S+?(?:\.ss[mt]\.txz|\.ssp)$/
require_relative 'remote' # remote.rb #check
pod_name=if fns =~ /http:\/\/\S+?(?:\.ss[mt]\.txz|\.ssp)$/
- SiSU_Remote::Remote_download.new(fns).pod.name
+ SiSU_Remote::RemoteDownload.new(fns).pod.name
else
re_p=/(\S+?\.ss[mt](?:\.txz)?)$/
re_p.match(fns).captures.join
@@ -145,7 +145,7 @@ module SiSU
elsif fns =~ /sisupod(?:\.zip)?|\S+?(?:\.ss[mt]\.zip|\.ssp)$/
require_relative 'remote' # remote.rb #check
pod_name=if fns =~ /http:\/\/\S+?(?:\.ss[mt]\.zip|\.ssp)$/
- SiSU_Remote::Remote_download.new(fns).pod.name
+ SiSU_Remote::RemoteDownload.new(fns).pod.name
else
re_p=/(\S+?\.ss[mt](?:\.zip)?)$/
re_p.match(fns).captures.join
@@ -171,12 +171,12 @@ module SiSU
@@pwd=@opt.pth
end
Dir.chdir(@opt.pth) #watch
- env=SiSU_Env::Info_env.new(fns)
+ env=SiSU_Env::InfoEnv.new(fns)
if @req !~/(?:urls|remote)$/
if @opt.cmd.inspect =~/-P/\
and @req =~ /^po4a$/
require_relative 'composite' # composite.rb #pre-processing
- SiSU_po4a::Source.new(@opt).read # -P po4a.rb
+ SiSU_Po4a::Source.new(@opt).read # -P po4a.rb
elsif @req=~/^dal$/ \
and FileTest.file?(@opt.fns) \
and @opt.fns =~ /\.(?:(?:-|ssm\.)?sst|ssm)$/
@@ -201,14 +201,14 @@ module SiSU
when /^concordance$/; SiSU_Concordance::Source.new(@opt).read # -w concordance.rb
when /^share_src$/; SiSU_Markup::Source.new(@opt).read # -s share_src.rb
when /^sisupod_make$/; SiSU_Doc::Source.new(@opt).read # -S sisupod_make.rb
-# when /^source_kdissert$/; SiSU_Kdi_source::Source.new(@opt).read # -S share_src_kdissert.rb
- when /^digests$/; SiSU_Digest_view::Source.new(@opt).read # -N digests.rb
+# when /^source_kdissert$/; SiSU_KdiSource::Source.new(@opt).read # -S share_src_kdissert.rb
+ when /^digests$/; SiSU_DigestView::Source.new(@opt).read # -N digests.rb
when /^plaintext$/; SiSU_Plaintext::Source.new(@opt).read # -t -a plaintext.rb
- when /^po4a$/; SiSU_po4a::Source.new(@opt).read # -P po4a.rb
+ when /^po4a$/; SiSU_Po4a::Source.new(@opt).read # -P po4a.rb
#when /^wikispeak$/; SiSU_Wikispeak::Source.new(@opt).read # -g
when /^epub$/; SiSU_EPUB::Source.new(@opt).read # -e epub.rb
when /^odf$/; SiSU_ODF::Source.new(@opt).read # -o odf.rb
- when /^xml_md_oai_pmh_dc$/; SiSU_XML_metadata::OAI_PMH.new(@opt).read # -O
+ when /^xml_md_oai_pmh_dc$/; SiSU_XML_Metadata::OAI_PMH.new(@opt).read # -O
when /^texpdf$/; SiSU_TeX::Source.new(@opt).read # -p texpdf.rb
when /^manpage$/; SiSU_Manpage::Source.new(@opt).read # -i manpage.rb
when /^texinfo$/; SiSU_TexInfo::Source.new(@opt).read # -I texinfo.rb
@@ -216,14 +216,16 @@ module SiSU
when /^xhtml$/; SiSU_XHTML::Source.new(@opt).read # -b xhtml.rb
when /^xml$/; SiSU_XML_SAX::Source.new(@opt).read # -x xml.rb
when /^xml_dom$/; SiSU_XML_DOM::Source.new(@opt).read # -X xml_dom.rb
+ when /^shared_images$/; SiSU_Images::Source.new(@opt).read # -j shared_images.rb
#when /^xml_fictionbook$/; SiSU_XML_Fictionbook::Source.new(@opt).read # -f
- when /^xml_scaffold$/; SiSU_XML_scaffold::Source.new(@opt).read # -k xml_scaffold.rb
+ when /^xml_scaffold$/; SiSU_XML_Scaffold::Source.new(@opt).read # -k xml_scaffold.rb
when /^embedded$/; SiSU_Embedded::Source.new(@opt).read # -m embedded.rb (image and other content) #check
when /^manifest$/; SiSU_Manifest::Source.new(@opt).read # -y manifest.rb
when /^qrcode$/; SiSU_QRcode::Source.new(@opt).read # -Q qrcode.rb
when /^sitemaps$/; SiSU_Sitemaps::Source.new(@opt).read # -Y sitemaps.rb
when /^zap$/; SiSU_Zap::Source.new(@opt).read # -Z zap.rb
- when /^dbi$/; SiSU_DBI::SiSU_SQL.new(@opt).connect # -D -d dbi.rb
+ when /^dbi$/; SiSU_DBI::SQL.new(@opt).connect # -D -d dbi.rb
+ when /^dbi_discreet$/; SiSU_DBI_Discreet::SQL.new(@opt).build # -d dbi_discreet.rb
end
@n_do=@n_do+1
SiSU_Screen::Ansi.new(@opt.cmd,@n_do,"#{@req.upcase} processed").files_processed if @opt.cmd =~/[MVv]/
@@ -233,13 +235,13 @@ module SiSU
else
if @req !~/^conf$/ \
and @opt.fns !~/http:\/\//
- Operations.new(@opt).not_found
+ SiSU::Operations.new(@opt).not_found
end
end
elsif FileTest.file?(put)
if @opt.mod.inspect !~/harvest/ #decide whether should permit harvest in single operation
case @req
- when /^urls$/; SiSU_urls::Source.new(@opt).read # -u -v -V -M
+ when /^urls$/; SiSU_Urls::Source.new(@opt).read # -u -v -V -M
when /^remote$/
case @message
when /scp/; SiSU_Remote::Put.new(@opt).scp # -r
@@ -250,14 +252,14 @@ module SiSU
@n_do=@n_do+1
SiSU_Screen::Ansi.new(@opt.cmd,@n_do,"#{@req.upcase} processed").files_processed if @opt.cmd =~/[MVv]/
end
- else Operations.new(@opt).not_found
+ else SiSU::Operations.new(@opt).not_found
end
end
end
- elsif @req =~/^dbi$/; SiSU_DBI::SiSU_SQL.new(@opt).connect # -D -d
+ elsif @req =~/^dbi$/; SiSU_DBI::SQL.new(@opt).connect # -D -d
elsif @req=~/^sisupod_make$/; SiSU_Doc::Source.new(@opt).read # -S
end
- Operations.new.counter
+ SiSU::Operations.new.counter
end
end
class Operations
@@ -291,11 +293,11 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
end
def cgi # -F
require_relative 'cgi' # cgi.rb
- SiSU_CGI::SiSU_search.new(@opt).read
+ SiSU_CGI::SearchSQL.new(@opt).read
end
def encoding # -K build character encoding db (uses KirbyBase)
require_relative 'character_encoding' # character_encoding.rb
- SiSU_character_encode::Create.new.db
+ SiSU_CharacterEncode::Create.new.db
end
def termsheet # -t
system("sisu_termsheet #{@opt.cmd} #{@opt.fns}\n")
@@ -338,7 +340,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
class Processing
require 'fileutils'
include FileUtils
- @@env=SiSU_Env::Info_env.new
+ @@env=SiSU_Env::InfoEnv.new
attr_accessor :op
def initialize(opt)
@opt=opt
@@ -346,7 +348,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
@tell=lambda { SiSU_Screen::Ansi.new(@opt.cmd,@msg,"#{@msgs.inspect if @msgs}") }
end
def op(req,msg)
- Op.new(@opt,req,msg).select if req and msg
+ SiSU::Op.new(@opt,req,msg).select if req and msg
end
def actions
if @opt.cmd =~/E/ # re-assign character
@@ -357,15 +359,15 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
SiSU_Harvest::Source.new(@opt).read # -h -H html.rb
elsif @opt.mod.inspect =~/--convert|--to|--from/
require_relative 'sst_convert_markup' # sst_convert_markup.rb
- elsif @opt.cmd =~/([abCcDdeFGgHhIikLMmNnoPpQqRrSsTtUuVvWwXxYyZ_0-9])/ \
+ elsif @opt.cmd =~/([abCcDdeFGgHhIjikLMmNnoPpQqRrSsTtUuVvWwXxYyZ_0-9])/ \
and @opt.cmd =~/^-/ \
and @opt.mod.inspect !~/--(?:sitemaps|query|identify)/ \
or @opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/
@cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- flag=SiSU_Env::Info_processing_flag.new
+ flag=SiSU_Env::InfoProcessingFlag.new
if @opt.cmd =~/[vVM]/ #% version information
- if @opt.cmd =~/V/ \
- and @opt.files.empty? #% environment
+ if (@opt.cmd =~/V/) \
+ && (@opt.files.empty?) #% environment
SiSU_Help::Help.new('env',@opt).environment
else SiSU_Help::Help.new('env',@opt).sisu_version
end
@@ -407,22 +409,22 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
if @opt.cmd =~/R/
if @opt.mod.inspect =~/--init(?:ialize)?=site/ \
and @opt.cmd =~/RZ/
- Operations.new(@opt).remote_put_base_site_rsync_match
- else Operations.new(@opt).remote_put_base_site_rsync
+ SiSU::Operations.new(@opt).remote_put_base_site_rsync_match
+ else SiSU::Operations.new(@opt).remote_put_base_site_rsync
end
elsif @opt.cmd =~/r/
if @opt.mod.inspect =~/--init(?:ialize)?=site/ \
and @opt.cmd =~/CCr/
- Operations.new(@opt).remote_put_base_site_all
- else Operations.new(@opt).remote_put_base_site
+ SiSU::Operations.new(@opt).remote_put_base_site_all
+ else SiSU::Operations.new(@opt).remote_put_base_site
end
end
end
if @opt.act[:sample_search_form][:bool] #% --sample-search-form, -F cgi sample search form
- Operations.new(@opt).cgi
+ SiSU::Operations.new(@opt).cgi
end
if @opt.act[:webrick][:bool] #% --webrick, -W webrick
- Operations.new(@opt).webrick
+ SiSU::Operations.new(@opt).webrick
end
if @opt.cmd =~/Z/ #% -Z wipe previous output clean
op('zap','Zap, deletions')
@@ -463,14 +465,14 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
if @get_s.length > 0 #% remote markup file .sst
require_relative 'remote' # remote.rb
SiSU_Remote::Get.new(@opt,@get_s).fns
- Operations.new.counter
+ SiSU::Operations.new.counter
end
if @get_p.length > 0 #% remote sisupod
require_relative 'remote' # remote.rb
SiSU_Remote::Get.new(@opt,@get_p).sisupod
end
rescue
- SiSU_Errors::Info_error.new($!,$@,@opt,@fns).error #ok
+ SiSU_Errors::InfoError.new($!,$@,@opt,@fns).error #ok
@retry_count +=1
retry unless @retry_count > 1
ensure
@@ -518,6 +520,9 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
if @opt.act[:xhtml][:bool] #% --xhtml, -b xhtml
op('xhtml','xhtml sax')
end
+ if @opt.act[:images][:bool] #% --images, -j
+ op('shared_images','images')
+ end
if @opt.act[:concordance][:bool] #% --concordance, -w
op('concordance','Concordance')
end
@@ -536,13 +541,14 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
if FileTest.file?(fns)
@opt.fns=fns
case @opt.fns
- when /\.(termsheet.rb)$/; Operations.new(@opt).termsheet
+ when /\.(termsheet.rb)$/
+ SiSU::Operations.new(@opt).termsheet
else #print "not processed --> ", fns, "\n"
end
- else Operations.new(@opt).not_found
+ else SiSU::Operations.new(@opt).not_found
end
end
- Operations.new.counter
+ SiSU::Operations.new.counter
end
if @opt.cmd =~/k/ #% -T temporary tests
op('xml_scaffold','XML scaffold')
@@ -559,6 +565,9 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
if @opt.act[:psql][:bool] #% --pg, -D DB postgresql
op('dbi','postgresql')
end
+ if @opt.act[:sqlite_discreet][:bool] #% --sqlite, -d DB sqlite
+ op('dbi_discreet','sqlite')
+ end
if @opt.act[:sqlite][:bool] #% --sqlite, -d DB sqlite
op('dbi','sqlite')
end
@@ -593,10 +602,10 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
end
elsif @opt.mod.inspect =~/--query/
require_relative 'sst_identify_markup' # sst_identify_markup.rb
- puts SiSU_Markup::Markup_history.new(@opt).query
+ puts SiSU_Markup::MarkupHistory.new(@opt).query
elsif @opt.mod.inspect =~/--identify/
require_relative 'sst_identify_markup' # sst_identify_markup.rb
- markup_version=SiSU_Markup::Markup_identify.new(@opt).markup_version?
+ markup_version=SiSU_Markup::MarkupIdentify.new(@opt).markup_version?
elsif @opt.mod.inspect =~/--about/ #% help instructions
if @opt.mod.inspect =~/--about/ \
and not @opt.what.empty?
@@ -632,7 +641,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
and @opt.mod.inspect =~/--(?:(?:convert(?:-from)?|from)[=-])?(?:xml2sst|sxml)/
elsif @opt.fns=~/\.ssi$/ \
and @opt.mod.inspect =~/--identify/
- else Operations.new(@opt).not_recognised
+ else SiSU::Operations.new(@opt).not_recognised
end
end
if @opt.fns =~/\.ssm\.sst$/ \
@@ -641,7 +650,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
@tell.call.warn unless @opt.cmd =~/V/
File.unlink(@opt.fns) if File.exist?(@opt.fns) #CONSIDER
end
- else #Operations.new(fns,'html').not_found
+ else #SiSU::Operations.new(fns,'html').not_found
end
end
end
@@ -664,8 +673,8 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
require 'uri'
home=ENV['HOME']
argv=$*
- @opt=SiSU_commandline::Options.new(argv)
- Processing.new(@opt).actions
+ @opt=SiSU_Commandline::Options.new(argv)
+ SiSU::Processing.new(@opt).actions
rescue; STDERR.puts SiSU_Screen::Ansi.new(@opt,$!,$@,nil).rescue #fix
ensure
Dir.chdir(@@pwd_the)
diff --git a/lib/sisu/v3/i18n.rb b/lib/sisu/v3/i18n.rb
index 63ef6c11..a440b7d6 100644
--- a/lib/sisu/v3/i18n.rb
+++ b/lib/sisu/v3/i18n.rb
@@ -242,7 +242,7 @@ also note ISO_639-2
Px[:lng_lst] # constants.rb
-module SiSU_text_translation
+module SiSU_TextTranslation
class Language
def initialize(md)
@md=md
diff --git a/lib/sisu/v3/manifest.rb b/lib/sisu/v3/manifest.rb
index 694ba943..0eb580b3 100644
--- a/lib/sisu/v3/manifest.rb
+++ b/lib/sisu/v3/manifest.rb
@@ -72,15 +72,15 @@ module SiSU_Manifest
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
- l=SiSU_Env::Standardise_language.new(@opt.lng).language
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
+ l=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
@doc_language=l[:n]
end
def read
begin
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
@md=SiSU_Param::Parameters.new(@opt).get
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
xbrowser=@env.program.web_browser
browser=@env.program.console_web_browser
# webserv_url=@env.path.url.output_tell #fix in sysenv
@@ -91,51 +91,68 @@ module SiSU_Manifest
: SiSU_Screen::Ansi.new(@opt.cmd,'Manifest',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}").green_title_hi
SiSU_Screen::Ansi.new(@opt.cmd,"#{browser} #{url_html}").grey_tab if @opt.cmd =~/v/i
end
- data=SiSU_HTML::Source::Html_environment.new(@particulars).tuned_file_instructions
- Output_Info.new(@md).check_output(data)
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ data=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
+ SiSU_Manifest::Source::Output.new(@md).check_output(data)
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
private
- class Output_Info <Source
+ class Output <Source
def initialize(md)
@manifest={ txt: [], html: [] }
@md,@fns=md,md.fns
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ @make=SiSU_Env::ProcessingSettings.new(@md)
@fnb=@md.fnb
@base_url="#{@env.url.root}/#{@fnb}"
- @f=SiSU_Env::SiSU_file.new(@md)
+ @f=SiSU_Env::FileOp.new(@md)
+ @o_str=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
+ @image_path=if @o_str.dump_or_redirect?
+ %{./image}
+ else
+ %{#{@f.path_rel_links.html_scroll_2}_sisu/image_sys}
+ end
@base_path=@f.output_path.manifest.dir
- @@dg ||=SiSU_Env::Info_env.new.digest.type
+ @@dg ||=SiSU_Env::InfoEnv.new.digest.type
@dg=@@dg
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
@language=l[:n]
@translate=SiSU_Translate::Source.new(@md,@language)
@brace_url=SiSU_Viz::Skin.new.url_decoration
+ @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet
end
def output
manifest=@f.write_file.manifest
@manifest[:html].each do |x|
- x.gsub!(Xx[:html_relative2],@f.path_rel_links.html_scroll_2)
- x.gsub!(Xx[:html_relative1],@f.path_rel_links.html_scroll_1)
+ x=x.gsub(Xx[:html_relative2],@f.path_rel_links.html_scroll_2).
+ gsub(Xx[:html_relative1],@f.path_rel_links.html_scroll_1)
manifest << x
end
end
+ def url_make(url,file,src=nil)
+ if @o_str.dump_or_redirect?
+ ''
+ elsif :src
+ %{<br />#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}}
+ else
+ %{<p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p>}
+ end
+ end
def summarize(id,file,pth='',rel='',url='',img='● ')
size=(File.size("#{pth}/#{file}")/1024.00).to_s
kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
@manifest[:txt] << "#{file} #{id} #{kb}\n"
- @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p><p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n}
+ @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p>#{url_make(url,file)}</td><td class="right"><p class="right">#{kb}</p></td></tr>\n}
end
def summarize_html_seg(id,file,pth='',rel='',url='',img='● ')
size=(File.size("#{pth}/#{file}")/1024.00).to_s
kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
@manifest[:txt] << "#{file} #{id} #{kb}\n"
- @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p><p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n}
+ @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p>#{url_make(url,file)}</td><td class="right"><p class="right">#{kb}</p></td></tr>\n}
end
def summarize_sources(id,file,pth,rel,url)
- sys=SiSU_Env::System_call.new
+ sys=SiSU_Env::SystemCall.new
dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{pth}/#{file}")
else sys.md5("#{pth}/#{file}")
end
@@ -143,17 +160,23 @@ module SiSU_Manifest
size=(File.size("#{pth}/#{file}")/1024.00).to_s
kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
@manifest[:txt] << "#{file} #{id} #{kb}\n"
- @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{id}</a></p></th><td class="right"><p class="tiny"><a href="#{rel}/#{file}">#{file}</a> &nbsp;&nbsp;#{dgst[1]}<br />#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n} if kb and kb =~/\d+/
+ @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{id}</a></p></th><td class="right"><p class="tiny"><a href="#{rel}/#{file}">#{file}</a> &nbsp;&nbsp;#{dgst[1]}#{url_make(url,file,:src)}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n} if kb and kb =~/\d+/
end
def published_manifests?
- @f=SiSU_Env::SiSU_file.new(@md) #.base_filename
+ @f=SiSU_Env::FileOp.new(@md) #.base_filename
@m=[]
url=@f.output_path.base.url
manifests={}
mp,mn,mt,mr=nil,nil,nil,nil
ln=SiSU_i18n::Languages.new.language.list
Px[:lng_lst].each do |lc|
- if @env.output_dir_structure.by_language_code?
+ if @o_str.dump_or_redirect? #does not work for --redirect or --dump
+ mp="#{@f.output_path.base.dir}"
+ mn="#{@md.fnb}.html"
+ mt="#{mp}/#{mn}"
+ mr="../../#{lc}/manifest/#{mn}"
+ mu="#{url}/#{mn}"
+ elsif @env.output_dir_structure.by_language_code?
mp="#{@f.output_path.base.dir}/#{lc}/manifest"
mn="#{@md.fnb}.html"
mt="#{mp}/#{mn}"
@@ -180,8 +203,7 @@ module SiSU_Manifest
end
end
manifests
- @m.uniq!
- @m
+ @m=@m.uniq
end
def languages(id,file)
flv=published_manifests?
@@ -201,7 +223,7 @@ module SiSU_Manifest
end
end
def metadata(id,info)
- info.to_s.gsub!(/#{Mx[:br_line]}/,'<br />')
+ info=info.to_s.gsub(/#{Mx[:br_line]}/,'<br />')
@manifest[:html] << %{<tr><th class="left"><p class="bold_left">#{id}:</p></th><td><p class="left">#{info}</p></td></tr>\n}
end
def links(url,lnk,target)
@@ -213,7 +235,7 @@ module SiSU_Manifest
end
def output_tests
if FileTest.file?(@f.place_file.html_segtoc.dir)==true
- img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_toc.png" alt="TOC linked" /> }
+ img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_toc.png" alt="TOC linked" /> }
pth=@f.output_path.html_seg.dir
rel=@f.output_path.html_seg.rel_sm
url=@f.output_path.html_seg.url
@@ -221,7 +243,7 @@ module SiSU_Manifest
summarize_html_seg(id,file,pth,rel,url,img)
end
if FileTest.file?(@f.place_file.html_scroll.dir)==true
- img=%{<img border="0" height="15" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_doc.png" alt="Full Text" /> }
+ img=%{<img border="0" height="15" width="15" src="#{@image_path}/b_doc.png" alt="Full Text" /> }
pth=@f.output_path.html_scroll.dir
rel=@f.output_path.html_scroll.rel_sm
url=@f.output_path.html_scroll.url
@@ -243,7 +265,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url)
end
if FileTest.file?(@f.place_file.epub.dir)==true
- img=%{<img border="0" height="18" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_epub.png" alt="EPUB" /> }
+ img=%{<img border="0" height="18" width="18" src="#{@image_path}/b_epub.png" alt="EPUB" /> }
id,file='EPUB (Electronic Publication, e-book standard)',@f.base_filename.epub
pth=@f.output_path.epub.dir
rel=@f.output_path.epub.rel_sm
@@ -251,7 +273,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_letter}")==true
- img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> }
+ img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -259,7 +281,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_letter}")==true
- img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> }
+ img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -267,7 +289,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a4}")==true
- img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> }
+ img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -275,7 +297,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a4}")==true
- img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> }
+ img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -283,7 +305,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a5}")==true
- img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> }
+ img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -291,7 +313,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a5}")==true
- img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> }
+ img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -299,7 +321,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_b5}")==true
- img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> }
+ img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -307,7 +329,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_b5}")==true
- img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> }
+ img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -315,7 +337,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_legal}")==true
- img=%{<img border="0" height="18" width="15" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF portrait" /> }
+ img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -323,7 +345,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_legal}")==true
- img=%{<img border="0" height="15" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_pdf.png" alt="PDF landscape" /> }
+ img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
pth=@f.output_path.pdf.dir
rel=@f.output_path.pdf.rel_sm
url=@f.output_path.pdf.url
@@ -331,7 +353,7 @@ module SiSU_Manifest
summarize(id,file,pth,rel,url,img)
end
if FileTest.file?(@f.place_file.odt.dir)==true
- img=%{<img border="0" height="18" width="18" src="#{@f.path_rel_links.html_scroll_2}_sisu/image_sys/b_odf.png" alt="ODF/ODT" /> }
+ img=%{<img border="0" height="18" width="18" src="#{@image_path}/b_odf.png" alt="ODF/ODT" /> }
pth=@f.output_path.odt.dir
rel=@f.output_path.odt.rel_sm
url=@f.output_path.odt.url
@@ -374,6 +396,13 @@ module SiSU_Manifest
id,file='Manpage',@f.base_filename.manpage
summarize(id,file,pth,rel,url)
end
+ if FileTest.file?(@f.place_file.sqlite_discreet.dir)==true
+ id,file='SQLite3 file',@f.base_filename.sqlite_discreet
+ pth=@f.output_path.sqlite_discreet.dir
+ rel=@f.output_path.sqlite_discreet.rel_sm
+ url=@f.output_path.sqlite_discreet.url
+ summarize(id,file,pth,rel,url)
+ end
if FileTest.file?(@f.place_file.txt.dir)==true
if @md.opt.cmd =~/a/; id='Plaintext (Unix (UTF-8) with footnotes)'
elsif @md.opt.cmd =~/e/; id='Plaintext (Unix (UTF-8) with endnotes)'
@@ -417,8 +446,11 @@ module SiSU_Manifest
end
def qrc_image
fn=@md.fnb
- img_md="qrcode/#{fn}.md.png"
- img_title="qrcode/#{fn}.title.png"
+ pth=(@o_str.dump_or_redirect?) \
+ ? '.'
+ : 'qrcode'
+ img_md="#{pth}/#{fn}.md.png"
+ img_title="#{pth}/#{fn}.title.png"
if FileTest.file?(@f.place_file.qrcode_md.dir)==true
@manifest[:html] <<<<WOK
<tr><td class="left">
@@ -731,16 +763,20 @@ WOK
end
def check_output(data)
begin
- minitoc=SiSU_HTML_minitoc::Toc_mini.new(@md,data).songsheet.join("\n")
+ minitoc=SiSU_HTML_MiniToc::TocMini.new(@md,data).songsheet.join("\n")
id,file='',''
- vz=SiSU_Env::Get_init.instance.skin
+ vz=SiSU_Env::GetInit.instance.skin
+ search_form=if @make.build.search_form?
+ "<td>#{@env.widget_static.search_form}</td>"
+ else ''
+ end
banner_table=if vz.banner_home_button_only !~ /http:\/\/www\.jus\.uio\.no\/sisu/ \
and vz.banner_home_button_only !~ /sisu\.home\.png/
<<WOK
<table summary="band" border="0" cellpadding="3" cellspacing="0">
<tr><td align="left" width="15%" bgcolor="#ffffff">#{vz.banner_band}</td>
<td width="70%"><p class="tiny">#{@brace_url.xml_open}<a href="#{@base_url}/#{file}">#{@base_url}/#{file}</a>#{@brace_url.xml_close}</p></td>
-<td>#{@env.widget_static.search_form}</td></tr>
+#{search_form}</tr>
</table>
WOK
else
@@ -748,7 +784,7 @@ WOK
<table summary="band" border="0" cellpadding="3" cellspacing="0">
<tr><td align="left" bgcolor="#ffffff"><a href="http://www.jus.uio.no/sisu/" target="_top"><img border="0" src="#{vz.url_path_image_sys}/sisu.png" alt="SiSU --&gt;" /></a></td>
<td><p class="tiny">#{@brace_url.xml_open}<a href="#{@base_url}/#{file}">#{@base_url}/#{file}</a>#{@brace_url.xml_close}</p></td>
-<td>#{@env.widget_static.search_form}</td></tr>
+#{search_form}</tr>
</table>
WOK
end
@@ -764,16 +800,17 @@ SiSU manifest: #{@md.title.full}
<meta name="sourcefile" content="#{@md.fns}" />
<link rel="generator" href="http://www.jus.uio.no/sisu" />
<link rel="shortcut icon" href="#{@f.path_rel_links.html_scroll_css}_sisu/image_sys/rb7.ico" />
-<link rel="stylesheet" href="#{@f.path_rel_links.html_scroll_css}_sisu/css/html.css" type="text/css" />
+#{@stylesheet.css_head}
</head>
<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">
#{banner_table}
WOK
- if @env.manifest_minitoc?
- if @env.output_dir_structure.by_language_code? \
+ if @make.build.manifest_minitoc?
+ if @o_str.dump_or_redirect?
+ elsif @env.output_dir_structure.by_language_code? \
or @env.output_dir_structure.by_filetype?
- minitoc.gsub!(/<a href="(\S+?)"/m,%{<a href="../html/#{@md.fnb}/\\1"})
- minitoc.gsub!(/<a href="\.\.\/html\/#{@md.fnb}\/(?:sisu_manifest\.html|#{@f.base_filename.manifest})"/m,
+ minitoc=minitoc.gsub(/<a href="(\S+?)"/m,%{<a href="../html/#{@md.fnb}/\\1"}).
+ gsub(/<a href="\.\.\/html\/#{@md.fnb}\/(?:sisu_manifest\.html|#{@f.base_filename.manifest})"/m,
%{<a href="#{@f.base_filename.manifest}"})
end
@manifest[:html] <<<<WOK
@@ -853,7 +890,7 @@ WOK
</html>
WOK
output
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
diff --git a/lib/sisu/v3/manpage.rb b/lib/sisu/v3/manpage.rb
index 8cbdb47c..0571a0e6 100644
--- a/lib/sisu/v3/manpage.rb
+++ b/lib/sisu/v3/manpage.rb
@@ -64,7 +64,7 @@ module SiSU_Manpage
include SiSU_Param
include SiSU_Viz
require_relative 'manpage_format' # manpage_format.rb
- include SiSU_Manpage_format
+ include SiSU_ManpageFormat
require_relative 'shared_metadata' # shared_metadata.rb
require_relative 'shared_txt' # shared_txt.rb
pwd=Dir.pwd
@@ -81,7 +81,7 @@ module SiSU_Manpage
def read
begin
@md=SiSU_Param::Parameters.new(@opt).get
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
path=@env.path.output_tell
tool=(@opt.cmd =~/[MVv]/) \
? "#{@env.program.text_editor} #{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}"
@@ -93,8 +93,8 @@ module SiSU_Manpage
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}").flow if @opt.cmd =~/[MV]/
@dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
SiSU_Manpage::Source::Scroll.new(@md,@dal_array).songsheet
- SiSU_Env::Info_skin.new(@md).select #watch
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_Env::InfoSkin.new(@md).select #watch
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -102,12 +102,12 @@ module SiSU_Manpage
class Scroll <Source
require_relative 'defaults' # defaults.rb
require_relative 'shared_txt' # shared_txt.rb
- include SiSU_text_utils
+ include SiSU_TextUtils
@@endnotes={ para: [], end: [] }
def initialize(md,data)
@md,@data=md,data
@brace_url=SiSU_Viz::Skin.new.url_decoration
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@tab="\t"
@br="\n"
@@dostype='unix endnotes'
@@ -134,21 +134,21 @@ module SiSU_Manpage
end
notes=@n.flatten
notes.each do |e|
- util=if e.to_s =~/^\[[\d*+]+\]:/; SiSU_text_utils::Wrap.new(e.to_s,78,4,1)
- else SiSU_text_utils::Wrap.new(e.to_s,78,0,1)
+ util=if e.to_s =~/^\[[\d*+]+\]:/; SiSU_TextUtils::Wrap.new(e.to_s,78,4,1)
+ else SiSU_TextUtils::Wrap.new(e.to_s,78,0,1)
end
wrap=util.line_wrap
- if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
- wrap.gsub!(/(^|&nbsp;|#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*') #man page requires
- wrap.gsub!(/\s\.(\S+)/,' \\.\1')
- wrap.gsub!(/^\s*([\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
+ wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
+ wrap.gsub(/(^|&nbsp;|#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*'). #man page requires
+ gsub(/\s\.(\S+)/,' \\.\1').
+ gsub(/^\s*([\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
.TP
.BI \\1.
\\2
GSUB
)
else
- wrap.gsub!(/^\s*(.+)\Z/m, <<GSUB
+ wrap.gsub(/^\s*(.+)\Z/m, <<GSUB
\\1
GSUB
)
@@ -159,11 +159,11 @@ GSUB
end
end
def manpage_metadata
- @manpage[:metadata]=Metadata::Summary.new(@md).manpage.metadata
+ @manpage[:metadata]=SiSU_Metadata::Summary.new(@md).manpage.metadata
end
def manpage_tail
- SiSU_Env::Info_skin.new(@md).select
- vz=SiSU_Env::Get_init.instance.skin
+ SiSU_Env::InfoSkin.new(@md).select
+ vz=SiSU_Env::GetInit.instance.skin
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}"
@@ -192,35 +192,35 @@ at: <#{vz.url_site}>
WOK
end
def manpage_structure(dob='',hname='') #% Used to extract the structure of a document
- if dob.is=='heading'
+ if dob.is==:heading
lv=dob.ln
n=dob.ln - 1
n3=dob.ln + 2
else lv=nil
end
- wrapped=if dob.is=='para' \
- or dob.is=='heading'
+ wrapped=if dob.is==:para \
+ || dob.is==:heading
paragraph=dob.obj
- if dob.is=='para'
+ if dob.is==:para
if dob.indent =~/[1-9]/ \
and dob.indent == dob.hang
util=if dob.bullet_
- SiSU_text_utils::Wrap.new("* #{paragraph}",78,dob.indent.to_i*2)
- else SiSU_text_utils::Wrap.new(paragraph,78,dob.indent.to_i*2)
+ SiSU_TextUtils::Wrap.new("* #{paragraph}",78,dob.indent.to_i*2)
+ else SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2)
end
elsif dob.hang =~/[0-9]/ \
and dob.indent != dob.hang # NOT yet implemented
- util=SiSU_text_utils::Wrap.new(paragraph,78,dob.indent.to_i*2)
+ util=SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2)
else
util=if dob.bullet_
- SiSU_text_utils::Wrap.new("* #{paragraph}",78,0)
- else SiSU_text_utils::Wrap.new(paragraph,78,0)
+ SiSU_TextUtils::Wrap.new("* #{paragraph}",78,0)
+ else SiSU_TextUtils::Wrap.new(paragraph,78,0)
end
end
- else util=SiSU_text_utils::Wrap.new(paragraph,78,0)
+ else util=SiSU_TextUtils::Wrap.new(paragraph,78,0)
end
w=util.line_wrap
- w.gsub!(/^(\\\.)/,' \1')
+ w=w.gsub(/^(\\\.)/,' \1')
w
end
if lv
@@ -234,7 +234,7 @@ WOK
end
else
@manpage[:body] << if wrapped =~/^\.BI\s/ # main text, contents, body KEEP
- '.TP' << @br << wrapped.gsub!(/^\.BI\s/,'.B ') # sleight ... simpler output
+ '.TP' << @br << wrapped.gsub(/^\.BI\s/,'.B ') # sleight ... simpler output (check gsub!)
else
'.br' << @br << wrapped
end
@@ -250,7 +250,7 @@ WOK
@@endnotes[:para]=[]
end
def markup(data) # Used for major markup instructions
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
@data_mod,@endnotes,@level,@cont,@copen,@manpage_contents_close=Array.new(6){[]}
(0..6).each { |x| @cont[x]=@level[x]=false }
(4..6).each { |x| @manpage_contents_close[x]='' }
@@ -259,88 +259,88 @@ WOK
fix=[]
manpage_metadata
data.each do |dob|
- if dob.is=='comment' \
- or dob.is=='heading_insert'
+ if dob.is==:comment \
+ || dob.is==:heading_insert
dob.obj=''
end
- dob.obj.gsub!(/.+?<-#>/,'') # remove dummy headings (used by html) #check
- dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^\1^')
- dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'[\1]')
- dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'++\1++')
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'--\1--')
- dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"')
- dob.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\1')
- dob.obj.gsub!(/\A\s*#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}#{Mx[:br_line]}([,.:!?](?: |$))?/m,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}")
- dob.obj.gsub!(/\s*#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}([,.:!?](?: |$))?/m,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}")
- dob.obj.gsub!(/\A\s*#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}([,.:!?](?: |$))?#{Mx[:br_line]}/m,"#{Mx[:br_line]}.BI \\1\\2#{Mx[:br_line]}")
- dob.obj.gsub!(/\s*#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}([,.:!?](?: |$))?/,"#{Mx[:br_line]}.B \\1\\2#{Mx[:br_line]}")
- dob.obj.gsub!(/\s*#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}([,.:!?](?: |$))?/,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}")
- unless dob.is=='code'
- dob.obj.gsub!(/(?:^|\s)#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}([,.:!?](?: |$))?/,"\\1 #{@brace_url.txt_open}\\2#{@brace_url.txt_close}\\3")
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}([,.:!?](?: |$))?/,"\\1#{@brace_url.txt_open}\\2#{@brace_url.txt_close}\\3")
+ dob.obj=dob.obj.gsub(/.+?<-#>/,''). # remove dummy headings (used by html) #check
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^\1^').
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'[\1]').
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'++\1++').
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'--\1--').
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
+ gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\1').
+ gsub(/\A\s*#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}#{Mx[:br_line]}([,.:!?](?: |$))?/m,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}").
+ gsub(/\s*#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}([,.:!?](?: |$))?/m,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}").
+ gsub(/\A\s*#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}([,.:!?](?: |$))?#{Mx[:br_line]}/m,"#{Mx[:br_line]}.BI \\1\\2#{Mx[:br_line]}").
+ gsub(/\s*#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}([,.:!?](?: |$))?/,"#{Mx[:br_line]}.B \\1\\2#{Mx[:br_line]}").
+ gsub(/\s*#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}([,.:!?](?: |$))?/,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}")
+ unless dob.is==:code
+ dob.obj=dob.obj.gsub(/(?:^|\s)#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}([,.:!?](?: |$))?/,"\\1 #{@brace_url.txt_open}\\2#{@brace_url.txt_close}\\3").
+ gsub(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}([,.:!?](?: |$))?/,"\\1#{@brace_url.txt_open}\\2#{@brace_url.txt_close}\\3")
@manpage[:endnotes]=extract_endnotes(dob.obj)
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s*(?:.+?)#{Mx[:en_a_c]}/m,'[^\1]') # endnote marker marked up
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s*(?:.+?)#{Mx[:en_b_c]}/m,'[^\1]') # endnote marker marked up
- dob.obj.gsub!(/#{Mx[:gl_o]}#amp#{Mx[:gl_c]}/,'&') ##{Mx[:gl_o]}#095#{Mx[:gl_c]}
- dob.obj.gsub!(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!')
- dob.obj.gsub!(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#')
- dob.obj.gsub!(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*')
- dob.obj.gsub!(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-')
- dob.obj.gsub!(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\e')
- dob.obj.gsub!(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/')
- dob.obj.gsub!(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_')
- dob.obj.gsub!(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{')
- dob.obj.gsub!(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}')
- dob.obj.gsub!(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~')
- dob.obj.gsub!(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©')
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s*(?:.+?)#{Mx[:en_a_c]}/m,'[^\1]'). # endnote marker marked up
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s*(?:.+?)#{Mx[:en_b_c]}/m,'[^\1]'). # endnote marker marked up
+ gsub(/#{Mx[:gl_o]}#amp#{Mx[:gl_c]}/,'&'). ##{Mx[:gl_o]}#095#{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]}#092#{Mx[:gl_c]}/,'\e').
+ 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]}/,'©')
else
- dob.obj.gsub!(/\\/,'\e')
- dob.obj.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n") # watch
+ dob.obj=dob.obj.gsub(/\\/,'\e').
+ gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n") # watch
#dob.obj.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})+\s*/,"\n") # watch
end
- dob.obj.gsub!(/(^|&nbsp;|#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*') #man page requires
- dob.obj.gsub!(/┆/,'|')
- dob.obj.gsub!(/\s\.(\S+)/,' \\.\1')
- dob.obj.gsub!(/(\n\.)(\S\S\S+)/m,'\1\\.\2')
- dob.obj.gsub!(/-/,'\-') #manpages use this
- dob.obj.gsub!(/&#126;/,'~') if dob.obj #manpages use this
+ dob.obj=dob.obj.gsub(/(^|&nbsp;|#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*'). #man page requires
+ gsub(/┆/,'|').
+ gsub(/\s\.(\S+)/,' \\.\1').
+ gsub(/(\n\.)(\S\S\S+)/m,'\1\\.\2').
+ gsub(/-/,'\-') #manpages use this
+ dob.obj=dob.obj.gsub(/&#126;/,'~') if dob.obj #manpages use this
if dob.is =~/block|group|verse|alt|code/
- if dob.is =='code'
- dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _> _<
- dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _<_<
- dob.obj.gsub!(/\A(.+)?\Z/m,".nf\n\n\\1\n\n.fi")
+ if dob.is ==:code
+ dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
+ gsub(/(^|[^}])_([<>])/m,'\1\2'). # _<_<
+ gsub(/\A(.+)?\Z/m,".nf\n\n\\1\n\n.fi")
end
end
#dob.obj.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})+\s*/m,"\n.br\n") # watch
- dob.obj.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})+\s*/m,"\n\n") # watch
+ dob.obj=dob.obj.gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})+\s*/m,"\n\n") # watch
blit=dob.obj.scan(/\[[^\]]+\]|[^\[]+/)
blit_array=[]
blit.each do |x|
- if x =~/^\[/
- x.gsub!(/\s+/,' \ ') #manpages use this
+ x=if x =~/^\[/
+ x.gsub(/\s+/,' \ ') #manpages use this
else x
end
blit_array << x
end
dob.obj=blit_array.join
- dob.obj.gsub!(/#{Mx[:gl_o]}:name#\S+?#{Mx[:gl_c]}/mi,'') #added
- #dob.obj.gsub!(/\s\\\s+(#{Mx[:br_line]}|#{Mx[:br_nl]})/,'\1') #a messy solution
- dob.obj.gsub!(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,'') # remove page breaks
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1\2')
- dob.obj.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1')
- dob.obj.gsub!(/#{Mx[:mk_o]}name#\S+?#{Mx[:mk_c]}/,'') # remove name links
- dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/,' ') # decide on
- dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- dob.obj.gsub!(/^(?:^|[^_\\])#{Mx[:lnk_o]}\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*#{Mx[:lnk_c]}\S+/,'[image: "\1"]')
+ dob.obj=dob.obj.gsub(/#{Mx[:gl_o]}:name#\S+?#{Mx[:gl_c]}/mi,''). #added
+ #gsub(/\s\\\s+(#{Mx[:br_line]}|#{Mx[:br_nl]})/,'\1'). #a messy solution
+ gsub(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,''). # remove page breaks
+ gsub(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1\2').
+ gsub(/<a href=".+?">(.+?)<\/a>/m,'\1').
+ gsub(/#{Mx[:mk_o]}name#\S+?#{Mx[:mk_c]}/,''). # remove name links
+ gsub(/&nbsp;|#{Mx[:nbsp]}/,' '). # decide on
+ gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}\s*(\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*(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]")
+ gsub(/^(?:^|[^_\\])#{Mx[:lnk_o]}\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*#{Mx[:lnk_c]}\S+/,'[image: "\1"]')
wordlist=dob.obj.scan(/\S+/)
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
if dob.obj =~@regx #/.+?<~\d+;\w\d+;\w\d+>.*/ #watch change
paranum=dob.obj[@regx,3]
- @p_num=SiSU_Manpage_format::Paragraph_number.new(paranum)
+ @p_num=SiSU_ManpageFormat::ParagraphNumber.new(paranum)
end
- x=SiSU_Manpage_format::Format_text_object.new(@md,dob)
- if dob.is=='heading'
+ x=SiSU_ManpageFormat::FormatTextObject.new(@md,dob)
+ if dob.is==:heading
manpage_structure(dob)
dob.obj=case dob.ln
when 1; x.heading_body1
@@ -350,7 +350,7 @@ WOK
when 5; x.heading_body5
when 6; x.heading_body6
end
- elsif dob.is=='para'
+ elsif dob.is==:para
manpage_structure(dob)
else
if dob.obj =~/#{table_message}/
@@ -362,14 +362,14 @@ WOK
dob.obj=''
end
if dob.obj
- dob.obj.gsub!(/\s(\[)/m,' \ \1')
- dob.obj.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n") # watch
- dob.obj.gsub!(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~')
- dob.obj.gsub!(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{')
- dob.obj.gsub!(/#{Mx[:pa_o]}\S+#{Mx[:pa_c]}/,' ')
- unless dob.is =='code'
- dob.obj.gsub!(/<!.+!>/,' ')
- dob.obj.gsub!(/<:\S+>/,' ')
+ dob.obj=dob.obj.gsub(/\s(\[)/m,' \ \1').
+ gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n"). # watch
+ gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~').
+ gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{').
+ gsub(/#{Mx[:pa_o]}\S+#{Mx[:pa_c]}/,' ')
+ unless dob.is ==:code
+ dob.obj=dob.obj.gsub(/<!.+!>/,' ').
+ gsub(/<:\S+>/,' ')
end
end
dob
@@ -386,11 +386,11 @@ WOK
elsif defined? @md.date.published \
and @md.date.published
@md.date.published
- else SiSU_Env::Info_date.new.year #date missing decide on action
+ else SiSU_Env::InfoDate.new.year #date missing decide on action
end
manpage_name,manpage_synopsis='',''
manpg={}
- proj=SiSU_Env::Info_version.instance.get_version
+ proj=SiSU_Env::InfoVersion.instance.get_version
manpage[:open] = %{.TH "#{@md.fnb}" "#{@md.make.manpage['section']}" "#{date}" "#{proj[:version]}" "#{@md.title.main}"#{@md.make.manpage['name']}#{@md.make.manpage['synopsis']}}
content << manpage[:open]
content << manpage[:head]
@@ -409,14 +409,14 @@ WOK
@md,@content=md,content
end
def manpage #%manpage output
- SiSU_Env::SiSU_file.new(@md).mkdir
- filename_manpage=SiSU_Env::SiSU_file.new(@md).write_file.manpage
+ SiSU_Env::FileOp.new(@md).mkdir
+ filename_manpage=SiSU_Env::FileOp.new(@md).write_file.manpage
@sisu=[]
@content.each do |para| # this is a hack
if para.class==Array \
and para.length > 0
para.each do |line|
- line.gsub!(/\s+$/m,'')
+ line=line.gsub(/\s+$/m,'')
filename_manpage.puts line #unix manpage
end
else filename_manpage.puts para #unix manpage # /^([*=-]|\.){5}/
diff --git a/lib/sisu/v3/manpage_format.rb b/lib/sisu/v3/manpage_format.rb
index 979e0a65..7f5b5dad 100644
--- a/lib/sisu/v3/manpage_format.rb
+++ b/lib/sisu/v3/manpage_format.rb
@@ -56,11 +56,11 @@
** Description: manpage formatting template
=end
-module SiSU_Manpage_format
+module SiSU_ManpageFormat
require_relative 'param' # param.rb
include SiSU_Param
include SiSU_Viz
- class Paragraph_number
+ class ParagraphNumber
def initialize(paranum)
@paranum=/(\d+)/m.match(paranum)[1]
end
@@ -74,7 +74,7 @@ module SiSU_Manpage_format
@paranum.gsub(/(\d+)/,'<a href="#\1">')
end
end
- class Format_text_object
+ class FormatTextObject
def initialize(md,dob)
@md,@dob=md,dob
if @dob.class==Hash
@@ -84,7 +84,7 @@ elsif @dob.class==String
end
rgx=/#{Mx[:en_a_o]}[\d*+]+\s+(.+?)#{Mx[:en_a_c]}/
@dob.obj.gsub!(rgx,'\1') if @dob.obj =~rgx
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def scr_endnote_body
"<endnote>#{@dob.obj}</endnote> "
diff --git a/lib/sisu/v3/odf.rb b/lib/sisu/v3/odf.rb
index 6cdbd57b..68aa6e40 100644
--- a/lib/sisu/v3/odf.rb
+++ b/lib/sisu/v3/odf.rb
@@ -64,7 +64,7 @@ module SiSU_ODF
include SiSU_Env
include SiSU_Viz
require_relative 'odf_format' # odf_format.rb
- include SiSU_ODF_format
+ include SiSU_ODF_Format
require_relative 'shared_metadata' # shared_metadata.rb
require_relative 'shared_txt' # shared_txt.rb
@@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0
@@ -73,7 +73,7 @@ module SiSU_ODF
require 'find'
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
@@endnotes_para=[]
end
def read
@@ -89,8 +89,8 @@ module SiSU_ODF
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}").flow if @opt.cmd =~/[MV]/
end
SiSU_ODF::Source::Scroll.new(@particulars).songsheet
- SiSU_Env::Info_skin.new(@md).select
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_Env::InfoSkin.new(@md).select
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -104,7 +104,7 @@ module SiSU_ODF
@@fns=nil
def initialize(particulars)
@md,@env,@dal_array=particulars.md,particulars.env,particulars.dal_array
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@tab="\t"
@brace_url=SiSU_Viz::Skin.new.url_decoration
@br=(@md.opt.cmd =~/M/) ? '' : ''
@@ -143,7 +143,7 @@ module SiSU_ODF
end
end
def odf_metadata
- @@odf[:metadata]=Metadata::Summary.new(@md).odf.metadata
+ @@odf[:metadata]=SiSU_Metadata::Summary.new(@md).odf.metadata
end
def odf_tail
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]
@@ -161,7 +161,7 @@ module SiSU_ODF
@@odf[:tail] << "\n</office:text></office:body></office:document-content>"
end
def heading(dob,p_num='')
- dob.obj.gsub!(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
+ dob.obj=dob.obj.gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
m=/#{$1}/
breakpage=''
if @md.fns \
@@ -232,29 +232,29 @@ module SiSU_ODF
end
if m; m.each do |i|
cont,url=i[1],i[2]
- cont.gsub!(/([)(\]\[])/,"\\\\\\1")
- cont.gsub!(/([+?])/,"\\\\\\1") # incorrect handling of +
- url.gsub!(/([+?])/,"\\\\\\1")
- dob.obj.sub!(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}image/m,image_odf(i))
- dob.obj.sub!(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,image_odf(i))
- dob.obj.gsub!(/\\([)(\]\[?])/,'\1') #clumsy fix
+ cont=cont.gsub(/([)(\]\[])/,"\\\\\\1").
+ gsub(/([+?])/,"\\\\\\1") # incorrect handling of +
+ url=url.gsub(/([+?])/,"\\\\\\1")
+ dob.obj=dob.obj.sub(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}image/m,image_odf(i)).
+ sub(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,image_odf(i)).
+ sub(/\\([)(\]\[?])/,'\1') #clumsy fix
end
m=nil
end
dob
end
def text_link_odf(txt,url,trail)
- txt.gsub!(/(\\\+)/,'+') #this is convoluted, and risky :-(
- url.gsub!(/(\\\+)/,'+') #this is convoluted, and risky :-(
- map_nametags=SiSU_Particulars::Combined_singleton.instance.get_map_nametags(@md).nametags_map
+ txt=txt.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(
+ url=url.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(
+ 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}}
when /^:/ # site same document collection html link
- url.gsub!(/^:/,"#{@env.url.root}/")
+ url=url.gsub(/^:/,"#{@env.url.root}/")
%{<text:a xlink:type="simple" xlink:href="#{url}">#{txt.strip}</text:a>#{trail}}
when /^\.\.\// # site same document collection html link
- url.gsub!(/^\.\.\//,"#{@env.url.root}/")
+ url=url.gsub(/^\.\.\//,"#{@env.url.root}/")
%{<text:a xlink:type="simple" xlink:href="#{url}">#{txt.strip}</text:a>#{trail}}
else # document internal link
if map_nametags[url] \
@@ -273,11 +273,11 @@ module SiSU_ODF
if m
m.each do |i|
txt,url,trail=i[1],i[2]
- txt.gsub!(/([)(\]\[])/,"\\\\\\1")
- txt.gsub!(/([+?*])/,"\\\\\\1") # problems with +
- url.gsub!(/([+?])/,"\\\\\\1") # problems with +
- dob.obj.gsub!(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,text_link_odf(txt,url,trail)) #make sure trailing ']' are not caught in url
- dob.obj.gsub!(/\\([)(\]\[?])/,'\1') #clumsy fix
+ txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").
+ gsub(/([+?*])/,"\\\\\\1") # problems with +
+ url=url.gsub(/([+?])/,"\\\\\\1") # problems with +
+ dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url
+ gsub(/\\([)(\]\[?])/,'\1') #clumsy fix
end
m=nil
end
@@ -288,28 +288,28 @@ module SiSU_ODF
if m
m.each do |i|
txt,url,trail=i[1],i[2]
- txt.gsub!(/([)(\]\[])/,"\\\\\\1")
- txt.gsub!(/([+?*])/,"\\\\\\1") # problems with +
- url.gsub!(/([+?])/,"\\\\\\1") # problems with +
- dob.obj.gsub!(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,text_link_odf(txt,url,trail)) #make sure trailing ']' are not caught in url
- dob.obj.gsub!(/\\([)(\]\[?])/,'\1') #clumsy fix
+ txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").
+ gsub(/([+?*])/,"\\\\\\1") # problems with +
+ url=url.gsub(/([+?])/,"\\\\\\1") # problems with +
+ dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url
+ gsub(/\\([)(\]\[?])/,'\1') #clumsy fix
end
m=nil
end
dob
end
def normal(dob,p_num='') #P1 - P3
- 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
- dob.obj.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}})
- dob.obj.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
- dob.obj= if dob.is=='para' \
+ 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
+ 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}}).
+ 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
+ dob.obj= if dob.is==:para \
and dob.indent.to_s =~/[0-9]/ \
and dob.indent == dob.hang
%{<text:p text:style-name="P_indent_#{dob.indent}">#{dob.obj}#{p_num}</text:p>}
- elsif dob.is=='para' \
+ elsif dob.is==:para \
and dob.hang.to_s =~/[0-9]/ \
and dob.indent != dob.hang
%{<text:p text:style-name="P_h#{dob.hang}_i#{dob.indent}">#{dob.obj}#{p_num}</text:p>}
@@ -320,7 +320,7 @@ module SiSU_ODF
def fontface(dob)
end
def footnote_urls(str)
- str.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
+ 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}})
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]}/
@@ -334,11 +334,11 @@ module SiSU_ODF
@astx||=10000
@astxs||=20000
if str =~/#{Mx[:en_a_o]}\d+\s+/
- str.gsub!(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,'<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>')
+ str=str.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,'<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>')
end
if str =~/#{Mx[:en_a_o]}([*]+)\s+/
a=$1.gsub(/([*])/,"\\\\\\1")
- str.gsub!(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
+ str=str.gsub(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
@astxs+=1
end
if str=~/#{Mx[:en_a_o]}[*+]+\s/
@@ -347,7 +347,7 @@ module SiSU_ODF
a=x[0].gsub(/([*+])/,"\\\\\\1")
str=group_clean(str)
str=footnote_urls(str)
- str.gsub!(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
+ str=str.gsub(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
@astx+=1
end
end
@@ -357,7 +357,7 @@ module SiSU_ODF
a=x[0].gsub(/([*+])/,"\\\\\\1")
str=group_clean(str)
str=footnote_urls(str)
- str.gsub!(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
+ str=str.gsub(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
@astx+=1
end
end
@@ -368,12 +368,11 @@ module SiSU_ODF
t_o
end
def group_clean(str)
- str.gsub!(/&amp;nbsp;|&nbsp;|#{Mx[:nbsp]}/,'&#160;')
- str.gsub!(/</,'&lt;'); str.gsub!(/>/,'&gt;')
- str.gsub!(/&lt;(text:span text:style-name="Span_\S+?"|\/text:span)&gt;/,'<\1>') #works, not ideal
- str.gsub!(/#{Mx[:br_line]}/,'<br />')
- str.gsub!(/&lt;br(?:\s+\/)?&gt;/,'<br />')
- str
+ str=str.gsub(/&amp;nbsp;|&nbsp;|#{Mx[:nbsp]}/,'&#160;').
+ gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;(text:span text:style-name="Span_\S+?"|\/text:span)&gt;/,'<\1>'). #works, not ideal
+ gsub(/#{Mx[:br_line]}/,'<br />').
+ gsub(/&lt;br(?:\s+\/)?&gt;/,'<br />')
end
def poem(dob,p_num) #P4 #same as group
parray=[]
@@ -388,19 +387,19 @@ module SiSU_ODF
end
def group(dob,p_num) #P4 #same as verse
parray=[]
- 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
- dob.obj.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}})
- dob.obj.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
+ 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
+ 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}}).
+ 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
dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each do |parablock|
parablock=group_clean(parablock)
- parablock.gsub!(/&lt;text:a xlink:type="simple" xlink:href="(.+?)"&gt;/m,'<text:a xlink:type="simple" xlink:href="\1">')
- parablock.gsub!(/&lt;(\/text:a)&gt;/,'<\1>')
- parablock.gsub!(/&lt;(text:note text:id=.+?)&gt;/,'<\1>')
- parablock.gsub!(/&lt;(text:p text:style-name="Footnote")&gt;/,'<\1>')
- parablock.gsub!(/&lt;(\/?text:(?:note-citation|note-body|note|p))&gt;/,'<\1>')
+ parablock=parablock.gsub(/&lt;text:a xlink:type="simple" xlink:href="(.+?)"&gt;/m,'<text:a xlink:type="simple" xlink:href="\1">').
+ gsub(/&lt;(\/text:a)&gt;/,'<\1>').
+ gsub(/&lt;(text:note text:id=.+?)&gt;/,'<\1>').
+ gsub(/&lt;(text:p text:style-name="Footnote")&gt;/,'<\1>').
+ gsub(/&lt;(\/?text:(?:note-citation|note-body|note|p))&gt;/,'<\1>')
parablock=footnote(parablock)
parray << %{<text:p text:style-name="P_group">#{parablock}</text:p>} if parablock =~/\S+/
end
@@ -411,19 +410,19 @@ module SiSU_ODF
end
def block(dob,p_num) #P4 #same as verse
parray=[]
- 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
- dob.obj.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}})
- dob.obj.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
+ 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
+ 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}}).
+ 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
dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each do |parablock|
parablock=group_clean(parablock)
- parablock.gsub!(/&lt;text:a xlink:type="simple" xlink:href="(.+?)"&gt;/m,'<text:a xlink:type="simple" xlink:href="\1">')
- parablock.gsub!(/&lt;(\/text:a)&gt;/,'<\1>')
- parablock.gsub!(/&lt;(text:note text:id=.+?)&gt;/,'<\1>')
- parablock.gsub!(/&lt;(text:p text:style-name="Footnote")&gt;/,'<\1>')
- parablock.gsub!(/&lt;(\/?text:(?:note-citation|note-body|note|p))&gt;/,'<\1>')
+ parablock=parablock.gsub(/&lt;text:a xlink:type="simple" xlink:href="(.+?)"&gt;/m,'<text:a xlink:type="simple" xlink:href="\1">').
+ gsub(/&lt;(\/text:a)&gt;/,'<\1>').
+ gsub(/&lt;(text:note text:id=.+?)&gt;/,'<\1>').
+ gsub(/&lt;(text:p text:style-name="Footnote")&gt;/,'<\1>').
+ gsub(/&lt;(\/?text:(?:note-citation|note-body|note|p))&gt;/,'<\1>')
parablock=footnote(parablock)
parray << %{<text:p text:style-name="P_group">#{parablock}</text:p>} if parablock =~/\S+/
end
@@ -433,14 +432,14 @@ module SiSU_ODF
dob
end
def code(dob,p_num) #P5
- if dob.is=='code'
- dob.obj.gsub!(/\s\s/,'&#160;&#160;')
+ if dob.is==:code
+ dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;')
parray=[]
dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each do |parablock|
parablock=group_clean(parablock)
- parablock.gsub!(/^\s*$/,'<br />')
- parablock.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
+ 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
parray << %{<text:p text:style-name="P_code">#{parablock}</text:p>} if parablock =~/\S+/
end
dob.obj=parray.join \
@@ -450,15 +449,15 @@ module SiSU_ODF
dob
end
def table(dob,p_num) #
- if dob.is =='table'
- table=SiSU_ODF_format::Table.new(@md,dob,p_num)
+ if dob.is ==:table
+ table=SiSU_ODF_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::Format_obj_break.new(@md,dob)
+ if dob.is ==:break
+ br=SiSU_ODF_Format::FormatObjBreak.new(@md,dob)
if dob.obj==Mx[:br_page] \
or dob.obj==Mx[:br_page_new]
dob=br.br_page
@@ -470,7 +469,7 @@ module SiSU_ODF
end
def odf_structure(md,dob)
@md,@dob=md,dob
- dob=if dob.is !='code'
+ dob=if dob.is !=:code
dob=image(dob) if dob.obj =~/#{Mx[:lnk_o]}[ ]*\S+?\.(?:png|jpg|gif)\s.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
dob=text_link(dob) if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
dob=text_link_relative(dob) if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
@@ -482,24 +481,24 @@ module SiSU_ODF
if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
if defined? dob.ocn \
and not dob.ocn.nil?
- p_num=SiSU_ODF_format::Paragraph_number.new(dob.ocn).display
+ p_num=SiSU_ODF_Format::ParagraphNumber.new(dob.ocn).display
end
end
end
dob=footnote(dob)
- if dob.is=='heading'
+ if dob.is==:heading
@@odf[:body] << heading(dob,p_num).obj << @br*2
- elsif dob.is =='verse'
+ elsif dob.is ==:verse
@@odf[:body] << poem(dob,p_num).obj << @br*2
- elsif dob.is=='group'
+ elsif dob.is==:group
@@odf[:body] << group(dob,p_num).obj << @br*2
- elsif dob.is=='block'
+ elsif dob.is==:block
@@odf[:body] << block(dob,p_num).obj << @br*2
- elsif dob.is=='code'
+ elsif dob.is==:code
@@odf[:body] << code(dob,p_num).obj << @br*2
- elsif dob.is=='table' #elsif dob.obj =~ /<!Th?¡/u
+ elsif dob.is==:table #elsif dob.obj =~ /<!Th?¡/u
@@odf[:body] << table(dob,p_num).obj << @br*2
- elsif dob.is=='break'
+ elsif dob.is==:break
@@odf[:body] << obj_break(dob).obj << @br*2
else
@@odf[:body] << normal(dob,p_num).obj << @br*2 # main text, contents, body KEEP
@@ -511,7 +510,7 @@ module SiSU_ODF
end
def markup(data) # Used for major markup instructions
safe_characters=/[^a-zA-Z0-9}{\/?,."';:)(><\-_&!@%~#\]\[*=$| \n+`#{Mx[:tc_p]}]/u
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
dir.path.odt_bld
@data_mod,@endnotes,@level,@cont,@copen,@odf_contents_close=Array.new(6){[]}
@rcdc=false
@@ -528,18 +527,18 @@ module SiSU_ODF
#p dob.obj if dob.obj =~safe_characters and @md.opt.cmd =~/V/ #KEEP
dob.obj='' if dob.obj =~/#{Mx[:lv_o]}\d+:.*?#{Mx[:lv_c]}.+?#{Mx[:pa_non_object_dummy_heading]}/ #fix Mx[:lv_o]
para_array=[]
- dob.obj.gsub!(/</,'&lt;'); dob.obj.gsub!(/>/,'&gt;')
+ dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;')
word=dob.obj.scan(/\S+|\n/)
if word
word.each do |w| # _ - / # | : ! ^ ~
unless dob =~/^(?:#{Rx[:meta]}|%+ )/m
- w.gsub!(/&#(?:126|152);/,'~') #126 usual
- w.gsub!(/&nbsp;/,'&#160;')
+ w=w.gsub(/&#(?:126|152);/,'~'). #126 usual
+ gsub(/&nbsp;/,'&#160;')
if w !~/(?:&\S{2,7}?;)+/
- w.gsub!(/&/,'&amp;')
+ w=w.gsub(/&/,'&amp;')
end
if w !~/&\S{1,7}?;(?:&\S{1,7}?;)+/ #imperfect
- w.gsub!(/(&\S{1,7};)+&/,'\1&amp;')
+ w=w.gsub(/(&\S{1,7};)+&/,'\1&amp;')
end
end
para_array << w
@@ -547,65 +546,73 @@ module SiSU_ODF
dob.obj=para_array.join(' ')
dob.obj=dob.obj.strip
end
- if dob.is=='code' #{Mx[:gr_o]}code#{Mx[:gr_c]}/ #fix #code-block: angle brackets special characters #fix
- dob.obj.gsub!(/(^|[^}])_(?:<|&lt;)/m,'\1&lt;'); dob.obj.gsub!(/(^|[^}])_(?:>|&gt;)/m,'\1&gt;')
- dob.obj.gsub!(/(^|[^}])_(?:<|&lt;)/m,'\1&lt;'); dob.obj.gsub!(/(^|[^}])_(?:>|&gt;)/m,'\1&gt;')
+ if dob.is==:code #{Mx[:gr_o]}code#{Mx[:gr_c]}/ #fix #code-block: angle brackets special characters #fix
+ dob.obj=dob.obj.gsub(/(^|[^}])_(?:<|&lt;)/m,'\1&lt;').gsub(/(^|[^}])_(?:>|&gt;)/m,'\1&gt;').
+ gsub(/(^|[^}])_(?:<|&lt;)/m,'\1&lt;').gsub(/(^|[^}])_(?:>|&gt;)/m,'\1&gt;')
end
- if dob.of=='block'
- dob.obj.gsub!(/#{Mx[:gl_bullet]}/,'● ')
+ if dob.of==:block
+ dob.obj=dob.obj.gsub(/#{Mx[:gl_bullet]}/,'● ')
end
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
- dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>')
- dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>')
- dob.obj.gsub!(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
- dob.obj.gsub!(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/#{Mx[:mk_o]}[~-]##{Mx[:mk_c]}/,'')
- if dob.is=='para' \
+ dob.obj=dob.obj.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').
+ 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[:tag_o]}\S+?#{Mx[:tag_c]}/,''). #check
+ gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
+ gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').
+ 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
end
- dob.obj.gsub!(/#{Mx[:br_line]}/,'<br />')
- dob.obj.gsub!(/&#169;/,'©') #too arbitrary
- dob.obj.gsub!(/.+?<-#>/,'') # remove dummy headings (used by html) #check
- dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
- '<text:span text:style-name="Span_bold">\1</text:span>')
- dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
- '<text:span text:style-name="Span_italic">\1</text:span>')
- dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
- '<text:span text:style-name="Span_underscore">\1</text:span>')
- dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
- '<text:span text:style-name="Span_superscript">\1</text:span>')
- dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
- '<text:span text:style-name="Span_subscript">\1</text:span>')
- dob.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
- '<text:span text:style-name="Span_monospace">\1</text:span>')
- dob.obj.gsub!(/­/u,'-')
- dob.obj.gsub!(/ /u, ' ') # space identify
- dob.obj.gsub!(/ /u, ' ') # space identify
- dob.obj.gsub!(/·/u,'*')
- dob.obj.gsub!(/[­–—]/u,'-') #— – chk
- dob.obj.gsub!(/ < /i,'&#060;')
- dob.obj.gsub!(/\\copy(?:right)?\b/,'&#169;')
- dob.obj.gsub!(/\\trademark\b|\\tm\b/,'&#174;')
- dob.obj.gsub!(/\44/,'&#36;') #$ watch
- dob.obj.gsub!(/<a href=".+?">(.+?)<\/a>/,'\1')
- dob.obj.gsub!(/#{Mx[:mk_o]}name#\S+?#{Mx[:mk_c]}/,'') # remove name links
+ dob.obj=dob.obj.gsub(/#{Mx[:br_line]}/,'<br />').
+ gsub(/&#169;/,'©'). #too arbitrary
+ gsub(/.+?<-#>/,''). # remove dummy headings (used by html) #check
+ gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
+ '<text:span text:style-name="Span_bold">\1</text:span>').
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
+ '<text:span text:style-name="Span_italic">\1</text:span>').
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
+ '<text:span text:style-name="Span_underscore">\1</text:span>').
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
+ '<text:span text:style-name="Span_superscript">\1</text:span>').
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
+ '<text:span text:style-name="Span_subscript">\1</text:span>').
+ gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
+ '<text:span text:style-name="Span_monospace">\1</text:span>').
+ gsub(/­/u,'-').
+ gsub(/ /u, ' '). # space identify
+ gsub(/ /u, ' '). # space identify
+ gsub(/·/u,'*').
+ gsub(/[­–—]/u,'-'). #— – chk
+ gsub(/ < /i,'&#060;').
+ gsub(/\\copy(?:right)?\b/,'&#169;').
+ gsub(/\\trademark\b|\\tm\b/,'&#174;').
+ gsub(/\44/,'&#36;'). #$ watch
+ gsub(/<a href=".+?">(.+?)<\/a>/,'\1').
+ gsub(/#{Mx[:mk_o]}name#\S+?#{Mx[:mk_c]}/,'') # remove name links
wordlist=dob.obj.scan(/\S+/)
dob.obj=tidywords(wordlist).join(' ').strip
@rcdc=true if @rcdc==false \
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]})/
+ 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::Paragraph_number.new(dob.ocn)
+ @p_num=SiSU_ODF_Format::ParagraphNumber.new(dob.ocn)
end
- if dob.is=~/heading|para|group|verse|code|table|break/ # extend, include other types
+ if dob.is ==:heading \
+ || dob.is ==:para \
+ || dob.is ==:group \
+ || dob.is ==:verse \
+ || dob.is ==:code \
+ || dob.is ==:table \
+ || dob.is ==:break
odf_structure(@md,dob)
end
- dob.obj.gsub!(/<!.+!>/,' ') if dob.obj ## Clean Prepared Text
- dob.obj.gsub!(/#{Mx[:tc_o]}.+?#{Mx[:tc_c]}/,' ') if dob.obj ## CHECK Clean Prepared Text
- dob.obj.gsub!(/<:\S+>/,' ') if dob.obj ## Clean Prepared Text
+ if dob.obj ## Clean Prepared Text
+ dob.obj=dob.obj.gsub(/<!.+!>/,' ').
+ gsub(/#{Mx[:tc_o]}.+?#{Mx[:tc_c]}/,' ').
+ gsub(/<:\S+>/,' ')
+ end
end
end
end
@@ -637,8 +644,8 @@ module SiSU_ODF
<style:style style:name="Table2.M" style:family="table-column"><style:table-column-properties style:column-width="1.307" style:rel-column-width="5041*"/></style:style>
<style:style style:name="Table2.N" style:family="table-column"><style:table-column-properties style:column-width="1.214cm" style:rel-column-width="4681*"/></style:style>
WOK
- x.strip!
- x.gsub!(/\n+/m,'') unless @md.opt.cmd=~/M/
+ x=x.strip
+ x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
x
else ''
end
@@ -660,8 +667,8 @@ WOK
<office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
<text:sequence-decls><text:sequence-decl text:display-outline-level="0" text:name="Illustration"/><text:sequence-decl text:display-outline-level="0" text:name="Table"/><text:sequence-decl text:display-outline-level="0" text:name="Text"/><text:sequence-decl text:display-outline-level="0" text:name="Drawing"/></text:sequence-decls>
WOK
- x.strip!
- x.gsub!(/\n+/m,'') unless @md.opt.cmd=~/M/
+ x=x.strip
+ x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
@@odf[:head] << x
end
def post
@@ -675,7 +682,7 @@ WOK
content << @@odf[:body]
content << @@odf[:metadata]
content << @@odf[:tail]
- Output.new(content,@md,@env).odf
+ SiSU_ODF::Source::Output.new(content,@md,@env).odf
@@odf[:head],@@odf[:body],@@odf[:tail],@@odf[:metadata]=[],[],[],[]
end
end
@@ -684,9 +691,9 @@ WOK
@content,@md,@env=content,md,env
end
def odf #%odf output
- env=SiSU_Env::SiSU_file.new(@md)
+ env=SiSU_Env::FileOp.new(@md)
env.mkdir
- header=SiSU_ODF_format::ODT_head_1_2.new(@md)
+ header=SiSU_ODF_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/v3/odf_format.rb b/lib/sisu/v3/odf_format.rb
index bf44613b..c6d4b504 100644
--- a/lib/sisu/v3/odf_format.rb
+++ b/lib/sisu/v3/odf_format.rb
@@ -56,11 +56,11 @@
** Description: opendocument formatting, default opendocument template
=end
-module SiSU_ODF_format
+module SiSU_ODF_Format
require_relative 'param' # param.rb
include SiSU_Param
include SiSU_Viz
- class Paragraph_number
+ class ParagraphNumber
def initialize(paranum)
@paranum=/(\d+)/m.match(paranum.to_s)[1]
end
@@ -74,7 +74,7 @@ module SiSU_ODF_format
@paranum.gsub(/(\d+)/,'<a href="#\1">')
end
end
- class Format_text_object
+ class FormatTextObject
def initialize(md,t_o)
@md,@t_o=md,t_o
if t_o.class==Hash
@@ -84,8 +84,8 @@ module SiSU_ODF_format
p caller
end
rgx=/#{Mx[:en_a_o]}\d+\s+(.+?)#{Mx[:en_a_c]}/
- @txt.gsub!(rgx,'\1') if @txt =~rgx
- @vz=SiSU_Env::Get_init.instance.skin
+ @txt=@txt.gsub(rgx,'\1') if @txt =~rgx
+ @vz=SiSU_Env::GetInit.instance.skin
end
def scr_endnote_body
"<endnote>#{@txt}</endnote> "
@@ -110,7 +110,7 @@ module SiSU_ODF_format
def initialize(md,dob,p_num)
@md,@dob,@p_num=md,dob,p_num
@txt=dob.obj
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
if @md.fns != @@fns
@@table_counter=0
@@fns=@md.fns
@@ -150,7 +150,7 @@ module SiSU_ODF_format
'Table_Heading'
else 'P_table_cell'
end
- str.gsub!(/^~$/,'') # tilde / empty cell
+ str=str.gsub(/^~$/,'') # tilde / empty cell
%{<table:table-cell office:value-type="string">#{@br}} +
%{<text:p text:style-name="#{txt_name_cell}">#{@br}} +
%{#{str}} +
@@ -180,7 +180,7 @@ module SiSU_ODF_format
row='' if row =~/^<!$/
m=row[/<!f(.+?)!>/,1]
@@tablefoot << m if m
- row.gsub!(/<!f.+?!>/,'')
+ row=row.gsub(/<!f.+?!>/,'')
@cells=[]
row.split(/\s*#{Mx[:tc_p]}/).each do |cell|
@cells << table_tag_cell(cell,i)
@@ -200,7 +200,7 @@ module SiSU_ODF_format
@dob
end
end
- class ODT_head_1_2
+ class ODT_Head_1_2
def initialize(md)
@md=md
@generator="#{@md.sisu_version[:project]} #{@md.sisu_version[:version]} #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})"
@@ -226,8 +226,8 @@ module SiSU_ODF_format
</rdf:Description>
</rdf:RDF>
WOK
- x.strip!
- x.gsub!(/\n+/m,'') unless @md.opt.cmd=~/M/
+ x=x.strip
+ x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
x
end
def meta_inf_manifest_xml(md)
@@ -256,8 +256,8 @@ WOK
<manifest:file-entry manifest:media-type="application/vnd.sun.xml.ui.configuration" manifest:full-path="Configurations2/"/>
</manifest:manifest>
WOK
- x.strip!
- x.gsub!(/\n+/m,'') unless @md.opt.cmd=~/M/
+ x=x.strip
+ x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
x
end
def meta_xml
@@ -272,8 +272,8 @@ WOK
</office:meta>
</office:document-meta>
WOK
- x.strip!
- x.gsub!(/\n+/m,'') unless @md.opt.cmd=~/M/
+ x=x.strip
+ x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
x
end
def settings_xml
@@ -375,8 +375,8 @@ WOK
</office:settings>
</office:document-settings>
WOK
- x.strip!
- x.gsub!(/\n+/m,'') unless @md.opt.cmd=~/M/
+ x=x.strip
+ x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
x
end
def styles_xml
@@ -576,18 +576,18 @@ WOK
</office:master-styles>
</office:document-styles>
WOK
- x.strip!
- x.gsub!(/\n+/m,'') unless @md.opt.cmd=~/M/
+ x=x.strip
+ x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
x
end
def mimetype
x=<<WOK
application/vnd.oasis.opendocument.text
WOK
- x.strip!
+ x=x.strip
end
end
- class Format_obj_break
+ class FormatObjBreak
def initialize(md,t_o)
@md,@t_o=md,t_o
end
diff --git a/lib/sisu/v3/options.rb b/lib/sisu/v3/options.rb
index c594aac4..11d03e1d 100644
--- a/lib/sisu/v3/options.rb
+++ b/lib/sisu/v3/options.rb
@@ -57,7 +57,7 @@
parsing
=end
-module SiSU_commandline
+module SiSU_Commandline
require "pathname"
require_relative 'sysenv' # sysenv.rb
@@base_path=nil
@@ -66,9 +66,9 @@ module SiSU_commandline
def initialize(a)
@cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what,@lng,@lng_base,@base_path,@base_stub,@sub_location='','','','','','','','','','','','',''
@f_pths,@files,@paths,@mod,@act=Array.new(5){[]}
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
@lng_base=@env.language_default_set
- @dir_structure_by=SiSU_Env::Env_call.new.output_dir_structure.by?
+ @dir_structure_by=SiSU_Env::EnvCall.new.output_dir_structure.by?
@@base_path ||=Dir.pwd
@base_path=@@base_path
r=Px[:lng_lst].join('|')
@@ -87,7 +87,8 @@ module SiSU_commandline
x << Dir.glob("#{d}/*.ss[tm]")
end
end
- opt + x.flatten!
+ x=x.flatten
+ opt + x
end
end
def find_select(find_flag,opt)
@@ -112,8 +113,8 @@ module SiSU_commandline
end
end
end
- x.flatten!
- end
+ x.flatten
+ end
end
def sisu_glob_rules(a)
a=if a.inspect =~/"-[A-Za-z0-9]*[fG]/ \
@@ -140,7 +141,7 @@ module SiSU_commandline
end
end
r=Px[:lng_lst].join('|')
- r.gsub!(/\|#{@lng_base}\|/,'|')
+ r=r.gsub(/\|#{@lng_base}\|/,'|')
@lang_regx=%r{(?:#{r})}
z=if find_flag
(f.length > 0) \
@@ -182,13 +183,13 @@ module SiSU_commandline
if @files.length > 0 \
and @cmd.empty? \
and @mod.length==0 #% if no other action called on filename given, default is sisu --v3 -0 [filename(s)] configured as flag default
- shortcut=SiSU_Env::Info_processing_flag.new
+ shortcut=SiSU_Env::InfoProcessingFlag.new
@mod=['--v3']
@cmd=shortcut.cf_0 + 'm'
end
SiSU_Screen::Ansi.new(@cmd,"\tsisu " + @cmd + ' ' + @mod.join(' ') + ' ' + @files.join(' ') + "\n").print_brown if @cmd =~/[vVM]/
end
-# @files.uniq!
+# @files=@files.uniq
@act=opt_act
@files
self
@@ -229,7 +230,7 @@ module SiSU_commandline
fn = (y[r_f,1]) \
? y[r_f,1]
: y
- fn.gsub!(/\.((?:ssm\.)?sst)/,'.-\1')
+ fn=fn.gsub(/\.((?:ssm\.)?sst)/,'.-\1')
fullname=Dir.pwd + '/' + fn
pt=Pathname.new(fullname)
pth << Dir.pwd
@@ -304,7 +305,7 @@ module SiSU_commandline
{ cmd: c, mod: m, what: w, paths: pth, files: f, f_pths: f_pths, lng: lng, lngs: lngs }
end
def expand_numeric_shortcuts(a)
- shortcut=SiSU_Env::Info_processing_flag.new
+ shortcut=SiSU_Env::InfoProcessingFlag.new
s=''
a.each do |x|
y=case x
@@ -361,6 +362,7 @@ module SiSU_commandline
when /^--(?:xhtml)$/; c=c+'b'
when /^--(?:xml-sax)$/; c=c+'x'
when /^--(?:xml-dom)$/; c=c+'X'
+ when /^--(?:images)$/; c=c+'j'
when /^--(?:hash-digests)$/; c=c+'N'
when /^--(?:po4a|pot?)$/; c=c+'P'
when /^--(?:termsheet)$/; c=c+'T'
@@ -388,7 +390,7 @@ module SiSU_commandline
end
ca=[]
unless c.empty?
- c.gsub!(/-/,'')
+ c=c.gsub(/-/,'')
c.scan(/CC|\S/) {|x| ca << x}
cmd= '-' + ca.uniq.join
end
@@ -405,6 +407,13 @@ module SiSU_commandline
else ''
end
end
+ if cmd !~/j/
+ extra+=if cmd =~/[bHhwXxyz]/ \
+ and cmd !~/[j]/
+ 'j' #% copy images
+ else ''
+ end
+ end
if cmd !~/y/
extra+=if cmd =~/[abeHhIiNopsSstwXxz]/ \
and cmd !~/y/
@@ -426,31 +435,47 @@ module SiSU_commandline
act={}
act[:license]=(cmd =~/L/ \
|| mod.inspect =~/"--license/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:site_init]=(cmd =~/C/ \
|| mod.inspect =~/"--init-site/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:rc]=if mod.inspect =~/"--rc=/
x=Dir.pwd + '/' + mod.join.gsub(/--rc=/,'')
- { bool: true, inst: x }
+ { bool: true, set: :on, inst: x }
+ else
+ { bool: false, set: :na, inst: '' }
+ end
+ act[:dump]=if mod.inspect =~/"--dump=/
+ base_pth=mod.join(';').gsub(/^.*--dump=['"]?(.+?)(?:['"]?;.+)?$/,'\1')
+ { bool: true, set: :on, inst: base_pth }
+ elsif mod.inspect =~/"--dump/
+ { bool: true, set: :on, inst: @base_path }
else
- { bool: false, inst: '' }
+ { bool: false, set: :na, inst: nil }
+ end
+ act[:redirect]=if mod.inspect =~/"--redirect=/
+ base_pth=mod.join(';').gsub(/^.*--redirect=['"]?(.+?)(?:['"]?;.+)?$/,'\1')
+ { bool: true, set: :on, inst: base_pth }
+ elsif mod.inspect =~/"--redirect/
+ { bool: true, set: :on, inst: @base_path }
+ else
+ { bool: false, set: :na, inst: nil }
end
act[:verbose]=(cmd =~/v/ \
|| mod.inspect =~/"--verbose"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:quiet]=(cmd =~/q/ \
|| mod.inspect =~/"--quiet"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:color_state]=if mod.inspect =~/"--color-on"|"--color"/
- { bool: true }
+ { bool: true, set: :on }
elsif mod.inspect =~/"--color-off"/
- { bool: false }
- else { bool: true } #fix default color
+ { bool: false, set: :off }
+ else { bool: true, set: :na } #fix default color
end
# act[:color_toggle]=if cmd =~/c/ \
# or mod.inspect =~/"--color-toggle"/
@@ -459,138 +484,259 @@ module SiSU_commandline
# end
act[:maintenance]=(cmd =~/M/ \
|| mod.inspect =~/"--maintenance|--keep-processing-files"/) \
- ? { bool: true }
- : { bool: false }
- act[:ocn]=if mod.inspect =~/"--no-ocn"/
- { bool: false }
- else { bool: true }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
+ act[:switch]=if mod.inspect =~/"--switch-off=/
+ off_list=mod.join(';').gsub(/^.*--switch-off=['"]?(.+?)(?:['"];.+)?$/,'\1')
+ off_list=off_list.scan(/[^,;\s]+/)
+ { bool: false, set: :off, off: off_list}
+ else { bool: true, set: :na, off: [] }
+ end
+ act[:ocn]=
+ if mod.inspect =~/"--inc-ocn"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-ocn"/ \
+ || act[:switch][:off].inspect =~/"ocn"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:toc]=if mod.inspect =~/"--inc-toc"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-toc"/ \
+ || act[:switch][:off].inspect =~/"toc"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:minitoc]=if mod.inspect =~/"--inc-minitoc"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-minitoc"/ \
+ || act[:switch][:off].inspect =~/"minitoc"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:manifest]=if mod.inspect =~/"--inc-manifest"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-manifest"/ \
+ || act[:switch][:off].inspect =~/"manifest"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:links_to_manifest]=if mod.inspect =~/"--inc-links-to-manifest"|"--inc-manifest-links"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-links-to-manifest"|"--(?:exc|no)-manifest-links"/ \
+ || act[:switch][:off].inspect =~/"links_to_manifest"|"manifest_links"/ \
+ || mod.inspect =~/"--(?:redirect|dump)/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:manifest_minitoc]=if mod.inspect =~/"--inc-manifest-minitoc"|"--inc-minitoc"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-manifest-minitoc"|"--(?:exc|no)-minitoc"/ \
+ || act[:switch][:off].inspect =~/"manifest_minitoc"|"minitoc"/
+ #|| mod.inspect =~/"--(?:redirect|dump)/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:metadata]=if mod.inspect =~/"--inc-metadata"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-metadata"/ \
+ || act[:switch][:off].inspect =~/"metadata"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:html_minitoc]=if mod.inspect =~/"--inc-html-minitoc"|"--inc-minitoc"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-html-minitoc"|"--(?:exc|no)-minitoc"/ \
+ || act[:switch][:off].inspect =~/"html_minitoc"|"minitoc"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:html_navigation]=if mod.inspect =~/"--inc-html-navigation"|"--inc-navigation"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-html-navigation"|"--(?:exc|no)-navigation"/ \
+ || act[:switch][:off].inspect =~/"html_navigation"|"nav"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:html_navigation_bar]=if mod.inspect =~/"--inc-html-navigation-bar"|"--inc-navigation-bar"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-html-navigation-bar"|"--(?:exc|no)-navigation-bar"/ \
+ || act[:switch][:off].inspect =~/"html_navigation_bar"|"navbar"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:segsubtoc]=if mod.inspect =~/"--inc-segsubtoc"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-segsubtoc"/ \
+ || act[:switch][:off].inspect =~/"segsubtoc"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:search_form]=if mod.inspect =~/"--inc-search-form"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-search-form"/ \
+ || act[:switch][:off].inspect =~/"search_form"|"search"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:html_search_form]=if mod.inspect =~/"--inc-html-search-form"|"--inc-search-form"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-html-search-form"|"--(?:exc|no)-search-form"/ \
+ || act[:switch][:off].inspect =~/"html_search_form"|"search_form"|"search"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:html_right_pane]=if mod.inspect =~/"--inc-html-right-pane"|"--inc-right-pane"|"--inc-html-right-column"|"--inc-right-column"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-html-right-pane"|"--(?:exc|no)-right-pane"|"--(?:exc|no)-html-right-column"|"--(?:exc|no)-right-column"/ \
+ || act[:switch][:off].inspect =~/"html_right_pane"|"html_right_column"|"promo"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
+ end
+ act[:html_top_band]=if mod.inspect =~/"--inc-html-top-band"|"--inc-top-band"/
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--(?:exc|no)-html-top-band"|"--(?:exc|no)-top-band"/ \
+ || act[:switch][:off].inspect =~/"html-top-band"|"top-band"/
+ { bool: false, set: :off }
+ else { bool: true, set: :na }
end
act[:dal]=(cmd =~/m/ \
|| mod.inspect =~/"--dal"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:html]=(cmd =~/h/ \
|| mod.inspect =~/"--html"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:concordance]=(cmd =~/w/ \
|| mod.inspect =~/"--concordance"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
+ act[:images]=(cmd =~/j/ \
+ || mod.inspect =~/"--images"/) \
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:pdf]=(cmd =~/p/ \
|| mod.inspect =~/"--pdf"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:epub]=(cmd =~/e/ \
|| mod.inspect =~/"--epub"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:odt]=(cmd =~/o/ \
|| mod.inspect =~/"--odf"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:xml_sax]=(cmd =~/x/ \
|| mod.inspect =~/"--xml-sax"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:xml_dom]=(cmd =~/X/ \
|| mod.inspect =~/"--xml-dom"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:xhtml]=(cmd =~/b/ \
|| mod.inspect =~/"--xhtml"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:txt]=(cmd =~/[at]/ \
|| mod.inspect =~/"--txt"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:manpage]=(cmd =~/i/ \
|| mod.inspect =~/"--manpage"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:texinfo]=(cmd =~/I/ \
|| mod.inspect =~/"--texinfo"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:fictionbook]=(cmd =~/f/ \
|| mod.inspect =~/"--fictionbook"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:psql]=(cmd =~/D/ \
|| mod.inspect =~/"--pg"|"--pgsql"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:sqlite]=(cmd =~/d/ \
|| mod.inspect =~/"--sqlite"/) \
- ? { bool: true }
- : { bool: false }
+ && (mod.inspect =~/"--createdb"|"--create"|"--recreate"|"--dropall"|"--recreate"|"--import"|"--update"|"--remove"/) \
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
+ act[:sqlite_discreet]=(cmd =~/d/ \
+ || mod.inspect =~/"--sql"|"--sqlite"/) \
+ && (mod.inspect =~/"--both"/ \
+ || mod.inspect !~/"--createdb"|"--create"|"--recreate"|"--dropall"|"--recreate"|"--import"|"--update"|"--remove"/) \
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:harvest]=(mod.inspect =~/"--harvest"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:po4a]=(cmd =~/P/ \
|| mod.inspect =~/"--po4a"|"--pot?"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:git]=(cmd =~/g/ \
|| mod.inspect =~/"--git"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:hash_digests]=(cmd =~/N/ \
|| mod.inspect =~/"--hash-digests"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:sample_search_form]=(cmd =~/F/ \
|| mod.inspect =~/"--sample-search-form"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:webrick]=(cmd =~/W/ \
|| mod.inspect =~/"--webrick"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:share_source]=(cmd =~/s/ \
|| mod.inspect =~/"--source"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:sisupod]=(cmd =~/S/ \
|| mod.inspect =~/"--sisupod"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:scp]=(cmd =~/r/ \
|| mod.inspect =~/"--scp"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:rsync]=(cmd =~/R/ \
|| mod.inspect =~/"--rsync"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:delete_output]=(cmd =~/z/ \
|| mod.inspect =~/"--delete"|"--zap"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:urls_all]=(cmd =~/U/ \
|| mod.inspect =~/"--urls-all"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:urls_seleted]=(cmd =~/u/ \
|| mod.inspect =~/"--urls"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:sitemap]=(cmd =~/Y/ \
|| mod.inspect =~/"--sitemap"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:qrcode]=(cmd =~/Q/ \
|| mod.inspect =~/"--qrcode"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:manifest]=(cmd =~/y/ \
|| mod.inspect =~/"--manifest"/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:help]=(mod.inspect =~/"--help/) \
- ? { bool: true }
- : { bool: false }
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
@act=act
end
def cmd
diff --git a/lib/sisu/v3/param.rb b/lib/sisu/v3/param.rb
index 91f77410..5563f780 100644
--- a/lib/sisu/v3/param.rb
+++ b/lib/sisu/v3/param.rb
@@ -64,7 +64,7 @@ module SiSU_Param
require_relative 'param_identify_markup' # param_identify_markup.rb
require_relative 'help' # help.rb
include SiSU_Help
- @@date=SiSU_Env::Info_date.new
+ @@date=SiSU_Env::InfoDate.new
@@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=nil
@doc={ initialise: nil, markup: '', lnks: '', stmp: '', req: {} }
@@yaml=@@yamladdr=nil
@@ -82,8 +82,8 @@ module SiSU_Param
opt.fns
else opt.fns.gsub(/\.ssm$/,'.ssm.sst')
end
- Instantiate.new.param_instantiate
- @env=SiSU_Env::Info_env.new(@fns)
+ SiSU_Param::Instantiate.new.param_instantiate
+ @env=SiSU_Env::InfoEnv.new(@fns)
@pstorefile="#{@env.processing_path.dal}/#{@fns}.pstore"
end
def get
@@ -113,8 +113,8 @@ module SiSU_Param
else
param_msg='Parameters extracted'
fns_array=@env.read_source_file(@opt.fns)
- md=Instructions.new(fns_array,@opt)
- @md=Instructions.new(fns_array,@opt).extract
+ md=SiSU_Param::Parameters::Instructions.new(fns_array,@opt)
+ @md=SiSU_Param::Parameters::Instructions.new(fns_array,@opt).extract
@md
end
if defined? @md.title.main # on removal check problems with -U
@@ -126,7 +126,7 @@ module SiSU_Param
@@md.opt=@opt
@@md
end
- class Md_default
+ class MdDefault
def rights(author,date)
@author,@date=author,date
def all
@@ -179,7 +179,7 @@ module SiSU_Param
end
def name_format(name)
if name
- name.strip!
+ name=name.strip
@name_a_h=[]
authors=name.scan(/[^;]+/)
authors.each_with_index do |a,i|
@@ -776,27 +776,25 @@ module SiSU_Param
m=@h['bold']
i=(m=~/\/i$/)? 'i' : ''
z=if m
- x=m.gsub(/^\/(.+?)\/i?/,'\1')
- x.gsub!(/\((?:\?:)?/,'(?:') # avoid need to escape use of brackets within regex provided
+ x=m.gsub(/^\/(.+?)\/i?/,'\1').
+ gsub(/\((?:\?:)?/,'(?:') # avoid need to escape use of brackets within regex provided
rgx='\b(' + x + ')\b'
y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
{ str: '\b(?:' + x + ')\b', regx: y, i: i }
else nil
end
- z
end
def italics
m=@h['italics']
i=((m=~/\/i$/) ? 'i' : '')
z=if m
- x=m.gsub(/^\/(.+?)\/i?/,'\1')
- x.gsub!(/\((?:\?:)?/,'(?:') # avoid need to escape use of brackets within regex provided
+ x=m.gsub(/^\/(.+?)\/i?/,'\1').
+ gsub(/\((?:\?:)?/,'(?:') # avoid need to escape use of brackets within regex provided
rgx='\b(' + x + ')\b'
y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
{ str: '\b(?:' + x + ')\b', regx: y, i: i }
else nil
end
- z
end
def emphasis
if @h['emphasis'] =~/bold/; 'bold'
@@ -813,6 +811,89 @@ module SiSU_Param
else nil
end
end
+ def omit
+ m=@h['omit']
+ @m=m ? (m.split(/,\s+/)) : nil
+ def list
+ @m
+ end
+ self
+ end
+ def ocn?
+ (omit.list.inspect =~/"ocn"/) \
+ ? :off
+ : :na
+ end
+ def toc?
+ (omit.list.inspect =~/"toc"/) \
+ ? :off
+ : :na
+ end
+ def manifest?
+ (omit.list.inspect =~/"manifest"/) \
+ ? :off
+ : :na
+ end
+ def links_to_manifest?
+ (omit.list.inspect =~/"manifest_links"|"links_to_manifest"/) \
+ ? :off
+ : :na
+ end
+ def metadata?
+ (omit.list.inspect =~/"metadata"/) \
+ ? :off
+ : :na
+ end
+ def minitoc?
+ (omit.list.inspect =~/"minitoc"/) \
+ ? :off
+ : :na
+ end
+ def html_minitoc?
+ (omit.list.inspect =~/"html_minitoc"/) \
+ ? :off
+ : :na
+ end
+ def html_top_band?
+ (omit.list.inspect =~/"html_top_band"/) \
+ ? :off
+ : :na
+ end
+ def html_navigation?
+ (omit.list.inspect =~/"html_navigation"/) \
+ ? :off
+ : :na
+ end
+ def html_navigation_bar?
+ (omit.list.inspect =~/"html_navigation_bar"/) \
+ ? :off
+ : :na
+ end
+ def segsubtoc?
+ (omit.list.inspect =~/"segsubtoc"/) \
+ ? :off
+ : :na
+ end
+ def search_form?
+ (omit.list.inspect =~/"search_form"/) \
+ ? :off
+ : :na
+ end
+ def html_search_form?
+ (omit.list.inspect =~/"html_search_form"/) \
+ ? :off
+ : :na
+ end
+ def html_right_pane?
+ (omit.list.inspect =~/"html_right_column"|"html_right_pane"/) \
+ ? :off
+ : :na
+ end
+ def manifest_minitoc?
+ (omit.list.inspect =~/"manifest_minitoc"/) \
+ ? :off
+ : :na
+ end
def texpdf_font
def main
@h['texpdf_font'] \
@@ -863,16 +944,16 @@ module SiSU_Param
end
end
if manpage['name']
- manpage['name']=manpage['name'].join("\n.br\n")
- manpage['name'].gsub!(/(-)/m,"\\\\\\1")
- manpage['name'].gsub!(/\A/,"\n.br\n.SH NAME\n.br\n")
+ manpage['name']=manpage['name'].join("\n.br\n").
+ gsub(/(-)/m,"\\\\\\1").
+ gsub(/\A/,"\n.br\n.SH NAME\n.br\n")
else
manpage['name']='man page "name/whatis" information not provided, set in header @man: name=[whatis information]'
end
if manpage['synopsis']
- manpage['synopsis']=manpage['synopsis'].join("\n\n.br\n")
- manpage['synopsis'].gsub!(/(-)/m,"\\\\\\1")
- manpage['synopsis'].gsub!(/\A/,"\n.br\n.SH SYNOPSIS\n.br\n")
+ manpage['synopsis']=manpage['synopsis'].join("\n\n.br\n").
+ gsub(/(-)/m,"\\\\\\1").
+ gsub(/\A/,"\n.br\n.SH SYNOPSIS\n.br\n")
else
manpage['synopsis']=''
end
@@ -963,14 +1044,14 @@ module SiSU_Param
@flv,@lang,@seg_names,@tags,@tag_array,@tag_a,@ec[:image],@ec[:audio],@ec[:multimedia]=Array.new(9){[]}
@authors,@topic_register_array,@papersize_array=[],[],[]
@lvs=[nil,0,0,0,0,0,0]
- @lang_code_insert=(@opt.dir_structure_by =~/language/) \
+ @lang_code_insert=(@opt.dir_structure_by ==:language) \
? ''
: ".#{@opt.lng}"
@rgx_image=/(?:^|[^_\\])\{(?:\s*|\~\^\s+)(\S+?\.(?:png|jpg|gif)\b)/m
@rgx_audio=/\{\s*(\S+?\.(?:mp3|ogg))/
@rgx_mm=/\{\s*(\S+?\.(?:ogg|mpeg))/ #expand and distinguish ogg
begin
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@fns).error
ensure
end
end
@@ -989,9 +1070,9 @@ module SiSU_Param
@user,@home,@hostname,@pwd=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD']
@programs,@wc,@language,@language_original={},{},{},{}
@en={ sum: 0, mark: 0, note: 0, mismatch: 0 }
- @prog=SiSU_Env::Info_settings.new
- @sys=SiSU_Env::System_call.new
- @env=SiSU_Env::Info_env.new(@fns) #watch
+ @prog=SiSU_Env::InfoSettings.new
+ @sys=SiSU_Env::SystemCall.new
+ @env=SiSU_Env::InfoEnv.new(@fns) #watch
puts 'system locale: ' + @sys.locale if @opt.cmd =~/[MV]/
if @prog.wc \
and @sys.wc
@@ -1009,7 +1090,7 @@ module SiSU_Param
@locale=@sys.locale
@file_encoding=@sys.file_encoding(fns,@opt.cmd)
# programs set here for things that affect output appearance only
- @programs[:pdf]=SiSU_Env::System_call.new.program_found?('pdflatex')
+ @programs[:pdf]=SiSU_Env::SystemCall.new.program_found?('pdflatex')
if @opt.cmd =~/P/ #if @env.multilingual?
m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss
@fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3]
@@ -1036,13 +1117,13 @@ module SiSU_Param
@flag_endnotes,@flag_auto_endnotes,@flag_separate_endnotes=false,false,false
@flag_separate_endnotes_make=true
regx_date=/^\d{4}(?:-(?:[0][0-9]|1[0-2])(-(?:[0-2][0-9]|3[01]))?)?$/
- ver=SiSU_Env::Info_version.instance
+ ver=SiSU_Env::InfoVersion.instance
@sisu_version=ver.get_version
@ruby_version=ver.rbversion
@generated=Time.now
fns_array=@data.dup
skip unless fns_array # consider
- @markup_version=SiSU_Markup_type::Markup_identify.new(fns_array,@opt).markup_version? #% determine markup version
+ @markup_version=SiSU_MarkupType::MarkupIdentify.new(fns_array,@opt).markup_version? #% determine markup version
if fns_array[0] =~ /^(?:%\s+)?(?:SiSU\s+(?:master\s+)?[\d.]*|sisu-[\d.]+)$/ #check markup and markup version
if fns_array[0] =~ /^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)(?:(?:[0-9]+?)(?:\.[0-9]+?)(?:\.[0-9]+))?$/ #check markup and markup version
@markup_version_declared=fns_array[0].match(/^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)([\d.]+)$/)[1]
@@ -1096,27 +1177,27 @@ module SiSU_Param
and not @code_flag #or para=~/^(?:1|:?A)~/
case para
when /^@title:(.+)/m #% * header metadata - title
- @title=Md.new($1.strip,@opt,@env).title
+ @title=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).title
when /^@creator:(.+)/m #% * header metadata - creator
- @creator=Md.new($1.strip,@opt,@env).creator
+ @creator=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).creator
@authorship=@author=@creator.author
@authors=@creator.author_detail
when /^@date:(.+)/m #% * header metadata - date
- @date=Md.new($1.strip,@opt,@env).date
+ @date=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).date
when /^@publisher:\s+(.+)/m #% * header metadata - publisher
- @publisher=Md.new($1.strip,@opt,@env).current_publisher
+ @publisher=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).current_publisher
@current_publisher=@publisher
when /^@rights:(.+)/m; #% * header metadata - rights
- @rights=Md.new($1.strip,@opt,@env).rights
+ @rights=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).rights
when /^@classify:(.+)/m; classify=$1 #% * header metadata - classify
- @classify=Md.new($1.strip,@opt,@env).classify
+ @classify=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).classify
when /^@original:(.+)/m #% * header metadata - original (document)
- @original=Md.new($1.strip,@opt,@env).original
+ @original=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).original
@source=@original.source
when /^@notes?:\s(.+)\Z/m #% * header metadata - notes
- @notes=Md.new($1.strip,@opt,@env).notes
+ @notes=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).notes
when /^@links:\s+(.+?)\Z/m #% * header metadata - links
- doc_links=Md.new($1.strip,@opt,@env).links
+ doc_links=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).links
count=1
@links=[]
doc_links.each do |doc_link|
@@ -1128,7 +1209,7 @@ module SiSU_Param
end
@lnk=@links
when /^@make:(.+)/m #% * header processing - make
- @make=Md.new($1.strip,@opt,@env).make
+ @make=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).make
if defined? @make.breaks \
and @make.breaks[:page_new] #clearpage
@pagenew=@make.breaks[:page_new]
@@ -1223,7 +1304,7 @@ module SiSU_Param
if not defined? @title.full.nil?
tf=para[/^:A~\S*(.+)$/m,1]
tf="@title: #{tf}"
- @title=Md.new(tf.strip,@opt,@env).title
+ @title=SiSU_Param::Parameters::Md.new(tf.strip,@opt,@env).title
end
@html_title=@title.full.gsub(/(<p>|<p \/>|<br>|<br \/>)/,'')
SiSU_Screen::Ansi.new(@opt.cmd,'Parameters',@html_title).txt_grey if @opt.cmd =~/v/
@@ -1272,7 +1353,7 @@ module SiSU_Param
end
end
end
- para.gsub!(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image)
+ para=para.gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image)
if para !~/^%+\s/ \
and para =~@rgx_image
@ec[:image] << para.scan(@rgx_image).uniq
@@ -1284,22 +1365,21 @@ module SiSU_Param
end
end #% here endeth the document loop
if @ec[:image].length > 0
- @ec[:image].flatten!
- @ec[:image].uniq!
+ @ec[:image]=@ec[:image].flatten.uniq
@ec[:image].delete_if {|x| x =~/https?:\/\// }
- @ec[:image].sort!
+ @ec[:image]=@ec[:image].sort
end
- @ec[:audio].uniq!; @ec[:audio].flatten!; @ec[:audio].sort!
- @ec[:multimedia].uniq!; @ec[:multimedia].flatten!; @ec[:multimedia].sort!
+ @ec[:audio]=@ec[:audio].uniq.flatten.sort
+ @ec[:multimedia]=@ec[:multimedia].uniq.flatten.sort
unless @rights
if defined? @creator.author \
and @creator.author \
and defined? @date.published \
and @date.published
- @rights=Md_default.new.rights(@creator.author,@date.published)
+ @rights=SiSU_Param::Parameters::MdDefault.new.rights(@creator.author,@date.published)
elsif defined? @creator.author \
and @creator.author
- @rights=Md_default.new.rights("[#{@creator.author}]",'')
+ @rights=SiSU_Param::Parameters::MdDefault.new.rights("[#{@creator.author}]",'')
end
end
if defined? @classify.topic_register \
@@ -1315,10 +1395,10 @@ module SiSU_Param
m[-1]=m[-1].scan(/[^|]+/) if m[-1] =~/[|]/
@topic_register_array << m
end
- @topic_register_array.sort!
+ @topic_register_array=@topic_register_array.sort
end
if @i18n
- @i18n.uniq!
+ @i18n=@i18n.uniq
@i18n << 'en' unless @i18n.find_index("en")
else
@i18n=[ 'en' ]
@@ -1335,6 +1415,13 @@ module SiSU_Param
translate.gsub!(/:?C/,'3')
translate.gsub!(/:?B/,'2')
translate.gsub!(/:?A/,'1')
+ # looks like an ok substituion for the above but is not, causes problems, check why
+ #translate=translate.gsub(/3/,'6').
+ # gsub(/2/,'5').
+ # gsub(/1/,'4').
+ # gsub(/:?C/,'3').
+ # gsub(/:?B/,'2').
+ # gsub(/:?A/,'1')
translate=if translate =~/^\d+$/; translate.to_i
else translate
end
@@ -1342,10 +1429,10 @@ module SiSU_Param
end
end
@pagenew,@pagebreak,@num_top,@toc_lev_limit=translated
- @markup.gsub!(/page_new\s*=\s*([\dA-C])/,"page_new=#{@pagenew}")
- @markup.gsub!(/page_break\s*=\s*([\dA-C])/,"page_break=#{@pagebreak}")
- @markup.gsub!(/num_top\s*=\s*([\dA-C])/,"num_top=#{@num_top}")
- @markup.gsub!(/toc_lev_limit\s*=\s*([\dA-C])/,"toc_lev_limit=#{@toc_lev_limit}")
+ @markup=@markup.gsub(/page_new\s*=\s*([\dA-C])/,"page_new=#{@pagenew}").
+ gsub(/page_break\s*=\s*([\dA-C])/,"page_break=#{@pagebreak}").
+ gsub(/num_top\s*=\s*([\dA-C])/,"num_top=#{@num_top}").
+ gsub(/toc_lev_limit\s*=\s*([\dA-C])/,"toc_lev_limit=#{@toc_lev_limit}")
end
if @opt.mod.inspect =~/--papersize[=-]\S+|--pdf[=-]\S+/ \
or @opt.mod.inspect =~/--(?:a4|letter|legal|book|a5|b5)\b/i #command line config/header override
@@ -1356,8 +1443,8 @@ module SiSU_Param
@filesize=(File.size(fn)).to_s
if @sys.openssl !=false
skin=@doc_skin \
- ? (SiSU_Env::Info_skin.new(@opt,@doc_skin).select)
- : SiSU_Env::Info_skin.new(@opt).select
+ ? (SiSU_Env::InfoSkin.new(@opt,@doc_skin).select)
+ : SiSU_Env::InfoSkin.new(@opt).select
@dgst,@dgst_skin=[],[]
if @env.digest.type =~/sha256/
dgst=@sys.sha256(@env.source_file_with_path)
@@ -1372,7 +1459,7 @@ module SiSU_Param
end
end
@publisher ||= "#@@publisher (this copy)"
- fn_set_lang=SiSU_Env::Standardise_language.new(@opt.lng).language
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
unless @language[:code] \
and @language[:name]
lang=@env.i18n.language #default language settings for directory by name, or in sysrc.yml
@@ -1386,7 +1473,7 @@ module SiSU_Param
@fnl=@env.i18n.lang_filename(fn_set_lang[:c])
#fix
# @flv.each do |l|
-# lang=SiSU_Env::Standardise_language.new.file_to_language(l)
+# lang=SiSU_Env::StandardiseLanguage.new.file_to_language(l)
# c={ a: '', b: '', c: '' }
# if @fnl[:pre] =~/\S/; c[:a]="#{lang[:c]}."
# elsif @fnl[:mid] =~/\S/; c[:b]=".#{lang[:c]}"
@@ -1394,8 +1481,8 @@ module SiSU_Param
# end
# @lang << [lang[:n],"#{c[:a]}sisu_manifest#{c[:b]}.html#{c[:c]}"]
# end if @flv
- @lang.uniq!
- @fn=SiSU_Env::Env_call.new(@fns).lang(fn_set_lang[:c])
+ @lang=@lang.uniq
+ @fn=SiSU_Env::EnvCall.new(@fns).lang(fn_set_lang[:c])
@identifier="#{@env.url.root}/#{@fnb}/#{@fn[:toc]}" #DC note constructed dc identifier
if @en[:note] > 0 \
and @en[:sum] > 0
@@ -1423,7 +1510,7 @@ module SiSU_Param
if @author !~/[\S]/
if @fns =~/\.ssm$/ \
and @opt.inspect =~/P/
- #@creator=Md.new('Text Insert',@opt,@env).creator
+ #@creator=SiSU_Param::Md.new('Text Insert',@opt,@env).creator
else
SiSU_Screen::Ansi.new(@opt.cmd,'Warning Document Author missing','please provide @creator: :author:').warn unless @opt.cmd =~/q/
end
@@ -1495,7 +1582,7 @@ module SiSU_Param
SiSU_Screen::Ansi.new(@opt.cmd,"doc_skin <- #{@doc_skin}").txt_grey if @opt.cmd =~/v/
end
@data=nil #else whole file's contents are stored in md pstore & is not required to be... big waste actually
- @file=SiSU_Env::SiSU_file.new(self) #watch
+ @file=SiSU_Env::FileOp.new(self) #watch
Store.new(self,@env).store #% pstore
self
end
@@ -1520,7 +1607,7 @@ module SiSU_Param
end
class Instantiate
def param_instantiate
- @@date=SiSU_Env::Info_date.new
+ @@date=SiSU_Env::InfoDate.new
@@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=nil
@doc={
initialise: nil,
diff --git a/lib/sisu/v3/param_identify_markup.rb b/lib/sisu/v3/param_identify_markup.rb
index e0245098..c8c1fe8b 100644
--- a/lib/sisu/v3/param_identify_markup.rb
+++ b/lib/sisu/v3/param_identify_markup.rb
@@ -58,8 +58,8 @@
altering SiSU markup
=end
-module SiSU_Markup_type
- class Markup_identify
+module SiSU_MarkupType
+ class MarkupIdentify
@@version={}
@@fns,@@version[:determined],@@version[:declared],@@declared_doc_type='','','','[text?]'
attr_accessor :version,:declared_doc_type
diff --git a/lib/sisu/v3/particulars.rb b/lib/sisu/v3/particulars.rb
index a0006dc6..7c599624 100644
--- a/lib/sisu/v3/particulars.rb
+++ b/lib/sisu/v3/particulars.rb
@@ -64,7 +64,7 @@ module SiSU_Particulars
require_relative 'param' # param.rb
include SiSU_Param
require_relative 'dal' # dal.rb
- class Combined_singleton
+ class CombinedSingleton
include Singleton
def get_all(opt)
@opt=opt
@@ -132,23 +132,23 @@ module SiSU_Particulars
begin
@md=SiSU_Param::Parameters.new(@opt).get
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
attr_accessor :opt,:env,:file
def set_env
begin
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
def set_file
begin
set_md unless @md
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
attr_accessor :opt,:dal_array
@@ -156,35 +156,35 @@ module SiSU_Particulars
begin
@dal_array=@dal_array=SiSU_DAL::Source.new(@md).get
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
def set_sst_idx
begin
@sst_idx=SiSU_DAL::Source.new(@md).get_idx_sst
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
def set_tex_idx
begin
@tex_idx=SiSU_DAL::Source.new(@md).get_idx_tex
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
def set_html_idx
begin
@html_idx=SiSU_DAL::Source.new(@md).get_idx_html
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
def set_xhtml_idx
begin
@xhtml_idx=SiSU_DAL::Source.new(@md).get_idx_xhtml
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
attr_accessor :nametags_map
@@ -193,7 +193,7 @@ module SiSU_Particulars
opt=@md ? @md : @opt
@nametags_map=SiSU_DAL::Source.new(opt).get_map_nametags
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
attr_accessor :ocn_htmlseg_map
@@ -201,7 +201,7 @@ module SiSU_Particulars
begin
@ocn_htmlseg_map=SiSU_DAL::Source.new(@md).get_map_ocn_htmlseg
self
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
end
end
end
diff --git a/lib/sisu/v3/plaintext.rb b/lib/sisu/v3/plaintext.rb
index f9a2a235..557c5f1b 100644
--- a/lib/sisu/v3/plaintext.rb
+++ b/lib/sisu/v3/plaintext.rb
@@ -62,7 +62,7 @@ module SiSU_Plaintext
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'plaintext_format' # plaintext_format.rb
- include SiSU_Plaintext_format
+ include SiSU_PlaintextFormat
require_relative 'shared_metadata' # shared_metadata.rb
require_relative 'shared_txt' # shared_txt.rb
include SiSU_Param
@@ -80,7 +80,7 @@ module SiSU_Plaintext
def read
begin
md=SiSU_Param::Parameters.new(@opt).get
- env=SiSU_Env::Info_env.new(@opt.fns)
+ env=SiSU_Env::InfoEnv.new(@opt.fns)
unless @opt.cmd =~/q/
path=env.path.output_tell
tool=(@opt.cmd =~/[MVv]/) \
@@ -102,8 +102,8 @@ module SiSU_Plaintext
end
#wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78
SiSU_Plaintext::Source::Scroll.new(dal_array,md,wrap_width).songsheet
- SiSU_Env::Info_skin.new(md).select #watch
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_Env::InfoSkin.new(md).select #watch
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -111,11 +111,11 @@ module SiSU_Plaintext
class Scroll <Source
require_relative 'defaults' # defaults.rb
require_relative 'shared_txt' # shared_txt.rb
- include SiSU_text_utils
+ include SiSU_TextUtils
@@endnotes={ para: [], end: [] }
def initialize(data,md,wrap_width)
@data,@md,@wrap_width=data,md,wrap_width
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@brace_url=SiSU_Viz::Skin.new.url_decoration
@tab="\t"
@@endnotes_=case md.opt.mod.inspect
@@ -152,16 +152,16 @@ module SiSU_Plaintext
notes=@n.flatten
notes.each do |e|
util=(e.to_s =~/^\[[\d*+]+\]:/) \
- ? (SiSU_text_utils::Wrap.new(e.to_s,@wrap_width,4,1))
- : (SiSU_text_utils::Wrap.new(e.to_s,@wrap_width,1,1))
+ ? (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
- if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
- wrap.gsub!(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
+ 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
+ wrap.gsub(/^(.+)\Z/m, <<GSUB
\\1
GSUB
)
@@ -172,11 +172,11 @@ GSUB
@@endnotes
end
def plaintext_metadata
- array=Metadata::Summary.new(@md).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_text_utils::Wrap.new(inf,@wrap_width,15,1)
+ util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1)
txt=util.line_wrap
@plaintext[:metadata] <<<<WOK
@@ -186,9 +186,9 @@ WOK
end
end
def plaintext_tail
- SiSU_Env::Info_skin.new(@md).select
-# env=SiSU_Env::Info_env.new(@md.fns)
- vz=SiSU_Env::Get_init.instance.skin
+ SiSU_Env::InfoSkin.new(@md).select
+# env=SiSU_Env::InfoEnv.new(@md.fns)
+ vz=SiSU_Env::GetInit.instance.skin
base_url="#{@env.url.root}/#{@md.fnb}"
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}"
@@ -216,32 +216,32 @@ WOK
end
def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document
lv=n=n3=nil
- if dob.is=='heading'
+ if dob.is==:heading
lv=dob.ln
n=lv - 1
n3=lv + 2
end
util=nil
- wrapped=if dob.is =='para' \
- or dob.is=='heading'
- if dob.is=='para'
+ wrapped=if dob.is ==:para \
+ or dob.is==:heading
+ if dob.is==:para
if dob.hang \
and dob.hang =~/[0-9]/ \
and dob.indent != dob.hang
- util=SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2)
- #util=SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0)
+ 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_text_utils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2)
- else SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2)
+ 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_text_utils::Wrap.new("* #{dob.obj}",@wrap_width,0)
- else SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,0)
+ SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0)
+ else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
end
end
- else util=SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,0)
+ else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
end
util.line_wrap
end
@@ -270,7 +270,7 @@ WOK
@@endnotes[:para]=[]
end
def markup(data) # Used for major markup instructions
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=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]='' }
@@ -279,89 +279,89 @@ WOK
table_message='[table omitted, see other document formats]'
fix=[]
data.each do |dob|
- dob.obj.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{@br}#{table_message}") #fix
- dob.obj.gsub!(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,'') # remove dummy headings (used by html) #check also [~-]#
- dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
- "#{Px[:bold_o]}\\1#{Px[:bold_c]}")
- dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
- "#{Px[:italics_o]}\\1#{Px[:italics_c]}")
- dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
- "#{Px[:underscore_o]}\\1#{Px[:underscore_c]}")
- dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
- "#{Px[:subscript_o]}\\1#{Px[:subscript_c]}")
- dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
- "#{Px[:superscript_o]}\\1#{Px[:superscript_c]}")
- dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
- "#{Px[:insert_o]}\\1#{Px[:insert_c]}")
- dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
- "#{Px[:cite_o]}\\1#{Px[:cite_c]}")
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
- "#{Px[:strike_o]}\\1#{Px[:strike_c]}")
- dob.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
- "#{Px[:monospace_o]}\\1#{Px[:monospace_c]}")
- unless dob.is=='code'
- dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1')
- dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1')
- dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]')
- dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]')
- dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{@brace_url.txt_open}\\1#{@brace_url.txt_close}")
+ dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{@br}#{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]}/,
+ "#{Px[:bold_o]}\\1#{Px[:bold_c]}").
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
+ "#{Px[:italics_o]}\\1#{Px[:italics_c]}").
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
+ "#{Px[:underscore_o]}\\1#{Px[:underscore_c]}").
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
+ "#{Px[:subscript_o]}\\1#{Px[:subscript_c]}").
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
+ "#{Px[:superscript_o]}\\1#{Px[:superscript_c]}").
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
+ "#{Px[:insert_o]}\\1#{Px[:insert_c]}").
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
+ "#{Px[:cite_o]}\\1#{Px[:cite_c]}").
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
+ "#{Px[:strike_o]}\\1#{Px[:strike_c]}").
+ gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
+ "#{Px[:monospace_o]}\\1#{Px[:monospace_c]}")
+ 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.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]') # endnote marker marked up
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]') # endnote marker marked up
- dob.obj.gsub!(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<')
- dob.obj.gsub!(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>')
- dob.obj.gsub!(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&')
- dob.obj.gsub!(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!')
- dob.obj.gsub!(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#')
- dob.obj.gsub!(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*')
- dob.obj.gsub!(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-')
- dob.obj.gsub!(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/')
- dob.obj.gsub!(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_')
- dob.obj.gsub!(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{')
- dob.obj.gsub!(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}')
- dob.obj.gsub!(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~')
- dob.obj.gsub!(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©')
- dob.obj.gsub!(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\')
+ 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
- if dob.of=='block' # watch
- dob.obj.gsub!(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/,"* ")
- dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n")
- else dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n")
+ dob.obj=if dob.of==:block # watch
+ dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/,"* ").
+ gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n")
+ else dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n")
end
- if dob.is=='code'
- dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _> _<
- dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _<_<
+ if dob.is==:code
+ dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
+ gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_<
end
- dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1')
- dob.obj.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1')
- dob.obj.gsub!(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'') # remove name links
- dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/,' ') # decide on
- dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]')
- dob.obj.gsub!(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
+ 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(/&nbsp;|#{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"]')
wordlist=dob.obj.scan(/\S+/)
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
#if defined? dob.ocn and dob.ocn.to_s =~/\d+/
# paranum=dob.ocn.to_s
- # @p_num=SiSU_Plaintext_format::Paragraph_number.new(paranum)
+ # @p_num=SiSU_PlaintextFormat::ParagraphNumber.new(paranum)
#end
p_num=''
if @env.plaintext_ocn?
if defined? dob.ocn \
and not dob.ocn.nil?
- p_num=SiSU_Plaintext_format::Paragraph_number.new(dob.ocn).display
+ p_num=SiSU_PlaintextFormat::ParagraphNumber.new(dob.ocn).display
end
end
- if dob.is=='heading' \
- or dob.is=='para'
+ 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'
+ 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 << @br
- elsif dob.is=='break'
+ elsif dob.is==:break
sp=' '
ln='-'
@plaintext[:body] <<=if dob.obj==Mx[:br_page] \
@@ -372,9 +372,11 @@ WOK
end # following empty line (@br) missing, fix
end
dob='' if (dob.obj =~/<a name="n\d+">/ \
- and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
- dob.obj.gsub!(/<!.+!>/,' ') if dob ## Clean Prepared Text
- dob.obj.gsub!(/<:\S+>/,' ') if dob ## Clean Prepared Text
+ and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
+ if dob ## Clean Prepared Text
+ dob.obj=dob.obj.gsub(/<!.+!>/,' ').
+ gsub(/<:\S+>/,' ')
+ end
end
end
@plaintext
@@ -401,7 +403,7 @@ WOK
@content,@md=content,md
end
def plaintext #%plaintext output
- file_plaintext=SiSU_Env::SiSU_file.new(@md).write_file.txt
+ file_plaintext=SiSU_Env::FileOp.new(@md).write_file.txt
@sisu=[]
emptyline=0
@content.each do |para| # this is a hack
diff --git a/lib/sisu/v3/plaintext_format.rb b/lib/sisu/v3/plaintext_format.rb
index 5e64c03a..f7956070 100644
--- a/lib/sisu/v3/plaintext_format.rb
+++ b/lib/sisu/v3/plaintext_format.rb
@@ -56,11 +56,11 @@
** Description: plaintext formatting template
=end
-module SiSU_Plaintext_format
+module SiSU_PlaintextFormat
require_relative 'param' # param.rb
include SiSU_Param
include SiSU_Viz
- class Paragraph_number
+ class ParagraphNumber
def initialize(paranum)
@paranum=/(\d+)/m.match(paranum.to_s)[1]
end
@@ -74,7 +74,7 @@ module SiSU_Plaintext_format
@paranum.gsub(/(\d+)/,'"#\1"')
end
end
- class Format_text_object
+ class FormatTextObject
def initialize(md,t_o)
@md,@t_o=md,t_o
if t_o.class==Hash
@@ -86,10 +86,10 @@ module SiSU_Plaintext_format
p caller
end
rgx=/^#{Rx[:lv]}/
- @txt.gsub!(rgx,'') if @txt =~rgx
+ @txt=@txt.gsub(rgx,'') if @txt =~rgx
rgx=/#{Mx[:en_a_o]}[\d*+]+\s+(.+?)#{Mx[:en_a_c]}/
- @txt.gsub!(rgx,'\1') if @txt =~rgx
- @vz=SiSU_Env::Get_init.instance.skin
+ @txt=@txt.gsub(rgx,'\1') if @txt =~rgx
+ @vz=SiSU_Env::GetInit.instance.skin
end
def scr_endnote_body
"<endnote>#{@txt}</endnote> "
diff --git a/lib/sisu/v3/po4a.rb b/lib/sisu/v3/po4a.rb
index 0a5886ff..adb977c2 100644
--- a/lib/sisu/v3/po4a.rb
+++ b/lib/sisu/v3/po4a.rb
@@ -57,7 +57,7 @@
linefeed)
=end
-module SiSU_po4a
+module SiSU_Po4a
require_relative 'dal' # dal.rb
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
@@ -74,7 +74,7 @@ module SiSU_po4a
# puts "#{@opt.fns} not a processed file type"
#end
r=Px[:lng_lst].join('|')
- r.gsub!(/\|en\|/,'|')
+ r=r.gsub(/\|en\|/,'|')
@lang_regx=%r{(?:#{r})}
if opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \
and opt.f_pth[:lng]!=opt.lng_base
@@ -93,14 +93,14 @@ module SiSU_po4a
src[:pth]=@opt.f_pth[:pth]
src[:files]=if @opt.fns =~ /\.(?:(?:-|ssm\.)sst|ssm)$/
@opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm')
- SiSU_Assemble::Composite_file_list.new(@opt).read
+ SiSU_Assemble::CompositeFileList.new(@opt).read
else
[@opt.fns]
end
md=SiSU_Param::Parameters.new(@opt).get
src[:files].each do |fn|
SiSU_DAL::Source.new(@opt,fn).read # -m
- env=SiSU_Env::Info_env.new(@opt.fns)
+ 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]
unless @opt.cmd =~/q/
@@ -149,10 +149,10 @@ 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_Env::Info_skin.new(md).select #watch
+ SiSU_Po4a::Source::Scroll.new(fn,@dal_array_lang_src,@dal_array_lang_translation,@@md_src,@@md_trn,wrap_width).songsheet
+ SiSU_Env::InfoSkin.new(md).select #watch
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -160,7 +160,7 @@ module SiSU_po4a
class Scroll <Source
require_relative 'defaults' # defaults.rb
require_relative 'po4a_set' # po4a_set.rb
- include SiSU_po4a_utils
+ include SiSU_Po4aUtils
@@endnotes={ para: [], end: [] }
def initialize(fn,data_src,data_trn,md_src,md_trn,wrap_width)
@fn,@data_src,@data_trn,@md_src,@md_trn,@wrap_width=fn,data_src,data_trn,md_src,md_trn,wrap_width
@@ -168,7 +168,7 @@ module SiSU_po4a
? md_src
: md_trn
@brace_url=SiSU_Viz::Skin.new.url_decoration
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@tab="\t"
@@endnotes_=(@md.opt.mod.inspect =~/--endnote/) ? true : false # --footnote
@br=(@md.opt.mod.inspect =~/--dos/) ? "\r\n" : "\n" # --unix
@@ -187,9 +187,9 @@ module SiSU_po4a
@n=[]
notes_a.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider
n=n.dup.to_s
- n.gsub!(/^([\d]+)\s+/,'^~\1 ')
- #n.gsub!(/^([\d*+]+)\s+/,'^~\1 ')
- n.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br>')
+ n=n.gsub(/^([\d]+)\s+/,'^~\1 ').
+ #gsub(/^([\d*+]+)\s+/,'^~\1 ').
+ gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br>')
@n << n
end
notes_a=@n.flatten
@@ -219,13 +219,13 @@ module SiSU_po4a
end
util=pot_structure(desc,orig,trans)
wrap=util.line_wrap
- if wrap =~ /^\s*\^~[\d*+]+\s+.+?\s*\Z/m
- wrap.gsub!(/^\s*(\^~[\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
+ wrap=if wrap =~ /^\s*\^~[\d*+]+\s+.+?\s*\Z/m
+ wrap.gsub(/^\s*(\^~[\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
\\1 \\2
GSUB
)
else
- wrap.gsub!(/^(.+)\Z/m, <<GSUB
+ wrap.gsub(/^(.+)\Z/m, <<GSUB
\\1
GSUB
)
@@ -239,11 +239,11 @@ GSUB
end
def pot_metadata_src
@po4a_identify_type='type: SiSU doc' #'type: Plain text'
- meta_src=Metadata::Summary.new(@md_src)
+ meta_src=SiSU_Metadata::Summary.new(@md_src)
w=[]
w << [
"#. #{@po4a_identify_type} - metadata: title",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.title.main,
meta_src.metadata_tags.title.sub,
@@ -256,7 +256,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: creator",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.creator.head,
meta_src.metadata_tags.creator.author,
@@ -271,7 +271,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: rights",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.rights.head,
meta_src.metadata_tags.rights.copyright.text,
@@ -285,7 +285,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: classify",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.classify.head,
meta_src.metadata_tags.classify.relation,
@@ -301,7 +301,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: date",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.date.head,
meta_src.metadata_tags.date.added_to_site,
@@ -315,7 +315,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - processing, make instruction",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.processing_tags.make.language,
meta_src.processing_tags.make.headings,
@@ -344,12 +344,12 @@ GSUB
def pot_metadata_src_trn
@po4a_identify_type='type: SiSU doc'
#@po4a_identify_type='type: Plain text'
- meta_src=Metadata::Summary.new(@md_src)
- meta_trn=Metadata::Summary.new(@md_trn)
+ meta_src=SiSU_Metadata::Summary.new(@md_src)
+ meta_trn=SiSU_Metadata::Summary.new(@md_trn)
w=[]
w << [
"#. #{@po4a_identify_type} - metadata: title",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.title.main,
meta_src.metadata_tags.title.sub,
@@ -369,7 +369,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: creator",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.creator.head,
meta_src.metadata_tags.creator.author,
@@ -393,7 +393,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: rights",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.rights.head,
meta_src.metadata_tags.rights.copyright.text,
@@ -415,7 +415,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: classify",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.classify.head,
meta_src.metadata_tags.classify.relation,
@@ -441,7 +441,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - metadata: date",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.metadata_tags.date.head,
meta_src.metadata_tags.date.added_to_site,
@@ -463,7 +463,7 @@ GSUB
]
w << [
"#. #{@po4a_identify_type} - processing, make instruction",
- "#: en/#{@md.fns}:#{SiSU_po4a_utils::Pot_number.new.num}",
+ "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
'msgid ""',
meta_src.processing_tags.make.language,
meta_src.processing_tags.make.headings,
@@ -499,7 +499,7 @@ GSUB
end
end
def pot_structure(desc,orig,trans,indent=0,hang=0)
- SiSU_po4a_utils::Wrap.new(@md,orig,trans,desc,@wrap_width,indent,hang)
+ SiSU_Po4aUtils::Wrap.new(@md,orig,trans,desc,@wrap_width,indent,hang)
end
def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
lv=n=n3=nil
@@ -509,7 +509,7 @@ GSUB
util=nil
fn=(dob_src.name=~/[a-z\d]/i) ? dob_src.name : ''
mark="#{dob_src.lv}~#{fn} "
- d="#{dob_src.is} (level #{dob_src.lv})"
+ d="#{dob_src.is.to_s} (level #{dob_src.lv})"
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct=%{\n# markup for headings is marker at the start of the line/object, indicating the heading level, and if provided an associated name tag, this heading is "#{mark}"}
@@ -538,7 +538,7 @@ GSUB
s_mark=desc=orig=trans=''
if dob_src.bullet_
mark="_#{dob_src.indent}* "
- d="#{dob_src.is}: indent #{dob_src.indent}, bullet"
+ d="#{dob_src.is.to_s}: indent #{dob_src.indent}, bullet"
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct=%{\n# markup for indented bullet text is at the start of the line/object, an underscore followed by the indent level and an asterisk "#{mark}"}
@@ -547,7 +547,7 @@ GSUB
desc="#{d}#{s_mark}#{instruct}"
else
mark="_#{dob_src.indent} "
- d="#{dob_src.is}: indent #{dob_src.indent}"
+ d="#{dob_src.is.to_s}: indent #{dob_src.indent}"
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by the indent level "#{mark}"}
@@ -562,7 +562,7 @@ GSUB
and dob_src.indent != dob_src.hang
s_mark=desc=orig=trans=''
mark="_#{dob_src.hang}_#{dob_src.indent} "
- d="#{dob_src.is}: hang #{dob_src.hang} indent #{dob_src.indent}"
+ d="#{dob_src.is.to_s}: hang #{dob_src.hang} indent #{dob_src.indent}"
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct=%{\n# markup for indented text with a first line indented to a different level from the rest of the paragraph, is at the start of the line/object, an underscore and the first indent level a second underscore and the indent level for the rest of the paragraph, "#{mark1}"}
@@ -576,7 +576,7 @@ GSUB
s_mark=desc=orig=trans=''
if dob_src.bullet_
mark='_* '
- d="#{dob_src.is}: bullet"
+ d="#{dob_src.is.to_s}: bullet"
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by an asterisk "#{mark}"}
@@ -587,7 +587,7 @@ GSUB
trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
else
mark=''
- d=dob_src.is
+ d=dob_src.is.to_s
instruct=%{\n# regular paragraph, no special markup}
if @md.opt.cmd=~/M/
instruct="\n# "
@@ -613,7 +613,7 @@ GSUB
end
def pot_structure_block(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
mark="block{\\n\\n...\\n\\n}block"
- d=dob_src.is
+ d=dob_src.is.to_s
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct="\n# block text is a text block with an opening and closing marker, the content of which may be wrapped"
@@ -628,7 +628,7 @@ GSUB
end
def pot_structure_group(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
mark="group{\\n\\n...\\n\\n}group"
- d=dob_src.is
+ d=dob_src.is.to_s
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct="\n# group text is a text block with an opening and closing marker, the content of which may be wrapped"
@@ -643,7 +643,7 @@ GSUB
end
def pot_structure_verse(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem"
- d=dob_src.is
+ d=dob_src.is.to_s
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct="\n# verse are part of the text block described as a poem, the first verse is preceeded by an opening marker, and the last verse by a closing marker, the content of which should remain unwrapped"
@@ -658,7 +658,7 @@ GSUB
end
def pot_structure_code(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
mark="code{\\n\\n...\\n\\n}code"
- d=dob_src.is
+ d=dob_src.is.to_s
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct="\n# codeblocks are a text block with an opening and closing marker, the content of which should remain unwrapped"
@@ -673,7 +673,7 @@ GSUB
end
def pot_structure_table(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
mark="table{\\n\\n...\\n\\n}table"
- d=dob_src.is
+ d=dob_src.is.to_s
instruct=s_mark=''
if @md.opt.cmd=~/M/
instruct="\n# tables are a text block with an opening and closing marker, the content of which should remain unwrapped"
@@ -681,9 +681,9 @@ GSUB
end
desc="#{d}#{s_mark}#{instruct}"
orig=dob_src.obj
- orig.gsub!(/#{Mx[:tc_c]}/,"\n")
+ orig=orig.gsub(/#{Mx[:tc_c]}/,"\n")
trans=(dob_trn=='') ? '' : dob_trn.obj
- trans.gsub!(/#{Mx[:tc_c]}/,"\n")
+ trans=trans.gsub(/#{Mx[:tc_c]}/,"\n")
util=pot_structure(desc,orig,trans)
unwrapped=util.no_line_wrap_block
@pot[:body] << unwrapped << @br
@@ -729,22 +729,22 @@ GSUB
and data_trn[t]
break
end
- if data_src[s].of == 'comment' \
- and data_trn[t].of == 'comment' \
+ if data_src[s].of == :comment \
+ and data_trn[t].of == :comment \
and (data_src[s].is == data_trn[t].is)
s+=1;t+=1
next
end
- if (data_src[s].is == 'comment' or data_trn[t].is == 'comment') \
+ if (data_src[s].is == :comment or data_trn[t].is == :comment) \
and (data_src[s].is != data_trn[t].is)
- if data_src[s].is == 'comment'
+ if data_src[s].is == :comment
puts "src (comment):\n\t" + data_src[s].obj if @md.opt.cmd =~/M/
s+=1
- #next if data_src[s].is == 'comment'
- elsif data_trn[t].is == 'comment'
+ #next if data_src[s].is == :comment
+ elsif data_trn[t].is == :comment
puts "trans (comment):\n\t" + data_trn[t].obj if @md.opt.cmd =~/M/
t+=1
- #next if data_trn[t].is == 'comment'
+ #next if data_trn[t].is == :comment
end
end
if (defined? data_src[s].ocn and data_src[s].ocn.class == Fixnum) \
@@ -811,16 +811,16 @@ GSUB
if defined? dob_src.ocn \
and dob_src.ocn.to_s =~/\d+/
paranum=dob_src.ocn.to_s
- @p_num=SiSU_po4a_utils::Paragraph_number.new(paranum)
+ @p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum)
end
case dob_src.is
- when 'heading'; pot_structure_heading(dob_src,notes_s,dob_trn,notes_t)
- when 'para'; pot_structure_para(dob_src,notes_s,dob_trn,notes_t)
- when 'group'; pot_structure_group(dob_src,notes_s,dob_trn,notes_t)
- when 'block'; pot_structure_block(dob_src,notes_s,dob_trn,notes_t)
- when 'verse'; pot_structure_verse(dob_src,notes_s,dob_trn,notes_t)
- when 'code'; pot_structure_code(dob_src,notes_s,dob_trn,notes_t)
- when 'table'; pot_structure_table(dob_src,notes_s,dob_trn,notes_t)
+ when :heading; pot_structure_heading(dob_src,notes_s,dob_trn,notes_t)
+ when :para; pot_structure_para(dob_src,notes_s,dob_trn,notes_t)
+ when :group; pot_structure_group(dob_src,notes_s,dob_trn,notes_t)
+ when :block; pot_structure_block(dob_src,notes_s,dob_trn,notes_t)
+ when :verse; pot_structure_verse(dob_src,notes_s,dob_trn,notes_t)
+ when :code; pot_structure_code(dob_src,notes_s,dob_trn,notes_t)
+ when :table; pot_structure_table(dob_src,notes_s,dob_trn,notes_t)
end
if defined? dob_src.idx \
and not dob_src.idx.nil? \
@@ -829,79 +829,81 @@ GSUB
end
dob_src='' if (dob_src.obj =~/<a name="n\d+">/ \
and dob_src.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
- dob_src.obj.gsub!(/<!.+!>/,' ') if dob_src ## Clean Prepared Text
- dob_src.obj.gsub!(/<:\S+>/,' ') if dob_src ## Clean Prepared Text
+ if dob_src ## Clean Prepared Text
+ dob_src.obj=dob_src.obj.gsub(/<!.+!>/,' ').
+ gsub(/<:\S+>/,' ') if dob_src ## Clean Prepared Text
+ end
end
#[dob_src,dob_trn]
end
def markup(dob) # Used for major markup instructions
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
fix=[]
- dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
- "#{Px[:po_bold_o]}\\1#{Px[:po_bold_c]}")
- dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
- "#{Px[:po_italics_o]}\\1#{Px[:po_italics_c]}")
- dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
- "#{Px[:po_underscore_o]}\\1#{Px[:po_underscore_c]}")
- dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
- "#{Px[:po_subscript_o]}\\1#{Px[:po_subscript_c]}")
- dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
- "#{Px[:po_superscript_o]}\\1#{Px[:po_superscript_c]}")
- dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
- "#{Px[:po_insert_o]}\\1#{Px[:po_insert_c]}")
- dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
- "#{Px[:po_cite_o]}\\1#{Px[:po_cite_c]}")
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
- "#{Px[:po_strike_o]}\\1#{Px[:po_strike_c]}")
- dob.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
- "#{Px[:po_monospace_o]}\\1#{Px[:po_monospace_c]}")
+ dob.obj=dob.obj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
+ "#{Px[:po_bold_o]}\\1#{Px[:po_bold_c]}").
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
+ "#{Px[:po_italics_o]}\\1#{Px[:po_italics_c]}").
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
+ "#{Px[:po_underscore_o]}\\1#{Px[:po_underscore_c]}").
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
+ "#{Px[:po_subscript_o]}\\1#{Px[:po_subscript_c]}").
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
+ "#{Px[:po_superscript_o]}\\1#{Px[:po_superscript_c]}").
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
+ "#{Px[:po_insert_o]}\\1#{Px[:po_insert_c]}").
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
+ "#{Px[:po_cite_o]}\\1#{Px[:po_cite_c]}").
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
+ "#{Px[:po_strike_o]}\\1#{Px[:po_strike_c]}").
+ gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
+ "#{Px[:po_monospace_o]}\\1#{Px[:po_monospace_c]}")
notes=''
- unless dob.is=='code'
- dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1')
- dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1')
- dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]')
- dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]')
- dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1')
+ 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]}/,'\1')
#dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{@brace_url.txt_open}\\1#{@brace_url.txt_close}")
notes=extract_endnotes(dob)
#% ### footnotes current state - extracted
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^') # endnote marker marked up
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^'). # endnote marker marked up
#% ### footnotes current state - keep inline
#dob.obj.gsub!(/#{Mx[:en_a_o]}[\d]+\s+(.+?)#{Mx[:en_a_c]}/,'~{ \1 }~') # inline endnote with marker marked up
- dob.obj.gsub!(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/,'~[ \1 ]~') # inline endnote with marker marked up
- dob.obj.gsub!(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,'~{\1 \2 }~') # inline endnote with marker marked up
- dob.obj.gsub!(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/,'~[\1 \2 ]~') # inline endnote with marker marked up
- dob.obj.gsub!(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<')
- dob.obj.gsub!(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>')
- dob.obj.gsub!(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&')
- dob.obj.gsub!(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!')
- dob.obj.gsub!(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#')
- dob.obj.gsub!(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*')
- dob.obj.gsub!(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-')
- dob.obj.gsub!(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/')
- dob.obj.gsub!(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_')
- dob.obj.gsub!(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{')
- dob.obj.gsub!(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}')
- dob.obj.gsub!(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~')
- dob.obj.gsub!(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©')
+ gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/,'~[ \1 ]~'). # inline endnote with marker marked up
+ gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,'~{\1 \2 }~'). # inline endnote with marker marked up
+ gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/,'~[\1 \2 ]~'). # inline endnote with 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]}/,'©')
end
- if dob.of=='block' # watch
- dob.obj.gsub!(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/,"* ")
- dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n")
- else dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n")
+ dob.obj=if dob.of==:block # watch
+ dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/,"* ").
+ gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n")
+ else dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n")
end
- if dob.is=='code'
- dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _> _<
- dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _<_<
+ if dob.is==:code
+ dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
+ gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_<
end
- dob.obj.gsub!(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,'') # remove page breaks
- dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1')
- dob.obj.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1')
- dob.obj.gsub!(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'') # remove name links
- dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/,' ') # decide on
- dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- dob.obj.gsub!(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
+ dob.obj=dob.obj.gsub(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,''). # remove page breaks
+ 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(/&nbsp;|#{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 ]'). #"[ #{dir.url.images_local}\/\\1 ]")
+ gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
[dob,notes]
end
def publish(fn,pot)
@@ -921,7 +923,7 @@ GSUB
include SiSU_Env
def initialize(fn,content,md)
@fn,@content,@md=fn,content,md
- @file=SiSU_Env::SiSU_file.new(md,fn)
+ @file=SiSU_Env::FileOp.new(md,fn)
end
def po4a #%pot output
file_pot=(@md.opt.f_pth[:lng] ==opt.lng_base) \
@@ -934,8 +936,8 @@ GSUB
and para.length > 0
para.each do |line|
if line
- line.gsub!(/\s+$/m,'')
- line.gsub!(/^\A[ ]*\Z/m,'')
+ line=line.gsub(/\s+$/m,'').
+ gsub(/^\A[ ]*\Z/m,'')
if line=~/^\A[ ]*\Z/m
emptyline+=1
else emptyline=0
@@ -947,7 +949,7 @@ GSUB
end
end
file_pot.close
- SiSU_po4a_utils::Pot_number.new.reset
+ SiSU_Po4aUtils::PotNumber.new.reset
po4a_git
end
def po4a_git
diff --git a/lib/sisu/v3/po4a_set.rb b/lib/sisu/v3/po4a_set.rb
index 1e0f90c4..6335fb8c 100644
--- a/lib/sisu/v3/po4a_set.rb
+++ b/lib/sisu/v3/po4a_set.rb
@@ -56,7 +56,7 @@
** Description: modules shared by flatfile output generators
=end
-module SiSU_po4a_utils
+module SiSU_Po4aUtils
class Wrap
def initialize(md,orig='',trans='',is_desc='',n_char_max=76,n_indent=0,n_hang=nil)
@md,@orig,@trans,@is_desc,@n_char_max,@n_indent=md,orig,trans,is_desc,n_char_max,n_indent
@@ -76,8 +76,8 @@ module SiSU_po4a_utils
out=[]
out[line]=''
@oldword='' #REMOVE @oldword
- pa.gsub!(/<br>/,' <br> ')
- pa.gsub!(/#{Mx[:br_nl]}/,"\n\n")
+ pa=pa.gsub(/<br>/,' <br> ').
+ gsub(/#{Mx[:br_nl]}/,"\n\n")
words=pa.scan(/\n\n|<br>|\S+/m)
while words != ''
word=words.shift
@@ -109,7 +109,7 @@ module SiSU_po4a_utils
x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang)
z=[]
x.split(/\n/).each do |y|
- y.gsub!(/"/,'\"')
+ y=y.gsub(/"/,'\"')
y=%{"#{y}"}
z << y
end
@@ -120,7 +120,7 @@ module SiSU_po4a_utils
trans=(pot.length == 2) ? pot[1] : ''
po_str=<<WOK
#. #{@po4a_identify_type} - #{@is_desc}
-#: en/#{@md.fns}:#{Pot_number.new.num}
+#: en/#{@md.fns}:#{PotNumber.new.num}
msgid ""
#{pot[0]}
msgstr ""
@@ -134,7 +134,7 @@ WOK
pot_array.each do |pa|
z=[]
pa.split(/\n\n/).each do |y|
- y.gsub!(/"/,'\"')
+ y=y.gsub(/"/,'\"')
y=%{"#{y}"}
z << y if not y.empty?
end
@@ -145,7 +145,7 @@ WOK
trans=(pot.length == 2) ? pot[1] : ''
po_str=<<WOK
#. #{@po4a_identify_type} - #{@is_desc}
-#: en/#{@md.fns}:#{Pot_number.new.num}
+#: en/#{@md.fns}:#{PotNumber.new.num}
#, no-wrap
msgid ""
#{pot[0]}
@@ -166,13 +166,13 @@ WOK
if @orig.class==Array
@arr=[]
@orig.each do |line|
- @arr << SiSU_text_utils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
+ @arr << SiSU_TextUtils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
end
end
@arr
end
end
- class Header_scan
+ class HeaderScan
def initialize(md,para)
@md,@p=md,para
end
@@ -276,7 +276,7 @@ WOK
end
end
end
- class Paragraph_number
+ class ParagraphNumber
def initialize(paranum)
@paranum=/(\d+)/m.match(paranum)[1]
end
@@ -284,7 +284,7 @@ WOK
@paranum.gsub(/(\d+)/,'#\1')
end
end
- class Pot_number
+ class PotNumber
@@n=0
def initialize
@@n +=2
diff --git a/lib/sisu/v3/qrcode.rb b/lib/sisu/v3/qrcode.rb
index 2dd621e7..d2b16753 100644
--- a/lib/sisu/v3/qrcode.rb
+++ b/lib/sisu/v3/qrcode.rb
@@ -70,15 +70,15 @@ module SiSU_QRcode
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
- l=SiSU_Env::Standardise_language.new(@opt.lng).language
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
+ l=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
@doc_language=l[:n]
end
def read
begin
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
@md=SiSU_Param::Parameters.new(@opt).get
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
xbrowser=@env.program.web_browser
browser=@env.program.console_web_browser
unless @opt.cmd =~/q/
@@ -88,25 +88,25 @@ module SiSU_QRcode
: SiSU_Screen::Ansi.new(@opt.cmd,'QR code',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}").green_title_hi
SiSU_Screen::Ansi.new(@opt.cmd,"#{browser} #{url_html}").grey_tab if @opt.cmd =~/v/i
end
- data=SiSU_HTML::Source::Html_environment.new(@particulars).tuned_file_instructions
- Output_Info.new(@md).check_output(data)
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ data=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
+ OutputInfo.new(@md).check_output(data)
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
private
- class Output_Info <Source
+ class OutputInfo <Source
def initialize(md)
@manifest={ txt: [], txt_title: [] }
@md,@fns=md,md.fns
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@fnb=@md.fnb
@base_url="#{@env.url.root}/#{@fnb}"
- @f=SiSU_Env::SiSU_file.new(@md)
+ @f=SiSU_Env::FileOp.new(@md)
@base_path=@f.output_path.manifest.dir
- @@dg ||=SiSU_Env::Info_env.new.digest.type
+ @@dg ||=SiSU_Env::InfoEnv.new.digest.type
@dg=@@dg
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
@language=l[:n]
@translate=SiSU_Translate::Source.new(@md,@language)
@brace_url=SiSU_Viz::Skin.new.url_decoration
@@ -128,7 +128,7 @@ module SiSU_QRcode
#system(%{
# cat #{pt}/#{fn} | qrencode -s 3 -o qrcm.autonomy_markup0.png
#})
- cmd=SiSU_Env::System_call.new(mn,@f.place_file.qrcode_md.dir,@md.opt.cmd)
+ cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_md.dir,@md.opt.cmd)
cmd.qrencode
#system(%{
# echo "#{mn}" | qrencode -s 3 -o #{@dest}/qrc_md.#{fn}.png
@@ -140,7 +140,7 @@ module SiSU_QRcode
@manifest[:txt_title].each do |x|
mn += x
end
- cmd=SiSU_Env::System_call.new(mn,@f.place_file.qrcode_title.dir,@md.opt.cmd)
+ cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_title.dir,@md.opt.cmd)
cmd.qrencode
#system(%{
# echo "#{mn}" | qrencode -s 3 -o #{@dest}/qrc_title.#{fn}.png
@@ -149,7 +149,7 @@ module SiSU_QRcode
def summarize(id,file,pth='',rel='',url='',img='● ')
size=(File.size("#{pth}/#{file}")/1024.00).to_s
kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
- @manifest[:txt] <<<<WOK
+ @manifest[:txt] <<<<WOK
#{id} #{kb}
#{@brace_url.txt_open}#{url}/#{file}#{@brace_url.txt_close}
WOK
@@ -163,7 +163,7 @@ WOK
WOK
end
def summarize_sources(id,file,pth,rel,url)
- sys=SiSU_Env::System_call.new
+ sys=SiSU_Env::SystemCall.new
dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{pth}/#{file}")
else sys.md5("#{pth}/#{file}")
end
@@ -176,7 +176,7 @@ WOK
WOK
end
def published_manifests?
- @f=SiSU_Env::SiSU_file.new(@md) #.base_filename
+ @f=SiSU_Env::FileOp.new(@md) #.base_filename
@m=[]
url=@f.output_path.base.url
manifests={}
@@ -215,7 +215,7 @@ WOK
# "#{url}/sisu_manifest.#{lc}.html"
#end
manifests
- @m.uniq!
+ @m=@m.uniq
@m
end
def languages(id,file)
@@ -232,11 +232,11 @@ WOK
end
end
def metadata(id,info)
- info.to_s.gsub!(/#{Mx[:br_line]}/,"\n")
+ info=info.to_s.gsub(/#{Mx[:br_line]}/,"\n")
@manifest[:txt] << %{#{id}: #{info}\n}
end
def md_title_info(id,info)
- info.to_s.gsub!(/#{Mx[:br_line]}/,"\n")
+ info=info.to_s.gsub(/#{Mx[:br_line]}/,"\n")
@manifest[:txt_title] << %{#{info}\n}
end
def links(url,lnk,target)
@@ -703,8 +703,8 @@ WOK
def check_output(data)
begin
id,file='',''
- vz=SiSU_Env::Get_init.instance.skin
- @f=SiSU_Env::SiSU_file.new(@md) #.base_filename
+ vz=SiSU_Env::GetInit.instance.skin
+ @f=SiSU_Env::FileOp.new(@md) #.base_filename
url=@f.output_path.base.url
@en_manifest=if @env.output_dir_structure.by_language_code?
"#{url}/en/manifest/#{@md.fnb}.html"
@@ -728,7 +728,7 @@ WOK
language_versions
output_metadata
output_metadata_short
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
diff --git a/lib/sisu/v3/relaxng.rb b/lib/sisu/v3/relaxng.rb
index 92f06c82..77aa36cc 100644
--- a/lib/sisu/v3/relaxng.rb
+++ b/lib/sisu/v3/relaxng.rb
@@ -56,7 +56,7 @@
** Description: relaxng flow/logic
=end
-module SiSU_relaxng
+module SiSU_Relaxng
require_relative 'sysenv' # sysenv.rb
class RelaxNG
def gpl3_or_later
diff --git a/lib/sisu/v3/remote.rb b/lib/sisu/v3/remote.rb
index 8da87e42..4004e5f8 100644
--- a/lib/sisu/v3/remote.rb
+++ b/lib/sisu/v3/remote.rb
@@ -63,11 +63,11 @@ module SiSU_Remote
class Put
def initialize(opt)
@opt=opt
- @dir=SiSU_Env::Info_env.new(@opt.fns)
+ @dir=SiSU_Env::InfoEnv.new(@opt.fns)
@put=(@opt.fns =~/\.ssm\.sst$/) \
? @opt.fns.gsub(/(.+)?\.ssm\.sst$/,'\1.ssm')
: @opt.fns
- @remote=SiSU_Env::Info_remote.new(@opt)
+ @remote=SiSU_Env::InfoRemote.new(@opt)
end
def rsync
SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->',@put).dark_grey_title_hi unless @opt.cmd =~/q/
@@ -124,9 +124,9 @@ module SiSU_Remote
imagedir=base_uri + '/_sisu/image' #check on
doc_skin_dir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.sst$/.match(url).captures.join + '/_sisu/skin/doc'
downloaded_file=File.new("#{fnb}.-sst",'w+')
- image_download_url=SiSU_Assemble::Remote_image.new.image(imagedir)
+ image_download_url=SiSU_Assemble::RemoteImage.new.image(imagedir)
images=[]
- skin=SiSU_Assemble::Remote_image.new.image(doc_skin_dir)
+ skin=SiSU_Assemble::RemoteImage.new.image(doc_skin_dir)
f.collect.each do |r| # work area
unless r =~/^%+\s/
skin << r.scan(@rgx_skin).uniq if r =~@rgx_skin
@@ -139,19 +139,18 @@ module SiSU_Remote
end
if skin \
and skin.length > 0
- SiSU_Assemble::Remote_image.new.download_doc_skin(skin)
+ SiSU_Assemble::RemoteImage.new.download_doc_skin(skin)
end
if images \
and images.length > 1
- images.flatten!
- images.uniq!
+ images=images.flatten.uniq
images.delete_if {|x| x =~/https?:\/\// }
- images.sort!
+ images=images.sort
@msg,@msgs='downloading images:', [ images.join(',') ]
@tell.call.warn unless @opt.cmd =~/q/
image_info=image_download_url + images
- SiSU_Assemble::Remote_image.new.download_images(image_info)
- #SiSU_Assemble::Remote_image.new.download_images(image_download_url,images)
+ SiSU_Assemble::RemoteImage.new.download_images(image_info)
+ #SiSU_Assemble::RemoteImage.new.download_images(image_download_url,images)
@msg,@msgs='downloading done',nil
@tell.call.warn unless @opt.cmd =~/q/
end
@@ -166,7 +165,7 @@ module SiSU_Remote
if get_p.length > 0 #% remote sisupod
require 'net/http'
for requested_pod in get_p
- pod_info=Remote_download.new(requested_pod)
+ pod_info=RemoteDownload.new(requested_pod)
Net::HTTP.start(pod_info.pod.site) do |http|
resp=http.get("#{pod_info.pod.path}/#{pod_info.pod.name_source}")
open(pod_info.pod.name,'wb') do |file|
@@ -177,7 +176,7 @@ module SiSU_Remote
end
end
end
- class Remote_download
+ class RemoteDownload
def initialize(requested_file)
@requested_file=requested_file
end
diff --git a/lib/sisu/v3/rexml.rb b/lib/sisu/v3/rexml.rb
index 01f9a1fd..d4692b76 100644
--- a/lib/sisu/v3/rexml.rb
+++ b/lib/sisu/v3/rexml.rb
@@ -68,8 +68,8 @@ module SiSU_Rexml
require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
def initialize(md,fno)
@md,@fno=md,fno
- @env=SiSU_Env::Info_env.new(@md.fns)
- @prog=SiSU_Env::Info_program.new #(md.fns) #if md
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ @prog=SiSU_Env::InfoProgram.new #(md.fns) #if md
if File.file?(@fno)
@fnap=@fno #index.xml causes problems with index.html in server config
end
@@ -102,7 +102,7 @@ module SiSU_Rexml
SiSU_Screen::Ansi.new(@md.opt.cmd,'fuschia',"File Not Found #{xmlfile}",'requested XML processing skipped').colorize unless @md.opt.cmd =~/q/
exit
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
diff --git a/lib/sisu/v3/screen_text_color.rb b/lib/sisu/v3/screen_text_color.rb
index 8fc356ac..c3fd0b29 100644
--- a/lib/sisu/v3/screen_text_color.rb
+++ b/lib/sisu/v3/screen_text_color.rb
@@ -68,7 +68,7 @@ module SiSU_Screen
def initialize(cmd,*txt)
@cmd,@txt=cmd,txt
@color_instruct=txt[0]
- flag=SiSU_Env::Info_processing_flag.new
+ flag=SiSU_Env::InfoProcessingFlag.new
if @cmd
if flag.color #set default colors on or off -c acts as toggle against this default, if default is off -c turns on, if default is on -c turns off
@use_color=if @cmd =~/c/; false
diff --git a/lib/sisu/v3/share_src.rb b/lib/sisu/v3/share_src.rb
index 82fffca0..93552b49 100644
--- a/lib/sisu/v3/share_src.rb
+++ b/lib/sisu/v3/share_src.rb
@@ -63,9 +63,9 @@ module SiSU_Markup
class Source
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
md=SiSU_Param::Parameters.new(@opt).get
- @file=SiSU_Env::SiSU_file.new(md)
+ @file=SiSU_Env::FileOp.new(md)
stub=@opt.fnb.gsub(/~[a-z]+$/,'')
end
def read
diff --git a/lib/sisu/v3/share_src_kdissert.rb b/lib/sisu/v3/share_src_kdissert.rb
index 3cd7bb1e..336d421c 100644
--- a/lib/sisu/v3/share_src_kdissert.rb
+++ b/lib/sisu/v3/share_src_kdissert.rb
@@ -56,7 +56,7 @@
** Description: share sisu source markup file, copy it to output directory!
=end
-module SiSU_Kdi_source
+module SiSU_KdiSource
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
pwd=Dir.pwd
@@ -65,7 +65,7 @@ module SiSU_Kdi_source
include FileUtils
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
@output_path="#{@env.path.output}/#{@opt.fnb}"
end
def read
diff --git a/lib/sisu/v3/shared_html.rb b/lib/sisu/v3/shared_html.rb
index ec0f1c8f..0b17ba21 100644
--- a/lib/sisu/v3/shared_html.rb
+++ b/lib/sisu/v3/shared_html.rb
@@ -56,10 +56,10 @@
** Description: shared html parts
=end
-module SiSU_HTML_shared
+module SiSU_HTML_Shared
require_relative 'defaults' # defaults.rb
require_relative 'html_table' # html_table.rb
- class Table_html < SiSU_HTML_table::Table_html
+ class TableHTML < SiSU_HTML_Table::TableHTML
end
end
__END__
diff --git a/lib/sisu/v3/shared_html_lite.rb b/lib/sisu/v3/shared_html_lite.rb
index 85b1b40e..27a228eb 100644
--- a/lib/sisu/v3/shared_html_lite.rb
+++ b/lib/sisu/v3/shared_html_lite.rb
@@ -57,7 +57,7 @@
xml/xhtml/html formatting
=end
-module SiSU_Format_Shared
+module SiSU_FormatShared
require_relative 'defaults' # defaults.rb
include SiSU_Viz
class CSS_Format
@@ -68,7 +68,7 @@ module SiSU_Format_Shared
@md,@t_o=md,t_o
@txt=@t_o.obj
@id=@ocn=@t_o.ocn if defined? @t_o.ocn
- @lv=@t_o.lv.to_s if @t_o.is=='heading'
+ @lv=@t_o.lv.to_s if @t_o.is==:heading
if @md.fns != @@fns
@@fns,@@hname=@md.fns,''
end
@@ -80,13 +80,13 @@ module SiSU_Format_Shared
@tab="\t"
@brace_url=SiSU_Viz::Skin.new.url_decoration
@@tablehead,@@tablefoot=[],[]
- @vz=SiSU_Env::Get_init.instance.skin
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
@base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
end
def urls(data)
@words=[]
- map_nametags=SiSU_Particulars::Combined_singleton.instance.get_map_nametags(@md).nametags_map
+ map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map
data.each do |word|
@words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
if word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
@@ -109,16 +109,16 @@ module SiSU_Format_Shared
%{<a href="#{u}">[#{png}]</a>#{caption}}
else %{[#{png}] #{caption}}
end
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
+ word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
else
u=case u
when /^https?:\/\//
u
when /^:/
- u.gsub!(/^:/,'')
+ u=u.gsub(/^:/,'')
"#{@env.url.root}/#{u}"
when /^\.\.\// # can remove
- u.gsub!(/^\.\.\//,'')
+ u=u.gsub(/^\.\.\//,'')
"#{@env.url.root}/#{u}"
else
"#{@env.url.root}/#{@md.fnb}/#{map_nametags[u][:segname]}#{Sfx[:html]}##{u}"
@@ -127,8 +127,8 @@ module SiSU_Format_Shared
png=m.scan(/\S+/)[0].strip
link=link.strip
ins=%{<a href="#{u}">#{link}</a>}
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins)
- word.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
+ word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins).
+ gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
word
end
word
@@ -139,33 +139,33 @@ module SiSU_Format_Shared
@words=@words.join(' ')
end
def markup_generic(s)
- s=s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>')
- s=s.gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>')
- s=s.gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
- s=s.gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"')
- s=s.gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+')
- s=s.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-')
- s=s.gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>')
- s=s.gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>')
- s=s.gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>') # tt, kbd
- s=s.gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
+ s=s.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_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+').
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-').
+ 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_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>'). # tt, kbd
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
end
def markup_object(t_o)
s=t_o.obj
- if t_o.is !='code'
+ s=if t_o.is !=:code
s=markup_generic(s)
if s =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
wm=s.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)|\S+/)
words=urls(wm)
- s.gsub!(/.+/m,words)
+ s=s.gsub(/.+/m,words)
end
- s.gsub!(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;')
- s.gsub!(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
- s.gsub!(/#{Mx[:url_o]}[_\\](\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>') #http ftp matches escaped, no decoration
- s.gsub!(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>') #special case \{ e.g. \}http://url
- s.gsub!(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{\\1#{@brace_url.xml_open}<a href="\\2" target="_top">\\2</a>#{@brace_url.xml_close}\\3}) #http ftp matches with decoration
+ s.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;').
+ gsub(/#{Mx[:url_o]}[_\\](\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>'). #http ftp matches escaped, no decoration
+ gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>'). #special case \{ e.g. \}http://url
+ gsub(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{\\1#{@brace_url.xml_open}<a href="\\2" target="_top">\\2</a>#{@brace_url.xml_close}\\3}) #http ftp matches with decoration
else
- s.gsub!(/</m,'&lt;'); s.gsub!(/>/m,'&gt;')
+ s.gsub(/</m,'&lt;'); s.gsub!(/>/m,'&gt;')
end
s
end
@@ -176,11 +176,11 @@ module SiSU_Format_Shared
words=urls(wm)
s=s.gsub(/.+/m,words)
end
- s=s.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;')
- s=s.gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
- s=s.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>\2') #http ftp matches escaped, no decoration
- s=s.gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>') #special case \{ e.g. \}http://url
- s=s.gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
+ s=s.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;').
+ gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>\2'). #http ftp matches escaped, no decoration
+ gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>'). #special case \{ e.g. \}http://url
+ gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
end
def paragraph
%{<p class="h#{@lv}" type="substantive" header="#{@hname}">#{@txt}</p>\n} # << "\n"
@@ -252,39 +252,39 @@ GSUB
@txt.split(/\n/).each do |parablock|
m=parablock[/<!f(.+?)!>/,1]
@@tablefoot << m if m
- parablock.gsub!(/<!f.+?!>/,'')
+ parablock=parablock.gsub(/<!f.+?!>/,'')
@@tablehead=1 if parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
- parablock.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+)#{Mx[:gr_c]}/,
- %{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">})
+ parablock=parablock.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+)#{Mx[:gr_c]}/,
+ %{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">})
if parablock =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/
tablefoot=[]
@@tablefoot.each {|x| tablefoot << %{<p align="center"><font size=2><i>#{x}</i></font></p>\n}}
@@tablefoot=[]
- parablock.gsub!(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,
+ parablock=parablock.gsub(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,
%{#{@vz.table_close}\n}) # +
end
if @@tablehead==1
if parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
- parablock.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{\n<tr>} +
- %{\n<td width="\\1%" valign="top">} +
- %{#{para_table}<b>})
- parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</b></td><td width="\\1%" valign="top">} +
- %{#{para_table}<b>})
- parablock.gsub!(/#{Mx[:tc_c]}/, '</b></td></tr>')
+ parablock=parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ %{\n<tr>} +
+ %{\n<td width="\\1%" valign="top">} +
+ %{#{para_table}<b>}).
+ gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ %{</b></td><td width="\\1%" valign="top">} +
+ %{#{para_table}<b>}).
+ gsub(/#{Mx[:tc_c]}/, '</b></td></tr>')
@@tablehead=0
end
parablock
else
- parablock.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{\n<tr>} +
- %{\n<td width="\\1%" valign="top">} +
- %{#{para_table}})
- parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</td><td width="\\1%" valign="top">} +
- %{#{para_table}})
- parablock.gsub!(/#{Mx[:tc_c]}/, '</td></tr>')
+ parablock=parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ %{\n<tr>} +
+ %{\n<td width="\\1%" valign="top">} +
+ %{#{para_table}}).
+ gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ %{</td><td width="\\1%" valign="top">} +
+ %{#{para_table}}).
+ gsub(/#{Mx[:tc_c]}/, '</td></tr>')
parablock
end
@new_content << parablock
@@ -292,7 +292,7 @@ GSUB
@new_content.join
end
end
- class CSS_Format_generic #does CSS_Format in one definition, needs to be told about attrib, despite brevity of generic, easier to see structure with CSS_Format
+ class CSS_FormatGeneric #does CSS_Format in one definition, needs to be told about attrib, despite brevity of generic, easier to see structure with CSS_Format
def initialize(attrib='',txt='',id=nil,ocnd=nil,ocns=nil,lv='',hname=nil)
@tab="\t"
@attrib=attrib
diff --git a/lib/sisu/v3dv/shared_images.rb b/lib/sisu/v3/shared_images.rb
index 1d398213..1d398213 100644
--- a/lib/sisu/v3dv/shared_images.rb
+++ b/lib/sisu/v3/shared_images.rb
diff --git a/lib/sisu/v3/shared_markup_alt.rb b/lib/sisu/v3/shared_markup_alt.rb
index 12cb8393..dabb765e 100644
--- a/lib/sisu/v3/shared_markup_alt.rb
+++ b/lib/sisu/v3/shared_markup_alt.rb
@@ -56,7 +56,7 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_text_representation
+module SiSU_TextRepresentation
class Alter
def initialize(x)
if x.class==String
@@ -68,68 +68,69 @@ module SiSU_text_representation
def strip_clean_of_extra_spaces # dal output tuned
@s=@s.dup
@s=@s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1') unless @s =~/#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/
- @s=@s.gsub(/ [ ]+/,' ')
- @s=@s.gsub(/^ [ ]+/,'')
- @s=@s.gsub(/ [ ]+$/,'')
- @s=@s.gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
- @s=@s.gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
+ @s=@s.gsub(/ [ ]+/,' ').
+ gsub(/^ [ ]+/,'').
+ gsub(/ [ ]+$/,'').
+ gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2').
+ gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
end
def strip_clean_of_markup # text form used in sql db search, used for digest, define rules, make same as in db clean
@s=@s.dup #% same as db clean -->
- @s=@s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]')
- @s=@s.gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:fa_hilite_o]}(.+?)#{Mx[:fa_hilite_c]}/,'\1')
- @s=@s.gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
- @s=@s.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'') # endnote removed
- @s=@s.gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'') # endnote removed
- @s=@s.gsub(/(?:#{Mx[:nbsp]})+/,' ')
- @s=@s.gsub(/(?:#{Mx[:br_nl]})+/,"\n")
- @s=@s.gsub(/(?:#{Mx[:br_paragraph]})+/,"\n")
- @s=@s.gsub(/(?:#{Mx[:br_line]})+/,"\n")
- @s=@s.gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<')
- @s=@s.gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>')
- @s=@s.gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&')
- @s=@s.gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!')
- @s=@s.gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#')
- @s=@s.gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*')
- @s=@s.gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-')
- @s=@s.gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/')
- @s=@s.gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_')
- @s=@s.gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{')
- @s=@s.gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}')
- @s=@s.gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~')
- @s=@s.gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©')
- @s=@s.gsub(/\s\s+/,' ')
- @s=@s.gsub(/\s\s+/,' ')
- @s=@s.strip
+ @s=@s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1').
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1').
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1').
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1').
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1').
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'\1').
+ gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]').
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1').
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1').
+ gsub(/#{Mx[:fa_hilite_o]}(.+?)#{Mx[:fa_hilite_c]}/,'\1').
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~').
+ gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,''). # endnote removed
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,''). # endnote removed
+ gsub(/(?:#{Mx[:nbsp]})+/,' ').
+ gsub(/(?:#{Mx[:br_nl]})+/,"\n").
+ gsub(/(?:#{Mx[:br_paragraph]})+/,"\n").
+ gsub(/(?:#{Mx[:br_line]})+/,"\n").
+ 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(/\s\s+/,' ').
+ gsub(/\s\s+/,' ').
+ strip
end
def semi_revert_markup # used for digest, define rules, make same as in db clean
if @t_o
- @s=@s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*{\1}*')
- @s=@s.gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/{\1}/')
- @s=@s.gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_{\1}_')
- @s=@s.gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"{\1}"')
- @s=@s.gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+')
- @s=@s.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-')
- @s=@s.gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^{\1}^')
- @s=@s.gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,',{\1},')
- @s=@s.gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
- @s=@s.gsub(/#{Mx[:en_a_o]}([\d*+]+\s+.+?)#{Mx[:en_a_c]}/,'~{\1}~') # endnote marker marked up
- @s=@s.gsub(/#{Mx[:en_b_o]}([\d*+]+\s+.+?)#{Mx[:en_b_c]}/,'~[\1]~') # endnote marker marked up
- if @t_o.is=='heading' or @t_o.is=='para'
+ @s=@s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*{\1}*').
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/{\1}/').
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_{\1}_').
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"{\1}"').
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+').
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-').
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^{\1}^').
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,',{\1},').
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~').
+ 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
+ if @t_o.is==:heading \
+ || @t_o.is==:para
@s=@s.gsub(/ [ ]+/,' ')
@s=@s.gsub(/(?:#{Mx[:nbsp]})+/,' ')
- if @t_o.is=='heading'
+ if @t_o.is==:heading
@s=@t_o.lv + '~ ' + @s
end
- if @t_o.is=='para'
+ if @t_o.is==:para
if @t_o.bullet_
@s='_* ' + @s
end
@@ -139,11 +140,11 @@ module SiSU_text_representation
end
end
end
- if @t_o.is=='block' \
- or @t_o.is=='group' \
- or @t_o.is=='code'
+ if @t_o.is==:block \
+ || @t_o.is==:group \
+ || @t_o.is==:code
@s=@s.gsub(/#{Mx[:nbsp]}/,' ')
- @s="#{@t_o.is}{\n\n#{@s}\n\n}#{@t_o.is}"
+ @s="#{@t_o.is.to_s}{\n\n#{@s}\n\n}#{@t_o.is.to_s}"
@s=@s.gsub(/(?:#{Mx[:br_nl]}|\n)+/m,"\n\n")
end
#dealing with poem and verse calls for change in dal, where start and end verse of poem are marked as such
@@ -151,32 +152,32 @@ module SiSU_text_representation
end
@s
end
- def html_lite #test whether eventually can be used in db_import replacing shared_html_lite (search for SiSU_Format_Shared)
+ def html_lite #test whether eventually can be used in db_import replacing shared_html_lite (search for SiSU_FormatShared)
if @t_o
- @s=@s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>')
- @s=@s.gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>')
- @s=@s.gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
- @s=@s.gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"')
- @s=@s.gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+')
- @s=@s.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-')
- @s=@s.gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>')
- @s=@s.gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>')
- @s=@s.gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
- if @t_o.is !='code'
+ @s=@s.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_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+').
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-').
+ 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[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
+ if @t_o.is !=:code
if @s =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
wm=@s.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)|\S+/)
words=urls(wm)
@s=@s.gsub(/.+/m,words)
end
- @s=@s.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;')
- @s=@s.gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
- @s=@s.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>') #http ftp matches escaped, no decoration
- @s=@s.gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>\3') #special case \{ e.g. \}http://url
- @s=@s.gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@url_brace.xml_open}<a href="\\1" target="_top">\\1</a>#{@url_brace.xml_close}}) #http ftp matches with decoration
+ @s=@s.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;').
+ gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>'). #http ftp matches escaped, no decoration
+ gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>\3'). #special case \{ e.g. \}http://url
+ gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@url_brace.xml_open}<a href="\\1" target="_top">\\1</a>#{@url_brace.xml_close}}) #http ftp matches with decoration
else
- @s=@s.gsub(/</m,'&lt;'); @s.gsub(/>/m,'&gt;')
+ @s=@s.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
end
- if @t_o.is=='paragraph'
+ if @t_o.is==:paragraph
if @t_o.bullet_
@s=@s
end
@@ -184,7 +185,7 @@ module SiSU_text_representation
@s=@s
end
end
- if @t_o.is=='heading'
+ if @t_o.is==:heading
@s=@s
end
else
@@ -193,7 +194,7 @@ module SiSU_text_representation
@s
end
end
- class Modified_text_plus_Hash_digest
+ class ModifiedTextPlusHashDigest
def initialize(md,x)
@md=md
if x.class==String
@@ -201,7 +202,7 @@ module SiSU_text_representation
else
@t_o,@s=x,x.obj.dup
end
- @env ||=SiSU_Env::Info_env.new(@md.fns)
+ @env ||=SiSU_Env::InfoEnv.new(@md.fns)
@sha_ =((@env.digest.type =='sha256') ? true : false)
@sha_ ? (require 'digest/sha2') : (require 'digest/md5')
end
@@ -220,7 +221,7 @@ module SiSU_text_representation
end
def strip_clean_of_markup
def txt
- SiSU_text_representation::Alter.new(@s).strip_clean_of_markup
+ SiSU_TextRepresentation::Alter.new(@s).strip_clean_of_markup
end
def dgst
en_dgst,img_dgst={},{}
@@ -231,7 +232,7 @@ module SiSU_text_representation
end
def semi_revert_markup
def txt
- SiSU_text_representation::Alter.new(@s).semi_revert_markup
+ SiSU_TextRepresentation::Alter.new(@s).semi_revert_markup
end
def dgst
txt_dgst=digest(txt)
@@ -241,13 +242,13 @@ module SiSU_text_representation
end
def composite
def stripped_clean(txt)
- SiSU_text_representation::Alter.new(txt).strip_clean_of_markup
+ SiSU_TextRepresentation::Alter.new(txt).strip_clean_of_markup
end
def markup_reverted(txt)
- SiSU_text_representation::Alter.new(txt).semi_revert_markup
+ SiSU_TextRepresentation::Alter.new(txt).semi_revert_markup
end
def images(imgs)
- sys=SiSU_Env::System_call.new
+ sys=SiSU_Env::SystemCall.new
line_image=[]
img_dgst={}
if imgs and imgs.length > 0
@@ -291,7 +292,9 @@ module SiSU_text_representation
en_dgst
end
def dgst
- if @t_o.of !='comment' and @t_o.of !='structure' and @t_o.of !='layout'
+ if @t_o.of !=:comment \
+ && @t_o.of !=:structure \
+ && @t_o.of !=:layout
en_dgst,img_dgst={},{}
txt_stripped_dgst=digest(stripped_clean(@t_o))
txt_markup_reverted_dgst=digest(markup_reverted(@t_o))
@@ -300,7 +303,8 @@ module SiSU_text_representation
notes=@t_o.obj.scan(rgx_notes)
endnotes_dgst=endnotes(notes)
rgx_image=/#{Mx[:lnk_o]}(\S+\.(?:png|jpg|gif))\s.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- imgs=if (@t_o.is=='para' or @t_o.is=='image') \
+ imgs=if (@t_o.is==:para \
+ || @t_o.is==:image) \
and @t_o.obj =~rgx_image
imgs=@t_o.obj.scan(rgx_image).flatten
line_image=images(imgs)
diff --git a/lib/sisu/v3/shared_metadata.rb b/lib/sisu/v3/shared_metadata.rb
index ca81998b..14cc885a 100644
--- a/lib/sisu/v3/shared_metadata.rb
+++ b/lib/sisu/v3/shared_metadata.rb
@@ -56,7 +56,7 @@
** Description: system environment, resource control and configuration details
=end
-module Metadata
+module SiSU_Metadata
class Summary
attr_accessor :tag,:inf,:class,:attrib
def initialize(md,display_heading=false)
@@ -65,9 +65,9 @@ module Metadata
end
def metadata_base
meta,tag=[],[]
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
base_html="#{dir.url.root}/#{@md.fnb}"
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
language=l[:n]
tr=SiSU_Translate::Source.new(@md,language)
@attrib='md'
@@ -434,7 +434,7 @@ module Metadata
@md.creator.author_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :author: ' + x
else nil
end
@@ -446,7 +446,7 @@ module Metadata
@md.creator.contributor_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :contributor: ' + x
else nil
end
@@ -458,7 +458,7 @@ module Metadata
@md.creator.illustrator_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :illustrator: ' + x
else nil
end
@@ -470,7 +470,7 @@ module Metadata
@md.creator.photographer_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :photographer: ' + x
else nil
end
@@ -482,7 +482,7 @@ module Metadata
@md.creator.translator_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :translator: ' + x
else nil
end
@@ -494,7 +494,7 @@ module Metadata
@md.creator.audio_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :audio: ' + x
else nil
end
@@ -506,7 +506,7 @@ module Metadata
@md.creator.digitized_by_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :digitized_by: ' + x
else nil
end
@@ -518,7 +518,7 @@ module Metadata
@md.creator.prepared_by_detail.each do |n|
x += "#{n[:the]}, #{n[:others]}; "
end
- x.gsub!(/;\s*$/,'')
+ x=x.gsub(/;\s*$/,'')
' :prepared_by: ' + x
else nil
end
@@ -736,107 +736,107 @@ module Metadata
def utf8
if @s \
and @s.class==String
- @s.gsub!(/<br(?: \/)?>/u,Mx[:br_paragraph])
- @s.gsub!(/</um,'&#60;') # '&lt;' # &#060;
- @s.gsub!(/</um,'&#60;') # '&lt;' # &#060;
- @s.gsub!(/>/um,'&#62;') # '&gt;' # &#062;
- @s.gsub!(/¢/um,'&#162;') # '&cent;' # &#162;
- @s.gsub!(/£/um,'&#163;') # '&pound;' # &#163;
- @s.gsub!(/¥/um,'&#165;') # '&yen;' # &#165;
- @s.gsub!(/§/um,'&#167;') # '&sect;' # &#167;
- @s.gsub!(/©/um,'&#169;') # '&copy;' # &#169;
- @s.gsub!(/ª/um,'&#170;') # '&ordf;' # &#170;
- @s.gsub!(/«/um,'&#171;') # '&laquo;' # &#171;
- @s.gsub!(/®/um,'&#174;') # '&reg;' # &#174;
- @s.gsub!(/°/um,'&#176;') # '&deg;' # &#176;
- @s.gsub!(/±/um,'&#177;') # '&plusmn;' # &#177;
- @s.gsub!(/²/um,'&#178;') # '&sup2;' # &#178;
- @s.gsub!(/³/um,'&#179;') # '&sup3;' # &#179;
- @s.gsub!(/µ/um,'&#181;') # '&micro;' # &#181;
- @s.gsub!(/¶/um,'&#182;') # '&para;' # &#182;
- @s.gsub!(/¹/um,'&#185;') # '&sup1;' # &#185;
- @s.gsub!(/º/um,'&#186;') # '&ordm;' # &#186;
- @s.gsub!(/»/um,'&#187;') # '&raquo;' # &#187;
- @s.gsub!(/¼/um,'&#188;') # '&frac14;' # &#188;
- @s.gsub!(/½/um,'&#189;') # '&frac12;' # &#189;
- @s.gsub!(/¾/um,'&#190;') # '&frac34;' # &#190;
- @s.gsub!(/×/um,'&#215;') # '&times;' # &#215;
- @s.gsub!(/÷/um,'&#247;') # '&divide;' # &#247;
- @s.gsub!(/¿/um,'&#191;') # '&iquest;' # &#191;
- @s.gsub!(/À/um,'&#192;') # '&Agrave;' # &#192;
- @s.gsub!(/Á/um,'&#193;') # '&Aacute;' # &#193;
- @s.gsub!(/Â/um,'&#194;') # '&Acirc;' # &#194;
- @s.gsub!(/Ã/um,'&#195;') # '&Atilde;' # &#195;
- @s.gsub!(/Ä/um,'&#196;') # '&Auml;' # &#196;
- @s.gsub!(/Å/um,'&#197;') # '&Aring;' # &#197;
- @s.gsub!(/Æ/um,'&#198;') # '&AElig;' # &#198;
- @s.gsub!(/Ç/um,'&#199;') # '&Ccedil;' # &#199;
- @s.gsub!(/È/um,'&#200;') # '&Egrave;' # &#200;
- @s.gsub!(/É/um,'&#201;') # '&Eacute;' # &#201;
- @s.gsub!(/Ê/um,'&#202;') # '&Ecirc;' # &#202;
- @s.gsub!(/Ë/um,'&#203;') # '&Euml;' # &#203;
- @s.gsub!(/Ì/um,'&#204;') # '&Igrave;' # &#204;
- @s.gsub!(/Í/um,'&#205;') # '&Iacute;' # &#205;
- @s.gsub!(/Î/um,'&#206;') # '&Icirc;' # &#206;
- @s.gsub!(/Ï/um,'&#207;') # '&Iuml;' # &#207;
- @s.gsub!(/Ð/um,'&#208;') # '&ETH;' # &#208;
- @s.gsub!(/Ñ/um,'&#209;') # '&Ntilde;' # &#209;
- @s.gsub!(/Ò/um,'&#210;') # '&Ograve;' # &#210;
- @s.gsub!(/Ó/um,'&#211;') # '&Oacute;' # &#211;
- @s.gsub!(/Ô/um,'&#212;') # '&Ocirc;' # &#212;
- @s.gsub!(/Õ/um,'&#213;') # '&Otilde;' # &#213;
- @s.gsub!(/Ö/um,'&#214;') # '&Ouml;' # &#214;
- @s.gsub!(/Ø/um,'&#216;') # '&Oslash;' # &#216;
- @s.gsub!(/Ù/um,'&#217;') # '&Ugrave;' # &#217;
- @s.gsub!(/Ú/um,'&#218;') # '&Uacute;' # &#218;
- @s.gsub!(/Û/um,'&#219;') # '&Ucirc;' # &#219;
- @s.gsub!(/Ü/um,'&#220;') # '&Uuml;' # &#220;
- @s.gsub!(/Ý/um,'&#221;') # '&Yacute;' # &#221;
- @s.gsub!(/Þ/um,'&#222;') # '&THORN;' # &#222;
- @s.gsub!(/ß/um,'&#223;') # '&szlig;' # &#223;
- @s.gsub!(/à/um,'&#224;') # '&agrave;' # &#224;
- @s.gsub!(/á/um,'&#225;') # '&aacute;' # &#225;
- @s.gsub!(/â/um,'&#226;') # '&acirc;' # &#226;
- @s.gsub!(/ã/um,'&#227;') # '&atilde;' # &#227;
- @s.gsub!(/ä/um,'&#228;') # '&auml;' # &#228;
- @s.gsub!(/å/um,'&#229;') # '&aring;' # &#229;
- @s.gsub!(/æ/um,'&#230;') # '&aelig;' # &#230;
- @s.gsub!(/ç/um,'&#231;') # '&ccedil;' # &#231;
- @s.gsub!(/è/um,'&#232;') # '&egrave;' # &#232;
- @s.gsub!(/é/um,'&#233;') # '&acute;' # &#233;
- @s.gsub!(/ê/um,'&#234;') # '&circ;' # &#234;
- @s.gsub!(/ë/um,'&#235;') # '&euml;' # &#235;
- @s.gsub!(/ì/um,'&#236;') # '&igrave;' # &#236;
- @s.gsub!(/í/um,'&#237;') # '&acute;' # &#237;
- @s.gsub!(/î/um,'&#238;') # '&icirc;' # &#238;
- @s.gsub!(/ï/um,'&#239;') # '&iuml;' # &#239;
- @s.gsub!(/ð/um,'&#240;') # '&eth;' # &#240;
- @s.gsub!(/ñ/um,'&#241;') # '&ntilde;' # &#241;
- @s.gsub!(/ò/um,'&#242;') # '&ograve;' # &#242;
- @s.gsub!(/ó/um,'&#243;') # '&oacute;' # &#243;
- @s.gsub!(/ô/um,'&#244;') # '&ocirc;' # &#244;
- @s.gsub!(/õ/um,'&#245;') # '&otilde;' # &#245;
- @s.gsub!(/ö/um,'&#246;') # '&ouml;' # &#246;
- @s.gsub!(/ø/um,'&#248;') # '&oslash;' # &#248;
- @s.gsub!(/ù/um,'&#250;') # '&ugrave;' # &#250;
- @s.gsub!(/ú/um,'&#251;') # '&uacute;' # &#251;
- @s.gsub!(/û/um,'&#252;') # '&ucirc;' # &#252;
- @s.gsub!(/ü/um,'&#253;') # '&uuml;' # &#253;
- @s.gsub!(/þ/um,'&#254;') # '&thorn;' # &#254;
- @s.gsub!(/ÿ/um,'&#255;') # '&yuml;' # &#255;
- @s.gsub!(/‘/um,'&#8216;') # '&lsquo;' # &#8216;
- @s.gsub!(/’/um,'&#8217;') # '&rsquo;' # &#8217;
- @s.gsub!(/“/um,'&#8220;') # &ldquo; # &#8220;
- @s.gsub!(/”/um,'&#8221;') # &rdquo; # &#8221;
- @s.gsub!(/–/um,'&#8211;') # &ndash; # &#8211;
- @s.gsub!(/—/um,'&#8212;') # &mdash; # &#8212;
- @s.gsub!(/∝/um,'&#8733;') # &prop; # &#8733;
- @s.gsub!(/∞/um,'&#8734;') # &infin; # &#8734;
- @s.gsub!(/™/um,'&#8482;') # &trade; # &#8482;
- @s.gsub!(/✠/um,'&#10016;') # &cross; # &#10016;
- @s.gsub!(/ /um,' ') # space identify
- @s.gsub!(/ /um,' ') # space identify
- @s.gsub!(/#{Mx[:br_paragraph]}/u,'<br />')
+ @s=@s.gsub(/<br(?: \/)?>/u,Mx[:br_paragraph]).
+ gsub(/</um,'&#60;'). # '&lt;' # &#060;
+ gsub(/</um,'&#60;'). # '&lt;' # &#060;
+ gsub(/>/um,'&#62;'). # '&gt;' # &#062;
+ gsub(/¢/um,'&#162;'). # '&cent;' # &#162;
+ gsub(/£/um,'&#163;'). # '&pound;' # &#163;
+ gsub(/¥/um,'&#165;'). # '&yen;' # &#165;
+ gsub(/§/um,'&#167;'). # '&sect;' # &#167;
+ gsub(/©/um,'&#169;'). # '&copy;' # &#169;
+ gsub(/ª/um,'&#170;'). # '&ordf;' # &#170;
+ gsub(/«/um,'&#171;'). # '&laquo;' # &#171;
+ gsub(/®/um,'&#174;'). # '&reg;' # &#174;
+ gsub(/°/um,'&#176;'). # '&deg;' # &#176;
+ gsub(/±/um,'&#177;'). # '&plusmn;' # &#177;
+ gsub(/²/um,'&#178;'). # '&sup2;' # &#178;
+ gsub(/³/um,'&#179;'). # '&sup3;' # &#179;
+ gsub(/µ/um,'&#181;'). # '&micro;' # &#181;
+ gsub(/¶/um,'&#182;'). # '&para;' # &#182;
+ gsub(/¹/um,'&#185;'). # '&sup1;' # &#185;
+ gsub(/º/um,'&#186;'). # '&ordm;' # &#186;
+ gsub(/»/um,'&#187;'). # '&raquo;' # &#187;
+ gsub(/¼/um,'&#188;'). # '&frac14;' # &#188;
+ gsub(/½/um,'&#189;'). # '&frac12;' # &#189;
+ gsub(/¾/um,'&#190;'). # '&frac34;' # &#190;
+ gsub(/×/um,'&#215;'). # '&times;' # &#215;
+ gsub(/÷/um,'&#247;'). # '&divide;' # &#247;
+ gsub(/¿/um,'&#191;'). # '&iquest;' # &#191;
+ gsub(/À/um,'&#192;'). # '&Agrave;' # &#192;
+ gsub(/Á/um,'&#193;'). # '&Aacute;' # &#193;
+ gsub(/Â/um,'&#194;'). # '&Acirc;' # &#194;
+ gsub(/Ã/um,'&#195;'). # '&Atilde;' # &#195;
+ gsub(/Ä/um,'&#196;'). # '&Auml;' # &#196;
+ gsub(/Å/um,'&#197;'). # '&Aring;' # &#197;
+ gsub(/Æ/um,'&#198;'). # '&AElig;' # &#198;
+ gsub(/Ç/um,'&#199;'). # '&Ccedil;' # &#199;
+ gsub(/È/um,'&#200;'). # '&Egrave;' # &#200;
+ gsub(/É/um,'&#201;'). # '&Eacute;' # &#201;
+ gsub(/Ê/um,'&#202;'). # '&Ecirc;' # &#202;
+ gsub(/Ë/um,'&#203;'). # '&Euml;' # &#203;
+ gsub(/Ì/um,'&#204;'). # '&Igrave;' # &#204;
+ gsub(/Í/um,'&#205;'). # '&Iacute;' # &#205;
+ gsub(/Î/um,'&#206;'). # '&Icirc;' # &#206;
+ gsub(/Ï/um,'&#207;'). # '&Iuml;' # &#207;
+ gsub(/Ð/um,'&#208;'). # '&ETH;' # &#208;
+ gsub(/Ñ/um,'&#209;'). # '&Ntilde;' # &#209;
+ gsub(/Ò/um,'&#210;'). # '&Ograve;' # &#210;
+ gsub(/Ó/um,'&#211;'). # '&Oacute;' # &#211;
+ gsub(/Ô/um,'&#212;'). # '&Ocirc;' # &#212;
+ gsub(/Õ/um,'&#213;'). # '&Otilde;' # &#213;
+ gsub(/Ö/um,'&#214;'). # '&Ouml;' # &#214;
+ gsub(/Ø/um,'&#216;'). # '&Oslash;' # &#216;
+ gsub(/Ù/um,'&#217;'). # '&Ugrave;' # &#217;
+ gsub(/Ú/um,'&#218;'). # '&Uacute;' # &#218;
+ gsub(/Û/um,'&#219;'). # '&Ucirc;' # &#219;
+ gsub(/Ü/um,'&#220;'). # '&Uuml;' # &#220;
+ gsub(/Ý/um,'&#221;'). # '&Yacute;' # &#221;
+ gsub(/Þ/um,'&#222;'). # '&THORN;' # &#222;
+ gsub(/ß/um,'&#223;'). # '&szlig;' # &#223;
+ gsub(/à/um,'&#224;'). # '&agrave;' # &#224;
+ gsub(/á/um,'&#225;'). # '&aacute;' # &#225;
+ gsub(/â/um,'&#226;'). # '&acirc;' # &#226;
+ gsub(/ã/um,'&#227;'). # '&atilde;' # &#227;
+ gsub(/ä/um,'&#228;'). # '&auml;' # &#228;
+ gsub(/å/um,'&#229;'). # '&aring;' # &#229;
+ gsub(/æ/um,'&#230;'). # '&aelig;' # &#230;
+ gsub(/ç/um,'&#231;'). # '&ccedil;' # &#231;
+ gsub(/è/um,'&#232;'). # '&egrave;' # &#232;
+ gsub(/é/um,'&#233;'). # '&acute;' # &#233;
+ gsub(/ê/um,'&#234;'). # '&circ;' # &#234;
+ gsub(/ë/um,'&#235;'). # '&euml;' # &#235;
+ gsub(/ì/um,'&#236;'). # '&igrave;' # &#236;
+ gsub(/í/um,'&#237;'). # '&acute;' # &#237;
+ gsub(/î/um,'&#238;'). # '&icirc;' # &#238;
+ gsub(/ï/um,'&#239;'). # '&iuml;' # &#239;
+ gsub(/ð/um,'&#240;'). # '&eth;' # &#240;
+ gsub(/ñ/um,'&#241;'). # '&ntilde;' # &#241;
+ gsub(/ò/um,'&#242;'). # '&ograve;' # &#242;
+ gsub(/ó/um,'&#243;'). # '&oacute;' # &#243;
+ gsub(/ô/um,'&#244;'). # '&ocirc;' # &#244;
+ gsub(/õ/um,'&#245;'). # '&otilde;' # &#245;
+ gsub(/ö/um,'&#246;'). # '&ouml;' # &#246;
+ gsub(/ø/um,'&#248;'). # '&oslash;' # &#248;
+ gsub(/ù/um,'&#250;'). # '&ugrave;' # &#250;
+ gsub(/ú/um,'&#251;'). # '&uacute;' # &#251;
+ gsub(/û/um,'&#252;'). # '&ucirc;' # &#252;
+ gsub(/ü/um,'&#253;'). # '&uuml;' # &#253;
+ gsub(/þ/um,'&#254;'). # '&thorn;' # &#254;
+ gsub(/ÿ/um,'&#255;'). # '&yuml;' # &#255;
+ gsub(/‘/um,'&#8216;'). # '&lsquo;' # &#8216;
+ gsub(/’/um,'&#8217;'). # '&rsquo;' # &#8217;
+ gsub(/“/um,'&#8220;'). # &ldquo; # &#8220;
+ gsub(/”/um,'&#8221;'). # &rdquo; # &#8221;
+ gsub(/–/um,'&#8211;'). # &ndash; # &#8211;
+ gsub(/—/um,'&#8212;'). # &mdash; # &#8212;
+ gsub(/∝/um,'&#8733;'). # &prop; # &#8733;
+ gsub(/∞/um,'&#8734;'). # &infin; # &#8734;
+ gsub(/™/um,'&#8482;'). # &trade; # &#8482;
+ gsub(/✠/um,'&#10016;'). # &cross; # &#10016;
+ gsub(/ /um,' '). # space identify
+ gsub(/ /um,' '). # space identify
+ gsub(/#{Mx[:br_paragraph]}/u,'<br />')
end
@s
end
@@ -855,7 +855,7 @@ module Metadata
WOK
end
def metadata
- Metadata::Summary.new(@md).metadata_base
+ SiSU_Metadata::Summary.new(@md).metadata_base
end
self
end
@@ -872,7 +872,7 @@ WOK
WOK
end
def metadata
- Metadata::Summary.new(@md).metadata_base
+ SiSU_Metadata::Summary.new(@md).metadata_base
end
self
end
@@ -890,7 +890,7 @@ WOK
WOK
end
def metadata
- Metadata::Summary.new(@md).metadata_base
+ SiSU_Metadata::Summary.new(@md).metadata_base
end
self
end
@@ -902,7 +902,7 @@ WOK
</p>}
end
def metadata
- Metadata::Summary.new(@md,true).metadata_base
+ SiSU_Metadata::Summary.new(@md,true).metadata_base
end
self
end
@@ -910,32 +910,32 @@ WOK
def meta_para
url_brace=SiSU_Viz::Skin.new.url_decoration
if @inf.class==String
- @inf.gsub!(/</,'&lt;'); @inf.gsub!(/>/,'&gt;')
- @inf.gsub!(/&lt;br(?: \/)?&gt;/,'<br />')
+ @inf=@inf.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;br(?: \/)?&gt;/,'<br />')
if @inf =~/&/
inf_array=[]
word=@inf.scan(/\S+|\n/)
word.each do |w| # _ - / # | : ! ^ ~
- w.gsub!(/&nbsp;/,'&#160;')
+ w=w.gsub(/&nbsp;/,'&#160;')
if w !~/&\S{2,7}?;/
- w.gsub!(/&/,'&amp;')
+ w=w.gsub(/&/,'&amp;')
end
inf_array << w
end
@inf=inf_array.join(' ')
end
- @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
- @inf.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
- if @inf =~/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/
- @inf.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
+ @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
+ 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
+ @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
else
- @inf.gsub!(/(https?:\/\/[^<>()'"\s]+)/,
+ @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
end
- @inf.gsub!(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/,
+ @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
end
<<WOK
@@ -943,7 +943,7 @@ WOK
WOK
end
def metadata
- Metadata::Summary.new(@md).metadata_base
+ SiSU_Metadata::Summary.new(@md).metadata_base
end
self
end
@@ -955,7 +955,7 @@ WOK
WOK
end
def metadata
- Metadata::Summary.new(@md).metadata_base
+ SiSU_Metadata::Summary.new(@md).metadata_base
end
self
end
@@ -969,12 +969,12 @@ WOK
WOK
end
def metadata
- Metadata::Summary.new(@md).metadata_base
+ SiSU_Metadata::Summary.new(@md).metadata_base
end
self
end
end
- class TeX_metadata
+ class TeX_Metadata
def initialize(md)
@md=md
@br="\\\\\n"
@@ -985,19 +985,19 @@ WOK
}
end
def spec_char(inf)
- SiSU_TeX_Pdf::Special_characters.new(@md,inf).special_characters
+ SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_characters
end
def word_break_points(inf)
- SiSU_TeX_Pdf::Special_characters.new(@md,inf).special_word_break_points
+ SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_word_break_points
end
def number_break_points(inf)
- SiSU_TeX_Pdf::Special_characters.new(@md,inf).special_number_break_points
+ SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_number_break_points
end
def metadata_tex
meta=[]
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
base_html="#{dir.url.root}/#{@md.fnb}"
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
language=l[:n]
tr=SiSU_Translate::Source.new(@md,language)
tag="Document Manifest @"
diff --git a/lib/sisu/v3/shared_sem.rb b/lib/sisu/v3/shared_sem.rb
index c61ccd3e..5a6adb20 100644
--- a/lib/sisu/v3/shared_sem.rb
+++ b/lib/sisu/v3/shared_sem.rb
@@ -57,7 +57,7 @@
** Description: system environment, resource control and configuration details
=end
-module SiSU_sem
+module SiSU_Sem
require_relative 'param' # param.rb
class Tags
def initialize(para,md)
diff --git a/lib/sisu/v3/shared_txt.rb b/lib/sisu/v3/shared_txt.rb
index fbb8e1ac..4afddc05 100644
--- a/lib/sisu/v3/shared_txt.rb
+++ b/lib/sisu/v3/shared_txt.rb
@@ -56,7 +56,7 @@
** Description: modules shared by flatfile output generators
=end
-module SiSU_text_utils
+module SiSU_TextUtils
class Wrap
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
@@ -70,8 +70,8 @@ module SiSU_text_utils
line=0
out=[]
out[line]=''
- @para.gsub!(/<br>/,' <br> ')
- @para.gsub!(/#{Mx[:br_nl]}/,"\n\n")
+ @para=@para.gsub(/<br>/,' <br> ').
+ gsub(/#{Mx[:br_nl]}/,"\n\n")
words=@para.scan(/\n\n|<br>|\S+/m)
while words != ''
word=words.shift
@@ -118,13 +118,13 @@ module SiSU_text_utils
if @para.class==Array
@arr=[]
@para.each do |line|
- @arr << SiSU_text_utils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
+ @arr << SiSU_TextUtils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
end
end
@arr
end
end
- class Header_scan
+ class HeaderScan
def initialize(md,para)
@md,@p=md,para
end
diff --git a/lib/sisu/v3/shared_xhtml.rb b/lib/sisu/v3/shared_xhtml.rb
index 16cb9b14..f135aa6a 100644
--- a/lib/sisu/v3/shared_xhtml.rb
+++ b/lib/sisu/v3/shared_xhtml.rb
@@ -56,10 +56,10 @@
** Description: shared html parts
=end
-module SiSU_XHTML_shared
+module SiSU_XHTML_Shared
require_relative 'defaults' # defaults.rb
require_relative 'xhtml_table' # xhtml_table.rb
- class Table_xhtml < SiSU_XHTML_table::Table_xhtml
+ class TableXHTML < SiSU_XHTML_Table::TableXHTML
end
end
__END__
diff --git a/lib/sisu/v3/shared_xml.rb b/lib/sisu/v3/shared_xml.rb
index 40ee2550..6b85d756 100644
--- a/lib/sisu/v3/shared_xml.rb
+++ b/lib/sisu/v3/shared_xml.rb
@@ -55,13 +55,13 @@
** Description: common file for xml generation
=end
-module SiSU_XML_munge
+module SiSU_XML_Munge
class Trans
require_relative 'defaults' # defaults.rb
def initialize(md)
@md=md
- @sys=SiSU_Env::System_call.new
- @dir=SiSU_Env::Info_env.new(@md.fns)
+ @sys=SiSU_Env::SystemCall.new
+ @dir=SiSU_Env::InfoEnv.new(@md.fns)
@brace_url=SiSU_Viz::Skin.new.url_decoration
if @md.sem_tag
@ab ||=semantic_tags.default
@@ -116,405 +116,410 @@ module SiSU_XML_munge
if str
#¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûü
#¢£¥§©ª«®°±²³µ¶¹º»¼½¾×÷
- str.gsub!(/</um,'&#60;') # '&lt;' # &#060;
- str.gsub!(/>/um,'&#62;') # '&gt;' # &#062;
- str.gsub!(/¢/um,'&#162;') # '&cent;' # &#162;
- str.gsub!(/£/um,'&#163;') # '&pound;' # &#163;
- str.gsub!(/¥/um,'&#165;') # '&yen;' # &#165;
- str.gsub!(/§/um,'&#167;') # '&sect;' # &#167;
- str.gsub!(/©/um,'&#169;') # '&copy;' # &#169;
- str.gsub!(/ª/um,'&#170;') # '&ordf;' # &#170;
- str.gsub!(/«/um,'&#171;') # '&laquo;' # &#171;
- str.gsub!(/®/um,'&#174;') # '&reg;' # &#174;
- str.gsub!(/°/um,'&#176;') # '&deg;' # &#176;
- str.gsub!(/±/um,'&#177;') # '&plusmn;' # &#177;
- str.gsub!(/²/um,'&#178;') # '&sup2;' # &#178;
- str.gsub!(/³/um,'&#179;') # '&sup3;' # &#179;
- str.gsub!(/µ/um,'&#181;') # '&micro;' # &#181;
- str.gsub!(/¶/um,'&#182;') # '&para;' # &#182;
- str.gsub!(/¹/um,'&#185;') # '&sup1;' # &#185;
- str.gsub!(/º/um,'&#186;') # '&ordm;' # &#186;
- str.gsub!(/»/um,'&#187;') # '&raquo;' # &#187;
- str.gsub!(/¼/um,'&#188;') # '&frac14;' # &#188;
- str.gsub!(/½/um,'&#189;') # '&frac12;' # &#189;
- str.gsub!(/¾/um,'&#190;') # '&frac34;' # &#190;
- str.gsub!(/×/um,'&#215;') # '&times;' # &#215;
- str.gsub!(/÷/um,'&#247;') # '&divide;' # &#247;
- str.gsub!(/¿/um,'&#191;') # '&iquest;' # &#191;
- str.gsub!(/À/um,'&#192;') # '&Agrave;' # &#192;
- str.gsub!(/Á/um,'&#193;') # '&Aacute;' # &#193;
- str.gsub!(/Â/um,'&#194;') # '&Acirc;' # &#194;
- str.gsub!(/Ã/um,'&#195;') # '&Atilde;' # &#195;
- str.gsub!(/Ä/um,'&#196;') # '&Auml;' # &#196;
- str.gsub!(/Å/um,'&#197;') # '&Aring;' # &#197;
- str.gsub!(/Æ/um,'&#198;') # '&AElig;' # &#198;
- str.gsub!(/Ç/um,'&#199;') # '&Ccedil;' # &#199;
- str.gsub!(/È/um,'&#200;') # '&Egrave;' # &#200;
- str.gsub!(/É/um,'&#201;') # '&Eacute;' # &#201;
- str.gsub!(/Ê/um,'&#202;') # '&Ecirc;' # &#202;
- str.gsub!(/Ë/um,'&#203;') # '&Euml;' # &#203;
- str.gsub!(/Ì/um,'&#204;') # '&Igrave;' # &#204;
- str.gsub!(/Í/um,'&#205;') # '&Iacute;' # &#205;
- str.gsub!(/Î/um,'&#206;') # '&Icirc;' # &#206;
- str.gsub!(/Ï/um,'&#207;') # '&Iuml;' # &#207;
- str.gsub!(/Ð/um,'&#208;') # '&ETH;' # &#208;
- str.gsub!(/Ñ/um,'&#209;') # '&Ntilde;' # &#209;
- str.gsub!(/Ò/um,'&#210;') # '&Ograve;' # &#210;
- str.gsub!(/Ó/um,'&#211;') # '&Oacute;' # &#211;
- str.gsub!(/Ô/um,'&#212;') # '&Ocirc;' # &#212;
- str.gsub!(/Õ/um,'&#213;') # '&Otilde;' # &#213;
- str.gsub!(/Ö/um,'&#214;') # '&Ouml;' # &#214;
- str.gsub!(/Ø/um,'&#216;') # '&Oslash;' # &#216;
- str.gsub!(/Ù/um,'&#217;') # '&Ugrave;' # &#217;
- str.gsub!(/Ú/um,'&#218;') # '&Uacute;' # &#218;
- str.gsub!(/Û/um,'&#219;') # '&Ucirc;' # &#219;
- str.gsub!(/Ü/um,'&#220;') # '&Uuml;' # &#220;
- str.gsub!(/Ý/um,'&#221;') # '&Yacute;' # &#221;
- str.gsub!(/Þ/um,'&#222;') # '&THORN;' # &#222;
- str.gsub!(/ß/um,'&#223;') # '&szlig;' # &#223;
- str.gsub!(/à/um,'&#224;') # '&agrave;' # &#224;
- str.gsub!(/á/um,'&#225;') # '&aacute;' # &#225;
- str.gsub!(/â/um,'&#226;') # '&acirc;' # &#226;
- str.gsub!(/ã/um,'&#227;') # '&atilde;' # &#227;
- str.gsub!(/ä/um,'&#228;') # '&auml;' # &#228;
- str.gsub!(/å/um,'&#229;') # '&aring;' # &#229;
- str.gsub!(/æ/um,'&#230;') # '&aelig;' # &#230;
- str.gsub!(/ç/um,'&#231;') # '&ccedil;' # &#231;
- str.gsub!(/è/um,'&#232;') # '&egrave;' # &#232;
- str.gsub!(/é/um,'&#233;') # '&acute;' # &#233;
- str.gsub!(/ê/um,'&#234;') # '&circ;' # &#234;
- str.gsub!(/ë/um,'&#235;') # '&euml;' # &#235;
- str.gsub!(/ì/um,'&#236;') # '&igrave;' # &#236;
- str.gsub!(/í/um,'&#237;') # '&acute;' # &#237;
- str.gsub!(/î/um,'&#238;') # '&icirc;' # &#238;
- str.gsub!(/ï/um,'&#239;') # '&iuml;' # &#239;
- str.gsub!(/ð/um,'&#240;') # '&eth;' # &#240;
- str.gsub!(/ñ/um,'&#241;') # '&ntilde;' # &#241;
- str.gsub!(/ò/um,'&#242;') # '&ograve;' # &#242;
- str.gsub!(/ó/um,'&#243;') # '&oacute;' # &#243;
- str.gsub!(/ô/um,'&#244;') # '&ocirc;' # &#244;
- str.gsub!(/õ/um,'&#245;') # '&otilde;' # &#245;
- str.gsub!(/ö/um,'&#246;') # '&ouml;' # &#246;
- str.gsub!(/ø/um,'&#248;') # '&oslash;' # &#248;
- str.gsub!(/ù/um,'&#250;') # '&ugrave;' # &#250;
- str.gsub!(/ú/um,'&#251;') # '&uacute;' # &#251;
- str.gsub!(/û/um,'&#252;') # '&ucirc;' # &#252;
- str.gsub!(/ü/um,'&#253;') # '&uuml;' # &#253;
- str.gsub!(/þ/um,'&#254;') # '&thorn;' # &#254;
- str.gsub!(/ÿ/um,'&#255;') # '&yuml;' # &#255;
- str.gsub!(/‘/um,'&#8216;') # '&lsquo;' # &#8216;
- str.gsub!(/’/um,'&#8217;') # '&rsquo;' # &#8217;
- str.gsub!(/“/um,'&#8220;') # &ldquo; # &#8220;
- str.gsub!(/”/um,'&#8221;') # &rdquo; # &#8221;
- str.gsub!(/–/um,'&#8211;') # &ndash; # &#8211;
- str.gsub!(/—/um,'&#8212;') # &mdash; # &#8212;
- str.gsub!(/∝/um,'&#8733;') # &prop; # &#8733;
- str.gsub!(/∞/um,'&#8734;') # &infin; # &#8734;
- str.gsub!(/™/um,'&#8482;') # &trade; # &#8482;
- str.gsub!(/✠/um,'&#10016;') # &cross; # &#10016;
- str.gsub!(/ /um,' ') # space identify
- str.gsub!(/ /um,' ') # space identify
+ str=str.gsub(/</um,'&#60;'). # '&lt;' # &#060;
+ gsub(/>/um,'&#62;'). # '&gt;' # &#062;
+ gsub(/¢/um,'&#162;'). # '&cent;' # &#162;
+ gsub(/£/um,'&#163;'). # '&pound;' # &#163;
+ gsub(/¥/um,'&#165;'). # '&yen;' # &#165;
+ gsub(/§/um,'&#167;'). # '&sect;' # &#167;
+ gsub(/©/um,'&#169;'). # '&copy;' # &#169;
+ gsub(/ª/um,'&#170;'). # '&ordf;' # &#170;
+ gsub(/«/um,'&#171;'). # '&laquo;' # &#171;
+ gsub(/®/um,'&#174;'). # '&reg;' # &#174;
+ gsub(/°/um,'&#176;'). # '&deg;' # &#176;
+ gsub(/±/um,'&#177;'). # '&plusmn;' # &#177;
+ gsub(/²/um,'&#178;'). # '&sup2;' # &#178;
+ gsub(/³/um,'&#179;'). # '&sup3;' # &#179;
+ gsub(/µ/um,'&#181;'). # '&micro;' # &#181;
+ gsub(/¶/um,'&#182;'). # '&para;' # &#182;
+ gsub(/¹/um,'&#185;'). # '&sup1;' # &#185;
+ gsub(/º/um,'&#186;'). # '&ordm;' # &#186;
+ gsub(/»/um,'&#187;'). # '&raquo;' # &#187;
+ gsub(/¼/um,'&#188;'). # '&frac14;' # &#188;
+ gsub(/½/um,'&#189;'). # '&frac12;' # &#189;
+ gsub(/¾/um,'&#190;'). # '&frac34;' # &#190;
+ gsub(/×/um,'&#215;'). # '&times;' # &#215;
+ gsub(/÷/um,'&#247;'). # '&divide;' # &#247;
+ gsub(/¿/um,'&#191;'). # '&iquest;' # &#191;
+ gsub(/À/um,'&#192;'). # '&Agrave;' # &#192;
+ gsub(/Á/um,'&#193;'). # '&Aacute;' # &#193;
+ gsub(/Â/um,'&#194;'). # '&Acirc;' # &#194;
+ gsub(/Ã/um,'&#195;'). # '&Atilde;' # &#195;
+ gsub(/Ä/um,'&#196;'). # '&Auml;' # &#196;
+ gsub(/Å/um,'&#197;'). # '&Aring;' # &#197;
+ gsub(/Æ/um,'&#198;'). # '&AElig;' # &#198;
+ gsub(/Ç/um,'&#199;'). # '&Ccedil;' # &#199;
+ gsub(/È/um,'&#200;'). # '&Egrave;' # &#200;
+ gsub(/É/um,'&#201;'). # '&Eacute;' # &#201;
+ gsub(/Ê/um,'&#202;'). # '&Ecirc;' # &#202;
+ gsub(/Ë/um,'&#203;'). # '&Euml;' # &#203;
+ gsub(/Ì/um,'&#204;'). # '&Igrave;' # &#204;
+ gsub(/Í/um,'&#205;'). # '&Iacute;' # &#205;
+ gsub(/Î/um,'&#206;'). # '&Icirc;' # &#206;
+ gsub(/Ï/um,'&#207;'). # '&Iuml;' # &#207;
+ gsub(/Ð/um,'&#208;'). # '&ETH;' # &#208;
+ gsub(/Ñ/um,'&#209;'). # '&Ntilde;' # &#209;
+ gsub(/Ò/um,'&#210;'). # '&Ograve;' # &#210;
+ gsub(/Ó/um,'&#211;'). # '&Oacute;' # &#211;
+ gsub(/Ô/um,'&#212;'). # '&Ocirc;' # &#212;
+ gsub(/Õ/um,'&#213;'). # '&Otilde;' # &#213;
+ gsub(/Ö/um,'&#214;'). # '&Ouml;' # &#214;
+ gsub(/Ø/um,'&#216;'). # '&Oslash;' # &#216;
+ gsub(/Ù/um,'&#217;'). # '&Ugrave;' # &#217;
+ gsub(/Ú/um,'&#218;'). # '&Uacute;' # &#218;
+ gsub(/Û/um,'&#219;'). # '&Ucirc;' # &#219;
+ gsub(/Ü/um,'&#220;'). # '&Uuml;' # &#220;
+ gsub(/Ý/um,'&#221;'). # '&Yacute;' # &#221;
+ gsub(/Þ/um,'&#222;'). # '&THORN;' # &#222;
+ gsub(/ß/um,'&#223;'). # '&szlig;' # &#223;
+ gsub(/à/um,'&#224;'). # '&agrave;' # &#224;
+ gsub(/á/um,'&#225;'). # '&aacute;' # &#225;
+ gsub(/â/um,'&#226;'). # '&acirc;' # &#226;
+ gsub(/ã/um,'&#227;'). # '&atilde;' # &#227;
+ gsub(/ä/um,'&#228;'). # '&auml;' # &#228;
+ gsub(/å/um,'&#229;'). # '&aring;' # &#229;
+ gsub(/æ/um,'&#230;'). # '&aelig;' # &#230;
+ gsub(/ç/um,'&#231;'). # '&ccedil;' # &#231;
+ gsub(/è/um,'&#232;'). # '&egrave;' # &#232;
+ gsub(/é/um,'&#233;'). # '&acute;' # &#233;
+ gsub(/ê/um,'&#234;'). # '&circ;' # &#234;
+ gsub(/ë/um,'&#235;'). # '&euml;' # &#235;
+ gsub(/ì/um,'&#236;'). # '&igrave;' # &#236;
+ gsub(/í/um,'&#237;'). # '&acute;' # &#237;
+ gsub(/î/um,'&#238;'). # '&icirc;' # &#238;
+ gsub(/ï/um,'&#239;'). # '&iuml;' # &#239;
+ gsub(/ð/um,'&#240;'). # '&eth;' # &#240;
+ gsub(/ñ/um,'&#241;'). # '&ntilde;' # &#241;
+ gsub(/ò/um,'&#242;'). # '&ograve;' # &#242;
+ gsub(/ó/um,'&#243;'). # '&oacute;' # &#243;
+ gsub(/ô/um,'&#244;'). # '&ocirc;' # &#244;
+ gsub(/õ/um,'&#245;'). # '&otilde;' # &#245;
+ gsub(/ö/um,'&#246;'). # '&ouml;' # &#246;
+ gsub(/ø/um,'&#248;'). # '&oslash;' # &#248;
+ gsub(/ù/um,'&#250;'). # '&ugrave;' # &#250;
+ gsub(/ú/um,'&#251;'). # '&uacute;' # &#251;
+ gsub(/û/um,'&#252;'). # '&ucirc;' # &#252;
+ gsub(/ü/um,'&#253;'). # '&uuml;' # &#253;
+ gsub(/þ/um,'&#254;'). # '&thorn;' # &#254;
+ gsub(/ÿ/um,'&#255;'). # '&yuml;' # &#255;
+ gsub(/‘/um,'&#8216;'). # '&lsquo;' # &#8216;
+ gsub(/’/um,'&#8217;'). # '&rsquo;' # &#8217;
+ gsub(/“/um,'&#8220;'). # &ldquo; # &#8220;
+ gsub(/”/um,'&#8221;'). # &rdquo; # &#8221;
+ gsub(/–/um,'&#8211;'). # &ndash; # &#8211;
+ gsub(/—/um,'&#8212;'). # &mdash; # &#8212;
+ gsub(/∝/um,'&#8733;'). # &prop; # &#8733;
+ gsub(/∞/um,'&#8734;'). # &infin; # &#8734;
+ gsub(/™/um,'&#8482;'). # &trade; # &#8482;
+ gsub(/✠/um,'&#10016;'). # &cross; # &#10016;
+ gsub(/ /um,' '). # space identify
+ gsub(/ /um,' ') # space identify
end
dob=if defined? dob.obj
dob.obj=str
dob
- elsif dob.class==String; dob
+ elsif dob.class==String
+ str
end
dob
end
end
def html(dob='')
if @sys.locale =~/utf-?8/i # instead ucs for utf8 # String#encode Iñtërnâtiônàlizætiøn
- dob.obj.gsub!(/ /u,' ') # space identify
- dob.obj.gsub!(/ /u,' ') # space identify
+ dob.obj=dob.obj.gsub(/ /u,' '). # space identify
+ gsub(/ /u,' ') # space identify
else
- dob.obj.gsub!(/¢/u,'&cent;') # &#162;
- dob.obj.gsub!(/£/u,'&pound;') # &#163;
- dob.obj.gsub!(/¥/u,'&yen;') # &#165;
- dob.obj.gsub!(/§/u,'&sect;') # &#167;
- dob.obj.gsub!(/©/u,'&copy;') # &#169;
- dob.obj.gsub!(/ª/u,'&ordf;') # &#170;
- dob.obj.gsub!(/«/u,'&laquo;') # &#171;
- dob.obj.gsub!(/®/u,'&reg;') # &#174;
- dob.obj.gsub!(/°/u,'&deg;') # &#176;
- dob.obj.gsub!(/±/u,'&plusmn;') # &#177;
- dob.obj.gsub!(/²/u,'&sup2;') # &#178;
- dob.obj.gsub!(/³/u,'&sup3;') # &#179;
- dob.obj.gsub!(/µ/u,'&micro;') # &#181;
- dob.obj.gsub!(/¶/u,'&para;') # &#182;
- dob.obj.gsub!(/¹/u,'&sup1;') # &#185;
- dob.obj.gsub!(/º/u,'&ordm;') # &#186;
- dob.obj.gsub!(/»/u,'&raquo;') # &#187;
- dob.obj.gsub!(/¼/u,'&frac14;') # &#188;
- dob.obj.gsub!(/½/u,'&frac12;') # &#189;
- dob.obj.gsub!(/¾/u,'&frac34;') # &#190;
- dob.obj.gsub!(/×/u,'&times;') # &#215;
- dob.obj.gsub!(/÷/u,'&divide;') # &#247;
- dob.obj.gsub!(/¿/u,'&iquest;') # &#191;
- dob.obj.gsub!(/À/u,'&Agrave;') # &#192;
- dob.obj.gsub!(/Á/u,'&Aacute;') # &#193;
- dob.obj.gsub!(/Â/u,'&Acirc;') # &#194;
- dob.obj.gsub!(/Ã/u,'&Atilde;') # &#195;
- dob.obj.gsub!(/Ä/u,'&Auml;') # &#196;
- dob.obj.gsub!(/Å/u,'&Aring;') # &#197;
- dob.obj.gsub!(/Æ/u,'&AElig;') # &#198;
- dob.obj.gsub!(/Ç/u,'&Ccedil;') # &#199;
- dob.obj.gsub!(/È/u,'&Egrave;') # &#200;
- dob.obj.gsub!(/É/u,'&Eacute;') # &#201;
- dob.obj.gsub!(/Ê/u,'&Ecirc;') # &#202;
- dob.obj.gsub!(/Ë/u,'&Euml;') # &#203;
- dob.obj.gsub!(/Ì/u,'&Igrave;') # &#204;
- dob.obj.gsub!(/Í/u,'&Iacute;') # &#205;
- dob.obj.gsub!(/Î/u,'&Icirc;') # &#206;
- dob.obj.gsub!(/Ï/u,'&Iuml;') # &#207;
- dob.obj.gsub!(/Ð/u,'&ETH;') # &#208;
- dob.obj.gsub!(/Ñ/u,'&Ntilde;') # &#209;
- dob.obj.gsub!(/Ò/u,'&Ograve;') # &#210;
- dob.obj.gsub!(/Ó/u,'&Oacute;') # &#211;
- dob.obj.gsub!(/Ô/u,'&Ocirc;') # &#212;
- dob.obj.gsub!(/Õ/u,'&Otilde;') # &#213;
- dob.obj.gsub!(/Ö/u,'&Ouml;') # &#214;
- dob.obj.gsub!(/Ø/u,'&Oslash;') # &#216;
- dob.obj.gsub!(/Ù/u,'&Ugrave;') # &#217;
- dob.obj.gsub!(/Ú/u,'&Uacute;') # &#218;
- dob.obj.gsub!(/Û/u,'&Ucirc;') # &#219;
- dob.obj.gsub!(/Ü/u,'&Uuml;') # &#220;
- dob.obj.gsub!(/Ý/u,'&Yacute;') # &#221;
- dob.obj.gsub!(/Þ/u,'&THORN;') # &#222;
- dob.obj.gsub!(/ß/u,'&szlig;') # &#223;
- dob.obj.gsub!(/à/u,'&agrave;') # &#224;
- dob.obj.gsub!(/á/u,'&aacute;') # &#225;
- dob.obj.gsub!(/â/u,'&acirc;') # &#226;
- dob.obj.gsub!(/ã/u,'&atilde;') # &#227;
- dob.obj.gsub!(/ä/u,'&auml;') # &#228;
- dob.obj.gsub!(/å/u,'&aring;') # &#229;
- dob.obj.gsub!(/æ/u,'&aelig;') # &#230;
- dob.obj.gsub!(/ç/u,'&ccedil;') # &#231;
- dob.obj.gsub!(/è/u,'&egrave;') # &#232;
- dob.obj.gsub!(/é/u,'&acute;') # &#233;
- dob.obj.gsub!(/ê/u,'&circ;') # &#234;
- dob.obj.gsub!(/ë/u,'&euml;') # &#235;
- dob.obj.gsub!(/ì/u,'&igrave;') # &#236;
- dob.obj.gsub!(/í/u,'&acute;') # &#237;
- dob.obj.gsub!(/î/u,'&icirc;') # &#238;
- dob.obj.gsub!(/ï/u,'&iuml;') # &#239;
- dob.obj.gsub!(/ð/u,'&eth;') # &#240;
- dob.obj.gsub!(/ñ/u,'&ntilde;') # &#241;
- dob.obj.gsub!(/ò/u,'&ograve;') # &#242;
- dob.obj.gsub!(/ó/u,'&oacute;') # &#243;
- dob.obj.gsub!(/ô/u,'&ocirc;') # &#244;
- dob.obj.gsub!(/õ/u,'&otilde;') # &#245;
- dob.obj.gsub!(/ö/u,'&ouml;') # &#246;
- dob.obj.gsub!(/ø/u,'&oslash;') # &#248;
- dob.obj.gsub!(/ù/u,'&ugrave;') # &#250;
- dob.obj.gsub!(/ú/u,'&uacute;') # &#251;
- dob.obj.gsub!(/û/u,'&ucirc;') # &#252;
- dob.obj.gsub!(/ü/u,'&uuml;') # &#253;
- dob.obj.gsub!(/þ/u,'&thorn;') # &#254;
- dob.obj.gsub!(/ÿ/u,'&yuml;') # &#255;
- dob.obj.gsub!(/‘/u,'&#lsquo;') # &lsquo; # &#8216;
- dob.obj.gsub!(/’/u,'&#rsquo;') # &rsquo; # &#8217;
- dob.obj.gsub!(/“/u,'&ldquo;') # &ldquo; # &#8220;
- dob.obj.gsub!(/”/u,'&rdquo;') # &rdquo; # &#8221;
- dob.obj.gsub!(/–/u,'&ndash;') # &ndash; # &#8211;
- dob.obj.gsub!(/—/u,'&mdash;') # &mdash; # &#8212;
- dob.obj.gsub!(/∝/u,'&prop;') # &prop; # &#8733;
- dob.obj.gsub!(/∞/u,'&infin;') # &infin; # &#8734;
- dob.obj.gsub!(/™/u,'&trade;') # &trade; # &#8482;
- dob.obj.gsub!(/✠/u,'&#10016;') # &#10016;
- #par.obja.gsub!(/✠/u '&dagger;') # &dagger; # &#8224; incorrect replacement †
- dob.obj.gsub!(/ /u,' ') # space identify
- dob.obj.gsub!(/ /u,' ') # space identify
+ dob.obj=dob.obj.gsub(/¢/u,'&cent;'). # &#162;
+ gsub(/£/u,'&pound;'). # &#163;
+ gsub(/¥/u,'&yen;'). # &#165;
+ gsub(/§/u,'&sect;'). # &#167;
+ gsub(/©/u,'&copy;'). # &#169;
+ gsub(/ª/u,'&ordf;'). # &#170;
+ gsub(/«/u,'&laquo;'). # &#171;
+ gsub(/®/u,'&reg;'). # &#174;
+ gsub(/°/u,'&deg;'). # &#176;
+ gsub(/±/u,'&plusmn;'). # &#177;
+ gsub(/²/u,'&sup2;'). # &#178;
+ gsub(/³/u,'&sup3;'). # &#179;
+ gsub(/µ/u,'&micro;'). # &#181;
+ gsub(/¶/u,'&para;'). # &#182;
+ gsub(/¹/u,'&sup1;'). # &#185;
+ gsub(/º/u,'&ordm;'). # &#186;
+ gsub(/»/u,'&raquo;'). # &#187;
+ gsub(/¼/u,'&frac14;'). # &#188;
+ gsub(/½/u,'&frac12;'). # &#189;
+ gsub(/¾/u,'&frac34;'). # &#190;
+ gsub(/×/u,'&times;'). # &#215;
+ gsub(/÷/u,'&divide;'). # &#247;
+ gsub(/¿/u,'&iquest;'). # &#191;
+ gsub(/À/u,'&Agrave;'). # &#192;
+ gsub(/Á/u,'&Aacute;'). # &#193;
+ gsub(/Â/u,'&Acirc;'). # &#194;
+ gsub(/Ã/u,'&Atilde;'). # &#195;
+ gsub(/Ä/u,'&Auml;'). # &#196;
+ gsub(/Å/u,'&Aring;'). # &#197;
+ gsub(/Æ/u,'&AElig;'). # &#198;
+ gsub(/Ç/u,'&Ccedil;'). # &#199;
+ gsub(/È/u,'&Egrave;'). # &#200;
+ gsub(/É/u,'&Eacute;'). # &#201;
+ gsub(/Ê/u,'&Ecirc;'). # &#202;
+ gsub(/Ë/u,'&Euml;'). # &#203;
+ gsub(/Ì/u,'&Igrave;'). # &#204;
+ gsub(/Í/u,'&Iacute;'). # &#205;
+ gsub(/Î/u,'&Icirc;'). # &#206;
+ gsub(/Ï/u,'&Iuml;'). # &#207;
+ gsub(/Ð/u,'&ETH;'). # &#208;
+ gsub(/Ñ/u,'&Ntilde;'). # &#209;
+ gsub(/Ò/u,'&Ograve;'). # &#210;
+ gsub(/Ó/u,'&Oacute;'). # &#211;
+ gsub(/Ô/u,'&Ocirc;'). # &#212;
+ gsub(/Õ/u,'&Otilde;'). # &#213;
+ gsub(/Ö/u,'&Ouml;'). # &#214;
+ gsub(/Ø/u,'&Oslash;'). # &#216;
+ gsub(/Ù/u,'&Ugrave;'). # &#217;
+ gsub(/Ú/u,'&Uacute;'). # &#218;
+ gsub(/Û/u,'&Ucirc;'). # &#219;
+ gsub(/Ü/u,'&Uuml;'). # &#220;
+ gsub(/Ý/u,'&Yacute;'). # &#221;
+ gsub(/Þ/u,'&THORN;'). # &#222;
+ gsub(/ß/u,'&szlig;'). # &#223;
+ gsub(/à/u,'&agrave;'). # &#224;
+ gsub(/á/u,'&aacute;'). # &#225;
+ gsub(/â/u,'&acirc;'). # &#226;
+ gsub(/ã/u,'&atilde;'). # &#227;
+ gsub(/ä/u,'&auml;'). # &#228;
+ gsub(/å/u,'&aring;'). # &#229;
+ gsub(/æ/u,'&aelig;'). # &#230;
+ gsub(/ç/u,'&ccedil;'). # &#231;
+ gsub(/è/u,'&egrave;'). # &#232;
+ gsub(/é/u,'&acute;'). # &#233;
+ gsub(/ê/u,'&circ;'). # &#234;
+ gsub(/ë/u,'&euml;'). # &#235;
+ gsub(/ì/u,'&igrave;'). # &#236;
+ gsub(/í/u,'&acute;'). # &#237;
+ gsub(/î/u,'&icirc;'). # &#238;
+ gsub(/ï/u,'&iuml;'). # &#239;
+ gsub(/ð/u,'&eth;'). # &#240;
+ gsub(/ñ/u,'&ntilde;'). # &#241;
+ gsub(/ò/u,'&ograve;'). # &#242;
+ gsub(/ó/u,'&oacute;'). # &#243;
+ gsub(/ô/u,'&ocirc;'). # &#244;
+ gsub(/õ/u,'&otilde;'). # &#245;
+ gsub(/ö/u,'&ouml;'). # &#246;
+ gsub(/ø/u,'&oslash;'). # &#248;
+ gsub(/ù/u,'&ugrave;'). # &#250;
+ gsub(/ú/u,'&uacute;'). # &#251;
+ gsub(/û/u,'&ucirc;'). # &#252;
+ gsub(/ü/u,'&uuml;'). # &#253;
+ gsub(/þ/u,'&thorn;'). # &#254;
+ gsub(/ÿ/u,'&yuml;'). # &#255;
+ gsub(/‘/u,'&#lsquo;'). # &lsquo; # &#8216;
+ gsub(/’/u,'&#rsquo;'). # &rsquo; # &#8217;
+ gsub(/“/u,'&ldquo;'). # &ldquo; # &#8220;
+ gsub(/”/u,'&rdquo;'). # &rdquo; # &#8221;
+ gsub(/–/u,'&ndash;'). # &ndash; # &#8211;
+ gsub(/—/u,'&mdash;'). # &mdash; # &#8212;
+ gsub(/∝/u,'&prop;'). # &prop; # &#8733;
+ gsub(/∞/u,'&infin;'). # &infin; # &#8734;
+ gsub(/™/u,'&trade;'). # &trade; # &#8482;
+ gsub(/✠/u,'&#10016;'). # &#10016;
+ #gsub(/✠/u '&dagger;'). # &dagger; # &#8224; incorrect replacement †
+ gsub(/ /u,' '). # space identify
+ gsub(/ /u,' ') # space identify
end
end
self
end
def tidywords(wordlist)
+ wordlist_new=[]
wordlist.each do |x|
#imperfect solution will not catch all possible cases
- x.gsub!(/&/,'&amp;') unless x =~/&\S+;/
- x.gsub!(/&([A-Z])/,'&amp;\1')
+ x=x.gsub(/&/,'&amp;') unless x =~/&\S+;/
+ x=x.gsub(/&([A-Z])/,'&amp;\1')
+ wordlist_new << x
end
+ wordlist_new
end
def markup(dob='')
wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
dob.obj=tidywords(wordlist).join(' ').strip
- unless dob.is=='table'
- dob.obj.gsub!(/#{Mx[:br_line]}/u,'<br />')
- dob.obj.gsub!(/#{Mx[:br_paragraph]}/u,'<br />')
- dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />')
- end
- dob.obj.gsub!(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'')
- dob.obj.gsub!(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+)<\s+/,'\1&lt; '); dob.obj.gsub!(/\s+>(\s+|$)/,' &gt;\1')
- #dob.obj.gsub!(/#{Mx[:fa_emphasis_o]}(.+?)#{Mx[:fa_emphasis_c]}/,'<em>\1</em>') #reinstate
- dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/m,'<b>\1</b>')
- dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/m,'<i>\1</i>')
- dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
- dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>')
- dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>')
- dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>')
- dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>')
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
- dob.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>')
- dob.obj.gsub!(/<:pb>\s*/,'') #Fix
- dob.obj.gsub!(/<+[-~]#>+/,'')
- if dob.is !~/^code/
+ unless dob.is==:table
+ dob.obj=dob.obj.gsub(/#{Mx[:br_line]}/u,'<br />').
+ gsub(/#{Mx[:br_paragraph]}/u,'<br />').
+ gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />')
+ end
+ dob.obj=dob.obj.gsub(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'').
+ gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
+ gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').
+ gsub(/(^|#{Mx[:gl_c]}|\s+)<\s+/,'\1&lt; ').gsub(/\s+>(\s+|$)/,' &gt;\1').
+ #gsub(/#{Mx[:fa_emphasis_o]}(.+?)#{Mx[:fa_emphasis_c]}/,'<em>\1</em>'). #reinstate
+ gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/m,'<b>\1</b>').
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/m,'<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>').
+ gsub(/<:pb>\s*/,''). #Fix
+ gsub(/<+[-~]#>+/,'')
+ if dob.is !=:code
#embeds a red-bullet image -->
- dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>')
- dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>')
- dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
- dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
- dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is=='table'
- dob.obj.gsub!(/#{Mx[:br_page]}\s*/,'')
- dob.obj.gsub!(/#{Mx[:br_page_new]}\s*/,'')
- dob.obj.gsub!(/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/,''); dob.obj.gsub!(/<[-~]#>/,'')
- dob.obj.gsub!(/href="#{Xx[:segment]}/m,'href="')
- dob.obj.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>')
- dob.obj.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>')
- dob.obj.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>')
- dob.obj.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})
- dob.obj.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})
- dob.obj.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})
- dob.obj.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})
- dob.obj.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
- dob.obj.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}})
- dob.obj.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
+ 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_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
+ dob.obj=dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is==:table
+ dob.obj=dob.obj.gsub(/#{Mx[:br_page]}\s*/,'').
+ gsub(/#{Mx[:br_page_new]}\s*/,'').
+ gsub(/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/,'').
+ 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>').
+ 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>').
+ 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>').
+ 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}).
+ 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}).
+ 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}).
+ 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}).
+ 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
+ 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}}).
+ 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
else
- dob.obj.gsub!(/</m,'&lt;'); dob.obj.gsub!(/>/m,'&gt;')
+ dob.obj=dob.obj.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
end
- if dob.of=='block'
- dob.obj.gsub!(/#{Mx[:gl_bullet]}/,'● ')
+ if dob.of==:block
+ dob.obj=dob.obj.gsub(/#{Mx[:gl_bullet]}/,'● ')
end
- dob.obj.gsub!(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
- %{#{@brace_url.xml_open}\\1#{@brace_url.xml_close}})
- dob.obj.gsub!(/#{Dx[:url_o]}/,"#{Dx[:url_o_xml]}")
- dob.obj.gsub!(/#{Dx[:url_c]}/,"#{Dx[:url_c_xml]}")
- dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/m,'&#160;')
+ dob.obj=dob.obj.gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
+ %{#{@brace_url.xml_open}\\1#{@brace_url.xml_close}}).
+ gsub(/#{Dx[:url_o]}/,"#{Dx[:url_o_xml]}").
+ gsub(/#{Dx[:url_c]}/,"#{Dx[:url_c_xml]}").
+ gsub(/&nbsp;|#{Mx[:nbsp]}/m,'&#160;')
dob
end
def markup_light(dob='')
- dob.obj.gsub!(/\/\{(.+?)\}\//,'<i>\1</i>')
- dob.obj.gsub!(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>')
- dob.obj.gsub!(/_\{(.+?)\}_/,'<u>\1</u>')
- dob.obj.gsub!(/-\{(.+?)\}-/,'<del>\1</del>')
- dob.obj.gsub!(/<br(\s*\/)?>/,'<br />')
- dob.obj.gsub!(/<:pb>\s*/,'')
- dob.obj.gsub!(/<[-~]#>/,'')
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; ') #sort
- dob.obj.gsub!(/&([^;]{1,5})/,'&amp;\1') #sort, rough estimate, revisit #WATCH found in node not sax
- dob.obj.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>")
- dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
+ dob.obj=dob.obj.gsub(/\/\{(.+?)\}\//,'<i>\1</i>').
+ gsub(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>').
+ gsub(/_\{(.+?)\}_/,'<u>\1</u>').
+ gsub(/-\{(.+?)\}-/,'<del>\1</del>').
+ gsub(/<br(\s*\/)?>/,'<br />').
+ gsub(/<:pb>\s*/,'').
+ gsub(/<[-~]#>/,'').
+ gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; '). #sort
+ gsub(/&([^;]{1,5})/,'&amp;\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(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
dob.obj=tidywords(wordlist).join(' ').strip
dob
end
def markup_fictionbook(dob='')
- dob.obj.gsub!(/~\{([\d*+]+).+?\}~/,'[\1]')
- dob.obj.gsub!(/\/\{(.+?)\}\//,'<i>\1</i>')
- dob.obj.gsub!(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>')
- dob.obj.gsub!(/_\{(.+?)\}_/,'<u>\1</u>')
- dob.obj.gsub!(/-\{(.+?)\}-/,'<del>\1</del>')
- dob.obj.gsub!(/<br(?:\s*\/)?>/,'<br />')
- dob.obj.gsub!(/<:pb>\s*/,'')
- dob.obj.gsub!(/<[-~]#>/,'')
- #temporary -->
- dob.obj.gsub!(/<:\S+?>/,'')
- #<-- temporary
- dob.obj.gsub!(/<[-~]#>/,'')
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; ') #sort
- dob.obj.gsub!(/&([^;]{1,5})/,'&amp;\1') #sort, rough estimate, revisit #WATCH found in node not sax
- dob.obj.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>")
- dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
+ 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(/<[-~]#>/,'').
+ gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; '). #sort
+ gsub(/&([^;]{1,5})/,'&amp;\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(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
dob.obj=tidywords(wordlist).join(' ').strip
dob
end
def markup_group(dob='')
- dob.obj.gsub!(/</,'&lt;'); dob.obj.gsub!(/>/,'&gt;')
- dob.obj.gsub!(/&lt;:?br(?:\s+\/)?&gt;/,'<br />')
- dob.obj.gsub!(/&lt;(link xmlns:xlink=".+?")&gt;/,'<\1>')
- dob.obj.gsub!(/&lt;(\/link)&gt;/,'<\1>')
- dob.obj.gsub!(/&lt;(\/?en)&gt;/,'<\1>')
+ dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;:?br(?:\s+\/)?&gt;/,'<br />').
+ gsub(/&lt;(link xmlns:xlink=".+?")&gt;/,'<\1>').
+ gsub(/&lt;(\/link)&gt;/,'<\1>').
+ gsub(/&lt;(\/?en)&gt;/,'<\1>')
dob
end
def markup_block(dob='')
- dob.obj.gsub!(/</,'&lt;'); dob.obj.gsub!(/>/,'&gt;')
- dob.obj.gsub!(/&lt;:?br(?:\s+\/)?&gt;/,'<br />')
- dob.obj.gsub!(/&lt;(link xmlns:xlink=".+?")&gt;/,'<\1>')
- dob.obj.gsub!(/&lt;(\/link)&gt;/,'<\1>')
- dob.obj.gsub!(/&lt;(\/?en)&gt;/,'<\1>')
+ dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;').
+ gsub(/&lt;:?br(?:\s+\/)?&gt;/,'<br />').
+ gsub(/&lt;(link xmlns:xlink=".+?")&gt;/,'<\1>').
+ gsub(/&lt;(\/link)&gt;/,'<\1>').
+ gsub(/&lt;(\/?en)&gt;/,'<\1>')
dob
end
def xml_sem_block_paired(matched) # colon depth: many, recurs
- matched.gsub!(/\b(au):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:au]} depth="many">\\2</sem:#{@ab[:au]}>})
- matched.gsub!(/\b(vol):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:vol]} depth="many">\\2</sem:#{@ab[:vol]}>})
- matched.gsub!(/\b(pub):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:pub]} depth="many">\\2</sem:#{@ab[:pub]}>})
- matched.gsub!(/\b(ref):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ref]} depth="many">\\2</sem:#{@ab[:ref]}>})
- matched.gsub!(/\b(desc):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:desc]} depth="many">\\2</sem:#{@ab[:desc]}>})
- matched.gsub!(/\b(conv):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:conv]} depth="many">\\2</sem:#{@ab[:conv]}>})
- matched.gsub!(/\b(ct):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ct]} depth="many">\\2</sem:#{@ab[:ct]}>})
- matched.gsub!(/\b(cty):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:cty]} depth="many">\\2</sem:#{@ab[:cty]}>})
- matched.gsub!(/\b(org):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:org]} depth="many">\\2</sem:#{@ab[:org]}>})
- matched.gsub!(/\b(dt):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:dt]} depth="many">\\2</sem:#{@ab[:dt]}>})
- matched.gsub!(/\b(n):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:n]} depth="many">\\2</sem:#{@ab[:n]}>})
- matched.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m,'<sem:\1 depth="many">\2</sem:\1>')
+ matched=matched.gsub(/\b(au):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:au]} depth="many">\\2</sem:#{@ab[:au]}>}).
+ gsub(/\b(vol):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:vol]} depth="many">\\2</sem:#{@ab[:vol]}>}).
+ gsub(/\b(pub):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:pub]} depth="many">\\2</sem:#{@ab[:pub]}>}).
+ gsub(/\b(ref):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ref]} depth="many">\\2</sem:#{@ab[:ref]}>}).
+ gsub(/\b(desc):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:desc]} depth="many">\\2</sem:#{@ab[:desc]}>}).
+ gsub(/\b(conv):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:conv]} depth="many">\\2</sem:#{@ab[:conv]}>}).
+ gsub(/\b(ct):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ct]} depth="many">\\2</sem:#{@ab[:ct]}>}).
+ gsub(/\b(cty):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:cty]} depth="many">\\2</sem:#{@ab[:cty]}>}).
+ gsub(/\b(org):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:org]} depth="many">\\2</sem:#{@ab[:org]}>}).
+ gsub(/\b(dt):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:dt]} depth="many">\\2</sem:#{@ab[:dt]}>}).
+ gsub(/\b(n):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:n]} depth="many">\\2</sem:#{@ab[:n]}>}).
+ gsub(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m,'<sem:\1 depth="many">\2</sem:\1>')
end
def xml_semantic_tags(dob)
if @md.sem_tag
dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
- dob.obj.gsub!(/:\{(.+?)\}:au\b/m, %{<sem:#{@ab[:au]} depth="one">\\1</sem:#{@ab[:au]}>})
- dob.obj.gsub!(/:\{(.+?)\}:n\b/m, %{<sem:#{@ab[:n]} depth="one">\\1</sem:#{@ab[:n]}>})
- dob.obj.gsub!(/:\{(.+?)\}:ti\b/m, %{<sem:#{@ab[:ti]} depth="one">\\1</sem:#{@ab[:ti]}>})
- dob.obj.gsub!(/:\{(.+?)\}:ref\b/m, %{<sem:#{@ab[:ref]} depth="one">\\1</sem:#{@ab[:ref]}>})
- dob.obj.gsub!(/:\{(.+?)\}:desc\b/m, %{<sem:#{@ab[:desc]} depth="one">\\1</sem:#{@ab[:desc]}>})
- dob.obj.gsub!(/:\{(.+?)\}:cty\b/m, %{<sem:#{@ab[:cty]} depth="one">\\1</sem:#{@ab[:cty]}>})
- dob.obj.gsub!(/:\{(.+?)\}:org\b/m, %{<sem:#{@ab[:org]} depth="one">\\1</sem:#{@ab[:org]}>})
- dob.obj.gsub!(/:\{(.+?)\}:([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="one">\1</sem:\2>')
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};ti\b/m, %{<sem:#{@ab[:ti]} depth="zero">\\1</sem:#{@ab[:ti]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};qt\b/m, %{<sem:#{@ab[:qt]} depth="zero">\\1</sem:#{@ab[:qt]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};ref\b/m, %{<sem:#{@ab[:ref]} depth="zero">\\1</sem:#{@ab[:ref]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};ed\b/m, %{<sem:#{@ab[:ed]} depth="zero">\\1</sem:#{@ab[:ed]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};v\b/m, %{<sem:#{@ab[:v]} depth="zero">\\1</sem:#{@ab[:v]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};desc\b/m, %{<sem:#{@ab[:desc]} depth="zero">\\1</sem:#{@ab[:desc]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};def\b/m, %{<sem:#{@ab[:def]} depth="zero">\\1</sem:#{@ab[:def]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};trans\b/m, %{<sem:#{@ab[:trans]} depth="zero">\\1</sem:#{@ab[:trans]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};y\b/m, %{<sem:#{@ab[:y]} depth="zero">\\1</sem:#{@ab[:y]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};ab\b/m, %{<sem:#{@ab[:ab]} depth="zero">\\1</sem:#{@ab[:ab]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};pg\b/m, %{<sem:#{@ab[:pg]} depth="zero">\\1</sem:#{@ab[:pg]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};fn?\b/m, %{<sem:#{@ab[:fn]} depth="zero">\\1</sem:#{@ab[:fn]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};mn?\b/m, %{<sem:#{@ab[:mn]} depth="zero">\\1</sem:#{@ab[:mn]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};ln?\b/m, %{<sem:#{@ab[:ln]} depth="zero">\\1</sem:#{@ab[:ln]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};in\b/m, %{<sem:#{@ab[:in]} depth="zero">\\1</sem:#{@ab[:in]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};uni\b/m, %{<sem:#{@ab[:uni]} depth="zero">\\1</sem:#{@ab[:uni]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};fac\b/m, %{<sem:#{@ab[:fac]} depth="zero">\\1</sem:#{@ab[:fac]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};inst\b/m, %{<sem:#{@ab[:inst]} depth="zero">\\1</sem:#{@ab[:inst]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};dept\b/m, %{<sem:#{@ab[:dpt]} depth="zero">\\1</sem:#{@ab[:dept]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};org\b/m, %{<sem:#{@ab[:org]} depth="zero">\\1</sem:#{@ab[:org]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};com?\b/m, %{<sem:#{@ab[:com]} depth="zero">\\1</sem:#{@ab[:com]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};cty\b/m, %{<sem:#{@ab[:cty]} depth="zero">\\1</sem:#{@ab[:cty]}>})
- dob.obj.gsub!(/;\{([^}]+(?![;]))\};([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="zero">\1</sem:\2>')
+ dob.obj=dob.obj.gsub(/:\{(.+?)\}:au\b/m, %{<sem:#{@ab[:au]} depth="one">\\1</sem:#{@ab[:au]}>}).
+ gsub(/:\{(.+?)\}:n\b/m, %{<sem:#{@ab[:n]} depth="one">\\1</sem:#{@ab[:n]}>}).
+ gsub(/:\{(.+?)\}:ti\b/m, %{<sem:#{@ab[:ti]} depth="one">\\1</sem:#{@ab[:ti]}>}).
+ gsub(/:\{(.+?)\}:ref\b/m, %{<sem:#{@ab[:ref]} depth="one">\\1</sem:#{@ab[:ref]}>}).
+ gsub(/:\{(.+?)\}:desc\b/m, %{<sem:#{@ab[:desc]} depth="one">\\1</sem:#{@ab[:desc]}>}).
+ gsub(/:\{(.+?)\}:cty\b/m, %{<sem:#{@ab[:cty]} depth="one">\\1</sem:#{@ab[:cty]}>}).
+ gsub(/:\{(.+?)\}:org\b/m, %{<sem:#{@ab[:org]} depth="one">\\1</sem:#{@ab[:org]}>}).
+ gsub(/:\{(.+?)\}:([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="one">\1</sem:\2>').
+ gsub(/;\{([^}]+(?![;]))\};ti\b/m, %{<sem:#{@ab[:ti]} depth="zero">\\1</sem:#{@ab[:ti]}>}).
+ gsub(/;\{([^}]+(?![;]))\};qt\b/m, %{<sem:#{@ab[:qt]} depth="zero">\\1</sem:#{@ab[:qt]}>}).
+ gsub(/;\{([^}]+(?![;]))\};ref\b/m, %{<sem:#{@ab[:ref]} depth="zero">\\1</sem:#{@ab[:ref]}>}).
+ gsub(/;\{([^}]+(?![;]))\};ed\b/m, %{<sem:#{@ab[:ed]} depth="zero">\\1</sem:#{@ab[:ed]}>}).
+ gsub(/;\{([^}]+(?![;]))\};v\b/m, %{<sem:#{@ab[:v]} depth="zero">\\1</sem:#{@ab[:v]}>}).
+ gsub(/;\{([^}]+(?![;]))\};desc\b/m, %{<sem:#{@ab[:desc]} depth="zero">\\1</sem:#{@ab[:desc]}>}).
+ gsub(/;\{([^}]+(?![;]))\};def\b/m, %{<sem:#{@ab[:def]} depth="zero">\\1</sem:#{@ab[:def]}>}).
+ gsub(/;\{([^}]+(?![;]))\};trans\b/m, %{<sem:#{@ab[:trans]} depth="zero">\\1</sem:#{@ab[:trans]}>}).
+ gsub(/;\{([^}]+(?![;]))\};y\b/m, %{<sem:#{@ab[:y]} depth="zero">\\1</sem:#{@ab[:y]}>}).
+ gsub(/;\{([^}]+(?![;]))\};ab\b/m, %{<sem:#{@ab[:ab]} depth="zero">\\1</sem:#{@ab[:ab]}>}).
+ gsub(/;\{([^}]+(?![;]))\};pg\b/m, %{<sem:#{@ab[:pg]} depth="zero">\\1</sem:#{@ab[:pg]}>}).
+ gsub(/;\{([^}]+(?![;]))\};fn?\b/m, %{<sem:#{@ab[:fn]} depth="zero">\\1</sem:#{@ab[:fn]}>}).
+ gsub(/;\{([^}]+(?![;]))\};mn?\b/m, %{<sem:#{@ab[:mn]} depth="zero">\\1</sem:#{@ab[:mn]}>}).
+ gsub(/;\{([^}]+(?![;]))\};ln?\b/m, %{<sem:#{@ab[:ln]} depth="zero">\\1</sem:#{@ab[:ln]}>}).
+ gsub(/;\{([^}]+(?![;]))\};in\b/m, %{<sem:#{@ab[:in]} depth="zero">\\1</sem:#{@ab[:in]}>}).
+ gsub(/;\{([^}]+(?![;]))\};uni\b/m, %{<sem:#{@ab[:uni]} depth="zero">\\1</sem:#{@ab[:uni]}>}).
+ gsub(/;\{([^}]+(?![;]))\};fac\b/m, %{<sem:#{@ab[:fac]} depth="zero">\\1</sem:#{@ab[:fac]}>}).
+ gsub(/;\{([^}]+(?![;]))\};inst\b/m, %{<sem:#{@ab[:inst]} depth="zero">\\1</sem:#{@ab[:inst]}>}).
+ gsub(/;\{([^}]+(?![;]))\};dept\b/m, %{<sem:#{@ab[:dpt]} depth="zero">\\1</sem:#{@ab[:dept]}>}).
+ gsub(/;\{([^}]+(?![;]))\};org\b/m, %{<sem:#{@ab[:org]} depth="zero">\\1</sem:#{@ab[:org]}>}).
+ gsub(/;\{([^}]+(?![;]))\};com?\b/m, %{<sem:#{@ab[:com]} depth="zero">\\1</sem:#{@ab[:com]}>}).
+ gsub(/;\{([^}]+(?![;]))\};cty\b/m, %{<sem:#{@ab[:cty]} depth="zero">\\1</sem:#{@ab[:cty]}>}).
+ gsub(/;\{([^}]+(?![;]))\};([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="zero">\1</sem:\2>')
end
dob
end
end
end
-module SiSU_XML_tags #Format
+module SiSU_XML_Tags #Format
require_relative 'param' # param.rb
include SiSU_Param
include SiSU_Viz
@@ -642,13 +647,13 @@ module SiSU_XML_tags #Format
end
content=meta_content_clean(@md.keywords)
@keywords=%{ <meta name="keywords" content="#{content}" />\n} if @md.keywords
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def meta_content_clean(content='')
content
unless content.nil?
- content.tr!('"',"'")
- content=SiSU_XML_munge::Trans.new(@md).char_enc.utf8(content)
+ content=content.tr('"',"'")
+ content=SiSU_XML_Munge::Trans.new(@md).char_enc.utf8(content)
end
content
end
diff --git a/lib/sisu/v3/sisupod_make.rb b/lib/sisu/v3/sisupod_make.rb
index 7a3b4727..ac584925 100644
--- a/lib/sisu/v3/sisupod_make.rb
+++ b/lib/sisu/v3/sisupod_make.rb
@@ -65,13 +65,13 @@ module SiSU_Doc
def initialize(opt)
@opt=opt
m=/.+\/(?:src\/)?(\S+)/im
- @date=SiSU_Env::Info_date.new.dt
- @env=SiSU_Env::Info_env.new(@opt.fns)
- @ver=SiSU_Env::Info_version.instance.get_version
+ @date=SiSU_Env::InfoDate.new.dt
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
+ @ver=SiSU_Env::InfoVersion.instance.get_version
@ans=SiSU_Response::Response.new
pod_path="#{@env.processing_path.processing}/sisupod"
@v=(@opt.cmd =~/[VM]/) ? 'v' : ''
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
@file=@particulars.file
@local_path="#{@file.output_path.sisupod.dir}"
@zipfile=(@opt.fns =~/\.ssm\.sst$/) \
@@ -132,7 +132,7 @@ module SiSU_Doc
end
end
def directories
- SiSU_Env::Info_env.new.sisupod_v3(@opt)
+ SiSU_Env::InfoEnv.new.sisupod_v3(@opt)
end
def select_skin(skin='') #skin loading logic here
load "#{SiSU_lib}/defaults.rb"
@@ -183,7 +183,7 @@ module SiSU_Doc
file_array.each do |f| #% work area
if f !~/^%+\s/
skin << f.scan(@rgx_skin).uniq.flatten if f =~@rgx_skin
- f.gsub!(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image)
+ f=f.gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image)
if f !~/^%+\s/ \
and f =~@rgx_image
images=images_extract(f,images)
@@ -238,10 +238,9 @@ module SiSU_Doc
#2. need images used by skin, scan skin??
if images \
and images.length > 1
- images.flatten!
- images.uniq!
+ images=images.flatten.uniq
images.delete_if {|x| x =~/https?:\/\// }
- #images.sort!
+ #images=images.sort
path_pod="#{@env.processing_path.processing}/sisupod"
path_pod_conf="#{@env.processing_path.processing}/sisupod/_sisu"
images_path_pod="#{path_pod}/image"
@@ -284,7 +283,7 @@ module SiSU_Doc
def sisupod_xz
FileUtils::mkdir_p(@file.output_path.sisupod.dir) unless FileTest.directory?(@file.output_path.sisupod.dir)
tree=(@opt.cmd =~/[vVM]/ \
- && SiSU_Env::System_call.new.program_found?('tree')) \
+ && SiSU_Env::SystemCall.new.program_found?('tree')) \
? 'tree sisupod'
: ''
if FileTest.directory?(@env.processing_path.processing)
@@ -294,7 +293,7 @@ module SiSU_Doc
tar -cJf #{@zipfile}.txz sisupod
#echo "#{@file.place_file.sisupod.dir}"
})
- FileUtils::mv("#{@zipfile}.txz", @file.place_file.sisupod.dir)
+ FileUtils::mv("#{@zipfile}.txz",@file.place_file.sisupod.dir)
FileUtils::rm_r(Dir.glob("sisupod/*"))
Dir.chdir(@env.path.pwd)
SiSU_Screen::Ansi.new('',"#{@opt.fns}.txz").blue_tab unless @opt.cmd =~/q/
diff --git a/lib/sisu/v3/sitemaps.rb b/lib/sisu/v3/sitemaps.rb
index 7f81b6be..cefdba8e 100644
--- a/lib/sisu/v3/sitemaps.rb
+++ b/lib/sisu/v3/sitemaps.rb
@@ -62,7 +62,7 @@ module SiSU_Sitemaps
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_munge
+ include SiSU_XML_Munge
class Source
def initialize(opt)
@opt=opt
@@ -72,25 +72,25 @@ module SiSU_Sitemaps
end
def songsheet
begin
- @sys=SiSU_Env::System_call.new
- fn_set_lang=SiSU_Env::Standardise_language.new(@opt.lng).language
- @fn=SiSU_Env::Env_call.new(@opt.fns).lang(fn_set_lang[:c])
+ @sys=SiSU_Env::SystemCall.new
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
+ @fn=SiSU_Env::EnvCall.new(@opt.fns).lang(fn_set_lang[:c])
if @opt.cmd =~/Y/
@md=SiSU_Param::Parameters.new(@opt).get
- @trans=SiSU_XML_munge::Trans.new(@md) #check @md is required
- @env=SiSU_Env::Info_env.new(@md.fns)
-# @file=SiSU_Env::SiSU_file.new(@md)
- @rdf=SiSU_XML_tags::RDF.new(@md)
+ @trans=SiSU_XML_Munge::Trans.new(@md) #check @md is required
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+# @file=SiSU_Env::FileOp.new(@md)
+ @rdf=SiSU_XML_Tags::RDF.new(@md)
@fnb_utf8_xml=@md.fnb.dup
@trans.char_enc.utf8(@fnb_utf8_xml) if @sys.locale =~/utf-?8/i #% utf8
output_map(sitemap)
elsif @opt.mod.inspect =~/--sitemaps/
@sitemap_idx_fn='sitemapindex.xml'
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
output_idx(sitemap_index)
SiSU_Screen::Ansi.new(@opt.cmd,"sitemap index:","#{@env.path.output}/#{@sitemap_idx_fn}").result unless @opt.cmd =~/q/
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -105,8 +105,8 @@ module SiSU_Sitemaps
filename=@fn[:sitemap]
touch_path=@md.file.output_path.sitemaps.dir
touch_filename=@fn[:sitemap_touch]
- SiSU_Env::SiSU_file.new(@md).make_path(path)
- file=SiSU_Env::SiSU_file.new(@md).make_file(path,filename)
+ SiSU_Env::FileOp.new(@md).make_path(path)
+ file=SiSU_Env::FileOp.new(@md).make_file(path,filename)
file << sitemap
if FileTest.file?("#{touch_path}/#{touch_filename}")
FileUtils::rm("#{touch_path}/#{touch_filename}")
diff --git a/lib/sisu/v3/spell.rb b/lib/sisu/v3/spell.rb
index 20e443c4..58b86af3 100644
--- a/lib/sisu/v3/spell.rb
+++ b/lib/sisu/v3/spell.rb
@@ -56,7 +56,7 @@
** Description: spellchecking
=end
-module Utility
+module SiSU_SpellUtility
class Spell
def initialize(input,filesrc,flg)
@flg=flg
@@ -70,23 +70,23 @@ module Utility
end
def check
@input.each do |data|
- data.gsub!(/(https?|www|ftp|gopher|png|jpg|gif|html|htm)\S+/i,' ')
- data.gsub!(/(&nbsp;|#{Mx[:nbsp]})/i,' ')
- data.gsub!(/<\/?(table|tr|td|b|p|href).*?>/i,' ')
- data.gsub!(/(<==.+|<:\S+>|<!.+?!>|^@\S+?:.+|\{\{\{|~)/,' ')
- data.gsub!(/(["|<>)(\n'`'.;&_-]|\=)/,' ')
- data.gsub!(/\b(altExternal|
- target|externalimg|
- srcimagebext|
- img|src|toc|pdf|
- cd|org|
- helvetica|roman
- )\b/i,' ')
- data.gsub!(/EOF/,'')
+ data=data.gsub(/(https?|www|ftp|gopher|png|jpg|gif|html|htm)\S+/i,' ').
+ gsub(/(&nbsp;|#{Mx[:nbsp]})/i,' ').
+ gsub(/<\/?(table|tr|td|b|p|href).*?>/i,' ').
+ gsub(/(<==.+|<:\S+>|<!.+?!>|^@\S+?:.+|\{\{\{|~)/,' ').
+ gsub(/(["|<>)(\n'`'.;&_-]|\=)/,' ').
+ gsub(/\b(altExternal|
+ target|externalimg|
+ srcimagebext|
+ img|src|toc|pdf|
+ cd|org|
+ helvetica|roman
+ )\b/i,' ').
+ gsub(/EOF/,'')
@words=data.scan(/\S+/)
@words.each { |y| @allwords << y }
end
- @allwords.uniq!
+ @allwords=@allwords.uniq
if @flg =~ /S/
File.open('/home/ralph/spell_error','a+') do |file| #fix
file.puts %{\n\n<<#{@filename}>>}
diff --git a/lib/sisu/v3/sst_convert_markup.rb b/lib/sisu/v3/sst_convert_markup.rb
index 10eabcb5..29aca8dd 100644
--- a/lib/sisu/v3/sst_convert_markup.rb
+++ b/lib/sisu/v3/sst_convert_markup.rb
@@ -62,7 +62,7 @@ module SiSU_Modify
require_relative 'sst_identify_markup' # sst_identify_markup.rb
require_relative 'sst_from_xml' # sst_from_xml.rb
require_relative 'response' # response.rb
- class Convert_markup
+ class ConvertMarkup
def initialize(opt)
@opt=opt
@description='This is a script that contains canned text conversions for reuse'
@@ -173,7 +173,7 @@ WOK
end
end
def convert_to_simple_xml_model_sax
- SiSU_simple_xml_model_sax::Convert.new(@opt).read
+ SiSU_SimpleXML_ModelSax::Convert.new(@opt).read
end
def convert_to_simple_xml_model_dom
SiSU_simple_xml_model_dom::Convert.new(@opt).read
@@ -185,11 +185,11 @@ WOK
SiSU_Kdissert::Convert.new(@opt).read
end
def convert_s_xml_to_sst
- SiSU_sst_from_xml::Convert.new(@opt).read
+ SiSU_sstFromXML::Convert.new(@opt).read
end
def convert_footnotes
require_relative 'sst_do_inline_footnotes'
- SiSU_Convert_footnotes::Source.new(@opt).read
+ SiSU_ConvertFootnotes::Source.new(@opt).read
end
def conversion
#%% do it -------------------------->
@@ -231,7 +231,7 @@ WOK
if i =~/(?:\.sst|\.ssm|\.ssi)$/
@new,@matched,@flag_start,@flag_end,@empty1,@empty2=true,false,false,false,false,false
o="#{i}.bk" #o is for old
- markup_version=SiSU_Markup::Markup_identify.new(@opt).markup_version?
+ markup_version=SiSU_Markup::MarkupIdentify.new(@opt).markup_version?
if (@opt.mod.inspect=~/37/ and markup_version=~/0.38/) \
or (@opt.mod.inspect=~/current|38/ and markup_version=~/0.37/)
puts "#{i} #{markup_version}"
@@ -296,17 +296,17 @@ end
#%% files to match for this conversion set ------------------------->
require_relative 'options' # options.rb
argv=$*
-@opt=SiSU_commandline::Options.new(argv)
+@opt=SiSU_Commandline::Options.new(argv)
case @opt.mod.inspect
when /=kdi/
- SiSU_Modify::Convert_markup.new(@opt).conversion
+ SiSU_Modify::ConvertMarkup.new(@opt).conversion
when /(?:36|37|38)?to-?(?:37|38)|--convert|--to|--from|default/
@opt.files.each do |fns|
@opt.fns=fns
- SiSU_Modify::Convert_markup.new(@opt).conversion
+ SiSU_Modify::ConvertMarkup.new(@opt).conversion
end
else
@opt.mod='--help'
- SiSU_Modify::Convert_markup.new(@opt).help
+ SiSU_Modify::ConvertMarkup.new(@opt).help
end
__END__
diff --git a/lib/sisu/v3/sst_do_inline_footnotes.rb b/lib/sisu/v3/sst_do_inline_footnotes.rb
index c5af68de..d1e1bef6 100644
--- a/lib/sisu/v3/sst_do_inline_footnotes.rb
+++ b/lib/sisu/v3/sst_do_inline_footnotes.rb
@@ -57,7 +57,7 @@
footnotes, invoked using: sisu --to-footnotes filename.sst
=end
-module SiSU_Convert_footnotes
+module SiSU_ConvertFootnotes
require_relative 'defaults' # defaults.rb
include SiSU_Viz
require_relative 'sysenv' # sysenv.rb
@@ -65,7 +65,7 @@ module SiSU_Convert_footnotes
require_relative 'param' # param.rb
include SiSU_Param
require_relative 'dal_syntax' # dal_syntax.rb
- include SiSU_Syntax
+ include SiSU_DAL_Syntax
require_relative 'i18n' # i18n.rb
class Instantiate < SiSU_Param::Parameters::Instructions
@@flag={} #Beware!!
@@ -84,9 +84,9 @@ module SiSU_Convert_footnotes
def initialize(opt)
@opt=opt
@@fns||@opt.fns
- @my_make=SiSU_Env::Create_file.new(@opt.fns)
- @fnm=SiSU_Env::Info_file.new(@opt.fns).marshal.dal_content
- SiSU_Env::Create_system_link.new.images
+ @my_make=SiSU_Env::CreateFile.new(@opt.fns)
+ @fnm=SiSU_Env::InfoFile.new(@opt.fns).marshal.dal_content
+ SiSU_Env::CreateSystemLink.new.images
end
def read #creates dal
begin
@@ -94,7 +94,7 @@ module SiSU_Convert_footnotes
@@dal_array=[]
@@fns=@opt.fns
create_dal
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
Instantiate.new
end
@@ -109,7 +109,7 @@ module SiSU_Convert_footnotes
dal=if @@dal_array.empty?; read_fnm
else @@dal_array.dup #check
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
Instantiate.new
end
@@ -129,7 +129,7 @@ module SiSU_Convert_footnotes
if @md.en[:mismatch]==0 \
or @md.opt.mod.inspect =~/=footnotes-force/
meta=nil
- dal=SiSU_Convert_footnotes::Make.new(@md,file_array).song
+ dal=SiSU_ConvertFootnotes::Make.new(@md,file_array).song
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@md.fns}.fn").output if @md.opt.cmd =~/v/
SiSU_Screen::Ansi.new(@opt.cmd,"#{@md.fns}.fn -> #{@md.fns}.fn").txt_red unless @md.opt.cmd =~/q/
dal.each {|s| dal_array << "#{s.strip}\n\n" unless s.strip.empty?}
@@ -142,15 +142,15 @@ module SiSU_Convert_footnotes
def read_fnm
dal=[]
dal=if FileTest.file?(@fnm); File.open(@fnm){ |f| dal=Marshal.load(f)}
- else SiSU_Convert_footnotes::Source.new(@opt).create_dal #watch
+ else SiSU_ConvertFootnotes::Source.new(@opt).create_dal #watch
end
end
end
class Output
def initialize(md,data)
@md,@data=md,data
- @my_make=SiSU_Env::Create_file.new(@md.fns)
- dir=SiSU_Env::Info_env.new(@md.fns)
+ @my_make=SiSU_Env::CreateFile.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
@hard="#{Dir.pwd}/#{@md.fns}.fn"
end
def hard_output
@@ -167,9 +167,9 @@ module SiSU_Convert_footnotes
def initialize(md,data)
@md,@data=md,data
@@word_mode=[]
- @env=SiSU_Env::Info_env.new(@md.fns)
- @skin=SiSU_Env::Info_skin.new(@md)
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ @skin=SiSU_Env::InfoSkin.new(@md)
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
@language=l[:n]
@translate=SiSU_Translate::Source.new(@md,@language)
end
@@ -184,7 +184,7 @@ module SiSU_Convert_footnotes
reset
data=@data
@metafile="#{@env.processing_path.dal}/#{@md.fns}.meta"
- my_make_source_file=SiSU_Env::Create_file.new(@md.fns)
+ my_make_source_file=SiSU_Env::CreateFile.new(@md.fns)
data=data.join.split("\n\n")
data_new=[]
data.each do |x|
@@ -193,10 +193,10 @@ module SiSU_Convert_footnotes
end
end
data=data_new.flatten
- data=SiSU_Convert_footnotes::Make.new(@md,data).substitutions_and_insertions?
- data=SiSU_Convert_footnotes::Make.new(@md,data).character_check
- data=SiSU_Convert_footnotes::Make.new(@md,data).endnotes
- SiSU_Convert_footnotes::Output.new(@md,data).hard_output
+ data=SiSU_ConvertFootnotes::Make.new(@md,data).substitutions_and_insertions?
+ data=SiSU_ConvertFootnotes::Make.new(@md,data).character_check
+ data=SiSU_ConvertFootnotes::Make.new(@md,data).endnotes
+ SiSU_ConvertFootnotes::Output.new(@md,data).hard_output
reset
data
end
@@ -418,12 +418,12 @@ module SiSU_Convert_footnotes
when /~\{\s+.+?\}~/ # auto-numbered endnotes <!e!> <!e_!> -->
para.gsub!(/\s*\}~/,' }~') # required 2003w31
@word_mode=para.scan(/\S+/)
- word_mode=SiSU_Convert_footnotes::Make.new(@md,@word_mode).endnote_call_number
+ word_mode=SiSU_ConvertFootnotes::Make.new(@md,@word_mode).endnote_call_number
para=word_mode.join(' ')
endnote_ref+=1
when /~\^(?:\s|$)|<:e>/ #%Note inserts endnotes previously gathered from /^(<!e[:_]!>|[-~]\{{3})/ (in earlier loop)
word_mode=para.scan(/\S+/)
- word_mode=SiSU_Convert_footnotes::Make.new(@md,word_mode).endnote_call_number
+ word_mode=SiSU_ConvertFootnotes::Make.new(@md,word_mode).endnote_call_number
para=word_mode.join(' ')
endnote_ref+=1
end
@@ -468,5 +468,5 @@ module SiSU_Convert_footnotes
end
end
__END__
-@particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+@particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
dal_array=@particulars.dal_array # dal file drawn here
diff --git a/lib/sisu/v3/sst_from_xml.rb b/lib/sisu/v3/sst_from_xml.rb
index ff29cc77..59495e5a 100644
--- a/lib/sisu/v3/sst_from_xml.rb
+++ b/lib/sisu/v3/sst_from_xml.rb
@@ -57,7 +57,7 @@
(master document)
=end
-module SiSU_sst_from_xml
+module SiSU_sstFromXML
require_relative 'sysenv' # sysenv.rb
class Convert
require 'rexml/document'
@@ -65,7 +65,7 @@ module SiSU_sst_from_xml
def initialize(opt)
@opt=opt
@sisu,@sisu_base=[],[]
- @ver=SiSU_Env::Info_version.instance.get_version
+ @ver=SiSU_Env::InfoVersion.instance.get_version
end
def tell(filename,type)
SiSU_Screen::Ansi.new(@opt.cmd,"XML #{type} to SiSU sst","#{filename} --> #{filename}.sst").green_hi_blue
diff --git a/lib/sisu/v3/sst_identify_markup.rb b/lib/sisu/v3/sst_identify_markup.rb
index 2089a9a8..af30f19b 100644
--- a/lib/sisu/v3/sst_identify_markup.rb
+++ b/lib/sisu/v3/sst_identify_markup.rb
@@ -59,7 +59,7 @@
=end
module SiSU_Markup
- class Markup_inform
+ class MarkupInform
attr_accessor :version
def initialize(version,message,declared_markup='',declared_type='')
@version,@message,@declared_markup,@declared_type=version,message,declared_markup,declared_type
@@ -77,10 +77,10 @@ module SiSU_Markup
@declared_type
end
def history
- Markup_history.new(@version).query
+ MarkupHistory.new(@version).query
end
end
- class Markup_identify
+ class MarkupIdentify
def initialize(opt)
@opt=opt
@description='This is a script attempts to identify the version of markup used in SiSU (and provides information on changes in markup)'
@@ -121,14 +121,14 @@ WOK
if @flag_2_0 \
or y =~/^@make:|^@classify|^\s\s?:[a-z_-]+?:\s+\S/
version=2.0.to_f
- markup=Markup_inform.new(version,'2.0' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'2.0' + oldlinks,@declared_markup,@declared_type)
@flag_2_0=true
break
end
unless @flag_38
if (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
version='0.38'
- markup=Markup_inform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
@flag_38=true
end
end
@@ -136,14 +136,14 @@ WOK
if @flag_1_0 \
or y =~/^=\{.+?\}\s*$/
version='0.69'
- markup=Markup_inform.new(version,'0.69' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.69' + oldlinks,@declared_markup,@declared_type)
@flag_1_0=true
break
end
if @flag_66 \
or y =~/[a-z+][:;]\{.+?\}[:;][a-z+]/
version='0.66'
- markup=Markup_inform.new(version,'0.66' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.66' + oldlinks,@declared_markup,@declared_type)
@flag_66=true
break
end
@@ -162,26 +162,26 @@ WOK
if @flag_57 \
or (y =~/^:?A~\?? @title/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
version='0.57'
- markup=Markup_inform.new(version,'0.57' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.57' + oldlinks,@declared_markup,@declared_type)
@flag_57=true
break
end
if @flag_38 \
or (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
version='0.38'
- markup=Markup_inform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
@flag_38=true
break if i >= 200
if y =~ /(?:~{\*+|~\[\*|~\[\+)\s/
version='0.42'
- markup=Markup_inform.new(version,'0.42' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.42' + oldlinks,@declared_markup,@declared_type)
break
end
end
if (y =~/^1~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) \
and not @flag_38
version='0.37'
- markup=Markup_inform.new(version,'0.37 is substantially 0.16 - 0.36 markup with new file-extension' + oldlinks,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.37 is substantially 0.16 - 0.36 markup with new file-extension' + oldlinks,@declared_markup,@declared_type)
break
end
if y =~/^1~/ \
@@ -193,31 +193,31 @@ WOK
" (change file extension from .#{t}#{n} to .ssm)"
else " (change file extension from .#{t}#{n} to .sst)"
end
- markup=Markup_inform.new(version,'0.16 - 0.36' + instruct + links,@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.16 - 0.36' + instruct + links,@declared_markup,@declared_type)
break
end
if y =~/^0\{~/ \
and not @flag_38
version='0.1'
- markup=Markup_inform.new(version,'0.1 - 0.15',@declared_markup,@declared_type)
+ markup=MarkupInform.new(version,'0.1 - 0.15',@declared_markup,@declared_type)
break
end
if y =~/^0\{{3}/ \
and not @flag_38
- markup=Markup_inform.new('circa. 1997','old, check date',@declared_markup,@declared_type)
+ markup=MarkupInform.new('circa. 1997','old, check date',@declared_markup,@declared_type)
break
end
markup='Not a recognised file type '
end
end
markup
- else Markup_history.new(@opt).help_query
+ else MarkupHistory.new(@opt).help_query
end
end
def determine_markup_version
if @opt.fns.nil? \
or @opt.fns.empty?
- Markup_history.new(@opt).help_identify
+ MarkupHistory.new(@opt).help_identify
end
if File.exist?(@opt.fns)
if @opt.fns =~/\.(?:sst|ssm|ssi|s[123i]|r[123])/
@@ -251,7 +251,7 @@ WOK
end
end
end
- class Markup_history
+ class MarkupHistory
def initialize(opt)
@opt=opt
end
@@ -470,5 +470,5 @@ end
puts "SiSU files:"
puts f
f.each do |x|
- SiSU_Markup::Markup_identify.new(x).markup_version?
+ SiSU_Markup::MarkupIdentify.new(x).markup_version?
end
diff --git a/lib/sisu/v3/sst_to_s_xml_sax.rb b/lib/sisu/v3/sst_to_s_xml_sax.rb
index 9a16a437..e3e219e0 100644
--- a/lib/sisu/v3/sst_to_s_xml_sax.rb
+++ b/lib/sisu/v3/sst_to_s_xml_sax.rb
@@ -56,7 +56,7 @@
** Description: simple xml representation (sax style)
=end
-module SiSU_simple_xml_model_sax
+module SiSU_SimpleXML_ModelSax
require_relative 'particulars' # particulars.rb
include SiSU_Particulars
require_relative 'defaults' # defaults.rb
@@ -67,10 +67,10 @@ module SiSU_simple_xml_model_sax
include SiSU_Env
require_relative 'dal_doc_str' # dal_doc_str.rb
require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_munge
+ include SiSU_XML_Munge
require_relative 'shared_sem' # shared_sem.rb
require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_format
+ include SiSU_XML_Format
require_relative 'rexml' # rexml.rb
include SiSU_Rexml
@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0
@@ -79,7 +79,7 @@ module SiSU_simple_xml_model_sax
@@fns=nil
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_env_md(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_env_md(opt)
end
def read
begin
@@ -100,8 +100,8 @@ module SiSU_simple_xml_model_sax
@fns_array=if @@fns_array.empty?; read_fnm
else @@fns_array.dup #check
end
- SiSU_simple_xml_model_sax::Convert::Songsheet.new(@fns_array,@particulars).songsheet
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_SimpleXML_ModelSax::Convert::Songsheet.new(@fns_array,@particulars).songsheet
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure #file closed in songsheet
end
end
@@ -119,10 +119,10 @@ module SiSU_simple_xml_model_sax
end
def songsheet
begin
- SiSU_simple_xml_model_sax::Convert::Scroll.new(@data,@particulars).songsheet
- SiSU_simple_xml_model_sax::Convert::Tidy.new(@md,@env).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
+ SiSU_SimpleXML_ModelSax::Convert::Scroll.new(@data,@particulars).songsheet
+ SiSU_SimpleXML_ModelSax::Convert::Tidy.new(@md,@env).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
SiSU_Rexml::Rexml.new(@md,@md.fn[:sxs]).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
@@ -130,17 +130,17 @@ module SiSU_simple_xml_model_sax
class Scroll
require_relative 'shared_txt' # shared_txt.rb
require_relative 'css' # css.rb
- include SiSU_text_utils
+ include SiSU_TextUtils
@@xml={ body: [], open: [], close: [], head: [] }
def initialize(data='',particulars='')
@data,@env,@md=data,particulars.env,particulars.md
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@regx=/^(?:#{Mx[:mk_o]}:p[bn]#{Mx[:mk_c]}\s*)?(?:#{Mx[:lv_o]}[1-9]:(\S*)#{Mx[:lv_c]})?(.+)/
@tab="\t"
if @md
- @trans=SiSU_XML_munge::Trans.new(@md)
+ @trans=SiSU_XML_Munge::Trans.new(@md)
end
- @sys=SiSU_Env::System_call.new
+ @sys=SiSU_Env::SystemCall.new
end
def songsheet
pre
@@ -196,7 +196,7 @@ WOK
embedded_endnotes(para)
if para[@regx]
paragraph="#{para[@regx,2]}"
- util=SiSU_text_utils::Wrap.new(paragraph,70)
+ util=SiSU_TextUtils::Wrap.new(paragraph,70)
wrapped=util.line_wrap
end
@@xml[:body] << "#{@tab*0}<object>" if para[@regx]
@@ -262,14 +262,14 @@ WOK
end
def markup
data=[]
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
xml_sc(@md)
@endnotes,@level,@cont,@copen,@xml_contents_close=[],[],[],[],[]
@rcdc=false
(0..6).each { |x| @cont[x]=@level[x]=false }
(4..6).each { |x| @xml_contents_close[x]='' }
@data.each do |para|
- data << SiSU_document_structure_extract::Structure.new(@md,para).structure #takes on Mx marks
+ data << SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure #takes on Mx marks
end
data.each do |para|
if para !~/^\s*(?:%+ |<:code>)/
@@ -277,14 +277,14 @@ WOK
para=@trans.xml_semantic_tags(para)
end
if para =~/[:;]\{|\}[:;]/
- para=SiSU_sem::Tags.new(para,@md).rm.all
+ para=SiSU_Sem::Tags.new(para,@md).rm.all
end
end
para=@trans.markup_light(para)
@trans.char_enc.utf8(para) if @sys.locale =~/utf-?8/i #% utf8
para.gsub!(/^@(\S+?):/,"#{Mx[:lv_o]}@\\1#{Mx[:lv_c]}")
if para =~/\A#{Mx[:lv_o]}@(\S+?)#{Mx[:lv_c]}\s*(.+?)\Z/m # for headers
- d_meta=SiSU_text_utils::Header_scan.new(@md,para).meta
+ d_meta=SiSU_TextUtils::HeaderScan.new(@md,para).meta
if d_meta; xml_head(d_meta)
end
end
@@ -294,9 +294,9 @@ WOK
@rcdc=true
end
if para !~/(^@\S+?:|^\s*$|<ENDNOTES>|<EOF>)/
- @sto=SiSU_text_parts::Split_text_object.new(@md,para).lev_segname_para
+ @sto=SiSU_text_parts::SplitTextObject.new(@md,para).lev_segname_para
unless @rcdc
- format_scroll=SiSU_XML_format::Format_scroll.new(@md,@sto.text) if @sto.format =~/i[1-9]|ordinary/
+ format_scroll=SiSU_XML_Format::FormatScroll.new(@md,@sto.text) if @sto.format =~/i[1-9]|ordinary/
case @sto.format
when /^(1):(\S*)/
xml_clean(para)
@@ -310,7 +310,7 @@ WOK
xml_clean(para)
xml_structure(para,$1,$2)
para=@sto.lev_para_ocn.heading_body3
- when /^(4):(\S*)/ # work on see Split_text_object
+ when /^(4):(\S*)/ # work on see SplitTextObject
xml_clean(para)
xml_structure(para,$1,$2)
para=@sto.lev_para_ocn.heading_body4
@@ -332,7 +332,7 @@ WOK
para.gsub!(/>/,'&gt;')
para=code_structure(para)
elsif para =~/<!Th?.+/ # tables come as single block #work area 2005w13
- table=SiSU_Tables::Table_xml.new(para)
+ table=SiSU_Tables::TableXML.new(para)
para=table.table_split
para=table_structure(para)
else xml_structure(para,nil,nil)
@@ -345,16 +345,16 @@ WOK
if para =~/.*<:#>.*$/
para=case para
when /<:i1>/
- format_text=Format_text_object.new(para,'')
+ format_text=FormatTextObject.new(para,'')
format_text.scr_inden_ocn_e_no_paranum
when /<:i2>/
- format_text=Format_text_object.new(para,'')
+ format_text=FormatTextObject.new(para,'')
format_text.scr_inden_ocn_e_no_paranum
end
end
if para =~/<:center>/
one,two=/(.*)<:center>(.*)/.match(para)[1,2]
- format_text=Format_text_object.new(one,two)
+ format_text=FormatTextObject.new(one,two)
para=format_text.center
end
end
@@ -374,10 +374,10 @@ WOK
end
end
def pre
- rdf=SiSU_XML_tags::RDF.new(@md)
- dir=SiSU_Env::Info_env.new
+ rdf=SiSU_XML_Tags::RDF.new(@md)
+ dir=SiSU_Env::InfoEnv.new
@@xml[:head],@@xml[:body]=[],[]
- css=SiSU_Env::CSS_select.new(@md).xml_sax
+ css=SiSU_Env::CSS_Select.new(@md).xml_sax
encoding=if @sys.locale =~/utf-?8/i; '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
else '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
end
@@ -420,8 +420,8 @@ WOK
end
new_file_data=@sisu.join
@sisu=new_file_data.scan(/.+/)
- SiSU_Env::SiSU_file.new(@md).mkdir
- filename_sxm=SiSU_Env::SiSU_file.new(@md,@md.fn[:sxs]).mkfile_pwd
+ SiSU_Env::FileOp.new(@md).mkdir
+ filename_sxm=SiSU_Env::FileOp.new(@md,@md.fn[:sxs]).mkfile_pwd
if filename_sxm.class==File
@sisu.each {|para| filename_sxm.puts para}
filename_sxm.close
@@ -432,7 +432,7 @@ WOK
class Tidy
def initialize(md,dir)
@md,@env=md,dir
- @prog=SiSU_Env::Info_program.new
+ @prog=SiSU_Env::InfoProgram.new
end
def xml
if @prog.tidy !=false #note values can be other than true
@@ -441,7 +441,7 @@ WOK
SiSU_Screen::Ansi.new(@md.opt.cmd,'','','check document structure')
tell.grey_open unless @md.opt.cmd =~/q/
tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy =SiSU_Env::System_call.new("#{Dir.pwd}/#{@md.fn[:sxs]}",tidyfile)
+ tidy =SiSU_Env::SystemCall.new("#{Dir.pwd}/#{@md.fn[:sxs]}",tidyfile)
tidy.well_formed?
tell.p_off unless @md.opt.cmd =~/q/
end
diff --git a/lib/sisu/v3/sysenv.rb b/lib/sisu/v3/sysenv.rb
index 16dabd36..4383a893 100644
--- a/lib/sisu/v3/sysenv.rb
+++ b/lib/sisu/v3/sysenv.rb
@@ -65,7 +65,7 @@ module SiSU_Env
include FileUtils::Verbose
require 'singleton'
@@noyaml=false
- class Info_date
+ class InfoDate
require 'date'
attr_accessor :dt,:t
def initialize
@@ -91,7 +91,7 @@ module SiSU_Env
'2012'
end
end
- class Info_system
+ class InfoSystem
require 'rbconfig'
include Singleton
@@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@rc,@@sisurc_path,@@ad=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'],Config::CONFIG['sysconfdir'] + '/sisu',Config::CONFIG['host'],Config::CONFIG['arch'],%x{ruby -v}.strip,Config::CONFIG['archdir'],Config::CONFIG['sitearchdir'],Config::CONFIG['bindir'],%x{locale charmap}.strip,nil,nil,{} # %x{ruby -v}.strip # Config::CONFIG['rb_ver']
@@ -241,7 +241,7 @@ module SiSU_Env
def initialize
@user,@home,@hostname,@pwd,@sisu_etc,@host,@arch,@rbver,@dir_arch,@dir_sitearch,@dir_bin,@locale,@default_dir,@rc_path,@yamlrc_path,@ad_path=\
@@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@default_dir,@@rc_path,@@yamlrc_path,@@ad_path
- #note rbver is duplicated in Info_version
+ #note rbver is duplicated in InfoVersion
end
end
class Load
@@ -280,7 +280,7 @@ module SiSU_Env
load_prog
end
end
- class Get_init < Info_system
+ class GetInit < InfoSystem
include Singleton
@@noyaml=false
@@rc,@@sisurc_path,@@vz,@@tx=nil,nil,nil,nil
@@ -373,16 +373,16 @@ module SiSU_Env
@@ad
end
end
- class Env_call
+ class EnvCall
@@rc,@@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=nil,nil,nil,nil,nil,nil,nil
@@ad={}
attr_accessor :rc,:fnn,:fnb,:fnt,:fnv,:fnz,:ad
def initialize(fns='')
super()
@fns=fns
- @sys=Info_system.instance
- @rc=Get_init.instance.sisu_yaml.rc
- @ad=Get_init.instance.ads
+ @sys=InfoSystem.instance
+ @rc=GetInit.instance.sisu_yaml.rc
+ @ad=GetInit.instance.ads
if @fns \
and @fns != '' \
and @fns !=@@fns
@@ -405,56 +405,62 @@ module SiSU_Env
@fnn,@fnb,@fnt,@flv,@fnz=@@fnn,@@fnb,@@fnt,@@flv,@@fnz
end
def output_dir_structure
- def by_language_code?
- x=if defined? @rc['output_dir_structure_by'] \
- and @rc['output_dir_structure_by'] =~/language/
- true
- elsif defined? @rc['output_structure']['by_language'] \
- and @rc['output_structure']['by_language'] ==true
- true
- else false
+ def by?
+ output_structure=:filename #set default output structure
+ output_structure=if defined? @rc['output_dir_structure_by']
+ output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
+ or ((defined? @rc['output_structure']['dump']) \
+ && @rc['output_structure']['dump'] ==true)
+ :dump
+ elsif (@rc['output_dir_structure_by'] =~/redirect/) \
+ or ((defined? @rc['output_structure']['redirect']) \
+ && @rc['output_structure']['redirect'] ==true)
+ :redirect
+ elsif (@rc['output_dir_structure_by'] =~/language/) \
+ or ((defined? @rc['output_structure']['by_language']) \
+ && @rc['output_structure']['by_language'] ==true)
+ :language
+ elsif (@rc['output_dir_structure_by'] =~/filetype/) \
+ or ((defined? @rc['output_structure']['by_filetype']) \
+ && @rc['output_structure']['by_filetype'] ==true)
+ :filetype
+ elsif (@rc['output_dir_structure_by'] =~/filename/) \
+ or ((defined? @rc['output_structure']['by_filename']) \
+ && @rc['output_structure']['by_filename'] ==true)
+ :filename
+ else #recheck current default
+ :language
+ end
end
end
+ def dump?
+ ((by?) ==:dump) \
+ ? true
+ : false
+ end
+ def redirect?
+ ((by?) ==:redirect) \
+ ? true
+ : false
+ end
+ def by_language_code?
+ ((by?) ==:language) \
+ ? true
+ : false
+ end
def by_filetype?
- x=if by_language_code?
- false
- elsif defined? @rc['output_dir_structure_by'] \
- and @rc['output_dir_structure_by'] =~/filetype/
- true
- elsif defined? @rc['output_structure']['by_filetype'] \
- and @rc['output_structure']['by_filetype'] ==true
- true
- else false
- end
+ ((by?) ==:filetype) \
+ ? true
+ : false
end
def by_filename?
- x=if by_language_code?
- false
- elsif by_filetype?
- false
- elsif defined? @rc['output_dir_structure_by'] \
- and @rc['output_dir_structure_by'] =~/filename/
- true
- elsif defined? @rc['output_structure']['by_filename'] \
- and @rc['output_structure']['by_filename'] ==true
- true
- else true
- end
+ ((by?) ==:filename) \
+ ? true
+ : false
end
def multilingual?
by_language_code?
end
- def by?
- by=if by_language_code?
- 'language'
- elsif by_filetype?
- 'filetype'
- elsif by_filename?
- 'filename'
- else
- 'filename'
- end
- end
self
end
def document_language_versions_found #REVISIT
@@ -472,8 +478,8 @@ module SiSU_Env
@fn[:t]=filename[m,2]
end
end
- lng_base=Info_env.new.language_default_set
- lang=SiSU_Env::Standardise_language.new
+ lng_base=SiSU_Env::InfoEnv.new.language_default_set
+ lang=SiSU_Env::StandardiseLanguage.new
langs=lang.codes
x=[]
if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}")
@@ -483,7 +489,7 @@ module SiSU_Env
end
#x << { f: "#{@fns}", l: lng_base }
langs.each do |l|
- lng=SiSU_Env::Standardise_language.new(l)
+ lng=SiSU_Env::StandardiseLanguage.new(l)
if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
x << { f: "#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
elsif FileTest.file?("#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
@@ -521,34 +527,33 @@ module SiSU_Env
@fn[:t]=@fns[m,2]
end
end
- lang=SiSU_Env::Standardise_language.new
+ lang=SiSU_Env::StandardiseLanguage.new
langs=lang.codes
x=[]
if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}"); x << "#{@fn[:m]}.#{@fn[:t]}"
end
- dir=SiSU_Env::Info_env.new(@fns)
+ dir=SiSU_Env::InfoEnv.new(@fns)
@m << { m: 'sisu_manifest.html', l: 'English' } #fix later, default language
langs.each do |l|
- lng=SiSU_Env::Standardise_language.new(l)
+ lng=SiSU_Env::StandardiseLanguage.new(l)
fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"
fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
if FileTest.file?(fns_c)
- fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_c) #reconsider file_to_language
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new.file_to_language(fns_c) #reconsider file_to_language
lng=fn_set_lang[:n]
- fn=SiSU_Env::Env_call.new(fns_c).lang(fn_set_lang[:c])
+ fn=SiSU_Env::EnvCall.new(fns_c).lang(fn_set_lang[:c])
@m << { m: fn[:manifest], l: lng }
elsif FileTest.file?(fns_l)
- fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_l) #reconsider file_to_language
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new.file_to_language(fns_l) #reconsider file_to_language
@fnl=dir.i18n.lang_filename(fn_set_lang[:c])
- fn=SiSU_Env::Env_call.new(fns_l).lang(fn_set_lang[:c])
+ fn=SiSU_Env::EnvCall.new(fns_l).lang(fn_set_lang[:c])
@m << { m: fn[:manifest], l: lng }
end
end
- @m.uniq!
- @m
+ @m=@m.uniq
end
def filename(code,name,suffix)
- #d=SiSU_Env::Info_env.new(@fns)
+ #d=SiSU_Env::InfoEnv.new(@fns)
#fnl=d.i18n.lang_filename(code)
"#{name}#{suffix}"
#if code
@@ -604,15 +609,15 @@ module SiSU_Env
@fn
end
end
- class System_call
+ class SystemCall
@@locale_flag=false
def initialize(input='',output='',cmd='')
@input,@output,@cmd=input,output,cmd
- @prog=SiSU_Env::Info_program.new
- @sys=Info_system.instance
+ @prog=SiSU_Env::InfoProgram.new
+ @sys=InfoSystem.instance
end
def program_found?(program)
- found=`whereis #{program}`
+ found=`which #{program}` #`whereis #{program}`
(found =~/bin\/#{program}\b/) ? true : false
end
def locale #locales utf8 or other
@@ -623,10 +628,10 @@ module SiSU_Env
end
def file_encoding(filename,cmd='') #file encoding
program='file'
- fnsp=Info_env.new(filename).source_file_with_path
+ fnsp=SiSU_Env::InfoEnv.new(filename).source_file_with_path
if program_found?(program)
encoding=%x{file -L #{fnsp}}.strip
- encoding.gsub!(/#{fnsp}:(\s+|$)/,'')
+ encoding=encoding.gsub(/#{fnsp}:(\s+|$)/,'')
encoding=if encoding \
and not encoding.empty?
encoding
@@ -799,9 +804,10 @@ module SiSU_Env
end
def makeinfo #texinfo
program='makeinfo'
+ options='' #'--force' #''
program_ref="\n\t\tsee http://www.gnu.org/software/texinfo/"
(program_found?(program)) \
- ? system("#{program} #{@input}\n")
+ ? system("#{program} #{options} #{@input}\n")
: (puts "\tWARN: #{program} is not installed #{program_ref}")
end
def scp
@@ -846,11 +852,11 @@ module SiSU_Env
end
end
end
- class Standardise_language
+ class StandardiseLanguage
require_relative 'i18n' # i18n.rb
def initialize(l='')
@language=(l.nil? || l.empty?) \
- ? Info_env.new.language_default_set
+ ? SiSU_Env::InfoEnv.new.language_default_set
: l
@r=%{(?:#{Px[:lng_lst].join('|')})}
@lang_info=SiSU_i18n::Languages.new
@@ -962,7 +968,7 @@ module SiSU_Env
Px[:lng_lst] # constants.rb
end
end
- class Info_env < Env_call
+ class InfoEnv < EnvCall
require 'pathname'
require 'fileutils'
include FileUtils
@@ -972,7 +978,7 @@ module SiSU_Env
def initialize(fns='',md=nil)
super() #you may not want to re-execute this static info so frequently!
@fns,@md=fns,md
- @env=Env_call.new(fns) if fns
+ @env=SiSU_Env::EnvCall.new(fns) if fns
fnb=if @md \
and defined? @md.fnb
@md.fnb
@@ -986,7 +992,7 @@ module SiSU_Env
end
if fnb; @@fb ||=fnb
end
- @sys=Info_system.instance
+ @sys=InfoSystem.instance
@fnb ||=@@fb #clean up this... used primarily for zap which is not passed normal parameters
@fixed_websev_root='' # @home
@pwd=@@pwd=Dir.pwd
@@ -1116,10 +1122,9 @@ module SiSU_Env
FileUtils::rm_rf(spp)
end
paths=[]
- flv=Env_call.new(opt.fns).document_language_versions_found
+ flv=SiSU_Env::EnvCall.new(opt.fns).document_language_versions_found
flv[:f].each {|l| lng_dirs << l[:l] }
- lng_dirs.uniq!
- lng_dirs.each do |lng|
+ lng_dirs.uniq.each do |lng|
paths << "#{spp}/doc/#{lng}"
end
paths \
@@ -1189,12 +1194,174 @@ module SiSU_Env
end
end
def manifest_minitoc?
- flag=if defined? @rc['manifest']['minitoc'] \
- and not @rc['manifest']['minitoc'].nil?
+ flag=if (defined? @rc['manifest']['minitoc'] \
+ and not @rc['manifest']['minitoc'].nil?)
@rc['manifest']['minitoc']
else false
end
end
+ def build
+ def omit_list
+ @off_list ||=if (defined? @rc['omit_list'] \
+ and not @rc['omit_list'].nil?)
+ @rc['omit_list']
+ elsif (defined? @rc['omit']['list'] \
+ and not @rc['omit']['list'].nil?)
+ @rc['omit']['list']
+ else
+ nil
+ end
+ end
+ def listed?(test) #fix
+ listed=if omit_list
+ x=(omit_list.scan(/\b#{test}\b/)).join
+ test==x \
+ ? true
+ : false
+ else
+ false
+ end
+ listed
+ end
+ def ocn?
+ if (defined? @rc['omit']['ocn'] \
+ and not @rc['omit']['ocn'].nil?) \
+ or listed?('ocn')
+ :off
+ else
+ :na
+ end
+ end
+ def toc?
+ if (defined? @rc['omit']['toc'] \
+ and not @rc['omit']['toc'].nil?) \
+ or listed?('toc')
+ :off
+ else
+ :na
+ end
+ end
+ def manifest?
+ if (defined? @rc['omit']['manifest'] \
+ and not @rc['omit']['manifest'].nil?) \
+ or listed?('manifest')
+ :off
+ else
+ :na
+ end
+ end
+ def links_to_manifest?
+ flag=if (defined? @rc['omit']['links_to_manifest'] \
+ and not @rc['omit']['links_to_manifest'].nil?) \
+ or (listed?('links_to_manifest') \
+ || listed?('manifest_links'))
+ :off
+ else
+ :na
+ end
+ end
+ def metadata?
+ if (defined? @rc['omit']['metadata'] \
+ and not @rc['omit']['metadata'].nil?) \
+ or listed?('metadata')
+ :off
+ else
+ :na
+ end
+ end
+ def minitoc?
+ flag=if (defined? @rc['omit']['minitoc'] \
+ and not @rc['omit']['minitoc'].nil?) \
+ or (listed?('minitoc'))
+ :off
+ else
+ :na
+ end
+ end
+ def manifest_minitoc?
+ flag=if (defined? @rc['omit']['manifest_minitoc'] \
+ and not @rc['omit']['manifest_minitoc'].nil?) \
+ or listed?('manifest_minitoc')
+ :off
+ else
+ :na
+ end
+ end
+ def html_minitoc?
+ flag=if (defined? @rc['omit']['html_minitoc'] \
+ and not @rc['omit']['html_minitoc'].nil?) \
+ or (listed?('html_minitoc') \
+ || listed?('minitoc'))
+ :off
+ else
+ :na
+ end
+ end
+ def html_navigation?
+ flag=if (defined? @rc['omit']['html_navigation'] \
+ and not @rc['omit']['html_navigation'].nil?) \
+ or listed?('html_navigation')
+ :off
+ else
+ :na
+ end
+ end
+ def html_navigation_bar?
+ flag=if (defined? @rc['omit']['html_navigation_bar'] \
+ and not @rc['omit']['html_navigation_bar'].nil?) \
+ or listed?('html_navigation_bar')
+ :off
+ else
+ :na
+ end
+ end
+ def segsubtoc?
+ flag=if (defined? @rc['omit']['segsubtoc'] \
+ and not @rc['omit']['segsubtoc'].nil?) \
+ or listed?('segsubtoc')
+ :off
+ else
+ :na
+ end
+ end
+ def html_right_pane?
+ flag=if (defined? @rc['omit']['html_right_pane'] \
+ and not @rc['omit']['html_right_pane'].nil?) \
+ or listed?('html_right_pane')
+ :off
+ else
+ :na
+ end
+ end
+ def html_top_band?
+ flag=if (defined? @rc['omit']['html_top_band'] \
+ and not @rc['omit']['html_top_band'].nil?) \
+ or listed?('html_top_band')
+ :off
+ else
+ :na
+ end
+ end
+ def search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
+ flag=if (defined? @rc['omit']['search_form'] \
+ and not @rc['omit']['search_form'].nil?) \
+ or listed?('search_form')
+ :off
+ else
+ :na
+ end
+ end
+ def html_search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
+ flag=if (defined? @rc['omit']['html_search_form'] \
+ and not @rc['omit']['html_search_form'].nil?) \
+ or listed?('html_search_form')
+ :off
+ else
+ :na
+ end
+ end
+ self
+ end
def odt_ocn?
((defined? @rc['odt']['ocn']) \
&& @rc['odt']['ocn']==true) \
@@ -1208,9 +1375,9 @@ module SiSU_Env
: false
end
def widget #needs (md) #move
- @rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
- @ad=SiSU_Env::Get_init.instance.ads
- @vz=SiSU_Env::Get_init.instance.skin
+ @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
+ @ad=SiSU_Env::GetInit.instance.ads
+ @vz=SiSU_Env::GetInit.instance.skin
@flag={ ad: false, md: false, sk: false, rc: false }
def promo?
@flag[:ad]=if @md.flag_promo && @ad[:flag_promo]
@@ -1283,7 +1450,7 @@ module SiSU_Env
end
end
def search_form(type='sisusearch',action=nil,db=nil,table=false)
- rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
+ rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
create_form_sisu=if action \
and db \
and action =~/https?:\/\// \
@@ -1339,7 +1506,7 @@ WOK
form
end
def search_form_static(action=nil,db=nil)
- rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
+ rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
create_form=if rc['search']['sisu']['flag']==true \
and action \
and db \
@@ -1387,8 +1554,8 @@ WOK
self
end
def widget_static
- @rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
- @vz=SiSU_Env::Get_init.instance.skin
+ @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
+ @vz=SiSU_Env::GetInit.instance.skin
@flag={ ad: false, md: false, sk: false, rc: false }
def search?
flag=if defined? @rc['search'] \
@@ -1435,7 +1602,7 @@ WOK
end
end
def search_form(action=nil,db=nil)
- rc=SiSU_Env::Get_init.instance.sisu_yaml.rc
+ rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
create_form=if defined? rc['search']['sisu']['flag'] \
and rc['search']['sisu']['flag']==true \
and action \
@@ -1584,7 +1751,12 @@ WOK
end
end
def default_output_css
- if @env.output_dir_structure.by_language_code?
+ if (@md.opt.opt_act[:dump][:bool] \
+ && @md.opt.opt_act[:dump][:inst]) \
+ || (@md.opt.opt_act[:redirect][:bool] \
+ && @md.opt.opt_act[:redirect][:inst])
+ './'
+ elsif @env.output_dir_structure.by_language_code?
'../../'
elsif @env.output_dir_structure.by_filetype?
'../'
@@ -1626,7 +1798,7 @@ WOK
@sys.home
end
def sisurc_path
- Get_init.instance.sisu_yaml.rc_path
+ GetInit.instance.sisu_yaml.rc_path
end
def pwd
@sys.pwd
@@ -1680,7 +1852,14 @@ WOK
defaults[:sisu_share]
end
def style
- defaults[:stylesheet_stub]
+ if (@md.opt.opt_act[:dump][:bool] \
+ && @md.opt.opt_act[:dump][:inst]) \
+ || (@md.opt.opt_act[:redirect][:bool] \
+ && @md.opt.opt_act[:redirect][:inst])
+ 'css'
+ else
+ defaults[:stylesheet_stub]
+ end
end
def sample_data #sample data repository source directory
defaults[:sample_data_path]
@@ -1689,7 +1868,7 @@ WOK
@sys.rc_path
end
def yamlrc
- Get_init.instance.sisu_yaml.rc_path
+ GetInit.instance.sisu_yaml.rc_path
end
def man #check use
(defined? @rc['webserv']['man']) \
@@ -2437,7 +2616,7 @@ WOK
elsif conf; @rc['default']['language'] #3 config: from sisurc.yaml
else defaults[:language] #4 sisu: program default
end #1 document: param gets
- SiSU_Env::Standardise_language.new(l)
+ SiSU_Env::StandardiseLanguage.new(l)
end
#def multilingual
# x=(defined? @rc['output_structure']['multilingual'] \
@@ -2511,7 +2690,7 @@ WOK
end
if f_pod \
&& FileTest.file?(f_pod)
- tree=(SiSU_Env::System_call.new.program_found?('tree')) \
+ tree=(SiSU_Env::SystemCall.new.program_found?('tree')) \
? "tree #{processing_path.processing}/sisupod"
: ''
if FileTest.directory?(processing_path.processing)
@@ -2541,10 +2720,10 @@ WOK
sisupod_processing_path
end
end
- class Info_processing_flag
+ class InfoProcessingFlag
attr_accessor :color,:cf_0,:cf_1,:cf_2,:cf_3,:cf_4,:cf_5
def initialize
- @rc=Get_init.instance.sisu_yaml.rc
+ @rc=GetInit.instance.sisu_yaml.rc
end
def color #processing flag shortcuts
(defined? @rc['flag']['color']) ? @rc['flag']['color'] : false
@@ -2554,7 +2733,7 @@ WOK
and not (@rc['flag']['default'].nil? \
or @rc['flag']['default'].empty?)
@rc['flag']['default']
- else '-NQhewpotbxXyYv'
+ else '-NQhewpotbxXdyYv'
end
end
def cf_1 #processing flag shortcuts
@@ -2570,7 +2749,7 @@ WOK
and not (@rc['flag']['ii'].nil? \
or @rc['flag']['ii'].empty?)
@rc['flag']['ii']
- else '-NQhewpotbxXy'
+ else '-NQhewpotbxXdy'
end
end
def cf_3 #processing flag shortcuts
@@ -2578,7 +2757,7 @@ WOK
and not (@rc['flag']['iii'].nil? \
or @rc['flag']['iii'].empty?)
@rc['flag']['iii']
- else '-NQhewpotbxXyY'
+ else '-NQhewpotbxXdyY'
end
end
def cf_4 #processing flag shortcuts
@@ -2586,7 +2765,7 @@ WOK
and not (@rc['flag']['iv'].nil? \
or @rc['flag']['iv'].empty?)
@rc['flag']['iv']
- else '-NQhewpotbxXDyY --update'
+ else '-NQhewpotbxXdDyY --update'
end
end
def cf_5 #processing flag shortcuts
@@ -2594,11 +2773,11 @@ WOK
and not (@rc['flag']['v'].nil? \
or @rc['flag']['v'].empty?)
@rc['flag']['v']
- else '-NQhewpotbxXDyYv --update'
+ else '-NQhewpotbxXdDyYv --update'
end
end
end
- class Info_settings < Info_env
+ class InfoSettings < InfoEnv
def permission?(prog) #program defaults
(defined? @rc['permission_set'][prog]) \
? @rc['permission_set'][prog]
@@ -2610,14 +2789,14 @@ WOK
: false
end
end
- class File_map < Info_env
+ class FileMap < InfoEnv
attr_accessor :local_sisu_source
def initialize(opt='') #watch / REVIEW
super()
@opt=opt #,opt.fns,opt.cmd
@env=(@opt.fns && !(@opt.fns.empty?) \
- ? (SiSU_Env::Info_env.new(@opt.fns))
- : (SiSU_Env::Info_env.new('dummy.sst')))
+ ? (SiSU_Env::InfoEnv.new(@opt.fns))
+ : (SiSU_Env::InfoEnv.new('dummy.sst')))
if @opt.cmd =~/m/; @md=SiSU_Param::Parameters.new(@opt).get
end
ft=[]
@@ -2735,19 +2914,21 @@ WOK
: @source_path
end
end
- class Clean_output
+ class CleanOutput
require 'fileutils'
include FileUtils::Verbose
def initialize(opt)
@opt=opt
- z=File_map.new(@opt)
+ z=SiSU_Env::FileMap.new(@opt)
@zap=z.local_sisu_source
if @opt.cmd =~ /[hH]/
@zap=Dir.glob(@zap).join(' ')
- if @opt.cmd !~ /w/; @zap.gsub!(/#{@source_path}\/concordance.html/,'')
+ @zap=if @opt.cmd !~ /w/
+ @zap.gsub(/#{@source_path}\/concordance.html/,'')
+ else @zap
end
end
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def zap
def main_output
@@ -2781,11 +2962,11 @@ WOK
self
end
end
- class Info_remote_host
+ class InfoRemoteHost
def initialize
- @rc=Get_init.instance.sisu_yaml.rc
+ @rc=GetInit.instance.sisu_yaml.rc
end
- def remote_host #see Info_remote remote_host_base_general
+ def remote_host #see InfoRemote remote_host_base_general
r=[]
r=if (defined? @rc['remote'] \
and @rc['remote'].class==Array)
@@ -2829,48 +3010,48 @@ WOK
end
def rhost
def r1
- (defined? SiSU_Env::Info_remote_host.new.remote_host[0][:name]) \
- ? (SiSU_Env::Info_remote_host.new.remote_host[0][:name])
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[0][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[0][:name])
: nil
end
def r2
- (defined? SiSU_Env::Info_remote_host.new.remote_host[1][:name]) \
- ? (SiSU_Env::Info_remote_host.new.remote_host[1][:name])
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[1][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[1][:name])
: nil
end
def r3
- (defined? SiSU_Env::Info_remote_host.new.remote_host[2][:name]) \
- ? (SiSU_Env::Info_remote_host.new.remote_host[2][:name])
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[2][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[2][:name])
: nil
end
def r4
- (defined? SiSU_Env::Info_remote_host.new.remote_host[3][:name]) \
- ? (SiSU_Env::Info_remote_host.new.remote_host[3][:name])
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[3][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[3][:name])
: nil
end
def r5
- (defined? SiSU_Env::Info_remote_host.new.remote_host[4][:name]) \
- ? (SiSU_Env::Info_remote_host.new.remote_host[4][:name])
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[4][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[4][:name])
: nil
end
def r6
- (defined? SiSU_Env::Info_remote_host.new.remote_host[5][:name]) \
- ? (@ls + SiSU_Env::Info_remote_host.new.remote_host[5][:name])
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[5][:name]) \
+ ? (@ls + SiSU_Env::InfoRemoteHost.new.remote_host[5][:name])
: nil
end
self
end
end
- class Info_remote < File_map
+ class InfoRemote < FileMap
@@flag_remote=false
require 'socket'
def initialize(opt)
super(opt) #
@opt=opt
- @rc=Get_init.instance.sisu_yaml.rc
+ @rc=GetInit.instance.sisu_yaml.rc
end
def remote_host_base_general
- SiSU_Env::Info_remote_host.new.remote_host
+ SiSU_Env::InfoRemoteHost.new.remote_host
end
def remote_host_base
remote_host_base_general.each do |remote_conn|
@@ -2901,15 +3082,15 @@ WOK
and remote_gen !~/\/\//) \
and @@flag_remote==true \
and @opt.cmd !~/U/
- System_call.new(local_gen,remote_gen).scp
+ SiSU_Env::SystemCall.new(local_gen,remote_gen).scp
if FileTest.file?("#{local_src}/#{src_txt}")
- System_call.new("#{local_src}/#{src_txt}",remote_src).scp
+ SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src).scp
end
if FileTest.file?("#{local_pod}/#{src_pod}")
- System_call.new("#{local_src}/#{src_pod}",remote_pod).scp
+ SiSU_Env::SystemCall.new("#{local_src}/#{src_pod}",remote_pod).scp
end
if FileTest.file?("#{local_epub}/#{@opt.fnb}.epub")
- System_call.new("#{local_epub}/#{@opt.fnb}.epub",remote_epub,@opt.cmd).scp
+ SiSU_Env::SystemCall.new("#{local_epub}/#{@opt.fnb}.epub",remote_epub,@opt.cmd).scp
end
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
@@ -2936,7 +3117,7 @@ WOK
and @@flag_remote==true \
and @opt.cmd !~/U/
puts "begin scp_base: #{local} -> #{remote}"
- System_call.new("#{local}/#{@env.path.style}/",remote).scp
+ SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
puts "begin scp_base: #{local} -> #{remote}"
@@ -2954,9 +3135,9 @@ WOK
and @@flag_remote==true \
and @opt.cmd !~/U/
puts "begin scp_base_all: #{local} -> #{remote}"
- System_call.new("#{local}/_sisu/image_sys/",remote).scp
- System_call.new("#{local}/_sisu/image/",remote).scp
- System_call.new("#{local}/#{@env.path.style}/",remote).scp
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).scp
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).scp
+ SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
puts "scp_base_all: #{local} -> #{remote}"
@@ -2970,7 +3151,7 @@ WOK
self
end
def images_from_skin
- skin=Info_skin.new(@md).select
+ skin=SiSU_Env::InfoSkin.new(@md).select
skin_array=nil
skin_images_array=[]
if skin
@@ -2986,7 +3167,7 @@ WOK
skin_images_array
end
def rsync
- @f=SiSU_Env::SiSU_file.new(@md)
+ @f=SiSU_Env::FileOp.new(@md)
def document
self.remote_host_base.each do |remote_conn|
local_gen=@source_path
@@ -3001,7 +3182,7 @@ WOK
and remote_gen !~/\/\//) \
and @@flag_remote==true \
and @opt.cmd !~/U/
-# System_call.new("#{local_src}/#{src_txt}",remote_src,@opt.cmd).rsync
+# SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src,@opt.cmd).rsync
delete_extra_files='--delete' # '--delete-after'
inp=[]
if (@opt.cmd =~/h/ \
@@ -3108,13 +3289,13 @@ WOK
##create file structure without copying files?:
##rsync -av -f"+ */" -f"- *" @f.output_path.base.dir remote:./path/.
#local_dirs=%{-f"+ */" -f"- *" #{@f.output_path.base.dir}/*}
- #System_call.new(local_dirs,remote_gen,@opt.cmd).rsync
+ #SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
local=local_gen + ' ' + images + ' ' + images_skin + ' ' + images_system + ' ' + local_css
- System_call.new(local,remote_rel,@opt.cmd).rsync('--relative',@f.output_path.base.dir)
+ SiSU_Env::SystemCall.new(local,remote_rel,@opt.cmd).rsync('--relative',@f.output_path.base.dir)
rescue
p __LINE__.to_s + ':' + __FILE__
local_dirs=%{--include='*/' --exclude='*' #{@f.output_path.base.dir}}
- System_call.new(local_dirs,remote_gen,@opt.cmd).rsync
+ SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
end
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
@@ -3141,9 +3322,9 @@ WOK
and @rc['permission_set']['remote_base_site'] \
and @@flag_remote==true \
and @opt.cmd !~/U/
- System_call.new("#{image_sys}","#{remote_conf}").rsync
- System_call.new("#{images}","#{remote_conf}").rsync
- System_call.new("#{ldest}","#{remote}").rsync
+ SiSU_Env::SystemCall.new("#{image_sys}","#{remote_conf}").rsync
+ SiSU_Env::SystemCall.new("#{images}","#{remote_conf}").rsync
+ SiSU_Env::SystemCall.new("#{ldest}","#{remote}").rsync
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
puts "rsync_base: #{local} -> #{remote}"
@@ -3164,9 +3345,9 @@ WOK
and @opt.cmd !~/U/
delete_extra_files='--delete' # '--delete-after'
puts "begin rsync_base_sync: #{local} -> #{remote}"
- System_call.new("#{local}/_sisu/image_sys/",remote).rsync(delete_extra_files)
- System_call.new("#{local}/_sisu/image/",remote).rsync(delete_extra_files)
- System_call.new("#{local}/#{@env.path.style}/",remote).rsync(delete_extra_files)
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).rsync(delete_extra_files)
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).rsync(delete_extra_files)
+ SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).rsync(delete_extra_files)
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
puts "rsync_base_sync: #{local} -> #{remote}"
@@ -3185,7 +3366,7 @@ WOK
remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
if @@flag_remote
delete_extra_files='--delete' # '--delete-after'
- System_call.new(local,remote).rsync(delete_extra_files)
+ SiSU_Env::SystemCall.new(local,remote).rsync(delete_extra_files)
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
puts "rsync_sitemaps: #{local} -> #{remote}"
@@ -3199,7 +3380,7 @@ WOK
remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
if @@flag_remote
delete_extra_files='--delete' # '--delete-after'
- System_call.new(local,remote).rsync(delete_extra_files)
+ SiSU_Env::SystemCall.new(local,remote).rsync(delete_extra_files)
elsif @opt.cmd =~/U/
puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
puts "rsync_sitemaps: #{local} -> #{remote}"
@@ -3208,7 +3389,7 @@ WOK
end
end
end
- class Info_version <Info_env
+ class InfoVersion <InfoEnv
include Singleton
require 'rbconfig'
@@lib_path=nil
@@ -3226,11 +3407,11 @@ WOK
%x{ruby -v}.strip
end
end
- class Create_system_link #revisit problems created 2004w41
+ class CreateSystemLink #revisit problems created 2004w41
require 'fileutils'
include FileUtils::Verbose
def initialize
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def images
unless FileTest.directory?("#{@env.path.output}/_sisu")
@@ -3248,12 +3429,12 @@ WOK
#File.symlink("../../man/form", "#{@env.path.output}/man/pdf") unless File.symlink?("#{@env.path.output}/man/pdf")==true
end
end
- class Info_file <Info_env #todo unify with SiSU_file
+ class InfoFile <InfoEnv #todo unify with FileOp
def initialize(fns)
begin
super(fns)
@fns=fns
- @env=SiSU_Env::Info_env.new(@fns)
+ @env=SiSU_Env::InfoEnv.new(@fns)
m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm)$/ #watch added match for sss
@fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3]
rescue; STDERR.puts SiSU_Screen::Ansi.new(@fns,$!,$@).rescue
@@ -3314,7 +3495,7 @@ WOK
end
self
end
- def mkdir #check moved from SiSU_file, existing mkdir
+ 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)
@@ -3326,31 +3507,434 @@ WOK
end
end
end
- class SiSU_file <Info_file #todo unify with Create_file
- def initialize(md,fno='')
- begin
- @md,@fno=md,fno
- @env=SiSU_Env::Info_env.new(@md.fns)
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue
- ensure
+ class ProcessingSettings
+ def initialize(md)
+ @md=md
+ end
+ def cnf_rc #sisurc.yml
+ @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
+ end
+ def env_rc #env rc (including sisurc.yml)
+ @env_rc ||=SiSU_Env::InfoEnv.new(@md.fns)
+ end
+ def doc_rc #document rc, make instructions
+ @md.make
+ end
+ def cmd_rc #command-line rc
+ @cmd_rc=@md.opt.opt_act
+ end
+ def build
+ def ocn?
+ if cmd_rc[:ocn][:set]==:on
+ true
+ elsif cmd_rc[:ocn][:set]==:off
+ false
+ elsif @md.make.ocn? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ true
+ end
+ end
+ def toc?
+ if cmd_rc[:toc][:set]==:on
+ true
+ elsif cmd_rc[:toc][:set]==:off
+ false
+ elsif @md.make.toc? ==:off
+ false
+ elsif env_rc.build.toc? ==:off
+ false
+ else
+ true
+ end
+ end
+ def manifest?
+ if cmd_rc[:manifest][:set]==:on
+ true
+ elsif cmd_rc[:manifest][:set]==:off
+ false
+ elsif @md.make.manifest? ==:off
+ false
+ elsif env_rc.build.manifest? ==:off
+ false
+ else
+ true
+ end
+ end
+ def links_to_manifest?
+ if cmd_rc[:links_to_manifest][:set]==:on
+ true
+ elsif cmd_rc[:links_to_manifest][:set]==:off
+ false
+ elsif @md.make.links_to_manifest? ==:off
+ false
+ elsif env_rc.build.links_to_manifest? ==:off
+ false
+ else
+ true
+ end
+ end
+ def metadata?
+ if cmd_rc[:metadata][:set]==:on
+ true
+ elsif cmd_rc[:metadata][:set]==:off
+ false
+ elsif @md.make.metadata? ==:off
+ false
+ elsif env_rc.build.metadata? ==:off
+ false
+ else
+ true
+ end
+ end
+ def minitoc?
+ if html_top_band? == false #one form of navigation necessary
+ true
+ elsif cmd_rc[:minitoc][:set]==:on
+ true
+ elsif cmd_rc[:minitoc][:set]==:off
+ false
+ elsif @md.make.minitoc? ==:off
+ false
+ elsif env_rc.build.minitoc? ==:off
+ false
+ else
+ true
+ end
+ end
+ def manifest_minitoc?
+ if html_top_band? == false #one form of navigation necessary
+ true
+ elsif cmd_rc[:manifest_minitoc][:set]==:on \
+ || cmd_rc[:minitoc][:set]==:on
+ true
+ elsif cmd_rc[:manifest_minitoc][:set]==:off \
+ || cmd_rc[:minitoc][:set]==:off
+ false
+ elsif @md.make.manifest_minitoc? ==:off \
+ || @md.make.minitoc? ==:off
+ false
+ elsif env_rc.build.manifest_minitoc? ==:off \
+ || env_rc.build.minitoc? ==:off
+ false
+ elsif minitoc? == false
+ false
+ else
+ true
+ end
+ end
+ def html_minitoc?
+ if html_top_band? == false #one form of navigation necessary
+ true
+ elsif cmd_rc[:html_minitoc][:set]==:on \
+ || cmd_rc[:minitoc][:set]==:on
+ true
+ elsif cmd_rc[:html_minitoc][:set]==:off \
+ || cmd_rc[:minitoc][:set]==:off
+ false
+ elsif @md.make.html_minitoc? ==:off \
+ || @md.make.minitoc? ==:off
+ false
+ elsif env_rc.build.html_minitoc? ==:off \
+ || env_rc.build.minitoc? ==:off
+ false
+ elsif minitoc? == false
+ false
+ else
+ true
+ end
+ end
+ def html_top_band?
+ if cmd_rc[:html_top_band][:set]==:on
+ true
+ elsif cmd_rc[:html_top_band][:set]==:off
+ false
+ elsif @md.make.html_top_band? ==:off
+ false
+ elsif env_rc.build.html_top_band? ==:off
+ false
+ else
+ true
+ end
end
+ def html_navigation?
+ if cmd_rc[:html_navigation][:set]==:on
+ true
+ elsif cmd_rc[:html_navigation][:set]==:off
+ false
+ elsif @md.make.html_navigation? ==:off
+ false
+ elsif env_rc.build.html_navigation? ==:off
+ false
+ else
+ true
+ end
+ end
+ def html_navigation_bar?
+ if cmd_rc[:html_navigation_bar][:set]==:on
+ true
+ elsif cmd_rc[:html_navigation_bar][:set]==:off
+ false
+ elsif @md.make.html_navigation_bar? ==:off
+ false
+ elsif env_rc.build.html_navigation_bar? ==:off
+ false
+ else
+ true
+ end
+ end
+ def search_form?
+ if cmd_rc[:search_form][:set]==:on
+ true
+ elsif cmd_rc[:search_form][:set]==:off
+ false
+ elsif @md.make.search_form? ==:off
+ false
+ elsif env_rc.build.search_form? ==:off
+ false
+ else
+ true
+ end
+ end
+ def html_search_form?
+ if cmd_rc[:html_search_form][:set]==:on \
+ || cmd_rc[:search_form][:set]==:on
+ true
+ elsif cmd_rc[:html_search_form][:set]==:off \
+ || cmd_rc[:search_form][:set]==:off
+ false
+ elsif @md.make.html_search_form? ==:off \
+ || @md.make.search_form? ==:off
+ false
+ elsif env_rc.build.html_search_form? ==:off \
+ || env_rc.build.search_form? ==:off
+ false
+ elsif search_form? == false
+ false
+ else
+ true
+ end
+ end
+ def html_right_pane?
+ if cmd_rc[:html_right_pane][:set]==:on
+ true
+ elsif cmd_rc[:html_right_pane][:set]==:off
+ false
+ elsif @md.make.html_right_pane? ==:off
+ false
+ elsif env_rc.build.html_right_pane? ==:off
+ false
+ else
+ true
+ end
+ end
+ def segsubtoc?
+ if cmd_rc[:segsubtoc][:set]==:on
+ true
+ elsif cmd_rc[:segsubtoc][:set]==:off
+ false
+ elsif @md.make.segsubtoc? ==:off
+ false
+ elsif env_rc.build.segsubtoc? ==:off
+ false
+ else
+ true
+ end
+ end
+ self
end
def output_dir_structure
def by_language_code?
- @env.output_dir_structure.by_language_code?
+ env_rc.output_dir_structure.by_language_code?
end
def by_filetype?
- @env.output_dir_structure.by_filetype?
+ env_rc.output_dir_structure.by_filetype?
end
def by_filename?
- @env.output_dir_structure.by_filename?
+ env_rc.output_dir_structure.by_filename?
end
def multilingual?
- @env.output_dir_structure.by_language_code?
- #by_language_code?
+ by_language_code?
+ end
+ def dump?
+ ((cmd_rc[:dump][:bool] \
+ && cmd_rc[:dump][:inst]) \
+ || (env_rc.output_dir_structure.dump?)) \
+ ? true
+ : false
+ end
+ def redirect?
+ ((cmd_rc[:redirect][:bool] \
+ && cmd_rc[:redirect][:inst]) \
+ || (env_rc.output_dir_structure.redirect?)) \
+ ? true
+ : false
+ end
+ def dump_or_redirect?
+ ((dump?) || (redirect?)) \
+ ? true
+ : false
+ end
+ def by?
+ if dump?
+ :dump
+ elsif redirect?
+ :redirect
+ elsif by_language_code?
+ :language
+ elsif by_filetype?
+ :filetype
+ elsif by_filename?
+ :filename
+ else #recheck current default
+ :language
+ end
end
self
end
+ end
+ class InfoDb < InfoEnv
+ @@rc=nil
+ def initialize
+ @@pwd ||=Dir.pwd
+ @pwd=Dir.pwd
+ @env=SiSU_Env::InfoEnv.new
+ pt=Pathname.new(@pwd)
+ r=Px[:lng_lst].join('|')
+ u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
+ @pwd_stub=pt.realpath.to_s[u,1]
+ @rc=@@rc ||=GetInit.instance.sisu_yaml.rc
+ @defaults=SiSU_Env::InfoEnv.new.defaults
+ end
+ def share_source?
+ ((defined? @rc['db']['share_source']) \
+ && @rc['db']['share_source']==true) \
+ ? @rc['db']['share_source']
+ : false
+ end
+ def engine
+ def default
+ ((defined? @rc['db']['engine']['default']) \
+ && @rc['db']['engine']['default']=~/postgresql|sqlite/) \
+ ? @rc['db']['engine']['default']
+ : 'sqlite'
+ end
+ self
+ end
+ def psql
+ def user
+ ((defined? @rc['db']['postgresql']['user']) \
+ && @rc['db']['postgresql']['user']=~/\S+/) \
+ ? @rc['db']['postgresql']['user']
+ : @env.user
+ end
+ def db #db_name
+ "#{Db[:name_prefix]}#{@pwd_stub}"
+ end
+ def port #PGPORT
+ ((defined? @rc['db']['postgresql']['port']) \
+ && ( @rc['db']['postgresql']['port'] =~/\d+/ \
+ || @rc['db']['postgresql']['port'].class==Fixnum)) \
+ ? @rc['db']['postgresql']['port']
+ : (@defaults[:postgresql_port])
+ end
+ def password
+ ((defined? @rc['db']['postgresql']['password']) \
+ && @rc['db']['postgresql']['password']=~/\S+/) \
+ ? @rc['db']['postgresql']['password']
+ : ''
+ end
+ def host
+ ((defined? @rc['db']['postgresql']['host']) \
+ && @rc['db']['postgresql']['host']=~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
+ ? @rc['db']['postgresql']['host']
+ : ''
+ end
+ def dbi
+ (psql.host =~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
+ ? "DBI:Pg:database=#{psql.db};host=#{psql.host};port=#{psql.port}"
+ : "DBI:Pg:database=#{psql.db};port=#{psql.port}"
+ end
+ def conn_dbi
+ DBI.connect(psql.dbi,psql.user,psql.db)
+ end
+ self
+ end
+ def mysql
+ def db
+ #"#{Db[:name_prefix]}#{@pwd_stub}"
+ end
+ def port
+ '**'
+ end
+ def dbi
+ "dbi:Mysql:database=#{mysql.db};port=#{mysql.port}"
+ end
+ self
+ end
+ def sqlite
+ def db
+ "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
+ end
+ def db_discreet(md)
+ # "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
+ end
+ def dbi
+ "DBI:SQLite3:#{sqlite.db}" #sqlite3 ?
+ end
+ def sqlite3
+ sqlite.db #sqlite3 ?
+ end
+ def conn_dbi
+ DBI.connect(sqlite.dbi)
+ end
+ def conn_sqlite3
+ SQLite3::Database.new(sqlite.sqlite3)
+ end
+ self
+ end
+ end
+ class DbOp <InfoDb
+ def initialize(md)
+ begin
+ @md=md
+ rescue; STDERR.puts SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue
+ ensure
+ end
+ end
+ def sqlite_discreet
+ def db
+ "#{@md.file.output_path.sqlite_discreet.dir}/#{@md.file.base_filename.sqlite_discreet}"
+ end
+ def dbi
+ "DBI:SQLite3:#{sqlite_discreet.db}"
+ end
+ def sqlite3
+ sqlite_discreet.db
+ end
+ def conn_dbi
+ DBI.connect(sqlite_discreet.dbi)
+ end
+ def conn_sqlite3
+ SQLite3::Database.new(sqlite_discreet.sqlite3)
+ end
+ self
+ end
+ end
+ class FileOp <InfoFile #todo unify with CreateFile
+ def initialize(md,fno='')
+ begin
+ @md,@fno=md,fno
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ rescue; STDERR.puts SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue
+ ensure
+ end
+ end
+ def output_dir_structure
+ ProcessingSettings.new(@md).output_dir_structure
+ end
def mkdir_initialize # not used but consider using
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}")
@@ -3400,7 +3984,8 @@ WOK
@@filename_html_scroll=File.new(p_fn,'w+')
end
def html_seg_index
- pth=(by_filename?) \
+ pth=((by_filename?) \
+ || (output_dir_structure.dump?)) \
? "#{output_path.html.dir}"
: "#{output_path.html.dir}/#{@md.fnb}"
fn=base_filename.html_seg_index
@@ -3409,7 +3994,8 @@ WOK
@@filename_html_index=File.new(p_fn,'w+')
end
def html_segtoc
- pth=(by_filename?) \
+ pth=((by_filename?) \
+ || (output_dir_structure.dump?)) \
? "#{output_path.html.dir}"
: "#{output_path.html.dir}/#{@md.fnb}"
fn=base_filename.html_segtoc
@@ -3597,6 +4183,15 @@ WOK
end
self
end
+ def sqlite_discreet
+ def dir
+ output_path.sqlite_discreet.dir + '/' + base_filename.sqlite_discreet
+ end
+ def rel
+ output_path.sqlite_discreet.rel + '/' + base_filename.sqlite_discreet
+ end
+ self
+ end
def hash_digest
def dir
output_path.hash_digest.dir + '/' + base_filename.hash_digest
@@ -3719,9 +4314,9 @@ WOK
def base_filename
def txt
ft='.txt'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'plain' + @md.lang_code_insert + ft
@@ -3729,9 +4324,9 @@ WOK
end
def html_scroll
ft='.html'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'scroll' + @md.lang_code_insert + ft
@@ -3739,7 +4334,7 @@ WOK
end
def html_seg_index
ft='.html'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
'index' + ft
else
'index' + @md.lang_code_insert + ft
@@ -3747,7 +4342,9 @@ WOK
end
def html_segtoc
ft='.html'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ @md.fnb + '.toc' + ft
+ elsif output_dir_structure.by_language_code?
'toc' + ft
else
'toc' + @md.lang_code_insert + ft
@@ -3755,7 +4352,7 @@ WOK
end
def html_book_index
ft='.html'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
'book_index' + ft
else
'book_index' + @md.lang_code_insert + ft
@@ -3763,7 +4360,9 @@ WOK
end
def html_concordance
ft='.html'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ @md.fnb + '.concordance' + ft
+ elsif output_dir_structure.by_language_code?
'concordance' + ft
else
'concordance' + @md.lang_code_insert + ft
@@ -3771,9 +4370,9 @@ WOK
end
def xhtml
ft= '.xhtml'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'scroll' + @md.lang_code_insert + ft
@@ -3781,7 +4380,7 @@ WOK
end
def epub
ft='.epub'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
else
@md.fnb + @md.lang_code_insert + ft
@@ -3789,9 +4388,9 @@ WOK
end
def odt
ft='.odt'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'opendocument' + @md.lang_code_insert + ft
@@ -3799,9 +4398,9 @@ WOK
end
def xml_sax
ft='.sax.xml'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'scroll' + @md.lang_code_insert + ft
@@ -3809,22 +4408,22 @@ WOK
end
def xml_dom
ft='.dom.xml'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'scroll' + @md.lang_code_insert + ft
end
end
def pdf_p
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + '.portrait.'
else 'portrait' + @md.lang_code_insert + '.'
end
end
def pdf_l
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + '.landscape.'
else 'landscape' + @md.lang_code_insert + '.'
end
@@ -3861,7 +4460,7 @@ WOK
end
def manpage
ft='1'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + '.' + ft
else
@md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
@@ -3869,7 +4468,7 @@ WOK
end
def info
ft='info'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + '.' + ft
else
@md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
@@ -3877,17 +4476,25 @@ WOK
end
def texinfo
ft='texinfo'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + '.' + ft
else
@md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
end
end
+ def sqlite_discreet
+ ft='.sql.db'
+ if output_dir_structure.by_language_code?
+ @md.fnb + ft
+ else
+ @md.fnb + @md.lang_code_insert + ft
+ end
+ end
def hash_digest
ft='.txt'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + '.hash_digest' + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'digest' + @md.lang_code_insert + ft
@@ -3895,9 +4502,9 @@ WOK
end
def sitemap
ft='.xml'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + '.sitemap' + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else
'sitemap' + @md.lang_code_insert + ft
@@ -3905,9 +4512,9 @@ WOK
end
def qrcode_title
ft='.title.png'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else #fix
'sisu_manifest' + @md.lang_code_insert + ft
@@ -3915,9 +4522,9 @@ WOK
end
def qrcode_md
ft='.md.png'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else #fix
'sisu_manifest' + @md.lang_code_insert + ft
@@ -3925,9 +4532,9 @@ WOK
end
def manifest_txt
ft='.txt'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else #fix
'sisu_manifest' + @md.lang_code_insert + ft
@@ -3935,9 +4542,11 @@ WOK
end
def manifest
ft='.html'
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ @md.fnb + '.manifest' + ft
+ elsif output_dir_structure.by_language_code?
@md.fnb + ft
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
@md.fnb + @md.lang_code_insert + ft
else #fix
'sisu_manifest' + @md.lang_code_insert + ft
@@ -3967,52 +4576,70 @@ WOK
@ft=ft
def dir
def abc
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.redirect?
+ "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
+ elsif output_dir_structure.dump?
+ @md.opt.opt_act[:dump][:inst]
+ elsif output_dir_structure.by_language_code?
"#{output_path.base.dir}/#{@md.opt.lng}/#{@ft}"
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
"#{output_path.base.dir}/#{@ft}"
else
"#{output_path.base.dir}/#{@md.fnb}"
end
end
def ab
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.redirect?
+ "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
+ elsif output_dir_structure.dump?
+ @md.opt.opt_act[:dump][:inst]
+ elsif output_dir_structure.by_language_code?
"#{output_path.base.dir}/#{@md.opt.lng}/#{@ft}"
else
"#{output_path.base.dir}/#{@ft}"
end
end
def ab_src
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.redirect?
+ "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
+ elsif output_dir_structure.dump?
+ @md.opt.opt_act[:dump][:inst]
+ elsif output_dir_structure.by_language_code?
"#{output_path.base.dir}/#{@ft}/#{@md.opt.lng}"
else
"#{output_path.base.dir}/#{@ft}"
end
end
def ab_pod
- "#{output_path.base.dir}/#{@ft}"
+ if output_dir_structure.redirect?
+ "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
+ elsif output_dir_structure.dump?
+ @md.opt.opt_act[:dump][:inst]
+ else
+ "#{output_path.base.dir}/#{@ft}"
+ end
end
self
end
def url
def abc
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{output_path.base.url}/#{@md.opt.lng}/#{@ft}"
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
"#{output_path.base.url}/#{@ft}"
else
"#{output_path.base.url}/#{@md.fnb}"
end
end
def ab
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{output_path.base.url}/#{@md.opt.lng}/#{@ft}"
else
"#{output_path.base.url}/#{@ft}"
end
end
def ab_src
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{output_path.base.url}/#{@ft}/#{@md.opt.lng}"
else
"#{output_path.base.url}/#{@ft}"
@@ -4025,30 +4652,32 @@ WOK
end
def rel
def abc
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{@md.opt.lng}/#{@ft}"
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
"#{@ft}"
else
"#{@md.fnb}"
end
end
def ab
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{@md.opt.lng}/#{@ft}"
else
"#{@ft}"
end
end
def ab_src
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ "."
+ elsif output_dir_structure.by_language_code?
"#{@ft}/#{@md.opt.lng}"
else
"#{@ft}"
end
end
def ab_pod
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{@ft}"
else
"#{@ft}"
@@ -4058,30 +4687,36 @@ WOK
end
def rel_sm
def abc
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{@md.opt.lng}/#{@ft}"
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
"#{@ft}"
else
"#{@md.fnb}"
end
end
def ab
- if @env.output_dir_structure.by_language_code?
- "#{@md.opt.lng}/#{@ft}"
- else
- "#{@ft}"
+ if output_dir_structure.dump_or_redirect?
+ '.'
+ elsif output_dir_structure.by_language_code? \
+ or output_dir_structure.by_filetype?
+ '../' + @ft
+ else '.'
end
end
def ab_src
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ '.'
+ elsif output_dir_structure.by_language_code?
"#{@ft}/#{@md.opt.lng}"
else
"#{@ft}"
end
end
def ab_pod
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ '.'
+ elsif output_dir_structure.by_language_code?
"../../#{@ft}/#{@md.opt.lng}"
else
"../#{@ft}"
@@ -4091,16 +4726,16 @@ WOK
end
def rcp
def abc
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{output_path.stub.rcp}/#{@md.opt.lng}/#{@ft}"
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
"#{output_path.stub.rcp}/#{@ft}"
else
"#{output_path.stub.rcp}/#{@md.fnb}"
end
end
def ab
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
"#{output_path.stub.rcp}/#{@md.opt.lng}/#{@ft}"
else
"#{output_path.stub.rcp}/#{@ft}"
@@ -4108,16 +4743,6 @@ WOK
end
self
end
- def rel_sm
- def ab
- if @env.output_dir_structure.by_language_code? \
- or @env.output_dir_structure.by_filetype?
- '../' + @ft
- else '.'
- end
- end
- self
- end
self
end
def output_path
@@ -4151,9 +4776,18 @@ WOK
end
self
end
+ def webserver_path
+ if output_dir_structure.dump?
+ @md.opt.opt_act[:dump][:inst]
+ elsif output_dir_structure.redirect?
+ @md.opt.opt_act[:redirect][:inst]
+ else
+ "#{@env.path.webserv}"
+ end
+ end
def base
def dir
- "#{@env.path.webserv}/#{@md.opt.f_pth[:pth_stub]}"
+ "#{webserver_path}/#{@md.opt.f_pth[:pth_stub]}"
end
def url
"#{@env.url.webserv}/#{@md.opt.f_pth[:pth_stub]}"
@@ -4313,9 +4947,11 @@ WOK
set_path(ft).rel_sm.ab
end
def rel_image
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ './image'
+ elsif output_dir_structure.by_language_code?
'../../_sisu/image'
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
'../_sisu/image'
else
'../_sisu/image'
@@ -4343,9 +4979,11 @@ WOK
set_path(ft).rel_sm.ab
end
def rel_image
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.dump_or_redirect?
+ './image'
+ elsif output_dir_structure.by_language_code?
'../../../_sisu/image'
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
'../../_sisu/image'
else
'../_sisu/image'
@@ -4377,9 +5015,9 @@ WOK
set_path(ft).rel_sm.ab
end
def rel_image
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
'../../_sisu/image'
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
'../_sisu/image'
else
'../_sisu/image'
@@ -4509,6 +5147,27 @@ WOK
end
self
end
+ def sqlite_discreet
+ def ft
+ 'sql'
+ end
+ def dir
+ set_path(ft).dir.ab
+ end
+ def url
+ set_path(ft).url.ab
+ end
+ def rel
+ set_path(ft).rel.ab
+ end
+ def rcp
+ set_path(ft).rcp.ab
+ end
+ def rel_sm
+ set_path(ft).rel_sm.ab
+ end
+ self
+ end
def hash_digest
def ft
'hashes'
@@ -4564,6 +5223,9 @@ WOK
def rcp
set_path(ft).rcp.abc
end
+ def rel_sm
+ set_path(ft).rel_sm.ab
+ end
self
end
def harvest
@@ -4583,9 +5245,9 @@ WOK
set_path(ft).rcp.ab
end
def rel_sm
- if @env.output_dir_structure.by_language_code?
+ if output_dir_structure.by_language_code?
''
- elsif @env.output_dir_structure.by_filetype?
+ elsif output_dir_structure.by_filetype?
''
else
''
@@ -4726,11 +5388,11 @@ WOK
self
end
end
- class Create_file <Info_env #todo unify with SiSU_file
+ class CreateFile <InfoEnv #todo unify with FileOp
def initialize(fns)
begin
super(fns)
- @env=SiSU_Env::Info_env.new(fns)
+ @env=SiSU_Env::InfoEnv.new(fns)
rescue; STDERR.puts SiSU_Screen::Ansi.new(@fns,$!,$@).rescue
ensure
end
@@ -4808,13 +5470,13 @@ WOK
File.new("#{@env.processing_path.texinfo}/#{@fnb}.texinfo",'w+')
end
end
- class Clear <Info_env #todo unify with SiSU_file
+ class Clear <InfoEnv #todo unify with FileOp
def initialize(cmd,fns,operation='')
@cmd=cmd
begin
super(fns)
- @env=SiSU_Env::Info_env.new(fns)
- ver=Info_version.instance
+ @env=SiSU_Env::InfoEnv.new(fns)
+ ver=InfoVersion.instance
if operation.class.inspect =~/SiSU_Param/
@md=operation
end
@@ -4838,127 +5500,27 @@ WOK
end
def param_instantiate
@cX||=SiSU_Screen::Ansi.new(@cmd)
- @@date=Info_date.new
+ @@date=SiSU_Env::InfoDate.new
@@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=@@yaml=@@yamladdr=nil
@@publisher='SiSU scribe'
end
end
- class Info_db < Info_env
- @@rc=nil
- def initialize
- @@pwd ||=Dir.pwd
- @pwd=Dir.pwd
- @env=SiSU_Env::Info_env.new
- #m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- #@pwd_stub=@pwd[m,1]
- pt=Pathname.new(@pwd)
- r=Px[:lng_lst].join('|')
- u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
- @pwd_stub=pt.realpath.to_s[u,1]
- @rc=@@rc ||=Get_init.instance.sisu_yaml.rc
- @defaults=Info_env.new.defaults
- end
- def share_source?
- ((defined? @rc['db']['share_source']) \
- && @rc['db']['share_source']==true) \
- ? @rc['db']['share_source']
- : false
- end
- def engine
- def default
- ((defined? @rc['db']['engine']['default']) \
- && @rc['db']['engine']['default']=~/postgresql|sqlite/) \
- ? @rc['db']['engine']['default']
- : 'sqlite'
- end
- self
- end
- def psql
- def user
- ((defined? @rc['db']['postgresql']['user']) \
- && @rc['db']['postgresql']['user']=~/\S+/) \
- ? @rc['db']['postgresql']['user']
- : @env.user
- end
- def db #db_name
- "#{Db[:name_prefix]}#{@pwd_stub}"
- end
- def port #PGPORT
- ((defined? @rc['db']['postgresql']['port']) \
- && ( @rc['db']['postgresql']['port'] =~/\d+/ \
- || @rc['db']['postgresql']['port'].class==Fixnum)) \
- ? @rc['db']['postgresql']['port']
- : (@defaults[:postgresql_port])
- end
- def password
- ((defined? @rc['db']['postgresql']['password']) \
- && @rc['db']['postgresql']['password']=~/\S+/) \
- ? @rc['db']['postgresql']['password']
- : ''
- end
- def host
- ((defined? @rc['db']['postgresql']['host']) \
- && @rc['db']['postgresql']['host']=~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
- ? @rc['db']['postgresql']['host']
- : ''
- end
- def dbi
- (psql.host =~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
- ? "DBI:Pg:database=#{psql.db};host=#{psql.host};port=#{psql.port}"
- : "DBI:Pg:database=#{psql.db};port=#{psql.port}"
- end
- def conn_dbi
- DBI.connect(psql.dbi,psql.user,psql.db)
- end
- self
- end
- def mysql
- def db
- #"#{Db[:name_prefix]}#{@pwd_stub}"
- end
- def port
- '**'
- end
- def dbi
- "dbi:Mysql:database=#{mysql.db};port=#{mysql.port}"
- end
- self
- end
- def sqlite
- def db
- "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
- end
- def dbi
- "DBI:SQLite3:#{sqlite.db}" #sqlite3 ?
- end
- def sqlite3
- sqlite.db #sqlite3 ?
- end
- def conn_dbi
- DBI.connect(sqlite.dbi)
- end
- def conn_sqlite3
- SQLite3::Database.new(sqlite.sqlite3)
- end
- self
- end
- end
- class Info_port < Info_env
+ class InfoPort < InfoEnv
def initialize
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def webrick
@env.url.webrick_port
end
end
- class Info_program < Info_env #revisit
+ class InfoProgram < InfoEnv #revisit
attr_accessor :editor,:wc,:tidy,:rexml,:pdflatex,:postgresql,:sqlite
def initialize
- prog=SiSU_Env::Info_env.new.program
+ prog=SiSU_Env::InfoEnv.new.program
@editor,@wc,@tidy,@rexml,@pdflatex,@postgresql,@sqlite=prog.text_editor,prog.wc,prog.tidy,prog.rexml,prog.pdflatex,prog.postgresql,prog.sqlite
end
end
- class Info_skin
+ class InfoSkin
def initialize(md=nil,skin=nil)
@md=md
@d_sk=if skin.class==String ; skin
@@ -4970,7 +5532,7 @@ WOK
@home,@pwd=ENV['HOME'],ENV['PWD']
m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
@pwd_stub=@pwd[m,1]
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
end
def select # skin loading logic here
load "#{SiSU_lib}/defaults.rb"
@@ -5016,7 +5578,7 @@ WOK
end
end
end
- class CSS_default
+ class CSS_Default
def html
'html.css'
end
@@ -5042,10 +5604,10 @@ WOK
'harvest.css'
end
end
- class CSS_select < Info_env
+ class CSS_Select < InfoEnv
def initialize(md)
@md=md
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new('',@md)
end
def html
css=if @md.doc_css \
@@ -5053,7 +5615,7 @@ WOK
"#{@md.doc_css}_html.css"
elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_html.css")
"#{@env.path.stub_pwd}_html.css"
- else CSS_default.new.html
+ else SiSU_Env::CSS_Default.new.html
end
end
def html_tables
@@ -5062,7 +5624,7 @@ WOK
"#{@md.doc_css}_html_tables.css"
elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_html_tables.css")
"#{@env.path.stub_pwd}_html_tables.css"
- else CSS_default.new.html_tables
+ else SiSU_Env::CSS_Default.new.html_tables
end
end
def xhtml
@@ -5071,7 +5633,7 @@ WOK
"#{@md.doc_css}_xhtml.css"
elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_xhtml.css")
"#{@env.path.stub_pwd}_xhtml.css"
- else CSS_default.new.xhtml
+ else SiSU_Env::CSS_Default.new.xhtml
end
end
def xml_sax
@@ -5080,7 +5642,7 @@ WOK
"#{@md.doc_css}_xml_sax.css"
elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_xml_sax.css")
"#{@env.path.stub_pwd}_xml_sax.css"
- else CSS_default.new.xml_sax
+ else SiSU_Env::CSS_Default.new.xml_sax
end
end
def xml_dom
@@ -5089,7 +5651,7 @@ WOK
"#{@md.doc_css}_xml_dom.css"
elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_xml_dom.css")
"#{@env.path.stub_pwd}_xml_dom.css"
- else CSS_default.new.xml_dom
+ else SiSU_Env::CSS_Default.new.xml_dom
end
end
def docbook_xml
@@ -5098,7 +5660,7 @@ WOK
"#{@md.doc_css}_xml_dom.css"
elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_docbook.css")
"#{@env.path.stub_pwd}_docbook.css"
- else CSS_default.new.docbook_xml
+ else SiSU_Env::CSS_Default.new.docbook_xml
end
end
def homepage
@@ -5107,16 +5669,16 @@ WOK
"#{@md.doc_css}_homepage.css"
elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_homepage.css")
"#{@env.path.stub_pwd}_homepage.css"
- else CSS_default.new.homepage
+ else SiSU_Env::CSS_Default.new.homepage
end
end
end
- class CSS_stylesheet
+ class CSS_Stylesheet
def initialize(md)
@md=md
- @css=CSS_select.new(@md)
- @env=SiSU_Env::Info_env.new
- @file=SiSU_Env::SiSU_file.new(@md)
+ @css=SiSU_Env::CSS_Select.new(@md)
+ @env=SiSU_Env::InfoEnv.new('',@md)
+ @file=SiSU_Env::FileOp.new(@md)
end
def html
%{ <link rel="stylesheet" href="#{@file.path_rel_links.html_scroll_css}#{@env.path.style}/#{@css.html}" type="text/css" />}
@@ -5143,15 +5705,15 @@ WOK
%{<?xml-stylesheet type="text/css" href="#{@file.path_rel_links.xml_css}#{@env.path.style}/#{@css.xml_dom}"?>}
end
end
- class Create_site < Info_env
+ class CreateSite < InfoEnv
require_relative 'css' # css.rb
include SiSU_Style
def initialize(cmd)
@cmd=cmd
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
@home,@pwd=ENV['HOME'],ENV['PWD'] #@pwd=Dir.pwd
- @rc=Get_init.instance.sisu_yaml.rc
- @vz=SiSU_Env::Get_init.instance.skin
+ @rc=GetInit.instance.sisu_yaml.rc
+ @vz=SiSU_Env::GetInit.instance.skin
@vz_home=SiSU_Viz::Home.new
end
def homepage
@@ -5203,7 +5765,7 @@ WOK
def cp_external_images
src="#{@env.processing_path.processing}/external_document/image"
dest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external"
- if FileTest.directory?(src)
+ if FileTest.directory?(src)
cp_images(src,dest)
end
end
@@ -5240,7 +5802,7 @@ WOK
end
else SiSU_Screen::Ansi.new(@cmd,"modify css is not set or is set to: false").warn if @cmd=~/[MV]/
end
- fn_css=SiSU_Env::CSS_default.new
+ fn_css=SiSU_Env::CSS_Default.new
css=SiSU_Style::CSS.new
path_style="#{@env.path.output}/#{@env.path.style}"
FileUtils::mkdir_p(path_style) unless FileTest.directory?(path_style)
diff --git a/lib/sisu/v3/termsheet.rb b/lib/sisu/v3/termsheet.rb
index aca9e00e..3ac2515b 100644
--- a/lib/sisu/v3/termsheet.rb
+++ b/lib/sisu/v3/termsheet.rb
@@ -70,7 +70,7 @@ def talent(termsheet,flag)
no_ocn='0' if flag =~/0/ #flag to request switch off of text object numbering
@@info=nil
@@info=termsheet.gsub(/(.+?)\.termsheet\.rb/,'../facility_data/\1.html')
- @env=SiSU_Env::Info_env.new
+ @env=SiSU_Env::InfoEnv.new
@dir_fd="#{@env.path.output}/facility_data"
FileUtils::mkdir_p(@dir_fd) unless FileTest.directory?(@dir_fd)==true
html_output=[]
@@ -130,7 +130,7 @@ if @proc =~ /^-?[wft]/
talent(termsheet,@proc)
end
end
-@env=SiSU_Env::Info_env.new
+@env=SiSU_Env::InfoEnv.new
@dir_fd="#{@env.path.output}/facility_data"
@url="#{@env.url.webserv}/facility_data"
@@report << %{\n#{@@cX.grey}See#{@@cX.off}: #{@@cX.blue}#{@dir_fd}/all.txt\t#{@dir_fd}/toc.html\t#{@dir_fd}/#{@@cX.off}\n\n#{@@cX.grey}See#{@@cX.off}: #{@@cX.blue}#{@url}/all.txt\t#{@url}/toc.html\t#{@url}/#{@@cX.off}\n\n}
diff --git a/lib/sisu/v3/texinfo.rb b/lib/sisu/v3/texinfo.rb
index 90810120..2496ce7a 100644
--- a/lib/sisu/v3/texinfo.rb
+++ b/lib/sisu/v3/texinfo.rb
@@ -63,7 +63,7 @@ module SiSU_TexInfo
include SiSU_Viz
#include Stamp ... needed removed arbitrarily 2005w05/1 (warnings about undefined flags)
require_relative 'texinfo_format' # texinfo_format.rb
- include SiSU_Texinfo_format
+ include SiSU_TexInfoFormat
@tex_file=[]
@@tabular="{tabular}"
@@table_pagebreak_counter,@@tex_endnote_call_counter,@@tex_table_flag,@@tex_counter,@@tex_column,@@tex_columns,@@counting=0,0,0,0,0,0,0
@@ -78,8 +78,8 @@ module SiSU_TexInfo
def initialize(opt)
@opt=opt
@md=SiSU_Param::Parameters.new(@opt).get
- @env=SiSU_Env::Info_env.new(@opt.fns)
- @vz=SiSU_Env::Get_init.instance.skin
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
+ @vz=SiSU_Env::GetInit.instance.skin
end
def directories
begin
@@ -107,7 +107,7 @@ module SiSU_TexInfo
tell
@md=SiSU_Param::Parameters.new(@opt).get
directories
- @marshalfile=SiSU_Env::Info_file.new(@opt.fns).marshal.dal_content
+ @marshalfile=SiSU_Env::InfoFile.new(@opt.fns).marshal.dal_content
if FileTest.file?(@marshalfile)==true
File.open(@marshalfile) { |f| @@tuned_file=Marshal.load(f)}
#tell.meta_verse_skipped if @opt.cmd =~/[vVM]/
@@ -116,84 +116,88 @@ module SiSU_TexInfo
SiSU_Metaverse.songsheet(tex_array)
end
tex_array=@@tuned_file
- Texinfo_make.new(@md,tex_array).songsheet
+ TeXinfoMake.new(@md,tex_array).songsheet
tex_array=''
rescue; STDERR.puts SiSU_Screen::Ansi.new(@opt.cmd,$!,$@).rescue
ensure
end
end
end
- class Texinfo_make
+ class TeXinfoMake
include SiSU_Param
- include SiSU_Texinfo_format
+ include SiSU_TexInfoFormat
@@tex_1='(?:.+?)+~' #?? debug
@@tabular="{tabular}"
@@tex_pattern_margin_number="\\\\marginpar.+?\s+"
def initialize(md,data)
@md,@data=md,data
- @env=SiSU_Env::Info_env.new(@md.fns)
- @vz=SiSU_Env::Get_init.instance.skin
- @f=SiSU_Env::SiSU_file.new(@md)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @f=SiSU_Env::FileOp.new(@md)
end
def songsheet
begin
- @data=pre
- @data=endnote
- @data=markup
- @data=tail
- output
+ data=@data
+ data=pre(data)
+ data=endnote(data)
+ data,head=markup(data)
+ objs_txt=tail(data)
+ doc_txt=[head,objs_txt]
+ output(doc_txt)
makeinfo #KEEP reinstate when fixed #%
place_info
rescue; STDERR.puts SiSU_Screen::Ansi.new(@md.opt.cmd,$!,$@).rescue
ensure
end
end
- def pre
- data=@data
+ def pre(data)
+ data_new=[]
data.each do |dob|
# DEBUG 2003w16 this is a kludge, because i could not get parameters
# from param, Sort out ... revert to more elegant solution
if dob.is =='table'
@@flag['tables']='y' # KLUDGE get from param
end
- dob.obj.gsub!(/<:p[bn]>/,'')
- dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1(\2 [linked to:] \3)')
- dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)\{(.+?)\}((?:https?|file):\/\/\S+)/,'\1(\2 [linked to:] \3)')
- do_mono=SiSU_Texinfo_format::Texinfo.new(@md,dob)
+ dob.obj=dob.obj.gsub(/<:p[bn]>/,'').
+ gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1(\2 [linked to:] \3)').
+ gsub(/(^|#{Mx[:gl_c]}|\s)\{(.+?)\}((?:https?|file):\/\/\S+)/,'\1(\2 [linked to:] \3)')
+ do_mono=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
dob.obj=do_mono.spec_char(dob.obj)
+ data_new << dob
end
- data
+ data_new
end
- def endnote
- data=@data
+ def endnote(data)
+ data_new=[]
data.each do |dob|
- if dob.of=~/para|block/
- dob.obj.gsub!(/\s*#{Mx[:en_a_o]}(?:\d+)\s+(.+?)#{Mx[:en_a_c]}/m,' @footnote{ \1} ')
- dob.obj.gsub!(/\s*#{Mx[:en_a_o]}(\*+)\s+(.+?)#{Mx[:en_a_c]}/m,' @footnote{ \1} ')
+ if dob.of==:para \
+ || dob.of==:block
+ dob.obj=dob.obj.gsub(/\s*#{Mx[:en_a_o]}(?:\d+)\s+(.+?)#{Mx[:en_a_c]}/m,' @footnote{ \1} ').
+ gsub(/\s*#{Mx[:en_a_o]}(\*+)\s+(.+?)#{Mx[:en_a_c]}/m,' @footnote{ \1} ')
end
- dob
+ data_new << dob
end
- data
+ data_new
end
def poem
- data=@data
+ data,data_new=@data,[]
@tex_file=[]
@@counting=0
data.each do |dob|
- if dob.is =='code'
+ if dob.is ==:code
@@flag['code']=true
@@counting=1
end
- if dob.is =='verse'
+ if dob.is ==:verse
@@flag['poem']=1
end
if @@flag['code']
if @@flag['code'] \
- and dob.obj =~ /#{Mx[:gr_o]}code[-_](?:end|close)#{Mx[:gr_c]}/ #watch change not tested 200501 #fix
+ && (dob.obj =~ /#{Mx[:gr_o]}code[-_](?:end|close)#{Mx[:gr_c]}/) #watch change not tested 200501 #fix
@@flag['code']=false
end
if @@flag['code'] \
- and dob.obj =~ /\S/
+ && (dob.obj =~ /\S/)
sub_array=dob.obj.dup
@@line_mode=sub_array.scan(/.+/)
Tune.code_lines(@@line_mode)
@@ -201,11 +205,11 @@ module SiSU_TexInfo
end
elsif @@flag['poem']==1
if @@flag['poem']==1 \
- and dob.obj =~ /#{Mx[:gr_o]}verse[-_](?:end|close)#{Mx[:gr_c]}/ #watch change not tested 200501 #fix
+ && (dob.obj =~ /#{Mx[:gr_o]}verse[-_](?:end|close)#{Mx[:gr_c]}/) #watch change not tested 200501 #fix
@@flag['poem']=0
end
if @@flag['poem']==1 \
- and dob.obj =~ /\S/
+ && (dob.obj =~ /\S/)
sub_array=dob.obj.dup
@@line_mode=sub_array.scan(/.+/)
Tune.code_lines(@@line_mode)
@@ -213,53 +217,58 @@ module SiSU_TexInfo
end
end
@tex_file << dob.obj
+ data_new << dob
end
+ data_new
end
def code_lines
- data=@data
+ data,data_new=@data,[]
data.each do |line|
- if line =~ /\S/ \
- and line !~ /#{Mx[:gr_o]}(code|verse).+/ #fix
- if @@flag['code']
- line.gsub!(/^\s*(.+)/m,"\\noindent \\marginpar\[left-text\]{\\begin{tiny}#{@@counting}\\end{tiny}}\\1\\")
+ if (line =~ /\S/) \
+ && (line !~ /#{Mx[:gr_o]}(code|verse).+/) #fix
+ line=if @@flag['code']
+ line.gsub(/^\s*(.+)/m,"\\noindent \\marginpar\[left-text\]{\\begin{tiny}#{@@counting}\\end{tiny}}\\1\\")
@@counting+=1 if @@flag['code']
- else line.gsub!(/(.+)/m,'\noindent\1')
+ else line.gsub(/(.+)/m,'\noindent\1')
end
end
+ data_new << line
end
end
def tables
- data=@data
+ data,data_new=@data,[]
@tex_file=[]
@@tableheader=0
data.each do |dob|
if dob.obj =~ /#{Mx[:tc_p]}|#{Mx[:gr_o]}T/ui #fix
- do_mono=SiSU_Texinfo_format::Texinfo.new(@md,dob)
+ do_mono=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
dob.obj=do_mono.longtable # using longtable latex package
end
@tex_file << dob.obj
+ data_new << dob
end
+ data_new
end
- def markup
- data=@data
+ def markup(data)
+ data_new=[]
@tex_file=[]
@row_break='\\\\\\'
@break_page="#{@row_break}\n#{@row_break} \n"
md={}
- @tex_file << SiSU_Texinfo_format::Texinfo.new(@md).head
- mono=SiSU_Texinfo_format::Texinfo.new(@md)
+ @tex_file << SiSU_TexInfoFormat::Texinfo.new(@md).head
+ mono=SiSU_TexInfoFormat::Texinfo.new(@md)
@tex_file << mono.topnode(@md.title.full)
texinfo_menu=[]
n_menu,n_submenu=0,0
@submenu,@subsubmenu={},{}
data.each do |dob|
- if dob.is =='heading' \
- and dob.ln.to_s =~ /^[1-3]$/
- toc=SiSU_Texinfo_format::Texinfo.new(@md,dob)
+ if dob.is ==:heading \
+ && (dob.ln.to_s =~ /^[1-3]$/)
+ toc=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
texinfo_menu << toc.menu
- elsif dob.is =='heading' \
- and dob.ln.to_s =~ /^[4-6]$/
- toc=SiSU_Texinfo_format::Texinfo.new(@md,dob)
+ elsif dob.is ==:heading \
+ && (dob.ln.to_s =~ /^[4-6]$/)
+ toc=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
texinfo_menu << toc.menu
case dob.ln
when 4
@@ -275,10 +284,12 @@ module SiSU_TexInfo
@subsubmenu[n_submenu] << toc.menu
end
else
- dob.obj.gsub!(/\s*(?:<:?br>|<br \/>)\s*/,"\n\n")
+ dob.obj=dob.obj.gsub(/\s*(?:<:?br>|<br \/>)\s*/,"\n\n")
end
+ data_new << dob
end
- texinfo_menu.compact!
+ data=data_new
+ texinfo_menu=texinfo_menu.compact
texinfo_menu << "* Dublin Core::"
@tex_file << texinfo_menu
@tex_file << "* Index::\n" +
@@ -286,85 +297,91 @@ module SiSU_TexInfo
"@c %% 5\n\n"
n_menu,n_submenu=0,0
@@do_submenu,@@do_subsubmenu=1,1
+ data_new=[]
data.each do |dob|
- mono=SiSU_Texinfo_format::Texinfo.new(@md,dob)
- if dob.is=='heading'
+ mono=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
+ if dob.is==:heading
case dob.ln
- when 1; mono.level1
- when 2; mono.level2
- when 3; mono.level3
+ when 1; dob=mono.level1
+ when 2; dob=mono.level2
+ when 3; dob=mono.level3
when 4;
- mono.level4
+ dob=mono.level4
n_menu+=1
@@do_submenu,@@do_subsubmenu=1,1
when 5;
n_submenu+=1
@@do_subsubmenu=1
if @@do_submenu==1
- menu=SiSU_Texinfo_format::Texinfo_txt.new(@md,dob,@submenu[n_menu])
+ menu=SiSU_TexInfoFormat::TeXinfoTxt.new(@md,dob,@submenu[n_menu])
dob.obj="#{menu.submenu}#{mono.level5.obj}"
@@do_submenu=0
- else mono.level5
+ else dob=mono.level5
end
when 6;
if @@do_submenu==1
- menu=SiSU_Texinfo_format::Texinfo_txt.new(@md,dob,@submenu[n_menu])
+ menu=SiSU_TexInfoFormat::TeXinfoTxt.new(@md,dob,@submenu[n_menu])
dob.obj="#{menu.subsubmenu}#{mono.level6.obj}"
@@do_subsubmenu=0
else
- mono.level6
+ dob=mono.level6
end
end
else
if dob.obj !~/\S/
dob.obj=nil
else
- if dob.is=='para' \
- and dob.obj !~/##{dob.ocn}/
+ if dob.is==:para \
+ && (dob.obj !~/##{dob.ocn}/)
dob.obj="#{dob.obj} ##{dob.ocn}"
end
end
end
#%case with endnotes
- dob.obj.gsub!(/\s*[0-8]\\+(\S+)?\s+/,' ') if dob.obj
- @tex_file << dob.obj if dob.obj and dob.is !~/structure|comment/ #sort exceptions
+ dob.obj=dob.obj.gsub(/\s*[0-8]\\+(\S+)?\s+/,' ') if dob.obj
+ data_new << dob
end
- data=@tex_file
+ [data_new, @tex_file]
end
def number_titles
- data=@data
+ data,data_new=@data,[]
@tex_file=[]
input=%{#{@md.markup}}[/(num_top\s*=\s*(\d?))?/m,2] # else default usually 4 # this was a bit of a trick required to pass nil to input if nothing matched... #puts input
num_top=input.to_i
t_no1=0; t_no2=0; t_no3=0; t_no4=0;
no1=num_top; no2=(num_top + 1); no3=(num_top + 2); no4=(num_top + 3);
data.each do |dob|
- if @md.markup =~ /num_top/i \
- and dob.obj !~ /#{Rx[:meta]}/
- if dob.obj =~ /^[1-6]\\+(?:~\S+)?\s*<!h-.+?-!>/ \
- and dob.obj !~ /<:\d-endnotes>/
- header=dob.obj[/<!h-(.+?)-!>/m, 1].gsub!(/-/m,'.')
- dob.obj.gsub!(/^(?:[1-6]\\+(?:~\S+)|<:([12356]|4-.+?-)>)\s*<!h-.+?-!>/,
+ if (@md.markup =~ /num_top/i) \
+ && (dob.obj !~ /#{Rx[:meta]}/)
+ if (dob.obj =~ /^[1-6]\\+(?:~\S+)?\s*<!h-.+?-!>/) \
+ && (dob.obj !~ /<:\d-endnotes>/)
+ header=dob.obj[/<!h-(.+?)-!>/m, 1].gsub(/-/m,'.')
+ dob.obj=dob.obj.gsub(/^(?:[1-6]\\+(?:~\S+)|<:([12356]|4-.+?-)>)\s*<!h-.+?-!>/,
"\\1 #{header} ")
end
elsif dob.obj=~ /<!h!>|<!h\d!>|<!h.+?!>|<!!h.+?!>/
if dob.obj=~ /<!h-.+?-!>/
- dob.obj.gsub!(/<!h-(.+?)-!>/,'\1 ')
+ dob.obj=dob.obj.gsub(/<!h-(.+?)-!>/,'\1 ')
end
end
@tex_file << dob.obj
end
- data=@tex_file
+ data_new << dob
end
- def tail
- data=@data
- tex=SiSU_Texinfo_format::Texinfo.new(@md)
- data << tex.dublincore
- data << tex.tail
+ def tail(data)
+ tex=SiSU_TexInfoFormat::Texinfo.new(@md)
+ objs_txt=[]
+ data.each do |dob|
+ if dob.obj \
+ && (dob.is !=:structure \
+ && dob.is !=:comment)
+ objs_txt << dob.obj if dob.obj
+ end
+ end
+ objs_txt << tex.dublincore << tex.tail
+ objs_txt
end
- def output
- data=@data
- data.compact!
+ def output(data)
filename_texinfo=%{#{@env.processing_path.texi}/#{@md.fnb}.texinfo}
file_texinfo=File.new(filename_texinfo,'w+')
puts filename_texinfo if @md.opt.cmd =~/M/
@@ -378,9 +395,9 @@ module SiSU_TexInfo
pwd=Dir.pwd
case sfx
when /(?:-|ssm\.)?sst$/
- @env=SiSU_Env::Info_env.new(@md.fns,@md.opt.cmd)
+ @env=SiSU_Env::InfoEnv.new(@md.fns,@md.opt.cmd)
Dir.chdir(@env.processing_path.texi)
- texinfo=SiSU_Env::System_call.new("#{fnb}.texinfo")
+ texinfo=SiSU_Env::SystemCall.new("#{fnb}.texinfo")
texinfo.makeinfo
end
Dir.chdir(pwd)
diff --git a/lib/sisu/v3/texinfo_format.rb b/lib/sisu/v3/texinfo_format.rb
index df9d2800..fa5390b6 100644
--- a/lib/sisu/v3/texinfo_format.rb
+++ b/lib/sisu/v3/texinfo_format.rb
@@ -56,7 +56,7 @@
** Description: texinfo formatting template
=end
-module SiSU_Texinfo_format
+module SiSU_TexInfoFormat
@@table_pg_break_counter=1
require_relative 'param' # param.rb
include SiSU_Param
@@ -74,31 +74,30 @@ module SiSU_Texinfo_format
p dob.class
p caller
end
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def head
t=Time.now
year=t.year
filename=%{#{@md.fns}}[/(.+?)\.\w\w\d\d$/,1]
title=spec_char(@md.title.full)
- title=title.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ")
- title.gsub!(/\$/,"\\$")
- title.gsub!(/[,]\s*/,' - ')
+ title=title.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ").
+ gsub(/\$/,"\\$").
+ gsub(/[,]\s*/,' - ')
if @md.title.sub
subtitle=spec_char(@md.title.sub)
- subtitle=subtitle.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ")
- subtitle.gsub!(/\$/,"\\$")
- subtitle.gsub!(/[,]\s*/,' - ')
+ subtitle=subtitle.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ").
+ gsub(/\$/,"\\$").
+ gsub(/[,]\s*/,' - ')
subtitle="@subtitle @value{VERSION}, @value{UPDATED}\n" #bugwatch
end
subtitle ||=''
author=@md.author if @md.author
author ||=''
- author.gsub!(/[\*]/,'') #if author
- v=SiSU_Env::Info_version.instance.get_version
+ author=author.gsub(/[\*]/,'') #if author
+ v=SiSU_Env::InfoVersion.instance.get_version
head =<<WOK
\\input texinfo @c -*-texinfo-*-
-@comment $Id$
@comment %**start of header
@setfilename #{@md.fnb}.info
@settitle #{title} @value{VERSION}
@@ -151,9 +150,9 @@ WOK
end
def topnode(txt)
txt=spec_char(txt)
- txt=txt.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ")
- txt.gsub!(/\$/,"\\$")
- txt.gsub!(/[,]\s*/,' - ')
+ txt=txt.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ").
+ gsub(/\$/,"\\$").
+ gsub(/[,]\s*/,' - ')
"@c %% 4\n" +
"@ifnottex\n" +
"@node Top\n" +
@@ -262,165 +261,154 @@ WOK
relation="Relation: #{relation}\n\n" if relation #dc
coverage="Coverage: #{coverage}\n\n" if coverage #dc
rights="Rights: #{rights}\n\n" if rights #dc
- "@node Dublin Core\n" +
- "@unnumbered Dublin Core\n" +
- "@cindex chapter, Dublin Core\n\n" +
- "#{full_title}" +
- "#{author}" +
- "#{subject}" +
- "#{description}" +
- "#{publisher}" +
- "#{contributor}" +
- "#{date}" +
- "#{date_created}" +
- "#{date_issued}" +
- "#{date_available}" +
- "#{date_valid}" +
- "#{date_modified}" +
- "#{format}" +
- "#{identifier}" +
- "#{source}" +
- "#{language}" +
- "#{relation}" +
- "#{coverage}" +
- "#{rights}" +
- "\n\n"
+ <<WOK
+@node Dublin Core
+@unnumbered Dublin Core
+@cindex chapter, Dublin Core
+
+#{full_title}#{author}#{subject}#{description}#{publisher}#{contributor}#{date}#{date_created}#{date_issued}#{date_available}#{date_valid}#{date_modified}#{format}#{identifier}#{source}#{language}#{relation}#{coverage}#{rights}
+
+WOK
end
def tail
- "@c %% 6\n" +
- "@node Index\n" +
- "@unnumbered Index\n" +
- "@printindex cp\n\n" +
- "@bye"
+ <<WOK
+@c %% 6
+@node Index
+@unnumbered Index
+@printindex cp
+
+@bye
+WOK
end
def clean(dob)
- if dob.is=='heading' \
+ if dob.is==:heading \
and dob.obj !~/##{dob.ocn}/
dob.obj="#{dob.obj} ##{dob.ocn}"
end
- dob.obj.gsub!(/<:#>/,'')
- dob.obj.strip!
+ dob.obj=dob.obj.gsub(/\n/m,' ').
+ gsub(/<:#>/,'').
+ gsub(/,\s+/,' - ').
+ strip
dob
end
def menu
dob=clean(@dob)
m=dob.obj
- m.gsub!(/[:,]\s*/,' - ')
- m.gsub!(/@footnote\{.+?\}\s+/,'')
+ m=m.gsub(/[:,]\s*/,' - ').
+ gsub(/@footnote\{.+?\}\s+/,'')
m="* #{m}::"
end
def level1
dob=clean(@dob)
nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{dob.obj}\n@cindex chapter, #{nd}\n"
+ dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
dob
end
def level2
dob=clean(@dob)
nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{dob.obj}\n@cindex chapter, #{nd}\n"
+ dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
dob
end
def level3
dob=clean(@dob)
nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{dob.obj}\n@cindex chapter, #{nd}\n"
+ dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
dob
end
def level4
dob=clean(@dob)
nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{dob.obj}\n@cindex chapter, #{nd}\n"
+ dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
dob
end
def level5
dob=clean(@dob)
nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{dob.obj}\n@cindex chapter, #{nd}\n"
+ dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
dob
end
def level6
dob=clean(@dob)
nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{dob.obj}\n@cindex chapter, #{nd}\n"
+ dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
dob
end
def submenu
@dob.obj=@dob.obj.join("\n")
- @dob.obj.gsub!(/[5]\\+~\S+/,'')
+ @dob.obj=@dob.obj.gsub(/[5]\\+~\S+/,'')
dob=clean(@dob)
- dob.obj="@menu\n#{dob.obj}\n@end menu\n\n"
- dob.obj.gsub!(/.+/m,"#{dob.obj}")
+ dob.obj="@menu\n#{dob.obj}\n@end menu\n\n".
+ gsub(/.+/m,"#{dob.obj}")
end
def subsubmenu
@dob.obj=@dob.obj.join("\n")
- @dob.obj.gsub!(/[6]\\+~\S+/,'')
+ @dob.obj=@dob.obj.gsub(/[6]\\+~\S+/,'')
dob=clean(@dob)
- dob.obj="@menu\n#{dob.obj}\n@end menu\n\n"
- dob.obj.gsub!(/.+/m,"#{dob.obj}")
+ dob.obj="@menu\n#{dob.obj}\n@end menu\n\n".
+ gsub(/.+/m,"#{dob.obj}")
end
def indent1
- @dob.obj.gsub!(/<:i1>(.*)/,'\1')
+ @dob.obj=@dob.obj.gsub(/<:i1>(.*)/,'\1')
end
def indent2
- @dob.obj.gsub!(/<:i2>(.*)/,'\1')
+ @dob.obj=@dob.obj.gsub(/<:i2>(.*)/,'\1')
end
def spec_char(txt) # special characters
- txt.gsub!(/#{Mx[:br_eof]}/i,'')
- txt.gsub!(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'(c)')
- txt.gsub!(/#{Mx[:gl_o]}#(?:lt|060)#{Mx[:gl_c]}/,'<'); txt.gsub!(/#{Mx[:gl_o]}(gt|#062)#{Mx[:gl_c]}/,'>')
- txt.gsub!(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'); txt.gsub!(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}')
- txt.gsub!(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
- txt.gsub!(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!')
- txt.gsub!(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#')
- txt.gsub!(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*')
- txt.gsub!(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/')
- txt.gsub!(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_')
- txt.gsub!(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\')
- txt.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n") # watch
- txt.gsub!(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ')
- #txt.gsub!(/\\/,'\\backslash ')
- txt.gsub!(/<:pb>/,'\\newpage')
- txt.gsub!(/\\backslash copyright/,'\\copyright ')
- txt.gsub!(/\^/,'\\wedge ')
- txt.gsub!(/(\$)/,"\\$")
- txt.gsub!(/\~/,'\\~')
- txt.gsub!(/#{Mx[:url_o]}(https?:\S+?)#{Mx[:url_c]}/,'<\1>')
- txt.gsub!(/#{Mx[:url_o]}_(https?:\S+?)#{Mx[:url_c]}/,'\1')
- txt.gsub!(/§/i,'\S')
- txt.gsub!(/£/i,'\pounds')
- txt.gsub!(/å/,'\aa'); txt.gsub!(/Å/,'\AA')
- txt.gsub!(/æ/,'\ae'); txt.gsub!(/Æ/,'\AE')
- txt.gsub!(/ø/,'\o'); txt.gsub!(/Ø/,'\O')
- txt.gsub!(/<a href=".+?">/i,' ')
- txt.gsub!(/<\/a>/i,' ')
- txt.gsub!(/<!>/i,' ')
- txt.gsub!(/#{Mx[:br_paragrph]}/i,'') #watch
- txt.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*\1*')
- txt.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/\1/')
- txt.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_\1_')
- txt.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'[\1]')
- txt.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^\1^')
- txt.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+\1+')
- txt.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"')
- txt.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'-\1-')
- txt.gsub!(/@/i,'@@')
- txt.gsub!(/\{/,'@{'); txt.gsub!(/\}/,'@}')
- txt.gsub!(/(?:&nbsp;|#{Mx[:nbsp]})+/,' ') # ~ character for hardspace
- txt.gsub!(/&(\S+?);/,' ')
- txt.gsub!(/&/,'<=and>')
- txt.gsub!(/(\s+&\s+)/,' and ')
- txt.gsub!(/(\&)/,"\\&")
- txt.gsub!(/"(.+?)"/,"`\\1'") # open & close "
- txt.gsub!(/\s+"/," `") # open "
- txt.gsub!(/^([1-6-]\\+(?:~\S+)?|<.+?>)?\s*"/,'\1`') # open "
- txt.gsub!(/"(\s|\.|,|:|;)/,"'\\1") # close "
- txt.gsub!(/"([1-6-]\\+(?:~\S+)?|<.+?>)?\s*$/,"'\\1") # close "
- txt.gsub!(/"(\.|,)/,"'") # close "
- txt.gsub!(/\s+'/," `") # open '
- txt.gsub!(/^([1-6-]\\+(?:~\S+)?|<.+?>)?\s*'/,'\1`') # open '
- txt.gsub!(/(<font.*?>|<\/font>)/,'')
- txt
+ txt=txt.gsub(/#{Mx[:br_eof]}/i,'').
+ gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'(c)').
+ gsub(/#{Mx[:gl_o]}#(?:lt|060)#{Mx[:gl_c]}/,'<').gsub(/#{Mx[:gl_o]}(gt|#062)#{Mx[:gl_c]}/,'>').
+ gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{').gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}').
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~').
+ 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]}#047#{Mx[:gl_c]}/,'/').
+ gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_').
+ gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\').
+ gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n"). # watch
+ gsub(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ').
+ #gsub(/\\/,'\\backslash ').
+ gsub(/<:pb>/,'\\newpage').
+ gsub(/\\backslash copyright/,'\\copyright ').
+ gsub(/\^/,'\\wedge ').
+ gsub(/(\$)/,"\\$").
+ gsub(/\~/,'\\~').
+ gsub(/#{Mx[:url_o]}(https?:\S+?)#{Mx[:url_c]}/,'<\1>').
+ gsub(/#{Mx[:url_o]}_(https?:\S+?)#{Mx[:url_c]}/,'\1').
+ gsub(/§/i,'\S').
+ gsub(/£/i,'\pounds').
+ gsub(/å/,'\aa').gsub(/Å/,'\AA').
+ gsub(/æ/,'\ae').gsub(/Æ/,'\AE').
+ gsub(/ø/,'\o').gsub(/Ø/,'\O').
+ gsub(/<a href=".+?">/i,' ').
+ gsub(/<\/a>/i,' ').
+ gsub(/<!>/i,' ').
+ gsub(/#{Mx[:br_paragrph]}/i,''). #watch
+ gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*\1*').
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/\1/').
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_\1_').
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'[\1]').
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^\1^').
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+\1+').
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'-\1-').
+ gsub(/@/i,'@@').
+ gsub(/\{/,'@{').gsub(/\}/,'@}').
+ gsub(/(?:&nbsp;|#{Mx[:nbsp]})+/,' '). # ~ character for hardspace
+ gsub(/&(\S+?);/,' ').
+ gsub(/&/,'<=and>').
+ gsub(/(\s+&\s+)/,' and ').
+ gsub(/(\&)/,"\\&").
+ gsub(/"(.+?)"/,"`\\1'"). # open & close "
+ gsub(/\s+"/," `"). # open "
+ gsub(/^([1-6-]\\+(?:~\S+)?|<.+?>)?\s*"/,'\1`'). # open "
+ gsub(/"(\s|\.|,|:|;)/,"'\\1"). # close "
+ gsub(/"([1-6-]\\+(?:~\S+)?|<.+?>)?\s*$/,"'\\1"). # close "
+ gsub(/"(\.|,)/,"'"). # close "
+ gsub(/\s+'/," `"). # open '
+ gsub(/^([1-6-]\\+(?:~\S+)?|<.+?>)?\s*'/,'\1`'). # open '
+ gsub(/(<font.*?>|<\/font>)/,'')
end
def longtable
@end_table="\\end{longtable}"
@@ -440,28 +428,28 @@ WOK
@colW=@colW.join
@@start_table="\\setlength{\\LTleft}{0pt}\n\\setlength{\\LTright}{\\fill}\n" +
"\\begin{longtable}[hb]#{@colW}\n"
- @dob.obj.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c\d+?;.+#{Mx[:gr_c]}/u,"#{@@start_table}") #fix
+ @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c\d+?;.+#{Mx[:gr_c]}/u,"#{@@start_table}") #fix
end
if @dob =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/ #fix
- @dob.obj.gsub!(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/," #{@end_table}") #fix
+ @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/," #{@end_table}") #fix
end
- @dob.obj.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}/u,'')
+ @dob.obj=@dob.obj.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}/u,'')
if @@tableheader==1
if @dob =~/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u
tablefoot=para[/\<!f(.+?)!\>/,1]
- @dob.obj.gsub!(/\<!f(.+?)!\>/,'')
- @dob.obj.gsub!(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,
- "{\\begin{tiny} {\\bfseries \\1}\\end{tiny}}&")
- @dob.obj.gsub!(/&>\s*$/,
- " #{@row_break} \\hline\\endhead #{@row_break}")
+ @dob.obj=@dob.obj.gsub(/\<!f(.+?)!\>/,'').
+ gsub(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,
+ "{\\begin{tiny} {\\bfseries \\1}\\end{tiny}}&").
+ gsub(/&>\s*$/,
+ " #{@row_break} \\hline\\endhead #{@row_break}")
@dob="#{@dob} \\multicolumn{#{@@number_of_cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n" if tablefoot
@@tableheader=0
@@number_of_cols=0
end
else
if @dob =~/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u
- @dob.obj.gsub!(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,"\\begin{tiny}\\1\\end{tiny}&")
- @dob.obj.gsub!(/&>\s*$/," #{@row_break}")
+ @dob.obj=@dob.obj.gsub(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,"\\begin{tiny}\\1\\end{tiny}&").
+ gsub(/&>\s*$/," #{@row_break}")
end
end
@dob
@@ -482,10 +470,10 @@ WOK
@colW << "p{#{col_w}cm}" if col_w
end
@@start_table="\\begin{tabular}{#{@colW}}\n"
- @dob.obj.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c\d+?;.+#{Mx[:gr_c]}/u,"#{@@start_table}") #fix
+ @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c\d+?;.+#{Mx[:gr_c]}/u,"#{@@start_table}") #fix
end
if @dob =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/ #fix
- @dob.obj.gsub!(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,"#{@end_table}") #fix
+ @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,"#{@end_table}") #fix
@@table_pg_break_counter=1
end
if @dob =~/#{Mx[:tc_o]}#{Mx[:tc_p]}/u
@@ -496,39 +484,39 @@ WOK
"#{@@start_table}\n"
@@table_pg_break_counter=1
else
- @dob.obj.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}/u,'')
+ @dob.obj=@dob.obj.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}/u,'')
@@table_pg_break_counter+=1
tablefoot=@dob[/\<!f(.+?)!\>/]
- @dob.obj.gsub!(/\<!f(.+?)!\>/,'')
+ @dob.obj=@dob.obj.gsub(/\<!f(.+?)!\>/,'')
end
end
if @dob =~/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u
- @dob.obj.gsub!(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,"\\begin{tiny}\\1\\end{tiny}&")
- @dob.obj.gsub!(/&>\s*$/,"#{@row_break}")
+ @dob.obj=@dob.obj.gsub(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,"\\begin{tiny}\\1\\end{tiny}&").
+ gsub(/&>\s*$/,"#{@row_break}")
end
@dob
end
def graphics
- dir=SiSU_Env::Info_env.new(@md.fns)
- @dob.obj.gsub!(/<::\s+(\S+?)\s+>/i, #watch
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
+ @dob.obj=@dob.obj.gsub(/<::\s+(\S+?)\s+>/i, #watch
"\\includegraphics*[width=11pt]{#{dir.path.image_source_include}/c_\\1.png}")
end
def image
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
width="100"
width=@dob[/<:image.+?width=``(\d+)''.+?>/im,1]
width=width.to_i*0.4
- @dob.obj.gsub!(/<:image\s+((?:https?|file|ftp)\S+)\s+(\S+)\s+.+\s+?>/i,
- "\\href{\\1}{\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/\\2}}")
- @dob.obj.gsub!(/<:image\s+(\S+)\s+.+\s+?>/i,
- "\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/\\1}")
+ @dob.obj=@dob.obj.gsub(/<:image\s+((?:https?|file|ftp)\S+)\s+(\S+)\s+.+\s+?>/i,
+ "\\href{\\1}{\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/\\2}}").
+ gsub(/<:image\s+(\S+)\s+.+\s+?>/i,
+ "\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/\\1}")
end
def png
# very messy clean up ! - work area, testing
z=@dob[/\\\{(.+?)\}(?:image|png)/,1] # match operator for z \\ fragile !
image,w,x,y=z.scan(/\S+/)
- image.gsub!(/\\/,'')
- @dob.obj.gsub!(/\\\{\S+\.(png|jpg|gif).+?\}(image|png)/,"<image #{image} not available>") # fragile match operator\\ fragile !
+ image=image.gsub(/\\/,'')
+ @dob.obj=@dob.obj.gsub(/\\\{\S+\.(png|jpg|gif).+?\}(image|png)/,"<image #{image} not available>") # fragile match operator\\ fragile !
end
def http
# very messy clean up ! - work area, testing
@@ -536,7 +524,7 @@ WOK
url=@dob[/((?:https?|file|ftp):\S+)/im,1]
if @dob =~/\.(png|jpg|gif)/
image,w,x,y=z.scan(/\S+/)
- image.gsub!(/\\/,'')
+ image=image.gsub(/\\/,'')
width=200
width=z[/w=(\d+)/im,1] if z =~/w=(\d+)/
width=width.to_i*0.8
@@ -545,41 +533,39 @@ WOK
caption="{\\\\\\\ \n\\begin{scriptsize}#{c}\\end{scriptsize}&}" if c
end
if image
- dir=SiSU_Env::Info_env.new(@md.fns)
- @dob.obj.gsub!(/#{Mx[:lnk_o]}\S+\.(png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/, # fragile match operator\\ fragile !
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
+ @dob.obj=@dob.obj.gsub(/#{Mx[:lnk_o]}\S+\.(png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/, # fragile match operator\\ fragile !
"\n\\href{#{url}}{\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/#{image}}}#{caption}")
else
link=z[/(.+?)\\/im,1]
- @dob.obj.gsub!(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+#{Mx[:url_c]}/,"\n\\noindent\\href{#{url}}{#{link}}") # fragile match operator\\ fragile !
+ @dob.obj=@dob.obj.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+#{Mx[:url_c]}/,"\n\\noindent\\href{#{url}}{#{link}}") # fragile match operator\\ fragile !
end
end
end
- class Texinfo_txt
+ class TeXinfoTxt
def initialize(md,dob,txt)
@md,@dob,@txt=md,dob,txt
end
def clean(dob,txt)
- if dob.is=='heading' \
+ if dob.is==:heading \
and txt !~/##{dob.ocn}/
txt="#{dob.obj} ##{dob.ocn}"
end
- txt.gsub!(/<:#>/,'')
- txt.strip!
- txt
+ txt=txt.gsub(/<:#>/,'').strip
end
def submenu
txt=@txt.join("\n")
- txt.gsub!(/[5]\\+~\S+/,'')
+ txt=txt.gsub(/[5]\\+~\S+/,'')
txt=clean(@dob,txt)
txt="@menu\n#{txt}\n@end menu\n\n"
- txt.gsub!(/.+/m,"#{txt}")
+ txt=txt.gsub(/.+/m,"#{txt}")
end
def subsubmenu
txt=@txt.join("\n")
- txt.gsub!(/[6]\\+~\S+/,'')
+ txt=txt.gsub(/[6]\\+~\S+/,'')
txt=clean(@dob,txt)
txt="@menu\n#{dob.obj}\n@end menu\n\n"
- txt.gsub!(/.+/m,"#{txt}")
+ txt=txt.gsub(/.+/m,"#{txt}")
end
end
end
diff --git a/lib/sisu/v3/texpdf.rb b/lib/sisu/v3/texpdf.rb
index 47005d16..f0fb6b99 100644
--- a/lib/sisu/v3/texpdf.rb
+++ b/lib/sisu/v3/texpdf.rb
@@ -72,7 +72,7 @@ module SiSU_TeX
@@tex_debug_counter=@@table_pagebreak_counter=@@tex_footnote_call_counter=@@tex_table_flag=@@tex_counter=@@tex_column=@@tex_columns=@@tex_columns=@@counting=0
@@tex_pattern_margin_number=/\\\\begin\\\{tiny\\\}\\\\hspace\\\{0mm\\\}\\\\end\\\{tiny\\\}\\\{\\\\marginpar.+?\s+/
@@n=@@tableheader=@@rights=nil
- @@date ||=SiSU_Env::Info_date.new
+ @@date ||=SiSU_Env::InfoDate.new
class Source
require 'pstore'
require_relative 'sysenv' # sysenv.rb
@@ -83,18 +83,18 @@ module SiSU_TeX
include SiSU_TeX
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
@md=@particulars.md
- @env=SiSU_Env::Info_env.new(@md.fns) #@env=@particulars.env
+ @env=SiSU_Env::InfoEnv.new(@md.fns) #@env=@particulars.env
end
def directories
begin
case @opt.fns
when /\.(?:-|ssm\.)?sst$/
- SiSU_Env::SiSU_file.new(@md).mkdir
+ SiSU_Env::FileOp.new(@md).mkdir
Dir.mkdir(@env.processing_path.tex) unless FileTest.directory?(@env.processing_path.tex)
end
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -114,14 +114,14 @@ 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 !!!
- SiSU_Env::Info_skin.new(@md).select
+ SiSU_Env::InfoSkin.new(@md).select
dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
- SiSU_TeX::Source::LaTeX_create.new(@particulars).songsheet
+ SiSU_TeX::Source::LaTeXcreate.new(@particulars).songsheet
dal_array=''
pwd=Dir.pwd
- SiSU_TeX::Source::LaTeX_to_pdf.new(@md,@particulars.env).latexrun_selective
+ SiSU_TeX::Source::LaTeXtoPdf.new(@md,@particulars.env).latexrun_selective
Dir.chdir(pwd)
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
unless @opt.cmd =~/[MV]/ #check maintenance flag
texfiles=Dir["#{@env.processing_path.tex}/#{@opt.fns}*"]
@@ -137,25 +137,25 @@ module SiSU_TeX
@@tex_debug_counter=@@table_pagebreak_counter=@@tex_footnote_call_counter=@@tex_table_flag=@@tex_counter=@@tex_column=@@tex_columns=@@tex_columns=@@counting=0
@@tex_col_w=[]
@@n=@@tableheader=@@rights=nil
- @@date=SiSU_Env::Info_date.new
+ @@date=SiSU_Env::InfoDate.new
@@flag={}
$flag=1 #remove at some stage
SiSU_Env::Clear.new(@opt.cmd,@opt.fns).param_instantiate
end
end
private
- class LaTeX_to_pdf
+ class LaTeXtoPdf
@@n_lpdf||=0 #change
def initialize(md,env)
@md,@env=md,env
- @f=SiSU_Env::SiSU_file.new(@md).base_filename
+ @f=SiSU_Env::FileOp.new(@md).base_filename
end
def latex_do(texfilename,papersize)
@texfilename=texfilename
@@n_lpdf=@@n_lpdf+1
SiSU_Screen::Ansi.new(@md.opt.cmd,"#{papersize} portrait ->").dark_grey_title_hi if @md.opt.cmd =~/[MVv]/
tex_fn_base=@texfilename.gsub(/\.tex$/,'')
- cmd=SiSU_Env::System_call.new("#{tex_fn_base}.tex",'',@md.opt.cmd)
+ cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.tex",'',@md.opt.cmd)
tell=SiSU_Screen::Ansi.new(@md.opt.cmd)
tell.grey_open if @md.opt.cmd =~/[MVv]/
if "#{tex_fn_base}" =~/\w+/ \
@@ -164,7 +164,7 @@ module SiSU_TeX
end
tell.p_off if @md.opt.cmd =~/[MVv]/
SiSU_Screen::Ansi.new(@md.opt.cmd,"#{papersize} landscape ->").dark_grey_title_hi if @md.opt.cmd =~/[MVv]/
- cmd=SiSU_Env::System_call.new("#{tex_fn_base}.landscape.tex",'',@md.opt.cmd)
+ cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.landscape.tex",'',@md.opt.cmd)
tell.grey_open if @md.opt.cmd =~/[MVv]/
if "#{tex_fn_base}" =~/\w+/ \
and "#{papersize}" =~/\w+/
@@ -208,8 +208,8 @@ module SiSU_TeX
when /\.(?:-|ssm\.)?sst$/
if FileTest.directory?(@env.processing_path.tex)==true
Dir.chdir(@env.processing_path.tex)
- texfile=@md.fns.gsub(/$/,".#{ps}.tex")
- texfile=texfile.gsub(/~/,'-')
+ texfile=@md.fns.gsub(/$/,".#{ps}.tex").
+ gsub(/~/,'-')
if File.exist?(texfile) \
and File.size(texfile) > 0
@tex_f_no+=1
@@ -261,11 +261,11 @@ module SiSU_TeX
end
lst=Dir["*.{aux,log,out}"]
lst.each {|file| File.unlink(file)} if lst
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
end
end
end
- class LaTeX_create
+ class LaTeXcreate
@@tex_head={
'a4'=> { p: nil, l: nil },
'a5'=> { p: nil, l: nil },
@@ -278,23 +278,18 @@ module SiSU_TeX
def initialize(particulars)
@particulars=particulars
@md=@particulars.md
- @env=SiSU_Env::Info_env.new(@md.fns) #@env=@particulars.env
+ @env=SiSU_Env::InfoEnv.new(@md.fns) #@env=@particulars.env
@data=@particulars.dal_array # dal file drawn here
@st={ tex: {} }
- @tex_ml=SiSU_TeX_Pdf::Use_TeX.new(@md)
- @vz=SiSU_Env::Get_init.instance.skin
- @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ @tex_ml=SiSU_TeX_Pdf::UseTeX.new(@md)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
@brace_url=SiSU_Viz::Skin.new.url_decoration
- vz=SiSU_Env::Get_init.instance.skin
- l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
@language=l[:n]
@translate=SiSU_Translate::Source.new(@md,@language)
- @skin_no_ocn=if defined? vz.ocn_display_off \
- and vz.ocn_display_off==true
- true
- else false
- end
@codeblock_box='listings' #alternative 'boites'
+ @make ||=SiSU_Env::ProcessingSettings.new(@md)
end
def songsheet
begin
@@ -305,7 +300,7 @@ module SiSU_TeX
if defined? @md.rights.all \
and not @md.rights.all.empty?
rght=@md.rights #.author.dup #dup is necessary, else contents of :rights changed
- sp_char=SiSU_TeX_Pdf::Special_characters.new(@md,rght.copyright.all)
+ sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,rght.copyright.all)
copymark=@md.author_copymark \
? '{\begin{small}\copyright\end{small}} '
: ''
@@ -315,7 +310,7 @@ module SiSU_TeX
end
if defined? @md.notes.prefix_b \
and not @md.notes.prefix_b.empty?
- sp_char=SiSU_TeX_Pdf::Special_characters.new(@md,@md.notes.prefix_b)
+ sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.notes.prefix_b)
prefix_b=sp_char.special_characters_safe
@@prefix_b="\n #{Tex[:backslash]*2}[3]\\ \\linebreak \\ #{prefix_b}\n" unless @@prefix_b
end
@@ -324,16 +319,10 @@ module SiSU_TeX
if @md.flag_tables #WORK ON 2009
data=tables(data) #uncomment to start experimenting with tables
end
- ocn=if @md.markup.inspect =~/no_ocn/ \
- or @md.opt.mod.inspect =~/--no-ocn/ \
- or @skin_no_ocn
- false
- else true
- end
data=number_paras(data)
data=markup(data)
output(data)
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
@@ -345,26 +334,26 @@ module SiSU_TeX
# from param, Sort out ... revert to more elegant solution
# even more of a kludge as had to insert newlines where code is used not satisfactory, think about
dob.tmp=dob.obj #.dup
- if dob.is=='para' \
- or dob.is=='heading'
- dob.tmp.gsub!(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'')
- dob.tmp=SiSU_TeX_Pdf::Special_characters.new(@md,dob.tmp).special_characters
+ if dob.is==:para \
+ || dob.is==:heading
+ dob.tmp=dob.tmp.gsub(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'')
+ dob.tmp=SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp).special_characters
if dob.tmp =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
- dob.tmp=SiSU_TeX_Pdf::Format_text_object.new(@md,dob.tmp).url_str_internal(dob.tmp)
+ dob.tmp=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob.tmp).url_str_internal(dob.tmp)
end
- elsif dob.is =='code'
+ elsif dob.is ==:code
dob.tmp=if @codeblock_box=='listings'
dob.tmp
else
- SiSU_TeX_Pdf::Special_characters.new(@md,dob.tmp).special_characters_code
+ SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp).special_characters_code
end
- elsif dob.is =='break'
+ elsif dob.is ==:break
if dob.obj==Mx[:br_page]; dob.tmp='\newpage'
elsif dob.obj==Mx[:br_page_new]; dob.tmp='\clearpage'
elsif dob.obj==Mx[:br_obj]; dob.tmp='\parasep'
end
- elsif dob.is=='comment' \
- or dob.is=='meta'
+ elsif dob.is==:comment \
+ || dob.is==:meta
dob.tmp='' #dob.tmp=nil
end
end
@@ -374,9 +363,9 @@ module SiSU_TeX
data.each do |dob|
# EMBEDDED FOOTNOTES / ENDNOTES should be straightforward but not quite a synch.
if dob.tmp =~/#{Mx[:en_a_o]}[\d*+]+\s|#{Mx[:en_b_o]}([*+]\d+)\s/
- dob.tmp.gsub!(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,"\\footnote[\\1]{%\n \\2} ")
- dob.tmp.gsub!(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/m,"\\FootnoteA{\\1}{%\n \\2} ")
- dob.tmp.gsub!(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/m,"\\FootnoteA{\\1}{%\n \\2} ")
+ dob.tmp=dob.tmp.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,"\\footnote[\\1]{%\n \\2} ").
+ gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/m,"\\FootnoteA{\\1}{%\n \\2} ").
+ gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/m,"\\FootnoteA{\\1}{%\n \\2} ")
end
end
data
@@ -387,9 +376,9 @@ module SiSU_TeX
@md.papersize_array.each do |ps|
@@tableheader={ ps => { p: 0, l: 0 } }
dob.tmp={ tmp: dob.tmp, paper_size: ps }
- format_l=SiSU_TeX_Pdf::Format_text_object.new(md,dob)
+ format_l=SiSU_TeX_Pdf::FormatTextObject.new(md,dob)
dob.tmp={ tmp: dob.tmp, paper_size: ps }
- format_p=SiSU_TeX_Pdf::Format_text_object.new(md,dob)
+ format_p=SiSU_TeX_Pdf::FormatTextObject.new(md,dob)
@block[ps]={
l: format_l.longtable_landscape,
p: format_p.longtable_portrait
@@ -403,7 +392,7 @@ module SiSU_TeX
data.each do |dob|
@tex_file << if dob.class==String \
or dob.class==Hash; dob
- elsif dob.is=='table'
+ elsif dob.is==:table
tables_hash(@md,dob) #Hash result
else dob
end
@@ -414,17 +403,17 @@ module SiSU_TeX
dob
end
def box_boites(dob,ocn)
- sp_char=SiSU_TeX_Pdf::Special_characters.new(@md,dob.tmp,dob.is)
+ sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp,dob.is)
dob.tmp=sp_char.special_characters_safe
- dob.tmp.gsub!(/(#{Mx[:nbsp]})/m,'{\color{mywhite}\1}')
- #dob.tmp.gsub!(/#{Mx[:nbsp]}/m,'{~}') # dob.tmp.gsub!(/#{Mx[:nbsp]}\s*/m,'{~}')
- dob.tmp.gsub!(/#{Mx[:vline]}/m,'\vline')
- dob.tmp.gsub!(/ \\( |#{Mx[:br_nl]})/,' {\textbackslash}\1')
- dob.tmp.gsub!(/#{Mx[:br_nl]}\s*\Z/m,'')
- dob.tmp.gsub!(/#{Mx[:br_nl]}{2}/,'\newline \\\\\\ ')
- dob.tmp.gsub!(/#{Mx[:br_nl]}/,' \\\\\\ ')
- dob.tmp.gsub!(/\n\n\n/m," \\newline\n\n")
- ocn=SiSU_TeX_Pdf::Format_text_object.new(@md).ocn_display(dob)
+ dob.tmp=dob.tmp.gsub(/(#{Mx[:nbsp]})/m,'{\color{mywhite}\1}').
+ #dob.tmp.gsub(/#{Mx[:nbsp]}/m,'{~}') # dob.tmp.gsub(/#{Mx[:nbsp]}\s*/m,'{~}')
+ gsub(/#{Mx[:vline]}/m,'\vline').
+ gsub(/ \\( |#{Mx[:br_nl]})/,' {\textbackslash}\1').
+ gsub(/#{Mx[:br_nl]}\s*\Z/m,'').
+ gsub(/#{Mx[:br_nl]}{2}/,'\newline \\\\\\ ').
+ gsub(/#{Mx[:br_nl]}/,' \\\\\\ ').
+ gsub(/\n\n\n/m," \\newline\n\n")
+ ocn=SiSU_TeX_Pdf::FormatTextObject.new(@md).ocn_display(dob)
dob.tmp = ocn \
+ @tex_ml.paraskip_small \
+ '\begin{Codeblock}' \
@@ -437,14 +426,14 @@ module SiSU_TeX
dob
end
def box_listings(dob,ocn)
- sp_char=SiSU_TeX_Pdf::Special_characters.new(@md,dob.tmp,dob.is)
+ sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp,dob.is)
dob.tmp=sp_char.characters_code_listings
- dob.tmp.gsub!(/^\s+/m,'') #bug, fix earlier, should be made unecessary
- dob.tmp.gsub!(/#{Mx[:nbsp]}/m,' ')
- dob.tmp.gsub!(/#{Mx[:vline]}/m,'|')
- dob.tmp.gsub!(/#{Mx[:br_nl]}(?:\s?\n)?/m,"\n")
- dob.tmp.gsub!(/\n\n\n/m," \n\n")
- ocn=SiSU_TeX_Pdf::Format_text_object.new(@md).ocn_display(dob)
+ dob.tmp=dob.tmp.gsub(/^\s+/m,''). #bug, fix earlier, should be made unecessary
+ gsub(/#{Mx[:nbsp]}/m,' ').
+ gsub(/#{Mx[:vline]}/m,'|').
+ gsub(/#{Mx[:br_nl]}(?:\s?\n)?/m,"\n").
+ gsub(/\n\n\n/m," \n\n")
+ ocn=SiSU_TeX_Pdf::FormatTextObject.new(@md).ocn_display(dob)
dob.tmp = ocn \
+ @tex_ml.paraskip_small \
+ '\begin{Codeblock}' \
@@ -463,16 +452,18 @@ module SiSU_TeX
def markup_common(dob)
tex_f=nil
txt_obj={ dal: dob }
- if dob.of=='block'
- @lineone=case dob.is
- when /block|group|alt|verse/
- dob.tmp.gsub!(/#{Mx[:nbsp]}/m,'{~}')
- dob.tmp.gsub!(/#{Mx[:gl_bullet]}/m,'$\txtbullet$\hspace{\enspace}') #Bullet environment not used for grouped text, ∴ no hanging indent here
- dob.tmp.gsub!(/#{Mx[:br_nl]}+/m,"\n\n") #match not ideal, but currently not inserting extra newlines anyway
- ocn=SiSU_TeX_Pdf::Format_text_object.new(@md).ocn_display(dob)
- dob.tmp=if dob.is=='group' \
- or dob.is=='block' \
- or dob.is=='alt'
+ if dob.of==:block
+ @lineone=if dob.is==:block \
+ || dob.is==:group \
+ || dob.is==:alt \
+ || dob.is==:verse
+ dob.tmp=dob.tmp.gsub(/#{Mx[:nbsp]}/m,'{~}').
+ gsub(/#{Mx[:gl_bullet]}/m,'$\txtbullet$\hspace{\enspace}'). #Bullet environment not used for grouped text, ∴ no hanging indent here
+ gsub(/#{Mx[:br_nl]}+/m,"\n\n") #match not ideal, but currently not inserting extra newlines anyway
+ ocn=SiSU_TeX_Pdf::FormatTextObject.new(@md).ocn_display(dob)
+ dob.tmp=if dob.is==:group \
+ || dob.is==:block \
+ || dob.is==:alt
ocn \
+ @tex_ml.paraskip_small \
+ "\n" \
@@ -482,7 +473,7 @@ module SiSU_TeX
+ '\\end{footnotesize}' \
+ "\n" \
+ @tex_ml.paraskip_normal
- elsif dob.is=~/verse/
+ elsif dob.is==:verse
ocn \
+ @tex_ml.paraskip_tiny \
+ "\n" \
@@ -495,7 +486,7 @@ module SiSU_TeX
+ "\n\\linebreak\n"
end
dob
- when /code/
+ elsif dob.is ==:code
dob=if @codeblock_box == 'listings'
box_listings(dob,ocn)
elsif @codeblock_box == 'boites'
@@ -509,9 +500,9 @@ module SiSU_TeX
dob=enclose(dob) unless dob.tmp =~/^$/
dob
else
- tst=SiSU_TeX_Pdf::Format_text_object.new(@md,dob)
+ tst=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob)
case dob.is
- when 'heading'
+ when :heading
case dob.ln
when 1..3
tst.heading_major
@@ -523,17 +514,17 @@ module SiSU_TeX
tst.level6
else dob
end
- when 'heading_insert'
+ when :heading_insert
br="\n\\\\\n"
if dob.name=='book_index'
h=tst.heading_major
heading="\\clearpage\n" + h.tmp
idx_arr=[]
- idx=SiSU_Particulars::Combined_singleton.instance.get_idx_tex(@md.opt).tex_idx
+ idx=SiSU_Particulars::CombinedSingleton.instance.get_idx_tex(@md.opt).tex_idx
idx.each do |x|
x=if x.class==String
- x=SiSU_TeX_Pdf::Special_characters.new(@md,x).special_characters
- x=SiSU_TeX_Pdf::Format_text_object.new(@md,x).url_str_internal(x,true)
+ x=SiSU_TeX_Pdf::SpecialCharacters.new(@md,x).special_characters
+ x=SiSU_TeX_Pdf::FormatTextObject.new(@md,x).url_str_internal(x,true)
else x=nil
end
idx_arr << x.sub(/,$/,'') if x.class==String
@@ -551,11 +542,11 @@ module SiSU_TeX
elsif dob.ln==4 \
and dob.obj=~/Metadata\b/
h=tst.level4
- metadata=Metadata::TeX_metadata.new(@md).metadata_tex
+ metadata=SiSU_Metadata::TeX_Metadata.new(@md).metadata_tex
dob.tmp=h.tmp + ' ' + '\begin{scriptsize}' + metadata.join(br) + '\end{scriptsize}'
else dob.tmp='' # dob.tmp={ l: '', p: '' }
end
- when 'para'
+ when :para
if dob.bullet_
dob.tmp=tst.bullet
elsif dob.indent \
@@ -568,35 +559,35 @@ module SiSU_TeX
and (dob.indent != dob.hang or dob.indent =~/[1-9]/)
dob.tmp=tst.hang
else
- dob.tmp.strip!
+ dob.tmp=dob.tmp.strip
dob=enclose(dob) unless dob.tmp =~/^$/
end
else
- dob.tmp.strip! unless dob.is=='code'
+ dob.tmp=dob.tmp.strip unless dob.is==:code
dob=enclose(dob) unless dob.tmp =~/^$/
end
if dob.class==String
- dob.tmp.gsub!(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,' \newline ') #% tread with care
- dob.tmp.gsub!(/(\.#{Tex[:tilde]}\S*\s*|<:\S+>|#{Mx[:fa_o]}.*?#{Mx[:fa_c]}|#{Mx[:gr_o]}.*?#{Mx[:gr_c]}|<!.*?!>|<!>)/,' ') #% tread with care
+ dob.tmp=dob.tmp.gsub(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,' \newline '). #% tread with care
+ gsub(/(\.#{Tex[:tilde]}\S*\s*|<:\S+>|#{Mx[:fa_o]}.*?#{Mx[:fa_c]}|#{Mx[:gr_o]}.*?#{Mx[:gr_c]}|<!.*?!>|<!>)/,' ') #% tread with care
end
dob
end
if dob.tmp =~/(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image\b)/m \
- && dob.is !='code'
- dob=SiSU_TeX_Pdf::Bare_urls.new(@md,dob).bare_urls
- tst=SiSU_TeX_Pdf::Format_text_object.new(@md,dob)
+ && dob.is !=:code
+ dob=SiSU_TeX_Pdf::BareUrls.new(@md,dob).bare_urls
+ tst=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob)
dob=tst.urls_txt_and_images
dob
elsif dob.tmp =~/https?:\/\/\S+\b/m \
- && dob.is =='code' \
+ && dob.is ==:code \
&& @codeblock_box !='listings'
- dob=SiSU_TeX_Pdf::Bare_urls.new(@md,dob).bare_urls_in_code
+ dob=SiSU_TeX_Pdf::BareUrls.new(@md,dob).bare_urls_in_code
dob
end
if dob.class !=Hash \
&& dob.tmp =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image\b/ \
- && dob.is !='code'
- tst=SiSU_TeX_Pdf::Format_text_object.new(@md,dob)
+ && dob.is !=:code
+ tst=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob)
end
dob
end
@@ -666,9 +657,9 @@ WOK
title=@md.title.full.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]}|\\\\/,' - ') #no line splitting in heading neither html nor latex
@md.papersize_array.each do |ps|
txt_obj={ txt: "#{home}: - #{title}", paper_size: ps, orientation: 'portrait' }
- orient_portrait=SiSU_TeX_Pdf::Format_head.new(@md,txt_obj)
+ orient_portrait=SiSU_TeX_Pdf::FormatHead.new(@md,txt_obj)
txt_obj={ txt: "#{home}: - #{title}", paper_size: ps, orientation: 'landscape' }
- orient_landscape=SiSU_TeX_Pdf::Format_head.new(@md,txt_obj)
+ orient_landscape=SiSU_TeX_Pdf::FormatHead.new(@md,txt_obj)
@@tex_head[ps][:p]=orient_portrait.document_head_with_orientation(@codeblock_box)
@@tex_head[ps][:l]=orient_landscape.document_head_with_orientation(@codeblock_box)
end
@@ -709,13 +700,13 @@ WOK
@copymark='' #check and remove as now is superflous
x={}
txt_obj={ title: @md.title.full }
- x[:l]=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj).title_landscape
- x[:p]=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj).title_portrait
+ x[:l]=SiSU_TeX_Pdf::FormatTextObject.new(@md,txt_obj).title_landscape
+ x[:p]=SiSU_TeX_Pdf::FormatTextObject.new(@md,txt_obj).title_portrait
@tex_file << x
x=nil
if defined? @md.creator.author \
and @md.creator.author
- sp_char=SiSU_TeX_Pdf::Special_characters.new(@md,@md.creator.author)
+ sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.creator.author)
author=sp_char.special_characters
@tex_file << if @md.author_home
<<WOK
@@ -739,12 +730,20 @@ WOK
@tex_file << @@prefix_b if defined? @md.creator.prefix_b and @md.creator.prefix_b
end
x={}
- x[:l] =<<WOK
-#{@tex_ml.newpage('landscape')}
-\\pagestyle{fancy}
+ if (@make.build.toc?)
+ toc=<<WOK
\\renewcommand{\\contentsname}{#{@translate.contents}}
\\tableofcontents
+WOK
+ toc_pb={ l: @tex_ml.newpage('landscape'), p: @tex_ml.newpage('portrait') }
+ else
+ toc=''
+ toc_pb={ l: '', p: '' }
+ end
+ x[:l] =<<WOK
#{@tex_ml.newpage('landscape')}
+\\pagestyle{fancy}
+#{toc}#{toc_pb[:l]}
\\pagenumbering{arabic}
#{@tex_ml.paraskip_normal}
#{@tex_ml.newpage('landscape')}
@@ -752,8 +751,7 @@ WOK
x[:p] =<<WOK
#{@tex_ml.newpage('portrait')}
\\pagestyle{fancy}
-\\renewcommand{\\contentsname}{#{@translate.contents}}
-\\tableofcontents
+#{toc}#{toc_pb[:p]}
#{@tex_ml.newpage('portrait')}
\\pagenumbering{arabic}
#{@tex_ml.paraskip_normal}
@@ -763,10 +761,10 @@ WOK
x=nil
data.each do |dob| #% case follows with levels 1-6 indents & graphics
if dob.class==Hash
- elsif dob.of=='para' \
- or dob.of=='block' #GATEWAY FIX FIX stuff
+ elsif dob.of==:para \
+ || dob.of==:block #GATEWAY FIX FIX stuff
dob=markup_common(dob)
- elsif dob.is=='table'
+ elsif dob.is==:table
if ( dob.tmp['a4'] \
or dob.tmp['a5'] \
or dob.tmp['b5'] \
@@ -809,14 +807,10 @@ WOK
@tex_file << "\n\\end{document}"
end
def number_paras_numbering(dob) # need tables and other types of object
- if dob.of =~/para/ #\
+ if dob.of ==:para
paranum=dob.ocn ? dob.ocn : ''
paranum = '' if paranum.to_i==0
- paranumber_display=if @md.markup.inspect =~/no_ocn/ \
- or @md.opt.mod.inspect =~/--no-ocn/ \
- or not dob.ocn_
- ''
- else
+ paranumber_display=if @make.build.ocn?
tags=''
#[keep] code that follows inserts "name tags" as hypertargets, currently using ocn (converting nametags to ocn) for internal linking, related code: |texpdf_format.rb|@|uses nametags directly|
#if dob.tags.length > 0 # insert tags "hypertargets"
@@ -825,6 +819,7 @@ WOK
# end
#end
"\\begin{tiny}\\hspace{0mm}\\end{tiny}{\\marginpar{\\begin{tiny}\\hspace{0mm}\\hypertarget{#{dob.ocn}}{#{dob.ocn}}#{tags}\\end{tiny}}}" #ocn object citation numbering
+ else ''
end
dob.tmp = paranumber_display + dob.tmp
end
@@ -860,7 +855,9 @@ WOK
else p "#{__FILE__}:#{__LINE__}" if @md.opt.cmd.inspect =~/M/
end
else
- dob=if dob.of !~/comment|meta|layout/
+ dob=if dob.of !=:comment \
+ || dob.of !=:meta \
+ || dob.of !=:layout
number_paras_numbering(dob)
else dob
end
@@ -872,12 +869,16 @@ WOK
ps,h,fn=o[:ps],o[:h],o[:filename]
if h[ps] \
and (h[ps][:p] and h[ps][:l])
- h[ps][:p].gsub!(/[ ]+$/m,'') if h[ps][:p]
- h[ps][:l].gsub!(/[ ]+$/m,'') if h[ps][:l]
- #h[ps][:p].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[ps][:p]
- #h[ps][:l].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[ps][:l]
- h[ps][:p].gsub!(/\n\n\n+/m,"\n\n") if h[ps][:p]
- h[ps][:l].gsub!(/\n\n\n+/m,"\n\n") if h[ps][:l]
+ if h[ps][:p]
+ h[ps][:p]=h[ps][:p].gsub(/[ ]+$/m,'').
+ gsub(/\n\n\n+/m,"\n\n")
+ end
+ if h[ps][:l]
+ h[ps][:l]=h[ps][:l].gsub(/[ ]+$/m,'').
+ gsub(/\n\n\n+/m,"\n\n")
+ end
+ #h[ps][:p].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[ps][:p]
+ #h[ps][:l].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[ps][:l]
if h[ps][:p] !~/\A\s*\Z/
fn[:portrait].puts h[ps][:p],"\n"
end
@@ -885,12 +886,16 @@ WOK
fn[:landscape].puts h[ps][:l],"\n"
end
elsif (h[:p] and h[:l])
- h[:p].gsub!(/[ ]+$/m,'') if h[:p]
- h[:l].gsub!(/[ ]+$/m,'') if h[:l]
- #h[:p].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[:p]
- #h[:l].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[:l]
- h[:p].gsub!(/\n\n\n+/m,"\n\n") if h[:p]
- h[:l].gsub!(/\n\n\n+/m,"\n\n") if h[:l]
+ if h[:p]
+ h[:p]=h[:p].gsub(/[ ]+$/m,'').
+ gsub(/\n\n\n+/m,"\n\n")
+ end
+ if h[:l]
+ h[:l]=h[:l].gsub(/[ ]+$/m,'').
+ gsub(/\n\n\n+/m,"\n\n")
+ end
+ #h[:p].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[:p]
+ #h[:l].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[:l]
if h[:p] !~/\A\s*\Z/
fn[:portrait].puts h[:p],"\n"
end
@@ -901,9 +906,7 @@ WOK
end
end
def output(array)
- array.flatten!
- array.compact!
- @array=array
+ @array=array=array.flatten.compact
fns_l=@md.fns.gsub(/~/,'-') #this is a sorry fix, but necessary as it appears latex programs like not ~
@md.papersize_array.each do |ps|
file={
@@ -919,16 +922,16 @@ WOK
file[:portrait].puts morph,"\n"
file[:landscape].puts morph,"\n"
end
- elsif morph.class.inspect =~ /SiSU_document_structure/ \
+ elsif morph.class.inspect =~ /SiSU_DAL_DocumentStructure/ \
and morph.tmp \
and morph.tmp.class==String
- if morph.is !='code' \
- && morph.of !='block'
- morph.tmp.gsub!(/^\s+/,'')
+ if morph.is !=:code \
+ && morph.of !=:block
+ morph.tmp=morph.tmp.gsub(/^\s+/,'')
else morph.tmp
end
- if morph.tmp !~/\A\s*\Z/ \
- or morph.is=='code'
+ if (morph.tmp !~/\A\s*\Z/) \
+ || morph.is==:code
file[:portrait].puts morph.tmp,"\n"
file[:landscape].puts morph.tmp,"\n"
end
diff --git a/lib/sisu/v3/texpdf_format.rb b/lib/sisu/v3/texpdf_format.rb
index 25cb0c63..ae277ec6 100644
--- a/lib/sisu/v3/texpdf_format.rb
+++ b/lib/sisu/v3/texpdf_format.rb
@@ -59,30 +59,30 @@
module SiSU_TeX_Pdf
@@table_pg_break_counter=1
include SiSU_Viz
- class Bare_urls
+ class BareUrls
def initialize(md,dob=nil)
@md,@dob=md,dob
@brace_url=SiSU_Viz::Skin.new.url_decoration
end
def bare_urls
- @dob.obj.gsub!(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
- "#{@brace_url.tex_open}\\1</a>#{@brace_url.tex_close}")
- @dob.tmp.gsub!(/(^|[^\\])_/m,'\1\_') #watch may not work
- @dob.tmp.gsub!(/(^|[^#{Mx[:lnk_c]}])#{Mx[:url_o]}_?(?:\\?_)?(\S+?)#{Mx[:url_c]}/m,
- "\\1#{@brace_url.tex_open}\\begin{scriptsize}\\url{\\2}\\end{scriptsize}#{@brace_url.tex_close}")
+ @dob.obj=@dob.obj.gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
+ "#{@brace_url.tex_open}\\1</a>#{@brace_url.tex_close}")
+ @dob.tmp=@dob.tmp.gsub(/(^|[^\\])_/m,'\1\_'). #watch may not work
+ gsub(/(^|[^#{Mx[:lnk_c]}])#{Mx[:url_o]}_?(?:\\?_)?(\S+?)#{Mx[:url_c]}/m,
+ "\\1#{@brace_url.tex_open}\\begin{scriptsize}\\url{\\2}\\end{scriptsize}#{@brace_url.tex_close}")
@dob
end
def bare_urls_in_code
- @dob.tmp.gsub!(/(^|[^\\])_/m,'\1\_') #watch may not work
- @dob.tmp.gsub!(/(https?:\/\/\S+?)([{]|[.,;)\]]?(?: |$))/m,
- '\begin{scriptsize}\url{\1}\end{scriptsize}\2')
+ @dob.tmp=@dob.tmp.gsub(/(^|[^\\])_/m,'\1\_'). #watch may not work
+ gsub(/(https?:\/\/\S+?)([{]|[.,;)\]]?(?: |$))/m,
+ '\begin{scriptsize}\url{\1}\end{scriptsize}\2')
@dob
end
end
- class Format_text_object
+ class FormatTextObject
require_relative 'defaults' # defaults.rb
attr_accessor :string,:string1,:orientation,:url,:dir,:tex
- @@sys=SiSU_Env::System_call.new
+ @@sys=SiSU_Env::SystemCall.new
@@tex_pattern_margin_number=/\\begin\{tiny\}\\hspace\{0mm\}\\end\{tiny\}\{\\marginpar.+?\}\}\}/
@@tableheader={
'a4' => { p: 0, l: 0 },
@@ -91,7 +91,7 @@ module SiSU_TeX_Pdf
'letter' => { p: 0, l: 0 },
'legal' => { p: 0, l: 0 }
}
- @@sys=SiSU_Env::System_call.new
+ @@sys=SiSU_Env::SystemCall.new
def initialize(md,dob=nil)
@md,@dob=md,dob
if defined? @md.image \
@@ -100,31 +100,34 @@ module SiSU_TeX_Pdf
else @center_begin,@center_end='',''
end
@start_table=''
- @tx=SiSU_Env::Get_init.instance.tex
+ @tx=SiSU_Env::GetInit.instance.tex
@brace_rel=SiSU_Viz::Skin.new.rel_decoration
- @env ||=SiSU_Env::Info_env.new(@md.fns)
- @tex2pdf=@@tex3pdf ||=SiSU_Env::System_call.new.tex2pdf_engine
+ @env ||=SiSU_Env::InfoEnv.new(@md.fns)
+ @tex2pdf=@@tex3pdf ||=SiSU_Env::SystemCall.new.tex2pdf_engine
+ @make ||=SiSU_Env::ProcessingSettings.new(@md)
end
def ocn_display(dob)
- "\\begin{tiny}\\hspace{0mm}\\end{tiny}{\\marginpar{\\begin{tiny}\\hspace{0mm}\\hypertarget{#{dob.ocn}}{#{dob.ocn}}\\end{tiny}}}" #ocn object citation numbering
+ show_ocn=(@make.build.ocn?) \
+ ? dob.ocn
+ : ''
+ "\\begin{tiny}\\hspace{0mm}\\end{tiny}{\\marginpar{\\begin{tiny}\\hspace{0mm}\\hypertarget{#{dob.ocn}}{#{show_ocn}}\\end{tiny}}}" #ocn object citation numbering
end
def table_special_characters(r)
- r.gsub!(/#{Mx[:tc_p]}|$/u,'&')
- r.gsub!(/%/,'\%')
- r.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\begin{bfseries}\1 \end{bfseries}')
- r.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\emph{\1}')
- r.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\uline{\1}') # ulem
- r.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,"``\\1''") # quote #CHECK
- r.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\uline{\1}') # ulem
- r.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\sout{\1}') # ulem
- r.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,"\$^{\\textrm{\\1}}\$")
- r.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,"\$_{\\textrm{\\1}}\$")
- r
+ r=r.gsub(/#{Mx[:tc_p]}|$/u,'&').
+ gsub(/%/,'\%').
+ gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\begin{bfseries}\1 \end{bfseries}').
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\emph{\1}').
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\uline{\1}'). # ulem
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,"``\\1''"). # quote #CHECK
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\uline{\1}'). # ulem
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\sout{\1}'). # ulem
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,"\$^{\\textrm{\\1}}\$").
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,"\$_{\\textrm{\\1}}\$")
end
def longtable_landscape
end_table='\end{longtable}'
row_break='\\\\\\'
- txt=if @dob.is=='table'
+ txt=if @dob.is==:table
tw=case @dob.tmp[:paper_size]
when /a4/i; @tx.a4.landscape.w #European default, SiSU default
when /letter/i; @tx.letter.landscape.w #U.S. default
@@ -147,19 +150,21 @@ module SiSU_TeX_Pdf
"\\begin{tiny}\n\\begin{longtable}#{colW}\n"
rows=@dob.obj.split(/#{Mx[:br_nl]}/)
if @dob.head_ #result imperfect, check on
- rows[0].gsub!(/(^|.+?)(?:#{Mx[:tc_p]}|$)/u,'\bfseries \1&')
- rows[0].gsub!(/&\s*$/," #{row_break} \\hline\\endhead #{row_break}")
+ rows[0]=rows[0].gsub(/(^|.+?)(?:#{Mx[:tc_p]}|$)/u,'\bfseries \1&').
+ gsub(/&\s*$/," #{row_break} \\hline\\endhead #{row_break}")
end
+ rows_new=[]
rows.each do |r|
r=table_special_characters(r)
- r.gsub!(/$/," #{row_break}\n") unless r =~/#{row_break*2}$/
+ r=r.gsub(/$/," #{row_break}\n") unless r =~/#{row_break*2}$/
if r=~/\<!f(.+?)!\>/ # not tested table footer if any
tablefoot=$1
- r.gsub!(/\<!f(.+?)!\>/,'')
+ r=r.gsub(/\<!f(.+?)!\>/,'')
r="#{r} \\multicolumn{#{@dob.cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n"
end
+ rows_new << r
end
- table=rows.join #@dob[:dal].obj=rows.join
+ table=rows_new.join #@dob[:dal].obj=rows.join
ocn_display(@dob) + start_table + table + " #{end_table}\n\\end{tiny}"
else ''
end
@@ -167,7 +172,7 @@ module SiSU_TeX_Pdf
def longtable_portrait
end_table='\end{longtable}'
row_break='\\\\\\'
- txt=if @dob.is=='table'
+ txt=if @dob.is==:table
tw=case @dob.tmp[:paper_size]
when /a4/i; @tx.a4.portrait.w #European default, SiSU default
when /letter/i; @tx.letter.portrait.w #U.S. default
@@ -190,19 +195,21 @@ module SiSU_TeX_Pdf
"\\begin{tiny}\n\\begin{longtable}#{colW}\n"
rows=@dob.obj.split(/#{Mx[:br_nl]}/)
if @dob.head_
- rows[0].gsub!(/(^|.+?)(?:#{Mx[:tc_p]}|$)/u,'\bfseries \1&')
- rows[0].gsub!(/&\s*$/," #{row_break} \\hline\\endhead #{row_break}")
+ rows[0]=rows[0].gsub(/(^|.+?)(?:#{Mx[:tc_p]}|$)/u,'\bfseries \1&').
+ gsub(/&\s*$/," #{row_break} \\hline\\endhead #{row_break}")
end
+ rows_new=[]
rows.each do |r|
r=table_special_characters(r)
- r.gsub!(/$/," #{row_break}\n") unless r =~/#{row_break*2}$/
+ r=r.gsub(/$/," #{row_break}\n") unless r =~/#{row_break*2}$/
if r=~/\<!f(.+?)!\>/ # not tested table footer if any
tablefoot=$1
- r.gsub!(/\<!f(.+?)!\>/,'')
+ r=r.gsub(/\<!f(.+?)!\>/,'')
r="#{r} \\multicolumn{#{@dob.cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n"
end
+ rows_new << r
end
- table=rows.join #@dob[:dal].obj=rows.join
+ table=rows_new.join #@dob[:dal].obj=rows.join
ocn_display(@dob) + start_table + table + " #{end_table}\n\\end{tiny}"
else ''
end
@@ -210,17 +217,17 @@ module SiSU_TeX_Pdf
def heading_major
dob=@dob
title=@md.title.full
- dob.tmp.strip! if dob.tmp
- dob.tmp.gsub!(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
+ dob.tmp=dob.tmp.strip if dob.tmp
+ dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
cont_ln=dob.tmp.dup
- cont_ln.gsub!(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln.gsub!(@@tex_pattern_margin_number,'')
+ cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
+ gsub(@@tex_pattern_margin_number,'')
clearp=(dob.lv =~/B/ && dob.obj =='Metadata') ? "\\clearpage\n" : ''
if dob.tmp =~/\\[Ff]ootnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln.gsub!(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ')
- cont_ln.gsub!(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
+ cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
+ gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
end
- dob.tmp.gsub!(/^(.*)\n?$/m,
+ dob.tmp=dob.tmp.gsub(/^(.*)\n?$/m,
"#{clearp}\\part*{\\1}
\\addcontentsline{toc}{section}{#{cont_ln}}
\\markboth{#{title}}\n")
@@ -228,23 +235,23 @@ module SiSU_TeX_Pdf
end
def level4
dob=@dob
- dob.tmp.strip! if dob.tmp
- dob.tmp.gsub!(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
+ dob.tmp=dob.tmp.strip if dob.tmp
+ dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
cont_ln=dob.tmp.dup
- cont_ln.gsub!(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln.gsub!(@@tex_pattern_margin_number,'')
- cont_ln.gsub!(/#{Tex[:backslash]*2}/,"#{Tex[:backslash]*4}") # added w42
- cont_ln.gsub!(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- cont_ln.gsub!(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
+ cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
+ gsub(@@tex_pattern_margin_number,'').
+ gsub(/#{Tex[:backslash]*2}/,"#{Tex[:backslash]*4}"). # added w42
+ gsub(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
+ gsub(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
title=@md.title.full
if dob.name =~/endnotes/
- dob.tmp.gsub!(/.+/m,'')
+ dob.tmp=dob.tmp.gsub(/.+/m,'')
end
if dob.tmp =~/\\footnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln.gsub!(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ')
- cont_ln.gsub!(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
+ cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
+ gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
end
- dob.tmp.gsub!(/^(.*)?\n?$/m,"\\subsubsection*{\\1}
+ dob.tmp=dob.tmp.gsub(/^(.*)?\n?$/m,"\\subsubsection*{\\1}
\\addcontentsline{toc}{subsection}{#{cont_ln}}
\\markright{#{title}}")
dob
@@ -252,19 +259,19 @@ module SiSU_TeX_Pdf
def level5
dob=@dob
# there is a problem here with creation of headers does not do what you would want it to header starts with a * and is not in bold work on \\@txt*, same for next section 2002w46
- dob.tmp.strip! if dob.tmp
- dob.tmp.gsub!(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
+ dob.tmp=dob.tmp.strip if dob.tmp
+ dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
cont_ln=dob.tmp.dup
- cont_ln.gsub!(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln.gsub!(@@tex_pattern_margin_number,'')
- cont_ln.gsub!(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- cont_ln.gsub!(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- cont_ln.gsub!(/\\\&/,' and ') #revisit: tmp bugfix 200507, substitutes & with 'and' in toc, needed e.g. for AT&T, see ffa
+ cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
+ gsub(@@tex_pattern_margin_number,'').
+ gsub(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
+ gsub(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
+ gsub(/\\\&/,' and ') #revisit: tmp bugfix 200507, substitutes & with 'and' in toc, needed e.g. for AT&T, see ffa
if dob.tmp =~/\\footnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln.gsub!(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ')
- cont_ln.gsub!(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
+ cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
+ gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
end
- dob.tmp.gsub!(/^(.*)?\n?$/m,
+ dob.tmp=dob.tmp.gsub(/^(.*)?\n?$/m,
"\\subsubsection*{\\1}
\\addcontentsline{toc}{subsubsection}{#{cont_ln} \\\\
}")
@@ -273,22 +280,22 @@ module SiSU_TeX_Pdf
def level6
dob=@dob
# there is a problem here with creation of headers does not do what you would want it to header starts with a * and is not in bold work on \\sub@txt*, same for previous section 2002w46
- dob.tmp.strip! if dob.tmp
- dob.tmp.gsub!(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
+ dob.tmp=dob.tmp.strip if dob.tmp
+ dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
cont_ln=dob.tmp.dup
- cont_ln.gsub!(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln.gsub!(@@tex_pattern_margin_number,'')
- cont_ln.gsub!(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- cont_ln.gsub!(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
+ cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
+ gsub(@@tex_pattern_margin_number,'').
+ gsub(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
+ gsub(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
if dob.tmp =~/\\footnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln.gsub!(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ')
- cont_ln.gsub!(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
+ cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
+ gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
end
- dob.tmp.gsub!(/^(.*)?\n?$/m,
+ dob.tmp=dob.tmp.gsub(/^(.*)?\n?$/m,
"\\subsubsection*{\\1}
\\addcontentsline{toc}{subsubsection}{~~~~#{cont_ln} \\\\
}")
- #dob.tmp.gsub!(/^(.*)?\n?$/m,
+ #dob.tmp.gsub(/^(.*)?\n?$/m,
# '\subsubsection*{\1}')
dob
end
@@ -462,7 +469,7 @@ module SiSU_TeX_Pdf
blt
end
def symbol_graphic
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
image='c_' + /<:=\s*(\S+?)\s*>/m.match(@txt).captures.join + '.png' #watch
if FileTest.file?("#{dir.path.image_source_include}/#{image}")
@txt.gsub!(/<:=\s*(\S+?)\s*>/,
@@ -473,7 +480,7 @@ module SiSU_TeX_Pdf
end
end
def image
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
image,m=/#{Mx[:lnk_o]}\s*(\S+)\s+.+?width=``(\d+)''.+?#{Mx[:lnk_c]}/m.match(@txt).captures
width=m[1] || '100'
width=width.to_i*0.4
@@ -496,7 +503,7 @@ module SiSU_TeX_Pdf
end
end
def png(ps='') #fc missing image check
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
# messy clean up
z=@txt[/#{Mx[:lnk_o]}(\S.+?)#{Mx[:lnk_c]}(?:image|png)/,1].strip if @txt =~ /#{Mx[:lnk_o]}\S.+?#{Mx[:lnk_c]}(?:image|png)/ # match operator for z \\ fragile !
if z #debug 2004w14
@@ -534,7 +541,7 @@ module SiSU_TeX_Pdf
end
end
def url_str_internal(str,idx=nil)
- map_nametags=SiSU_Particulars::Combined_singleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
+ map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
rgx_url_generic=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/m
rgx_url_relative=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}:\S+?#{Mx[:rel_c]}/m
rgx_url_internal=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}#?\S+?#{Mx[:rel_c]}/m
@@ -569,8 +576,7 @@ module SiSU_TeX_Pdf
#? (str.sub!(rgx_url_internal,"\\hyperlink{#{url}}{#{link}}")) \
#: (str.sub!(rgx_url_internal,"#{@brace_rel.tex_open}\\hyperlink{#{url}}{#{link}}#{@brace_rel.tex_close}"))
end
- str.gsub!(/#{Xx[:protect]}/,'')
- str
+ str=str.gsub(/#{Xx[:protect]}/,'')
end
def url_str(str)
rgx_url_generic=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
@@ -582,7 +588,7 @@ module SiSU_TeX_Pdf
link=z.strip
link.gsub!(/&/,"#{Xx[:protect]}&")
str.sub!(rgx_url_generic,"#{@brace_rel.tex_open}\\href{#{url}}{#{link}}#{@brace_rel.tex_close}")
- str.gsub!(/#{Xx[:protect]}/,'')
+ str=str.gsub(/#{Xx[:protect]}/,'')
str
else str
end
@@ -607,6 +613,8 @@ module SiSU_TeX_Pdf
link.gsub!(/&/,"#{Xx[:protect]}&")
dob.tmp.sub!(rgx_url_generic,"#{@brace_rel.tex_open}\\href{#{url}}{#{link}}#{@brace_rel.tex_close}#{punctuate}")
dob.tmp.gsub!(/#{Xx[:protect]}/,'')
+ #dob.tmp=dob.tmp.sub(rgx_url_generic,"#{@brace_rel.tex_open}\\href{#{url}}{#{link}}#{@brace_rel.tex_close}#{punctuate}").
+ # gsub(/#{Xx[:protect]}/,'')
dob
else dob
end
@@ -616,7 +624,7 @@ module SiSU_TeX_Pdf
end
def urls_txt_and_images
dob=@dob
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
@dm={
'a4'=> @tx.a4.landscape.img_px,
'letter'=> @tx.letter.landscape.img_px,
@@ -737,7 +745,7 @@ module SiSU_TeX_Pdf
dob
end
def title
- title=SiSU_TeX_Pdf::Special_characters.new(@md,@md.title.full).special_characters_safe
+ title=SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.title.full).special_characters_safe
"\n\\title{#{title}}"
end
def title_landscape
@@ -747,11 +755,11 @@ module SiSU_TeX_Pdf
title
end
end
- class Format_head
+ class FormatHead
require_relative 'prog_text_translation' # prog_text_translation.rb
def initialize(md,t_o)
@md,@t_o=md,t_o
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
if t_o.class==Hash
@txt =t_o[:txt] || nil
@subtitle=t_o[:subtitle] || nil
@@ -762,24 +770,24 @@ module SiSU_TeX_Pdf
p t_o.class
p caller
end
- @tx=SiSU_Env::Get_init.instance.tex
+ @tx=SiSU_Env::GetInit.instance.tex
@brace_url=SiSU_Viz::Skin.new.url_decoration
- @tex2pdf=@@tex3pdf ||=SiSU_Env::System_call.new.tex2pdf_engine
+ @tex2pdf=@@tex3pdf ||=SiSU_Env::SystemCall.new.tex2pdf_engine
@ps=@txt if @txt=~/(?:a4|letter|legal|book|a5|b5)/i
@lang ||=SiSU_i18n::Languages.new #.list[@md.opt.lng][:xlp]
@author=if defined? @md.creator.author \
and @md.creator.author=~/\S+/
- SiSU_TeX_Pdf::Special_characters.new(@md,@md.creator.author).special_characters_safe
+ SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.creator.author).special_characters_safe
else ''
end
@subject=if defined? @md.classify.subject \
and @md.classify.subject=~/\S+/
- SiSU_TeX_Pdf::Special_characters.new(@md,@md.classify.subject).special_characters_safe
+ SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.classify.subject).special_characters_safe
else ''
end
@keywords=if defined? @md.classify.keywords \
and @md.classify.keywords=~/\S+/
- SiSU_TeX_Pdf::Special_characters.new(@md,@md.classify.keywords).special_characters_safe
+ SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.classify.keywords).special_characters_safe
else ''
end
end
@@ -797,7 +805,7 @@ module SiSU_TeX_Pdf
end
if lang_char_arr.length > 0
lang_char_arr.slice(1..9).each { |ch| otherlang << @lang.list[ch][:xlp] }
- otherlang.uniq!
+ otherlang=otherlang.uniq
end
otherlang=otherlang.join(',')
{ mainlang: mainlang, otherlang: otherlang }
@@ -1171,59 +1179,58 @@ WOK
def a4generic
end
end
- class Special_characters
- def initialize(md,str,is='')
+ class SpecialCharacters
+ def initialize(md,str,is=:default)
@md,@txt,@is=md,str,is
@brace_url=SiSU_Viz::Skin.new.url_decoration
- @tex2pdf=@@tex3pdf ||=SiSU_Env::System_call.new.tex2pdf_engine
+ @tex2pdf=@@tex3pdf ||=SiSU_Env::SystemCall.new.tex2pdf_engine
end
- def xetex_code_listings(str,is='') # ~ ^ $ & % _ { } #LaTeX special characters - KEEP list
+ def xetex_code_listings(str,is=:default) # ~ ^ $ & % _ { } #LaTeX special characters - KEEP list
word=str.scan(/\S+|\n/) #unless line =~/^(?:@\S|%+\s)/
para_array=[]
str=if word
word.each do |w| # _ - / # | : ! ^ ~
- w.gsub!(/#{Mx[:gl_o]}#lt#{Mx[:gl_c]}/,'<'); w.gsub!(/#{Mx[:gl_o]}#gt#{Mx[:gl_c]}/,'>')
- w.gsub!(/[\\]?~/,'~')
- w.gsub!(/[#{Mx[:br_line]}#{Mx[:br_paragraph]}]/,"\n") #watch
- w.gsub!(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'~') #126 usual
- w.gsub!(/\\?\||#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|') #unless is=='code' #unless w=~/<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+>/ # | SiSU not really special sisu character but done, also LaTeX
+ w=w.gsub(/#{Mx[:gl_o]}#lt#{Mx[:gl_c]}/,'<').gsub(/#{Mx[:gl_o]}#gt#{Mx[:gl_c]}/,'>').
+ gsub(/[\\]?~/,'~').
+ gsub(/[#{Mx[:br_line]}#{Mx[:br_paragraph]}]/,"\n"). #watch
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'~'). #126 usual
+ gsub(/\\?\||#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|') #unless is=='code' #unless w=~/<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+>/ # | SiSU not really special sisu character but done, also LaTeX
para_array << w
end
str=para_array.join(' ')
- str=str.strip unless is=='code'
+ str=str.strip unless is==:code
str
else ''
end
- str.gsub(/\s*#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}\s*/,' ')
- str.gsub!(/.+?<-#>/,'')
- str.gsub!(/#{Mx[:br_eof]}/,'')
- str.gsub!(/#{Mx[:br_endnotes]}/,'')
+ str=str.gsub(/\s*#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}\s*/,' ').
+ gsub(/.+?<-#>/,'').
+ gsub(/#{Mx[:br_eof]}/,'').
+ gsub(/#{Mx[:br_endnotes]}/,'').
#problem sequence ->
- str.gsub!(/&(?:lt|#060);/,'<') # < SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#(?:gt|062)#{Mx[:gl_c]}/,'>') # > SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{') # { SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}') # } SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'~') # ~ SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#') # # SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!') # ! SiSU not really special sisu character but done, also LaTeX
- #str.gsub!(/(^|\s)\*\s/,'\1\asterisk ') # * should you wish to escape astrisk e.g. describing \*{bold}*
- str.gsub!(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*') # * should you wish to escape astrisk e.g. describing \*{bold}*
- str.gsub!(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-') # - SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#043#{Mx[:gl_c]}/,'+') # + SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#044#{Mx[:gl_c]}/,',') # + SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#038#{Mx[:gl_c]}/,'&') #unless @txt=~/<:code>/ # / SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/') # / SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\') # \ SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_') # _ SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|') # | SiSU not really special sisu character but done, also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#058#{Mx[:gl_c]}/,':') # : SiSU not really special sisu character but done, also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#094#{Mx[:gl_c]}|\^/,'^') # ^ SiSU not really special sisu character but done, also LaTeX
+ gsub(/&(?:lt|#060);/,'<'). # < SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#(?:gt|062)#{Mx[:gl_c]}/,'>'). # > SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). # { SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). # } SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'~'). # ~ SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). # # SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). # ! SiSU not really special sisu character but done, also LaTeX
+ #gsub(/(^|\s)\*\s/,'\1\asterisk '). # * should you wish to escape astrisk e.g. describing \*{bold}*
+ gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). # * should you wish to escape astrisk e.g. describing \*{bold}*
+ gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). # - SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#043#{Mx[:gl_c]}/,'+'). # + SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#044#{Mx[:gl_c]}/,','). # + SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#038#{Mx[:gl_c]}/,'&'). #unless @txt=~/<:code>/ # / SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). # / SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\'). # \ SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). # _ SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|'). # | SiSU not really special sisu character but done, also LaTeX
+ gsub(/#{Mx[:gl_o]}#058#{Mx[:gl_c]}/,':'). # : SiSU not really special sisu character but done, also LaTeX
+ gsub(/#{Mx[:gl_o]}#094#{Mx[:gl_c]}|\^/,'^'). # ^ SiSU not really special sisu character but done, also LaTeX
##watch placement, problem sequence ^
- str.gsub!(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ')
- str.gsub!(/\\copy(right|mark)?/,'<=copymark>') # ok problem with superscript
- str
+ gsub(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ').
+ gsub(/\\copy(right|mark)?/,'<=copymark>') # ok problem with superscript
end
- def xetex_special_characters_1(str,is='') # ~ ^ $ & % _ { } #LaTeX special characters - KEEP list
+ def xetex_special_characters_1(str,is=:default) # ~ ^ $ & % _ { } #LaTeX special characters - KEEP list
#str=Iconv.conv('ISO-8859-1', 'UTF-8', @txt) # `require': iconv will be deprecated in the future, use String#encode instead.
word=str.scan(/\S+|\n/) #unless line =~/^(?:@\S|%+\s)/
para_array=[]
@@ -1232,155 +1239,150 @@ WOK
if w !~/https?:/ \
and w=~/\/\S+?\// \
and w.length > 6
- w.gsub!(/([_.\/])/,'\1\-')
+ w=w.gsub(/([_.\/])/,'\1\-')
end
- w.gsub!(/#{Mx[:gl_o]}#lt#{Mx[:gl_c]}/,'<'); w.gsub!(/#{Mx[:gl_o]}#gt#{Mx[:gl_c]}/,'>')
- w.gsub!(/[\\]?~/,'<=tilde>')
- w.gsub!(/[#{Mx[:br_line]}#{Mx[:br_paragraph]}]/,' \newline ') #watch
- w.gsub!(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'<=tilde>') #126 usual
- w.gsub!(/\\?\||#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'\pipe') #unless is=='code' #unless w=~/<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+>/ # | SiSU not really special sisu character but done, also LaTeX
+ w=w.gsub(/#{Mx[:gl_o]}#lt#{Mx[:gl_c]}/,'<').gsub(/#{Mx[:gl_o]}#gt#{Mx[:gl_c]}/,'>').
+ gsub(/[\\]?~/,'<=tilde>').
+ gsub(/[#{Mx[:br_line]}#{Mx[:br_paragraph]}]/,' \newline '). #watch
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'<=tilde>'). #126 usual
+ gsub(/\\?\||#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'\pipe') #unless is=='code' #unless w=~/<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+>/ # | SiSU not really special sisu character but done, also LaTeX
if w !~/#{Mx[:rel_o]}/ \
and w !~/#{Mx[:gl_o]}#/
- w.gsub!(/\#/,'<=hash>')
+ w=w.gsub(/\#/,'<=hash>')
end
para_array << w
end
str=para_array.join(' ')
- str=str.strip unless is=='code'
+ str=str.strip unless is==:code
str
else ''
end
- str.gsub(/\s*#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}\s*/,' ')
- str.gsub!(/.+?<-#>/,'')
- str.gsub!(/#{Mx[:br_eof]}/,'')
- str.gsub!(/#{Mx[:br_endnotes]}/,'')
+ str=str.gsub(/\s*#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}\s*/,' ').
+ gsub(/.+?<-#>/,'').
+ gsub(/#{Mx[:br_eof]}/,'').
+ gsub(/#{Mx[:br_endnotes]}/,'')
#problem sequence ->
- str.gsub!(/&(?:nbsp);|#{Mx[:nbsp]}/,'\hardspace') unless is=='code' # < SiSU special character also LaTeX
- str.gsub!(/&(?:lt|#060);/,'\lt') # < SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#(?:gt|062)#{Mx[:gl_c]}/,'\gt') # > SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'\curlyopen') # { SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'\curlyclose') # } SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'<=tilde>') # ~ SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'\#') # # SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!') # ! SiSU not really special sisu character but done, also LaTeX
- str.gsub!(/(^|\s)\*\s/,'\1\asterisk ') # * should you wish to escape astrisk e.g. describing \*{bold}*
- str.gsub!(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'\*') # * should you wish to escape astrisk e.g. describing \*{bold}*
- str.gsub!(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-') # - SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#043#{Mx[:gl_c]}/,'+') # + SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#044#{Mx[:gl_c]}/,',') # + SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#038#{Mx[:gl_c]}/,'<=amp>') #unless @txt=~/<:code>/ # / SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'\slash') # / SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\textbackslash') # \ SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'<=underscore>') # _ SiSU special character also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|') # | SiSU not really special sisu character but done, also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#058#{Mx[:gl_c]}/,':') # : SiSU not really special sisu character but done, also LaTeX
- str.gsub!(/#{Mx[:gl_o]}#094#{Mx[:gl_c]}|\^/,'\caret') # ^ SiSU not really special sisu character but done, also LaTeX
+ str=str.gsub(/&(?:nbsp);|#{Mx[:nbsp]}/,'\hardspace') unless is==:code # < SiSU special character also LaTeX
+ str=str.gsub(/&(?:lt|#060);/,'\lt'). # < SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#(?:gt|062)#{Mx[:gl_c]}/,'\gt'). # > SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'\curlyopen'). # { SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'\curlyclose'). # } SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'<=tilde>'). # ~ SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'\#'). # # SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). # ! SiSU not really special sisu character but done, also LaTeX
+ gsub(/(^|\s)\*\s/,'\1\asterisk '). # * should you wish to escape astrisk e.g. describing \*{bold}*
+ gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'\*'). # * should you wish to escape astrisk e.g. describing \*{bold}*
+ gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). # - SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#043#{Mx[:gl_c]}/,'+'). # + SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#044#{Mx[:gl_c]}/,','). # + SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#038#{Mx[:gl_c]}/,'<=amp>'). #unless @txt=~/<:code>/ # / SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'\slash'). # / SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\textbackslash'). # \ SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'<=underscore>'). # _ SiSU special character also LaTeX
+ gsub(/#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|'). # | SiSU not really special sisu character but done, also LaTeX
+ gsub(/#{Mx[:gl_o]}#058#{Mx[:gl_c]}/,':'). # : SiSU not really special sisu character but done, also LaTeX
+ gsub(/#{Mx[:gl_o]}#094#{Mx[:gl_c]}|\^/,'\caret'). # ^ SiSU not really special sisu character but done, also LaTeX
##watch placement, problem sequence ^
- str.gsub!(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ')
- str.gsub!(/\\copy(right|mark)?/,'<=copymark>') # ok problem with superscript
- str
- end
- def xetex_special_characters_2(str,is='')
- str.gsub!(/#{Mx[:gl_o]}#156#{Mx[:gl_c]}/,'\oe ')
- str.gsub!(/\$/,'\$')
- str.gsub!(/\#/,'\#')
- str.gsub!(/\%/,'\%')
- str.gsub!(/\~/,'\~') #revist, should not be necessary to mark remaining tildes
+ gsub(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ').
+ gsub(/\\copy(right|mark)?/,'<=copymark>') # ok problem with superscript
+ end
+ def xetex_special_characters_2(str,is=:default)
+ str=str.gsub(/#{Mx[:gl_o]}#156#{Mx[:gl_c]}/,'\oe ').
+ gsub(/\$/,'\$').
+ gsub(/\#/,'\#').
+ gsub(/\%/,'\%').
+ gsub(/\~/,'\~') #revist, should not be necessary to mark remaining tildes
if str !~/^\s*#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image\s/
- str.gsub!(/_/,'\_')
+ str=str.gsub(/_/,'\_')
end
- str.gsub!(/\{/,'\{')
- str.gsub!(/\}/,'\}')
- if is=='code'
- str.gsub!(/&/,'{\\\&}')
- str.gsub!(/\\~(\\\{)/,'{$\tilde$}\1')
- str.gsub!(/(\\\})\\~/,'\1{$\tilde$}')
- str.gsub!(/\\~(\[)/,'{$\tilde$}\1')
- str.gsub!(/(\])\\~/,'\1{$\tilde$}')
- str.gsub!(/<=tilde>/,'{$\tilde$}')
- str.gsub!(/<=hash>/,'{\#}')
+ str=str.gsub(/\{/,'\{').
+ gsub(/\}/,'\}')
+ str=if is==:code
+ str.gsub(/&/,'{\\\&}').
+ gsub(/\\~(\\\{)/,'{$\tilde$}\1').
+ gsub(/(\\\})\\~/,'\1{$\tilde$}').
+ gsub(/\\~(\[)/,'{$\tilde$}\1').
+ gsub(/(\])\\~/,'\1{$\tilde$}').
+ gsub(/<=tilde>/,'{$\tilde$}').
+ gsub(/<=hash>/,'{\#}')
else
- str.gsub!(/&nbsp;|#{Mx[:nbsp]}/,'~') # ~ character for hardspace
- str.gsub!(/&/,'<=amp>')
+ str.gsub(/&nbsp;|#{Mx[:nbsp]}/,'~'). # ~ character for hardspace
+ gsub(/&/,'<=amp>')
end
- str.gsub!(/&\S+?;/,' ')
- str.gsub!(/§/u,'\S') #latex: space between next character not preserved? #str.gsub!(/§ /,'\S ')
- str.gsub!(/£/u,'\pounds')
- str.gsub!(/<a href=".+?">/,' ')
- str.gsub!(/<\/a>/,' ')
- str.gsub!(/((?:^|\s)#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- '\1\begin{scriptsize}\url{\2}\end{scriptsize}\3') #special case \{ e.g. \}http://url
- str.gsub!(/#{Mx[:url_o]}\\_(\S+?)#{Mx[:url_c]}/,
- '\begin{scriptsize}\url{\1}\end{scriptsize}') #special case \{ e.g. \}http://url
- str.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
- '\begin{scriptsize}\\url{\1}\end{scriptsize}') #specially escaped url no decoration
- unless is=='code'
- str.gsub!(/(^|#{Mx[:gl_c]}|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"\s]+?)([;.,]?(?=\s|$))/,
+ str=str.gsub(/&\S+?;/,' ').
+ gsub(/§/u,'\S'). #latex: space between next character not preserved? #str.gsub(/§ /,'\S ')
+ gsub(/£/u,'\pounds').
+ gsub(/<a href=".+?">/,' ').
+ gsub(/<\/a>/,' ').
+ gsub(/((?:^|\s)#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
+ '\1\begin{scriptsize}\url{\2}\end{scriptsize}\3'). #special case \{ e.g. \}http://url
+ gsub(/#{Mx[:url_o]}\\_(\S+?)#{Mx[:url_c]}/,
+ '\begin{scriptsize}\url{\1}\end{scriptsize}'). #special case \{ e.g. \}http://url
+ gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
+ '\begin{scriptsize}\\url{\1}\end{scriptsize}') #specially escaped url no decoration
+ unless is==:code
+ str=str.gsub(/(^|#{Mx[:gl_c]}|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"\s]+?)([;.,]?(?=\s|$))/,
"\\1#{@brace_url.tex_open}\\begin{scriptsize}\\url{\\2}\\end{scriptsize}#{@brace_url.tex_close}\\3") #url matching with decoration <url> positive lookahead, sequence issue with { linked }http://url cannot use \b at start
- else #code-block: angle brackets special characters, note _ already escaped
- str.gsub!(/\\_</m,'{\UseTextSymbol{OML}{<}}')
- str.gsub!(/\\_>/m,'{\UseTextSymbol{OML}{>}}')
end
- str.gsub!(/<:ee>/,'')
- str.gsub!(/<!>/,' ')
+ str=str.gsub(/<:ee>/,'').
+ gsub(/<!>/,' ').
#proposed change, insert, but may be redundant
- str.gsub!(/<(br|p)>|<\/\s*(br|p)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ") # Work Area
- str.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\begin{bfseries}\1 \end{bfseries}')
- str.gsub!(/<h\d+>(.+?)<\/h\d+>/,'\begin{bfseries}\1 \end{bfseries}')
- str.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\emph{\1}')
- str.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\uline{\1}') # ulem
- str.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,"``\\1''") # quote #CHECK
- str.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\uline{\1}') # ulem
- str.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\sout{\1}') # ulem
- str.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,"\$^{\\textrm{\\1}}\$")
- str.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,"\$_{\\textrm{\\1}}\$")
- str.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\begin{monosp}\1\end{monosp}')
- unless is=='code'
- str.gsub!(/"(.+?)"/,'“\1”') # quote marks / quotations open & close " need condition exclude for code
- str.gsub!(/\s+"/,' “') # open "
- str.gsub!(/^(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*"/,'\1“') #fix Mx[:lv_o] # open "
- str.gsub!(/"(\s|\.|,|:|;)/,'”\1') # close "
- str.gsub!(/"(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*$/,'”\1') #fix Mx[:lv_o] # close "
- str.gsub!(/"(\.|,)/,'”') # close "
- str.gsub!(/\s+'/,' `') # open '
- str.gsub!(/^(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*'/,'\1`') #fix Mx[:lv_o] # open '
+ gsub(/<(br|p)>|<\/\s*(br|p)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} "). # Work Area
+ gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\begin{bfseries}\1 \end{bfseries}').
+ gsub(/<h\d+>(.+?)<\/h\d+>/,'\begin{bfseries}\1 \end{bfseries}').
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\emph{\1}').
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\uline{\1}'). # ulem
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,"``\\1''"). # quote #CHECK
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\uline{\1}'). # ulem
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\sout{\1}'). # ulem
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,"\$^{\\textrm{\\1}}\$").
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,"\$_{\\textrm{\\1}}\$").
+ gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\begin{monosp}\1\end{monosp}')
+ unless is==:code
+ str=str.gsub(/"(.+?)"/,'“\1”'). # quote marks / quotations open & close " need condition exclude for code
+ gsub(/\s+"/,' “'). # open "
+ gsub(/^(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*"/,'\1“'). #fix Mx[:lv_o] # open "
+ gsub(/"(\s|\.|,|:|;)/,'”\1'). # close "
+ gsub(/"(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*$/,'”\1'). #fix Mx[:lv_o] # close "
+ gsub(/"(\.|,)/,'”'). # close "
+ gsub(/\s+'/,' `'). # open '
+ gsub(/^(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*'/,'\1`') #fix Mx[:lv_o] # open '
end
- str.gsub!(/(<font.*?>|<\/font>)/,'')
- str.gsub!(/\s*#{Mx[:fa_superscript_o]}(\S+?)#{Mx[:fa_superscript_c]}/,'^\1')
+ str=str.gsub(/(<font.*?>|<\/font>)/,'').
+ gsub(/\s*#{Mx[:fa_superscript_o]}(\S+?)#{Mx[:fa_superscript_c]}/,'^\1')
str
end
def xetex_special_characters_3(str)
- str.gsub!(/<br(\s*[^\/][^>])/,'\1') # clean up, incredibly messy :-( footnote indents, problems if match exists in ordinary paragraphs? check! Work Area 200501 a bit tricky as must be able to match multiple times, and to clean remainder
- str.gsub!(/([^<][^b][^r]\s+)\/>/,'\1') # clean up, incredibly messy :-( footnote indents, problems if match exists in ordinary paragraphs? check! Work Area 200501 a bit tricky as must be able to match multiple times, and to clean remainder
+ str=str.gsub(/<br(\s*[^\/][^>])/,'\1'). # clean up, incredibly messy :-( footnote indents, problems if match exists in ordinary paragraphs? check! Work Area 200501 a bit tricky as must be able to match multiple times, and to clean remainder
+ gsub(/([^<][^b][^r]\s+)\/>/,'\1') # clean up, incredibly messy :-( footnote indents, problems if match exists in ordinary paragraphs? check! Work Area 200501 a bit tricky as must be able to match multiple times, and to clean remainder
while str =~/(https?:\/\/\S+?)(?:<=tilde>\S+)+/ #tilde in urls \href treated differently from text #FIX
- str.gsub!(/(https?:\/\/\S+?)(?:<=tilde>(\S+))+/,'\1~\2')
+ str=str.gsub(/(https?:\/\/\S+?)(?:<=tilde>(\S+))+/,'\1~\2')
end
- str.gsub!(/<=tilde>/,'{$\tilde$}')
- str.gsub!(/(https?:\/\/\S+?)(?:(?:<=hash>)(\S+))+/,'\1#\2') #hash in urls \href treated differently from text #FIX
- str.gsub!(/<=hash>/,'{\#}')
+ str=str.gsub(/<=tilde>/,'{$\tilde$}').
+ gsub(/(https?:\/\/\S+?)(?:(?:<=hash>)(\S+))+/,'\1#\2'). #hash in urls \href treated differently from text #FIX
+ gsub(/<=hash>/,'{\#}')
while str =~/(https?:\/\/\S+?)(?:<=amp>\S+)+/ #amp in urls \href treated differently from text #FIX
- str.gsub!(/(https?:\/\/\S+?)(?:<=amp>(\S+))+/,'\1&\2')
+ str=str.gsub(/(https?:\/\/\S+?)(?:<=amp>(\S+))+/,'\1&\2')
end
- str.gsub!(/<=amp>/,'{\\\&}') #changed ... 2005
- str.gsub!(/<=copymark>\s*(.+)/,
- '^\copyright \textnormal{\1} \2') # watch likely to be problematic
+ str=str.gsub(/<=amp>/,'{\\\&}'). #changed ... 2005
+ gsub(/<=copymark>\s*(.+)/,
+ '^\copyright \textnormal{\1} \2') # watch likely to be problematic
str
end
def special_characters_safe_close(str)
- str.gsub!(/<=tilde>/,'{$\tilde$}')
- str.gsub!(/<=hash>/,'{\#}')
- str.gsub!(/<=amp>/,'{\\\&}') #changed ... 2005
- str.gsub!(/<=copymark>\s*(.+)/,
- '^\copyright \textnormal{\1} \2') # watch likely to be problematic
- str
+ str=str.gsub(/<=tilde>/,'{$\tilde$}').
+ gsub(/<=hash>/,'{\#}').
+ gsub(/<=amp>/,'{\\\&}'). #changed ... 2005
+ gsub(/<=copymark>\s*(.+)/,
+ '^\copyright \textnormal{\1} \2') # watch likely to be problematic
end
def special_characters_code_fix(str)
- str.gsub!(/<=tilde>/,'{$\tilde$}')
+ str=str.gsub(/<=tilde>/,'{$\tilde$}')
str
end
def special_characters_unsafe_1(str) #depreciated, make obsolete
# some substitutions are sequence sensitive, rearrange with care.
- str.gsub!(/\\textbackslash (copyright|clearpage|newpage)/,"\\\\\\1") #kludge bad solution, find out where tail is sent through specChar !
+ str=str.gsub(/\\textbackslash (copyright|clearpage|newpage)/,"\\\\\\1") #kludge bad solution, find out where tail is sent through specChar !
str
end
def special_characters #special characters - some substitutions are sequence sensitive, rearrange with care.
@@ -1393,8 +1395,8 @@ WOK
end
def special_word_break_points
str=@txt
- str.gsub!(/([_,.;:\/|=])/,'\1\-')
- str.gsub!(/(--)(\S{4,})/,'\1\-\2')
+ str=str.gsub(/([_,.;:\/|=])/,'\1\-').
+ gsub(/(--)(\S{4,})/,'\1\-\2')
@txt=str
end
def special_number_break_points
@@ -1416,16 +1418,16 @@ WOK
end
def special_characters_code
str=@txt
- str.gsub!(/ \\\\([ #{Mx[:br_nl]}]+|$)/,' \textbackslash\textbackslash\hardspace\1')
+ str=str.gsub(/ \\\\([ #{Mx[:br_nl]}]+|$)/,' \textbackslash\textbackslash\hardspace\1')
str
end
end
- class Use_TeX
+ class UseTeX
attr_accessor :url,:txt,:date
def initialize(md)
@md=md
- @vz=SiSU_Env::Get_init.instance.skin
- @date=SiSU_Env::Info_date.new # #{@date.year}
+ @vz=SiSU_Env::GetInit.instance.skin
+ @date=SiSU_Env::InfoDate.new # #{@date.year}
@copymark='{\\begin{footnotesize}\\raisebox{1ex}{\\copyright}\\end{footnotesize}}'
@brace_url=SiSU_Viz::Skin.new.url_decoration
end
@@ -1499,7 +1501,7 @@ WOK
end
end
def sisu_rights
- v=SiSU_Env::Info_version.instance.get_version
+ v=SiSU_Env::InfoVersion.instance.get_version
base_prog_txt=if @md.base_program
case @md.base_program
when /kdissert/i; "\n\\\\ This document prepared using \\href{http://freehackers.org/~tnagy/kdissert/}{Kdissert \\ http://freehackers.org/~tnagy/kdissert/ } \\\\ Kdissert is Document Mapping software by Thomas Nagy"
@@ -1527,7 +1529,7 @@ WOK
" \\footnote{%\nGenerated by \\href{http://www.jus.uio.no/sisu}{SiSU} \\ \\href{http://www.jus.uio.no/sisu}{www.jus.uio.no/sisu} \\newline \\href{http://www.sisudoc.org}{www.sisudoc.org} \\\n}"
end
def doc_sc_info
- v=SiSU_Env::Info_version.instance.get_version
+ v=SiSU_Env::InfoVersion.instance.get_version
<<WOK
\\\\
{\\begin{footnotesize}
@@ -1539,7 +1541,7 @@ Generated by \\href{http://www.jus.uio.no/sisu}{SiSU www.jus.uio.no/sisu }\\- ve
WOK
end
def doc_no_sc_info
- v=SiSU_Env::Info_version.instance.get_version
+ v=SiSU_Env::InfoVersion.instance.get_version
<<WOK
\\\\
{\\begin{small}
@@ -1560,9 +1562,9 @@ WOK
WOK
end
def doc_tail
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
base_html="#{dir.url.root}/#{@md.fnb}"
- v=SiSU_Env::Info_version.instance.get_version
+ v=SiSU_Env::InfoVersion.instance.get_version
sisu_ico=if FileTest.file?("#{dir.path.image_source_include}/sisu.png")
"\\includegraphics*[width=60pt]{#{dir.path.image_source_include}/sisu.png}"
else
@@ -1600,7 +1602,7 @@ WOK
WOK
end
def mail_tail #not retested, the old mail_tail is commented out and appended to this program
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
<<WOK
\\subsection*{Mail sender details}
\\addcontentsline{toc}{subsection}{Mail sender details}
diff --git a/lib/sisu/v3/update.rb b/lib/sisu/v3/update.rb
index 5b5430e2..f4ad275c 100644
--- a/lib/sisu/v3/update.rb
+++ b/lib/sisu/v3/update.rb
@@ -56,7 +56,7 @@
** Description: update previous output (with similar output file type formats)
=end
-module SiSU_Update_control_flag
+module SiSU_UpdateControlFlag
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
include SiSU_Param
@@ -67,23 +67,23 @@ module SiSU_Update_control_flag
end
def read
begin
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
out=@env.path.output
base_path="#{out}/#{@md.fnb}"
SiSU_Screen::Ansi.new(@md.opt.cmd,'Checking previous output',base_path).green_hi_blue unless @md.opt.cmd =~/q/
- Set_CF.new(@md).set_flags
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ SetCF.new(@md).set_flags
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
private
- class Set_CF
+ class SetCF
def initialize(md)
@md=md
- @env=SiSU_Env::Info_env.new(@md.fns)
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
out=@env.path.output
@base_path="#{out}/#{@md.fnb}"
- @pdf_fn=SiSU_Env::SiSU_file.new(@md).base_filename
+ @pdf_fn=SiSU_Env::FileOp.new(@md).base_filename
end
def set_flags #-mNhwpoabxXyv
flag='-v'
diff --git a/lib/sisu/v3/urls.rb b/lib/sisu/v3/urls.rb
index a2385376..31614a37 100644
--- a/lib/sisu/v3/urls.rb
+++ b/lib/sisu/v3/urls.rb
@@ -56,7 +56,7 @@
** Description: urls for output files
=end
-module SiSU_urls
+module SiSU_Urls
require_relative 'particulars' # particulars.rb
include SiSU_Particulars
require_relative 'sysenv' # sysenv.rb
@@ -68,24 +68,24 @@ module SiSU_urls
end
def read
begin
- SiSU_urls::Output_urls.new(@opt).songsheet if @opt.fnb
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd).error
+ SiSU_Urls::OutputUrls.new(@opt).songsheet if @opt.fnb
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd).error
ensure
end
end
end
- class Output_urls
+ class OutputUrls
attr_reader :fns,:fnb,:cmd,:dir,:m_regular,:u
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_env_md(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_env_md(opt)
@cmd=@opt.cmd
@md=@particulars.md
@env=@particulars.env
@fnb=@env.fnb
- fn_set_lang=SiSU_Env::Standardise_language.new(@opt.lng).language
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
@fnl=@env.i18n.lang_filename(fn_set_lang[:c])
- @fn=SiSU_Env::Env_call.new(@opt.fns).lang(fn_set_lang[:c])
+ @fn=SiSU_Env::EnvCall.new(@opt.fns).lang(fn_set_lang[:c])
@m_regular=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/
@prog=@env.program
source=if @opt.fns =~/\.sst$/; @opt.fns
@@ -124,7 +124,7 @@ module SiSU_urls
def songsheet
begin
@opt.cmd=~/U/ ? urls_all : (urls_select unless @opt.cmd=~/q/)
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -215,7 +215,7 @@ module SiSU_urls
SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x} DBI psql","#{@pwd_stub}::#{@opt.fns}",y).result
end
def sqlite(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x} DBI sqlite","sqlite3 #{@env.path.webserv}/#{@md.opt.f_pth[:pth_stub]}/sisu_sqlite.db", "#{y}").result
+ SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x} DBI sqlite","sqlite3 #{@md.file.output_path.sqlite_discreet.dir}/#{@md.file.base_filename.sqlite_discreet}\n sqlite3 #{@env.path.webserv}/#{@md.opt.f_pth[:pth_stub]}/sisu_sqlite.db\n", "#{y}").result
end
self
end
diff --git a/lib/sisu/v3/webrick.rb b/lib/sisu/v3/webrick.rb
index 88fb67ef..42281321 100644
--- a/lib/sisu/v3/webrick.rb
+++ b/lib/sisu/v3/webrick.rb
@@ -61,7 +61,7 @@ def brick(port,get='')
cgidir=if get=~/pwd/; Dir.pwd
else '/usr/lib/cgi-bin' # @env.path.cgi
end
- port=SiSU_Env::Info_port.new.webrick
+ port=SiSU_Env::InfoPort.new.webrick
begin
s=HTTPServer.new(
Port: port,
@@ -75,7 +75,7 @@ def brick(port,get='')
s.mount('/cgi-bin', HTTPServlet::FileHandler, cgi_dir, { FancyIndexing: true })
trap("INT"){ s.shutdown }
s.start
- rescue; SiSU_Errors::Info_error.new($!,$@,'-W',nil).error #fix
+ rescue; SiSU_Errors::InfoError.new($!,$@,'-W',nil).error #fix
ensure
end
end
@@ -86,8 +86,8 @@ begin #
require_relative 'sysenv' # sysenv.rb
include SiSU_Env; include SiSU_Screen
@cX=SiSU_Screen::Ansi.new('yes').cX
- @env=SiSU_Env::Info_env.new
- port=SiSU_Env::Info_port.new
+ @env=SiSU_Env::InfoEnv.new
+ port=SiSU_Env::InfoPort.new
@argv=$*
@host=@env.url.webrick
host='localhost'
@@ -168,7 +168,7 @@ WOK
brick(@port,get)
rescue;
require_relative 'sysenv' # sysenv.rb
- SiSU_Errors::Info_error.new($!,$@,'-W',nil).error #fix
+ SiSU_Errors::InfoError.new($!,$@,'-W',nil).error #fix
ensure
end
__END__
diff --git a/lib/sisu/v3/wikispeak.rb b/lib/sisu/v3/wikispeak.rb
index a524981b..955432c0 100644
--- a/lib/sisu/v3/wikispeak.rb
+++ b/lib/sisu/v3/wikispeak.rb
@@ -76,7 +76,7 @@ module SiSU_Wikispeak
def read
begin
@md=SiSU_Param::Parameters.new(@opt).get
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
path=@env.path.output_tell
tool=(@opt.cmd =~/[MVv]/) \
? "#{@env.program.text_editor} #{path}/#{@md.fnb}/#{@md.fn[:wiki]}"
@@ -85,13 +85,13 @@ module SiSU_Wikispeak
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output_tell}/#{@md.fnb}/#{@md.fn[:wiki]}").flow if @opt.cmd =~/[MV]/
@dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
SiSU_Wikispeak::Source::Scroll.new(@dal_array,@md).songsheet
- SiSU_Env::Info_skin.new(@md).select #watch
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_Env::InfoSkin.new(@md).select #watch
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
private
- class Split_text_object <Source
+ class SplitTextObject <Source
require_relative 'plaintext_format' # plaintext_format.rb
include Format
include SiSU_Viz
@@ -101,7 +101,7 @@ module SiSU_Wikispeak
def initialize(para)
@para=para
@format,@ocn='ordinary','ordinary'
- @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
end
def lev_segname_para_ocn
@text=nil
@@ -132,23 +132,23 @@ module SiSU_Wikispeak
end
format=@format.dup
@lev_para_ocn=if @para =~/.+#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{#Mx[:id_c]}$/
- Format::Format_text_object.new(format,@text,@ocn)
+ Format::FormatTextObject.new(format,@text,@ocn)
else
- Format::Format_text_object.new(format,@text,"#{Mx[:id_o]}~(\d+);[um]\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}")
+ Format::FormatTextObject.new(format,@text,"#{Mx[:id_o]}~(\d+);[um]\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}")
end
self
end
end
class Scroll <Source
require_relative 'shared_txt' # shared_txt.rb
- include SiSU_text_utils
+ include SiSU_TextUtils
@@endnotes_para=[]
@@wiki={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] }
@@dp=nil
def initialize(data,md)
@data,@md=data,md
- @vz=SiSU_Env::Get_init.instance.skin
- @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ @vz=SiSU_Env::GetInit.instance.skin
+ @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
@regx=/^(?:(?:#{Mx[:br_line]}\s*|#{Mx[:br_nl]}\s*)?#{Mx[:lv_o]}\d:(\S*?)#{Mx[:lv_c]}\s*)?(.+)/ #fix Mx[:lv_o] #m # 2004w18 pb pn removal added
@tab="\t"
@@dostype='unix footnotes'
@@ -164,7 +164,7 @@ module SiSU_Wikispeak
@n=[]
end
def wiki_metadata(meta)
- util=SiSU_text_utils::Wrap.new(meta.text,70,15,1)
+ util=SiSU_TextUtils::Wrap.new(meta.text,70,15,1)
txt=util.line_wrap
@@wiki[:metadata] <<= if meta.type=='meta'
<<WOK
@@ -175,8 +175,8 @@ WOK
end
end
def wiki_tail
- SiSU_Env::Info_skin.new(@md).select
- vz=SiSU_Env::Get_init.instance.skin
+ SiSU_Env::InfoSkin.new(@md).select
+ vz=SiSU_Env::GetInit.instance.skin
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}"
@@ -227,7 +227,7 @@ WOK
end
def markup # Used for major markup instructions
data=@data
- dir=SiSU_Env::Info_env.new(@md.fns)
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
@data_mod,@endnotes,@level,@cont,@copen,@wiki_contents_close=Array.new(6){[]}
(0..6).each { |x| @cont[x]=@level[x]=false }
(4..6).each { |x| @wiki_contents_close[x]='' }
@@ -257,16 +257,16 @@ WOK
para.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*#{Mx[:lnk_c]}\S+/,'[image: "\1"]')
wordlist=para.scan(/\S+/)
if para =~/^@(\S+?):\s+(.+?)\Z/m # for headers
- d_meta=SiSU_text_utils::Header_scan.new(@md,para).meta
+ d_meta=SiSU_TextUtils::HeaderScan.new(@md,para).meta
if d_meta; wiki_metadata(d_meta)
end
end
if para !~/(^@\S+?:|#{Mx[:br_endnotes]}|#{Mx[:br_eof]})/
if para =~@regx #/.+?<~\d+;\w\d+;\w\d+>.*/ #watch change
paranum=para[@regx,3]
- @p_num=Format::Paragraph_number.new(paranum)
+ @p_num=Format::ParagraphNumber.new(paranum)
end
- @sto=Split_text_object.new(para).lev_segname_para_ocn
+ @sto=SplitTextObject.new(para).lev_segname_para_ocn
### problem in scroll, it appears tables are getting paragraph numbers
m=/#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/
if para =~m \
@@ -281,7 +281,7 @@ WOK
when /^(3)~(?:(\S+))?/
wiki_structure(para,$1,@sto.ocn,$2)
@sto.lev_para_ocn.heading_body3
- when /^(4)~(\S+)/ # work on see SiSU_text_parts::Split_text_object
+ when /^(4)~(\S+)/ # work on see SiSU_text_parts::SplitTextObject
wiki_structure(para,$1,@sto.ocn,$2)
@sto.lev_para_ocn.heading_body4
when /^(5)~(?:(\S+))?/
@@ -305,7 +305,7 @@ WOK
elsif para =~/(#{Mx[:tc_p]}|#{Mx[:gr_o]}Th?)/u #tables ! #fix
elsif para =~/(.*)<!#!>(.*)/
one,two=$1,$2
- format_text=Format_text_object.new(one,two)
+ format_text=FormatTextObject.new(one,two)
para=format_text.seg_no_paranum
end
if (para =~/<a name="n\d+">/ \
@@ -315,12 +315,12 @@ WOK
case para
when /<:i1>/
if para =~/.*<:#>.*$/
- format_text=Format_text_object.new(para,'')
+ format_text=FormatTextObject.new(para,'')
para=format_text.scr_indent_one_no_paranum
end
when /<:i2>/
if para =~/.*<:#>.*$/
- format_text=Format_text_object.new(para,'')
+ format_text=FormatTextObject.new(para,'')
para=format_text.scr_indent_one_no_paranum
end
end
@@ -329,7 +329,7 @@ WOK
end
if para =~/<:center>/
one,two=/(.*)<:center>(.*)/.match(para)[1,2]
- format_text=Format_text_object.new(one,two)
+ format_text=FormatTextObject.new(one,two)
para=format_text.center
end
para.gsub!(/<!.+!>/,' ') if para ## Clean Prepared Text
@@ -355,8 +355,8 @@ WOK
@content,@md=content,md
end
def wiki #%wiki output
- SiSU_Env::SiSU_file.new(@md).mkdir
- filename_wiki=SiSU_Env::SiSU_file.new(@md,@md.fn[:wiki]).mkfile
+ SiSU_Env::FileOp.new(@md).mkdir
+ filename_wiki=SiSU_Env::FileOp.new(@md,@md.fn[:wiki]).mkfile
@sisu=[]
@content.each do |para| # this is a hack
if para =~/^\S/
diff --git a/lib/sisu/v3/xhtml.rb b/lib/sisu/v3/xhtml.rb
index 6f8c6da5..c537275c 100644
--- a/lib/sisu/v3/xhtml.rb
+++ b/lib/sisu/v3/xhtml.rb
@@ -64,9 +64,9 @@ module SiSU_XHTML
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_munge
+ include SiSU_XML_Munge
require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_format
+ include SiSU_XML_Format
require_relative 'rexml' # rexml.rb
include SiSU_Rexml
require_relative 'shared_metadata' # shared_metadata.rb
@@ -75,7 +75,7 @@ module SiSU_XHTML
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
begin
@@ -95,7 +95,7 @@ module SiSU_XHTML
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"/#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}").flow if @opt.cmd =~/[MV]/
end
SiSU_XHTML::Source::Songsheet.new(@particulars).song
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -103,14 +103,14 @@ module SiSU_XHTML
class Songsheet
def initialize(particulars)
@env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
end
def song
begin
SiSU_XHTML::Source::Scroll.new(@particulars).songsheet
SiSU_XHTML::Source::Tidy.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
SiSU_Rexml::Rexml.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
@@ -118,15 +118,15 @@ module SiSU_XHTML
class Scroll
require_relative 'shared_xhtml' # shared_xhtml.rb #check already called
require_relative 'shared_txt' # shared_txt.rb
- include SiSU_text_utils
+ 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
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
@tab="\t"
- @trans=SiSU_XML_munge::Trans.new(@md)
- @sys=SiSU_Env::System_call.new
+ @trans=SiSU_XML_Munge::Trans.new(@md)
+ @sys=SiSU_Env::SystemCall.new
end
def songsheet
pre
@@ -136,39 +136,39 @@ module SiSU_XHTML
end
protected
def embedded_endnotes(dob='')
- dob.obj.gsub!(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><number>\1</number><note>\2</note></endnote> ')
- dob.obj.gsub!(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
- dob.obj.gsub!(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
+ '<endnote><number>\1</number><note>\2</note></endnote> ').
+ gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
+ '<endnote><symbol>\1</symbol><note>\2</note></endnote> ').
+ gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
+ '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
end
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]})/)
notes.flatten.each do |e|
s=e.to_s
- util=SiSU_text_utils::Wrap.new(s,70)
+ util=SiSU_TextUtils::Wrap.new(s,70)
wrap=util.line_wrap
- wrap.gsub!(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
+ wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
#{Ax[:tab]*1}<endnote notenumber="\\1">
#{Ax[:tab]*2}\\1. \\2
#{Ax[:tab]*1}</endnote>
WOK
-)
- wrap.gsub!(/^([*+]\d+)\s+(.+?)\s*\Z/m, <<WOK
+).
+ gsub(/^([*+]\d+)\s+(.+?)\s*\Z/m, <<WOK
#{Ax[:tab]*1}<endnote symbol="\\1">
#{Ax[:tab]*2}\\1 \\2
#{Ax[:tab]*1}</endnote>
WOK
-)
- wrap.gsub!(/^([*+]+)\s+(.+?)\s*\Z/m, <<WOK
+).
+ gsub(/^([*+]+)\s+(.+?)\s*\Z/m, <<WOK
#{Ax[:tab]*1}<endnote symbol="\\1.length">
#{Ax[:tab]*2}\\1 \\2
#{Ax[:tab]*1}</endnote>
WOK
)
#KEEP alternative presentation of endnotes
-# wrap.gsub!(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
+# wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
##{Ax[:tab]*1}<p class="endnote" notenumber="\\1">
##{Ax[:tab]*2}\\1. \\2
##{Ax[:tab]*1}</p>
@@ -178,7 +178,7 @@ WOK
end
end
def xml_head
- metadata=Metadata::Summary.new(@md).xhtml_scroll.metadata
+ metadata=SiSU_Metadata::Summary.new(@md).xhtml_scroll.metadata
@@xml[:head] << metadata
end
def name_tags(dob)
@@ -192,18 +192,19 @@ WOK
tags
end
def xml_structure(dob,type='norm')
- if dob.is =~/para|heading/
+ if dob.is ==:para \
+ || dob.is ==:heading
named=name_tags(dob)
- if dob.is=='heading'
+ if dob.is==:heading
lv=dob.ln
n=dob.ln - 1
n3=dob.ln + 2
else lv=nil
end
extract_endnotes(dob)
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- util=SiSU_text_utils::Wrap.new(dob.obj,70)
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
+ util=SiSU_TextUtils::Wrap.new(dob.obj,70)
wrapped=util.line_wrap
@@xml[:body] << if defined? dob.ocn
%{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@ -220,9 +221,9 @@ WOK
def block_structure(dob)
named=name_tags(dob)
dob=@trans.markup_block(dob)
- dob.obj.strip!
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
+ dob.obj=dob.obj.strip.
+ gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="block">#{named}#{Ax[:tab]*1}}
@@ -233,9 +234,9 @@ WOK
def group_structure(dob)
named=name_tags(dob)
dob=@trans.markup_group(dob)
- dob.obj.strip!
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
+ dob.obj=dob.obj.strip.
+ gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="group">#{named}#{Ax[:tab]*1}}
@@ -246,7 +247,7 @@ WOK
def poem_structure(dob)
named=name_tags(dob)
dob=@trans.markup_group(dob)
- dob.obj.strip!
+ dob.obj=dob.obj.strip
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="verse">#{named}#{Ax[:tab]*1}}
@@ -257,8 +258,7 @@ WOK
def code_structure(dob)
named=name_tags(dob)
dob=@trans.markup_group(dob)
- dob.obj.gsub!(/\s\s/,'&#160;&#160;')
- dob.obj.strip!
+ dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;').strip
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="code">#{named}#{Ax[:tab]*1}}
@@ -268,7 +268,7 @@ WOK
end
def table_structure(dob)
named=name_tags(dob)
- table=SiSU_XHTML_shared::Table_xhtml.new(dob)
+ table=SiSU_XHTML_Shared::TableXHTML.new(dob)
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*2}#{named}#{table.table.obj}}
@@ -292,11 +292,11 @@ WOK
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
if defined? dob.ocn #look to move to format section
ocn=(dob.ocn.to_s =~/\d+/) ? dob.ocn : nil
- @p_num=SiSU_XML_format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,ocn)
end
if not @rcdc
- x=SiSU_XML_format::Format_seg.new(@md,dob)
- if dob.is=='heading'
+ x=SiSU_XML_Format::FormatSeg.new(@md,dob)
+ if dob.is==:heading
xml_structure(dob)
dob.obj=case dob.ln
when 1; x.heading_body1
@@ -307,25 +307,25 @@ WOK
when 6; x.heading_body6
end
else
- if dob.is =='verse'
+ if dob.is ==:verse
poem_structure(dob)
- elsif dob.is =='group'
+ elsif dob.is ==:group
group_structure(dob)
- elsif dob.is =='block'
+ elsif dob.is ==:block
block_structure(dob)
- elsif dob.is =='code'
+ elsif dob.is ==:code
code_structure(dob)
- elsif dob.is =='table'
+ elsif dob.is ==:table
table_structure(dob)
- elsif dob.is =='para' \
+ elsif dob.is ==:para \
and dob.indent.to_s =~/[1-9]/ \
and dob.bullet_==true
xml_structure(dob,"indent_bullet#{dob.indent}")
- elsif dob.is =='para' \
+ elsif dob.is ==:para \
and dob.indent.to_s =~/[1-9]/ \
and dob.indent == dob.hang
xml_structure(dob,"indent#{dob.indent}")
- elsif dob.is=='para' \
+ elsif dob.is==:para \
and dob.hang.to_s =~/[0-9]/ \
and dob.indent != dob.hang
xml_structure(dob,"hang#{dob.hang.to_s}_indent#{dob.indent.to_s}")
@@ -335,7 +335,7 @@ WOK
if dob.obj =~/.*<:#>.*$/ #investigate removal
dob.obj=if dob.obj =~ /#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/
txt_obj={ txt: dob }
- format_text=Format_text_object.new(@md,txt_obj)
+ format_text=FormatTextObject.new(@md,txt_obj)
format_text.scr_inden_ocn_e_no_paranum
end
end
@@ -343,7 +343,7 @@ WOK
end
else #
end
- dob.obj.gsub!(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
+ dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
end
end
6.downto(4) do |x|
@@ -356,14 +356,14 @@ WOK
end
end
def pre
- rdf=SiSU_XML_tags::RDF.new(@md)
- dir=SiSU_Env::Info_env.new
+ rdf=SiSU_XML_Tags::RDF.new(@md)
+ dir=SiSU_Env::InfoEnv.new
@@xml[:head],@@xml[:body]=[],[]
- css=SiSU_Env::CSS_stylesheet.new(@md)
+ stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xhtml').stylesheet
encoding=(@sys.locale =~/utf-?8/i) ? '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' : '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
@@xml[:open] =<<WOK
#{encoding}
-#{css.xhtml}
+#{stylesheet.css_head_xml}
#{rdf.comment_xml}
<document>
WOK
@@ -380,7 +380,7 @@ WOK
content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
content << @@xml[:owner_details] if @md.stmp =~/\w\w/
content << @@xml[:tail] << @@xml[:close]
- content.flatten!.compact!
+ content=content.flatten.compact
Output.new(content,@md).xhtml
@@xml={}
end
@@ -388,13 +388,13 @@ WOK
class Output
def initialize(data,md)
@data,@md=data,md
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
end
def xhtml
- SiSU_Env::SiSU_file.new(@md).mkdir
+ SiSU_Env::FileOp.new(@md).mkdir
filename_xml=@file.write_file.xhtml
@data.each do |str|
- str.gsub!(/\A\s+\Z/m,'') #str.gsub!(/^\s+$/,'')
+ str=str.gsub(/\A\s+\Z/m,'') #str.gsub(/^\s+$/,'')
filename_xml.puts str unless str.empty?
end
filename_xml.close
@@ -403,7 +403,7 @@ WOK
class Tidy
def initialize(md,file)
@md,@file=md,file
- @prog=SiSU_Env::Info_program.new
+ @prog=SiSU_Env::InfoProgram.new
end
def xml
if @prog.tidy !=false
@@ -414,7 +414,7 @@ WOK
tell.grey_open
end
tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy=SiSU_Env::System_call.new(@file,tidyfile)
+ tidy=SiSU_Env::SystemCall.new(@file,tidyfile)
tidy.well_formed?
tell.p_off unless @md.opt.cmd =~/q/
end
diff --git a/lib/sisu/v3/xhtml_table.rb b/lib/sisu/v3/xhtml_table.rb
index 189e5a1d..cea438a2 100644
--- a/lib/sisu/v3/xhtml_table.rb
+++ b/lib/sisu/v3/xhtml_table.rb
@@ -56,13 +56,13 @@
** Description: shared html parts
=end
-module SiSU_XHTML_table
+module SiSU_XHTML_Table
require_relative 'defaults' # defaults.rb
- class Table_xhtml
+ class TableXHTML
@@tablehead=0
@@tablefoot=[] #watch
def initialize(table)
- @table_obj,@vz=table,SiSU_Env::Get_init.instance.skin
+ @table_obj,@vz=table,SiSU_Env::GetInit.instance.skin
end
def table
table_obj=@table_obj
@@ -78,8 +78,8 @@ module SiSU_XHTML_table
table_row_with_columns=table_row.split(Mx[:tc_p])
trc,nc=[],0
table_row_with_columns.each do |c|
- c.gsub!(/^~$/,'') # tilde / empty cell
- c.gsub!(/<:br>/,'<br />')
+ c=c.gsub(/^~$/,''). # tilde / empty cell
+ gsub(/<:br>/,'<br />')
trc <<= if table_obj.head_ and nr==0; %{<th width="#{table_obj.widths[nc]}%">#{c}</th>}
else %{<td width="#{table_obj.widths[nc]}%">#{c}</td>}
end
diff --git a/lib/sisu/v3/xml.rb b/lib/sisu/v3/xml.rb
index 9ed3e871..aa75e139 100644
--- a/lib/sisu/v3/xml.rb
+++ b/lib/sisu/v3/xml.rb
@@ -64,9 +64,9 @@ module SiSU_XML_SAX
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_munge
+ include SiSU_XML_Munge
require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_format
+ include SiSU_XML_Format
require_relative 'rexml' # rexml.rb
include SiSU_Rexml
require_relative 'shared_metadata' # shared_metadata.rb
@@ -75,7 +75,7 @@ module SiSU_XML_SAX
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
begin
@@ -93,7 +93,7 @@ module SiSU_XML_SAX
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}").flow if @opt.cmd =~/[MV]/
end
SiSU_XML_SAX::Source::Songsheet.new(@particulars).song
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
#file closed in songsheet
end
@@ -102,29 +102,29 @@ module SiSU_XML_SAX
class Songsheet
def initialize(particulars)
@env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
end
def song
begin
SiSU_XML_SAX::Source::Scroll.new(@particulars).songsheet
SiSU_XML_SAX::Source::Tidy.new(@md,@file.place_file.xml_sax.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_sax.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
end
class Scroll
require_relative 'shared_txt' # shared_txt.rb
- include SiSU_text_utils
+ include SiSU_TextUtils
require_relative 'css' # css.rb
require_relative 'shared_xhtml' # 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
- @vz=SiSU_Env::Get_init.instance.skin
- @trans=SiSU_XML_munge::Trans.new(@md)
- @sys=SiSU_Env::System_call.new
+ @vz=SiSU_Env::GetInit.instance.skin
+ @trans=SiSU_XML_Munge::Trans.new(@md)
+ @sys=SiSU_Env::SystemCall.new
end
def songsheet
pre
@@ -134,20 +134,20 @@ module SiSU_XML_SAX
end
protected
def embedded_endnotes(dob='')
- dob.obj.gsub!(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><number>\1</number><note>\2</note></endnote> ')
- dob.obj.gsub!(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
- dob.obj.gsub!(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
+ '<endnote><number>\1</number><note>\2</note></endnote> ').
+ gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
+ '<endnote><symbol>\1</symbol><note>\2</note></endnote> ').
+ gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
+ '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
end
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]})/)
notes.flatten.each do |e|
s=e.to_s
- util=SiSU_text_utils::Wrap.new(s,70)
+ util=SiSU_TextUtils::Wrap.new(s,70)
wrap=util.line_wrap
- wrap.gsub!(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
+ wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
#{Ax[:tab]*1}<endnote notenumber="\\1">
#{Ax[:tab]*2}<number>\\1</number>
#{Ax[:tab]*2}<note>
@@ -155,8 +155,8 @@ module SiSU_XML_SAX
#{Ax[:tab]*2}</note>
#{Ax[:tab]*1}</endnote>
WOK
-)
- wrap.gsub!(/^([*+]\d+)\s+(.+?)\s*\Z/m, <<WOK
+).
+ gsub(/^([*+]\d+)\s+(.+?)\s*\Z/m, <<WOK
#{Ax[:tab]*1}<endnote symbol="\\1">
#{Ax[:tab]*2}<symbol>\\1</symbol>
#{Ax[:tab]*2}<note>
@@ -164,8 +164,8 @@ WOK
#{Ax[:tab]*2}</note>
#{Ax[:tab]*1}</endnote>
WOK
-)
- wrap.gsub!(/^([*+]+)\s+(.+?)\s*\Z/m, <<WOK
+).
+ gsub(/^([*+]+)\s+(.+?)\s*\Z/m, <<WOK
#{Ax[:tab]*1}<endnote symbol="\\1.length">
#{Ax[:tab]*2}<symbol>\\1</symbol>
#{Ax[:tab]*2}<note>
@@ -178,7 +178,7 @@ WOK
end
end
def xml_head
- metadata=Metadata::Summary.new(@md).xml_sax.metadata
+ metadata=SiSU_Metadata::Summary.new(@md).xml_sax.metadata
@@xml[:head] << metadata
end
def xml_sc(md='')
@@ -204,18 +204,18 @@ WOK
@@xml[:sc]=sc
end
def xml_structure(dob,type='norm')
- if dob.is=='heading'
+ if dob.is==:heading
lv=dob.ln
n=dob.ln - 1
n3=dob.ln + 2
else lv=nil
end
extract_endnotes(dob)
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
#if defined? dob.obj
#t_ograph="#{dob.obj}"
- util=SiSU_text_utils::Wrap.new(dob.obj,70)
+ util=SiSU_TextUtils::Wrap.new(dob.obj,70)
wrapped=util.line_wrap
#end
@@xml[:body] << if defined? dob.ocn; %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@ -232,10 +232,10 @@ WOK
end
def block_structure(dob='')
extract_endnotes(dob)
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
dob=@trans.markup_block(dob)
- dob.obj.strip!
+ dob.obj=dob.obj.strip
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="block">#{Ax[:tab]*1}}
@@ -247,10 +247,10 @@ WOK
end
def group_structure(dob='')
extract_endnotes(dob)
- dob.obj.gsub!(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob.obj.gsub!(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
dob=@trans.markup_group(dob)
- dob.obj.strip!
+ dob.obj=dob.obj.strip
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="group">#{Ax[:tab]*1}}
@@ -262,8 +262,8 @@ WOK
end
def poem_structure(dob='')
dob=@trans.markup_group(dob)
- #dob.obj.gsub!(/\s\s/,'&#160;&#160;')
- dob.obj.strip!
+ #dob.obj.gsub(/\s\s/,'&#160;&#160;')
+ dob.obj=dob.obj.strip
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="verse">#{Ax[:tab]*1}}
@@ -273,8 +273,7 @@ WOK
end
def code_structure(dob='')
dob=@trans.markup_group(dob)
- dob.obj.gsub!(/\s\s/,'&#160;&#160;')
- dob.obj.strip!
+ dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;').strip
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="code">#{Ax[:tab]*1}}
@@ -283,7 +282,7 @@ WOK
@@xml[:body] << "#{Ax[:tab]*0}</object>"
end
def table_structure(dob)
- table=SiSU_XHTML_shared::Table_xhtml.new(dob)
+ table=SiSU_XHTML_Shared::TableXHTML.new(dob)
@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
@@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
@@xml[:body] << %{#{Ax[:tab]*1}<text class="table">#{Ax[:tab]*1}}
@@ -307,20 +306,20 @@ WOK
@trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8
dob=@trans.markup(dob)
if @rcdc==false \
- and (dob.is =~/^meta/ \
+ and (dob.is ==:meta \
and dob.obj =~/Document Information/)
@rcdc=true
end
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
if defined? dob.ocn #look to move to format section
ocn=((dob.ocn.to_s =~/\d+/) ? dob.ocn : nil)
- @p_num=SiSU_XML_format::Paragraph_number.new(@md,ocn)
+ @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,ocn)
end
if not @rcdc
if defined? dob.ocn \
and dob.ocn.to_s =~/\d+/
- x=SiSU_XML_format::Format_seg.new(@md,dob)
- if dob.is=='heading'
+ x=SiSU_XML_Format::FormatSeg.new(@md,dob)
+ if dob.is==:heading
xml_structure(dob)
dob.obj=case dob.ln
when 1; x.heading_body1
@@ -331,25 +330,25 @@ WOK
when 6; x.heading_body6
end
else
- if dob.is=='verse'
+ if dob.is==:verse
poem_structure(dob)
- elsif dob.is=='group'
+ elsif dob.is==:group
group_structure(dob)
- elsif dob.is=='block'
+ elsif dob.is==:block
block_structure(dob)
- elsif dob.is=='code'
+ elsif dob.is==:code
code_structure(dob)
- elsif dob.is=='table' # FIX, check css, will need to modify
+ elsif dob.is==:table # FIX, check css, will need to modify
table_structure(dob)
- elsif dob.is =~ /^para/ \
+ elsif dob.is ==:para \
and dob.indent.to_s =~/[1-9]/ \
and dob.bullet_==true
xml_structure(dob,"indent_bullet#{dob.indent}")
- elsif dob.is =~ /^para/ \
+ elsif dob.is ==:para \
and dob.indent.to_s =~/[1-9]/ \
and dob.indent == dob.hang
xml_structure(dob,"indent#{dob.indent}")
- elsif dob.is =~ /^para/ \
+ elsif dob.is ==:para \
and dob.hang.to_s =~/[0-9]/ \
and dob.indent != dob.hang
xml_structure(dob,"hang#{dob.hang.to_s}_indent#{dob.indent.to_s}")
@@ -359,11 +358,11 @@ WOK
elsif dob.obj =~/(#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
elsif dob.obj =~/MetaData/
txt_obj={ txt: '<br /><a name="metadata">MetaData</a>' }
- format_scroll=Format_scroll.new(@md,txt_obj)
+ format_scroll=FormatScroll.new(@md,txt_obj)
dob.obj=format_scroll.bold_para
elsif dob.obj =~/(Owner Details)/
# txt_obj={ txt: '<br /><a name="owner.details">Owner Details</a>' }
-# format_scroll=Format_scroll.new(@md,txt_obj)
+# format_scroll=FormatScroll.new(@md,txt_obj)
# @@xml[:owner_details]=format_scroll.bold_para
dob.obj=''
end
@@ -374,13 +373,13 @@ WOK
if dob.obj =~/.*<:#>.*$/ #investigate removal
dob.obj=if dob.obj =~ /#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/
txt_obj={ txt: dob }
- format_text=Format_text_object.new(@md,txt_obj)
+ format_text=FormatTextObject.new(@md,txt_obj)
format_text.scr_inden_ocn_e_no_paranum
end
end
else #
end
- dob.obj.gsub!(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
+ dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
end
end
6.downto(4) do |x|
@@ -394,16 +393,16 @@ WOK
#6.downto(1) { |x| y=x - 1; @@xml[:body] << "#{Ax[:tab]*y}</level #{x}>" if @level[x]==true }
end
def pre
- rdf=SiSU_XML_tags::RDF.new(@md)
- dir=SiSU_Env::Info_env.new
+ rdf=SiSU_XML_Tags::RDF.new(@md)
+ dir=SiSU_Env::InfoEnv.new
@@xml[:head],@@xml[:body]=[],[]
- css=SiSU_Env::CSS_stylesheet.new(@md)
+ stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xml_sax').stylesheet
encoding=if @sys.locale =~/utf-?8/i; '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
else '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
end
@@xml[:open] =<<WOK
#{encoding}
-#{css.xml_sax}
+#{stylesheet.css_head_xml}
#{rdf.comment_xml}
<document>
WOK
@@ -421,7 +420,7 @@ WOK
content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
content << @@xml[:owner_details] if @md.stmp =~/\w\w/
content << @@xml[:tail] << @@xml[:close]
- content.flatten!.compact!
+ content=content.flatten.compact
Output.new(content,@md).xml
@@xml={}
end
@@ -429,13 +428,13 @@ WOK
class Output
def initialize(data,md)
@data,@md=data,md
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
end
def xml
- SiSU_Env::SiSU_file.new(@md).mkdir
+ SiSU_Env::FileOp.new(@md).mkdir
filename_xml=@file.write_file.xml_sax
@data.each do |str|
- str.gsub!(/\A\s+\Z/m,'') #str.gsub!(/^\s+$/,'')
+ str=str.gsub(/\A\s+\Z/m,'')
filename_xml.puts str unless str.empty?
end
filename_xml.close
@@ -444,7 +443,7 @@ WOK
class Tidy
def initialize(md,file)
@md,@file=md,file
- @prog=SiSU_Env::Info_program.new
+ @prog=SiSU_Env::InfoProgram.new
end
def xml
if @prog.tidy !=false #note values can be other than true
@@ -455,7 +454,7 @@ WOK
tell.grey_open
end
tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy=SiSU_Env::System_call.new(@file,tidyfile)
+ tidy=SiSU_Env::SystemCall.new(@file,tidyfile)
tidy.well_formed?
tell.p_off unless @md.opt.cmd =~/q/
end
diff --git a/lib/sisu/v3/xml_dom.rb b/lib/sisu/v3/xml_dom.rb
index 53c60bf8..6b8c4e5c 100644
--- a/lib/sisu/v3/xml_dom.rb
+++ b/lib/sisu/v3/xml_dom.rb
@@ -62,9 +62,9 @@ module SiSU_XML_DOM
include SiSU_Env
require_relative 'dal' # dal.rb
require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_munge
+ include SiSU_XML_Munge
require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_format
+ include SiSU_XML_Format
require_relative 'rexml' # rexml.rb
include SiSU_Rexml
require_relative 'shared_metadata' # shared_metadata.rb
@@ -73,7 +73,7 @@ module SiSU_XML_DOM
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
end
def read
begin
@@ -91,7 +91,7 @@ module SiSU_XML_DOM
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}").flow if @opt.cmd =~/[MV]/
end
SiSU_XML_DOM::Source::Songsheet.new(@particulars).songsheet
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -99,28 +99,28 @@ module SiSU_XML_DOM
class Songsheet
def initialize(particulars)
@env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
end
def songsheet
begin
SiSU_XML_DOM::Source::Scroll.new(@particulars).songsheet
SiSU_XML_DOM::Source::Tidy.new(@md,@file.place_file.xml_dom.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_dom.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
ensure
end
end
end
class Scroll
require_relative 'shared_txt' # shared_txt.rb
- include SiSU_text_utils
+ include SiSU_TextUtils
require_relative 'shared_xhtml' # 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
- @vz=SiSU_Env::Get_init.instance.skin
- @trans=SiSU_XML_munge::Trans.new(@md)
- @sys=SiSU_Env::System_call.new
+ @vz=SiSU_Env::GetInit.instance.skin
+ @trans=SiSU_XML_Munge::Trans.new(@md)
+ @sys=SiSU_Env::SystemCall.new
end
def songsheet
pre
@@ -130,15 +130,15 @@ module SiSU_XML_DOM
end
protected
def xml_markup(dob='')
- dob.obj.gsub!(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><number>\1</number><note>\2</note></endnote> ')
- dob.obj.gsub!(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
- dob.obj.gsub!(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
+ '<endnote><number>\1</number><note>\2</note></endnote> ').
+ gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
+ '<endnote><symbol>\1</symbol><note>\2</note></endnote> ').
+ gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
+ '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
end
def xml_head
- metadata=Metadata::Summary.new(@md).xml_dom.metadata
+ metadata=SiSU_Metadata::Summary.new(@md).xml_dom.metadata
@@xml[:head] << metadata
end
def xml_sc(md='')
@@ -165,7 +165,7 @@ WOK
end
def xml_element(dob,xml_el='',xml_content='',type='norm')
n=n1=n2=n3=0
- if dob.is=='heading'
+ if dob.is==:heading
lv=dob.ln
n=dob.ln - 1
n1=dob.ln
@@ -200,7 +200,7 @@ WOK
end
def xml_structure(dob,type='norm')
n=n1=n2=n3=0
- if dob.is=='heading'
+ if dob.is==:heading
lv=dob.ln
n=dob.ln - 1
n1=dob.ln
@@ -309,31 +309,28 @@ WOK
end
def block_structure(dob)
dob=@trans.markup_block(dob) #decide check & FIX
- dob.obj.gsub!(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,
- '<endnote><number>\1</number><note>\2</note></endnote> ')
- dob.obj.strip!
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,
+ '<endnote><number>\1</number><note>\2</note></endnote> ').strip
dob
end
def group_structure(dob)
dob=@trans.markup_group(dob) #decide check & FIX
- dob.obj.gsub!(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,
- '<endnote><number>\1</number><note>\2</note></endnote> ')
- dob.obj.strip!
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,
+ '<endnote><number>\1</number><note>\2</note></endnote> ').strip
dob
end
def poem_structure(dob)
dob=@trans.markup_group(dob) #decide check & FIX
- dob.obj.strip!
+ dob.obj=dob.obj.strip
dob
end
def code_structure(dob)
dob=@trans.markup_group(dob) #decide check & FIX
- dob.obj.gsub!(/\s\s/,'&#160;&#160;')
- dob.obj.strip!
+ dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;').strip
dob
end
def table_structure(dob) #tables
- table=SiSU_XHTML_shared::Table_xhtml.new(dob)
+ table=SiSU_XHTML_Shared::TableXHTML.new(dob)
end
def markup(data)
xml_sc(@md)
@@ -347,18 +344,18 @@ WOK
@trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8
dob=@trans.markup(dob)
if @rcdc==false \
- and (dob.is =~/^meta/ \
+ and (dob.is ==:meta \
and dob.obj =~/Document Information/)
@rcdc=true
end
if dob !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- @p_num=SiSU_XML_format::Paragraph_number.new(@md,dob.ocn) if defined? dob.ocn
+ @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,dob.ocn) if defined? dob.ocn
if not @rcdc
if defined? dob.ocn \
and dob.ocn.to_s =~/\d+/
- format_scroll=SiSU_XML_format::Format_scroll.new(@md,dob) if dob.is=='para' and dob.indent ##FIX
- x=SiSU_XML_format::Format_seg.new(@md,dob)
- if dob.is=='heading'
+ format_scroll=SiSU_XML_Format::FormatScroll.new(@md,dob) if dob.is==:para and dob.indent ##FIX
+ x=SiSU_XML_Format::FormatSeg.new(@md,dob)
+ if dob.is==:heading
if dob.ln==1
type="heading_section_#{dob.ln.to_s}"
xml_markup(dob)
@@ -391,32 +388,32 @@ WOK
end
else
ocn=dob.ocn
- if dob.is=='verse'
+ if dob.is==:verse
type='verse'
poem_structure(dob) #redo
- elsif dob.is=='group'
+ elsif dob.is==:group
type='group'
group_structure(dob) #redo
- elsif dob.is=='block'
+ elsif dob.is==:block
type='block'
block_structure(dob) #redo
- elsif dob.is=='code'
+ elsif dob.is==:code
type='code'
code_structure(dob) #redo
- elsif dob.is=='table' # tables come as single block #work area 2005w13
+ elsif dob.is==:table # tables come as single block #work area 2005w13
type='table'
table_structure(dob)
- elsif dob.is=='para' \
+ elsif dob.is==:para \
and dob.indent.to_s =~/[1-9]/ \
and dob.bullet_
type="indent_bullet#{dob.indent.to_s}"
xml_markup(dob)
- elsif dob.is=='para' \
+ elsif dob.is==:para \
and dob.indent.to_s =~/[1-9]/ \
and dob.indent == dob.hang
type="indent#{dob.indent.to_s}"
xml_markup(dob)
- elsif dob.is=='para' \
+ elsif dob.is==:para \
and dob.hang.to_s =~/[0-9]/ \
and dob.indent != dob.hang
type="hang#{dob.hang.to_s}_indent#{dob.indent.to_s}"
@@ -430,7 +427,7 @@ WOK
elsif dob.obj =~/(#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
elsif dob.obj =~/(MetaData)/
txt_obj={ txt: '<br /><a name="metadata">MetaData</a>' }
- format_scroll=Format_scroll.new(@md,txt_obj)
+ format_scroll=FormatScroll.new(@md,txt_obj)
dob.obj=format_scroll.bold_para
elsif dob.obj =~/(Owner Details)/
dob.obj=''
@@ -442,7 +439,7 @@ WOK
if dob.obj =~/.*<:#>.*$/
dob.obj=if dob.obj =~ /#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/
txt_obj={ txt: dob.obj }
- format_text=Format_text_object.new(@md,txt_obj)
+ format_text=FormatTextObject.new(@md,txt_obj)
format_text.scr_inden_ocn_e_no_paranum
end
end
@@ -450,7 +447,7 @@ WOK
end
else #
end
- dob.obj.gsub!(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
+ dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
end
end
@content_flag=true
@@ -471,15 +468,15 @@ WOK
end
end
def pre
- rdf=SiSU_XML_tags::RDF.new(@md)
- dir=SiSU_Env::Info_env.new
- css=SiSU_Env::CSS_stylesheet.new(@md)
+ rdf=SiSU_XML_Tags::RDF.new(@md)
+ dir=SiSU_Env::InfoEnv.new
+ stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xml_dom').stylesheet
encoding=if @sys.locale =~/utf-?8/i; '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
else '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
end
@@xml[:open] =<<WOK
#{encoding}
-#{css.xml_dom}
+#{stylesheet.css_head_xml}
#{rdf.comment_xml}
<document>
WOK
@@ -497,7 +494,7 @@ WOK
content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
content << @@xml[:owner_details] if @md.stmp =~/\w\w/
content << @@xml[:tail] << @@xml[:close]
- content.flatten!.compact!
+ content=content.flatten.compact
Output.new(content,@md).xml
@@xml[:head],@@xml[:body],@@xml[:tail]=[],[],[] # check whether should be nil
end
@@ -506,13 +503,13 @@ WOK
include SiSU_Param
def initialize(data,md)
@data,@md=data,md
- @file=SiSU_Env::SiSU_file.new(@md)
+ @file=SiSU_Env::FileOp.new(@md)
end
def xml
- SiSU_Env::SiSU_file.new(@md).mkdir
+ SiSU_Env::FileOp.new(@md).mkdir
filename_xml=@file.write_file.xml_dom
@data.each do |str|
- str.gsub!(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'')
+ str=str.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'')
filename_xml.puts str unless str.empty?
end
filename_xml.close
@@ -521,7 +518,7 @@ WOK
class Tidy
def initialize(md,file)
@md,@file=md,file
- @prog=SiSU_Env::Info_program.new
+ @prog=SiSU_Env::InfoProgram.new
end
def xml
if @prog.tidy !=false
@@ -530,7 +527,7 @@ WOK
tell=SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','','')
tell.grey_open unless @md.opt.cmd =~/q/
tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy=SiSU_Env::System_call.new(@file,tidyfile)
+ tidy=SiSU_Env::SystemCall.new(@file,tidyfile)
tidy.well_formed?
tell.p_off unless @md.opt.cmd =~/q/
end
diff --git a/lib/sisu/v3/xml_fictionbook.rb b/lib/sisu/v3/xml_fictionbook.rb
index 1425dc74..8fe1e7c1 100644
--- a/lib/sisu/v3/xml_fictionbook.rb
+++ b/lib/sisu/v3/xml_fictionbook.rb
@@ -61,9 +61,9 @@ module SiSU_XML_Fictionbook
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'shared_txt' # shared_txt.rb
- include SiSU_text_utils
+ include SiSU_TextUtils
require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_munge
+ include SiSU_XML_Munge
include SiSU_Param
pwd=Dir.pwd
class Source
@@ -76,7 +76,7 @@ module SiSU_XML_Fictionbook
@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::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -84,8 +84,8 @@ module SiSU_XML_Fictionbook
class Scroll <Source
def initialize(data='',md='')
@data,@md=data,md
- @trans=SiSU_XML_munge::Trans.new(@md)
- @file_fictionbook=SiSU_Env::SiSU_file.new(@md,'fictionbook.xml').mkfile
+ @trans=SiSU_XML_Munge::Trans.new(@md)
+ @file_fictionbook=SiSU_Env::FileOp.new(@md,'fictionbook.xml').mkfile
end
def songsheet
@t='fictionbook'
@@ -103,8 +103,8 @@ module SiSU_XML_Fictionbook
tail
end
def head
- version=SiSU_Env::Info_version.instance.get_version
- rb_ver=SiSU_Env::Info_version.instance.rbversion
+ 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
@@ -151,14 +151,14 @@ WOK
@data.each do |para|
@endnotes << para.scan(/~\{(.+?)\}~/m)
end
- @endnotes.flatten!
+ @endnotes=@endnotes.flatten
end
def endnotes
@endnotes.each do |endnote|
- endnote.strip!
+ endnote=endnote.strip
endnote=@trans.markup_fictionbook(endnote)
endnote="<p>#{endnote}</p>"
- util=SiSU_text_utils::Wrap.new(endnote,80,10)
+ util=SiSU_TextUtils::Wrap.new(endnote,80,10)
endnote=util.line_wrap
put(endnote)
end
@@ -171,12 +171,12 @@ WOK
put(tail)
end
def markup(para,type='')
- para.strip!
+ para=para.strip
para=@trans.markup_fictionbook(para)
para=if type.empty?; "<p>#{para}</p>"
else "<#{type}><p>#{para}</p></#{type}>"
end
- util=SiSU_text_utils::Wrap.new(para,80,10)
+ util=SiSU_TextUtils::Wrap.new(para,80,10)
wrap=util.line_wrap
end
def put(line)
diff --git a/lib/sisu/v3/xml_format.rb b/lib/sisu/v3/xml_format.rb
index c0d9d622..b40efc18 100644
--- a/lib/sisu/v3/xml_format.rb
+++ b/lib/sisu/v3/xml_format.rb
@@ -57,11 +57,11 @@
** Notes: tidy -xml index.xml >> index.tidy
=end
-module SiSU_XML_format
+module SiSU_XML_Format
require_relative 'param' # param.rb
include SiSU_Param
include SiSU_Viz
- class Paragraph_number
+ class ParagraphNumber
def initialize(md,paranum)
@md=md
@paranum=(paranum ? (/(\d+)/m.match(paranum)[1]) : nil)
@@ -84,7 +84,7 @@ module SiSU_XML_format
p_num_goto
end
end
- class Head_information
+ class HeadInformation
def initialize #dc rdf
@full_title=@subtitle=@author=@subject=@description=@publisher=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@copyright=@owner=@keywords=''
@md=@@md
@@ -193,7 +193,7 @@ module SiSU_XML_format
@copyright=%{<meta name="copyright" content="#{@md.rights.copyright.all}" />\n} if @md.rights.copyright.all # possibly redundant see dc.rights
@owner=%{<meta name="owner" content="#{@md.owner}" />\n} if @md.owner
@keywords=%{<meta name="keywords" content="#{@md.keywords}" />\n} if @md.keywords
- @vz=SiSU_Env::Get_init.instance.skin #margin,paragraph,table,banner,url,png,txt,color,font,nav_txt,nav_png,credits,js,php
+ @vz=SiSU_Env::GetInit.instance.skin #margin,paragraph,table,banner,url,png,txt,color,font,nav_txt,nav_png,credits,js,php
@index='index'
end
def toc_head_escript #embedded script in this case PHP
@@ -274,7 +274,7 @@ module SiSU_XML_format
WOK
end
end
- class Format_text_object
+ class FormatTextObject
attr_accessor :md,:txt,:format,:paranum,:p_num,:para_id,:headname,:font
def initialize(md,dob)
@md,@dob=md,dob
@@ -282,19 +282,19 @@ WOK
@paranum=/(\d+)/m.match(@dob[:ocn])[1]
@headname=''
@headname=%{<a name="h#{dob.name}"></a>} if defined? dob.name
- @p_num=SiSU_XML_format::Paragraph_number.new(@md,dob.ocn)
+ @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,dob.ocn)
end
rgx=/^[1-6-]~{1,2}/ #watch
@lnk_url=@lnk_url.gsub(rgx,'') if @lnk_url =~rgx
rgx=/~\{\d+\s+(.+?)\}~/
@lnk_url=@lnk_url.gsub(rgx,'\1') if @lnk_url =~rgx
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def scr_endnote_body
"<endnote>#{@txt}</endnote> "
end
end
- class Format_scroll < Format_text_object
+ class FormatScroll < FormatTextObject
def initialize(md,dob)
super(md,dob)
end
@@ -327,33 +327,26 @@ WOK
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
end
- class Paragraph_number
+ class ParagraphNumber
def initialize(md,ocn)
@md,@ocn=md,ocn.to_s
@ocn ||=''
- vz=SiSU_Env::Get_init.instance.skin
- @skin_no_ocn=if not ocn
- true
- elsif defined? vz.ocn_display_off \
- and vz.ocn_display_off==true
- true
- else false
- end
end
def ocn_display
- if @md.markup.inspect =~/no_ocn/ \
- or @md.opt.mod.inspect =~/--no-ocn/ \
- or @skin_no_ocn
- ocn_class='ocn_off'
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- elsif @ocn.to_i==0
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}">&nbsp;</a></label>})
- else
+ @make=SiSU_Env::ProcessingSettings.new(@md)
+ if @make.build.ocn?
ocn_class='ocn'
+ if @ocn.to_i==0
+ @ocn.gsub(/^(\d+|)$/,
+ %{<label class="#{ocn_class}"><a name="#{@ocn}">&nbsp;</a></label>})
+ else
+ @ocn.gsub(/^(\d+|)$/,
+ %{<label class="#{ocn_class}"><a name="#{@ocn}">\\1</a></label>})
+ end
+ else
+ ocn_class='ocn_off'
@ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}">\\1</a></label>})
+ %{<label class="#{ocn_class}">&nbsp;</label>})
end
end
def name
@@ -366,15 +359,15 @@ WOK
%{<a href="##{@ocn}">}
end
end
- class Head_information
+ class HeadInformation
include SiSU_Viz
attr_reader :md,:sfx,:pdf,:rdf,:vz
def initialize(md)
@md=md
- @rdf=SiSU_XML_tags::RDF.new(md)
+ @rdf=SiSU_XML_Tags::RDF.new(md)
# DublinCore 1 - title
- @vz=SiSU_Env::Get_init.instance.skin
- @css=SiSU_Env::CSS_stylesheet.new(md)
+ @vz=SiSU_Env::GetInit.instance.skin
+ @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet
@seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || [])
@seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || [])
@index='index'
@@ -408,7 +401,7 @@ WOK
end
class XML
end
- class Head_toc < Head_information
+ class HeadToc < HeadInformation
def initialize(md)
super(md)
@md=md
@@ -544,7 +537,7 @@ WOK
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
#{@rdf.rdftoc}
#{@rdf.metatag_html}
-#{@css.html}
+#{@stylesheet.css_head}
</head>
#{@vz.color_body}
<a name="top" id="top"></a>
@@ -708,7 +701,7 @@ WOK
}
end
end
- class Head_seg < Head_information
+ class HeadSeg < HeadInformation
def initialize(md) #(md='')
super(md)
end
@@ -788,7 +781,7 @@ WOK
def doc_types #used in seg_nav_band ###
scroll=seg=''
wgt=Widget.new(@md)
- #dir=SiSU_Env::Info_env.new(@md.fns)
+ #dir=SiSU_Env::InfoEnv.new(@md.fns)
x=if @md.concord_make
%{
<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0">
@@ -834,7 +827,7 @@ WOK
<font size="2">}
end
def header_advert_local_1
- dir=SiSU_Env::Info_env.new(@fns)
+ dir=SiSU_Env::InfoEnv.new(@fns)
%{ <center>
<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
<tr><td align="center" bgcolor="white">
@@ -846,7 +839,7 @@ WOK
</center>}
end
def header_advert_local_2
- dir=SiSU_Env::Info_env.new(@fns)
+ dir=SiSU_Env::InfoEnv.new(@fns)
%{ <center>
<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
<tr><td align="center" bgcolor="white">
@@ -858,7 +851,7 @@ WOK
</center>}
end
def header_advert_external
- dir=SiSU_Env::Info_env.new(@fns)
+ dir=SiSU_Env::InfoEnv.new(@fns)
%{ <center>
<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
<tr><td align="center" bgcolor="white">
@@ -938,7 +931,7 @@ WOK
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
#{@rdf.rdfseg}
#{@rdf.metatag_html}
-#{@css.html}
+#{@stylesheet.css_head}
</head>
#{@vz.color_body}
<a name="top" id="top"></a>
@@ -968,7 +961,7 @@ WOK
}
end
end
- class Head_scroll < Head_toc
+ class HeadScroll < HeadToc
def initialize(md) #(md='')
super(md)
end
@@ -1002,8 +995,8 @@ WOK
#{@vz.paragraph_txt}}
end
end
- class Format_text_object
- @vz=SiSU_Env::Get_init.instance.skin
+ class FormatTextObject
+ @vz=SiSU_Env::GetInit.instance.skin
attr_accessor :md,:dob,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
def initialize(md,t_o)
@md,@t_o=md,t_o
@@ -1026,7 +1019,7 @@ WOK
@ocn=if defined? t_o.ocn; t_o.ocn.to_s
else nil
end
- @headname=if t_o.is=='heading' and defined? t_o.name; t_o.name
+ @headname=if t_o.is==:heading and defined? t_o.name; t_o.name
else nil
end
else
@@ -1038,7 +1031,7 @@ WOK
end
if defined? @t_o.ocn
ocn=((@t_o.ocn.to_s =~/\d+/) ? @t_o.ocn : nil)
- @p_num=Paragraph_number.new(@md,ocn)
+ @p_num=ParagraphNumber.new(@md,ocn)
end
if @format and not @format.empty?
if @format=~/^\d:(\S+)/ #need more reliable marker #if @format =~ /#{Rx[:lv]}/
@@ -1049,7 +1042,7 @@ WOK
end
end
@dob=t_o if defined? t_o.is
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
def endnote_body
%{
@@ -1177,17 +1170,18 @@ WOK
end
def gsub_body
#fix
- case @txt
+ @txt=case @txt
when /^\s*\((i+|iv|v|vi+|ix|x|xi+)\)/
- @txt.gsub!(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>')
- @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>')
+ @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>').
+ gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>')
when /^\s*\(?(\d|[a-z])+\)/
- @txt.gsub!(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>')
- @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>')
+ @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>').
+ gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>')
when /^\s*\d{1,3}\.\s/
- @txt.gsub!(/^\s*(\d+\.)/,'<b>\1</b>')
+ @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>')
when /^\s*[A-Z]\.\s/
- @txt.gsub!(/^\s*([A-Z]\.)/,'<b>\1</b>')
+ @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>')
+ else @txt
end
end
def bold_para
@@ -1200,8 +1194,8 @@ WOK
#{@vz.table_close}}
end
def bold_header
- @txt.gsub!(/[1-9]~(\S+)/,'<a name="\1"></a>')
- @txt.gsub!(/[1-9]~/,'')
+ @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>').
+ gsub(/[1-9]~/,'')
%{<p class="bold">
#{@txt}
</p>
@@ -1222,13 +1216,13 @@ WOK
%{<p class="centerbold">#{@txt}</p>\n}
end
end
- class Format_scroll < Format_text_object
+ class FormatScroll < FormatTextObject
def initialize(md,txt)
super(md,txt)
- @vz=SiSU_Env::Get_init.instance.skin
+ @vz=SiSU_Env::GetInit.instance.skin
end
end
- class Format_seg < Format_text_object
+ class FormatSeg < FormatTextObject
def initialize(md,txt)
super(md,txt)
end
@@ -1297,9 +1291,9 @@ WOK
note=''
if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}\s*)/m
note=$1
- note.gsub!(/[\n\s]+/m,' ')
- txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- txt.gsub!(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
+ note=note.gsub(/[\n\s]+/m,' ')
+ txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
+ gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
end
%{<#{tag} class="#{attrib}">
<a href="##{@ocn}"><i>#{txt}</i></a> #{note}
@@ -1313,7 +1307,7 @@ WOK
end
#% para sisu
def header_sub(tag,attrib)
- @txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
+ @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
%{
<div class="substance">
#{@p_num.ocn_display}
@@ -1362,7 +1356,7 @@ WOK
"<center>#{@txt}</center>"
end
end
- class Format_toc < Format_text_object
+ class FormatToc < FormatTextObject
def initialize(md,txt)
super(md,txt)
end
diff --git a/lib/sisu/v3/xml_md_oai_pmh_dc.rb b/lib/sisu/v3/xml_md_oai_pmh_dc.rb
index 4837b8e1..eb2bb09c 100644
--- a/lib/sisu/v3/xml_md_oai_pmh_dc.rb
+++ b/lib/sisu/v3/xml_md_oai_pmh_dc.rb
@@ -56,7 +56,7 @@
** Description: summary of generated outputs and metadata
=end
-module SiSU_XML_metadata
+module SiSU_XML_Metadata
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'param' # param.rb
@@ -184,7 +184,7 @@ WOK
end
def meta_content_clean(content='')
unless content.nil?
- content.tr!('"',"'")
+ content=content.tr('"',"'")
end
content
end
@@ -192,8 +192,8 @@ WOK
'</oai_dc:dc>'
end
def output
- SiSU_Env::SiSU_file.new(@md).mkdir
- oai_pmh=SiSU_Env::SiSU_file.new(@md,@md.fn[:oai_pmh]).mkfile #implement in param
+ SiSU_Env::FileOp.new(@md).mkdir
+ oai_pmh=SiSU_Env::FileOp.new(@md,@md.fn[:oai_pmh]).mkfile #implement in param
oai_pmh << pre
body.each do |x|
oai_pmh << x
diff --git a/lib/sisu/v3/xml_scaffold.rb b/lib/sisu/v3/xml_scaffold.rb
index 5b0056c7..f43daacf 100644
--- a/lib/sisu/v3/xml_scaffold.rb
+++ b/lib/sisu/v3/xml_scaffold.rb
@@ -56,7 +56,7 @@
** Description: SiSU information Structuring Universe, processing
=end
-module SiSU_XML_scaffold
+module SiSU_XML_Scaffold
require_relative 'particulars' # particulars.rb
include SiSU_Particulars
require_relative 'dal' # dal.rb
@@ -66,14 +66,14 @@ module SiSU_XML_scaffold
class Source
def initialize(opt)
@opt=opt
- @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
@sp=' '
end
def read
begin
@md,@dal_array=@particulars.md,@particulars.dal_array
- SiSU_XML_scaffold::Source::Scroll.new(@dal_array,@md).songsheet
- rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ SiSU_XML_Scaffold::Source::Scroll.new(@dal_array,@md).songsheet
+ rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
ensure
end
end
@@ -110,13 +110,13 @@ module SiSU_XML_scaffold
def structure_outline(data)
puts "\ninfo outline --->\n\n"
data.each do |o|
- puts "#{o.ocn} #{o.ln} #{o.obj}" if o.is =~/^heading/
+ puts "#{o.ocn} #{o.ln} #{o.obj}" if (o.is ==:heading || o.is ==:heading_insert)
end
end
def structure_simple(data)
puts "\nheading outline --->\n\n"
data.each_with_index do |o,i|
- if o.is =~ /^heading/; puts "<#{@s[o.ln]}>#{o.ocn} #{o.ln} #{o.obj}</#{@s[o.ln]}>"
+ if (o.is ==:heading || o.is ==:heading_insert); puts "<#{@s[o.ln]}>#{o.ocn} #{o.ln} #{o.obj}</#{@s[o.ln]}>"
end
end
end
@@ -125,7 +125,7 @@ module SiSU_XML_scaffold
h=[0,false,false,false]
puts "<#{@s[0]}>"
data.each_with_index do |o,i|
- if o.is =~/^heading/
+ if (o.is ==:heading || o.is ==:heading_insert)
case o.ln
when 1
structure_build_tag_close(o.ln,h)
diff --git a/lib/sisu/v3/xml_tables.rb b/lib/sisu/v3/xml_tables.rb
index 1f154bda..5457a2fc 100644
--- a/lib/sisu/v3/xml_tables.rb
+++ b/lib/sisu/v3/xml_tables.rb
@@ -63,30 +63,30 @@ module SiSU_Tables
@@tablehead=0
@@tablefoot=[] #watch #bug??? #check was @@tablefoot
def initialize(one,ocn='')
- @one,@parablock,@ocn,@vz=one,one,ocn,SiSU_Env::Get_init.instance.skin
+ @one,@parablock,@ocn,@vz=one,one,ocn,SiSU_Env::GetInit.instance.skin
end
def table_split #% used but, no longer operational, revisit
@new_content=[]
@one.split(/\n/).each do |parablock|
- table=Table_xml.new("#{parablock}\n")
+ table=TableXML.new("#{parablock}\n")
@new_content << table.table
end
@new_content.join
end
end
- class Table_xml <Table
+ class TableXML <Table
@@tablehead=0
@@tablefoot=[]
def initialize(one,ocn='')
- @one,@parablock,@ocn,@vz=one,one,ocn,SiSU_Env::Get_init.instance.skin
+ @one,@parablock,@ocn,@vz=one,one,ocn,SiSU_Env::GetInit.instance.skin
end
def table
m=@parablock[/<!f(.+?)!>/,1]
@@tablefoot << m if m
- @parablock.gsub!(/<!f.+?!>/,'')
+ @parablock=@parablock.gsub(/<!f.+?!>/,'')
@@tablehead=1 if @parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
if @parablock =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}/u
- @parablock.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+);\w\d+;\w\d+#{Mx[:gr_c]}/u,
+ @parablock=@parablock.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+);\w\d+;\w\d+#{Mx[:gr_c]}/u,
%{\n<ocn>#{@ocn}</ocn><table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">})
end
if @parablock =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/
@@ -96,37 +96,37 @@ module SiSU_Tables
end
if @@tablehead==1
if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
- @parablock.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ @parablock=@parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
%{<tr>
<td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}<b>})
- @parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</b></td><td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}<b>})
- @parablock.gsub!(/#{Mx[:tc_c]}/,"</b>\n</td>\n</tr>")
+ #{@vz.paragraph_table_xml}<b>}).
+ gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ %{</b></td><td width="\\1%" valign="top">
+ #{@vz.paragraph_table_xml}<b>}).
+ gsub(/#{Mx[:tc_c]}/,"</b>\n</td>\n</tr>")
@@tablehead=0
end
@parablock
else
- @parablock.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ @parablock=@parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
%{<tr>
<td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}})
- @parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{
+ #{@vz.paragraph_table_xml}}).
+ gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
+ %{
</td>
<td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}})
- @parablock.gsub!(/#{Mx[:tc_c]}/,"\n</td>\n</tr>\n")
+ #{@vz.paragraph_table_xml}}).
+ gsub(/#{Mx[:tc_c]}/,"\n</td>\n</tr>\n")
end
@parablock
end
end
- class Table_xml_exp <Table
+ class TableXMLexp <Table
@@tablehead=0
@@tablefoot=[]
def initialize(one)
- @one,@parablock,@vz=one,one,SiSU_Env::Get_init.instance.skin
+ @one,@parablock,@vz=one,one,SiSU_Env::GetInit.instance.skin
end
def table_head(inf)
%{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
@@ -159,7 +159,7 @@ module SiSU_Tables
def table
m=@parablock[/<!f(.+?)!>/,1]
@@tablefoot << m if m
- @parablock.gsub!(/<!f.+?!>/,'')
+ @parablock=@parablock.gsub(/<!f.+?!>/,'')
@@tablehead=1 if @parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
if @parablock =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+);\w\d+;\w\d+#{Mx[:gr_c]}/u; @parablock=table_head($1)
end
@@ -173,26 +173,26 @@ module SiSU_Tables
if @@tablehead==1
if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
if @parablock =~/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_row($1,true))
+ @parablock=@parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_row($1,true))
end
if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_cell($1,true))
+ @parablock=@parablock.gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_cell($1,true))
end
if @parablock =~/#{Mx[:tc_c]}/
- @parablock.gsub!(/#{Mx[:tc_c]}/,table_row_close(true))
+ @parablock=@parablock.gsub(/#{Mx[:tc_c]}/,table_row_close(true))
end
@@tablehead=0
end
@parablock
else
if @parablock =~/^#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock.gsub!(/^#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_row($1))
+ @parablock=@parablock.gsub(/^#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_row($1))
end
if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_cell($1))
+ @parablock=@parablock.gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_cell($1))
end
if @parablock =~/#{Mx[:tc_c]}/
- @parablock.gsub!(/#{Mx[:tc_c]}/,table_row_close)
+ @parablock=@parablock.gsub(/#{Mx[:tc_c]}/,table_row_close)
end
@parablock
end
diff --git a/lib/sisu/v3/zap.rb b/lib/sisu/v3/zap.rb
index 3e967e32..9c9b61eb 100644
--- a/lib/sisu/v3/zap.rb
+++ b/lib/sisu/v3/zap.rb
@@ -63,12 +63,12 @@ module SiSU_Zap
class Source
def initialize(opt)
@opt=opt
- @env=SiSU_Env::Info_env.new(@opt.fns)
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
@zap_path="#{@env.path.output}/#{@env.fnb}"
- @zap=SiSU_Env::Clean_output.new(@opt)
+ @zap=SiSU_Env::CleanOutput.new(@opt)
end
def read
- if SiSU_Env::Info_settings.new.permission?('zap')
+ if SiSU_Env::InfoSettings.new.permission?('zap')
tell=SiSU_Screen::Ansi.new(@opt.cmd,"Clean files related to processing #{@opt.cmd} ->","#{@opt.fns} -> #{@zap_path}")
@zap.zap.main_output
@zap.zap.site_map
diff --git a/lib/sisu/v3dv/air.rb b/lib/sisu/v3dv/air.rb
deleted file mode 100644
index f5bf3286..00000000
--- a/lib/sisu/v3dv/air.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_Air
- require_relative 'particulars' # particulars.rb
- class Source
- @@dal_array=[]
- @@fns=nil
- def initialize(opt)
- @opt=opt
- @@fns||@opt.fns
- @particulars=SiSU_Particulars::Combined.new(opt)
- #@env=@particulars.env
- #@md=@particulars.md
- #@dal_array=@particulars.dal_array
- end
- def read
- end
- protected
- def print
- puts @particulars.md.inspect
- puts @particulars.env.inspect
- puts @particulars.dal_array
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/author_format.rb b/lib/sisu/v3dv/author_format.rb
deleted file mode 100644
index cfc485f3..00000000
--- a/lib/sisu/v3dv/author_format.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_FormatAuthor
- class Author
- def initialize(author_param)
- @author_param=author_param
- end
- def author_details
- @authors,@author_array=[],[]
- authors=@author_param.scan(/[^;]+/)
- authors.each do |a|
- a=a.strip
- if a =~/"(.+?)"/
- @authors << { the: $1 }
- @author_array << $1.upcase
- else #if a =~/,/
- x=a.scan(/[^,]+/)
- x[0]=x[0].strip
- x[1]=x[1].strip if x[1]
- if x.length==1
- @authors << { the: x[0] }
- @author_array << x[0].upcase
- elsif x.length==2
- @authors << { the: x[0], others: x[1] }
- @author_array << "#{x[0].upcase}, #{x[1]}"
- else #p x.length
- end
- end
- end
- l = @authors.length
- authors_string=''
- @authors.each_with_index do |a,i|
- authors_string += if a[:others]
- if (l - i) > 1
- "#{a[:others]} #{a[:the]}, "
- else
- "#{a[:others]} #{a[:the]}"
- end
- else
- if (l - i) > 2
- "#{a[:the]}, "
- else
- "#{a[:the]}"
- end
- end
- end
- {
- last_first_a: authors,
- last_first_format_a: @author_array,
- authors_h: @authors,
- authors_s: authors_string,
- authors_param: @author_param
- }
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/cgi.rb b/lib/sisu/v3dv/cgi.rb
deleted file mode 100644
index b2a9c0b3..00000000
--- a/lib/sisu/v3dv/cgi.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: generates naive cgi search form for search of sisu database
- (pgsql sqlite)
-
-=end
-module SiSU_CGI #% database building documents
- require_relative 'sysenv' # sysenv.rb
- require_relative 'cgi_pgsql' # cgi_pgsql.rb
- require_relative 'cgi_sqlite' # cgi_sqlite.rb
- class SearchSQL
- def initialize(opt)
- @opt=opt
- @webserv=@opt.files[0].to_s.strip
- end
- def search_info
- a=%{
- For help on sisu search, type:
- sisu --help search
- }
- SiSU_Screen::Ansi.new(@opt.cmd,a).print_grey
- end
- def read
- SiSU_CGI_SQLite::SearchSQLite.new(@opt,@webserv).sqlite
- SiSU_CGI_PgSQL::SearchPgSQL.new(@opt,@webserv).pgsql
- search_info unless @opt.cmd =~/q/
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/cgi_pgsql.rb b/lib/sisu/v3dv/cgi_pgsql.rb
deleted file mode 100644
index 8b3f0224..00000000
--- a/lib/sisu/v3dv/cgi_pgsql.rb
+++ /dev/null
@@ -1,230 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: generates naive cgi search form for search of sisu database (pgsql sqlite)
-
-=end
-module SiSU_CGI_PgSQL #% database building documents
- require_relative 'sysenv' # sysenv.rb
- require_relative 'cgi_sql_common' # cgi_sql_common.rb
- include SiSU_CGI_SQL
- class SearchPgSQL < CGI_Common
- def initialize(opt,webserv)
- @opt,@webserv=opt,webserv
- @env=SiSU_Env::InfoEnv.new('',opt)
- @sys=SiSU_Env::SystemCall.new
- @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
- @db=SiSU_Env::InfoDb.new
- @cgi_file_name="#{Db[:name_prefix_db]}by_#{opt.dir_structure_by.to_s}_pgsql.cgi"
- end
- def pgsql
- serve=[]
- if @sys.psql
- available_db_table=`psql --list` # system call requires psql
- available_db=available_db_table.scan(/(#{Db[:name_prefix]}\S+)/) if not available_db_table.nil?
- if available_db \
- and available_db.class==Array
- available_db.flatten.each do |x|
- serve << x.gsub(/#{Db[:name_prefix]}(\S+)/,'\1')
- end
- else put "WARNING: no postgresql database available, (have you created one?)"
- end
- serve=serve.sort
- f1,f2,f3='','',''
- serve.each do |x|
- f1 << %{ <option value="#{Db[:name_prefix]}#{x}">#{x}</option>\n} unless x =~/apache|sisu\/image/ #check
- end
- f2 << %{ selected_db=case cgi['db']\n}
- serve.each do |x|
- f2 << %{ when /#{Db[:name_prefix]}#{x}/; '<option value="#{Db[:name_prefix]}#{x}">#{x}</option>'\n} unless x =~/apache|sisu\/image/ #check
- end
- end
- f2 << " end\n"
- if FileTest.writable?('.')
- output=File.open(@cgi_file_name,'w')
- output << header0 << header1 << header_desc << header2 << f1 << buttons1 << buttons1_pgsql << buttons2 << search_request << search_statement << search_statement_common << search_query1 << @common.pages << search_query2 << @common.tail << @common.main1 << f2 << dbi_connect << @common.main2 << @common.dir_structure << @common.main3
- a=%{ generated sisu_pgsql.cgi,
- BASED ON ALREADY EXISTING directories that could potentially be used to populate postgresql db, (-D)
- }
- SiSU_Screen::Ansi.new(@opt.cmd,a).print_grey
- c=case @webserv
- when /pwd/; ''
- else "if necessary make the directory /usr/lib/cgi-bin :
- sudo cp -vi #{Dir.pwd}/#{@cgi_file_name} /usr/lib/cgi-bin/.
- sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
- sudo ln -s /usr/lib/cgi-bin/#{@cgi_file_name} /usr/lib/cgi-bin/sisu_pgsql.cgi
- (copy #{@cgi_file_name} to your cgi directory) set file permissions to 755, and make symbolic link to sisu_pgsql.cgi"
- end
- a=%{#{c}
- #{@env.webserv_base_cgi}/cgi-bin/sisu_pgsql.cgi
- }
- SiSU_Screen::Ansi.new(@opt.cmd,a).warn
- a="postgresql db used for present directory: #{@db.psql.db}"
- b="\n\t(to create and populate postgresql database see 'man sisu' and in particular the -D flag)\n\t[the database to be used for this directory (#{@db.psql.db}) will have to be created manually if it does not exist,\n\tsee 'sisu --help sql'\n\tif you have permission to create databases:\n\t'sisu -d --createdb'\n\tor using postgresql tools directly:\n\t'createdb #{@db.psql.db}'\n\tfor a list of existing databases try 'psql --list']"
- SiSU_Screen::Ansi.new(@opt.cmd,a,b).txt_cyan
- else puts 'failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?'
- end
- end
- def header0
- <<-WOK_SQL
-#!/usr/bin/env ruby
-=begin
-#{about}
- * Description: generates naive cgi search form for search of sisu database (pgsql)
-#{gpl}
-=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
- @version='sisu_pgsql'
- @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @hosturl_db="#{@env.url.webserv_base_cgi}"
- @hosturl_files="#{@env.url.webserv_files_from_db}"
- @port="#{@db.psql.port}"
- @db_name_prefix="#{Db[:name_prefix]}"
- user='#{@env.user}' # check user name for access to pg database: '#{@env.user}'
- WOK_SQL
- end
- def search_statement
- <<-'WOK_SQL'
- class DBI_SearchString
- def initialize(l,t,q,cse=false)
- @l,@t,@q,@c=l,t,q,cse
- end
- def string
- search={ :search => [], :flag => false }
- if @t =~/\S+/ or @q =~/\S+/
- if @t =~/\S+/; unescaped_search=CGI.unescape(@t)
- elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q)
- end
- search_construct=[]
- unescaped_search=if @c
- unescaped_search.gsub(/\s*(AND|OR)\s*/,"' \) \\1 #{@l}~\( '").
- gsub(/(.+)/,"#{@l}~\( '\\1' \)")
- else
- unescaped_search.gsub(/\s*(AND|OR)\s*/,"' \) \\1 #{@l}~*\( '").
- gsub(/(.+)/,"#{@l}~*\( '\\1' \)")
- end
- search_construct << unescaped_search
- search_construct=search_construct.join(' ')
- search[:search] << search_construct
- search[:flag]=true
- search
- end
- search
- end
- end
- WOK_SQL
- end
- def search_query1
- <<-'WOK_SQL'
- @search_text,@search_endnotes='',''
- search[:text].flatten.each {|x| @search_text << "#{x} AND " }
- @search_text=@search_text.gsub(/AND\s+$/m,''). #watch
- gsub(/(doc_objects\.clean~[*]?\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean~[*]?\(\s*'[^']+'\s*\))+)/,'(\1)')
- search[:endnotes].flatten.each {|x| @search_endnotes << "#{x} AND " }
- @search_endnotes=@search_endnotes.gsub(/AND\s+$/m,''). #watch
- gsub(/(endnotes\.clean~\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean~\(\s*'[^']+'\s*\))+)/,'(\1)')
- end
- WOK_SQL
- end
- def search_query2
- <<-'WOK_SQL'
- def sql_select_body
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:body]=%{SELECT metadata_and_text.title, metadata_and_text.creator_author, metadata_and_text.src_filename, metadata_and_text.language_document_char, metadata_and_text.notes_suffix, doc_objects.body, doc_objects.seg, doc_objects.ocn, metadata_and_text.tid FROM doc_objects, metadata_and_text WHERE (#{@search_text}) AND doc_objects.metadata_tid = metadata_and_text.tid ORDER BY metadata_and_text.language_document_char, metadata_and_text.title, metadata_and_text.src_filename, doc_objects.ocn}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:body] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_endnotes
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:endnotes]=%{SELECT metadata_and_text.title, metadata_and_text.creator_author, metadata_and_text.src_filename, metadata_and_text.language_document_char, endnotes.body, endnotes.nr, endnotes.ocn, endnotes.metadata_tid FROM metadata_and_text, endnotes WHERE (#{@search_endnotes}) AND metadata_and_text.tid = endnotes.metadata_tid ORDER BY metadata_and_text.language_document_char, metadata_and_text.title, metadata_and_text.src_filename, endnotes.nr}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:endnotes] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_body_format
- %{<font color="#666666" size="2">#{sql_select_body}</font>}
- end
- def sql_select_endnotes_format
- %{<font color="#666666" size="2">#{sql_select_endnotes}</font>}
- end
- def contents
- @conn.select_all(sql_select_body)
- end
- def endnotes
- @conn.select_all(sql_select_endnotes)
- end
- end
- WOK_SQL
- end
- def buttons1_pgsql
- <<-'WOK_SQL'
- <input type="checkbox" name="casesense" #{@checked_case}> case sensitive
- WOK_SQL
- end
- def dbi_connect
- <<-'WOK_SQL'
- dbi="dbi:Pg:database=#{@db};port=#{@port}"
- @conn=DBI.connect(dbi,user)
- WOK_SQL
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/cgi_sql_common.rb b/lib/sisu/v3dv/cgi_sql_common.rb
deleted file mode 100644
index 8a7c126f..00000000
--- a/lib/sisu/v3dv/cgi_sql_common.rb
+++ /dev/null
@@ -1,1073 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: generates naive cgi search form for search of sisu database (pgsql sqlite)
-
-=end
-module SiSU_CGI_SQL
- class CGI_Common
- def initialize(webserv,opt,image_src,dir)
- @webserv,@opt,@image_src,@env=webserv,opt,image_src,dir
- @cmd=opt.cmd
- end
- def about
- <<-'WOK_SQL'
- * Name: SiSU information Structuring Universe
- * Author: Ralph Amissah
- * http://www.jus.uio.no/sisu
- * http://www.jus.uio.no/sisu/SiSU/download
- WOK_SQL
- end
- def gpl
- <<-'WOK_SQL'
- * Name: SiSU generated sample cgi search form
-
- * Description: generated sample cgi search form for SiSU
- (SiSU is a framework for document structuring, publishing and search)
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
- <http://www.jus.uio.no/sisu/gpl.fsf>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
- WOK_SQL
- end
- def header1
- <<-'WOK_SQL'
-#Common TOP
- @@offset=0
- @base="#{@hosturl_db}/cgi-bin/#{@version}.cgi"
- @@canned_search_url=@base
- @color_heading='#DDFFAA'
- @color_match='#ffff48'
- class Form
- def initialize(base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can='')
- search_note='' if checked_searched !~/\S/
- the_can='' if checked_url !~/\S/
- search_field='' if checked_echo !~/\S/
- @base,@search_field,@selected_db,@result_type,@checked_sql_limit,@checked_tip,@checked_stats,@checked_searched,@checked_url,@checked_case,@checked_echo,@checked_sql,@checked_all,@checked_none,@checked_selected,@checked_default,@search_note,@the_can=base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can
- @tip=if checked_tip =~/\S/
- '<font size="2" color="#666666">text:__; fulltxt:__; keywords:__; title:__; author:__; topic_register:__; subject:__; description:__; publisher:__; editor:__; contributor:__; date:__; type:__; format:__; identifier:__; source:__; language:__; relation:__; coverage:__; rights:__; comment:__; abstract:__; filename:__;</font><br />'
- else ''
- end
- end
- def submission_form
- search_form=<<-WOK
- WOK_SQL
- end
- def header_desc
- <<-WOK_SQL
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>
- SiSU search form (sample): SiSU information Structuring Universe
- </title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <meta name="sourcefile" content="SiSU._sst" />
- <link rel="generator" href="http://www.jus.uio.no/sisu" />
- <link rel="shortcut icon" href="#{@image_src}/rb7.ico" />
- <link rel="stylesheet" href="../_sisu/css/html.css" type="text/css" />
- </head>
- <body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">
- <table summary="band" border="0" cellpadding="3" cellspacing="0">
- <tr><td align="left" bgcolor="#ffffff"><a href="http://www.jus.uio.no/sisu/" target="_top"><img border="0" src="#{@image_src}/sisu.png" alt="SiSU --&gt;" /></a></td><td>
-<!-- <p class="tiny"><a href="http://www.jus.uio.no/sisu/SiSU/">&nbsp;http://www.jus.uio.no/sisu/SiSU/</a></p> -->
- <label for="find"><b>#{@env.sample_search_form_title}</b></label>
- </td></tr>
- </table>
- WOK_SQL
- end
- def header2
- <<-'WOK_SQL'
- <form action="#{@base}" id="Test Form" method="post">
- <table cellpadding="2">
- <tr><td valign=\"top\">
- <textarea id="find" name="find" type="text" rows="6" cols="40" maxlength="256">#{@search_field}</textarea>
- </td>
- <td valign=\"top\">
- #{@tip}
- #{@search_note}
- #{@the_can}
- </td></tr></table>
- <td valign=\"top\"><tr><td>
- <!input type="text" id="find" name="find" value="#{@search_field}" />
- <!input type="text" id="find" name="find" value="" />
- <font size="2" color="#222222">
- <b>to search:</b> select which database to search (drop-down menu below); enter your search query (in the form above); and <b>click on the search button</b> (below)
- <br />
- <select name="db" size="1">
- #{@selected_db}
- WOK_SQL
- end
- def buttons1
- <<-'WOK_SQL'
- </select>
- <input type="submit" value="SiSU search" />
- <input type="radio" name="view" value="index" #{@result_type[:index]}> index
- <input type="radio" name="view" value="text" #{@result_type[:text]}> text / grep
- WOK_SQL
- end
- def buttons2
- <<-'WOK_SQL'
- <br />
- match limit:
- <input type="radio" name="sql_match_limit" value="1000" #{@checked_sql_limit[:l1000]}> 1,000
- <input type="radio" name="sql_match_limit" value="2500" #{@checked_sql_limit[:l2500]}> 2,500
- <br />
- <input type="checkbox" name="echo" #{@checked_echo}> echo query
- <input type="checkbox" name="stats" #{@checked_stats}> result stats
- <input type="checkbox" name="url" #{@checked_url}> search url
- <input type="checkbox" name="searched" #{@checked_searched}> searched
- <input type="checkbox" name="tip" #{@checked_tip}> available fields
- <input type="checkbox" name="sql" #{@checked_sql}> sql statement
- <br />
- checks:
- <input type="radio" name="checks" value="check_default" #{@checked_default}> default
- <input type="radio" name="checks" value="check_selected" #{@checked_selected}> selected
- <input type="radio" name="checks" value="check_all" #{@checked_all}> all
- <input type="radio" name="checks" value="check_none" #{@checked_none}> none
- </font>
- </td></tr>
- </table>
- </form>
- WOK
- end
- end
- WOK_SQL
- end
- def search_request
- <<-'WOK_SQL'
- class SearchRequest #% search_for
- attr_accessor :text1,:fulltext,:keywords,:title,:author,:topic_register,:subject,:description,:publisher,:editor,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:filename
- def initialize(search_field='',q='')
- @search_field,@q=search_field,q
- @text1=@fulltext=@keywords=@title=@author=@topic_register=@subject=@description=@publisher=@editor=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@comment=@abstract=@owner=@date_created=@date_issued=@date_modified=@date_available=@date_valid=@filename=''
- if @search_field=~/\S/
- @text1=text_to_match('text:')
- @fulltext=text_to_match('fulltxt:')
- @topic_register=text_to_match('topic_register:')
- @title=text_to_match('title:') # DublinCore 1 - title
- @author=text_to_match('(?:author|creator)s?:') # DublinCore 2 - creator/author
- @subject=text_to_match('subj(?:ect)?:') # DublinCore 3 - subject
- @description=text_to_match('description:') # DublinCore 4 - description
- @publisher=text_to_match('pub(?:lisher)?:') # DublinCore 5 - publisher
- @editor=text_to_match('editor:')
- @contributor=text_to_match('contributor:') # DublinCore 6 - contributor
- @date=text_to_match('date:') # DublinCore 7 - date dd-mm-yy
- @type=text_to_match('type:') # DublinCore 8 - type
- @format=text_to_match('format:') # DublinCore 9 - format
- @identifier=text_to_match('identifier:') # DublinCore 10 - identifier
- @source=text_to_match('source:') # DublinCore 11 - source
- @language=text_to_match('language:') # DublinCore 12 - language
- @relation=text_to_match('relation:') # DublinCore 13 - relation
- @coverage=text_to_match('coverage:') # DublinCore 14 - coverage
- @rights=text_to_match('rights:') # DublinCore 15 - rights
- @keywords=text_to_match('key(?:words?)?:')
- @comment=text_to_match('comment:')
- @abstract=text_to_match('abs(?:tract)?:')
- @owner=text_to_match('owner:')
- @date_created=text_to_match('date_created:')
- @date_issued=text_to_match('date_issued:')
- @date_modified=text_to_match('date_modified:')
- @date_available=text_to_match('date_available:')
- @date_valid=text_to_match('date_valid:')
- @filename=text_to_match('filename:')
- @text1=text_to_match unless @keywords or @author or @title or @text1 or @fulltext or @comment or @abstract or @rights or @subject or @publisher or @date or @filename or @topic_register
- else
- @text1=q['s1'] if q['s1']=~/\S/
- @fulltext=q['ft'] if q['ft']=~/\S/
- @keywords=q['key'] if q['key']=~/\S/
- @title=q['ti'] if q['ti']=~/\S/
- @author=q['au'] if q['au']=~/\S/
- @topic_register=q['tr'] if q['tr']=~/\S/
- @subject=q['sj'] if q['sj']=~/\S/
- @description=q['dsc'] if q['dsc']=~/\S/
- @publisher=q['pb'] if q['pb']=~/\S/
- @editor=q['cntr'] if q['cntr']=~/\S/
- @contributor=q['cntr'] if q['cntr']=~/\S/
- @date=q['dt'] if q['dt']=~/\S/
- @type=q['ty'] if q['ty']=~/\S/
- @identifier=q['id'] if q['id']=~/\S/
- @source=q['src'] if q['src']=~/\S/
- @language=q['lang'] if q['lang']=~/\S/
- @relation=q['rel'] if q['rel']=~/\S/
- @coverage=q['cov'] if q['cov']=~/\S/
- @rights=q['cr'] if q['cr']=~/\S/
- @comment=q['co'] if q['co']=~/\S/
- @abstract=q['ab'] if q['ab']=~/\S/
- @date_created=q['dtc'] if q['dtc']=~/\S/
- @date_issued=q['dti'] if q['dti']=~/\S/
- @date_modified=q['dtm'] if q['dtm']=~/\S/
- @date_available=q['dta'] if q['dta']=~/\S/
- @date_valid=q['dtv'] if q['dtv']=~/\S/
- @filename=if q['doc'] and q['search'] !~/search db/; q['doc']
- elsif q['fns']=~/\S/; q['fns']
- end
- @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000
- @@offset=q['off'] if q['off']=~/\d+/ # 0
- end
- end
- def text_to_match(identifier='')
- m={
- :string => /#{identifier}\s*(.+?)/,
- :string => /#{identifier}\s*(.+?)(?:;|\n|\r|$)/,
- :word => /#{identifier}[\s(]*(\S+)/
- }
- search_string=if @search_field =~m[:word]
- search_string=if @search_field =~m[:braces]; m[:braces].match(@search_field)[1]
- elsif @search_field =~m[:string]; m[:string].match(@search_field)[1]
- else
- str=m[:word].match(@search_field)[1]
- str=str.gsub(/[()]/,'')
- str
- end
- search_string=search_string.strip.search_string.gsub(/\s+/,'+')
- #else
- # "__"
- end
- end
- end
- WOK_SQL
- end
- def search_statement_common
- <<-'WOK_SQL'
- class DBI_SearchStatement
- attr_reader :text_search_flag,:sql_select_body_format,:sql_select_endnotes_format,:sql_offset,:sql_limit
- def initialize(conn,search_for,q,c)
- @conn=conn
- @text_search_flag=false
- @sql_statement={ :body => '', :endnotes => '', :range => '' }
- #@offset||=@@offset
- #@offset+=@@limit
- search={ :text => [], :endnotes => [] }
- cse=(c =~/\S/) ? true : false
- st=DBI_SearchString.new('doc_objects.clean',search_for.text1,q['s1'],cse).string
- se=DBI_SearchString.new('endnotes.clean',search_for.text1,q['s1'],cse).string
- @text_search_flag=st[:flag]
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << se[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.fulltext',search_for.fulltext,q['ft'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_keywords',search_for.keywords,q['key'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.title',search_for.title,q['ti'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.creator_author',search_for.author,q['au'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_topic_register',search_for.topic_register,q['tr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_subject',search_for.subject,q['sj'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_description',search_for.description,q['dsc'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.publisher',search_for.publisher,q['pb'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.creator_editor',search_for.editor,q['cntr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.creator_contributor',search_for.contributor,q['cntr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.date_published',search_for.date,q['dt'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_type',search_for.type,q['ty'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_identifier',search_for.identifier,q['id'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.original_source',search_for.source,q['src'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.language_document_char',search_for.language,q['lang'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_relation',search_for.relation,q['rel'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_coverage',search_for.coverage,q['cov'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.rights_all',search_for.rights,q['cr'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_comment',search_for.comment,q['co'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_abstract',search_for.abstract,q['ab'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.src_filename',search_for.filename,q['fns'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- search[:endnotes] << st[:search]
- end
- @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000
- @@offset=q['off'] if q['off']=~/\d+/ # 0
- WOK_SQL
- end
- def pages
- <<-'WOK_SQL'
- def sql_offset
- @@offset
- end
- def sql_match_limit
- @@limit
- end
- def sql_canned_search
- @offset_next=sql_offset.to_i + sql_match_limit.to_i
- @offset_previous=sql_offset.to_i - sql_match_limit.to_i
- def current
- @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + sql_offset.to_s
- end
- def next
- @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + @offset_next.to_s
- end
- def previous
- @offset_previous >= 0 \
- ? (@@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + @offset_previous.to_s)
- : ''
- end
- def start
- @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + 0.to_s
- end
- self
- end
- def pre_next(beyond_limit,img)
- can=sql_canned_search
- page=(sql_offset.to_i + sql_match_limit.to_i)/sql_match_limit.to_i
- if beyond_limit
- if page.to_s =~ /^1$/
- %{<br /><center>
- pg. #{page.to_s}
- <a href="#{can.next}">
- <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
- </a>
- </center>}
- elsif page.to_s =~ /^2$/
- %{<br /><center>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- <a href="#{can.next}">
- <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
- </a>
- </center>}
- else
- %{<br /><center>
- <a href="#{can.start}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="|&lt;&nbsp;" />
- </a>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- <a href="#{can.next}">
- <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
- </a>
- </center>}
- end
- else
- if page.to_s =~ /^1$/; ''
- elsif page.to_s =~ /^2$/
- %{<br /><center>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- </center>}
- else
- %{<br /><center>
- <a href="#{can.start}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="|&lt;&nbsp;" />
- </a>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- </center>}
- end
- end
- end
- WOK_SQL
- end
- def tail
- v=SiSU_Env::InfoVersion.instance.get_version
- <<-WOK_SQL
- def tail
- <<-'WOK'
- <br /><hr /><br />
-<table summary="SiSU summary" bgcolor="#ffffff" cellpadding="2" border="0">
- <!-- widget sisu -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="http://www.jus.uio.no/sisu" >
- <img border="0" src="#{@image_src}/sisu.png" alt="SiSU" width="120" height="39" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
-<!-- SiSU Rights -->
- <p class="tiny_left"><font color="#666666" size="2">
- Generated by
- <a href="http://www.jus.uio.no/sisu" >
- #{v[:project]}</a> #{v[:version]} #{v[:date]} (#{v[:date_stamp]})
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- <b>#{v[:project]}</b></a> <sup>&copy;</sup> Ralph Amissah
- 1993, current 2012.
- All Rights Reserved.
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- #{v[:project]}</a>
- is software for document structuring, publishing and search,
- <br />
- <a href="http://www.jus.uio.no/sisu" >
- www.jus.uio.no/sisu
- </a>
- and
- <a href="http://www.sisudoc.org" >
- www.sisudoc.org
- </a>
- <br />
- <i>w3 since October 3 1993</i>
- <a href="mailto:ralph@amissah.com" >
- ralph@amissah.com
- </a>
- <br />
- mailing list subscription
- <a href="http://lists.sisudoc.org/listinfo/sisu" >
- http://lists.sisudoc.org/listinfo/sisu
- </a>
- <br />
- <a href="mailto:sisu@lists.sisudoc.org" >
- sisu@lists.sisudoc.org
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- #{v[:project]} using:
- <br />Standard SiSU markup syntax,
- <br />Standard SiSU meta-markup syntax, and the
- <br />Standard SiSU <u>object citation numbering</u> and system, (object/text positioning system)
- <br />
- <sup>&copy;</sup> Ralph Amissah 1997, current 2012.
- All Rights Reserved.
- </font></p>
-</td></tr>
- <!-- widget way better -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="http://www.gnu.org/licenses/gpl.html">
- <img border="0" src="#{@image_src}/gplv3_free_software.png" alt="GPLv3" width="127" height="51" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- SiSU is released under
- <a href="http://www.gnu.org/licenses/gpl.html">GPL&nbsp;v3</a>
- or later,
- <a href="http://www.gnu.org/licenses/gpl.html">
- http://www.gnu.org/licenses/gpl.html
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- #{v[:project]}, developed using
- <a href="http://www.ruby-lang.org/en/">
- Ruby
- </a>
- on
- <a href="http://www.debian.org/">
- Debian/Gnu/Linux
- </a>
- software infrastructure,
- with the usual GPL (or OSS) suspects.
- <br />
- Better - "performance, reliability, scalability, security &amp; total cost of ownership"
- [not to mention flexibility &amp; choice] use of and adherence to open standards (where practical and fair) and it is software libré.
- <br />
- Get With the Future
- <a href="http://www.jus.uio.no/sisu/">
- Way Better!
- </a>
- </font></p>
-</td></tr>
-</table>
- <a name="bottom" id="bottom"></a><a name="down" id="down"></a><a name="end" id="end"></a><a name="finish" id="finish"></a><a name="stop" id="stop"></a><a name="credits" id="credits"></a>
- </body></html>
- WOK
- end
- WOK_SQL
- end
- def main1
- <<-'WOK_SQL'
- @tail=tail
- @counter_txt_doc,@counter_txt_ocn,@counter_endn_doc,@counter_endn_ocn=0,0,0,0
- @counters_txt,@counters_endn,@sql_select_body,@sql_select_endnotes='','','',''
- FCGI.each_cgi do |cgi|
- begin # all code goes in begin section
- @search={ :text => [], :endnotes => [] }
- q=CGI.new
- @db=if cgi['db'] =~/\S+/;
- @stub=/#{@db_name_prefix}(\S+)/.match(cgi['db'])[1]
- cgi['db']
- else
- @stub='sisu'
- "#{@db_name_prefix}#{@stub}"
- end
- checked_url,checked_stats,checked_searched,checked_tip,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,selected_db='','','','','','','','',''
- result_type=(cgi['view']=~/text/) \
- ? result_type={ :index => '', :text => 'checked'}
- : result_type={ :index => 'checked', :text => ''}
- @@limit=if cgi['sql_match_limit'].to_s=~/2500/
- checked_sql_limit={ :l1000 => '', :l2500 => 'checked'}
- '2500'
- else
- checked_sql_limit={ :l1000 => 'checked', :l2500 => ''}
- '1000'
- end
- checked_echo='checked' if cgi['echo'] =~/\S/
- checked_stats='checked' if cgi['stats'] =~/\S/
- checked_url='checked' if cgi['url'] =~/\S/ or cgi['u'].to_i==1
- checked_searched='checked' if cgi['searched'] =~/\S/
- checked_tip='checked' if cgi['tip'] =~/\S/
- checked_case='checked' if cgi['casesense'] =~/\S/
- checked_sql='checked' if cgi['sql'] =~/\S/
- if cgi['checks'] =~/check_all/ or cgi['check_all'] =~/\S/ or cgi['a'].to_i==1
- checked_all='checked'
- checked_echo=checked_stats=checked_url=checked_searched=checked_tip=checked_sql='checked'
- checked_none=''
- elsif cgi['checks'] =~/check_none/
- checked_none='checked'
- checked_all=checked_url=checked_stats=checked_searched=checked_tip=checked_echo=checked_sql=''
- elsif cgi['checks'] =~/check_selected/
- checked_selected='checked'
- elsif cgi['checks'] =~/check_default/
- checked_default='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- else
- checked_selected='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- end
- WOK_SQL
- end
- def main2
- <<-'WOK_SQL'
- search_field=cgi['find'] if cgi['find'] # =~/\S+/
- @search_for=SearchRequest.new(search_field,q) #.analyze #% search_for
- #% searches
- #Canned_search.new(@base,@search_for.text1,cgi)
- if @search_for.text1=~/\S+/ or @search_for.fulltext=~/\S+/ or @search_for.author=~/\S+/ or @search_for.topic_register=~/\S+/ #and search_field =~/\S/
- s1='s1=' + CGI.escape(@search_for.text1) if @search_for.text1=~/\S/
- ft='&ft=' + CGI.escape(@search_for.fulltext) if @search_for.fulltext=~/\S/
- key='key=' + CGI.escape(@search_for.keywords) if @search_for.keywords=~/\S/
- ti='&ti=' + CGI.escape(@search_for.title) if @search_for.title=~/\S/
- au='&au=' + CGI.escape(@search_for.author) if @search_for.author=~/\S/
- tr='&tr=' + CGI.escape(@search_for.topic_register) if @search_for.topic_register=~/\S/
- sj='&sj=' + CGI.escape(@search_for.subject) if @search_for.subject=~/\S/
- dsc='&dsc=' + CGI.escape(@search_for.description) if @search_for.description=~/\S/
- pb='&pb=' + CGI.escape(@search_for.publisher) if @search_for.publisher=~/\S/
- edt='&edt=' + CGI.escape(@search_for.editor) if @search_for.editor=~/\S/
- cntr='&cntr=' + CGI.escape(@search_for.contributor) if @search_for.contributor=~/\S/
- dt='&dt=' + CGI.escape(@search_for.date) if @search_for.date=~/\S/
- ty='&ty=' + CGI.escape(@search_for.type) if @search_for.type=~/\S/
- id='&id=' + CGI.escape(@search_for.identifier) if @search_for.identifier=~/\S/
- src='&src=' + CGI.escape(@search_for.source) if @search_for.source=~/\S/
- lang='&lang=' + CGI.escape(@search_for.language) if @search_for.language=~/\S/
- rel='&rel=' + CGI.escape(@search_for.relation) if @search_for.relation=~/\S/
- cov='&cov=' + CGI.escape(@search_for.coverage) if @search_for.coverage=~/\S/
- cr='&cr=' + CGI.escape(@search_for.rights) if @search_for.rights=~/\S/
- co='&co=' + CGI.escape(@search_for.comment) if @search_for.comment=~/\S/
- ab='&ab=' + CGI.escape(@search_for.abstract) if @search_for.abstract=~/\S/
- dtc='&dtc=' + CGI.escape(@search_for.date_created) if @search_for.date_created=~/\S/
- dti='&dti=' + CGI.escape(@search_for.date_issued) if @search_for.date_issued=~/\S/
- dtm='&dtm=' + CGI.escape(@search_for.date_modified) if @search_for.date_modified=~/\S/
- dta='&dta=' + CGI.escape(@search_for.date_available) if @search_for.date_available=~/\S/
- dtv='&dtv=' + CGI.escape(@search_for.date_valid) if @search_for.date_valid=~/\S/
- fns='&fns=' + CGI.escape(@search_for.filename) if @search_for.filename=~/\S/
- @@canned_search_url=(checked_all =~/checked/) \
- ? "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1"
- : "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}"
- mod=ft=~/\S+/ ? (ft.gsub(/ft/,'s1')) : s1
- @canned_base_url="#{@base}?#{mod}&db=#{cgi['db']}"
- if checked_case=~/\S/
- @search[:text][1]=%{doc_objects.clean~'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~'#{@search_for.text1}'} #s1
- else
- @search[:text][1]=%{doc_objects.clean~*'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~*'#{@search_for.text1}'} #s1
- end
- canned_note='search url:'
- else
- @@canned_search_url="#{@base}?db=#{@db}&view=index"
- canned_note='search url example:'
- end
- if search_field =~/\S+/
- analyze_format=search_field.gsub(/\s*\n/,'; ')
- elsif checked_all =~/checked/ or checked_url =~/checked/
- canned_search=@@canned_search_url.scan(/(?:s1|ft|au|ti|fns|tr)=[^&]+/)
- af=canned_search.join('; ')
- af=af.gsub(/s1=/,'text: ').
- gsub(/ft=/,'fulltxt: ').
- gsub(/au=/,'author: ').
- gsub(/ti=/,'title: ').
- gsub(/fns=/,'filename: ').
- gsub(/tr=/,'topic_register: ').
- gsub(/%2B/,' ')
- analyze_format=af
- st=af.split(/\s*;\s*/)
- search_field=st.join("\n")
- end
- green=%{<font size="2" color="#004000">}
- canned_search_url_txt=CGI.escapeHTML(@@canned_search_url)
- the_can=%{<font size="2" color="#666666">#{canned_note} <a href="#{@@canned_search_url}">#{canned_search_url_txt}</a></font><br />}
- p_text=p_fulltext=p_keywords=p_title=p_author=p_topic_register=p_subject=p_description=p_publisher=p_editor=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_filename=''
- p_filename=%{filename: #{green}#{@search_for.filename}</font><br />} if @search_for.filename =~/\S+/
- p_text=%{text: #{green}#{@search_for.text1}</font><br />} if @search_for.text1 =~/\S+/
- p_fulltext=%{fulltxt: #{green}#{@search_for.fulltext}</font><br />} if @search_for.fulltext =~/\S+/
- p_title=%{title: #{green}#{@search_for.title}</font><br />} if @search_for.title =~/\S+/
- p_author=%{author: #{green}#{@search_for.author}</font><br />} if @search_for.author =~/\S+/
- p_editor=%{editor: #{green}#{@search_for.editor}</font><br />} if @search_for.editor=~/\S+/
- p_contributor=%{contributor: #{green}#{@search_for.contributor}</font><br />} if @search_for.contributor =~/\S+/
- p_date=%{date: #{green}#{@search_for.date}</font><br />} if @search_for.date =~/\S+/
- p_rights=%{rights: #{green}#{@search_for.rights}</font><br />} if @search_for.rights =~/\S+/
- p_topic_register=%{topic_register: #{green}#{@search_for.topic_register}</font><br />} if @search_for.topic_register =~/\S+/
- p_subject=%{subject: #{green}#{@search_for.subject}</font><br />} if @search_for.subject =~/\S+/
- p_keywords=%{keywords: #{green}#{@search_for.keywords}</font><br />} if @search_for.keywords =~/\S+/
- p_identifier=%{identifier: #{green}#{@search_for.identifier}</font><br />} if @search_for.identifier =~/\S+/
- p_type=%{type: #{green}#{@search_for.type}</font><br />} if @search_for.type =~/\S+/
- p_format=%{format: #{green}#{@search_for.format}</font><br />} if @search_for.format =~/\S+/
- p_relation=%{relation: #{green}#{@search_for.relation}</font><br />} if @search_for.relation =~/\S+/
- p_coverage=%{coverage: #{green}#{@search_for.coverage}</font><br />} if @search_for.coverage =~/\S+/
- p_description=%{description: #{green}#{@search_for.description}</font><br />} if @search_for.description =~/\S+/
- p_abstract=%{abstract: #{green}#{@search_for.abstract}</font><br />} if @search_for.abstract =~/\S+/
- p_comment=%{comment: #{green}#{@search_for.comment}</font><br />} if @search_for.comment =~/\S+/
- p_publisher=%{publisher: #{green}#{@search_for.publisher}</font><br />} if @search_for.publisher =~/\S+/
- p_source=%{source: #{green}#{@search_for.source}</font><br />} if @search_for.source =~/\S+/
- p_language=%{language: #{green}#{@search_for.language}</font><br />} if @search_for.language =~/\S+/
- search_note=<<-WOK
- <font size="2" color="#666666">
- <b>database:</b> #{green}#{@db}</font>; <b>selected view:</b> #{green}#{cgi['view']}</font>
- <b>search string:</b> "#{green}#{analyze_format}</font>"<br />
- #{p_text} #{p_fulltext} #{p_keywords} #{p_title} #{p_author} #{p_topic_register} #{p_subject} #{p_description} #{p_publisher} #{p_editor} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename}
- </font>
- WOK
- #eg = %{canned search e.g.:<br /> <a href="#{url}">#{url}</a><br />find: #{analyze}<br />database: #{database}}
- #% dbi_canning
- @header=Form.new(@base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can).submission_form #% form
- unless q['s1'] =~/\S/ or q['au'] =~/\S/ or @search[:text][1] =~/\S/
- print "Content-type: text/html\n\n"
- puts (@header+@tail)
- else #% searches
- s1=(@search_for.text1 =~/\S/) \
- ? @search_for.text1
- : 'Unavailable'
- if checked_case=~/\S/
- @search[:text]<<%{doc_objects.clean~'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~'#{CGI.unescape(s1)}'}
- else
- @search[:text]<<%{doc_objects.clean~*'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~*'#{CGI.unescape(s1)}'}
- end
- #% dbi_request
- dbi_statement=DBI_SearchStatement.new(@conn,@search_for,q,checked_case)
- @text_search_flag=false
- @text_search_flag=dbi_statement.text_search_flag
- s_contents=dbi_statement.contents
- s_endnotes=dbi_statement.endnotes
- @body_main,@endnotes='',''
- @search_regx=nil
- oldtid=0
- if @text_search_flag
- if checked_sql =~/\S/
- sql_select_body=dbi_statement.sql_select_body_format
- sql_select_endnotes=dbi_statement.sql_select_endnotes_format
- else sql_select_body,sql_select_endnotes='',''
- end
- @body_main << '<p><hr><br /><b>Main Text:</b><br />' << sql_select_body
- @endnotes << '<p><hr><br /><b>Endnotes:</b><br />' << sql_select_endnotes
- else
- end
- @hostpath="#{@hosturl_files}/#{@stub}"
- @ln='en'
- WOK_SQL
- end
- def dir_structure
- case @opt.dir_structure_by
- when :language
- <<-'WOK_SQL'
- def path_manifest(fn,ln=nil)
- "#{@hostpath}/#{ln}/manifest/#{fn}.html"
- end
- def path_html_seg(fn,ln=nil)
- "#{@hostpath}/#{ln}/html/#{fn}"
- end
- def path_toc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/toc.html"
- end
- def path_filename(fn,seg,ln=nil)
- "#{path_html_seg(fn,ln)}/#{seg}.html"
- end
- def path_endnotes(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/endnotes.html"
- end
- def path_html_doc(fn,ln=nil)
- "#{@hostpath}/#{ln}/html/#{fn}.html"
- end
- WOK_SQL
- when :filetype
- <<-'WOK_SQL'
- def path_manifest(fn,ln=nil)
- "#{@hostpath}/manifest/#{fn}.#{ln}.html"
- end
- def path_html_seg(fn,ln=nil)
- "#{@hostpath}/html/#{fn}"
- end
- def path_toc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/toc.#{ln}.html"
- end
- def path_filename(fn,seg,ln=nil)
- "#{path_html_seg(fn,ln)}/#{seg}.#{ln}.html"
- end
- def path_endnotes(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/endnotes.#{ln}.html"
- end
- def path_html_doc(fn,ln=nil)
- "#{@hostpath}/html/#{fn}.#{ln}.html"
- end
- WOK_SQL
- else
- <<-'WOK_SQL'
- def path_manifest(fn,ln=nil)
- "#{@hostpath}/#{fn}/sisu_manifest.#{ln}.html"
- end
- def path_html_seg(fn,ln=nil)
- "#{@hostpath}/#{fn}"
- end
- def path_toc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/toc.#{ln}.html"
- end
- def path_filename(fn,seg,ln=nil)
- "#{path_html_seg(fn,ln)}/#{seg}.#{ln}.html"
- end
- def path_endnotes(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/endnotes.#{ln}.html"
- end
- def path_html_doc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/scroll.#{ln}.html"
- end
- WOK_SQL
- end
- end
- def main3
- <<-'WOK_SQL'
- #% text_objects_body
- s_contents.each do |c| #% text body
- location=c['src_filename'][/(.+?)\.(?:ssm\.sst|sst)$/,1]
- file_suffix=c['src_filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #% metadata_found_body
- if c['tid'].to_i != oldtid.to_i
- ti=c['title']
- can_txt_srch=(cgi['view']=~/index/) \
- ? %{<a href="#{@canned_base_url}&fns=#{c['src_filename']}&lang=#{c['language_document_char']}&view=text"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
- : %{<a href="#{@canned_base_url}&fns=#{c['src_filename']}&lang=#{c['language_document_char']}&view=index"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
- title=%{<span style="background-color: #{@color_heading}"><a href="#{path_toc(location,c['language_document_char'])}"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html">&nbsp;#{ti}</a></span> [#{c['language_document_char']}] by #{c['creator_author']} #{can_txt_srch}<a href="#{path_toc(location,c['language_document_char'])}"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"></a>&nbsp;<a href="#{path_manifest(location,c['language_document_char'])}"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt="manifest"></a><br />} if file_suffix=~/s/ #hmm watch file_suffix
- title=@text_search_flag \
- ? '<br /><hr>'+title
- : '<br />'+title
- @counter_txt_doc+=1
- oldtid=c['tid'].to_i
- else title=''
- end
- if @text_search_flag
- if cgi['view']=~/text/ \
- or (cgi['view']!~/index/ and cgi['search'] !~/search db/) #% txt body
- text=if c['suffix'] !~/1/ #seg
- if @search_for.text1 =~/\S+/ \
- or q['s1'] =~/\S+/ #% only this branch is working !!
- unescaped_search=if @search_for.text1 =~/\S+/
- CGI.unescape(@search_for.text1)
- elsif q['s1'] =~/\S+/
- CGI.unescape(q['s1'])
- else nil
- end
- @search_regx=if unescaped_search #check
- search_regex=[]
- build=unescaped_search.scan(/\S+/).each do |g|
- (g.to_s =~/(AND|OR)/) \
- ? (search_regex << '|')
- : (search_regex << %{#{g.to_s}})
- end
- search_regex=search_regex.join(' ')
- search_regex=search_regex.gsub(/\s*\|\s*/,'|')
- Regexp.new(search_regex, Regexp::IGNORECASE)
- else nil
- end
- else nil
- end
- matched_para=(@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) \
- ? (c['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{<span style="background-color: #{@color_match}">\\1</span>}))
- : c['body']
- %{<hr><p><font size="2">ocn <b><a href="#{path_filename(location,c['seg'],@ln)}##{c['ocn']}">#{c['ocn']}</a></b>:</font></p>#{matched_para}}
- elsif c['suffix'] =~/1/ #doc
- %{#{title}<hr><p><font size="2">ocn #{c['ocn']}:#{c['body']}}
- end
- @counter_txt_ocn+=1
- output=title+text
- else #elsif cgi['view']=~/index/ #% idx body
- if c['suffix'] !~/1/ #seg
- index=%{<a href="#{path_filename(location,c['seg'],@ln)}##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag
- elsif c['suffix'] =~/1/ #doc #FIX
- index=%{<a href="#{path_html_doc(location,@ln)}##{c['ocn']}">#{c['ocn']}</a>, }
- end
- if c['seg'] =~/\S+/
- if @text_search_flag
- @counter_txt_ocn+=1
- output=title+index
- end
- else
- @counter_txt_ocn+=1
- output=c['suffix'] !~/1/ \
- ? title+index
- : %{#{title}#{c['ocn'].sort}, }
- end
- end
- else output=title
- end
- @counters_txt=if @counter_txt_doc > 0
- if checked_stats =~/\S/
- @@lt_t=(@counter_txt_ocn==dbi_statement.sql_match_limit.to_i) ? true : false
- start=(@@offset.to_i+1).to_s
- range=(@@offset.to_i+@counter_txt_ocn.to_i).to_s
- %{<hr /><font size="2" color="#666666">Found #{@counter_txt_ocn} times in the main body of #{@counter_txt_doc} documents [ matches #{start} to #{range} ]</font><br />}
- else ''
- end
- else ''
- end
- @body_main << output #+ details
- end
- #text_objects_endnote
- oldtid = 0
- s_endnotes.each do |e| #% endnotes
- location=e['src_filename'][/(.+?)\.(?:ssm\.sst|sst)$/,1]
- file_suffix=e['src_filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #metadata_found_endnotes
- if @text_search_flag
- if e['metadata_tid'].to_i != oldtid.to_i
- ti=e['title']
- can_txt_srch=(cgi['view']=~/index/) \
- ? %{<a href="#{@canned_base_url}&fns=#{e['src_filename']}&lang=#{e['language_document_char']}&view=text"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
- : %{<a href="#{@canned_base_url}&fns=#{e['src_filename']}&lang=#{e['language_document_char']}&view=index"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
- title=%{<br /><hr><span style="background-color: #{@color_heading}"><a href="#{path_toc(location,@ln)}"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html">&nbsp;#{ti}</a></span> [#{e['language_document_char']}] by #{e['creator_author']} #{can_txt_srch}<a href="#{path_toc(location,@ln)}"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"></a>&nbsp;<a href="#{path_manifest(location,@ln)}"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt="manifest"></a><br />} if file_suffix=~/s/
- @counter_endn_doc+=1
- oldtid=e['metadata_tid'].to_i
- else title = ''
- end
- if cgi['view']=~/text/ \
- or (cgi['view']!~/index/ and cgi['search'] !~/search db/) #% txt endnotes
- @counter_endn_ocn+=1
- matched_endnote=(@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) \
- ? matched=e['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{<span style="background-color: #{@color_match}">\\1</span>})
- : e['body']
- output=%{#{title}<hr><font size="2">note <b><a href="#{path_endnotes(location,@ln)}#_#{e['nr']}">#{e['nr']}</a></b> referred to from ocn <a href="#{path_html_doc(location,@ln)}##{e['ocn']}">#{e['ocn']}</a>:</font> #{matched_endnote}}
- else #elsif cgi['view']=~/index/ #doc #FIX #% idx endnotes
- @counter_endn_ocn+=1
- output=%{#{title}<a href="#{path_endnotes(location,@ln)}#_#{e['nr']}">#{e['nr']}</a> [&sect; <a href="#{path_html_doc(location,@ln)}##{e['ocn']}">#{e['ocn']}</a>], }
- end
- @counters_endn=if @counter_endn_doc > 0
- if checked_stats =~/\S/
- @@lt_e=@counter_endn_ocn==dbi_statement.sql_match_limit.to_i \
- ? true
- : false
- start=(@@offset.to_i+1).to_s
- range=(@@offset.to_i+@counter_endn_ocn.to_i).to_s
- %{<font size="2" color="#666666">Found #{@counter_endn_ocn} times in the endnotes of #{@counter_endn_doc} documents [ matches #{start} to #{range} ]</font><br />}
- else ''
- end
- end
- @endnotes << output #+ details
- else @endnotes='' #does not take out yet
- end
- end
- offset=dbi_statement.sql_offset.to_s
- limit=dbi_statement.sql_match_limit.to_s
- @@lt_t ||=false; @@lt_e ||=false
- canned=(@@lt_t or @@lt_e) \
- ? dbi_statement.pre_next(true,@image_src).to_s
- : dbi_statement.pre_next(false,@image_src).to_s
- limit=dbi_statement.sql_match_limit.to_s
- cgi.out{@header.force_encoding("UTF-8") + @counters_txt.force_encoding("UTF-8") + @counters_endn.force_encoding("UTF-8") + canned.force_encoding("UTF-8") + @body_main.force_encoding("UTF-8") + @endnotes.force_encoding("UTF-8") + canned.force_encoding("UTF-8") + @tail.force_encoding("UTF-8")} #% print cgi_output_header+counters+body+endnotes
- end
- rescue Exception => e
- s='<pre>' + CGI::escapeHTML(e.backtrace.reverse.join("\n"))
- s << CGI::escapeHTML(e.message) + '</pre>'
- cgi.out{s}
- next
- ensure # eg. disconnect from server
- @conn.disconnect if @conn
- end
- end
- WOK_SQL
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/cgi_sqlite.rb b/lib/sisu/v3dv/cgi_sqlite.rb
deleted file mode 100644
index 9c2a6a8d..00000000
--- a/lib/sisu/v3dv/cgi_sqlite.rb
+++ /dev/null
@@ -1,217 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: generates naive cgi search form for search of sisu database (pgsql sqlite)
-
-=end
-module SiSU_CGI_SQLite #% database building documents
- require_relative 'sysenv' # sysenv.rb
- require_relative 'cgi_sql_common' # cgi_sql_common.rb
- include SiSU_CGI_SQL
- class SearchSQLite < CGI_Common
- def initialize(opt,webserv)
- @opt,@webserv=opt,webserv
- @env=SiSU_Env::InfoEnv.new('',opt)
- @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
- @cgi_file_name="#{Db[:name_prefix_db]}by_#{opt.dir_structure_by.to_s}_sqlite.cgi"
- end
- def sqlite
- serve=[]
- Dir.foreach(@env.path.webserv) do |x|
- if x !~/^\./ \
- and FileTest.directory?("#{@env.path.webserv}/#{x}")
- if FileTest.file?("#{@env.path.webserv}/#{x}/sisu_sqlite.db")
- serve << x unless x =~/^_\S+/
- end
- end
- end
- serve=serve.sort
- f1,f2,f3='','',''
- serve.each do |x|
- f1 << %{ <option value="#{Db[:name_prefix]}#{x}">#{x}</option>\n}
- end
- f2 << %{ selected_db=case cgi['db']\n}
- serve.each do |x|
- f2 << %{ when /#{Db[:name_prefix]}#{x}/; '<option value="#{Db[:name_prefix]}#{x}">#{x}</option>'\n}
- end
- f2 << " end\n"
- f3 << %{ db_name='sisu_sqlite.db'\n}
- f3 << %{ db_sqlite=case cgi['db']\n}
- serve.each do |x|
- f3 << %{ when /#{Db[:name_prefix]}#{x}/; "#{@env.path.webserv}/#{x}/sisu_sqlite.db"\n}
- end
- f3 << %{ else '#{@env.path.webserv}/#{serve[0]}/sisu_sqlite.db'\n end\n}
- if FileTest.writable?('.')
- output=File.open(@cgi_file_name,'w')
- output << header0 << header1 << header_desc << header2 << f1 << buttons1 << buttons2 << search_request << search_statement << search_statement_common << search_query1 << @common.pages << search_query2 << @common.tail << @common.main1 << f2 << f3 << dbi_connect << @common.main2 << @common.dir_structure << @common.main3
- a=%{ generated sisu_sqlite.cgi,
- BASED ON ALREADY CREATED sisu_sqlite.db OUTPUT, (-d)
- }
- SiSU_Screen::Ansi.new(@opt.cmd,a).print_grey
- c=case @webserv
- when /pwd/; ''
- else "if necessary make the directory /usr/lib/cgi-bin :
- sudo cp -vi #{Dir.pwd}/#{@cgi_file_name} /usr/lib/cgi-bin/.
- sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
- sudo ln -s /usr/lib/cgi-bin/#{@cgi_file_name} /usr/lib/cgi-bin/sisu_sqlite.cgi
- (copy #{@cgi_file_name} to your cgi directory) set file permissions to 755, and make symbolic link to sisu_sqlite.cgi"
- end
- a=%{#{c}
- #{@env.webserv_base_cgi}/cgi-bin/sisu_sqlite.cgi
- }
- b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)'
- SiSU_Screen::Ansi.new(@opt.cmd,a,b).warn
- else puts "failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?"
- end
- end
- def header0
- <<-WOK_SQL
-#!/usr/bin/env ruby
-=begin
-#{about}
- * Description: generates naive cgi search form for search of sisu database (sqlite)
-#{gpl}
-=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
- @version='sisu_sqlite'
- @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @hosturl_db="#{@env.url.webserv_base_cgi}"
- @hosturl_files="#{@env.url.webserv_files_from_db}"
- @db_name_prefix="#{Db[:name_prefix]}"
- WOK_SQL
- end
- def search_statement
- <<-'WOK_SQL'
- class DBI_SearchString
- def initialize(l,t,q,cse=false)
- @l,@t,@q=l,t,q
- end
- def string
- search={ :search => [], :flag => false }
- if @t =~/\S+/ or @q =~/\S+/
- if @t =~/\S+/; unescaped_search=CGI.unescape(@t)
- elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q)
- end
- search_construct=[]
- unescaped_search=unescaped_search.gsub(/\s*(AND|OR)\s*/,"%' \) \\1 #{@l} LIKE \( '%").
- gsub(/(.+)/,"#{@l} LIKE \( '%\\1%' \)")
- search_construct << unescaped_search
- search_construct=search_construct.join(' ')
- search[:search] << search_construct
- search[:flag]=true
- search
- end
- search
- end
- end
- WOK_SQL
- end
- def search_query1
- <<-'WOK_SQL'
- @search_text,@search_endnotes='',''
- search[:text].flatten.each {|x| @search_text << "#{x} AND " }
- @search_text=@search_text.gsub(/AND\s+$/m,'').
- gsub(/(doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
- search[:endnotes].flatten.each {|x| @search_endnotes << "#{x} AND " }
- @search_endnotes=@search_endnotes.gsub(/AND\s+$/m,'').
- gsub(/(endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
- end
- WOK_SQL
- end
- def search_query2
- <<-'WOK_SQL'
- def sql_select_body
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:body]=%{SELECT metadata_and_text.title, metadata_and_text.creator_author, metadata_and_text.src_filename, metadata_and_text.language_document_char, metadata_and_text.notes_suffix, doc_objects.body, doc_objects.seg, doc_objects.ocn, metadata_and_text.tid FROM doc_objects, metadata_and_text WHERE #{@search_text} AND doc_objects.metadata_tid = metadata_and_text.tid ORDER BY metadata_and_text.language_document_char, metadata_and_text.title, metadata_and_text.src_filename, doc_objects.ocn}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:body] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_endnotes
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:endnotes]=%{SELECT metadata_and_text.title, metadata_and_text.creator_author, metadata_and_text.src_filename, metadata_and_text.language_document_char, endnotes.body, endnotes.nr, endnotes.ocn, endnotes.metadata_tid FROM metadata_and_text, endnotes WHERE #{@search_endnotes} AND metadata_and_text.tid = endnotes.metadata_tid ORDER BY metadata_and_text.language_document_char, metadata_and_text.title, metadata_and_text.src_filename, endnotes.nr}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:endnotes] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_body_format
- %{<font color="#666666" size="2">#{sql_select_body}</font>}
- end
- def sql_select_endnotes_format
- %{<font color="#666666" size="2">#{sql_select_endnotes}</font>}
- end
- def contents
- @conn.select_all(sql_select_body)
- end
- def endnotes
- @conn.select_all(sql_select_endnotes)
- end
- end
- WOK_SQL
- end
- def dbi_connect
- <<-'WOK_SQL'
- @dbi="DBI:SQLite3:#{db_sqlite}" #sqlite3 ?
- @conn=DBI.connect(@dbi)
- WOK_SQL
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/character_encoding.rb b/lib/sisu/v3dv/character_encoding.rb
deleted file mode 100644
index 1931c466..00000000
--- a/lib/sisu/v3dv/character_encoding.rb
+++ /dev/null
@@ -1,379 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules related to locales, character encoding for different
- output generators [requires kirbybase]
-
-=end
-module SiSU_CharacterEncode
- require 'kirbybase'
- require_relative 'sysenv' # sysenv.rb
- class Characters
- attr_accessor(:character_encoding,:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name)
- def initialize(&block)
- instance_eval(&block)
- end
- end
- class Create <Characters
- def initialize
- #NOTE places character_encoding.tbl in correct subdirectory ./_sisu_processing/encoding
- @db=KirbyBase.new #default database location, pwd
- @ce_tbl=@db.create_table.documents(:character_encoding, :glyph,:String, :dec,:Integer, :hex,:String, :rb,:String, :html,:String, :html_name,:String, :tex,:String, :tex_licr,:String, :tex_alt,:String, :name,:String)
- end
- def db
- x=CharacterEncoding.new.table
- #x.each {|y| puts y[2].inspect}
- x.each do |c|
- #puts "#{c[0]}, #{c[1]}, #{c[2]}, #{c[3]}, #{c[4]}, #{c[5]}, #{c[6]}, #{c[7]}, #{c[8]}, #{c[9]}"
- @ce_tbl.insert(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7], c[8], c[9])
- end
- end
- end
- class Query
- def initialize(find='',show='')
- #NOTE character_encoding.tbl not read from subdirectory ./_sisu_processing/encoding
- @db=KirbyBase.new #default database location, pwd
- @ce_tbl=@db.get_table(:character_encoding)
- @find=find
- end
- def selected(selected,show)
- @y=[]
- selected.each do |x|
- @y<<case show
- when 'glyph'; x.glyph
- when 'dec'; x.dec
- when 'hex'; x.hex
- when 'rb'; x.rb
- when 'html'; x.html
- when 'html_name'; x.html_name
- when 'tex'; x.tex
- when 'ot1'; x.ot1
- when 'ts1'; x.ts1
- when 'name'; x.name
- else x.hex
- end
- end
- #@ce_tbl.select(:glyph,:name) { |r| r.hex==hex }.each do |r|
- # puts '%s %s' % [r.glyph, r.name]
- #end
- #:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name
- #list=['number','glyph','html','hex','rb','tex','ot1','ts1','name']
- end
- def hex(hex,show)
- select=@ce_tbl.select(:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name) { |r| r.hex==hex }
- selected(select,show)
- @y
- end
- def dec(dec,show)
- select=@ce_tbl.select(:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name) { |r| r.dec==dec }
- selected(select,show)
- @y
- end
- def name(name,show)
- select=@ce_tbl.select(:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name) { |r| r.name =~ /#{name}/ }
- selected(select,show)
- @y
- end
- def report
- puts @ce_tbl.select(:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name).to_report
- end
- def table
- selected=@ce_tbl.select
- #selected=@ce_tbl.select(:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name)
- selected.each do |c|
- puts '%s %s %s %s %s %s %s %s %s %s' % [c.glyph,c.dec,c.hex,c.rb,c.html,c.html_name,c.tex,c.tex_licr,c.tex_alt,c.name]
- #puts "#{c.glyph}, #{c.dec}, #{c.hex}, #{c.rb}, #{c.html}, #{c.name}, #{c.tex}, #{c.tec_licr}, #{c.tex_alt}, #{c.c_name}"
- end
- end
- end
- class CharacterEncoding
- def table
- x=[]
-#:glyph, :dec,:hex, :rb, :xml , :html_name, :tex, :tex_licr, :tex_alt, :name
- x=[
- ['', 9, '', '', '&#009;', nil, '', '', '', 'Horizontal tab' ],
- ['', 15, '', '', '&#015;', nil, '', '', '', 'Line feed' ],
- ['', 17, '', '', '&#017;', nil, '', '', '', 'Carriage return' ],
- [' ', 32, '40', '\40', '&#032;', nil, '', '', '', 'Space' ],
- ['!', 33, '41', '\41', '&#033;', nil, '!', '!', '!', 'Punctuation Exclamation !' ],
- ['', 34, '42', '\42', '&#034;', '&quot;', '', '', '', 'Punctuation Quotation mark' ],
- ['#', 35, '43', '\43', '&#035;', nil, '{\#}', '\#', '', 'Hash mark #' ],
- ['$', 36, '44', '\44', '&#036;', nil, '{\$}', '\textdollar', '', 'Dollar sign $' ],
- ['%', 37, '45', '\45', '&#037;', nil, '{\%}', '\%', '', 'Percent sign %' ],
- ['&', 38, '46', '\46', '&#038;', '&amp;', '{\&}', '\&', '', 'Ampersand &' ],
- ['\'', 39, '47', '\47', '&#039;', nil, '', '', '', 'Apostrophe \''],
- ['(', 40, '50', '\50', '&#040;', nil, '', '', '', 'Left parenthesis (' ],
- [')', 41, '51', '\51', '&#041;', nil, '', '', '', 'Right parenthesis )' ],
- ['*', 42, '52', '\52', '&#042;', nil, '', '', '', 'Asterisk *' ],
- ['+', 43, '53', '\53', '&#043;', nil, '', '', '', 'Plus sign +' ],
- [',', 44, '54', '\54', '&#044;', nil, ',', ',', ',', 'Puncutation Comma ,' ],
- ['-', 45, '55', '\55', '&#045;', nil, '-', '-', '-', 'Puncutation Hyphen -' ],
- ['.', 46, '56', '\56', '&#046;', nil, '.', '.', '.', 'Puncutation Period .' ],
- ['/', 47, '57', '\57', '&#047;', nil, '/', '/', '/', 'Puncutation Slash /' ],
- ['0', 48, '60', '\60', '&#048;', nil, '0', '0', '0', 'Digit zero 0' ],
- ['1', 49, '61', '\61', '&#049;', nil, '1', '1', '1', 'Digit one 1' ],
- ['2', 50, '62', '\62', '&#050;', nil, '2', '2', '2', 'Digit two 2' ],
- ['3', 51, '63', '\63', '&#051;', nil, '3', '3', '3', 'Digit three 3' ],
- ['4', 52, '64', '\64', '&#052;', nil, '4', '4', '4', 'Digit four 4' ],
- ['5', 53, '65', '\65', '&#053;', nil, '5', '5', '5', 'Digit five 5' ],
- ['6', 54, '66', '\66', '&#054;', nil, '6', '6', '6', 'Digit six 6' ],
- ['7', 55, '67', '\67', '&#055;', nil, '7', '7', '7', 'Digit seven 7' ],
- ['8', 56, '70', '\70', '&#056;', nil, '8', '8', '8', 'Digit eight 8' ],
- ['9', 57, '71', '\71', '&#057;', nil, '9', '9', '9', 'Digit nine 9' ],
- [':', 58, '72', '\72', '&#058;', nil, '', '', '', 'Punctuation Colon :' ],
- [';', 59, '73', '\73', '&#059;', nil, '', '', '', 'Punctuation Semicolon ;' ],
- ['<', 60, '74', '\74', '&#060;', '&lt;', '', '', '', 'Less than <' ],
- ['=', 61, '75', '\75', '&#061;', nil, '', '', '', 'Equals sign =' ],
- ['>', 62, '76', '\76', '&#062;', '&gt;', '', '', '', 'Greater than >' ],
- ['?', 63, '77', '\77', '&#063;', nil, '?', '?', '?', 'Punctuation Question mark ?' ],
- ['@', 64, '100', '\100', '&#064;', nil, '', '', '', 'Commercial at sign @' ],
- ['A', 65, '101', '\101', '&#065;', nil, 'A', 'A', 'A', 'Captial A' ],
- ['B', 66, '102', '\102', '&#066;', nil, 'B', 'B', 'B', 'Captial B' ],
- ['C', 67, '103', '\103', '&#067;', nil, 'C', 'C', 'C', 'Captial C' ],
- ['D', 68, '104', '\104', '&#068;', nil, 'D', 'D', 'D', 'Captial D' ],
- ['E', 69, '105', '\105', '&#069;', nil, 'E', 'E', 'E', 'Captial E' ],
- ['F', 70, '106', '\106', '&#070;', nil, 'F', 'F', 'F', 'Captial F' ],
- ['G', 71, '107', '\107', '&#071;', nil, 'G', 'G', 'G', 'Captial G' ],
- ['H', 72, '110', '\110', '&#072;', nil, 'H', 'H', 'H', 'Captial H' ],
- ['I', 73, '111', '\111', '&#073;', nil, 'I', 'I', 'I', 'Captial I' ],
- ['J', 74, '112', '\112', '&#074;', nil, 'J', 'J', 'J', 'Captial J' ],
- ['K', 75, '113', '\113', '&#075;', nil, 'K', 'K', 'K', 'Captial K' ],
- ['L', 76, '114', '\114', '&#076;', nil, 'L', 'L', 'L', 'Captial L' ],
- ['M', 77, '115', '\115', '&#077;', nil, 'M', 'M', 'M', 'Captial M' ],
- ['N', 78, '116', '\116', '&#078;', nil, 'N', 'N', 'N', 'Captial N' ],
- ['O', 79, '117', '\117', '&#079;', nil, 'O', 'O', 'O', 'Captial O' ],
- ['P', 80, '120', '\120', '&#080;', nil, 'P', 'P', 'P', 'Captial P' ],
- ['Q', 81, '121', '\121', '&#081;', nil, 'Q', 'Q', 'Q', 'Captial Q' ],
- ['R', 82, '122', '\122', '&#082;', nil, 'R', 'R', 'R', 'Captial R' ],
- ['S', 83, '123', '\123', '&#083;', nil, 'S', 'S', 'S', 'Captial S' ],
- ['T', 84, '124', '\124', '&#084;', nil, 'T', 'T', 'T', 'Captial T' ],
- ['U', 85, '125', '\125', '&#085;', nil, 'U', 'U', 'U', 'Captial U' ],
- ['V', 86, '126', '\126', '&#086;', nil, 'V', 'V', 'V', 'Captial V' ],
- ['W', 87, '127', '\127', '&#087;', nil, 'W', 'W', 'W', 'Captial W' ],
- ['X', 88, '130', '\130', '&#088;', nil, 'X', 'X', 'X', 'Captial X' ],
- ['Y', 89, '131', '\131', '&#089;', nil, 'Y', 'Y', 'Y', 'Captial Y' ],
- ['Z', 90, '132', '\132', '&#090;', nil, 'Z', 'Z', 'Z', 'Captial Z' ],
- ['[', 91, '133', '\133', '&#091;', nil, '', '', '', 'Left square bracket [' ],
- ['\\', 92, '134', '\134', '&#092;', nil, '', '\textbackslash', '', 'Backslash \\'],
- [']', 93, '135', '\135', '&#093;', nil, '', '', '', 'Right square bracket ]' ],
- ['^', 94, '136', '\136', '&#094;', nil, '', '', '', 'Caret ^' ],
- ['_', 95, '137', '\137', '&#095;', nil, '{\_}', '\textunderscore', '', 'Underscore _' ],
- ['`', 96, '140', '\140', '&#096;', nil, '', '', '', 'Grave accent `' ],
- ['a', 97, '141', '\141', '&#097;', nil, 'a', 'a', 'a', 'Small a' ],
- ['b', 98, '142', '\142', '&#098;', nil, 'b', 'b', 'b', 'Small b' ],
- ['c', 99, '143', '\143', '&#099;', nil, 'c', 'c', 'c', 'Small c' ],
- ['d', 100, '144', '\144', '&#100;', nil, 'd', 'd', 'd', 'Small d' ],
- ['e', 101, '145', '\145', '&#101;', nil, 'e', 'e', 'e', 'Small e' ],
- ['f', 102, '146', '\146', '&#102;', nil, 'f', 'f', 'f', 'Small f' ],
- ['g', 103, '147', '\147', '&#103;', nil, 'g', 'g', 'g', 'Small g' ],
- ['h', 104, '150', '\150', '&#104;', nil, 'h', 'h', 'h', 'Small h' ],
- ['i', 105, '151', '\151', '&#105;', nil, 'i', 'i', 'i', 'Small i' ],
- ['j', 106, '152', '\152', '&#106;', nil, 'j', 'j', 'j', 'Small j' ],
- ['k', 107, '153', '\153', '&#107;', nil, 'k', 'k', 'k', 'Small k' ],
- ['l', 108, '154', '\154', '&#108;', nil, 'l', 'l', 'l', 'Small l' ],
- ['m', 109, '155', '\155', '&#109;', nil, 'm', 'm', 'm', 'Small m' ],
- ['n', 110, '156', '\156', '&#110;', nil, 'n', 'n', 'n', 'Small n' ],
- ['o', 111, '157', '\157', '&#111;', nil, 'o', 'o', 'o', 'Small o' ],
- ['p', 112, '160', '\160', '&#112;', nil, 'p', 'p', 'p', 'Small p' ],
- ['q', 113, '161', '\161', '&#113;', nil, 'q', 'q', 'q', 'Small q' ],
- ['r', 114, '162', '\162', '&#114;', nil, 'r', 'r', 'r', 'Small r' ],
- ['s', 115, '163', '\163', '&#115;', nil, 's', 's', 's', 'Small s' ],
- ['t', 116, '164', '\164', '&#116;', nil, 't', 't', 't', 'Small t' ],
- ['u', 117, '165', '\165', '&#117;', nil, 'u', 'u', 'u', 'Small u' ],
- ['v', 118, '166', '\166', '&#118;', nil, 'v', 'v', 'v', 'Small v' ],
- ['w', 119, '167', '\167', '&#119;', nil, 'w', 'w', 'w', 'Small w' ],
- ['x', 120, '170', '\170', '&#120;', nil, 'x', 'x', 'x', 'Small x' ],
- ['y', 121, '171', '\171', '&#121;', nil, 'y', 'y', 'y', 'Small y' ],
- ['z', 122, '172', '\172', '&#122;', nil, 'z', 'z', 'z', 'Small z' ],
- ['{', 123, '173', '\173', '&#123;', nil, '{\{}', '\{', '', 'Left curly brace {' ],
- ['|', 124, '174', '\174', '&#124;', nil, '', '', '', 'Vertical bar / pipe |' ],
- ['}', 125, '175', '\175', '&#125;', nil, '{\}}', '\}', '', 'Right curly brace }' ],
- ['~', 126, '176', '\176', '&#126;', nil, '', '', '', 'Tilde ~' ],
- ['', 127, '177', '', '&#127;', nil, '', '', '', ' ' ],
- ['', 128, '200', '', '&#128;', nil, '', '', '', ' ' ],
- ['', 129, '201', '', '&#129;', nil, '', '', '', ' ' ],
- ['\'', 130, '202', '', '&#130;', nil, '', '', '', 'Low left single quote \''],
- [' ', 131, '203', '', '&#131;', nil, '', '', '', 'Florin ' ],
- ['"', 132, '204', '', '&#132;', nil, '', '', '', 'Low left double quote "' ],
- ['…', 133, '205', '\342\200\246', '&#133;', nil, '…', '\textellipsis', '', 'Ellipsis …' ],
- ['†', 134, '206', '\342\200\240', '&#134;', nil, '†', '\textdagger', '', 'Dagger †' ],
- ['‡', 135, '207', '\342\200\241', '&#135;', nil, '‡', '\textdaggerbl', '', 'Double dagger ‡' ],
- ['^', 136, '210', '', '&#136;', nil, '', '', '', 'Circumflex ^' ],
- ['', 137, '211', '', '&#137;', nil, '', '', '', 'Permil ' ],
- ['', 138, '212', '', '&#138;', nil, '', '', '', 'Capital S, caron ' ],
- ['<', 139, '213', '', '&#139;', nil, '', '', '', 'Less than sign (see &060;) <' ],
- ['', 140, '214', '', '&#140;', nil, '', '', '', 'Capital OE ligature ' ],
- ['', 141, '215', '', '&#141;', nil, '', '', '', ' ' ],
- ['', 142, '216', '', '&#142;', nil, '', '', '', 'Capital Z, caron ' ],
- ['', 143, '217', '', '&#143;', nil, '', '', '', ' ' ],
- ['', 144, '220', '', '&#144;', nil, '', '', '', ' ' ],
- ['', 145, '221', '', '&#145;', nil, '', '', '', 'Left single quote ' ],
- ['', 146, '222', '', '&#146;', nil, '', '', '', 'Right single quote ' ],
- ['', 147, '223', '', '&#147;', nil, '', '', '', 'Left double quote ' ],
- ['', 148, '224', '', '&#148;', nil, '', '', '', 'Right double quote ' ],
- ['', 149, '225', '', '&#149;', nil, '', '', '', 'Bullet ' ],
- ['-', 150, '226', '', '&#150;', nil, '', '', '', 'En dash -' ],
- ['', 151, '227', '', '&#151;', nil, '', '', '', 'Em dash -' ],
- ['~', 152, '230', '', '&#152;', nil, '', '', '', 'Tilde (see &126;) ~' ],
- ['t', 153, '231', '', '&#153;', nil, '', '', '', 'Trademark t' ],
- ['', 154, '232', '', '&#154;', nil, '', '', '', 'small s, caron ' ],
- ['', 155, '233', '', '&#155;', nil, '', '', '', 'Greater than sign (see &062;) ' ],
- ['', 156, '234', '', '&#156;', nil, '', '', '', 'Small oe ligature ' ],
- ['', 157, '235', '', '&#157;', nil, '', '', '', ' ' ],
- ['', 158, '236', '', '&#158;', nil, '', '', '', 'Small z, caron ' ],
- ['', 159, '237', '', '&#159;', nil, '', '', '', 'Capital Y, umlaut ' ],
- ['', 160, '240', '', '&#160;', '&nbsp;', '', '', '', 'Non-breaking space ' ],
- ['¡', 161, '241', '\302\241', '&#161;', '&iexcl;', '¡', '', '', 'Inverted exclamation ' ],
- ['¢', 162, '242', '\302\242', '&#162;', '&cent;', '¢', '', '', 'Cent sign ¢' ],
- ['£', 163, '243', '\302\243', '&#163;', '&pound;', '£', '\textsterling', '', 'Pound sign £' ],
- ['¤', 164, '244', '\302\244', '&#164;', '&curren;', '¤', '\textcurrency', '', 'General currency sign ' ],
- ['¥', 165, '245', '\302\245', '&#165;', '&yen;', '¥', '', '', 'Yen sign ¥' ],
- ['¦', 166, '246', '\302\246', '&#166;', '&brvbar;', '¦', '', '', 'Broken vertical bar ' ],
- ['§', 167, '247', '\302\247', '&#167;', '&sect;', '§', '\textsection', '', 'Section sign §' ],
- ['¨', 168, '250', '\302\250', '&#168;', '&uml;', '¨', '\"', '', 'Umlaut ' ],
- ['©', 169, '251', '\302\251', '&#169;', '&copy;', '©', '\copyright', '\textcopyright', 'Copyright ©' ],
- ['ª', 170, '252', '\302\252', '&#170;', '&ordf;', 'ª', '', '', 'Feminine ordinal ª' ],
- ['«', 171, '253', '\302\253', '&#171;', '&laquo;', '«', '', '', 'Left angle quote «' ],
- ['¬', 172, '254', '\302\254', '&#172;', '&not;', '¬', '', '', 'Not sign ' ],
- ['­', 173, '255', '\302\255', '&#173;', '&shy;', '­', '', '', 'Soft hyphen ' ],
- ['®', 174, '256', '\302\256', '&#174;', '&reg;', '®', '', '', 'Registered trademark ®' ],
- ['¯', 175, '257', '\302\257', '&#175;', '&macr;', '¯', '', '', 'Macron accent ' ],
- ['°', 176, '260', '\302\260', '&#176;', '&deg;', '°', '', '', 'Degree sign °' ],
- ['±', 177, '261', '\302\261', '&#177;', '&plusmin;', '±', '', '', 'Plus or minus ±' ],
- ['²', 178, '262', '\302\262', '&#178;', '&sup2;', '²', '', '', 'Superscript 2 ²' ],
- ['³', 179, '263', '\302\263', '&#179;', '&sup3;', '³', '', '', 'Superscript 3 ³' ],
- ['', 180, '264', '\302\264', '&#180;', '&acute;', ''', '', '', 'Acute accent ' ],
- ['µ', 181, '265', '\302\265', '&#181;', '&micro;', 'µ', '', '', 'Micro sign (Greek mu) µ' ],
- ['¶', 182, '266', '\302\266', '&#182;', '&para;', '¶', '\textparagraph', '', 'Paragraph sign ¶' ],
- ['·', 183, '267', '\302\267', '&#183;', '&middot;', %q{·}, '', %q{}, 'Middle dot ' ],
- ['¸', 184, '270', '\302\270', '&#184;', '&cedil;', '¸', '', '', 'Cedilla ' ],
- ['¹', 185, '271', '\302\271', '&#185;', '&sup1;', '¹', '', '', 'Superscript 1 ¹' ],
- ['º', 186, '272', '\302\272', '&#186;', '&ordm;', 'º', '', '', 'Masculine ordinal º' ],
- ['»', 187, '273', '\302\273', '&#187;', '&raquo;', '»', '', '', 'Right angle quote ' ],
- ['¼', 188, '274', '\302\274', '&#188;', '&frac14;', '¼', '', '', 'Fraction one quarter ¼' ],
- ['½', 189, '275', '\302\275', '&#189;', '&frac12;', '½', '', '', 'Fraction on half ½' ],
- ['¾', 190, '276', '\302\276', '&#190;', '&frac34;', '¾', '', '', 'Fraction three quarters ¾' ],
- ['¿', 191, '277', '\302\277', '&#191;', '&iquest;', '¿', '', '', 'Inverted question mark ¿' ],
- ['À', 192, '300', '\303\200', '&#192;', '&Agrave;', 'À', '\`{A}', '', 'Capital A, grave accent À' ],
- ['Á', 193, '301', '\303\201', '&#193;', '&Aacute;', 'Á', %q{\'{A}}, '', 'Capital A, acute accent Á' ],
- ['Â', 194, '302', '\303\202', '&#194;', '&Acirc;', 'Â', '^{A}', '', 'Capital A, circumflex accent Â' ],
- ['Ã', 195, '303', '\303\203', '&#195;', '&Atilde;', 'Ã', '~{A}', '', 'Capital A, tilde Ã' ],
- ['Ä', 196, '304', '\303\204', '&#196;', '&Auml;', 'Ä', '"{A}', '', 'Capital A, umlaut Ä' ],
- ['Å', 197, '305', '\303\205', '&#197;', '&Aring;', 'Å', 'r{A}', '', 'Capital A, ring Å' ],
- ['Æ', 198, '306', '\303\206', '&#198;', '&AElig;', 'Æ', 'AE', '', 'Capital AE ligature Æ' ],
- ['Ç', 199, '307', '\303\207', '&#199;', '&Ccedil;', 'Ç', '', '', 'Capital C, cedilla Ç' ],
- ['È', 200, '310', '\303\210', '&#200;', '&Egrave;', 'È', '`{E}', '', 'Capital E, grave accent È' ],
- ['É', 201, '311', '\303\211', '&#201;', '&Eacute;', 'É', ''{E}', '', 'Capital E, acute accent É' ],
- ['Ê', 202, '312', '\303\212', '&#202;', '&Ecirc;', 'Ê', '^{E}', '', 'Capital E, circumflex accent Ê' ],
- ['Ë', 203, '313', '\303\213', '&#203;', '&Euml;', 'Ë', '"{E}', '', 'Capital E, umlaut Ë' ],
- ['Ì', 204, '314', '\303\214', '&#204;', '&Igrave;', 'Ì', '`{I}', '', 'Capital I, grave accent Ì' ],
- ['Í', 205, '315', '\303\215', '&#205;', '&Iacute;', 'Í', ''{I}', '', 'Capital I, acute accent Í' ],
- ['Î', 206, '316', '\303\216', '&#206;', '&Icirc;', 'Î', '^{I}', '', 'Capital I, circumflex accent Î' ],
- ['Ï', 207, '317', '\303\217', '&#207;', '&Iuml;', 'Ï', '"{I}', '', 'Capital I, umlaut Ï' ],
- ['Ð', 208, '320', '\303\220', '&#208;', '&ETH;', 'Ð', '', '', 'Capital eth, Icelandic ' ],
- ['Ñ', 209, '321', '\303\221', '&#209;', '&Ntilde;', 'Ñ', '', '', 'Capital N, tilde Ñ' ],
- ['Ò', 210, '322', '\303\222', '&#210;', '&Ograve;', 'Ò', '`{O}', '', 'Capital O, grave accent Ò' ],
- ['Ó', 211, '323', '\303\223', '&#211;', '&Oacute;', 'Ó', ''{O}', '', 'Capital O, acute accent Ó' ],
- ['Ô', 212, '324', '\303\224', '&#212;', '&Ocirc;', 'Ô', '^{O}', '', 'Capital O, circumflex accent Ô' ],
- ['Õ', 213, '325', '\303\225', '&#213;', '&Otilde;', 'Õ', '~{O}', '', 'Capital O, tilde Õ' ],
- ['Ö', 214, '326', '\303\226', '&#214;', '&Ouml;', 'Ö', '"{O}', '', 'Capital O, umlaut Ö' ],
- ['×', 215, '327', '\303\227', '&#215;', '&times;', '×', '', '', 'Multiply sign ×' ],
- ['Ø', 216, '330', '\303\230', '&#216;', '&Oslash;', 'Ø', 'O', '', 'Capital O, slash Ø' ],
- ['Ù', 217, '331', '\303\231', '&#217;', '&Ugrave;', 'Ù', '', '', 'Capital U, grave accent Ù' ],
- ['Ú', 218, '332', '\303\232', '&#218;', '&Uacute;', 'Ú', '', '', 'Capital U, acute accent Ú' ],
- ['Û', 219, '333', '\303\233', '&#219;', '&Ucirc;', 'Û', '', '', 'Capital U, circumflex accent Û' ],
- ['Ü', 220, '334', '\303\234', '&#220;', '&Uuml;', 'Ü', '', '', 'Capital U, umlaut Ü' ],
- ['Ý', 221, '335', '\303\235', '&#221;', '&Yacute;', 'Ý', '', '', 'Capital Y, acute accent Ý' ],
- ['Þ', 222, '336', '\303\236', '&#222;', '&THORN;', 'Þ', '', '', 'Capital thorn, Icelandic Þ' ],
- ['ß', 223, '337', '\303\237', '&#223;', '&szlig;', 'ß', '', '', 'Small sz ligature, German ß' ],
- ['à', 224, '340', '\303\240', '&#224;', '&agrave;', 'à', '\`{a}', '', 'Small a, grave accent à' ],
- ['á', 225, '341', '\303\241', '&#225;', '&aacute;', 'á', %q{\'{a}}, '', 'Small a, acute accent á' ],
- ['â', 226, '342', '\303\242', '&#226;', '&acirc;', 'â', '\^{a}', '', 'Small a, circumflex accent â' ],
- ['ã', 227, '343', '\303\243', '&#227;', '&atilde;', 'ã', '\~{a}', '', 'Small a, tilde ã' ],
- ['ä', 228, '344', '\303\244', '&#228;', '&auml;', 'ä', '\"{a}', '', 'Small a, umlaut ä' ],
- ['å', 229, '345', '\303\245', '&#229;', '&aring;', 'å', '\r{a}', '', 'Small a, ring å' ],
- ['æ', 230, '346', '\303\246', '&#230;', '&aelig;', 'æ', '\ae', '', 'Small ae ligature æ' ],
- ['ç', 231, '347', '\303\257', '&#231;', '&ccedil;', 'ç', '', '', 'Small c, cedilla ç' ],
- ['è', 232, '350', '\303\250', '&#232;', '&egrave;', 'è', '\`{e}', '', 'Small e, grave accent è' ],
- ['é', 233, '351', '\303\251', '&#233;', '&eacute;', 'é', %q{\'{e}}, '', 'Small e, acute accent é' ],
- ['ê', 234, '352', '\303\252', '&#234;', '&ecirc;', 'ê', '\^{e}', '', 'Small e, circumflex accent ê' ],
- ['ë', 235, '353', '\303\253', '&#235;', '&euml;', 'ë', '\"{e}', '', 'Small e, umlaut ë' ],
- ['ì', 236, '354', '\303\254', '&#236;', '&igrave;', 'ì', '\`{i}', '', 'Small i, grave accent ì' ],
- ['í', 237, '355', '\303\255', '&#237;', '&iacute;', 'í', '\'{i}', '', 'Small i, acute accent í' ],
- ['î', 238, '356', '\303\256', '&#238;', '&icirc;', 'î', '\^{i}', '', 'Small i, circumflex accent î' ],
- ['ï', 239, '357', '\303\257', '&#239;', '&iuml;', 'ï', '\"{i}', '', 'Small i, umlaut ï' ],
- ['ð', 240, '360', '\303\260', '&#240;', '&eth;', 'ð', '', '', 'Small eth, Icelandic ð' ],
- ['ñ', 241, '361', '\303\261', '&#241;', '&ntilde;', 'ñ', '', '', 'Small n, tilde ñ' ],
- ['ò', 242, '362', '\303\262', '&#242;', '&ograve;', 'ò', '\`{o}', '', 'Small o, grave accent ò' ],
- ['ó', 243, '363', '\303\263', '&#243;', '&oacute;', 'ó', %q{\'{o}}, '', 'Small o, acute accent ó' ],
- ['ô', 244, '364', '\303\264', '&#244;', '&ocirc;', 'ô', '\^{o}', '', 'Small o, circumflex accent ô' ],
- ['õ', 245, '365', '\303\265', '&#245;', '&otilde;', 'õ', '\^{o}', '', 'Small o, tilde õ' ],
- ['ö', 246, '366', '\303\266', '&#246;', '&ouml;', 'ö', '\"{o}', '', 'Small o, umlaut ö' ],
- ['÷', 247, '367', '\303\267', '&#247;', '&divide;', '÷', '', '', 'Divide sign ÷' ],
- ['ø', 248, '370', '\303\270', '&#248;', '&oslash;', 'ø', '', '', 'Small o, slash ø' ],
- ['ù', 249, '371', '\303\271', '&#249;', '&ugrave;', 'ù', '\`{u}', '', 'Small u, grave accent ù' ],
- ['ú', 250, '372', '\303\272', '&#250;', '&uacute;', 'ú', %q{\'{u}}, '', 'Small u, acute accent ú' ],
- ['û', 251, '373', '\303\273', '&#251;', '&ucirc;', 'û', '\^{u}', '', 'Small u, circumflex accent û' ],
- ['ü', 252, '374', '\303\274', '&#252;', '&uuml;', 'ü', '\"{u}', '', 'Small u, umlaut ü' ],
- ['ý', 253, '375', '\303\275', '&#253;', '&yacute;', 'ý', '', '', 'Small y, acute accent ý' ],
- ['þ', 254, '376', '\303\276', '&#254;', '&thorn;', 'þ', '', '', 'Small thorn, Icelandic þ' ],
- ['ÿ', 255, '377', '\303\277', '&#255;', '&yuml;', 'ÿ', '', '', 'Smally y, umlaut ÿ' ],
- ['∝', , '', '', '&#8733;', '&prop;', '∝', '', '', 'proportional to U+221D (8733) ∝' ],
- ['∞', , '', '', '&#8734;', '&infin;', '∞', '', '', 'infinity U+221E (8734) ∞' ],
-]
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/composite.rb b/lib/sisu/v3dv/composite.rb
deleted file mode 100644
index 21adb030..00000000
--- a/lib/sisu/v3dv/composite.rb
+++ /dev/null
@@ -1,272 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: composite documents, assemble/build documents from other
- documents or parts of marked up text
-
-=end
-module SiSU_Assemble
- require_relative 'sysenv' # sysenv.rb
- class RemoteImage
- def initialize
- @env=SiSU_Env::InfoEnv.new
- end
- def image(dir)
- images=[]
- images[0]=dir
- images
- end
- def download_images(images_info)
- path="#{@env.processing_path.processing}/external_document/image"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- download_from=images_info.shift
- images_info.each do |i|
- image="#{path}/#{i}"
- imagefile=File.new(image,'w+')
- open("#{download_from}/#{i}") do |g|
- imagefile << g.read
- end
- imagefile.close
- end
- output_path="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external"
- FileUtils::mkdir_p(output_path) unless FileTest.directory?(output_path)
- SiSU_Env::SystemCall.new("#{path}/*",output_path,'q').rsync
- end
- def download_doc_skin(doc_skin) #first element in array is source url
- path="#{@env.processing_path.processing}/external_document/skin/doc"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- download_from=doc_skin.shift
- doc_skin.each do |i|
- skin="#{path}/#{i}.rb"
- unless FileTest.exists?(skin)
- skinfile=File.new(skin,'w+')
- open("#{download_from}/#{i}.rb") do |g|
- skinfile << g.read
- end
- skinfile.close
- end
- end
- end
- end
- class Composite
- @@imager={}
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- end
- def read
- begin
- @fns_array=IO.readlines(@opt.fns,'')
- assembled=insertions?
- write(assembled)
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- def write(assembled)
- assembled_file=File.new("#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst",'w+')
- assembled.each {|a| assembled_file << a }
- assembled_file.close
- end
- def download_images(download_from,images_array)
- path="#{@env.processing_path.processing}/external_document/image"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- images_array.each do |i|
- image="#{path}/#{i}"
- unless FileTest.exists?(image)
- imagefile=File.new(image,'w+')
- open("#{download_from}/#{i}") do |g|
- imagefile << g.read
- end
- imagefile.close
- end
- end
- end
- def download_doc_skin(doc_skin) #first element in array is source url
- path="#{@env.processing_path.processing}/external_document/skin/doc"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- download_from=doc_skin.shift
- doc_skin.each do |i|
- skin="#{path}/#{i}.rb"
- unless FileTest.exists?(skin)
- skinfile=File.new(skin,'w+')
- open("#{download_from}/#{i}.rb") do |g|
- skinfile << g.read
- end
- skinfile.close
- end
- end
- end
- def insertion(fni,insert_array)
- file={ prepared: [], images: [] }
- rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
- file[:prepared] << "\n% |#{fni}|@|^|>>ok\n"
- @code_flag=false
- insert_array.each do |i|
- @code_flag=if i =~/^code\{/; true
- elsif i =~/^\}code/; false
- else @code_flag
- end
- if not @code_flag \
- and i !~/^%+\s/
- i=i.gsub(/^([123]|:?[ABC])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax)
- if i =~/^@\S+?:/
- i=i.gsub(/\n/m,"\n% ").
- gsub(/\n%\s+$/m,'').
- gsub(/^@\S+?:/m,"\n% [imported header:] ") #off imported headers
- end
- end
- file[:prepared] << i
- if i !~/^%+\s/ \
- and i =~rgx_image
- file[:images] << i.scan(rgx_image).uniq
- end
- end
- file[:prepared] << "\n% end import" << "\n\n"
- if file[:images].length > 0
- file[:images]=file[:images].flatten.uniq
- file[:images].delete_if {|x| x =~/https?:\/\// }
- end
- file
- end
- def insertions?
- data=@fns_array
- tuned_file,imagedir=[],[]
- SiSU_Screen::Ansi.new(@opt.cmd,'Composite Document',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}").grey_title_hi unless @opt.cmd =~/q/
- para=data.each do |para|
- if para =~/^<<\s+(\S+?\.ss[it])$/ \
- or para =~/^<<\{(\S+?\.ss[it])\}$/ \
- or para =~/^(?:<<\s*)\|(\S+?)\|@\|.+?\|(?:req(?:quire)?\b|\s*\})?/ \
- or para =~/^r\{(.+?)\}/ #depreciated
- loadfile=$1.strip
- SiSU_Screen::Ansi.new(@opt.cmd,'loading:',loadfile).txt_grey if @opt.cmd =~/[MVv]/
- tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/ # and NetTest
- imagedir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch
- require 'uri'
- image_uri=URI.parse(imagedir)
- require 'open-uri'
- require 'pp'
- insert=open(loadfile)
- insert_array=insert.dup
- insert.close
- file=insertion(loadfile,insert_array)
- @@imager[image_uri] ||=[]
- @@imager[image_uri] << file[:images]
- file[:prepared]
- elsif loadfile =~ /\.ss[ti]$/ \
- and FileTest.file?(loadfile)
- insert_array=IO.readlines(loadfile,'')
- file=insertion(loadfile,insert_array)
- file[:prepared]
- else
- cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- puts "\t #{cX.fuschia}ERROR#{cX.off} #{cX.brown}#{@opt.fns}#{cX.off} #{cX.fuschia}requires invalid or non-existent file:#{cX.off} #{cX.brown}#{loadfile}#{cX.off}"
- para
- end
- else tuned_file << para
- end
- tuned_file=tuned_file.flatten.compact
- end
- if @@imager.length >0
- @@imager.each do |d,i|
- i=i.flatten.uniq
- image_info=d + i
- download_images(image_info.flatten)
- end
- end
- tuned_file
- end
- end
- class CompositeFileList
- @@imager={}
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- end
- def read
- begin
- @opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm') #FIX earlier, hub
- @fns_array=IO.readlines(@opt.fns,'')
- files=insertions?
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- def insertions?
- data=@fns_array
- tuned_file,imagedir=[],[]
- SiSU_Screen::Ansi.new(@opt.cmd,'Composite Document',@opt.fns).grey_title_hi unless @opt.cmd =~/q/
- @ssm=[@opt.fns]
- para=data.each do |para|
- if para =~/^<<\s+(\S+?\.ss[it])$/
- loadfile=$1.strip
- SiSU_Screen::Ansi.new(@opt.cmd,'loading:',loadfile).txt_grey if @opt.cmd =~/[MVv]/
- tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/
- @ssm << loadfile
- elsif loadfile =~ /\.ss[ti]$/ \
- and FileTest.file?(loadfile)
- @ssm << loadfile
- else
- cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- puts "\t #{cX.fuschia}ERROR#{cX.off} #{cX.brown}#{@opt.fns}#{cX.off} #{cX.fuschia}requires invalid or non-existent file:#{cX.off} #{cX.brown}#{loadfile}#{cX.off}"
- para
- end
- end
- end
- @ssm
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/concordance.rb b/lib/sisu/v3dv/concordance.rb
deleted file mode 100644
index 3d8ab38a..00000000
--- a/lib/sisu/v3dv/concordance.rb
+++ /dev/null
@@ -1,369 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: concordance file (html concordance, wordmap, linked index of
- words in document)
-
-=end
-module SiSU_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 'html_format' # html_format.rb
- include SiSU_HTML_Format
- require_relative 'html_minitoc' # html_minitoc.rb
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- begin
- @env,@md=@particulars.env,@particulars.md
- loc=@env.url.output_tell
- unless @md.opt.cmd =~/q/
- tool=(@md.opt.cmd =~/[MVv]/) \
- ? "#{@env.program.web_browser} #{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- @md.opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,"Concordance",tool).grey_title_hi
- : SiSU_Screen::Ansi.new(@opt.cmd,'Concordance',tool).green_title_hi
- end
- wordmax=@env.concord_max
- unless @md.wc_words.nil?
- if @md.wc_words < wordmax
- SiSU_Concordance::Source::Words.new(@particulars).songsheet
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"concordance skipped, large document has over #{wordmax} words (#{@md.wc_words})").warn unless @md.opt.cmd =~/q/
- end
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"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.cmd =~/q/
- SiSU_Concordance::Source::Words.new(@particulars).songsheet
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- 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
- require_relative 'html' # html.rb
- def initialize(particulars)
- @particulars,@md=particulars,particulars.md
- @data=SiSU_HTML::Source::HTML_Environment.new(particulars).tuned_file_instructions
- @file=SiSU_Env::FileOp.new(@md)
- @vz=SiSU_Env::GetInit.instance.skin
- txt_path=%{#{@md.dir_out}}
- SiSU_Env::InfoSkin.new(@md).select
- @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="#{@file.path_rel_links.html_seg_2}_sisu/image/sisu.png" alt="SiSU home --&gt;"></a>}
- @doc_details =<<WOK
-<table summary="links to text related to this rudimentary index" width="96%" border="0" bgcolor="white" cellpadding="0" align="center"><tr><td width="2%" align="right">&nbsp;</td><td width="94%" valign="top" align="justify"><h1 class="small"><a href="#{@md.file.base_filename.html_segtoc}" #{@vz.js_toc}><b>#{@md.title.full}</b></a></h1><p class="bold">#{@md.author}</p></td></tr></table>
-WOK
- end
- def create
- head_banner=SiSU_HTML_Format::HeadToc.new(@md)
- minitoc=SiSU_HTML_MiniToc::TocMini.new(@md,@data).songsheet.join("\n")
- stylesheet=SiSU_Style::CSS_HeadInfo.new(@md).stylesheet
- make=SiSU_Env::ProcessingSettings.new(@md)
- if make.build.manifest_minitoc?
- toc='<div class="toc">' + minitoc + '</div>'
- div_class='content'
- else
- toc=''
- div_class='content0'
- end
- top_band=if make.build.html_top_band?
- head_banner.concordance_navigation_band('pdf')
- else ''
- end
- <<WOK
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>
- SiSU created WordIndex for: #{@md.title.full}
- </title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <meta name="Description" content="&nbsp;SiSU created">
- <meta name="keywords" content="word index for #{@md.title.full}">
- <meta name="generator" content="SiSU (Linux &amp; Ruby!)">
- <link rel="generator" href="http://www.jus.uio.no/sisu" />
- <link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
- #{stylesheet.css_head_seg}
- #{@vz.js_head}
-</head>
-<body>
- #{@vz.js_top}
- #{top_band}
- #{toc}
-<div class="#{div_class}">
- #{@doc_details}
-<p>Word index links are to html versions of the text the segmented version followed by the scroll (single document) version.<br />[For segmented text references [T1], [T2] or [T3] appearing without a link, indicates that the word appears in a title (or subtitle) of the text (that is identifiable by the appended object citation number).]</p>
-<p>(The word listing/index is Case sensitive: Capitalized words appear before lower case)</p>
- <p>
- <b>word</b> (number of occurences)<br />linked references to word within document <br />
- [if number of occurences exceed number of references - word occurs more than once in at least one reference. Footnote/endnotes are either assigned to the paragraph from which they are referenced or ignored, so it is relevant to check the footnotes referenced from within a paragraph as well.]
- </p>
- <p>
- (After the page is fully loaded) you can jump directly to a word by appending a hash (#) and the word to the url for this text, (do not forget that words are case sensitive, and may be listed twice (starting with and without an upper case letter)), #your_word # [&nbsp;http://[web host]/#{@fnb}/concordance.html#your_word&nbsp;]
- </p>
-WOK
- end
- end
- class Word
- @@word_previous=''
- def initialize(word,freq)
- @word,@freq=word,freq
- end
- def html
- w=if @word.capitalize==@@word_previous
- %{\n<p class="concordance_word">#{@word}</p><p class="concordance_count">(#{@freq})</p>\n\t<p class="concordance_object"> }
- else n=@word.strip.gsub(/\s+/,'_') #also need to convert extended character set to html
- %{\n<p class="concordance_word"><a name="#{n}">#{@word}</a></p><p class="concordance_count">(#{@freq})</p>\n\t<p class="concordance_object"> }
- end
- @@word_previous=@word.capitalize
- w
- end
- end
- class Words
- require_relative 'i18n' # i18n.rb
- include SiSU_i18n
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'html_format' # html_format.rb
- include SiSU_HTML_Format
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Screen
- @@dp=nil
- def initialize(particulars)
- @particulars=particulars
- begin
- @vz=SiSU_Env::GetInit.instance.skin
- @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array
- @file=SiSU_Env::FileOp.new(@md)
- @freq=Hash.new(0)
- @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
- @rxp_lv1=/^#{Mx[:lv_o]}1:/ #fix @rxp_lv # Mx[:lv_o]
- @rxp_lv2=/^#{Mx[:lv_o]}2:/ #fix @rxp_lv # Mx[:lv_o]
- @rxp_lv3=/^#{Mx[:lv_o]}3:/ #fix @rxp_lv # Mx[:lv_o]
- @rxp_title=Regexp.new("^#{Mx[:meta_o]}title#{Mx[:meta_c]}\s*(.+?)\s*$")
- @rxp_t1=Regexp.new('^T1')
- @rxp_t2=Regexp.new('^T2')
- @rxp_t3=Regexp.new('^T3')
- @rxp_excluded1=/#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
- @rxp_excluded0=/^(?:#{Mx[:fa_bold_o]}|#{Mx[:fa_italics_o]})?(?:to\d+|\d+|&nbsp;|#{Mx[:br_endnotes]}|EOF|#{Mx[:br_eof]}|thumb_\S+|snap_\S+|_+|-+|[(]?(?:ii+|iv|vi+|ix|xi+|xiv|xv|xvi+|xix|xx)[).]?|\S+?_\S+|[\d_]+\w\S+|[\w\d]{1,2}|\d{1,3}\w?|#{@dp}|[0-9a-f]{16,64}|\d{2,3}x\d{2,3}|\S{0,2}sha\d|\S{0,3}\d{4}w\d\d|\b\w\d+|\d_all\b|e\.?g\.?)(?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})?$/mi #this regex causes and cures a stack dump in ruby 1.9 !!!
- @rgx_splitlist=%r{[—.,;:#{Mx[:nbsp]}-]}mi
- @alph=SiSU_i18n::Alphabet.new(@md.opt.lng).hash_arrays
- @alphlst=SiSU_i18n::Alphabet.new(@md.opt.lng).hash_strings
- @rgx_scanlist=%r{#{Mx[:fa_italics_o]}[#{@alphlst[:l]}#{@alphlst[:u]}0-9"\s]{2,12}#{Mx[:fa_italics_c]}|#{Mx[:fa_bold_o]}[#{@alphlst[:l]}#{@alphlst[:u]}0-9"\s]{2,12}#{Mx[:fa_bold_c]}|(?:https?|file)://\S+|<\S+?>|[#{@alphlst[:l]}#{@alphlst[:u]}]+|\w+}mi
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- def songsheet
- begin
- FileUtils::mkdir_p(@file.output_path.html_concordance.dir) unless FileTest.directory?(@file.output_path.html_concordance.dir)
- @file_concordance=File.open(@file.place_file.html_concordance.dir,'w')
- map_para
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- @file_concordance.close
- end
- end
- protected
- def location_scroll(wordlocation,show)
- %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{wordlocation}">#{wordlocation}</a>; }
- end
- def location_seg(wordlocation,show) ##fix
- @word_location_seg=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{@md.lang_code_insert}#{Sfx[:html]}#\\2") unless wordlocation.nil?
- case wordlocation
- when @rxp_t1
- %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show}, }
- when @rxp_t2
- %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show}, }
- when @rxp_t3
- %{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show}, }
- else %{<a href="#{@word_location_seg}">#{show}</a>, }
- end
- end
- def map_para
- @seg,ocn=nil,nil
- @word_map={}
- @dal_array.each do |line|
- if defined? line.ocn \
- and line.ocn.to_s =~/\d/
- if (line.is ==:heading \
- || line.is ==:heading_insert) \
- && line.ln==4
- @seg=line.name
- end
- ocn=line.ocn.to_s
- if ocn =~/\d+/ \
- and ocn !~/^0$/
- line.obj=line.obj.gsub(/#{@rxp_excluded1}/,' ')
- line.obj=line.obj.split(@rgx_splitlist).join(' ') #%take in word or other match
- for word in line.obj.scan(@rgx_scanlist) #%take in word or other match
- if word =~ /^([#{@alphlst[:l]}])/
- firstletter=$1
- flu=firstletter.tr(@alphlst[:l],@alphlst[:u])
- word=word.gsub(/^#{firstletter}/,flu )
- end
- word=word.gsub(/#{Mx[:lnk_o]}|#{Mx[:lnk_c]}|#{Mx[:url_o]}|#{Mx[:url_c]}/,'').
- gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').
- gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
- gsub(/#{Mx[:gl_o]}#[a-z]+#{Mx[:gl_c]}/,'').
- gsub(/#{Mx[:gl_o]}#[0-9]+#{Mx[:gl_c]}/,'')
- word=word.gsub(/[0-9a-f]{10,}/,' ') if word =~/[0-9]/
- word=word.gsub(/#{Mx[:br_line]}/,' ').
- gsub(/^ +/,'').
- gsub(/^\S$/,'')
- word=nil if word.empty?
- word=nil if word =~@rxp_excluded0 #watch
- word=nil if word =~/^\S$/
- if word
- word=word.gsub(/#{Mx[:br_nl]}|#{Mx[:br_line]}/,' ').
- gsub(/#{Mx[:fa_o]}[a-z]{1,7}#{Mx[:fa_o_c]}|#{Mx[:fa_c_o]}[a-z]{1,7}#{Mx[:fa_c]}/,'').
- gsub(/#{Mx[:en_a_o]}(?:\d|[*+])*|#{Mx[:en_b_o]}(?:\d|[*+])*|#{Mx[:en_a_c]}|#{Mx[:en_b_c]}/mi,'').
- gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').
- gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
- gsub(/<\/?\S+?>/,'').
- gsub(/^\@+/,'').
- strip.
- gsub(/#{Mx[:tc_p]}.+/,'').
- gsub(/[\.,;:"]$/,'').
- gsub(/["]/,'').
- gsub(/^\s*[\(]/,'').
- gsub(/[\(]\s*$/,'').
- gsub(/^(?:See|e\.?g\.?).+/,'').
- gsub(/^\s*[.,;:]\s*/,'').
- strip.
- gsub(/^\(?[a-zA-Z]\)$/,'').
- gsub(/^\d+(st|nd|rd|th)$/,'').
- gsub(/^(\d+\.?)+$/, '').
- gsub(/#{Mx[:mk_o]}|#{Mx[:mk_c]}/,'').
- gsub(/:name#\S+/,'').
- gsub(/^\S$/,'')
- word=nil if word =~/^\S$/
- word=nil if word =~/^\s*$/ #watch
- if word
- unless word =~/[A-Z][A-Z]/ \
- or word =~/\w+\s\w+/
- word=word.capitalize
- end
- @freq[word] +=1
- @word_map[word] ||= []
- if line !~@rxp_lv1 \
- and line !~@rxp_lv2 \
- and line !~@rxp_lv3 #fix @rxp_lv # Mx[:lv_o]
- @word_map[word] << location_seg("#{@seg}\##{ocn}",ocn)
- else
- @word_map[word] << case line
- when @rxp_lv1; location_seg('T1',ocn) #fix @rxp_lv # Mx[:lv_o]
- when @rxp_lv2; location_seg('T2',ocn) #fix @rxp_lv # Mx[:lv_o]
- when @rxp_lv3; location_seg('T3',ocn) #fix @rxp_lv # Mx[:lv_o]
- end
- end
- end
- end
- end
- end
- end
- end
- scr='<font size="1" color="#777777" face=times new roman><img border="0" height="15" width="15" src="../_sisu/image/b_doc.png" alt="Full Text">&nbsp;scroll:&nbsp;</font><font size="1" color="#222222" face=times new roman>doc#&nbsp;</font> '
- seg=''
- head=SiSU_Concordance::Source::DocTitle.new(@particulars).create
- head=head.gsub(/#{Xx[:html_relative2]}/m,@file.path_rel_links.html_seg_2).
- gsub(/#{Xx[:html_relative1]}/m,@file.path_rel_links.html_seg_1)
- @file_concordance << head
- @file_concordance << '<p>'
- alph=@alph[:u]
- alph.each {|x| @file_concordance << %{<a href="##{x}">#{x}</a>,&nbsp;}}
- @file_concordance << '</p>'
- letter=alph.shift
- @file_concordance << %{\n<p class="letter"><a name="A">A</a></p>}
- for word in @freq.keys.sort! {|a,b| a.downcase<=>b.downcase}
- f=/^(\S)/.match(word)[1]
- if letter < f.upcase
- while letter < f.upcase
- if alph.length > 0
- letter=alph.shift
- @file_concordance << %{\n<p class="letter"><a name="#{letter}">#{letter}</a></p>}
- else break
- end
- end
- end
- keyword=SiSU_Concordance::Source::Word.new(word,@freq[word]).html
- if keyword !~ @rxp_excluded0
- if @word_map[word][0] =~ /\d+/
- wm=[]
- @file_concordance << %{#{keyword}#{seg}#{@word_map[word].uniq.compact.join}}
- end
- @file_concordance << '</p>'
- end
- # special cases endnotes and header levels 1 - 3
- end
- credits=@vz.credits_sisu
- @file_concordance << %{</div></body>\n</html>} # footer
- SiSU_Screen::Ansi.new(@md.opt.cmd,@md.fns,"#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}").flow if @md.opt.cmd =~/[MV]/
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/conf.rb b/lib/sisu/v3dv/conf.rb
deleted file mode 100644
index 5eb1b116..00000000
--- a/lib/sisu/v3dv/conf.rb
+++ /dev/null
@@ -1,247 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: configuration
-
-=end
-module SiSU_Initialize
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- include SiSU_Screen
- require_relative 'relaxng' # relaxng.rb
- include SiSU_Relaxng
- require_relative 'css' # css.rb
- include SiSU_Style
- class Source
- def initialize(opt)
- @opt=opt
- end
- def read
- ConfigSite.new(@opt).make_homepage
- ConfigSite.new(@opt).css
- ConfigSite.new(@opt).dtd
- ConfigSite.new(@opt).cp_local_images
- ConfigSite.new(@opt).cp_external_images
- ConfigSite.new(@opt).cp_webserver_images #if @opt.mod.inspect =~/--init(?:ialize)?=site/
- end
- end
- class ConfigSite #config files such as css are not updated if they already exist unless forced using the --init=site modifier
- require_relative 'sysenv' # sysenv.rb
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @suffix,@path={},{}
- @suffix[:rnc]='rnc'
- @suffix[:rng]='rng'
- @suffix[:xsd]='xsd'
- @path[:xml]= @env.path.output + '/_sisu/xml'
- @path[:xsd]= @env.path.output + '/_sisu/xml/xsd'
- @path[:rnc]= @env.path.output + '/_sisu/xml/rnc'
- @path[:rng]= @env.path.output + '/_sisu/xml/rng'
- @pwd,@home=Dir.pwd,@env.path.home
- end
- def make_homepage
- SiSU_Screen::Ansi.new(@opt.cmd,'invert','Make homepage','').colorize unless @opt.cmd =~/q/
- SiSU_Env::CreateSite.new(@opt.cmd).homepage
- end
- def cp_local_images
- SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy images','').colorize unless @opt.cmd =~/q/
- SiSU_Env::CreateSite.new(@opt.cmd).cp_local_images
- SiSU_Env::CreateSite.new(@opt.cmd).cp_webserver_images_local #this should not have been necessary
- SiSU_Env::CreateSite.new(@opt.cmd).cp_base_images #base images (nav etc.) used by all html
- end
- def cp_external_images
- SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy external images','').colorize if @opt.cmd =~/V/
- SiSU_Env::CreateSite.new(@opt.cmd).cp_external_images
- end
- def cp_webserver_images
- SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy webserver/output file images','').colorize unless @opt.cmd =~/q/
- SiSU_Env::CreateSite.new(@opt.cmd).cp_webserver_images
- SiSU_Env::CreateSystemLink.new.images
- end
- def css
- SiSU_Screen::Ansi.new(@opt.cmd,'invert','Configuring CSSs','').colorize unless @opt.cmd =~/q/
- SiSU_Env::CreateSite.new(@opt.cmd).cp_css
- end
- def dtd
- SiSU_Screen::Ansi.new(@opt.cmd,'invert','Configuring DTDs','').colorize unless @opt.cmd =~/q/
- @rxng=SiSU_Relaxng::RelaxNG.new
- @path.each { |d| FileUtils::mkdir_p(d[1]) unless FileTest.directory?(d[1]) }
- #ugly code, sort later
- if @rxng.methods.join =~/[^_]dtd_sax\b/
- if @rxng.dtd_sax.length > 200
- dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.output_sax}",'w')
- dtd << @rxng.dtd_sax
- dtd.close
- else trang_rnc_model_output_sax
- end
- else trang_rnc_model_output_sax
- end
- if @rxng.methods.join =~/[^_]dtd_dom\b/
- if @rxng.dtd_dom.length > 200
- dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.output_dom}",'w')
- dtd << @rxng.dtd_dom
- dtd.close
- else trang_rnc_model_output_dom
- end
- else trang_rnc_model_output_dom
- end
- if @rxng.methods.join =~/[^_]dtd_node\b/
- if @rxng.dtd_node.length > 200
- dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.input_node}",'w')
- dtd << @rxng.dtd_node
- dtd.close
- else trang_rnc_model_input_node
- end
- else trang_rnc_model_input_node
- end
- if @rxng.methods.join =~/[^_]dtd_xhtml\b/
- if @rxng.dtd_xhtml.length > 200
- dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.output_xhtml}",'w')
- dtd << @rxng.dtd_xhtml
- dtd.close
- else trang_rnc_model_output_xhtml
- end
- else trang_rnc_model_output_xhtml
- end
- end
- def trang_rnc_model_output_sax
- s=@suffix
- rnc_src=@env.processing_path.dal + '/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
- rnc=File.new(rnc_src,'w')
- rnc << @rxng.rnc_model_output_sax
- rnc.close
- #xsd
- schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
- schema.relaxng(@opt.cmd)
- #rng
- schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
- schema.relaxng(@opt.cmd)
- #rnc
- FileUtils::cp(rnc_src,rnc_file)
- FileUtils::chmod(0644,rnc_file)
- end
- def trang_rnc_model_output_dom
- s=@suffix
- rnc_src=@env.processing_path.dal + '/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
- rnc=File.new(rnc_src,'w')
- rnc << @rxng.rnc_model_output_dom
- rnc.close
- #xsd
- schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
- schema.relaxng(@opt.cmd)
- #rng
- schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
- schema.relaxng(@opt.cmd)
- #rnc
- FileUtils::cp(rnc_src,rnc_file)
- FileUtils::chmod(0644,rnc_file)
- end
- def trang_rnc_model_output_xhtml
- s=@suffix
- rnc_src=@env.processing_path.dal + '/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
- rnc=File.new(rnc_src,'w')
- rnc << @rxng.rnc_model_output_xhtml
- rnc.close
- #xsd
- schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
- schema.relaxng(@opt.cmd)
- #rng
- schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
- schema.relaxng(@opt.cmd)
- #rnc
- FileUtils::cp(rnc_src,rnc_file)
- FileUtils::chmod(0644,rnc_file)
- end
- def trang_rnc_model_input_sax
- rnc_file=@env.processing_path.dal + '/sax.rnc'
- dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_sax
- rnc=File.new(rnc_file,'w')
- rnc << @rxng.rnc_model_output_sax
- rnc.close
- schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
- schema.relaxng(@opt.cmd)
- end
- def trang_rnc_model_input_dom
- rnc_file=@env.processing_path.dal + '/dom.rnc'
- dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_dom
- rnc=File.new(rnc_file,'w')
- rnc << @rxng.rnc_model_output_dom
- rnc.close
- schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
- schema.relaxng(@opt.cmd)
- end
- def trang_rnc_model_input_node
- rnc_file=@env.processing_path.dal + '/node.rnc'
- rng_file=@env.processing_path.dal + '/node.rng'
- dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_node
- rnc=File.new(rnc_file,'w')
- rnc << @rxng.rnc_model_input_node
- rnc.close
- schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
- schema.relaxng(@opt.cmd)
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/constants.rb b/lib/sisu/v3dv/constants.rb
deleted file mode 100644
index 439dee68..00000000
--- a/lib/sisu/v3dv/constants.rb
+++ /dev/null
@@ -1,285 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
- constants
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-#Ax,Xx,Mx,Rx,Hx,Dx,Px,Ep,Db,Gt,Tex=Array.new(11){{}}
-Sfx={ txt: '.txt', html: '.html', xhtml: '.xhtml', xml: '.xml', epub: '.epub', epub_xhtml: '.xhtml', odt: '.odt', pdf: '.pdf'}
-Ax={
- tab: "\t",
-}
-Xx={
- protect: '☞',
- segment: 'Ф',
- relative_path: '☼',
- html_relative2: '※※',
- html_relative1: '※',
-}
-Mx={
- meta_o: '〔@', meta_c: '〕',
- lv_o_1: 1,
- lv_o_2: 2,
- lv_o_3: 3,
- lv_o_4: 4,
- lv_o_5: 5,
- lv_o_6: 6,
- lv_o_7: 7,
- lv_o_8: 8,
- lv_o_9: 9,
- lv_o: '〔', lv_c: '〕',
- en_a_o: '【', en_a_c: '】', #endnote Mx[:en_a_o]='~{'; Mx[:en_a_c]='}~'
- en_b_o: '〖', en_b_c: '〗', #endnote Mx[:en_b_o]='~['; Mx[:en_b_c]=']~'
- bl_o: '〔', bl_c: '〕', #block text mark
- gr_o: '〔', gr_c: '〕', #group text mark #REPLACE & RETIRE
- id_o: '〔', id_c: '〕', #object id mark
- tc_o: '『', tc_c: "』", #table row mark #Mx[:tc_c]="』\n"
- tc_p: '┆', #table col/misc mark
- pa_o: '〔', pa_c: '〕', #affects paragraph mark
- mk_o: '〔', mk_c: '〕', #generic mark
- gl_o: '〔', gl_c: '〕', #glyph
- fa_o: '〔', fa_o_c: '¤', fa_c_o: '¤', fa_c: '〕',
- idx_o: '▢ ', idx_c: '▢ ',
- nbsp: '░', #'▭ '
- br_line: '╱', #lB ▌ 9612 ┘ ¶
- br_nl: '╲', #lB ▌ 』 ┘
- br_paragraph: '█', #FB █ 9608 # PP ∥ 8741 #▐ #'┘' #'¶' #FB █ 9608 lB ▌ 9612 RB ▐ 9616
- br_obj: 'break_obj',
- br_page: 'break_page',
- br_page_new: 'break_page_new',
- lnk_o: '⌠', lnk_c: '⌡', #'⌈' '⌋' '⌠' '⌡' #Mx[:lnk_o: '◁'; Mx[:lnk_c: '▷' #‹ ›
- url_o: '「', url_c: '」',
- rel_o: '⌈', rel_c: '⌋',
- tag_o: '⌊', tag_c: '⌉',
- sm_set_o: '《', sm_set_c: '》',
- sm_subset_o: '《 ', sm_subset_c: '》',
- vline: '┆', # ¦ |
-}
-Mx[:fa_bold_o]= "#{Mx[:fa_o]}b#{Mx[:fa_o_c]}"
-Mx[:fa_bold_c]= "#{Mx[:fa_c_o]}b#{Mx[:fa_c]}"
-Mx[:fa_italics_o]= "#{Mx[:fa_o]}i#{Mx[:fa_o_c]}"
-Mx[:fa_italics_c]= "#{Mx[:fa_c_o]}i#{Mx[:fa_c]}"
-Mx[:fa_underscore_o]= "#{Mx[:fa_o]}u#{Mx[:fa_o_c]}"
-Mx[:fa_underscore_c]= "#{Mx[:fa_c_o]}u#{Mx[:fa_c]}"
-Mx[:fa_cite_o]= "#{Mx[:fa_o]}cite#{Mx[:fa_o_c]}"
-Mx[:fa_cite_c]= "#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}"
-Mx[:fa_insert_o]= "#{Mx[:fa_o]}ins#{Mx[:fa_o_c]}"
-Mx[:fa_insert_c]= "#{Mx[:fa_c_o]}ins#{Mx[:fa_c]}"
-Mx[:fa_strike_o]= "#{Mx[:fa_o]}del#{Mx[:fa_o_c]}"
-Mx[:fa_strike_c]= "#{Mx[:fa_c_o]}del#{Mx[:fa_c]}"
-Mx[:fa_superscript_o]= "#{Mx[:fa_o]}sup#{Mx[:fa_o_c]}"
-Mx[:fa_superscript_c]= "#{Mx[:fa_c_o]}sup#{Mx[:fa_c]}"
-Mx[:fa_subscript_o]= "#{Mx[:fa_o]}sub#{Mx[:fa_o_c]}"
-Mx[:fa_subscript_c]= "#{Mx[:fa_c_o]}sub#{Mx[:fa_c]}"
-Mx[:fa_hilite_o]= "#{Mx[:fa_o]}hi#{Mx[:fa_o_c]}"
-Mx[:fa_hilite_c]= "#{Mx[:fa_c_o]}hi#{Mx[:fa_c]}"
-Mx[:fa_monospace_o]= "#{Mx[:fa_o]}mono#{Mx[:fa_o_c]}"
-Mx[:fa_monospace_c]= "#{Mx[:fa_c_o]}mono#{Mx[:fa_c]}"
-Mx[:gl_bullet]= "#{Mx[:gl_o]}●#{Mx[:gl_c]}"
-Mx[:br_endnotes]= "#{Mx[:mk_o]}ENDNOTES#{Mx[:mk_c]}"
-Mx[:br_eof]= "#{Mx[:mk_o]}EOF#{Mx[:mk_c]}"
-Mx[:pa_non_object_dummy_heading]="#{Mx[:pa_o]}-##{Mx[:pa_c]}" #unnumbered paragraph, delete when not required [used in dummy headings, eg. for segmented html] (place marker at end of paragraph)
-Mx[:pa_non_object_no_heading]="#{Mx[:pa_o]}~##{Mx[:pa_c]}" #unnumbered paragraph (place marker at end of paragraph)
-Hx={
- br_obj: { obj: Mx[:br_obj] }, # line sep
- br_page: { obj: Mx[:br_page] }, # newpage
- br_page_new: { obj: Mx[:br_page_new] }, # clearpage
-}
-#Mx[:sm_set_o]='∈ '; Mx[:sm_set_c]='∋ '
-#Mx[:sm_subset_o]='∈ '; Mx[:sm_subset_c]='∋ '
-Rx={
- mx_fa_clean: /#{Mx[:fa_o]}.+?#{Mx[:fa_c]}|#{Mx[:pa_o]}.+?#{Mx[:pa_c]}|#{Mx[:mk_o]}.+?#{Mx[:mk_c]}/,
- lv: /〔([1-9]):(\S*?)〕/,
- lv_1: /#{Mx[:lv_o_1]}(\S*?)#{Mx[:lv_c]}/,
- lv_2: /#{Mx[:lv_o_2]}(\S*?)#{Mx[:lv_c]}/,
- lv_3: /#{Mx[:lv_o_3]}(\S*?)#{Mx[:lv_c]}/,
- lv_4: /#{Mx[:lv_o_4]}(\S*?)#{Mx[:lv_c]}/,
- lv_5: /#{Mx[:lv_o_5]}(\S*?)#{Mx[:lv_c]}/,
- lv_6: /#{Mx[:lv_o_6]}(\S*?)#{Mx[:lv_c]}/,
- lv_7: /#{Mx[:lv_o_7]}(\S*?)#{Mx[:lv_c]}/,
- lv_8: /#{Mx[:lv_o_8]}(\S*?)#{Mx[:lv_c]}/,
- lv_9: /#{Mx[:lv_o_9]}(\S*?)#{Mx[:lv_c]}/,
- meta: /#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}/,
-}
-Dx={
- url_o: '‹', url_c: '›',
- url_o_xml: '&lt;', url_c_xml: '&gt;',
- rel_o: '‹', rel_c: '›',
- lt_xml: '&lt;', gt_xml: '&gt;',
-}
-Tex={
- backslash: "\\\\",
- backslash: "\\\\",
- tilde: '\\\\\\~',
-}
-Px={
- bold_o: '*', bold_c: '*',
- italics_o: '/', italics_c: '/',
- underscore_o: '_', underscore_c: '_',
- #emphasis_o: '*', emphasis_c: '*',
- #bold_o: '!', bold_c: '!',
- cite_o: '"', cite_c: '"',
- insert_o: '+', insert_c: '+',
- strike_o: '-', strike_c: '-',
- superscript_o: '^', superscript_c: '^',
- subscript_o: '[', subscript_c: ']',
- hilite_o: '*', hilite_c: '*',
- monospace_o: '', monospace_c: '',
- po_bold_o: '!{', po_bold_c: '}!',
- po_italics_o: '/{', po_italics_c: '}/',
- po_underscore_o: '_{', po_underscore_c: '}_',
- po_cite_o: '"{', po_cite_c: '}"',
- po_insert_o: '+{', po_insert_c: '}+',
- po_strike_o: '-{', po_strike_c: '}-',
- po_superscript_o: '^{', po_superscript_c: '}^',
- po_subscript_o: ',{', po_subscript_c: '},',
- po_hilite_o: '*{', po_hilite_c: '}*',
- po_monospace_o: '#{', po_monospace_c: '}#',
- lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi],
- lv1: '*',
- lv2: '=',
- lv3: '=',
- lv4: '-',
- lv5: '.',
- lv6: '.',
-}
-Ep={
- d_oebps: 'OEBPS',
- f_ncx: 'toc.ncx',
- f_opf: 'content.opf',
-}
-Db={
- name_prefix: "SiSU#{SiSU_version_dir}e_",
- name_prefix_db: "sisu_#{SiSU_version_dir}e_",
- col_title: 800,
- col_title_part: 400,
- col_title_edition: 10,
- col_name: 600,
- col_creator_misc_short: 100,
- col_language: 100,
- col_language_char: 6,
- col_date_text: 10,
- col_classify_txt_long: 600,
- col_classify_txt_short: 600,
- col_classify_short: 200,
- col_classify_identify: 256,
- col_classify_library: 30,
- col_classify_small: 16,
- col_filename: 256,
- col_digest: 64,
- col_filesize: 10,
- col_info_note: 2500,
-}
-Gt={
- grotto: 'sisu:',
- src: 'src',
- pod: 'pod',
- po: 'po4a/po',
- pot: 'po4a/pot',
- image: 'mm/image',
- audio: 'mm/audio',
- video: 'mm/video',
- conf: 'conf',
- skin: 'conf/skin', #Gt[:skin: 'conf/skin/doc'
-}
-DISABLE={
- epub: {
- internal_navigation: true,
- per_section_title: true,
- ncx_navpoint_unique_id: true,
- },
-}
-__END__
-consider:
- 〔comment〕
- 〔links?????〕
- import document?
-check:
- bold line
-
-┆┆⋮┇┊┋
-『』
-「」
-〔〕
-【】
-
- #˝ " λ Ω β α π Ѫ Ж Я Ѳ ѳ Ф ㈣
- Ѳ ѳ Ф
- ♩ ♭  ✠  ▭ ▬ ▪
-【】〖〗《》「」
- ‹ › ∗ 
-'〔lv1〕','〔lv2〕','〔lv3〕','〔lv4〕','〔lv5〕','〔lv6〕','〔lv7〕','〔lv8〕','〔lv9〕'
-'〔 Ѳ1〕','〔 Ѳ2〕','〔 Ѳ3〕','〔 Ѳ4〕','〔 Ѳ5〕','〔Ѳ6〕','〔Ѳ7〕','〔Ѳ8〕','〔Ѳ9〕'
-◁▷
-◀this is text or an image▶ http://
-p __FILE__ +':'+ __LINE__.to_s
-p __FILE__ + ' ' + __LINE__.to_s + ' ' + html
-puts "#{__FILE__} #{__LINE__} #{o.inspect}"
-puts __FILE__ + ' ' + __LINE__.to_s + '--> ' + o.inspect
-puts %{-\t#{__FILE__}::#{__LINE__}::#{caller}:\n"#{name}"}
-p "\t" + txt.obj + " << #{__FILE__} #{__LINE__} >>"
-p (__FILE__ + ' ' + __LINE__.to_s + '--> ' + dob.inspect) if dob.is==:heading
-data.each {|o| p (__FILE__ + ' ' + __LINE__.to_s + '--> ' + o.inspect) if o.is==:heading}
-puts "#{__FILE__} #{__LINE__} #{para}" if @opt.cmd =~/M/
-puts "#{__FILE__} #{__LINE__} #{t_o}" if @opt.cmd =~/M/
- dr ┌ 9484 dR ┍ 9485 Dr ┎ 9486 DR ┏ 9487 dl ┐ 9488 dL ┑ 9489 Dl ┒ 9490 LD ┓ 9491 ur └ 9492 uR ┕ 9493 Ur ┖ 9494 UR ┗ 9495 ul ┘ 9496 uL ┙ 9497 Ul ┚ 9498 UL ┛ 9499 vr ├
- dr ┌ 9484 dR ┍ 9485 Dr ┎ 9486 DR ┏ 9487 dl ┐ 9488 dL ┑ 9489 Dl ┒ 9490 LD ┓ 9491 ur └ 9492 uR ┕ 9493 Ur ┖ 9494 UR ┗ 9495 ul ┘ 9496 uL ┙ 9497 Ul ┚ 9498 UL ┛ 9499 vr ├
- └ ┘
-Iu ⌠ 8992 Il ⌡ <7 ⌈ 8968 >7 ⌉ 8969 7< ⌊ 8970 7> ⌋ 8971
-<" 『 12302 >" 』 12303
-<' 「 12300 >' 」 12301
diff --git a/lib/sisu/v3dv/css.rb b/lib/sisu/v3dv/css.rb
deleted file mode 100644
index cbbd05ca..00000000
--- a/lib/sisu/v3dv/css.rb
+++ /dev/null
@@ -1,3424 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: css stylesheets
-
-=end
-module SiSU_Style
- require_relative 'sysenv' # sysenv.rb
- require_relative 'defaults' # defaults.rb
- class CSS_HeadInfo
- def initialize(md,ft='html')
- @md,@ft=md,ft
- @env=SiSU_Env::InfoEnv.new('',md)
- @fn_css ||=SiSU_Env::CSS_Default.new
- @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
- css_copy
- end
- def stylesheet
- def css_path
- SiSU_Env::CSS_Stylesheet.new(@md)
- end
- def css_embed_content
- @css_embed_content ||=SiSU_Style::CSS.new
- end
- def css_embed?
- if @ft=='html' \
- && @o_str.dump_or_redirect?
- true
- else
- false
- end
- end
- def css_embed(css)
- <<-WOK
- <style TYPE="text/css">
- #{css}
- </style>
- WOK
- end
- def css_action
- style_css=SiSU_Style::CSS.new
- css=case @ft
- when 'html'
- css=css_embed_content.html
- css_embed(css)
- when 'xhtml'
- css_path.xhtml
- when 'xml_sax'
- css_path.xml_sax
- when 'xml_dom'
- css_path.xml_dom
- else
- css_embed_content.html
- end
- end
- def css_head
- (css_embed?) \
- ? css_action
- : "#{css_path.html}#{css_path.html_seg}"
- end
- def css_head_seg
- (css_embed?) \
- ? css_action
- : css_path.html_seg
- end
- def css_head_xml
- css_action
- end
- self
- end
- def css_copy
- if @o_str.dump_or_redirect?
- css=SiSU_Style::CSS.new
- if @o_str.dump?
- css_pth="#{@md.opt.opt_act[:dump][:inst]}/#{@env.path.style}"
- elsif @o_str.redirect?
- css_pth="#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}/#{@env.path.style}"
- end
- FileUtils::mkdir_p(css_pth) unless FileTest.directory?(css_pth)
- case @ft
- when 'html'
- style=File.new("#{css_pth}/#{@fn_css.html}",'w')
- style << css.html
- style.close
- when 'xhtml'
- style=File.new("#{css_pth}/#{@fn_css.xhtml}",'w')
- style << css.xhtml
- style.close
- when 'xml_sax'
- style=File.new("#{css_pth}/#{@fn_css.xml_sax}",'w')
- style << css.xml_sax
- style.close
- when 'xml_dom'
- style=File.new("#{css_pth}/#{@fn_css.xml_dom}",'w')
- style << css.xml_dom
- style.close
- css_path.xml_dom
- end
- end
- end
- end
- class CSS
- def initialize
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def fonts
- @vz.font_fonts
- end
- def html_tables #stylesheet for css table_pages
-<<WOK
-/* SiSU table output stylesheet */
- body {
- color: black;
- background: #{@vz.color_white};
- }
- p {
- display: block;
- line-height: 1.5;
- font-family: #{fonts};
- }
- a:link {
- color: #{@vz.color_blue_ink};
- text-decoration: none;
- }
- a:visited {
- color: #{@vz.color_blue_ink};
- text-decoration: none;
- /* background-color: #{@vz.color_blue_tinge}; */
- }
- a:hover {
- color: #{@vz.color_black};
- text-decoration: underline;
- background-color: #{@vz.color_yellow_light};
- }
- a:active {
- color: #{@vz.color_blue_ink};
- text-decoration: underline;
- }
-WOK
- end
- def harvest
- <<WOK
-/* SiSU harvest css default stylesheet */
- body {
- color: black;
- background: #ffffff;
- background-color: #ffffff;
- }
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- }
- a:hover {
- color: #000000;
- background-color: #f9f9aa;
- }
- a:hover img {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
-
- .norm, .bold {
- line-height: 150%;
- margin-left: 1em;
- margin-right: 2em;
- margin-top: 10px;
- margin-bottom: 0px;
- text-indent: 0mm;
- }
- p, h0, h1, h2, h3, h4, h5, h6 {
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-size: 100%;
- font-weight: normal;
- line-height: 150%;
- /* text-align: justify; */
- margin-left: 1em;
- text-indent: 0mm;
- margin-top: 2px;
- margin-bottom: 2px;
- margin-right: 6px;
- text-align: left;
- }
- h1 {
- font-size: 120%;
- font-weight: bold;
- color: white;
- background: #000088;
- margin-left: 0em;
- }
- p.work {
- font-size: 80%;
- margin-left: 5em;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 6px;
- text-align: left;
- }
- p.author {
- font-size: 100%;
- margin-left: 2em;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 6px;
- text-align: left;
- }
- p.publication {
- font-size: 80%;
- margin-left: 4em;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 6px;
- text-align: left;
- }
- p.letter {
- font-weight: bold;
- font-size: 60%;
- margin-left: 1em;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 6px;
- text-align: left;
- color: white;
- background: #880000;
- }
- p.lev0 {
- font-size: 120%;
- margin-left: 1em;
- color: white;
- background: #000000;
- }
-
- p.lev1 {
- font-size: 110%;
- margin-left: 2em;
- color: white;
- background: #444444;
- }
-
- p.lev2 {
- font-size: 100%;
- margin-left: 3em;
- background: #888888;
- }
-
- p.lev3 {
- font-size: 90%;
- margin-left: 4em;
- background: #bbbbbb;
- }
-
- p.lev4 {
- font-size: 80%;
- margin-left: 5em;
- background: #eeeeee;
- }
-
- p.lev5 {
- font-size: 80%;
- margin-left: 6em;
- }
-WOK
- end
- def html #stylesheet for css html pages== html.css
-<<WOK
-/* SiSU css default stylesheet */
- body {
- color: black;
- background: #ffffff;
- background-color: #ffffff;
- }
-/*
- table {
- margin-left: 5%;
- display: block;
- }
- tr {
- display: block;
- }
- th,td {
- display: inline;
- vertical-align: top;
- }
-*/
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- }
- a:hover {
- color: #000000;
- background-color: #f9f9aa;
- }
- a.lnkocn:link {
- color: #777777;
- text-decoration: none;
- }
-/*
- a:hover {
- border-bottom: 2px solid #777777;
- background-color: #fff3b6;
- }
-*/
- a:hover img {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- div {
- margin-left: 0;
- margin-right: 0;
- }
- div.p {
- margin-left: 5%;
- margin-right: 1%;
- }
-
- #top_band {
- position: absolute;
- top: 0;
- bottom: 80px;
- width: 100%;
- }
- #top_band_search {
- position: absolute;
- top: 0px;
- right: 0px;
- margin-left: 75%;
- width: 20%;
- }
- #column_left {
- position: absolute;
- top: 80px;
- left: 0;
- margin-left: 1%;
- width: 20%;
- }
- #column_center {
- position: absolute;
- top: 80px;
- margin-left: 20%;
- width: 55%;
- }
- #column_right {
- position: absolute;
- top: 80px;
- right: 0px;
- margin-left: 75%;
- width: 25%;
- }
- #pane_major {
- position: absolute;
- top: 0px;
- left: 0;
- margin-left: 0;
- width: 80%;
- }
- #pane_minor {
- position: absolute;
- top: 0px;
- right: 0px;
- margin-left: 75%;
- width: 20%;
- background-color: #aaaaaa;
- }
-
- .norm, .bold, .verse, .group, .block, .alt {
- line-height: 150%;
- margin-left: 0em;
- margin-right: 2em;
- margin-top: 10px;
- margin-bottom: 0px;
- padding-left: 0em;
- text-indent: 0em;
- }
- p, h0, h1, h2, h3, h4, h5, h6 {
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-size: 100%;
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 0em;
- margin-right: 2em;
- text-indent: 0mm;
- margin-top: 3px;
- margin-bottom: 3px;
- }
-
- /* indent */
-
- p.norm { }
- p.i1 {padding-left: 1em;}
- p.i2 {padding-left: 2em;}
- p.i3 {padding-left: 3em;}
- p.i4 {padding-left: 4em;}
- p.i5 {padding-left: 5em;}
- p.i6 {padding-left: 6em;}
- p.i7 {padding-left: 7em;}
- p.i8 {padding-left: 8em;}
- p.i9 {padding-left: 9em;}
-
- /* hanging indent */
-
- p.h0i0 {
- padding-left: 0em;
- text-indent: 0em;
- }
- p.h0i1 {
- padding-left: 1em;
- text-indent: -1em;
- }
- p.h0i2 {
- padding-left: 2em;
- text-indent: -2em;
- }
- p.h0i3 {
- padding-left: 3em;
- text-indent: -3em;
- }
- p.h0i4 {
- padding-left: 4em;
- text-indent: -4em;
- }
- p.h0i5 {
- padding-left: 5em;
- text-indent: -5em;
- }
- p.h0i6 {
- padding-left: 6em;
- text-indent: -6em;
- }
- p.h0i7 {
- padding-left: 7em;
- text-indent: -7em;
- }
- p.h0i8 {
- padding-left: 8em;
- text-indent: -8em;
- }
- p.h0i9 {
- padding-left: 9em;
- text-indent: -9em;
- }
-
- p.h1i0 {
- padding-left: 0em;
- text-indent: 1em;
- }
- p.h1i1 {
- padding-left: 1em;
- text-indent: 0em;
- }
- p.h1i2 {
- padding-left: 2em;
- text-indent: -1em;
- }
- p.h1i3 {
- padding-left: 3em;
- text-indent: -2em;
- }
- p.h1i4 {
- padding-left: 4em;
- text-indent: -3em;
- }
- p.h1i5 {
- padding-left: 5em;
- text-indent: -4em;
- }
- p.h1i6 {
- padding-left: 6em;
- text-indent: -5em;
- }
- p.h1i7 {
- padding-left: 7em;
- text-indent: -6em;
- }
- p.h1i8 {
- padding-left: 8em;
- text-indent: -7em;
- }
- p.h1i9 {
- padding-left: 9em;
- text-indent: -8em;
- }
-
- p.h2i0 {
- padding-left: 0em;
- text-indent: 2em;
- }
- p.h2i1 {
- padding-left: 1em;
- text-indent: 1em;
- }
- p.h2i2 {
- padding-left: 2em;
- text-indent: 0em;
- }
- p.h2i3 {
- padding-left: 3em;
- text-indent: -1em;
- }
- p.h2i4 {
- padding-left: 4em;
- text-indent: -2em;
- }
- p.h2i5 {
- padding-left: 5em;
- text-indent: -3em;
- }
- p.h2i6 {
- padding-left: 6em;
- text-indent: -4em;
- }
- p.h2i7 {
- padding-left: 7em;
- text-indent: -5em;
- }
- p.h2i8 {
- padding-left: 8em;
- text-indent: -6em;
- }
- p.h2i9 {
- padding-left: 9em;
- text-indent: -7em;
- }
-
- p.h3i0 {
- padding-left: 0em;
- text-indent: 3em;
- }
- p.h3i1 {
- padding-left: 1em;
- text-indent: 2em;
- }
- p.h3i2 {
- padding-left: 2em;
- text-indent: 1em;
- }
- p.h3i3 {
- padding-left: 3em;
- text-indent: 0em;
- }
- p.h3i4 {
- padding-left: 4em;
- text-indent: -1em;
- }
- p.h3i5 {
- padding-left: 5em;
- text-indent: -2em;
- }
- p.h3i6 {
- padding-left: 6em;
- text-indent: -3em;
- }
- p.h3i7 {
- padding-left: 7em;
- text-indent: -4em;
- }
- p.h3i8 {
- padding-left: 8em;
- text-indent: -5em;
- }
- p.h3i9 {
- padding-left: 9em;
- text-indent: -6em;
- }
-
- p.h4i0 {
- padding-left: 0em;
- text-indent: 4em;
- }
- p.h4i1 {
- padding-left: 1em;
- text-indent: 3em;
- }
- p.h4i2 {
- padding-left: 2em;
- text-indent: 2em;
- }
- p.h4i3 {
- padding-left: 3em;
- text-indent: 1em;
- }
- p.h4i4 {
- padding-left: 4em;
- text-indent: 0em;
- }
- p.h4i5 {
- padding-left: 5em;
- text-indent: -1em;
- }
- p.h4i6 {
- padding-left: 6em;
- text-indent: -2em;
- }
- p.h4i7 {
- padding-left: 7em;
- text-indent: -3em;
- }
- p.h4i8 {
- padding-left: 8em;
- text-indent: -4em;
- }
- p.h4i9 {
- padding-left: 9em;
- text-indent: -5em;
- }
-
- p.h5i0 {
- padding-left: 0em;
- text-indent: 5em;
- }
- p.h5i1 {
- padding-left: 1em;
- text-indent: 4em;
- }
- p.h5i2 {
- padding-left: 2em;
- text-indent: 3em;
- }
- p.h5i3 {
- padding-left: 3em;
- text-indent: 2em;
- }
- p.h5i4 {
- padding-left: 4em;
- text-indent: 1em;
- }
- p.h5i5 {
- padding-left: 5em;
- text-indent: 0em;
- }
- p.h5i6 {
- padding-left: 6em;
- text-indent: -1em;
- }
- p.h5i7 {
- padding-left: 7em;
- text-indent: -2em;
- }
- p.h5i8 {
- padding-left: 8em;
- text-indent: -3em;
- }
- p.h5i9 {
- padding-left: 9em;
- text-indent: -4em;
- }
-
- p.h6i0 {
- padding-left: 0em;
- text-indent: 6em;
- }
- p.h6i1 {
- padding-left: 1em;
- text-indent: 5em;
- }
- p.h6i2 {
- padding-left: 2em;
- text-indent: 4em;
- }
- p.h6i3 {
- padding-left: 3em;
- text-indent: 3em;
- }
- p.h6i4 {
- padding-left: 4em;
- text-indent: 2em;
- }
- p.h6i5 {
- padding-left: 5em;
- text-indent: 1em;
- }
- p.h6i6 {
- padding-left: 6em;
- text-indent: 0em;
- }
- p.h6i7 {
- padding-left: 7em;
- text-indent: -1em;
- }
- p.h6i8 {
- padding-left: 8em;
- text-indent: -2em;
- }
- p.h6i9 {
- padding-left: 9em;
- text-indent: -3em;
- }
-
- p.h7i0 {
- padding-left: 0em;
- text-indent: 7em;
- }
- p.h7i1 {
- padding-left: 1em;
- text-indent: 6em;
- }
- p.h7i2 {
- padding-left: 2em;
- text-indent: 5em;
- }
- p.h7i3 {
- padding-left: 3em;
- text-indent: 4em;
- }
- p.h7i4 {
- padding-left: 4em;
- text-indent: 3em;
- }
- p.h7i5 {
- padding-left: 5em;
- text-indent: 2em;
- }
- p.h7i6 {
- padding-left: 6em;
- text-indent: 1em;
- }
- p.h7i7 {
- padding-left: 7em;
- text-indent: 0em;
- }
- p.h7i8 {
- padding-left: 8em;
- text-indent: -1em;
- }
- p.h7i9 {
- padding-left: 9em;
- text-indent: -2em;
- }
-
- p.h8i0 {
- padding-left: 0em;
- text-indent: 8em;
- }
- p.h8i1 {
- padding-left: 1em;
- text-indent: 7em;
- }
- p.h8i2 {
- padding-left: 2em;
- text-indent: 6em;
- }
- p.h8i3 {
- padding-left: 3em;
- text-indent: 5em;
- }
- p.h8i4 {
- padding-left: 4em;
- text-indent: 4em;
- }
- p.h8i5 {
- padding-left: 5em;
- text-indent: 3em;
- }
- p.h8i6 {
- padding-left: 6em;
- text-indent: 2em;
- }
- p.h8i7 {
- padding-left: 7em;
- text-indent: 1em;
- }
- p.h8i8 {
- padding-left: 8em;
- text-indent: 0em;
- }
- p.h8i9 {
- padding-left: 9em;
- text-indent: -1em;
- }
-
- p.h9i0 {
- padding-left: 0em;
- text-indent: 9em;
- }
- p.h9i1 {
- padding-left: 1em;
- text-indent: 8em;
- }
- p.h9i2 {
- padding-left: 2em;
- text-indent: 7em;
- }
- p.h9i3 {
- padding-left: 3em;
- text-indent: 6em;
- }
- p.h9i4 {
- padding-left: 4em;
- text-indent: 5em;
- }
- p.h9i5 {
- padding-left: 5em;
- text-indent: 4em;
- }
- p.h9i6 {
- padding-left: 6em;
- text-indent: 3em;
- }
- p.h9i7 {
- padding-left: 7em;
- text-indent: 2em;
- }
- p.h9i8 {
- padding-left: 8em;
- text-indent: 1em;
- }
- p.h9i9 {
- padding-left: 9em;
- text-indent: 0em;
- }
-
- p.it0 {
- margin-left: 0em;
- margin-top: 6px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it1 {
- margin-left: 1em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it2 {
- margin-left: 2em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it3 {
- margin-left: 3em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it4 {
- margin-left: 4em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it5 {
- margin-left: 5em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it6 {
- margin-left: 6em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it7 {
- margin-left: 7em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it8 {
- margin-left: 8em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it9 {
- margin-left: 9em;
- margin-bottom: 0px;
- margin-top: 0px;
- line-height: 100%;
- }
-
- p.block { }
-
- p.group { }
-
- p.alt { }
-
- p.verse {
- margin-bottom: 6px;
- }
-
- p.code {
- font-family: inconsolata, andale mono, courier new, courier, monospace;
- font-size: 90%;
- text-align: left;
- background-color: #eeeeee;
- }
-
- p.caption {
- text-align: left;
- font-size: 80%;
- display: inline;
- }
-
- p.endnote {
- font-size: 96%;
- line-height: 120%;
- text-align: left;
- margin-right: 15mm;
- }
- p.endnote_indent {
- font-size: 96%;
- line-height: 120%;
- text-align: left;
- margin-left: 2em;
- margin-right: 15mm;
- }
-
- p.center {
- text-align: center;
- }
- p.bold {
- font-weight: bold;
- }
- p.bold_left {
- font-weight: bold;
- text-align: left;
- }
- p.centerbold {
- text-align: center;
- font-weight: bold;
- }
- p.em {
- font-weight: bold;
- font-style: normal;
- background: #fff3b6;
- }
-
- p.small {
- font-size: 80%;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 6px;
- text-align: left;
- }
-
- .tiny, .tiny_left, .tiny_right, .tiny_center {
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 6px;
- text-align: left;
- }
- p.tiny { }
- p.tiny_left {
- margin-left: 0px;
- margin-right: 0px;
- text-align: left;
- }
- p.tiny_right {
- margin-right: 1em;
- text-align: right;
- }
- p.tiny_center {
- margin-left: 0px;
- margin-right: 0px;
- text-align: center;
- }
-
- p.pane, p.pane_title, p.pane_blurb, p.pane_link, p.pane_indent {
- font-size: 80%;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-left: 2mm;
- margin-right: 4px;
- text-align: left;
- }
- p.pane { }
- p.pane_title {
- font-weight: bold;
- margin-bottom: 0px;
- }
- p.pane_blurb {
- font-size: 10px;
- margin-bottom: 0px;
- }
- p.pane_link {
- font-size: 10px;
- margin-bottom: 0px;
- margin-left: 4mm;
- }
- p.pane_indent {
- font-size: 10px;
- margin-bottom: 0px;
- margin-left: 4mm;
- }
-
- p.concordance_word {
- line-height: 150%;
- font-weight: bold;
- display: inline;
- margin-top: 4px;
- margin-bottom: 1px;
- }
- p.concordance_count {
- font-size: 80%;
- color: #777777;
- display: inline;
- margin-left: 0em;
- }
- p.concordance_object {
- font-size: 80%;
- line-height: 120%;
- text-align: left;
- margin-left: 3em;
- margin-top: 1px;
- margin-bottom: 3px;
- }
- p.book_index_lev1 {
- line-height: 100%;
- margin-top: 4px;
- margin-bottom: 1px;
- }
- p.book_index_lev2 {
- line-height: 100%;
- text-align: left;
- margin-left: 3em;
- margin-top: 1px;
- margin-bottom: 3px;
- }
-
- p.quickref {
- font-size: 10px;
- font-style: italic;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 5px;
- text-align: left;
- }
- p.bigref {
- font-size: 11px;
- font-weight: bold;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 5px;
- text-align: center;
- }
-
- p.letter {
- font-weight: bold;
- font-size: 80%;
- margin-left: 0em;
- margin-top: 2px;
- margin-bottom: 2px;
- margin-right: 6px;
- text-align: left;
- color: white;
- background: #880000;
- }
-
- tt {
- font-family: inconsolata, andale mono, courier new, courier, monospace;
- background-color: #eeeeee;
- }
-
- label.ocn {
- width: 2%;
- float: right;
- top: 0;
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 5px;
- color: #777777;
- margin-right: 5px;
- text-align: right;
- background-color: #ffffff;
- }
-
- table { }
- tr { }
- th,td {
- vertical-align: top;
- text-align: left;
- }
- th {
- font-weight: bold;
- }
-
- p.left,th.left,td.left {
- text-align: left;
- }
- p.small_left,th.small_left,td.small_left {
- text-align: left;
- font-size: 80%;
- }
- p.right,th.right,td.right {
- text-align: right;
- }
-
- #horizontal_links {
- background: #eeeeee;
- margin-left: 5%;
- margin-right: 5%;
- }
- #horizontal {
- margin: 0;
- padding: 0 0 0 10px;
- border-top: 1px solid #000077;
- border-bottom: 1px solid #000077;
- }
- #horizontal li {
- margin: 0 0 0 0;
- padding: 0 16px 0 0;
- display: inline;
- list-style-type: none;
- text-align: left;
- background: none;
- }
- #horizontal a {
- line-height: 12px;
- margin: 0 0 0 0;
- text-decoration: none;
- color: #000077;
- }
- #horizontal a.active, #horizontal a:hover {
- border-bottom: 2px solid #777777;
- padding-bottom: 2px;
- color: #000077;
- }
- #horizontal a:hover {
- color: #000077;
- }
-
- #document_versions {
- position: absolute;
- top: 10mm;
- right: 2%;
- width: 12%;
- float: right;
- }
-
- #vertical_links {
- position: absolute;
- top: 10mm;
- right: 0px;
- width: 20%;
- background: #dddddd;
- float: right;
- }
- #vertical {
- padding: 0 12px 0px 0px;
- margin-left: 2%;
- margin-right: 2%;
- }
- #vertical li {
- display: block;
- list-style-type: none;
- }
- #vertical a {
- line-height: 12px;
- text-decoration: none;
- color: #000077;
- }
- #vertical a.active, #vertical a:hover {
- border-bottom: 2px solid #777777;
- padding-bottom: 2px;
- color: #000077;
- }
-
- ul, li {
- list-style-type: none;
- list-style: none;
- padding-left: 20px;
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-weight: normal;
- line-height: 150%;
- text-align: left;
- text-indent: 0mm;
- margin-left: 1em;
- margin-right: 2em;
- margin-top: 3px;
- margin-bottom: 3px;
- }
-
- li {
- background: url(../image/bullet_09.png) no-repeat 0px 6px;
- }
-
- ul {
- }
- li.bullet { margin-left: 1em; }
- li.i1 { margin-left: 2em; }
- li.i2 { margin-left: 3em; }
- li.i3 { margin-left: 4em; }
- li.i4 { margin-left: 5em; }
- li.i5 { margin-left: 6em; }
- li.i6 { margin-left: 7em; }
- li.i7 { margin-left: 8em; }
- li.i8 { margin-left: 9em; }
- li.i9 { margin-left: 10em; }
-
- li.doc, li.ref, li.refcenter {
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 0px;
- font-size: 8px;
- font-style: normal;
- text-align: left;
- }
- li.doc {
- background: url(../image/bullet_09.png) no-repeat 0px 6px;
- padding-left: 16px;
- margin-left: 10px;
- margin-right: 0px;
- }
- li.ref {
- background: none;
- padding-left: 0;
- margin-left: 0;
- color: #777777;
- }
- li.refcenter {
- background: url(../image/bullet_09.png) no-repeat 0px 6px;
- padding-left: 20px;
- margin-left: 10%;
- font-size: 9px;
- color: #777777;
- text-align: center;
- }
- li.refbold {
- list-style-type: none;
- padding-left: 16px;
- margin-left: 0;
- margin-right: 10mm;
- font-weight: bold;
- }
-
- h0, h1, h2, h3, h4, h5, h6 {
- font-weight: bold;
- line-height: 120%;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- h4.norm, h5.norm, h6.norm {
- margin-top: 10px;
- margin-bottom: 0px;
- }
- h1.center, h2.center, h3.center, h4.center, h5.center, h6.center {
- text-align: center;
- }
- h1 { font-size: 120%; }
- h2 { font-size: 115%; }
- h3 { font-size: 110%; }
- h4 { font-size: 105%; }
- h5 { font-size: 100%; }
- h6 { font-size: 100%; }
- h0 { font-size: 80%; }
-
- h1.i {margin-left: 2em;}
- h2.i {margin-left: 3em;}
- h3.i {margin-left: 4em;}
- h4.i {margin-left: 5em;}
- h5.i {margin-left: 6em;}
- h6.i {margin-left: 7em;}
- h7.i {margin-left: 8em;}
- h8.i {margin-left: 9em;}
- h9.i {margin-left: 10em;}
- h1.top_band {
- display: inline;
- text-align: left;
- margin-top: 0;
- margin-left: 4mm;
- text-indent: 0mm;
- font-weight: bold;
- font-size: 120%;
- }
- h2.top_band_tiny {
- font-size: 10px;
- font-weight: normal;
- margin-top: 0px;
- margin-left: 4mm;
- text-indent: 0mm;
- margin-bottom: 0px;
- color: #777777;
- margin-left: 140px;
- margin-right: 0px;
- text-align: left;
- }
-
- p.top_band {
- display: inline;
- text-align: left;
- margin-top: 0;
- margin-left: 140px;
- text-indent: 0mm;
- font-weight: bold;
- font-size: 120%;
- }
- p.top_band_tiny {
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-left: 140px;
- margin-right: 0px;
- text-align: left;
- }
- p.top_band_image {
- float: left;
- display: inline;
- text-align: left;
- margin-top: 0;
- margin-left: 1mm;
- text-indent: 0mm;
- margin-right: 1mm;
- }
-
- .banner, .subbanner {
- font-weight: bold;
- text-align: center;
- margin-left: 10mm;
- margin-right: 15mm;
- margin-top: 20px;
- margin-bottom: 10px;
- }
-
- h1.banner {
- font-size: 120%;
- }
- h1.subbanner {
- font-size: 115%;
- }
- h2.banner {
- font-size: 110%;
- }
- h3.banner {
- color: #990000;
- font-size: 105%;
- }
- h4.banner {
- color: #ff0000;
- font-size: 100%;
- }
- h5.banner {
- }
- h6.banner {
- }
-
- .toc {
- font-weight: normal;
- margin-top: 6px;
- margin-bottom: 6px;
- }
- h1.toc {
- margin-left: 1em;
- font-size: 115%;
- line-height: 150%;
- }
- h2.toc {
- margin-left: 2em;
- font-size: 110%;
- line-height: 140%;
- }
- h3.toc {
- margin-left: 3em;
- font-size: 105%;
- line-height: 120%;
- }
- h4.toc {
- margin-left: 4em;
- font-size: 100%;
- line-height: 120%;
- }
- h5.toc {
- margin-left: 5em;
- font-size: 95%;
- line-height: 110%;
- }
- h6.toc {
- margin-left: 6em;
- font-size: 90%;
- line-height: 110%;
- }
-
- .microtoc {
- margin-top: 2px;
- margin-bottom: 2px;
- }
-
- h1.microtoc {
- margin-left: 0mm;
- font-size: 115%;
- }
- h2.microtoc {
- margin-left: 5mm;
- font-size: 110%;
- }
- h3.microtoc {
- margin-left: 10mm;
- font-size: 105%;
- }
- h4.microtoc {
- margin-left: 15mm;
- font-weight: normal;
- font-size: 100%;
- }
- h5.microtoc {
- margin-left: 20mm;
- font-weight: normal;
- font-size: 95%;
- }
- h6.microtoc {
- margin-left: 25mm;
- font-weight: normal;
- font-size: 90%;
- }
-
- .subtoc {
- margin-right: 34%;
- font-weight: normal;
- }
- h5.subtoc {
- margin-left: 2em;
- font-size: 80%;
- margin-top: 2px;
- margin-bottom: 2px;
- }
- h6.subtoc {
- margin-left: 3em;
- font-size: 75%;
- margin-top: 0px;
- margin-bottom: 0px;
- }
-
- div.substance {
- width: 100%;
- background-color: #ffffff;
- }
- div.ocn {
- width: 5%;
- float: right;
- top: 0;
- background-color: #ffffff;
- }
- div.endnote {
- width: 95%;
- background-color: #fffffff;
- }
- div.toc {
- position: absolute;
- float: left;
- margin: 0;
- padding: 0;
- padding-top: 0.5em;
- border: 0;
- width: 13em;
- background-color: #eeeeee;
- margin-right:1em;
- }
- div.summary {
- margin: 0;
- padding: 0;
- border-left: 13em solid #eeeeee;
- padding-left: 1em;
- background-color: #eeeeee;
- }
- div.content, div.main_column {
- margin: 0;
- padding: 0;
- border-left: 13em solid #ffffff;
- padding-left: 1em;
- padding-right: 1em;
- }
- div.content0, div.main_column0 {
- margin: 0;
- padding: 0;
- border-left: 0% solid #ffffff;
- padding-left: 5%;
- }
- div.scroll {
- margin: 0;
- padding: 0;
- padding-left: 1em;
- padding-right: 1em;
- }
- div.content:after {
- content:' ';
- clear:both;
- display:block;
- height:0;
- overflow:hidden
- }
- div.footer {
- clear:left;
- padding: 0.5em;
- font-size: 80%;
- margin: 0;
- }
- div.toc ul {
- list-style: none;
- padding: 0;
- margin: 0;
- }
- div.toc li ul a, li ul span.currentlink
- {
- font-weight: normal;
- font-size: 90%;
- padding-left: 2em;
- background-color: #eeeeee;
- }
- div.toc a, span.currentlink{
- display:block;
- text-decoration: none;
- padding-left: 0.5em;
- color: #0000aa;
- }
- hr {
- width: 90%;
- }
-
- span.currentlink {
- text-decoration: none;
- background-color: #aaaaf9;
- }
-
- div.toc a:visited {
- color: #0000aa;
- }
- div.toc a:hover {
- color: #000000;
- background-color: #f9f9aa;
- }
-
- .minitoc {
- font-weight: normal;
- margin-top: 2px;
- margin-bottom: 2px;
- }
- h1.minitoc, h2.minitoc, h3.minitoc {
- margin-left: 0em;
- font-weight: bold;
- text-align: left;
- font-size: 90%;
- margin-top: 4px;
- margin-bottom: 4px;
- }
- h4.minitoc {
- margin-left: 0em;
- font-size: 90%;
- }
- h5.minitoc {
- margin-left: 1em;
- font-size: 85%;
- }
- h6.minitoc {
- margin-left: 2em;
- font-size: 85%;
- }
- h0.minitoc {
- margin-left: 0em;
- font-size: 90%;
- }
-
- h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c {
- text-align: center
- }
- h1.red, h2.red, h3.red, h4.red, h5.red, h6.red {
- text-align: center;
- color: #ff0000;
- margin-left: 5mm;
- text-indent: 5mm;
- margin-top: 30px;
- margin-bottom: 20px;
- margin-right: 15mm;
- }
- h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby {
- text-align: center;
- color: #990000;
- margin-left: 5mm;
- text-indent: 5mm;
- margin-top: 30px;
- margin-bottom: 20px;
- margin-right: 15mm;
- }
-WOK
- end
- def homepage #stylesheet for index, home page
-<<WOK
- body {color: black; background: #{@vz.color_white}; margin:10px 10px 0px 10px; padding:0px;}
- p { line-height: 1.5 }
- a:link {color: #{@vz.color_blue_ink}; text-decoration: none; }
- a:visited {color: #{@vz.color_blue_ink}; text-decoration: none; }
- a:hover {color: #{@vz.color_black}; text-decoration: underline; background-color: #{@vz.color_yellow_light};}
- a:active {color: #{@vz.color_blue_ink}; text-decoration: underline;}
- #banner {
- background:#{@vz.color_white};
- }
- #column_left {
- width:25%;
- float:left;
- background:#b9d4dd;
- padding-bottom:10px;
- }
- #column_center {
- width:55%;
- float:left;
- background:#{@vz.color_white};
- padding-bottom:10px;
- }
- #column_right {
- width:20%;
- float:left;
- background:#b9d4dd;
- padding-bottom:10px;
- }
- p,h1,pre {
- font-family: #{fonts};
- margin:0px 10px 10px 10px;
- }
- h1 {
- font-size:14px;
- padding-top:10px;
- }
- #column_right p { font-size:12px}
- #banner h1 { margin:0px; padding:10px}
-WOK
- end
- def xhtml #stylesheet for xhtml
-<<WOK
-/* SiSU css xhtml & sax.xml default style */
- document {
- display: block;
- margin-left: 0mm;
- margin-right: 0mm;
- }
- head {
- display: block;
- margin-bottom: 20px;
- background-color: #dddddd;
- }
- metadata {
- display: block;
- }
- meta {
- display: inline;
- line-height: 1;
- font-size: 10px;
- color: #990000;
- margin-right: 2mm;
- margin-top: 0px;
- margin-bottom: 0px;
-
- }
- data,md {
- display: inline;
- line-height: 1;
- font-size: 10px;
- color: #000099;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- source_control {
- display: block;
- }
- dc {
- display: block;
- font-family: #{fonts};
- color: blue;
- background-color: #dddddd;
- font-weight: normal;
- text-align: justify;
- font-size: xx-small;
- line-height: 120%;
- margin-left: 5%;
- margin-right: 5mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- sc {
- display: inline;
- color: green;
- }
- keywords,copyright {
- display: block;
- font-family: #{fonts};
- color: red;
- background-color: #dddddd;
- font-weight: normal;
- text-align: justify;
- font-size: xx-small;
- line-height: 120%;
- margin-left: 5%;
- margin-right: 5mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- table {
- margin-left: 5%;
- display: block;
- }
- tr {
- display: block;
- }
- th,td {
- display: inline;
- }
- body {
- color: black;
- background: #ffffff;
- }
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- /* background-color: #e3ecef; */
- }
- a:hover {
- color: #000000;
- text-decoration: underline;
- background-color: #fff3b6;
- }
- a:hover IMG {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- object {
- display: block;
- margin-left: 2mm;
- margin-right: 2mm;
- margin-top: 4px;
- margin-bottom: 8px;
- }
- text,text[class|="norm"] {
- display: block;
- font-family: #{fonts};
- text-align: justify;
- font-weight: normal;
- font-size: 100%;
- line-height: 150%;
- margin-left: 5%;
- margin-right: 5%;
- margin-top: 2px;
- margin-bottom: 0px;
- }
- text[class|="h1"] {
- font-size: 120%;
- font-weight: bold;
- text-align: left;
- line-height: 120%;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- text[class|="h2"] {
- font-weight: bold;
- font-size: 110%;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- text[class|="h3"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="h4"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="h5"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="h6"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="indent0"] {
- padding-left: 10%;
- }
- text[class|="indent1"] {
- padding-left: 15%;
- }
- text[class|="indent2"] {
- padding-left: 20%;
- }
- text[class|="indent3"] {
- padding-left: 25%;
- }
- text[class|="indent4"] {
- padding-left: 30%;
- }
- text[class|="indent5"] {
- padding-left: 35%;
- }
- text[class|="indent6"] {
- padding-left: 40%;
- }
- text[class|="indent7"] {
- padding-left: 45%;
- }
- text[class|="indent8"] {
- padding-left: 50%;
- }
- text[class|="indent9"] {
- padding-left: 55%;
- }
-
- text[class|="hang0_indent0"] {
- padding-left: 10%;
- text-indent: 0%;
- }
- text[class|="hang0_indent1"] {
- padding-left: 15%;
- text-indent: -5%;
- }
- text[class|="hang0_indent2"] {
- padding-left: 20%;
- text-indent: -10%;
- }
- text[class|="hang0_indent3"] {
- padding-left: 25%;
- text-indent: -15%;
- }
- text[class|="hang0_indent4"] {
- padding-left: 30%;
- text-indent: -20%;
- }
- text[class|="hang0_indent5"] {
- padding-left: 35%;
- text-indent: -25%;
- }
- text[class|="hang0_indent6"] {
- padding-left: 40%;
- text-indent: -30%;
- }
- text[class|="hang0_indent7"] {
- padding-left: 45%;
- text-indent: -35%;
- }
- text[class|="hang0_indent8"] {
- padding-left: 50%;
- text-indent: -40%;
- }
- text[class|="hang0_indent9"] {
- padding-left: 55%;
- text-indent: -45%;
- }
-
- text[class|="hang1_indent0"] {
- padding-left: 10%;
- text-indent: 5%;
- }
- text[class|="hang1_indent1"] {
- padding-left: 15%;
- text-indent: 0%;
- }
- text[class|="hang1_indent2"] {
- padding-left: 20%;
- text-indent: -5%;
- }
- text[class|="hang1_indent3"] {
- padding-left: 25%;
- text-indent: -10%;
- }
- text[class|="hang1_indent4"] {
- padding-left: 30%;
- text-indent: -15%;
- }
- text[class|="hang1_indent5"] {
- padding-left: 35%;
- text-indent: -20%;
- }
- text[class|="hang1_indent6"] {
- padding-left: 40%;
- text-indent: -25%;
- }
- text[class|="hang1_indent7"] {
- padding-left: 45%;
- text-indent: -30%;
- }
- text[class|="hang1_indent8"] {
- padding-left: 50%;
- text-indent: -35%;
- }
- text[class|="hang1_indent9"] {
- padding-left: 55%;
- text-indent: -40%;
- }
-
- text[class|="hang2_indent0"] {
- padding-left: 10%;
- text-indent: 10%;
- }
- text[class|="hang2_indent1"] {
- padding-left: 15%;
- text-indent: 5%;
- }
- text[class|="hang2_indent2"] {
- padding-left: 20%;
- text-indent: 0%;
- }
- text[class|="hang2_indent3"] {
- padding-left: 25%;
- text-indent: -5%;
- }
- text[class|="hang2_indent4"] {
- padding-left: 30%;
- text-indent: -10%;
- }
- text[class|="hang2_indent5"] {
- padding-left: 35%;
- text-indent: -15%;
- }
- text[class|="hang2_indent6"] {
- padding-left: 40%;
- text-indent: -20%;
- }
- text[class|="hang2_indent7"] {
- padding-left: 45%;
- text-indent: -25%;
- }
- text[class|="hang2_indent8"] {
- padding-left: 50%;
- text-indent: -30%;
- }
- text[class|="hang2_indent9"] {
- padding-left: 55%;
- text-indent: -35%;
- }
-
- text[class|="hang3_indent0"] {
- padding-left: 10%;
- text-indent: 15%;
- }
- text[class|="hang3_indent1"] {
- padding-left: 15%;
- text-indent: 10%;
- }
- text[class|="hang3_indent2"] {
- padding-left: 20%;
- text-indent: 5%;
- }
- text[class|="hang3_indent3"] {
- padding-left: 25%;
- text-indent: 0%;
- }
- text[class|="hang3_indent4"] {
- padding-left: 30%;
- text-indent: -5%;
- }
- text[class|="hang3_indent5"] {
- padding-left: 35%;
- text-indent: -10%;
- }
- text[class|="hang3_indent6"] {
- padding-left: 40%;
- text-indent: -15%;
- }
- text[class|="hang3_indent7"] {
- padding-left: 45%;
- text-indent: -20%;
- }
- text[class|="hang3_indent8"] {
- padding-left: 50%;
- text-indent: -25%;
- }
- text[class|="hang3_indent9"] {
- padding-left: 55%;
- text-indent: -30%;
- }
-
- text[class|="hang4_indent0"] {
- padding-left: 10%;
- text-indent: 20%;
- }
- text[class|="hang4_indent1"] {
- padding-left: 15%;
- text-indent: 15%;
- }
- text[class|="hang4_indent2"] {
- padding-left: 20%;
- text-indent: 10%;
- }
- text[class|="hang4_indent3"] {
- padding-left: 25%;
- text-indent: 5%;
- }
- text[class|="hang4_indent4"] {
- padding-left: 30%;
- text-indent: 0%;
- }
- text[class|="hang4_indent5"] {
- padding-left: 35%;
- text-indent: -5%;
- }
- text[class|="hang4_indent6"] {
- padding-left: 40%;
- text-indent: -10%;
- }
- text[class|="hang4_indent7"] {
- padding-left: 45%;
- text-indent: -15%;
- }
- text[class|="hang4_indent8"] {
- padding-left: 50%;
- text-indent: -20%;
- }
- text[class|="hang4_indent9"] {
- padding-left: 55%;
- text-indent: -25%;
- }
-
- text[class|="hang5_indent0"] {
- padding-left: 10%;
- text-indent: 25%;
- }
- text[class|="hang5_indent1"] {
- padding-left: 15%;
- text-indent: 20%;
- }
- text[class|="hang5_indent2"] {
- padding-left: 20%;
- text-indent: 15%;
- }
- text[class|="hang5_indent3"] {
- padding-left: 25%;
- text-indent: 10%;
- }
- text[class|="hang5_indent4"] {
- padding-left: 30%;
- text-indent: 5%;
- }
- text[class|="hang5_indent5"] {
- padding-left: 35%;
- text-indent: 0%;
- }
- text[class|="hang5_indent6"] {
- padding-left: 40%;
- text-indent: -5%;
- }
- text[class|="hang5_indent7"] {
- padding-left: 45%;
- text-indent: -10%;
- }
- text[class|="hang5_indent8"] {
- padding-left: 50%;
- text-indent: -15%;
- }
- text[class|="hang5_indent9"] {
- padding-left: 55%;
- text-indent: -20%;
- }
-
- text[class|="hang6_indent0"] {
- padding-left: 10%;
- text-indent: 30%;
- }
- text[class|="hang6_indent1"] {
- padding-left: 15%;
- text-indent: 25%;
- }
- text[class|="hang6_indent2"] {
- padding-left: 20%;
- text-indent: 20%;
- }
- text[class|="hang6_indent3"] {
- padding-left: 25%;
- text-indent: 15%;
- }
- text[class|="hang6_indent4"] {
- padding-left: 30%;
- text-indent: 10%;
- }
- text[class|="hang6_indent5"] {
- padding-left: 35%;
- text-indent: 5%;
- }
- text[class|="hang6_indent6"] {
- padding-left: 40%;
- text-indent: 0%;
- }
- text[class|="hang6_indent7"] {
- padding-left: 45%;
- text-indent: -5%;
- }
- text[class|="hang6_indent8"] {
- padding-left: 50%;
- text-indent: -10%;
- }
- text[class|="hang6_indent9"] {
- padding-left: 55%;
- text-indent: -15%;
- }
-
- text[class|="hang7_indent0"] {
- padding-left: 10%;
- text-indent: 35%;
- }
- text[class|="hang7_indent1"] {
- padding-left: 15%;
- text-indent: 30%;
- }
- text[class|="hang7_indent2"] {
- padding-left: 20%;
- text-indent: 25%;
- }
- text[class|="hang7_indent3"] {
- padding-left: 25%;
- text-indent: 20%;
- }
- text[class|="hang7_indent4"] {
- padding-left: 30%;
- text-indent: 15%;
- }
- text[class|="hang7_indent5"] {
- padding-left: 35%;
- text-indent: 10%;
- }
- text[class|="hang7_indent6"] {
- padding-left: 40%;
- text-indent: 5%;
- }
- text[class|="hang7_indent7"] {
- padding-left: 45%;
- text-indent: 0%;
- }
- text[class|="hang7_indent8"] {
- padding-left: 50%;
- text-indent: -5%;
- }
- text[class|="hang7_indent9"] {
- padding-left: 55%;
- text-indent: -10%;
- }
-
- text[class|="hang8_indent0"] {
- padding-left: 10%;
- text-indent: 40%;
- }
- text[class|="hang8_indent1"] {
- padding-left: 15%;
- text-indent: 35%;
- }
- text[class|="hang8_indent2"] {
- padding-left: 20%;
- text-indent: 30%;
- }
- text[class|="hang8_indent3"] {
- padding-left: 25%;
- text-indent: 25%;
- }
- text[class|="hang8_indent4"] {
- padding-left: 30%;
- text-indent: 20%;
- }
- text[class|="hang8_indent5"] {
- padding-left: 35%;
- text-indent: 15%;
- }
- text[class|="hang8_indent6"] {
- padding-left: 40%;
- text-indent: 10%;
- }
- text[class|="hang8_indent7"] {
- padding-left: 45%;
- text-indent: 5%;
- }
- text[class|="hang8_indent8"] {
- padding-left: 50%;
- text-indent: 0%;
- }
- text[class|="hang8_indent9"] {
- padding-left: 55%;
- text-indent: -5%;
- }
-
- text[class|="hang9_indent0"] {
- padding-left: 10%;
- text-indent: 45%;
- }
- text[class|="hang9_indent1"] {
- padding-left: 15%;
- text-indent: 40%;
- }
- text[class|="hang9_indent2"] {
- padding-left: 20%;
- text-indent: 35%;
- }
- text[class|="hang9_indent3"] {
- padding-left: 25%;
- text-indent: 30%;
- }
- text[class|="hang9_indent4"] {
- padding-left: 30%;
- text-indent: 25%;
- }
- text[class|="hang9_indent5"] {
- padding-left: 35%;
- text-indent: 20%;
- }
- text[class|="hang9_indent6"] {
- padding-left: 40%;
- text-indent: 15%;
- }
- text[class|="hang9_indent7"] {
- padding-left: 45%;
- text-indent: 10%;
- }
- text[class|="hang9_indent8"] {
- padding-left: 50%;
- text-indent: 5%;
- }
- text[class|="hang9_indent9"] {
- padding-left: 55%;
- text-indent: 0%;
- }
-
- text[class|="indent_bullet"] {
- text-indent: 0%;
- }
- text[class|="indent_bullet0"] {
- text-indent: 0%;
- }
- text[class|="indent_bullet1"] {
- text-indent: 10%;
- }
- text[class|="indent_bullet2"] {
- text-indent: 15%;
- }
- text[class|="indent_bullet3"] {
- text-indent: 20%;
- }
- text[class|="indent_bullet4"] {
- text-indent: 25%;
- }
- text[class|="indent_bullet5"] {
- text-indent: 30%;
- }
- text[class|="indent_bullet6"] {
- text-indent: 35%;
- }
- text[class|="indent_bullet7"] {
- text-indent: 40%;
- }
- text[class|="indent_bullet8"] {
- text-indent: 45%;
- }
- text[class|="indent_bullet9"] {
- text-indent: 50%;
- }
- text[class|="verse"], text[class|="block"], text[class|="group"], text[class|="code"] {
- text-align: left;
- }
- ocn {
- display: block;
- text-align: right;
- vertical-align: super;
- color: #990000;
- font-size: xx-small;
- margin-right: 0mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- named {
- display: block;
- margin-right: 0mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- endnote {
- display: block;
- font-size: small;
- font-family: #{fonts};
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 10%;
- margin-right: 5%;
- margin-top: 4px;
- margin-bottom: 0px;
- }
- endnote_indent {
- display: block;
- font-size: small;
- font-family: #{fonts};
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 15%;
- margin-right: 5%;
- margin-top: 4px;
- margin-bottom: 0px;
- }
- en {
- font-size: xx-small;
- vertical-align: super;
- }
- i { font-style: italic; }
- b { font-style: bold; }
- u { text-decoration: underline; }
- br { display: block; }
-
- text[class|="table"] {
- display: table;
- /* display: block; */
- text-align: left;
- }
-
- table {
- margin-left: 0%;
- display: block;
- /* display: table; */
- width: 100%;
- }
- tr {
- display: block;
- /* display: table-row; */
- }
- th, td {
- display: table-cell;
- /* display: inline; */
- vertical-align: top;
- }
- p.left, th.left, td.left {
- text-align: left;
- }
- p.small_left, th.small_left, td.small_left {
- text-align: left;
- font-size: 80%;
- }
- p.right, th.right, td.right {
- text-align: right;
- }
-WOK
- end
- def xml_sax #stylesheet for xml sax
- xhtml
- end
- def xml_dom #sylesheet for xml dom, work on, starts from copy of css_xhtml
-<<WOK
-/* SiSU css dom.xml default style */
- document {
- display: block;
- margin-left: 0mm;
- margin-right: 0mm;
- }
- head {
- display: block;
- margin-bottom: 20px;
- background-color: #dddddd;
- }
- header {
- display: block;
- }
- meta {
- display: inline;
- line-height: 1;
- font-size: 10px;
- color: #990000;
- margin-right: 2mm;
- margin-top: 0px;
- margin-bottom: 0px;
-
- }
- md {
- display: inline;
- line-height: 1;
- font-size: 10px;
- color: #000099;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- source_control {
- display: block;
- }
- dc {
- display: block;
- font-family: #{fonts};
- color: blue;
- background-color: #dddddd;
- font-weight: normal;
- text-align: justify;
- font-size: xx-small;
- line-height: 120%;
- margin-left: 5%;
- margin-right: 5mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- sc {
- display: inline;
- color: green;
- }
- keywords,copyright {
- display: block;
- font-family: #{fonts};
- color: red;
- background-color: #dddddd;
- font-weight: normal;
- text-align: justify;
- font-size: xx-small;
- line-height: 120%;
- margin-left: 5%;
- margin-right: 5mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- body {
- color: black;
- background: #ffffff;
- }
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- /* background-color: #e3ecef; */
- }
- a:hover {
- color: #000000;
- text-decoration: underline;
- background-color: #fff3b6;
- }
- a:hover IMG {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- object {
- display: block;
- margin-left: 2mm;
- margin-right: 2mm;
- margin-top: 4px;
- margin-bottom: 8px;
- }
- heading {
- font-weight: bold;
- }
- contents {
- font-weight: normal;
- }
- text {
- display: block;
- font-family: #{fonts};
- text-align: justify;
- font-size: 100%;
- line-height: 150%;
- margin-left: 5%;
- margin-right: 5%;
- margin-top: 2px;
- margin-bottom: 0px;
- }
- text[class|="norm"] {
- font-weight: normal;
- }
- text[class|="h1"] {
- font-size: 120%;
- font-weight: bold;
- text-align: left;
- line-height: 120%;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- text[class|="h2"] {
- font-weight: bold;
- font-size: 110%;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- text[class|="h3"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="h4"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="h5"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="h6"] {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- text[class|="indent0"] {
- padding-left: 10%;
- }
- text[class|="indent1"] {
- padding-left: 15%;
- }
- text[class|="indent2"] {
- padding-left: 20%;
- }
- text[class|="indent3"] {
- padding-left: 25%;
- }
- text[class|="indent4"] {
- padding-left: 30%;
- }
- text[class|="indent5"] {
- padding-left: 35%;
- }
- text[class|="indent6"] {
- padding-left: 40%;
- }
- text[class|="indent7"] {
- padding-left: 45%;
- }
- text[class|="indent8"] {
- padding-left: 50%;
- }
- text[class|="indent9"] {
- padding-left: 55%;
- }
-
- text[class|="hang0_indent0"] {
- padding-left: 10%;
- text-indent: 0%;
- }
- text[class|="hang0_indent1"] {
- padding-left: 15%;
- text-indent: -5%;
- }
- text[class|="hang0_indent2"] {
- padding-left: 20%;
- text-indent: -10%;
- }
- text[class|="hang0_indent3"] {
- padding-left: 25%;
- text-indent: -15%;
- }
- text[class|="hang0_indent4"] {
- padding-left: 30%;
- text-indent: -20%;
- }
- text[class|="hang0_indent5"] {
- padding-left: 35%;
- text-indent: -25%;
- }
- text[class|="hang0_indent6"] {
- padding-left: 40%;
- text-indent: -30%;
- }
- text[class|="hang0_indent7"] {
- padding-left: 45%;
- text-indent: -35%;
- }
- text[class|="hang0_indent8"] {
- padding-left: 50%;
- text-indent: -40%;
- }
- text[class|="hang0_indent9"] {
- padding-left: 55%;
- text-indent: -45%;
- }
-
- text[class|="hang1_indent0"] {
- padding-left: 10%;
- text-indent: 5%;
- }
- text[class|="hang1_indent1"] {
- padding-left: 15%;
- text-indent: 0%;
- }
- text[class|="hang1_indent2"] {
- padding-left: 20%;
- text-indent: -5%;
- }
- text[class|="hang1_indent3"] {
- padding-left: 25%;
- text-indent: -10%;
- }
- text[class|="hang1_indent4"] {
- padding-left: 30%;
- text-indent: -15%;
- }
- text[class|="hang1_indent5"] {
- padding-left: 35%;
- text-indent: -20%;
- }
- text[class|="hang1_indent6"] {
- padding-left: 40%;
- text-indent: -25%;
- }
- text[class|="hang1_indent7"] {
- padding-left: 45%;
- text-indent: -30%;
- }
- text[class|="hang1_indent8"] {
- padding-left: 50%;
- text-indent: -35%;
- }
- text[class|="hang1_indent9"] {
- padding-left: 55%;
- text-indent: -40%;
- }
-
- text[class|="hang2_indent0"] {
- padding-left: 10%;
- text-indent: 10%;
- }
- text[class|="hang2_indent1"] {
- padding-left: 15%;
- text-indent: 5%;
- }
- text[class|="hang2_indent2"] {
- padding-left: 20%;
- text-indent: 0%;
- }
- text[class|="hang2_indent3"] {
- padding-left: 25%;
- text-indent: -5%;
- }
- text[class|="hang2_indent4"] {
- padding-left: 30%;
- text-indent: -10%;
- }
- text[class|="hang2_indent5"] {
- padding-left: 35%;
- text-indent: -15%;
- }
- text[class|="hang2_indent6"] {
- padding-left: 40%;
- text-indent: -20%;
- }
- text[class|="hang2_indent7"] {
- padding-left: 45%;
- text-indent: -25%;
- }
- text[class|="hang2_indent8"] {
- padding-left: 50%;
- text-indent: -30%;
- }
- text[class|="hang2_indent9"] {
- padding-left: 55%;
- text-indent: -35%;
- }
-
- text[class|="hang3_indent0"] {
- padding-left: 10%;
- text-indent: 15%;
- }
- text[class|="hang3_indent1"] {
- padding-left: 15%;
- text-indent: 10%;
- }
- text[class|="hang3_indent2"] {
- padding-left: 20%;
- text-indent: 5%;
- }
- text[class|="hang3_indent3"] {
- padding-left: 25%;
- text-indent: 0%;
- }
- text[class|="hang3_indent4"] {
- padding-left: 30%;
- text-indent: -5%;
- }
- text[class|="hang3_indent5"] {
- padding-left: 35%;
- text-indent: -10%;
- }
- text[class|="hang3_indent6"] {
- padding-left: 40%;
- text-indent: -15%;
- }
- text[class|="hang3_indent7"] {
- padding-left: 45%;
- text-indent: -20%;
- }
- text[class|="hang3_indent8"] {
- padding-left: 50%;
- text-indent: -25%;
- }
- text[class|="hang3_indent9"] {
- padding-left: 55%;
- text-indent: -30%;
- }
-
- text[class|="hang4_indent0"] {
- padding-left: 10%;
- text-indent: 20%;
- }
- text[class|="hang4_indent1"] {
- padding-left: 15%;
- text-indent: 15%;
- }
- text[class|="hang4_indent2"] {
- padding-left: 20%;
- text-indent: 10%;
- }
- text[class|="hang4_indent3"] {
- padding-left: 25%;
- text-indent: 5%;
- }
- text[class|="hang4_indent4"] {
- padding-left: 30%;
- text-indent: 0%;
- }
- text[class|="hang4_indent5"] {
- padding-left: 35%;
- text-indent: -5%;
- }
- text[class|="hang4_indent6"] {
- padding-left: 40%;
- text-indent: -10%;
- }
- text[class|="hang4_indent7"] {
- padding-left: 45%;
- text-indent: -15%;
- }
- text[class|="hang4_indent8"] {
- padding-left: 50%;
- text-indent: -20%;
- }
- text[class|="hang4_indent9"] {
- padding-left: 55%;
- text-indent: -25%;
- }
-
- text[class|="hang5_indent0"] {
- padding-left: 10%;
- text-indent: 25%;
- }
- text[class|="hang5_indent1"] {
- padding-left: 15%;
- text-indent: 20%;
- }
- text[class|="hang5_indent2"] {
- padding-left: 20%;
- text-indent: 15%;
- }
- text[class|="hang5_indent3"] {
- padding-left: 25%;
- text-indent: 10%;
- }
- text[class|="hang5_indent4"] {
- padding-left: 30%;
- text-indent: 5%;
- }
- text[class|="hang5_indent5"] {
- padding-left: 35%;
- text-indent: 0%;
- }
- text[class|="hang5_indent6"] {
- padding-left: 40%;
- text-indent: -5%;
- }
- text[class|="hang5_indent7"] {
- padding-left: 45%;
- text-indent: -10%;
- }
- text[class|="hang5_indent8"] {
- padding-left: 50%;
- text-indent: -15%;
- }
- text[class|="hang5_indent9"] {
- padding-left: 55%;
- text-indent: -20%;
- }
-
- text[class|="hang6_indent0"] {
- padding-left: 10%;
- text-indent: 30%;
- }
- text[class|="hang6_indent1"] {
- padding-left: 15%;
- text-indent: 25%;
- }
- text[class|="hang6_indent2"] {
- padding-left: 20%;
- text-indent: 20%;
- }
- text[class|="hang6_indent3"] {
- padding-left: 25%;
- text-indent: 15%;
- }
- text[class|="hang6_indent4"] {
- padding-left: 30%;
- text-indent: 10%;
- }
- text[class|="hang6_indent5"] {
- padding-left: 35%;
- text-indent: 5%;
- }
- text[class|="hang6_indent6"] {
- padding-left: 40%;
- text-indent: 0%;
- }
- text[class|="hang6_indent7"] {
- padding-left: 45%;
- text-indent: -5%;
- }
- text[class|="hang6_indent8"] {
- padding-left: 50%;
- text-indent: -10%;
- }
- text[class|="hang6_indent9"] {
- padding-left: 55%;
- text-indent: -15%;
- }
-
- text[class|="hang7_indent0"] {
- padding-left: 10%;
- text-indent: 35%;
- }
- text[class|="hang7_indent1"] {
- padding-left: 15%;
- text-indent: 30%;
- }
- text[class|="hang7_indent2"] {
- padding-left: 20%;
- text-indent: 25%;
- }
- text[class|="hang7_indent3"] {
- padding-left: 25%;
- text-indent: 20%;
- }
- text[class|="hang7_indent4"] {
- padding-left: 30%;
- text-indent: 15%;
- }
- text[class|="hang7_indent5"] {
- padding-left: 35%;
- text-indent: 10%;
- }
- text[class|="hang7_indent6"] {
- padding-left: 40%;
- text-indent: 5%;
- }
- text[class|="hang7_indent7"] {
- padding-left: 45%;
- text-indent: 0%;
- }
- text[class|="hang7_indent8"] {
- padding-left: 50%;
- text-indent: -5%;
- }
- text[class|="hang7_indent9"] {
- padding-left: 55%;
- text-indent: -10%;
- }
-
- text[class|="hang8_indent0"] {
- padding-left: 10%;
- text-indent: 40%;
- }
- text[class|="hang8_indent1"] {
- padding-left: 15%;
- text-indent: 35%;
- }
- text[class|="hang8_indent2"] {
- padding-left: 20%;
- text-indent: 30%;
- }
- text[class|="hang8_indent3"] {
- padding-left: 25%;
- text-indent: 25%;
- }
- text[class|="hang8_indent4"] {
- padding-left: 30%;
- text-indent: 20%;
- }
- text[class|="hang8_indent5"] {
- padding-left: 35%;
- text-indent: 15%;
- }
- text[class|="hang8_indent6"] {
- padding-left: 40%;
- text-indent: 10%;
- }
- text[class|="hang8_indent7"] {
- padding-left: 45%;
- text-indent: 5%;
- }
- text[class|="hang8_indent8"] {
- padding-left: 50%;
- text-indent: 0%;
- }
- text[class|="hang8_indent9"] {
- padding-left: 55%;
- text-indent: -5%;
- }
-
- text[class|="hang9_indent0"] {
- padding-left: 10%;
- text-indent: 45%;
- }
- text[class|="hang9_indent1"] {
- padding-left: 15%;
- text-indent: 40%;
- }
- text[class|="hang9_indent2"] {
- padding-left: 20%;
- text-indent: 35%;
- }
- text[class|="hang9_indent3"] {
- padding-left: 25%;
- text-indent: 30%;
- }
- text[class|="hang9_indent4"] {
- padding-left: 30%;
- text-indent: 25%;
- }
- text[class|="hang9_indent5"] {
- padding-left: 35%;
- text-indent: 20%;
- }
- text[class|="hang9_indent6"] {
- padding-left: 40%;
- text-indent: 15%;
- }
- text[class|="hang9_indent7"] {
- padding-left: 45%;
- text-indent: 10%;
- }
- text[class|="hang9_indent8"] {
- padding-left: 50%;
- text-indent: 5%;
- }
- text[class|="hang9_indent9"] {
- padding-left: 55%;
- text-indent: 0%;
- }
-
- text[class|="indent_bullet"] {
- text-indent: 0%;
- }
- text[class|="indent_bullet0"] {
- text-indent: 0%;
- }
- text[class|="indent_bullet1"] {
- padding-left: 10%;
- }
- text[class|="indent_bullet2"] {
- padding-left: 15%;
- }
- text[class|="indent_bullet3"] {
- padding-left: 20%;
- }
- text[class|="indent_bullet4"] {
- padding-left: 25%;
- }
- text[class|="indent_bullet5"] {
- padding-left: 30%;
- }
- text[class|="indent_bullet6"] {
- padding-left: 35%;
- }
- text[class|="indent_bullet7"] {
- padding-left: 40%;
- }
- text[class|="indent_bullet8"] {
- padding-left: 45%;
- }
- text[class|="indent_bullet9"] {
- padding-left: 50%;
- }
- text[class|="verse"], text[class|="block"], text[class|="group"], text[class|="code"] {
- text-align: left;
- }
- table {
- margin-left: 5%;
- display: block;
- }
- tr {
- display: block;
- }
- th, td {
- display: inline;
- }
- nametag {
- display: none;
- }
- number {
- padding-right: 4px;
- }
- ocn {
- font-weight: normal;
- display: block;
- text-align: right;
- vertical-align: super;
- color: #990000;
- font-size: xx-small;
- margin-right: 0mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- endnote {
- display: block;
- font-size: small;
- font-family: #{fonts};
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 10%;
- margin-right: 5%;
- margin-top: 4px;
- margin-bottom: 0px;
- }
- endnote_indent {
- display: block;
- font-size: small;
- font-family: #{fonts};
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 15%;
- margin-right: 5%;
- margin-top: 4px;
- margin-bottom: 0px;
- }
- en {
- font-size: xx-small;
- vertical-align: super;
- }
- i { font-style: italic; }
- b { font-style: bold; }
- u { text-decoration: underline; }
- br { display: block; }
-WOK
- end
- def docbook_xml #stylesheet for docbook
-<<WOK
-/* SiSU css docbook.xml default style */
- book {
- display: block;
- margin-left: 0mm;
- margin-right: 0mm;
- }
- bookinfo {
- display: block;
- margin-bottom: 20px;
- background-color: #dddddd;
- }
- source_control {
- display: block;
- }
- dc,sc {
- display: block;
- font-family: #{fonts};
- color: blue;
- background-color: #dddddd;
- font-weight: normal;
- text-align: justify;
- font-size: xx-small;
- line-height: 120%;
- margin-left: 5%;
- margin-right: 5mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- sc {
- color: green;
- }
- keywords,copyright {
- display: block;
- font-family: #{fonts};
- color: red;
- background-color: #dddddd;
- font-weight: normal;
- text-align: justify;
- font-size: xx-small;
- line-height: 120%;
- margin-left: 5%;
- margin-right: 5mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- body {
- color: black;
- background: #ffffff;
- }
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- /* background-color: #e3ecef; */
- }
- a:hover {
- color: #000000;
- text-decoration: underline;
- background-color: #fff3b6;
- }
- a:hover IMG {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- object {
- display: block;
- margin-left: 2mm;
- margin-right: 2mm;
- margin-top: 4px;
- margin-bottom: 8px;
- }
- part {
- display: block;
- /* font-weight: bold; */
- }
- contents {
- font-weight: normal;
- }
- para {
- display: block;
- font-family: #{fonts};
- /* font-weight: normal; */
- text-align: justify;
- font-size: 100%;
- line-height: 150%;
- margin-left: 5%;
- margin-right: 5%;
- margin-top: 2px;
- margin-bottom: 0px;
- }
- para.verse, para.block, para.group, para.code {
- text-align: left;
- }
- para.norm {
- font-family: #{fonts};
- font-weight: normal;
- }
- para.h1, title {
- display: block;
- font-family: #{fonts};
- font-size: 120%;
- font-weight: bold;
- text-align: left;
- line-height: 120%;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- para.h2 {
- font-weight: bold;
- font-size: 110%;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- para.h3 {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- para.h4 {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- para.h5 {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- para.h6 {
- font-size: 110%;
- font-weight: bold;
- text-align: left;
- }
- table {
- margin-left: 5%;
- display: block;
- }
- tr {
- display: block;
- }
- th, td {
- display: inline;
- }
- nametag {
- display: none;
- }
- number {
- padding-right: 4px;
- }
- ocn {
- font-weight: normal;
- display: block;
- text-align: right;
- vertical-align: super;
- color: #990000;
- font-size: xx-small;
- margin-right: 0mm;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- endnote {
- display: block;
- font-size: small;
- font-family: #{fonts};
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 10%;
- margin-right: 5%;
- margin-top: 4px;
- margin-bottom: 0px;
- }
- endnote_indent {
- display: block;
- font-size: small;
- font-family: #{fonts};
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 15%;
- margin-right: 5%;
- margin-top: 4px;
- margin-bottom: 0px;
- }
- en {
- font-size: xx-small;
- vertical-align: super;
- }
- i { font-style: italic; }
- b { font-style: bold; }
- u { text-decoration: underline; }
- br { display: block; }
-WOK
- end
- def css_xhtml_p #stylesheet for ...
-<<WOK
- body {
- color: black;
- background: #ffffff;
- }
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- /* background-color: #e3ecef; */
- }
- a:hover {
- color: #000000;
- text-decoration: underline;
- background-color: #fff3b6;
- }
- a:hover IMG {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- object {
- display: block;
- margin-top: 3px;
- margin-bottom: 3px;
- margin-right: 5mm;
- }
- p {
- display: block;
- font-family: #{fonts};
- font-size: 100%;
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 10mm;
- margin-top: 3px;
- margin-bottom: 0px;
- margin-right: 5mm
- }
- p.norm { }
- p.endnote {
- font-size: 100%;
- margin-left: 20%;
- text-indent: 5%
- }
- p.endnote_indent {
- font-size: 100%;
- margin-left: 25%;
- text-indent: 5%
- }
- p.h1 {
- font-family: #{fonts};
- font-weight: bold;
- line-height: 120%;
- margin-left: 10mm;
- margin-right: 10mm;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- p.h2 {
- font-weight: bold;
- font-size: 110%;
- margin-left: 10mm;
- margin-right: 15mm;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- p.h3 {
- font-size: 150%;
- font-weight: bold;
- text-align: left;
- }
- p.h4 {
- font-size: 150%;
- font-weight: bold;
- text-align: left;
- }
- p.h5 {
- font-size: 150%;
- font-weight: bold;
- text-align: left;
- }
- p.h6 {
- font-size: 150%;
- font-weight: bold;
- text-align: left;
- }
- ocn {
- display: block;
- text-align: right;
- vertical-align: super;
- color: #990000;
- font-size: xx-small;
- margin-top: 0px;
- margin-bottom: 6px;
- }
- en {
- font-size: xx-small;
- vertical-align: super;
- }
- i { font-style: italic; }
- b { font-style: bold; }
- u { text-decoration: underline; }
- br { display: block; }
-WOK
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal.rb b/lib/sisu/v3dv/dal.rb
deleted file mode 100644
index bd8d32dd..00000000
--- a/lib/sisu/v3dv/dal.rb
+++ /dev/null
@@ -1,506 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: preprocessing, (document abstraction), data abstraction used
- in subsequent processing
-
-=end
-module SiSU_DAL
- 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_substitutions_and_insertions' # dal_substitutions_and_insertions.rb
- require_relative 'dal_expand_insertions' # dal_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
- def initialize
- @@flag_vocab=0
- @@line_mode=''
- end
- end
- class Source <Instantiate
- @@dal_array=[]
- @@idx_arr={ sst: [], tex: [], html: [], xhtml: [] }
- @@map_arr={ nametags: [], ocn_htmlseg: [] }
- @@fns=nil
- def initialize(opt,fnx=nil)
- @opt,@fnx=opt,fnx
- @@fns||@opt.fns
- @make_fns=if @fnx and @fnx =~/\.ss[tmi]$/
- SiSU_Env::InfoFile.new(@fnx)
- else
- SiSU_Env::InfoFile.new(@opt.fns)
- end
- @fnm=@make_fns.marshal.dal_metadata
- @fnc=@make_fns.marshal.dal_content
- @idx_sst=@make_fns.marshal.dal_idx_sst_rel_html_seg
- @idx_tex=@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
- SiSU_Env::CreateSystemLink.new.images
- @env=SiSU_Env::InfoEnv.new
- end
- def read #creates dal
- begin
- dal=[]
- @@dal_array=[]
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- create_dal
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@@fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- def get #reads dal, unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns \
- or @@fns==@fnx
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @@dal_array=[]
- end
- dal=(@@dal_array.empty?) ? read_fnc : @@dal_array.dup
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- def get_idx_sst #reads dal idx.sst, #unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns \
- or @@fns==@fnx
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @@idx_arr[:sst]=[]
- end
- dal=(@@idx_arr[:sst].empty?) ? read_idx_sst : @@idx_arr[:sst].dup #check
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- def get_idx_tex #reads dal idx.tex, #unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns \
- or @@fns==@fnx
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @@idx_arr[:tex]=[]
- end
- dal=(@@idx_arr[:tex].empty?) ? read_idx_tex : @@idx_arr[:tex].dup #check
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- def get_idx_html #reads dal idx.html, #unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns \
- or @@fns==@fnx
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @@idx_arr[:html]=[]
- end
- dal=(@@idx_arr[:html].empty?) ? read_idx_html : @@idx_arr[:html].dup
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- def get_idx_xhtml #reads dal idx.xhtml, #unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns \
- or @@fns==@fnx
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @@idx_arr[:xthml]=[]
- end
- dal=(@@idx_arr[:xhtml].empty?) ? read_idx_xhtml : @@idx_arr[:xhtml].dup
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- def get_map_nametags #reads dal map.nametags, #unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns \
- or @@fns==@fnx
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @@map_arr[:nametags]=[]
- end
- dal=(@@map_arr[:nametags].empty?) ? read_map_nametags : @@map_arr[:nametags].dup
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- def get_map_ocn_htmlseg #reads dal map.ocn_htmlseg, #unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns \
- or @@fns==@fnx
- @@fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @@map_arr[:ocn_htmlseg]=[]
- end
- dal=(@@map_arr[:ocn_htmlseg].empty?) ? read_map_ocn_htmlseg : @@map_arr[:ocn_htmlseg].dup
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- SiSU_DAL::Instantiate.new
- end
- end
- protected
- def create_dal
- dal_array=[]
- unless @opt.cmd =~/q/
- tell=(@opt.cmd=~/[vVM]/) \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Document Abstraction')
- : SiSU_Screen::Ansi.new(@opt.cmd,'Document Abstraction',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}")
- tell.green_title_hi
- end
- fn=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- file_array=@env.read_source_file(fn)
- file_array.each do |l|
- if l =~/\r\n/; l.gsub!(/\r\n/,"\n")
- end
- end
- meta=file_array.dup
- meta=meta.join.split("\n\n") #check whether can be eliminated, some of these are large objects to have twice
- @md=SiSU_Param::Parameters::Instructions.new(meta,@opt).extract
- meta=nil
- dal=SiSU_DAL::Make.new(fn,@md,file_array).song
- if @opt.cmd =~/[vM]/
- cf=SiSU_Env::CreateFile.new(fn)
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"~meta/#{@opt.fns}.meta").output if @opt.cmd =~/v/i
- SiSU_Screen::Ansi.new(@opt.cmd,"dal -> #{cf.meta}").txt_grey if @opt.cmd =~/M/
- end
- dal.each {|s| dal_array << s}
- dal_array
- end
- def read_fnm
- dal=[]
- dal=if FileTest.file?(@fnm)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@fnm){ |f| dal=Marshal.load(f)})
- : (File.open(@fnm,'r:utf-8'){ |f| dal=Marshal.load(f)})
- else SiSU_DAL::Source.new(@opt).create_dal
- end
- end
- def read_fnc
- dal=[]
- dal=if FileTest.file?(@fnc)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@fnc){ |f| dal=Marshal.load(f)})
- : (File.open(@fnc,'r:utf-8'){ |f| dal=Marshal.load(f)})
- else SiSU_DAL::Source.new(@opt).create_dal
- end
- end
- def read_idx_sst
- m=[]
- m=if FileTest.file?(@idx_sst)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@idx_sst){ |f| m=Marshal.load(f)})
- : (File.open(@idx_sst,'r:utf-8'){ |f| m=Marshal.load(f)})
- else nil
- end
- end
- def read_idx_tex
- m=[]
- m=if FileTest.file?(@idx_tex)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@idx_tex){ |f| m=Marshal.load(f)})
- : (File.open(@idx_tex,'r:utf-8'){ |f| m=Marshal.load(f)})
- else nil
- end
- end
- def read_idx_html
- m=[]
- m=if FileTest.file?(@idx_html)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@idx_html){ |f| m=Marshal.load(f)})
- : (File.open(@idx_html,'r:utf-8'){ |f| m=Marshal.load(f)})
- else nil
- end
- end
- def read_idx_xhtml
- m=[]
- m=if FileTest.file?(@idx_xhtml)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@idx_xhtml){ |f| m=Marshal.load(f)})
- : (File.open(@idx_xhtml,'r:utf-8'){ |f| m=Marshal.load(f)})
- else nil
- end
- end
- def read_map_nametags
- m=[]
- m=if FileTest.file?(@map_nametags)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@map_nametags){ |f| m=Marshal.load(f)})
- : (File.open(@map_nametags,'r:utf-8'){ |f| m=Marshal.load(f)})
- else nil
- end
- end
- def read_map_ocn_htmlseg
- m=[]
- m=if FileTest.file?(@map_ocn_htmlseg)
- (RUBY_VERSION < '1.9') \
- ? (File.open(@map_ocn_htmlseg){ |f| m=Marshal.load(f)})
- : (File.open(@map_ocn_htmlseg,'r:utf-8'){ |f| m=Marshal.load(f)})
- else nil
- end
- end
- end
- class Output
- def initialize(fn,md,data)
- @fn,@md,@data=fn,md,data
- @cf=SiSU_Env::CreateFile.new(@fn)
- @make=SiSU_Env::InfoFile.new(@fn)
- @dir=SiSU_Env::InfoEnv.new(@fn)
- end
- def screen_dump(o)
- if defined? o.of
- print %{OF: #{o.of}; }
- end
- if defined? o.is
- print %{IS: #{o.is.to_s}; }
- end
- if defined? o.ocn
- print %{OCN: #{o.ocn}; }
- end
- if defined? o.node
- print %{NODE: #{o.node}; }
- end
- if defined? o.parent
- print %{Parent: #{o.parent}; }
- end
- if defined? o.obj and not o.obj.empty?
- puts %{\n#{o.obj}; }
- else "\n"
- end
- end
- def screen_print(t_o)
- if defined? t_o
- print ' ' + t_o.to_s
- end
- end
- def screen_output(data)
- data.each do |o|
- print o.class
- screen_print(o.ocn)
- screen_print(o.obj)
- puts "\n"
- end
- end
- def hard_output
- if @md.opt.cmd =~/M/
- filename_meta=@cf.metaverse.file_meta
- @data.each {|o| filename_meta.puts o.inspect.sub(/:0x[0-9a-f]{8}\s/,': ')} #to make diffing easier
- filename_txt=@cf.metaverse.file_txt
- @data.each do |o|
- if defined? o.ocn
- filename_txt.puts case o.is
- when :heading
- "[#{o.is.to_s} #{o.lv}~#{o.name} [#{o.ocn}]] #{o.obj}"
- else "[#{o.is.to_s} [#{o.ocn}]] #{o.obj}"
- end
- else
- filename_txt.puts case o.is
- when :meta
- "[m~#{o.tag}] #{o.obj}"
- else "[#{o.is.to_s}] #{o.obj}"
- end
- end
- end
- filename_debug=@cf.file_debug
- @data.each do |o|
- if defined? o.ocn
- case o.is
- when :heading
- filename_debug.puts "#{o.is.to_s} #{o.lv}~#{o.name} odv=#{o.odv} osp=#{o.osp} [#{o.ocn}] -->\n\t#{o.obj}"
- end
- end
- end
- else
- hard="#{@dir.processing_path.dal}/#{@md.fns}.meta"
- File.unlink(hard) if FileTest.file?(hard)
- hard="#{@dir.processing_path.dal}/#{@md.fns}.txt"
- File.unlink(hard) if FileTest.file?(hard)
- hard="#{@dir.processing_path.dal}/#{@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.class==Array
- end
- def make_marshal_metadata
- marshal_dal=@make.marshal.dal_metadata
- File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Array
- end
- def idx_html_hard_output
- if @md.book_idx \
- and @md.opt.cmd =~/M/
- filename_meta=@cf.file_meta_idx_html
- unless @data.nil? #REMOVE earliest possible
- @data.each {|s| p s.inspect + "\n" unless s.class==String}
- @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"
- 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.class==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.class==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.class==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.class==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.class==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.class==Hash
- end
- end
- class Make
- def initialize(fn,md,data)
- @fn,@md,@data=fn,md,data
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- end
- def reset
- @@flag_vocab=0
- @@line_mode=''
- end
- def song
- reset
- data=@data
- data=data.join.split("\n\n")
- data=SiSU_DAL_Insertions::Insertions.new(@md,data).expand_insertions? # dal_expand_insertions.rb
- data=SiSU_DAL_SubstituteAndInsert::SI.new(@md,data).substitutions_and_insertions? # dal_substitutions_and_insertions.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
- outputdata=data
- if @md.opt.cmd =~/[mM]/
- 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
- end
- reset
- outputdata
- end
- protected
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_character_check.rb b/lib/sisu/v3dv/dal_character_check.rb
deleted file mode 100644
index e5ab7578..00000000
--- a/lib/sisu/v3dv/dal_character_check.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 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_CharacterCheck
- class Check
- def initialize(data)
- @data=data
- @comment='%'
- @endnote_array=[]
- end
- def character_check_and_oldstyle_endnote_array
- data=@data
- @tuned_file,@endnote_array=[],[]
- endnote_no=1
- data.each do |dob|
- unless dob.is ==:table
- dob.obj=dob.obj.strip.
- gsub(/^[{~}]\s*$/,'').
- gsub(/~#\s*/,"#{Mx[:pa_non_object_no_heading]}").
- gsub(/-#\s*/,"#{Mx[:pa_non_object_dummy_heading]}").
- gsub(/(#{Mx[:en_a_o]})\s*\s+/,'\1 ').
- gsub(/(~\{\s*)\s+/,'\1 ').
- gsub(/ \/\//,"#{Mx[:br_line]}").
- gsub(/<br>/,"#{Mx[:br_line]}"). #needed by xml, xhtml etc.
- gsub(/\t/,' ').
- gsub(/\342\200\231/u,"'"). #if dob =~/’/ #Avoid #&lsquo; &rsquo; #&ldquo; &rdquo;
- gsub(/�/u,' '). #watch, replace with char code
- gsub(/·/u,'*').
- gsub(/\\copy(?:right)?\b/,'&#169;').
- gsub(/\\trademark\b|\\tm\b/,'&#174;')
- dob.obj=dob.obj + "\n"
- unless dob.is ==:code
- case dob.obj
- when /\^~/ #% Note must do this first (earlier loop) and then enter gathered data into ~^\d+
- sub_dob=dob.obj.dup
- @endnote_array << sub_dob.gsub(/\n/,'').gsub(/\^~\s+(.+)\s*/,%{#{Mx[:en_a_o]}#{endnote_no} \\1 #{Mx[:en_a_c]}}).strip
- endnote_no+=1
- dob=nil if dob.obj =~/\^~ .+/ #watch, removes 'binary' endnote now in endnote array for later insertion
- end
- end
- end
- @tuned_file << dob unless dob.nil?
- end
- @tuned_file=@tuned_file.flatten.compact
- [@tuned_file,@endnote_array]
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_doc_objects.rb b/lib/sisu/v3dv/dal_doc_objects.rb
deleted file mode 100644
index e413993a..00000000
--- a/lib/sisu/v3dv/dal_doc_objects.rb
+++ /dev/null
@@ -1,446 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: document abstraction
-
-=end
-module SiSU_DAL_DocumentStructure
- class Extract
- def extract(h,o)
- obj=h ? h : o
- end
- end
- class ObjectMetadata
- attr_accessor :is,:of,:tags,:obj,:digest
- def initialize
- @tags={}
- @is=@tmp=@digest=nil
- @of=:meta
- end
- def metadata(tags)
- of= @of #String, classification - group
- is= :meta #String, classification - specific type
- tags= tags || ((defined? o.tags) ? o.tags : {}) #String, metadata type/tag
- obj= nil
- @of,@is,@tags,@obj=of,is,tags,obj
- self
- end
- end
- class ObjectMeta
- attr_accessor :obj,:is,:of,:tag,:digest,:tmp
- def initialize
- @is=@obj=@tag=@digest=@digest=@tmp=nil
- @of=:meta
- end
- def metadata(h,o=nil)
- of= @of #String, classification - group
- is= :meta #String, classification - specific type
- tag= h[:tag] || ((defined? o.tag) ? o.tag : nil) #String, metadata type/tag
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- @of,@is,@tag,@obj,@digest,@tmp=of,is,tag,obj,digest,tmp
- self
- end
- end
- class ObjectHeading
- attr_accessor :obj,:is,:tags,:of,:lv,:ln,:toc_,:name,:idx,:ocn,:odv,:osp,:node,:parent,:ocn_,:note_,:autonum_,:digest,:tmp
- def initialize
- @of=:para
- @is=@obj=@lv=@ln=@toc_=@name=@idx=@size=@ocn=@odv=@osp=@node=@parent=@ocn_=@note_=@autonum_=@digest=@tmp=nil
- @tags=[]
- end
- def heading_ln(lv)
- ln=case lv
- when /A/; 1
- when /B/; 2
- when /C/; 3
- when /1/; 4
- when /2/; 5
- when /3/; 6
- when /4/; 7
- when /5/; 8
- when /6/; 9
- end
- end
- def heading_lv(ln)
- lv=case ln.to_s
- when /1/; 'A'
- when /2/; 'B'
- when /3/; 'C'
- when /4/; '1'
- when /5/; '2'
- when /6/; '3'
- when /7/; '4'
- when /8/; '5'
- when /9/; '6'
- end
- end
- def heading(h,o=nil)
- if not h[:ln] and (h[:lv] and h[:lv]=~/[1-6A-C]/)
- h[:ln]=heading_ln(h[:lv])
- elsif not h[:lv] and (h[:ln] and h[:ln].to_s=~/[1-9]/)
- h[:lv]=heading_lv(h[:ln])
- end
- of= @of #String, classification - group
- is= :heading #String, classification - specific type
- name= h[:name] || ((defined? o.name) ? o.name : nil) #String, named object?
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- node= h[:node] || ((defined? o.node) ? o.node : nil) #[Node relationship doc structure info]
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- lv= h[:lv] || ((defined? o.lv) ? o.lv : nil) #Alpha-numeric, document structure as used in markup, A-C then 1-6
- ln= h[:ln] || ((defined? o.ln) ? o.ln : nil) #Integer, document structure level, for convenience in processing 1-9
- toc_= h[:toc_] || ((defined? o.toc_) ? o.toc_ : false) #Bool, do not include in toc, (relevant to headings)
- ocn_=if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- autonum_= if h[:autonum_].nil?; ((defined? o.autonum_) ? o.autonum_ : true) #Bool? auto-numbering if requested default on, false suppresses
- else h[:autonum_]
- end
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@lv,@ln,@name,@tags,@obj,@idx,@ocn,@odv,@osp,@node,@parent,@toc_,@ocn_,@note_,@autonum_,@digest,@tmp=of,is,lv,ln,name,tags,obj,idx,ocn,odv,osp,node,parent,toc_,ocn_,note_,autonum_,digest,tmp
- self
- end
- def heading_insert(h,o=nil)
- heading(h,o=nil)
- @is= :heading_insert #String, classification - specific type
- self
- end
- end
- class ObjectPara
- attr_accessor :obj,:is,:tags,:of,:name,:idx,:bullet_,:indent,:hang,:ocn,:odv,:osp,:parent,:note_,:image_,:ocn_,:digest,:tmp
- def initialize
- @of=:para
- @is=@obj=@name=@idx=@bullet_=@indent=@hang=@size=@ocn=@odv=@osp=@parent=@note_=@image_=@ocn_=@digest=@tmp=nil
- @tags=[]
- end
- def paragraph(h,o=nil)
- of= @of #String, classification - group
- is= :para #String, classification - specific type
- name= h[:name] || ((defined? o.name) ? o.name : nil) #String, named object?
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- indent= h[:indent].to_s || ((defined? o.indent) ? o.indent.to_s : nil) #Integer, indent level
- hang= h[:hang].to_s || ((defined? o.hang) ? o.hang.to_s : nil) #Integer, hanging indent level
- bullet_=h[:bullet_] || ((defined? o.bullet_) ? o.bullet_ : false) #Bool, bulleted?
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- image_= h[:image_] || ((defined? o.image_) ? o.image_ : false) #Bool, images? (processing optimization)
- ocn_=if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@name,@tags,@obj,@indent,@hang,@bullet_,@idx,@ocn,@odv,@osp,@parent,@image_,@note_,@ocn_,@digest,@tmp=of,is,name,tags,obj,indent,hang,bullet_,idx,ocn,odv,osp,parent,image_,note_,ocn_,digest,tmp
- self
- end
- def docinfo(h,o=nil)
- of= @of #String, classification - group
- is= :docinfo #String, classification - specific type
- name= h[:name] || ((defined? o.name) ? o.name : nil) #String, named object?
- tags= h[:tags] || ((defined? o.tags) ? o.tags : nil) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= nil #String, book index provided?
- ocn= nil #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- indent= nil #Integer, indent level
- hang= nil #Integer, indent level
- bullet_=false #Bool, bulleted?
- note_= false #Bool, endnotes/footnotes? (processing optimization)
- image_= h[:image_] || ((defined? o.image_) ? o.image_ : false) #Bool, images? (processing optimization)
- ocn_=if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@name,@tags,@obj,@indent,@hang,@bullet_,@idx,@ocn,@odv,@osp,@parent,@image_,@note_,@ocn_,@digest,@tmp=of,is,name,tags,obj,indent,hang,bullet_,idx,ocn,odv,osp,parent,image_,note_,ocn_,digest,tmp
- self
- end
- end
- class ObjectBlockTxt
- attr_accessor :obj,:is,:of,:tags,:idx,:ocn,:odv,:osp,:parent,:note_,:number_,:ocn_,:digest,:tmp
- def initialize
- @of=:block
- @is=@obj=@idx=@ocn=@odv=@osp=@parent=@note_=@number_=@ocn_=@digest=@tmp=nil
- @tags=[]
- end
- def code(h,o=nil)
- of= @of #String, classification - group #alt 'code'
- is= :code #String, classification - specific type
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- number_= h[:number_] || ((defined? o.number_) ? o.number_ : false) #Bool, numbered or not?
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- ocn_= if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@obj,@idx,@ocn,@odv,@osp,@parent,@number_,@note_,@ocn_,@digest,@tmp=of,is,tags,obj,idx,ocn,odv,osp,parent,number_,note_,ocn_,digest,tmp
- self
- end
- def block(h,o=nil)
- of= @of #String, classification - group
- is= :block #String, classification - specific type
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- ocn_= if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@obj,@idx,@ocn,@odv,@osp,@parent,@note_,@ocn_,@digest,@tmp=of,is,tags,obj,idx,ocn,odv,osp,parent,note_,ocn_,digest,tmp
- self
- end
- def group(h,o=nil)
- of= @of #String, classification - group
- is= :group #String, classification - specific type
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- ocn_= if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@obj,@idx,@ocn,@odv,@osp,@parent,@note_,@ocn_,@digest,@tmp=of,is,tags,obj,idx,ocn,odv,osp,parent,note_,ocn_,digest,tmp
- self
- end
- def alt(h,o=nil) #see block
- of= @of #String, classification - group
- is= :alt #String, classification - specific type
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- ocn_= if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@obj,@idx,@ocn,@odv,@osp,@parent,@note_,@ocn_,@digest,@tmp=of,is,tags,obj,idx,ocn,odv,osp,parent,note_,ocn_,digest,tmp
- self
- end
- def verse(h,o=nil) #part of poem decide how you deal with this
- of= @of #String, classification - group
- is= :verse #String, classification - specific type
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- ocn_= if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@obj,@idx,@ocn,@odv,@osp,@parent,@note_,@ocn_,@digest,@tmp=of,is,tags,obj,idx,ocn,odv,osp,parent,note_,ocn_,digest,tmp
- @h=nil
- self
- end
- end
- class ObjectTable
- attr_accessor :obj,:is,:of,:lv,:tags,:name,:idx,:indent,:hang,:size,:ocn,:number,:head_,:cols,:widths,:odv,:osp,:parent,:note_,:ocn_,:digest,:tmp
- def initialize
- @of=:block
- @is=@obj=@lv=@name=@idx=@indent=@hang=@size=@ocn,@number,@head_,@cols,@widths=@odv=@osp=@parent=@note_=@ocn_=@digest=@tmp=nil
- @tags=[]
- end
- def table(h,o=nil)
- of= @of #String, classification - group
- is= :table #String, classification - specific type
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- cols= h[:cols] || ((defined? o.cols) ? o.cols : nil)
- widths= h[:widths] || ((defined? o.widths) ? o.widths : nil)
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- head_= h[:head_] || ((defined? o.head_) ? o.head_ : false)
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- ocn_=if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@cols,@widths,@obj,@idx,@ocn,@odv,@osp,@parent,@head_,@note_,@ocn_,@digest,@tmp=of,is,tags,cols,widths,obj,idx,ocn,odv,osp,parent,head_,note_,ocn_,digest,tmp
- self
- end
- end
- class ObjectImage
- attr_accessor :obj,:is,:of,:lv,:idx,:size,:ocn,:parent,:note_,:ocn_,:digest,:tmp
- def initialize
- @of=:image
- @is=@obj=@lv=@idx=@size=@ocn=@parent=@note_=@ocn_=@tmp=@digest=nil
- @tags=[]
- end
- def image(h,o=nil) #not yet used, and what of a paragraph containing several images, consider
- of= @of #String, classification - group
- is= :image #String, classification - specific type
- tags= h[:tags] || ((defined? o.tags) ? o.tags : []) #Array, associated object tags, names if any
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- size= h[:size] || ((defined? o.size) ? o.size : nil)
- idx= h[:idx] || ((defined? o.idx) ? o.idx : nil) #String, book index provided?
- ocn= h[:ocn] || ((defined? o.ocn) ? o.ocn : nil) #Integer, sequential on substantive-content objects
- odv= h[:odv] || ((defined? o.odv) ? o.odv : nil)
- osp= h[:osp] || ((defined? o.osp) ? o.osp : nil)
- parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent]
- note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization)
- ocn_=if h[:ocn_].nil?; ((defined? o.ocn_) ? o.ocn_ : true) #Bool? no ocn, non-substantive content, do not include in toc #consider
- else h[:ocn_]
- end
- digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@obj,@size,@idx,@ocn,@odv,@osp,@parent,@note_,@ocn_,@digest,@tmp=of,is,tags,obj,size,idx,ocn,odv,osp,parent,note_,ocn_,digest,tmp
- self
- end
- end
- class ObjectStructure
- attr_accessor :obj,:tag,:node,:lv,:ln,:status,:is,:of,:tmp
- def initialize
- @of=:structure
- @is=@obj=@node=@lv=@ln=@status=@tmp=nil
- end
- def xml_dom(h,o=nil)
- of= @of #String, classification - group
- is= :xml_dom #String, classification - specific type
- obj= h[:obj] || ((defined? o.obj) ? o.obj : '') #String, text content
- lv= h[:lv] || ((defined? o.lv) ? o.lv : nil) #Alpha-numeric, document structure as used in markup, A-C then 1-6
- ln= h[:ln] || ((defined? o.ln) ? o.ln : nil) #Integer, document structure level, for convenience in processing 1-9
- node= h[:node] || ((defined? o.node) ? o.node : nil) #[Node relationship doc structure info]
- status= h[:status] || ((defined? o.status) ? o.status : nil) #tag status open or close
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@obj,@status,@node,@lv,@ln,@tmp=of,is,obj,status,node,lv,ln,tmp
- self
- end
- end
- class ObjectComment
- attr_accessor :obj,:is,:of,:tmp
- def initialize
- @of=:comment
- @is=@obj=@tmp=nil
- end
- def comment(h,o=nil)
- of= @of #String, classification - group
- is= :comment #String, classification - specific type
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@obj,@tmp=of,is,obj,tmp
- self
- end
- end
- class ObjectLayout
- attr_accessor :obj,:is,:of,:tmp
- def initialize
- @of=:layout
- @is=@obj=@tmp=nil
- end
- def break(h,o=nil) #decide how to deal with, perhaps no obj?
- of= @of #String, classification - group
- is= :break #String, classification - specific type
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@obj,@tmp=of,is,obj,tmp
- self
- end
- def insert(h,o=nil) #decide how to deal with, could mimic paragraph?
- of= @of #String, classification - group
- is= :insert #String, classification - specific type
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@obj,@tmp=of,is,obj,tmp
- self
- end
- end
-end
-__END__
-# ~# |-# no paragraph number # -# not included in toc
diff --git a/lib/sisu/v3dv/dal_doc_str.rb b/lib/sisu/v3dv/dal_doc_str.rb
deleted file mode 100644
index b4a98edd..00000000
--- a/lib/sisu/v3dv/dal_doc_str.rb
+++ /dev/null
@@ -1,1047 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: document abstraction
-
-=end
-module SiSU_DAL_DocumentStructureExtract
- class Instantiate < SiSU_Param::Parameters::Instructions
- @@flag={} #Beware!!
- def initialize
- @@flag['table_to']=false
- @@counter=@@column=@@columns=0
- @@line_mode=''
- end
- end
- class Build
- @@flag={} #Beware!!
- 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])
- end
- def ln_get(lv)
- ln=case lv
- when /A/; 1
- when /B/; 2
- when /C/; 3
- when /1/; 4
- when /2/; 5
- when /3/; 6
- when /4/; 7
- when /5/; 8
- when /6/; 9
- end
- end
- def image_test(str)
- boolean=(str=~/\{\s*\S+?\.png.+?\}https?:\/\/\S+/ ? true : false)
- end
- def bullet_test(str)
- bool=((str=~/\*/) ? true : false)
- end
- def hang_and_indent_test(str)
- hang_indent=if str=~/^_([1-9])[^_]/
- [$1,$1]
- elsif str=~/^__([1-9])/
- [0,$1]
- elsif str=~/^_([0-9])_([0-9])/
- [$1,$2]
- else
- [0,0]
- end
- hang,indent=hang_indent[0],hang_indent[1]
- [hang,indent]
- end
- def hang_and_indent_def_test(str1,str2)
- hang_indent=if str1=~/^_([1-9])[^_]/
- [$1,$1]
- elsif str1=~/^__([1-9])/
- [0,$1]
- elsif str1=~/^_([0-9])_([0-9])/
- [$1,$2]
- else
- [0,0]
- end
- obj=if str2 =~/^(.+?)\s+\\\\(?:\s+|\n)/
- str2.gsub(/^(.+?)(\s+\\\\(?:\s+|\n))/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2")
- else
- str2.gsub(/^(.+?)\n/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\n")
- end
- hang,indent=hang_indent[0],hang_indent[1]
- [hang,indent,obj]
- end
- def endnote_test?(str)
- bool=((str=~/~\{.+?\}~|~\[.+?\]~/) ? true : false)
- end
- def extract_tags(str,nametag=nil)
- tags=[]
- if str.nil?
- else
- if str =~/(?:^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/
- str=str.gsub(/(^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/i,
- "\\1#{Mx[:tag_o]}\\2#{Mx[:tag_c]}").
- gsub(/ [ ]+/i,' ')
- tags=str.scan(/#{Mx[:tag_o]}(\S+?)#{Mx[:tag_c]}/).flatten
- str=str.gsub(/[ ]?#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}[ ]?/,' ') #may be issues with spaces would leave one, but "code" blocks?
- end
- tags=nametag ? (tags << nametag) : tags
- end
- [str,tags]
- end
- def identify_parts
- data=@data
- tuned_file=[]
- @tuned_block,@tuned_code=[],[]
- @@counter,@verse_count=0,0
- @metadata={}
- @data.each do |t_o|
- t_o=t_o.gsub(/(?:\n\s*\n)+/m,"\n") unless @@flag['code']
- if t_o !~/^(?:code|poem|alt|group|block)\{|^\}(?:code|poem|alt|group|block)|^(?:table\{|\{table)[ ~]/ \
- and not @@flag['code'] \
- and not @@flag['poem'] \
- and not @@flag['group'] \
- and not @@flag['block'] \
- and not @@flag['alt'] \
- and not @@flag['table']
- unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any
- idx=if t_o=~/^=\{(.+)\}\s*$\Z/m; m=$1
- t_o=t_o.gsub(/\n=\{.+\}\s*$\Z/m,'')
- m
- else nil
- end
- end
- t_o=case t_o
- when /^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/ #metadata, header
- if t_o=~/^#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}\s*(.+)/m
- tag,obj=$1,$2
- @metadata[tag]=obj
- end
- t_o=nil
- when /^%+\s/ #comment
- t_o=if t_o=~/^%+\s+(.+)/
- h={obj: $1}
- SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
- else nil
- end
- when /^:?([A-C1-6])\~/ #heading / lv
- lv=$1
- ln=ln_get(lv)
- t_o=if t_o=~/^:?[A-C1-6]\~\s+(.+)/m
- obj=$1
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj)
- h={ lv: lv, ln: ln, obj: obj, idx: idx, tags: tags }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
- elsif t_o=~/^:?[A-C1-6]\~(\S+?)-\s+(.+)/m
- name,obj=$1,$2
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj)
- h={ lv: lv, name: name, obj: obj, idx: idx, autonum_: false, tags: tags}
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
- elsif t_o=~/^:?[A-C1-6]\~(\S+)\s+(.+)/m
- name,obj=$1,$2
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj,name)
- h={ lv: lv, name: name, obj: obj, idx: idx, tags: tags }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
- else nil
- end
- when /^_(?:[1-9]!?|[1-9]?\*)\s+/ #indented and/or bullet paragraph
- t_o=if t_o=~/^(_(?:[1-9]?\*|[1-9]!?)\s+)(.+)/m
- tst,obj=$1,$2
- if t_o=~/^_[1-9]!\s+.+/m
- hang,indent,obj=hang_and_indent_def_test(tst,obj)
- else
- hang,indent=hang_and_indent_test(tst)
- end
- bullet=bullet_test(tst)
- image=image_test(obj)
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj)
- unless obj=~/\A\s*\Z/m
- h={ bullet_: bullet, hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- else nil
- end
- when /^_[0-9]?_[0-9]!?\s+/ #hanging indent paragraph
- t_o=if t_o=~/^(_[0-9]?_[0-9]!?\s+)(.+)/m
- tst,obj=$1,$2
- if t_o=~/^_[0-9]?_[0-9]!\s+.+/m
- hang,indent,obj=hang_and_indent_def_test(tst,obj)
- else
- hang,indent=hang_and_indent_test(tst)
- end
- image=image_test(obj)
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj)
- unless obj=~/\A\s*\Z/m
- h={ hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_DAL_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])
- when /^(?:[<\[](?:br)?:pg[>\]]|<?:pb>?)\s*$/ #[br:pg]
- SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page])
- when /^[<\[](?:br)?:pg?n[>\]]\s*$/ #[br:pgn]
- SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new])
- else #paragraph
- image=image_test(t_o)
- note=endnote_test?(t_o)
- obj,tags=extract_tags(t_o)
- 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)
- end
- end
- elsif not @@flag['code']
- if t_o =~/^code\{/
- @@flag['code']=true
- @@counter=1
- @codeblock_numbered=(t_o =~/^code\{#/) ? true : false
- h={ obj: 'code block start' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- elsif t_o =~/^poem\{/
- @@flag['poem']=true
- h={ obj: 'poem start' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- tuned_file << t_o
- elsif t_o =~/^group\{/
- @@flag['group']=true
- h={ obj: 'group text start' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- tuned_file << t_o
- elsif t_o =~/^block\{/
- @@flag['block']=true
- h={ obj: 'block text start' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- tuned_file << t_o
- elsif t_o =~/^alt\{/
- @@flag['alt']=true
- h={ obj: 'alt text start' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- tuned_file << t_o
- elsif t_o =~/^(?:table\{|\{table)[ ~]/
- h={ obj: 'table start' } #introduce a counter
- ins=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #ins=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- tuned_file << ins
- if t_o=~/^table\{(?:~h)?\s+/
- @@flag['table']=true
- @rows=''
- case t_o
- when /table\{~h\s+c(\d+);\s+(.+)/
- cols=$1
- col=$2.scan(/\d+/)
- heading=true
- when /table\{\s+c(\d+);\s+(.+)/
- cols=$1
- col=$2.scan(/\d+/)
- heading=false
- end
- @h={ head_: heading, cols: cols, widths: col, idx: idx }
- elsif t_o=~/^\{table(?:~h)?(?:\s+\d+;?)?\}\n.+\Z/m
- m1,m2,hd=nil,nil,nil
- tbl=/^\{table(?:~h)?(?:\s+\d+;?)?\}\n(.+)\Z/m.match(t_o)[1] #two table representations should be consolidated as one
- hd=((t_o =~/^\{table~h/) ? true : false)
- tbl,tags=extract_tags(tbl)
- rws=tbl.split(/\n/)
- rows=''
- cols=nil
- rws.each do |r|
- cols=(cols ? cols : (r.scan('|').length) +1)
- r=r.gsub(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
- rows += r + Mx[:tc_c]
- end
- col=[]
- if t_o =~/^\{table(?:~h)?\s+(\d+);?\}/ #width of col 1 given as %, usually when wider than rest that are even
- c1=$1.to_i
- width=(100 - c1)/(cols - 1)
- col=[ c1 ]
- (cols - 1).times { col << width }
- else #all columns of equal width
- width=100.00/cols
- 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?
- tuned_file << t_o
- h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
- t_o
- elsif t_o=~/^\{table(?:~h)?\s+/
- m1,m2,hd=nil,nil,nil
- h=case t_o
- when /\{table~h\s+(.+?)\}\n(.+)\Z/m #two table representations should be consolidated as one
- m1,tbl,hd=$1,$2,true
- when /\{table\s+(.+?)\}\n(.+)\Z/m #two table representations should be consolidated as one
- m1,tbl,hd=$1,$2,false
- else nil
- end
- tbl,tags=extract_tags(tbl)
- col=m1.scan(/\d+/)
- rws=tbl.split(/\n/)
- rows=''
- rws.each do |r|
- r=r.gsub(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
- 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?
- tuned_file << t_o
- h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
- t_o
- end
- end
- t_o
- end
- if @@flag['table']
- if @@flag['table'] \
- and t_o =~/^\}table/ #two table representations should be consolidated as one
- @@flag['table']=false
- 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)
- tuned_file << t_o
- @h,@rows=nil,''
- t_o
- h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- t_o
- else
- if t_o !~/^table\{/ \
- and not t_o.nil?
- t_o=t_o.gsub(/^\n+/m,''). #check added for ruby 1.9.2 not needed in 1.8 series (tested in v2)
- gsub(/\n+/m,"#{Mx[:tc_p]}")
- @rows += t_o + Mx[:tc_c]
- end
- t_o=nil
- end
- end
- if @@flag['code']
- if t_o =~/^\}code/
- @@flag['code']=false
- obj=@tuned_code.join("\n")
- tags=[]
- h={ obj: obj, tags: tags, number_: @codeblock_numbered }
- t_o=SiSU_DAL_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_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- end
- if @@flag['code'] \
- and t_o.class==String \
- and not t_o.nil? #you may need to introduce t_o.class==String test more widely
- sub_array=t_o.dup + "#{Mx[:br_nl]}"
- @line_mode=sub_array.scan(/.+/)
- @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
- @tuned_code << t_o
- t_o=nil
- end
- elsif @@flag['poem'] \
- or @@flag['group'] \
- or @@flag['block'] \
- or @@flag['alt']
- if @@flag['poem'] \
- and t_o =~/^\}poem/
- @@flag['poem']=false
- h={ obj: 'poem end' } #introduce a counter
- t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- elsif ( @@flag['group'] \
- and t_o =~/^\}group/ )
- @@flag['group']=false
- obj,tags=extract_tags(@tuned_block.join("\n"))
- h={ obj: obj, tags: tags }
- @tuned_block=[]
- t_o=SiSU_DAL_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_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- elsif ( @@flag['block'] \
- and t_o =~/^\}block/ )
- @@flag['block']=false
- obj,tags=extract_tags(@tuned_block.join("\n"))
- h={ obj: obj, tags: tags }
- @tuned_block=[]
- t_o=SiSU_DAL_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_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- elsif ( @@flag['alt'] \
- and t_o =~/^\}alt/ )
- @@flag['alt']=false
- obj,tags=extract_tags(@tuned_block.join("\n"))
- h={ obj: obj, tags: tags }
- t_o=SiSU_DAL_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_DAL_DocumentStructure::ObjectLayout.new.insert(h)
- end
- if @@flag['poem'] \
- or @@flag['group'] \
- or @@flag['alt'] \
- and t_o =~/\S/ \
- and t_o !~/^(?:\}(?:verse|code|alt|group|block)|(?:verse|code|alt|group|block)\{)/ # fix logic
- sub_array=t_o.dup
- @line_mode=sub_array.scan(/.+/)
- type=if @@flag['poem']; 'poem'
- t_o=SiSU_DAL_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)
- tuned_file << t_o
- end
- else 'group'
- end
- @verse_count+=1 if @@flag['poem']
- end
- end
- if not @@flag['code']
- if @@flag['poem'] \
- or @@flag['group'] \
- or @@flag['alt']
- if t_o.class==String
- t_o=t_o.gsub(/\n/m,"#{Mx[:br_nl]}").
- gsub(/[ ][ ]/m,"#{Mx[:nbsp]*2}").
- gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
- t_o=t_o + Mx[:br_nl] if t_o =~/\S+/
- elsif t_o.is==:group \
- || t_o.is==:block \
- || t_o.is==:alt \
- || t_o.is==:verse
- t_o.obj=t_o.obj.gsub(/\n/m,"#{Mx[:br_nl]}").
- gsub(/[ ][ ]/m,"#{Mx[:nbsp]*2}").
- gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
- end
- @tuned_block << t_o if t_o =~/\S+/
- else tuned_file << t_o
- end
- else tuned_file << t_o
- end
- end
- if @md.flag_endnotes
- tuned_file << @pb
- h={ ln: 2, obj: 'Endnotes', autonum_: false }
- tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={ ln: 4, obj: 'Endnotes', name: 'endnotes', autonum_: false }
- tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={ obj: 'Endnotes' }
- end
- if @md.book_idx
- tuned_file << @pb
- h={ ln: 2, obj: 'Index', autonum_: false }
- tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={ ln: 4, obj: 'Index', name: 'book_index', autonum_: false }
- tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={ obj: 'Index' }
- end
- tuned_file << @pb
- h={ ln: 2, obj: 'Metadata', autonum_: false, ocn_: false }
- tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={ ln: 4, obj: 'SiSU Metadata, document information', name: 'metadata', autonum_: false, ocn_: false }
- tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
- tuned_file
- h={ obj: 'eof' }
- meta=SiSU_DAL_DocumentStructure::ObjectMetadata.new.metadata(@metadata)
- [tuned_file,meta]
- end
- def table_rows_and_columns_array(table_str)
- table=[]
- table_str.split(/#{Mx[:tc_c]}/).each do |table_row|
- table_row_with_columns=table_row.split(/#{Mx[:tc_p]}/)
- table << table_row_with_columns
- end
- table
- 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)
- end
- def meta_para(str)
- h={ obj: str, ocn_: false }
- SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- def build_lines(type='')
- lines,lines_new=@data,[]
- lines.each do |line|
- line=if line =~/\S/ \
- and line !~/^code\{|^\}code/ \
- and line.class != Hash
- @@counter+=1 if @@flag['code']
- line=line.gsub(/\s\s/,"#{Mx[:nbsp]*2}").
- gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
- line=line.gsub(/^/,"#{Mx[:gr_o]}codeline#{Mx[:gr_c]}") if type=='code' # REMOVE try sort for texpdf special case
- line=if line =~/(?:https?|file|ftp):\/\/\S+$/
- line.gsub(/\s*$/," #{Mx[:br_nl]}")
- else line.gsub(/\s*$/,"#{Mx[:br_nl]}") #unless type=='code'
- end
- elsif line =~/^\s*$/
- line.gsub(/\s*$/,"#{Mx[:br_nl]}")
- else line
- end
- lines_new << line
- end
- lines_new
- end
- end
- class Structure # this must happen early
- def initialize(md,dob)
- @md,@dob=md,dob
- end
- def structure
- structure_markup_normalize
- structure_markup
- @dob
- end
- def structure_markup #build structure where structure provided only in meta header
- @dob=if @dob.is ==:para \
- && (((@dob.hang !~/[1-9]/) && (@dob.indent !~/[1-9]/)) \
- || (@dob.hang != @dob.indent)) \
- and not @dob.bullet_
- @dob=case @dob.obj
- when /^#{@md.lv1}/
- h={ lv: 'A', ln: 1 }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
- when /^#{@md.lv2}/
- h={ lv: 'B', ln: 2 }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
- when /^#{@md.lv3}/
- h={ lv: 'C', ln: 3 }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
- when /^#{@md.lv4}/
- h={ lv: '1', ln: 4 }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
- when /^#{@md.lv5}/
- h={ lv: '2', ln: 5 }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
- when /^#{@md.lv6}/
- h={ lv: '3', ln: 6 }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
- else @dob
- end
- else @dob
- end
- @dob
- end
- def structure_markup_normalize #needs a bit of thinking
- dob=if @md.markup_version.determined < 0.38 #%convert internal representation, consider making 0.38 structure default ([A-C1-6] instead of [1-9]), requires downstream changes
- @dob=@dob.gsub(/^[456]~/,'!_').
- gsub(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}").
- gsub(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}").
- gsub(/^2~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}").
- gsub(/^2~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}").
- gsub(/^1~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}").
- gsub(/^1~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}").
- gsub(/^:?C~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}").
- gsub(/^:?C~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}").
- gsub(/^:?B~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}").
- gsub(/^:?B~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}").
- gsub(/^:?A~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}").
- gsub(/^:?A~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
- @dob=if @dob =~/^@(?:level|markup):\s/
- @dob=@dob.gsub(/3/,'6').
- gsub(/2/,'5').
- gsub(/1/,'4').
- gsub(/:?C/,'3').
- gsub(/:?B/,'2').
- gsub(/:?A/,'1')
- @dob
- else @dob
- end
- else @dob
- end
- end
- def structure_marks
- t_o=if @md.markup_version.determined < 0.38
- @t_o=@t_o.gsub(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}").
- gsub(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}").
- gsub(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}").
- gsub(/^2~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}").
- gsub(/^3~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}").
- gsub(/^3~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}").
- gsub(/^4~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}").
- gsub(/^4~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}").
- gsub(/^5~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}").
- gsub(/^5~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}").
- gsub(/^6~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}").
- gsub(/^6~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}").
- gsub(/^[789]~/,'!_')
- @t_o
- else @t_o
- end
- end
- end
- class OCN
- def initialize(md,data)
- @md,@data=md,data
- end
- def ocn #and auto segment numbering increment
- data=@data
- @o_array=[]
- node=ocn=ocn_dv=ocn_sp=ocnh=ocnh1=ocnh2=ocnh3=ocnh4=ocnh5=ocnh6=ocno=ocnp=ocnt=ocnc=ocng=ocni=ocnm=ocnu=ocnk=nm=0 # h heading, o other, t table, g group, i image
- node_count_flag=false
- regex_exclude_ocn_and_node = /#{Rx[:meta]}|^@\S+?:\s|^4~endnotes|^#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}|^\^~ |<:e[:_]\d+?>|^<:\#|<:- |<[:!]!4|<hr width|#{Mx[:br_endnotes]}|\A\s*\Z/mi #ocn here #&nbsp; added with Tune.code #¡
- parent=node1=node2=node3=node4=node5=node6=nil
- data.each do |dob|
- h={}
- if (dob.obj !~ regex_exclude_ocn_and_node || dob.is ==:code) \
- && (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
- ln=case dob.lv
- when 'A'; 1
- when 'B'; 2
- when 'C'; 3
- when '1'; 4
- when '2'; 5
- when '3'; 6
- when '4'; 7
- when '5'; 8
- when '6'; 9
- end
- end
- if not dob.obj =~/<:#>|~#|-#/ \
- or not dob.toc_ # fix this no longer in 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)
- ocnh+=1
- if ln==1 \
- or ln=~@md.lv1; ocnh1+=1 #heading
- node1="1:#{ocnh1};#{ocn}"
- node,ocn_sp,parent=node1,"h#{ocnh}",0 #FIX
- elsif ln==2 \
- or ln=~@md.lv2; ocnh2+=1
- node2="2:#{ocnh2};#{ocn}"
- node,ocn_sp,parent=node2,"h#{ocnh}",node1
- elsif ln==3 \
- or ln=~@md.lv3; ocnh3+=1
- node3="3:#{ocnh3};#{ocn}"
- node,ocn_sp,parent=node3,"h#{ocnh}",node2
- elsif ln==4 \
- or ln=~@md.lv4; ocnh4+=1
- node4="4:#{ocnh4};#{ocn}"
- node,ocn_sp,parent=node4,"h#{ocnh}",node3
- elsif ln==5 \
- or ln=~@md.lv5; ocnh5+=1
- node5="5:#{ocnh5};#{ocn}"
- node,ocn_sp,parent=node5,"h#{ocnh}",node4
- elsif ln==6 \
- or ln=~@md.lv6; ocnh6+=1
- node6="6:#{ocnh6};#{ocn}"
- node,ocn_sp,parent=node6,"h#{ocnh}",node5
- end
- 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
- end
- if dob.is==:heading
- dob.ln,dob.node,dob.ocn,dob.odv,dob.osp,dob.parent=ln,node,ocn,ocn_dv,ocn_sp,parent
- 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
- 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 }
- dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob)
- elsif dob.is==:heading
- h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: true }
- dob=SiSU_DAL_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 }
- dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob)
- elsif dob.is==:heading
- h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: false }
- dob=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,dob)
- end
- else dob
- end
- if dob.is==:code \
- || dob.is==:verse \
- || dob.is==:alt \
- || dob.is==:group \
- || dob.is==:block
- dob.obj=dob.obj.gsub(/\n\n/,"\n") #newlines taken out
- end
- @o_array << dob
- end
- @o_array
- end
- end
- class XML
- def initialize(md,data)
- @data,@md=data,md
- end
- def dom
- @s=['0',
- 'A',
- 'B',
- 'C',
- '1',
- '2',
- '3'
- ]
- @sp=' '
- tuned_file=structure_build
- tuned_file
- end
- def structure_build
- data=@data
- tuned_file=[]
- hs=[0,false,false,false]
- t={ lv: @s[0], status: 'open' }
- tuned_file << tags(t)
- if @md.opt.cmd =~/V/
- puts "\nXML sisu structure outline --->\n"
- puts "<#{@s[0]}>"
- end
- data.each_with_index do |o,i|
- if o.is ==:heading \
- || o.is ==:heading_insert
- case o.ln
- when 1
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.cmd =~/V/
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs=[1,true,false,false]
- when 2
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.cmd =~/V/
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs=[2,true,true,false]
- when 3
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.cmd =~/V/
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs=[3,true,true,true]
- when 4
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.cmd =~/V/
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs[0]=4
- when 5
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.cmd =~/V/
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs[0]=5
- when 6
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.cmd =~/V/
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs[0]=6
- end
- end
- tuned_file << o
- end
- puts_tag_close(0,hs) if @md.opt.cmd =~/V/
- tuned_file << tag_close(0,hs)
- tuned_file=tuned_file.flatten
- end
- def tags(o)
- tag=if o[:status]=='open'
- %{<#{o[:lv]} id="#{o[:node]}">}
- else "</#{o[:lv]}>"
- end
- ln=case o[:lv]
- when 'A'; 1
- when 'B'; 2
- when 'C'; 3
- when '1'; 4
- when '2'; 5
- when '3'; 6
- when '4'; 7
- when '5'; 8
- 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
- end
- def tag_open(o,tag)
- t={ lv: tag[o.ln], node: o.node, status: 'open' }
- t_o=tags(t)
- t_o
- end
- def tag_close(lev,hs)
- ary=[]
- case hs[0]
- when 1
- if (lev <= 1) and hs[1]
- t={ lv: @s[1], status: 'close' }
- ary << tags(t)
- end
- if (lev==0)
- t={ lv: @s[0], status: 'close' }
- ary << tags(t)
- end
- when 2
- if (lev <= 2) and hs[2]
- t={ lv: @s[2], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 1) and hs[1]
- t={ lv: @s[1], status: 'close' }
- ary << tags(t)
- end
- if (lev==0)
- t={ lv: @s[0], status: 'close' }
- ary << tags(t)
- end
- when 3
- if (lev <= 3) and hs[3]
- t={ lv: @s[3], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 2) and hs[2]
- t={ lv: @s[2], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 1) and hs[1]
- t={ lv: @s[1], status: 'close' }
- ary << tags(t)
- end
- if (lev==0)
- t={ lv: @s[0], status: 'close' }
- ary << tags(t)
- end
- when 4
- if (lev <= 4)
- t={ lv: @s[4], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 3) and hs[3]
- t={ lv: @s[3], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 2) and hs[2]
- t={ lv: @s[2], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 1) and hs[1]
- t={ lv: @s[1], status: 'close' }
- ary << tags(t)
- end
- if (lev==0)
- t={ lv: @s[0], status: 'close' }
- ary << tags(t)
- end
- when 5
- if (lev <= 5)
- t={ lv: @s[5], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 4)
- t={ lv: @s[4], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 3) and hs[3]
- t={ lv: @s[3], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 2) and hs[2]
- t={ lv: @s[2], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 1) and hs[1]
- t={ lv: @s[1], status: 'close' }
- ary << tags(t)
- end
- if (lev==0)
- t={ lv: @s[0], status: 'close' }
- ary << tags(t)
- end
- when 6
- if (lev <= 6)
- t={ lv: @s[6], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 5)
- t={ lv: @s[5], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 4)
- t={ lv: @s[4], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 3) and hs[3]
- t={ lv: @s[3], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 2) and hs[2]
- t={ lv: @s[2], status: 'close' }
- ary << tags(t)
- end
- if (lev <= 1) and hs[1]
- t={ lv: @s[1], status: 'close' }
- ary << tags(t)
- end
- if (lev==0)
- t={ lv: @s[0], status: 'close' }
- ary << tags(t)
- end
- end
- ary
- end
- def puts_tag_open(o,tag)
- puts %{#{@sp*o.ln}<#{tag[o.ln]} id="#{o.node}">}
- end
- def puts_tag_close(lev,hs)
- case hs[0]
- when 1
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 2
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 3
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 4
- puts "#{@sp*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 5
- puts "#{@sp*5}</#{@s[5]}>" if (lev <= 5)
- puts "#{@sp*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 6
- puts "#{@sp*6}</#{@s[6]}>" if (lev <= 6)
- puts "#{@sp*5}</#{@s[5]}>" if (lev <= 5)
- puts "#{@sp*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_endnotes.rb b/lib/sisu/v3dv/dal_endnotes.rb
deleted file mode 100644
index 191260c4..00000000
--- a/lib/sisu/v3dv/dal_endnotes.rb
+++ /dev/null
@@ -1,125 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Endnotes
- class Endnotes
- def initialize(md,data,endnote_array=nil)
- @md,@data,@endnote_array=md,data,endnote_array
- @endnote_counter,@endnote_counter_asterisk,@endnote_counter_dag=1,1,1
- end
- def endnotes
- data=@data
- @tuned_file=[]
- endnote_no,endnote_ref=1,1
- data.each do |dob|
- # manually numbered endnotes <!e(\d)!> <!e_(\d)!> -->
- if @md.opt.mod.inspect =~/--no-asterisk|--no-annotate/
- dob.obj=dob.obj.gsub(/#{Mx[:en_b_o]}\s.+?#{Mx[:en_b_c]}/,'')
- end
- if @md.opt.mod.inspect =~/--no-dagger|--no-annotate/
- dob.obj=dob.obj.gsub(/#{Mx[:en_b_o]}[+]\s.+?#{Mx[:en_b_c]}/,'')
- end
- if (defined? dob.obj) \
- && (defined? dob.is) \
- && 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
- word_mode=dob.obj.scan(/\S+/m)
- word_mode=endnote_call_number(word_mode)
- dob.obj=word_mode.join(' ')
- endnote_ref+=1
- when /~\^(?:\s|$)|<:e>/ #%note inserts endnotes previously gathered from /^(<!e[:_]!>|[-~]\{{3})/ (in earlier loop)
- word_mode=dob.obj.scan(/\S+/m)
- word_mode=endnote_call_number(word_mode)
- dob.obj=word_mode.join(' ')
- endnote_ref+=1
- end
- end
- @tuned_file << dob
- end
- @endnote_counter,@endnote_counter_asterisk,@endnote_counter_dag=1,1,1
- @tuned_file=@tuned_file.flatten
- end
- def endnote_call_number(words)
- words.each do |word|
- case word
- when /#{Mx[:en_a_o]}/
- unless word =~/#{Mx[:en_a_o]}[*+]+/
- word.gsub!(/#{Mx[:en_a_o]}/,"#{Mx[:en_a_o]}#{@endnote_counter} ")
- @endnote_counter+=1
- end
- when /#{Mx[:en_b_o]}/
- if word =~/#{Mx[:en_b_o]}[+]/
- word.gsub!(/#{Mx[:en_b_o]}[+]/,"#{Mx[:en_b_o]}\+#{@endnote_counter_dag} ")
- @endnote_counter_dag+=1
- else
- word.gsub!(/#{Mx[:en_b_o]}[*]?/,"#{Mx[:en_b_o]}\*#{@endnote_counter_asterisk} ")
- @endnote_counter_asterisk+=1
- end
- when /~\^|<:e>/
- if @endnote_array
- word.gsub!(/~\^|<:e>/,"#{@endnote_array[@endnote_counter-1]}")
- @endnote_counter+=1
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_expand_insertions.rb b/lib/sisu/v3dv/dal_expand_insertions.rb
deleted file mode 100644
index ef25fcdd..00000000
--- a/lib/sisu/v3dv/dal_expand_insertions.rb
+++ /dev/null
@@ -1,379 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Insertions
- class Insertions
- def initialize(md,data)
- @md,@data=md,data
- end
- def output_filetypes_in_cmd(cmd_shortcut,lnk=nil) #make list of file types in shortcut command (as configured), e.g. when sisu -3 is used
- cf_defaults=SiSU_Env::InfoProcessingFlag.new
- cmd_list=case cmd_shortcut.inspect
- when /0/; cf_defaults.cf_0
- when /1/; cf_defaults.cf_1
- when /2/; cf_defaults.cf_2
- when /3/; cf_defaults.cf_3
- when /4/; cf_defaults.cf_4
- when /5/; cf_defaults.cf_5
- end
- file_type_names={}
- file_type_names[:gen],file_type_names[:src]=[],[]
- file_type_names[:gen] <<= if cmd_list =~ /y/; "~^ { document manifest }#{lnk[:manifest]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /h/; [" { html, segmented text }#{lnk[:html_toc]}"," { html, scroll, document in one }#{lnk[:html_doc]}"]
- end
- file_type_names[:gen] <<= if cmd_list =~ /e/; [" { epub }#{lnk[:epub]}"]
- end
- file_type_names[:gen] <<= if cmd_list =~ /p/; [" { pdf, landscape }#{lnk[:pdf_landscape]}"," { pdf, portrait }#{lnk[:pdf_portrait]}"]
- end
- file_type_names[:gen] <<= if cmd_list =~ /o/; " { odf:odt, open document text }#{lnk[:odt]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /b/; " { xhtml scroll }#{lnk[:xhtml]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /x/; " { xml, sax }#{lnk[:xml_sax]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /X/; " { xml, dom }#{lnk[:xml_dom]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /a/; " { plain text utf-8 }#{lnk[:txt]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /g/; 'wiki.txt'
- end
- file_type_names[:gen] <<= if cmd_list =~ /w/; " { concordance }#{lnk[:html_concordance]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /N/; " { dcc, document content certificate (digests) }#{lnk[:digest]}"
- end
- file_type_names[:src] <<= if source and cmd_shortcut =~ /s/; " { markup source text }#{lnk[:source]}"
- end
- file_type_names[:src] <<= if cmd_shortcut =~ /S/; " { markup source (zipped) pod }#{lnk[:sisupod]}"
- end
- file_type_names[:gen]=file_type_names[:gen].flatten
- file_type_names[:src]=file_type_names[:src].flatten
- file_type_names
- end
- def by_language(linked_doc,lng,src=nil)
- @linked_doc,@lng,@src=linked_doc,lng,src
- @base_path="#{@md.file.output_path.base.url}/#{@lng}"
- def manifest
- "#{@base_path}/manifest/#{@linked_doc}.html"
- end
- def html_toc
- "#{@base_path}/html/#{@linked_doc}.html"
- end
- def html_doc
- "#{@base_path}/html/#{@linked_doc}.html"
- end
- def html_concordance
- "#{@base_path}/html/#{@linked_doc}.html"
- end
- def epub
- "#{@base_path}/epub/#{@linked_doc}.epub"
- end
- def pdf_landscape
- "#{@base_path}/pdf/#{@linked_doc}.pdf"
- end
- def pdf_portrait
- "#{@base_path}/pdf/#{@linked_doc}.pdf"
- end
- def odt
- "#{@base_path}/odt/#{@linked_doc}.odt"
- end
- def xhtml
- "#{@base_path}/xhtml/#{@linked_doc}.xhtml"
- end
- def xml_sax
- "#{@base_path}/xml/#{@linked_doc}.xml"
- end
- def xml_dom
- "#{@base_path}/xml/#{@linked_doc}.xml"
- end
- def txt
- "#{@base_path}/txt/#{@linked_doc}.txt"
- end
- def digest
- "#{@base_path}/digest/#{@linked_doc}.txt"
- end
- def source
- "#{@base_path}/src/#{@src}"
- end
- def sisupod
- "#{@base_path}/pod/#{@src}.zip"
- end
- self
- end
- def by_filetype(linked_doc,lng,src=nil)
- @linked_doc,@lng,@src=linked_doc,lng,src
- @base_path="#{@md.file.output_path.base.url}"
- def manifest
- "#{@base_path}/manifest/#{@linked_doc}.#{@lng}.html"
- end
- def html_toc
- "#{@base_path}/html/#{@linked_doc}.#{@lng}.html"
- end
- def html_doc
- "#{@base_path}/html/#{@linked_doc}.#{@lng}.html"
- end
- def html_concordance
- "#{@base_path}/html/#{@linked_doc}.#{@lng}.html"
- end
- def epub
- "#{@base_path}/epub/#{@linked_doc}.#{@lng}.epub"
- end
- def pdf_landscape
- "#{@base_path}/pdf/#{@linked_doc}.#{@lng}.pdf"
- end
- def pdf_portrait
- "#{@base_path}/pdf/#{@linked_doc}.#{@lng}.pdf"
- end
- def odt
- "#{@base_path}/odt/#{@linked_doc}.#{@lng}.odt"
- end
- def xhtml
- "#{@base_path}/xhtml/#{@linked_doc}.#{@lng}.xhtml"
- end
- def xml_sax
- "#{@base_path}/xml_sax/#{@linked_doc}.#{@lng}.xml"
- end
- def xml_dom
- "#{@base_path}/xml_dom/#{@linked_doc}.#{@lng}.xml"
- end
- def txt
- "#{@base_path}/txt/#{@linked_doc}.#{@lng}.txt"
- end
- def digest
- "#{@base_path}/digest/#{@linked_doc}.#{@lng}.txt"
- end
- def source
- "#{@base_path}/src/#{@src}"
- end
- def sisupod
- "#{@base_path}/pod/#{@src}.zip"
- end
- self
- end
- def by_filename(linked_doc,lng,src=nil)
- @linked_doc,@lng,@src=linked_doc,lng,src
- @base_path="#{@md.file.output_path.base.url}/#{@linked_doc}"
- def manifest
- "#{@base_path}/sisu_manifest.#{@lng}.html"
- end
- def html_toc
- "#{@base_path}/toc.#{@lng}.html"
- end
- def html_doc
- "#{@base_path}/scroll.#{@lng}.html"
- end
- def html_concordance
- "#{@base_path}/concordance.#{@lng}.html"
- end
- def epub
- "#{@base_path}/epub/#{@linked_doc}.#{@lng}.epub"
- end
- def pdf_landscape
- "#{@base_path}/landscape.#{@lng}.a4.pdf"
- end
- def pdf_portrait
- "#{@base_path}/portrait.#{@lng}.a4.pdf"
- end
- def odt
- "#{@base_path}/opendocument.#{@lng}.odt"
- end
- def xhtml
- "#{@base_path}/scroll.#{@lng}.xhtml"
- end
- def xml_sax
- "#{@base_path}/scroll.#{@lng}.sax.xml"
- end
- def xml_dom
- "#{@base_path}/scroll.#{@lng}.dom.xml"
- end
- def txt
- "#{@base_path}/plain.#{@lng}.txt"
- end
- def digest
- "#{@base_path}/digest.#{@lng}.txt"
- end
- def source
- "#{@base_path}/#{@src}"
- end
- def sisupod
- "#{@base_path}/#{@src}.zip"
- end
- self
- end
- def expand_insertions?
- data=@data
- tuned_file,tuned_file_tmp=[],[]
- codeblock_=false
- data.each do |para|
- codeblock_=if para =~/^code\{/
- true
- elsif para =~/^\}code/
- false
- else codeblock_
- end
- if para !~/^%+\s/ \
- and not codeblock_ \
- and para =~/\{(?:~\^\s+)?(.+?)\s\[(?:\d(?:[sS]*))\]\}(?:\.\.\/\S+?\/|\S+?\.ss[tm]\b)/
- txt,cmd,source,linked_doc,note,manifest=nil,nil,nil,nil,nil,nil
- @u=SiSU_Env::InfoEnv.new.url
- pre=txt=cmd=source=linked_doc=note=''
- if defined? @u.remote
- if /(?<pre>.+?)\{(?<txt>.+?)\s\[(?<cmd>\d[sS]*)\]\}(?<source>(?<linked_doc>\S+?)\.ss[tm]\b)(?<note>.*)/m =~ para
- pre=pre.strip
- elsif /\{(?<txt>.+?)\s\[(?<cmd>\d[sS]*)\]\}(?<source>(?<linked_doc>\S+?)\.ss[tm]\b)(?<note>.*)/m =~ para
- end
- if linked_doc =~ /(\S+?)\/(\S+)/
- linked_doc,linked_doc_lang=$1,$2
- else
- linked_doc,linked_doc_lang=linked_doc,@md.opt.lng_base
- end
- else
- puts "error, does currently support relative paths (reltive paths were removed, as had problems for citation, and was not suited to all output types should possibly reconsider) #{__FILE__} #{__LINE__}"
- if /\{(?:~\^\s+)?(?<txt>.+?)\s\[(?<cmd>\d[sS]*)\]\}\.\.\/(?<linked_doc>\S+?)\/(?<note>\s+#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]})?/ =~ para
- end
- end
- lnk={}
- case @md.opt.dir_structure_by
- when :language
- lnk={
- manifest: by_language(linked_doc,linked_doc_lang).manifest,
- html_toc: by_language(linked_doc,linked_doc_lang).html_toc,
- html_doc: by_language(linked_doc,linked_doc_lang).html_doc,
- epub: by_language(linked_doc,linked_doc_lang).epub,
- pdf_landscape: by_language(linked_doc,linked_doc_lang).pdf_landscape,
- pdf_portrait: by_language(linked_doc,linked_doc_lang).pdf_landscape,
- odt: by_language(linked_doc,linked_doc_lang).odt,
- xhtml: by_language(linked_doc,linked_doc_lang).xhtml,
- xml_sax: by_language(linked_doc,linked_doc_lang).xml_sax,
- xml_dom: by_language(linked_doc,linked_doc_lang).xml_dom,
- txt: by_language(linked_doc,linked_doc_lang).txt,
- html_concordance: by_language(linked_doc,linked_doc_lang).html_concordance,
- digest: by_language(linked_doc,linked_doc_lang).digest,
- sisupod: by_language(linked_doc,linked_doc_lang,source).sisupod,
- source: by_language(linked_doc,linked_doc_lang,source).source,
- }
- when :filetype
- lnk={
- manifest: by_filetype(linked_doc,linked_doc_lang).manifest,
- html_toc: by_filetype(linked_doc,linked_doc_lang).html_toc,
- html_doc: by_filetype(linked_doc,linked_doc_lang).html_doc,
- epub: by_filetype(linked_doc,linked_doc_lang).epub,
- pdf_landscape: by_filetype(linked_doc,linked_doc_lang).pdf_landscape,
- pdf_portrait: by_filetype(linked_doc,linked_doc_lang).pdf_landscape,
- odt: by_filetype(linked_doc,linked_doc_lang).odt,
- xhtml: by_filetype(linked_doc,linked_doc_lang).xhtml,
- xml_sax: by_filetype(linked_doc,linked_doc_lang).xml_sax,
- xml_dom: by_filetype(linked_doc,linked_doc_lang).xml_dom,
- txt: by_filetype(linked_doc,linked_doc_lang).txt,
- html_concordance: by_filetype(linked_doc,linked_doc_lang).html_concordance,
- digest: by_filetype(linked_doc,linked_doc_lang).digest,
- sisupod: by_filetype(linked_doc,linked_doc_lang,source).sisupod,
- source: by_filetype(linked_doc,linked_doc_lang,source).source,
- }
- else
- lnk={
- manifest: by_filename(linked_doc,linked_doc_lang).manifest,
- html_toc: by_filename(linked_doc,linked_doc_lang).html_toc,
- html_doc: by_filename(linked_doc,linked_doc_lang).html_doc,
- epub: by_filename(linked_doc,linked_doc_lang).epub,
- pdf_landscape: by_filename(linked_doc,linked_doc_lang).pdf_landscape,
- pdf_portrait: by_filename(linked_doc,linked_doc_lang).pdf_landscape,
- odt: by_filename(linked_doc,linked_doc_lang).odt,
- xhtml: by_filename(linked_doc,linked_doc_lang).xhtml,
- xml_sax: by_filename(linked_doc,linked_doc_lang).xml_sax,
- xml_dom: by_filename(linked_doc,linked_doc_lang).xml_dom,
- txt: by_filename(linked_doc,linked_doc_lang).txt,
- html_concordance: by_filename(linked_doc,linked_doc_lang).html_concordance,
- digest: by_filename(linked_doc,linked_doc_lang).digest,
- sisupod: by_filename(linked_doc,linked_doc_lang,source).sisupod,
- source: by_filename(linked_doc,linked_doc_lang,source).source,
- }
- end
- linked_title="#{pre}{#{txt} }#{lnk[:manifest]}#{note}\n\n"
- tuned_file_tmp << linked_title
- output_filetypes=output_filetypes_in_cmd(cmd,lnk)
- output_filetypes[:gen].each do |o_f|
- describe = o_f
- if describe
- tuned_file_tmp << if @u.remote #to double space <:br> at beginning of entry
- "#{Mx[:nbsp]*4} #{describe} "
- else # remove ...
- "[provide document placement host location]"
- end
- end
- end
- output_filetypes[:src].each do |o_f|
- describe = o_f
- if describe
- tuned_file_tmp << if @u.remote
- "#{Mx[:nbsp]*4} #{describe} "
- else
- "[provide document placement host location]"
- end
- end
- end
- tuned_file << 'group{' << tuned_file_tmp.join("\n") << '}group'
- tuned_file_tmp=[]
- else tuned_file << para
- end
- end
- tuned_file
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_hash_digest.rb b/lib/sisu/v3dv/dal_hash_digest.rb
deleted file mode 100644
index ad201752..00000000
--- a/lib/sisu/v3dv/dal_hash_digest.rb
+++ /dev/null
@@ -1,156 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Hash
- require_relative 'shared_markup_alt.rb' #shared_markup_alt.rb
- class ObjectDigest
- def initialize(md,data,env=nil)
- @md,@data,@env=md,data,env
- @env ||=SiSU_Env::InfoEnv.new(@md.fns)
- end
- def object_digest
- # 1. clean/stripped text without any markup, paragraph, headings etc. without endnotes
- # 2. endnotes clean/stripped text digest only (there may be several endnotes within a paragraph)
- # 3. whole object, text with markup and any endnotes, (question: with or without the endnote digests??? presumption better without, [however may be easier to check with?])
- # [digests should not include other digests]
- data=@data.compact
- @tuned_file=[]
- sha_ =(@env.digest.type=='sha256' ? true : false)
- sha_ ? (require 'digest/sha2') : (require 'digest/md5')
- data.each do |t_o|
- unless t_o.obj.class==Array
- t_o.obj=t_o.obj.strip
- end
- if (t_o.of !=:structure \
- && t_o.of !=:comment \
- && t_o.of !=:layout) \
- && t_o.ocn.class==Fixnum
- if sha_
- for hash_class in [ Digest::SHA256 ]
- @tuned_file << stamped(t_o,hash_class)
- end
- else
- for hash_class in [ Digest::MD5 ]
- @tuned_file << stamped(t_o,hash_class)
- end
- end
- else @tuned_file << t_o unless t_o.nil?
- 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
- end
- def endnote_digest(data)
- t_o_bit=[]
- data.each do |en_plus|
- t_o_bit <<= case en_plus
- when /#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/
- if en_plus =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/
- t_o_txt,en_open,en_txt,en_close=/(.*?)(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m.match(en_plus)[1..4]
- stripped_en=SiSU_TextRepresentation::Alter.new(en_txt).strip_clean_of_markup
- digest_en_strip=if @env.digest.type =~/sha256/
- Digest::SHA256.hexdigest(stripped_en)
- else
- Digest::MD5.hexdigest(stripped_en)
- end
- t_o_txt + en_open + en_txt + Mx[:id_o] + digest_en_strip + Mx[:id_c] + en_close
- else puts "Error Exception - problem encountered with:\n#{en_plus}" #arbitrary exception, tidy up
- end
- else en_plus
- end
- end
- t_o_bit.join
- end
- def stamped(t_o,hash_class) #decide what hash information is most useful, is compromise necessary?
- t_o.obj=SiSU_TextRepresentation::Alter.new(t_o).strip_clean_of_extra_spaces
- t_obj=t_o.inspect.sub(/:0x[0-9a-f]{8}\s/,': ')
- stripped=SiSU_TextRepresentation::Alter.new(t_o).strip_clean_of_markup
- markup=SiSU_TextRepresentation::Alter.new(t_o).semi_revert_markup
- digests=SiSU_TextRepresentation::ModifiedTextPlusHashDigest.new(@md,t_o).composite.dgst
- unless t_o.is==:code
- case t_o.obj
- when /#{Mx[:en_a_o]}[\d*+]+\s+.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}[*+]\d+\s+.+?#{Mx[:en_b_c]}/m
- en_and_t_o,en_and_t_o_digest=[],[]
- t_o.obj=t_o.obj.gsub(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,' \1') #watch
- t_o_plus_en=t_o.obj.scan(/.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/m)
- t_o_tail=if t_o.obj =~/(?:.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})+([\s\S]+)/m
- /(?:.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})+.*/m.match(t_o.obj)[1]
- else ''
- end
- t_o_plus_en << t_o_tail
- en_and_t_o_digest << endnote_digest(t_o_plus_en)
- t_o_new=en_and_t_o_digest.join(' ')
- #@tuned << t_o_new + Mx[:id_o] + digest_strip + ':' + digest_all + Mx[:id_c] unless t_o.nil?
- else #@tuned << t_o + Mx[:id_o] + digest_strip + ':' + digest_all + Mx[:id_c] unless t_o.nil?
- end
- else #@tuned << t_o + Mx[:id_o] + digest_strip + ':' + digest_all + Mx[:id_c] unless t_o.nil?
- end
- t_o #KEEP intact
- end
- def strip_clean_extra_spaces(s) # dal output tuned
- s=s.dup
- s=s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1') unless s =~/#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/
- s=s.gsub(/ [ ]+/,' ').
- gsub(/^ [ ]+/,'').
- gsub(/ [ ]+$/,'').
- gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2').
- gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_idx.rb b/lib/sisu/v3dv/dal_idx.rb
deleted file mode 100644
index 21567c14..00000000
--- a/lib/sisu/v3dv/dal_idx.rb
+++ /dev/null
@@ -1,357 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_BookIndex
- class BookIndex
- def initialize(md,data,env=nil)
- @md,@data,@env=md,data,env
- @rgx_idx=/#{Mx[:idx_o]}(?:.+?)#{Mx[:idx_c]}\s*/
- @rgx_idx_ocn_seg=/(.+?)~(\d+)~(\S+)/
- @rgx_idx_ocn=/(.+?)~(\d+)/
- @env ||=SiSU_Env::InfoEnv.new(@md.fns)
- end
- def indexing_song
- data=@data
- data,sisu_markup_idx_rel,sisu_markup_idx_rel_html_seg,html_idx,xhtml_idx=extract_book_index(data)
- data=clean_and_insert_index(data,sisu_markup_idx_rel_html_seg)
- [data,sisu_markup_idx_rel,sisu_markup_idx_rel_html_seg,html_idx,xhtml_idx]
- end
- def extract_book_index(data)
- tuned_file=[]
- idx_array=[]
- data.each do |dob|
- if (dob.is ==:heading \
- || dob.is ==:heading_insert) \
- && dob.ln==4
- @seg=dob.name
- end
- idx_array << "#{dob.idx}~#{dob.ocn}~#{@seg}" if defined? dob.idx and not (dob.idx.nil? or dob.idx.empty?)
- tuned_file << dob if dob
- end
- idx_array=construct_idx_array(idx_array) if idx_array.length > 0
- if idx_array.length > 0
- the_idx=construct_book_index(idx_array)
- sisu_markup_idx_rel,sisu_markup_idx_rel_html_seg,html_idx,xhtml_idx=nil,nil,nil,nil
- if @md.book_idx
- idx=index(the_idx)
- sisu_markup_idx_rel,sisu_markup_idx_rel_html_seg,html_idx,xhtml_idx=idx[:sst_rel],idx[:sst_rel_html_seg],idx[:html],idx[:xhtml]
- end
- end
- [tuned_file,sisu_markup_idx_rel,sisu_markup_idx_rel_html_seg,html_idx,xhtml_idx]
- end
- def construct_idx_array(idx_array)
- idx_lst=[]
- idx_array.each do |idx|
- idx_list,ocn,seg=@rgx_idx_ocn_seg.match(idx)[1..3]
- idx_lst <<=if idx_list =~/;/
- g=idx_list.scan(/[^;]+/)
- idxl=[]
- g.each do |i|
- i=i.strip
- idxl << { rough_idx: i, ocn: ocn, seg: seg }
- end
- idxl
- else { rough_idx: idx_list, ocn: ocn, seg: seg }
- end
- end
- idx_lst=idx_lst.flatten
- end
- def construct_book_index(idx_array)
- the_idx={}
- idx_array.each do |idx|
- idx_lst=idx[:rough_idx].scan(/[^|:]+/)
- idx_lst[0]=idx_lst[0].strip
- if idx_lst[0] =~/.+?\+\d+/
- use,plus=/(.+?)\+(\d+)/.match(idx_lst[0])[1,2]
- else use=idx_lst[0]
- end
- use=use[0].chr.capitalize + use[1,use.length]
- the_idx[use]={} unless the_idx[use] and defined? the_idx[use]
- idx_lst.each do |i|
- i=i.strip
- i,r=/(.+?)\+(\d+)/.match(i)[1,2] if i =~/.+?\+\d+/
- x=if idx_lst.length==1 or idx_lst[0].gsub(/\+\d+/,'')==i
- the_idx[use]['term_node_lev1']=[] unless the_idx[use]['term_node_lev1'] and defined? the_idx[use]['term_node_lev1']
- x=if r
- the_idx[use]['term_node_lev1'] << { ocn: idx[:ocn], range: "#{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}", seg: idx[:seg] }
- "#{i} #{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}"
- else
- the_idx[use]['term_node_lev1'] << { ocn: idx[:ocn], seg: idx[:seg] }
- "#{i} #{idx[:ocn]}"
- end
- else
- the_idx[use]['term_node_lev2']={} unless the_idx[use]['term_node_lev2'] and defined? the_idx[use]['term_node_lev2']
- the_idx[use]['term_node_lev2'][i]=[] unless the_idx[use]['term_node_lev2'][i] and defined? the_idx[use]['term_node_lev2'][i]
- x=if r
- the_idx[use]['term_node_lev2'][i] << { ocn: idx[:ocn], range: "#{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}", seg: idx[:seg] }
- "#{idx_lst[0]}:#{i} #{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}"
- else
- the_idx[use]['term_node_lev2'][i] << { ocn: idx[:ocn], seg: idx[:seg] }
- "#{idx_lst[0]}:#{i} #{idx[:ocn]}"
- end
- end
- end
- end
- the_idx=the_idx.sort
- the_idx
- end
- def clean_xml(str)
- str=str.gsub(/&/,'&#038;').
- gsub(/\(/,'&#040;').
- gsub(/\)/,'&#041;').
- gsub(/\*/,'&#042;').
- gsub(/\+/,'&#043;').
- gsub(/,/,'&#044;')
- str
- end
- def index(the_idx)
- @x=1
- 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)
- 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)
- 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)
- 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]
- idx[:html] << '<p>'
- idx[:xhtml] << '<p>'
- alph.each do |x|
- if x =~/[0-9]/
- idx[:html] << ''
- idx[:xhtml] << ''
- else
- idx[:html] << %{<a href="##{x}">#{x}</a>,&nbsp;}
- idx[:xhtml] << %{<a href="##{x.downcase}">#{x}</a>,&nbsp;}
- end
- end
- idx[:html] << '</p>'
- idx[:xhtml] << '</p>'
- letter=alph.shift
- idx[:html] << %{\n<p class="book_index_lev1"><a name="numeral"></a></p>}
- idx[:xhtml] << %{\n<p class="letter" id="numeral">0 - 9</p>}
- the_idx.each do |i|
- i.each do |x|
- if x.class==String
- f=/^(\S)/.match(x)[1]
- if letter < f
- while letter < f
- if alph.length > 0
- letter=alph.shift
- idx[:html] << %{\n<p class="letter"><a name="#{letter}">#{letter}</a></p><p class="book_index_lev1"><a name="#{letter.downcase}"> </a></p>}
- idx[:xhtml] << %{\n<p class="letter" id="#{letter.downcase}">#{letter}</p>}
- else break
- end
- end
- end
- idx[:sst_rel_html_seg] << %{\n\n#{Mx[:fa_bold_o]}#{x},#{Mx[:fa_bold_c]} }
- idx[:sst_rel] << %{\n\n#{Mx[:fa_bold_o]}#{x},#{Mx[:fa_bold_c]} }
- aname=x.gsub(/\s+/,'_')
- idx[:html] << %{\n<p class="book_index_lev1"><a name="#{aname}"><b>#{x}</b></a>, }
- c=clean_xml(x.dup)
- idx[:xhtml] << %{\n<p class="book_index_lev1"><b>#{c}</b>, }
- @o=idx[:sst_rel_html_seg].index(idx[:sst_rel_html_seg].last)
- @t=idx[:sst_rel].index(idx[:sst_rel].last)
- @q=idx[:html].index(idx[:html].last)
- @r=idx[:xhtml].index(idx[:xhtml].last)
- print "\n" + x + ', ' if @md.opt.cmd =~/V/
- elsif x.class==Array
- p 'array error? -->'
- print x
- elsif x.class==Hash
- if x['term_node_lev1'].class==Array
- x['term_node_lev1'].each do |a|
- if a[:range]
- idx[:sst_rel_html_seg][@o]=idx[:sst_rel_html_seg][@o] + %{#{Mx[:lnk_o]}#{a[:range]}#{Mx[:lnk_c]}#{Mx[:rel_o]}/#{a[:seg]}.html##{a[:ocn]}#{Mx[:rel_c]}, }
- idx[:sst_rel][@t]=idx[:sst_rel][@t] + %{#{Mx[:lnk_o]}#{a[:range]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{a[:ocn]}#{Mx[:rel_c]}, }
- idx[:html][@q]=idx[:html][@q] + %{<a href="#{a[:seg]}.html##{a[:ocn]}">#{a[:range]}</a>, }
- idx[:xhtml][@q]=idx[:xhtml][@q] + %{<a href="#{a[:seg]}.xhtml#o#{a[:ocn]}">#{a[:range]}</a>, }
- print a[:range] + ', ' if @md.opt.cmd =~/V/
- elsif a[:ocn]
- idx[:sst_rel_html_seg][@o]=idx[:sst_rel_html_seg][@o] + %{#{Mx[:lnk_o]}#{a[:ocn]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{a[:seg]}.html##{a[:ocn]}#{Mx[:rel_c]}, }
- idx[:sst_rel][@t]=idx[:sst_rel][@t] + %{#{Mx[:lnk_o]}#{a[:ocn]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{a[:ocn]}#{Mx[:rel_c]}, }
- idx[:html][@q]=idx[:html][@q] + %{<a href="#{a[:seg]}.html##{a[:ocn]}">#{a[:ocn]}</a>, }
- idx[:xhtml][@q]=idx[:xhtml][@q] + %{<a href="#{a[:seg]}.xhtml#o#{a[:ocn]}">#{a[:ocn]}</a>, }
- print a[:ocn] + ', ' if @md.opt.cmd =~/V/
- else p 'error'
- end
- end
- idx[:html][@q]=idx[:html][@q] + '</p>'
- idx[:xhtml][@r]=idx[:xhtml][@r] + '</p>'
- end
- if x['term_node_lev2']
- m=x['term_node_lev2']
- m=m.sort
- m.each do |k,y|
- if k !~/term_node_lev1/
- idx[:sst_rel_html_seg][@o]=idx[:sst_rel_html_seg][@o] + %{#{k}, }
- idx[:sst_rel][@t]=idx[:sst_rel][@t] + %{#{k}, }
- idx[:html][@q]=idx[:html][@q] + %{\n<p class="book_index_lev2">#{k}, }
- c=clean_xml(k.dup)
- idx[:xhtml][@r]=idx[:xhtml][@r] + %{\n<p class="book_index_lev2">#{c}, }
- print "\n\t" + k + ', ' if @md.opt.cmd =~/V/
- y.each do |z|
- if z[:range]
- idx[:sst_rel_html_seg][@o]=idx[:sst_rel_html_seg][@o] + %{#{Mx[:lnk_o]}#{z[:range]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{z[:seg]}.html##{z[:ocn]}#{Mx[:rel_c]}, }
- idx[:sst_rel][@t]=idx[:sst_rel][@t] + %{#{Mx[:lnk_o]}#{z[:range]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{z[:ocn]}#{Mx[:rel_c]}, }
- idx[:html][@q]=idx[:html][@q] + %{<a href="#{z[:seg]}.html##{z[:ocn]}">#{z[:range]}</a>, }
- idx[:xhtml][@q]=idx[:xhtml][@q] + %{<a href="#{z[:seg]}.xhtml#o#{z[:ocn]}">#{z[:range]}</a>, }
- print z[:range] + ', ' if @md.opt.cmd =~/V/
- elsif z[:ocn]
- idx[:sst_rel_html_seg][@o]=idx[:sst_rel_html_seg][@o] + %{#{Mx[:lnk_o]}#{z[:ocn]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{z[:seg]}.html##{z[:ocn]}#{Mx[:rel_c]}, }
- idx[:sst_rel][@t]=idx[:sst_rel][@t] + %{#{Mx[:lnk_o]}#{z[:ocn]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{z[:ocn]}#{Mx[:rel_c]}, }
- idx[:html][@q]=idx[:html][@q] + %{<a href="#{z[:seg]}.html##{z[:ocn]}">#{z[:ocn]}</a>, }
- idx[:xhtml][@q]=idx[:xhtml][@q] + %{<a href="#{z[:seg]}.xhtml#o#{z[:ocn]}">#{z[:ocn]}</a>, }
- print z[:ocn] + ', ' if @md.opt.cmd =~/V/
- else p 'error'
- end
- end
- idx[:html][@q]=idx[:html][@q] + '</p>'
- idx[:xhtml][@r]=idx[:xhtml][@r] + '</p>'
- end
- end
- end
- idx
- @x +=1
- end
- end
- end
- print "\n" if @md.opt.cmd =~/V/
- idx
- end
- def screen_print(the_idx)
- the_idx.each do |i|
- i.each do |x|
- if x.class==String
- print "\n" + x + ', '
- elsif x.class==Array
- p 'array error? -->'
- print x
- elsif x.class==Hash
- if x['term_node_lev1'].class==Array
- x['term_node_lev1'].each do |a|
- if a[:range]
- print a[:range] + ', '
- elsif a[:ocn]
- print a[:ocn] + ', '
- else p 'error'
- end
- end
- end
- if x['term_node_lev2']
- m=x['term_node_lev2']
- m=m.sort
- m.each do |k,y|
- if k !~/term_node_lev1/
- print "\n\t" + k + ', '
- y.each do |z|
- if z[:range]
- print z[:range] + ', '
- elsif z[:ocn]
- print z[:ocn] + ', '
- else p 'error'
- end
- end
- end
- end
- end
- end
- end
- end
- end
- def output_idx(idx)
- if @md.book_idx
- path="#{@env.path.output}/#{@md.fnb}"
- Dir.mkdir(path) unless FileTest.directory?(path)
- puts "#{path}/#{@md.fn[:book_idx_html]} #{__FILE__}::#{__LINE__}"
- html_index_file=File.new("#{path}/#{@md.fn[:book_idx_html]}",'w')
- idx[:html].each {|x| html_index_file << x }
- html_index_file.close
- end
- end
- def clean_and_insert_index(data,sisu_markup_idx)
- tuned_file=[]
- data.each do |dob|
- tuned_file << dob
- if dob.obj =~/#{Mx[:br_endnotes]}/ \
- and sisu_markup_idx
- sisu_markup_idx.each do |idx|
- tuned_file << idx
- end
- end
- end
- tuned_file
- end
- def clean_index(data) #check on use of dob
- tuned_file=[]
- data.each do |para|
- para=para.gsub(/\n*#{@rgx_idx}/m,'')
- tuned_file << para
- end
- tuned_file
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_images.rb b/lib/sisu/v3dv/dal_images.rb
deleted file mode 100644
index 6455daf1..00000000
--- a/lib/sisu/v3dv/dal_images.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Images
- class Images
- #require 'RMagick'
- #include Magick
- def initialize(md,data)
- @md,@data=md,data
- end
- def images
- data=@data
- tuned_file=[]
- @rmgk=false
- imagemagick_=true #imagemagick_=SiSU_Env::InfoSettings.new.program?('rmagick')
- if imagemagick_
- begin
- @rmgk=SiSU_Env::Load.new('RMagick').prog
- rescue
- @rmgk=false
- end
- else
- if @md.opt.cmd =~/[vVM]/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'use of RMagick is not enabled in sisurc.yml').warn
- end
- end
- data.each do |dob|
- unless dob.is ==:table
- dob.obj=dob.obj.strip
- if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- if dob.obj !~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)\s+\d+x\d+/
- m=/#{Mx[:lnk_o]}\s*(\S+\.(?:png|jpg|gif))/
- if imagemagick_
- imgs=dob.obj.scan(m).flatten
- img_col=img_row=nil
- images=imgs.each do |image|
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- path_image=[dir.path.image_source_include_local,dir.path.image_source_include_remote,dir.path.image_source_include]
- image_path=nil
- path_image.each do |img_pth|
- image_path=img_pth
- break if FileTest.exist?("#{img_pth}/#{image}")
- end
- if FileTest.exist?("#{image_path}/#{image}")
- if @rmgk
- img=Magick::ImageList.new("#{image_path}/#{image}")
- img_col,img_row=img.columns,img.rows
- else
- if @md.opt.cmd =~/[vVM]/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'RMagick not present, will attempt to use imagemagick (identify) directly').warn
- end
- imgk=SiSU_Env::SystemCall.new.imagemagick
- gmgk=SiSU_Env::SystemCall.new.graphicksmagick
- if imgk or gmgk
- if imgk
- imgsys=`identify #{image_path}/#{image}`.strip #system call
- elsif gmgk
- imgsys=`gm identify #{image_path}/#{image}`.strip #system call
- end
- img_col,img_row=/(\d+)x(\d+)/m.match(imgsys)[1,2]
- img_col,img_row=img_col.to_i,img_row.to_i
- end
- end
- row=((img && defined? img.rows) ? img.rows : img_row)
- col=((img && defined? img.columns) ? img.columns : img_col)
- if img_col > img_row #landscape
- if img_col> 640
- img_col=640
- img_row=((1.00*img_col/col)*row).round
- end
- else #portrait
- if img_col> 640
- img_col=640
- img_row=((1.00*img_col/col)*row).round
- end
- if img_row > 640
- img_row=640
- img_col=((1.00*img_row/row)*col).round
- end
- end
- dob.obj=dob.obj.gsub(/(#{image})/,"#{image} #{img_col}x#{img_row}")
- else dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}\s*(\S+)\.(png|jpg|gif).+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,'[ \1 (\2 missing) ]')
- end
- end
- else
- images=dob.obj.scan(m) do |image|
- SiSU_Screen::Ansi.new(@md.opt.cmd,'where image dimensions have not been provided RMagick or imagemagick is required',image).warn #unless @opt.cmd =~/q/
- end
- end
- end
- end
- if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- dob.obj=dob.obj.gsub(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ')
- end
- end
- tuned_file << dob unless dob.nil?
- end
- tuned_file
- end
- end
-end
-__END__
-imgsys=`identify #{image_path}/#{image}`.strip
diff --git a/lib/sisu/v3dv/dal_metadata.rb b/lib/sisu/v3dv/dal_metadata.rb
deleted file mode 100644
index f7dc9579..00000000
--- a/lib/sisu/v3dv/dal_metadata.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Metadata
- class Metadata
- def initialize(md,metad)
- @md,@metadata=md,metad
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- language=l[:n]
- @tr=SiSU_Translate::Source.new(md,language)
- end
- def make_para(obj,ocn)
- h={ obj: obj, ocn: 0 }
- SiSU_DAL_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)
- end
- def metadata
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_numbering.rb b/lib/sisu/v3dv/dal_numbering.rb
deleted file mode 100644
index f5a09ef6..00000000
--- a/lib/sisu/v3dv/dal_numbering.rb
+++ /dev/null
@@ -1,470 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Numbering
- class Numbering
- attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment
- def initialize(md,data)
- @md,@data=md,data
- @obj=@type=@ocn=@lv=@name=@index=@comment=nil
- end
- def numbering_song
- data=@data
- data=number_plaintext_para(data)
- data=auto_number_heading_ie_title(data.compact) #tr issue
- data=ocn(data.compact) #watch
- data=xml(data.compact)
- data=minor_numbering(data.compact)
- data,tags_map,ocn_html_seg_map=name_para_seg_filename(data)
- data=set_heading_top(data) unless @md.set_heading_top
- [data,tags_map,ocn_html_seg_map]
- end
- def number_plaintext_para(data)
- @tuned_file=[]
- data.each do |dob|
- if (dob.of !=:block \
- && dob.of !=:comment \
- && dob.of !=:layout) \
- && dob.ocn_ #and dob.obj !~ /#{Mx[:gr_o]}Th|#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}/ #FIX
- dob.obj=dob.obj.gsub(/(.+)\n/,'\1 ') #messy, but idea is that tables should retain breaks
- end
- unless dob.obj.class==Array
- dob.obj=dob.obj.gsub(/^\s+/,'').
- gsub(/\s$/,"\n")
- end
- @tuned_file << dob
- end
- @tuned_file=@tuned_file.flatten
- end
- def number_sub_heading(dob,num,title_no)
- unless dob.obj =~/\d+\.|(?:chapter|article|section|clause)\s+\d+/i #name selection arbitrary, fix
- dob.obj=case dob.name
- when /-/; dob.obj.gsub(/^/,"#{title_no} ")
- when /^#/; dob.obj.gsub(/^/,"#{title_no} ")
- when /^[a-z_\.]+/; dob.obj.gsub(/^/,"#{title_no} ")
- else
- dob.name=title_no if dob.name=~/^$/ #where title contains title number
- dob.obj.gsub(/^/,"#{title_no} ") if title_no =~/\d+/ #main, where title number is to be provided #watch changed placement
- end
- if @md.toc_lev_limit \
- and @md.toc_lev_limit < num
- dob.obj=dob.obj.gsub(/^/,'!_ ') #bold line, watch
- end
- end
- dob
- end
- def heading_tag_clean(heading_tag)
- heading_tag=heading_tag.gsub(/[ ]+/,'_').
- gsub(/["']/,'').
- gsub(/[\/]/,'-').
- gsub(/#{Mx[:fa_bold_o]}|#{Mx[:fa_bold_c]}/,'').
- gsub(/#{Mx[:fa_italics_o]}|#{Mx[:fa_italics_c]}/,'').
- gsub(/#{Mx[:fa_underscore_o]}|#{Mx[:fa_underscore_c]}/,'').
- gsub(/#{Mx[:fa_cite_o]}|#{Mx[:fa_cite_c]}/,'').
- gsub(/#{Mx[:fa_insert_o]}|#{Mx[:fa_insert_c]}/,'').
- gsub(/#{Mx[:fa_strike_o]}|#{Mx[:fa_strike_c]}/,'').
- gsub(/#{Mx[:fa_superscript_o]}|#{Mx[:fa_superscript_c]}/,'').
- gsub(/#{Mx[:fa_subscript_o]}|#{Mx[:fa_subscript_c]}/,'').
- gsub(/#{Mx[:fa_hilite_o]}|#{Mx[:fa_hilite_c]}/,'').
- gsub(/#{Mx[:gl_bullet]}/,'')
- end
- def auto_number_heading_ie_title(data) #also does some segment naming
- @tuned_file=[]
- if defined? @md.make.num_top \
- and @md.make.num_top \
- and @md.make.num_top !~/^$/
- input||=@md.make.num_top
- end
- num_top=(input ? input.to_i : nil)
- t_no1=t_no2=t_no3=t_no4=0
- if num_top
- no1=num_top; no2=(num_top + 1); no3=(num_top + 2); no4=(num_top + 3)
- end
- t_not=0
- chapter_number_counter=0
- 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
- if dob.is ==:heading \
- && dob.autonum_ \
- and defined? @md.make.num_top \
- and @md.make.num_top !~/^$/
- if dob.lv=='1' \
- and dob.obj =~/^#\s|\s#(?:\s|$)/
- chapter_number_counter +=1
- dob.obj=dob.obj.gsub(/^#\s/,"#{chapter_number_counter} ").
- gsub(/#([:,]?\s|[.]?$)/,"#{chapter_number_counter}\\1")
- end
- if dob.ln==no1
- @subnumber=1
- @subnumber=0 if dob.ln==no1
- end
- if dob.ln.to_s =~/^[1-6]/ \
- and not dob.toc_ \
- and dob.obj !~/#{Mx[:fa_o]}(?:~#|-#)#{Mx[:fa_c]}/ # <-- fix
- if dob.ln==no1
- t_no1+=1; t_no2=0; t_no3=0
- title_no="#{t_no1}"
- if not @md.seg_names.nil? \
- and not @md.seg_names.include?(title_no)
- if dob.ln==no1
- dob.name="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- tag=dob.obj.gsub(/(Article|Clause|Section|Chapter)\s+/,"\\1_#{title_no}").downcase
- tag=heading_tag_clean(tag)
- dob.tags=[tag,dob.tags].flatten if tag !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj=(dob.obj =~/(Article|Clause|Section)\s+/) \
- ? (dob.obj.gsub(/(Article|Clause|Section)\s+/,"\\1 #{title_no} "))
- : (dob.obj.gsub(/^/,"#{title_no}. ")) #fix stop later
- end
- if dob.ln !=no1 \
- and dob.obj =~/^[\d.]+\s/ #fix -> if the title starts with a numbering scheme, do not auto-number, review
- dob.name ="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj=dob.obj.gsub(/^/,"#{title_no}. ")
- end
- @md.seg_names << title_no
- end
- if dob.ln!=no1 \
- and dob.name!~/^[a-z_\.]+$/ \
- and dob.obj !~/[A-Z]\.?\s/ #bug -> tmp fix, excludes A. B. C. lettering, but not roman numerals, is arbitrary, review required # not fixed, work on
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj=dob.obj.gsub(/^/i,"#{title_no}. ")
- end
- end
- if dob.ln==no1 #watch because here you change dob.name
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
- end
- if dob.ln==no2 #watch because here you change dob.name
- t_no2+=1; t_no3=0
- title_no="#{t_no1}.#{t_no2}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
- dob=number_sub_heading(dob,no2,title_no)
- end
- if dob.ln==no3 #watch because here you change dob.name
- t_no3+=1
- title_no="#{t_no1}.#{t_no2}.#{t_no3}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
- dob=number_sub_heading(dob,no3,title_no)
- end
- elsif dob.ln.to_s =~/^[1-6]/ \
- and dob.name =~ /^[\w-]+-/ # endnotes, watch2005# endnotes, watch2005
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- dob.name.gsub(/^([a-z_\.]+)-$/,'\1')
- end
- elsif dob.is ==:heading \
- and dob.autonum_ \
- and @md.markup =~/num_extract/ #AS DANGEROUS force enable with document, note already does this type of numbering for cisg, locate and coordinate logic, is currently misplaced in code, chengwei inspired 2004w23/4
- #here lies a bug, as is nil when run from -Dv --update, FIX
- if (dob.name.nil? or dob.name.empty?) \
- and dob.ln.to_s =~/^[1-9]/ \
- and dob.obj =~ /^([\d\.]+)/ #risky (must be unique) consider output to 4~~\d instead of 4~\d
- dob.name=$1
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- end
- if @md.toc_lev_limit
- end
- elsif defined? dob.name \
- and dob.name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- end
- dob.tags=dob.tags.uniq if defined? dob.tags
- @tuned_file << dob
- end
- @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
- end
- def xml(data)
- @tuned_file=SiSU_DAL_DocumentStructureExtract::XML.new(@md,data).dom
- @tuned_file
- end
- def minor_numbering(data) #and auto segment numbering increment
- @tuned_file=[]
- number_small,letter_small=0,0
- letter=%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 )
- data.each do |dob|
- if dob.of ==:heading \
- || dob.of ==:heading_insert \
- || dob.of ==:para \
- || dob.of ==:block
- if dob.is ==:heading \
- and dob.ln.to_s=~/^[1-9]/ #% sub-number system, (baby numbering) reset with any change of major number (more obviously should be placed in number titles, but that is conditionally executed, check and move later)
- number_small,letter_small=0,0
- elsif dob.is ==:para
- if dob.obj =~/^#[ 1]/ \
- and dob.obj !~/^#\s+(?:~#)?$/
- letter_small=0
- number_small=0 if dob.obj =~ /^#1/
- number_small+=1
- dob.obj=dob.obj.gsub(/^#[ 1]/,"#{number_small}. ")
- end
- if dob.obj =~/^_# /
- dob.obj=dob.obj.gsub(/^_# /,"#{letter[letter_small]}. ")
- dob.indent='1'
- letter_small+=1
- end
- end
- end
- @tuned_file << dob
- end
- @tuned_file=@tuned_file.flatten
- end
- def name_para_seg_filename(data) #segment naming, remaining
- # paragraph name/numbering rules
- # manual naming overrides, manual naming may be
- # alpha-numeric characters mixed,
- # numeric only (a number), if
- # all segments have been named,
- # the numbers used are over 1000 or
- # it is not minded that auto-numbering uses a funny scheme for naming segments (not yet implemented)
- # [for now a warning is printed for such documents on use of maintenance or very-verbose flag]
- # auto-naming takes the form of giving numbers to segments
- # the rules for which are as follows
- # if the title/heading text starts with a numeric, then that is used (1 3.1 3rd etc.)
- # otherwise the level 4 segment number from the embedded document structure info is used
- # if there is none a sequential number is designated, preceded by an underscore
- @tuned_file,@unique_auto_name=[],[]
- tags={}
- art_filename_auto=1
- @counter=1
- if not @md.seg_autoname_safe and @md.opt.cmd =~/[MV]/
- puts 'manual segment names, numbers used as names, risk warning (segmented html)'
- end
- ocn_html_seg=[]
- data.each do |dob|
- if dob.is==:heading \
- && dob.ln \
- and dob.ln.to_s =~/^[456]/
- if dob.ln==4 \
- and not dob.name \
- and not @md.set_heading_seg
- @md.set_heading_seg=true
- end
- if dob.name !~/^\S+/ \
- and dob.obj =~/^\s*(?:\S+\s+)?([\d.,:-]+)/m #heading starts with a recognised numeric or word followed by a recognised numerical construct, use that as name
- possible_seg_name=$1
- possible_seg_name=possible_seg_name.gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- if not @md.seg_names.nil? \
- and not @md.seg_names.include?(possible_seg_name)
- dob.name=possible_seg_name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
- @md.seg_names << possible_seg_name
- else puts 'warn, there may be a conflicting numbering scheme' if @md.opt.cmd =~/[VM]/
- end
- end
- if dob.ln==4 \
- and dob.name #extract segment name from embedded document structure info
- if not @md.seg_names.nil? \
- and not @md.seg_names.include?(dob.name)
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
- @md.seg_names << dob.name
- end
- end
- if dob.ln==4 \
- and not dob.name #if still no segment name, provide a numerical one
- pf='_' #pg='' #may use e.g. '' or '~' or '_'
- segn_auto="#{pf}#{art_filename_auto.to_s}"
- if not @md.seg_names.nil? \
- and not @md.seg_names.include?(segn_auto)
- dob.name=segn_auto
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- @md.seg_names << segn_auto
- else puts 'segment name (numbering) error'
- end
- art_filename_auto+=1
- end
- if dob.ln==4 \
- and not dob.name #should not occur
- puts "e r r o r -\t#{__FILE__}::#{__LINE__}\n#{dob.inspect}"
- end
- end
- if (dob.is ==:heading \
- || dob.is ==:heading_insert) \
- && dob.ln==4
- @seg=dob.name
- end
- @tuned_file << if dob.is==:heading \
- && (@md.pagenew || @md.pagebreak)
- 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
- elsif @md.pagebreak.inspect =~/#{m}/
- dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) << dob
- end
- para_result=unless dob_tmp.length > 0; dob
- else dob_tmp
- end
- else dob
- end
- if defined? dob.ocn \
- and dob.ocn
- @segname=((dob.is==:heading || dob.is==:heading_insert) && dob.ln==4 && (defined? dob.name)) \
- ? (dob.name)
- : @segname
- tags["#{dob.ocn}"]={ segname: @segname }
- ocn_html_seg[dob.ocn]=if (dob.is==:heading || dob.is==:heading_insert)
- x=if dob.ln =~/[1-3]/
- { seg: nil, level: dob.ln }
- else #elsif dob.ln =~/[4-6]/
- { seg: @seg, level: dob.ln }
- end
- else
- { seg: @seg, level: nil }
- end
- end
- dob.tags=dob.tags.uniq if defined? dob.tags
- if defined? dob.tags \
- and dob.tags.length > 0
- #@segname=((dob.is=='heading'|| dob.is=='heading_insert') && dob.ln==4 && (defined? dob.name)) \
- #? (dob.name) \
- #: @segname
- dob.tags.each do |x|
- tags[x]={ ocn: dob.ocn.to_s, segname: @segname }
- end
- end
- dob
- end
- ocn_html_seg.each_with_index do |ocn,i|
- if ocn \
- and ocn[:level].to_s=~/[1-3]/
- ocn_seg=nil
- (1..4).each do |x|
- if ocn_html_seg[i+x] and ocn_html_seg[i+x][:level]==4
- ocn[:seg]=ocn_html_seg[i+x][:seg]
- end
- end
- end
- end
- if @md.seg_names.length > 0
- @md.set_heading_seg=true
- end
- tuned_file=@tuned_file.flatten
- [tuned_file,tags,ocn_html_seg]
- end
- def set_heading_top(data) #% make sure no false positives
- unless @md.set_heading_top
- puts "\tdocument contains no top level heading, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- @tuned_file=[]
- data.each do |t_o|
- unless @md.set_heading_top
- if t_o !~/^(?:#{Rx[:meta]}|@\S+:)\s/m \
- and t_o !~/\A\s*\Z/m
- @md.set_heading_top=true
- if defined? @md.title \
- and @md.title \
- and defined? @md.title.full \
- and defined? @md.creator \
- and @md.creator
- head=@md.title.main ? ([@lv='1',@obj=@md.title.main]) : ([@lv='1',@obj='[no title provided]'])
- @tuned_file << head
- end
- end
- end
- @tuned_file << t_o
- end
- @tuned_file=@tuned_file.flatten
- end
- end
- def set_heading_seg(data) #% make sure no false positives
- unless @md.set_heading_seg
- puts "\tdocument contains no segment level, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- @tuned_file=[]
- data.each do |dob|
- unless @md.set_heading_seg
- if defined? dob.ln and dob.ln.to_s !~/^[123]/m \
- and dob.obj !~/\A\s*\Z/m \
- and dob.is !=:layout
- @md.set_heading_seg=true
- head=if @md.title.main ; dob.ln,dob.name,dob.obj=4,'seg',@md.title.main
- else dob.ln,dob.name,dob.obj=4,'seg','[segment]'
- end
- @tuned_file << head
- end
- end
- @tuned_file << dob
- end
- @tuned_file=@tuned_file.flatten
- end
- end
- def set_header_title(data) #% make sure no false positives
- unless @md.set_header_title
- puts "\t no document title provided, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- @tuned_file=[]
- data.each do |t_o|
- unless @md.set_header_title
- if t_o !~/^%{1,2}\s/m \
- and t_o !~/\A\s*\Z/m
- @tuned_file << "#{Mx[:meta_o]}title#{Mx[:meta_c]} #{@md.heading_seg_first}"
- @md.title.main=@md.heading_seg_first
- @md.set_header_title=true
- end
- end
- @tuned_file << t_o
- end
- @tuned_file=@tuned_file.flatten
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_substitutions_and_insertions.rb b/lib/sisu/v3dv/dal_substitutions_and_insertions.rb
deleted file mode 100644
index 2ae365be..00000000
--- a/lib/sisu/v3dv/dal_substitutions_and_insertions.rb
+++ /dev/null
@@ -1,156 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_SubstituteAndInsert
- class SI
- def initialize(md,data)
- @md,@data=md,data
- @skin=SiSU_Env::InfoSkin.new(@md)
- end
- def substitutions_and_insertions?
- data=@data
- data_expand=[]
- if data[0] =~ /^#!\s*(?:\/usr\/bin\/env sisu|\/usr\/bin\/sisu)/ # remove bang from top #! (however file is stripped, so will be removed provided no content precedes it)
- data[0]=data[0].gsub(/^#!\s*\/usr\/bin\/sisu/,'').
- gsub(/^#!\s*\/usr\/bin\/env sisu/,'')
- end
- if data[0] =~ /^(SiSU\s+[\d.]*|sisu-[\d.]+)$/ # SiSU identifier
- data[0]=data[0].gsub(/^(SiSU\s*[\d.]*)$/,'% \1').
- gsub(/^(sisu-[\d.]+)$/,'% \1')
- end
- data.each do |para|
- if para =~/<:(insert\d+)!?>/ \
- and para !~/^%\s+/
- @skin.select
- ins=SiSU_Viz::Inserts.new
- case para
- when /^\s*<:(insert1)>\s*$/
- i=$1
- if defined? ins.insert1
- para=[]
- ins.insert1.split(/\n\n/).each {|x| para << x }
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert2)>\s*$/
- i=$1
- if defined? ins.insert2
- para=[]
- ins.insert2.split(/\n\n/).each {|x| para << x }
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert3)>\s*$/
- i=$1
- if defined? ins.insert3
- para=[]
- ins.insert3.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert4)>\s*$/
- i=$1
- if defined? ins.insert4
- para=[]
- ins.insert4.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert5)>\s*$/
- i=$1
- if defined? ins.insert5
- para=[]
- ins.insert5.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert6)>\s*$/
- i=$1
- if defined? ins.insert6
- para=[]
- ins.insert6.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert7)>\s*$/
- i=$1
- if defined? ins.insert7
- para=[]
- ins.insert7.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- end
- para.each {|x| data_expand << x }
- else data_expand << para
- end
- data_expand=data_expand.flatten.compact
- end
- data_new=[]
- data_expand.each do |para|
- para=if @md.markup_version.determined >= 0.38
- SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure_markup_normalize
- else
- SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure_marks
- end
- para=para.gsub(/^(:?A~)\s*$/,'\1~ @title @author'). #conditional header
- gsub(/^((?:[1-9]|:?[A-C])~\S*)\s*$/,'\1~ [Note: heading marker::required title missing]~#') #conditional header for incorporated document 2004w12
- if para =~/^@\S+?:/
- para=para.gsub(/^@(\S+?):(\s+|$)/,"#{Mx[:meta_o]}\\1#{Mx[:meta_c]}\\2").
- gsub(/^@(\S+?):([+-])(\s+|$)/,"#{Mx[:meta_o]}\\1\\2#{Mx[:meta_c]}\\3")
- end
- data_new << para
- end
- data_new
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dal_syntax.rb b/lib/sisu/v3dv/dal_syntax.rb
deleted file mode 100644
index 73bb6a64..00000000
--- a/lib/sisu/v3dv/dal_syntax.rb
+++ /dev/null
@@ -1,554 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: Syntax for markup, input markup syntaxes, determined here
-
-=end
-module SiSU_DAL_Syntax
- class Words
- def initialize(line,md,mkp)
- @line,@md,@mkp=line,md,mkp
- end
- end
- class Markup
- def initialize(md='',data='')
- @data,@md=data,md
- @vz=SiSU_Env::GetInit.instance.skin
- @data_new=[]
- url_and_stub=SiSU_Env::InfoEnv.new.url
- @output_url="#{url_and_stub.remote}"
- @env=SiSU_Env::InfoEnv.new
- emph_set=if defined? @md.make.emphasis \
- and not @md.make.emphasis.nil?
- @md.make.emphasis
- else @env.markup_emphasis
- end
- @emph=case emph_set
- when /bold/
- emph_italics=false
- { o: Mx[:fa_bold_o], c: Mx[:fa_bold_c] }
- when /italics/
- emph_italics=true
- { o: Mx[:fa_italics_o], c: Mx[:fa_italics_c] }
- when /underscore/
- emph_italics=false
- { o: Mx[:fa_underscore_o], c: Mx[:fa_underscore_c] }
- else p __LINE__.to_s + '::' + __FILE__
- end
- @http_m=%r{\{.+?\}https?://\S+|https?:\S+|:\S+|\.\.\/\S+|#\S+|\S+?\.png\b|[*]~\S+|^#{Mx[:meta_o]}.+|#{Mx[:gr_o]}(?:code|block|group|alt|verse)(?:-end)?#{Mx[:gr_c]}|#{Mx[:fa_o]}:br#{Mx[:fa_c]}}
- @manmkp_ital=emph_italics \
- ? '[i/*]\\{.+?\\}[i/*]'
- : '[i/]\\{.+?\\}[i/]'
- tail_m_ital=%q{(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$)}
- tail_m_bold=%{(?:(?:#{Mx[:fa_italics_c]})?(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$))?}
- bold_line=%{^!_\s.+?(?:#{Mx[:br_line]}|\n|$)}
- ital_line=%{^/_\s.+?(?:#{Mx[:br_line]}|\n|$)}
- @line_scan_ital=if defined? @md.make.italics[:str] \
- and defined? @vz.markup_make_italic[:str]
- /#{@http_m}|#{bold_line}|#{@manmkp_ital}#{tail_m_ital}|(?:#{@md.make.italics[:str]}|#{@vz.markup_make_italic[:str]})#{tail_m_ital}|\S+|\n/i
- elsif defined? @md.make.italics[:str]
- /#{@http_m}|#{bold_line}|#{@manmkp_ital}#{tail_m_ital}|#{@md.make.italics[:str]}#{tail_m_ital}|\S+|\n/i
- elsif defined? @vz.markup_make_italic[:str]
- /#{@http_m}|#{bold_line}|#{@manmkp_ital}#{tail_m_ital}|#{@vz.markup_make_italic[:str]}#{tail_m_ital}|\S+|\n/i
- end
- @manmkp_bold=emph_italics \
- ? '^!_\s.+?(?:\n|$)|[!b]\\{.+?\\}[*!b]|[*!][a-zA-Z0-9\-_]+[!]'
- : '^!_\s.+?(?:\n|$)|[*!b]\\{.+?\\}[*!b]|[*!][a-zA-Z0-9\-_]+[*!]'
- @line_scan_bold=if (defined? @md.make.bold[:str] \
- and @md.make.bold[:str]) \
- and (defined? @vz.markup_make_bold[:str] \
- and @vz.markup_make_bold[:str])
- /#{@http_m}|#{bold_line}|(?:#{@manmkp_bold}|#{@md.make.bold[:str]}|#{@vz.markup_make_bold[:str]})#{tail_m_bold}|\S+|\n/i
- elsif defined? @md.make.bold[:str] \
- and @md.make.bold[:str]
- /#{@http_m}|#{bold_line}|(?:#{@manmkp_bold}|#{@md.make.bold[:str]})#{tail_m_bold}|\S+|\n/i
- elsif defined? @vz.markup_make_bold[:str] \
- and @vz.markup_make_bold[:str]
- /#{@http_m}|#{bold_line}|(?:#{@manmkp_bold}|#{@vz.markup_make_bold[:str]})#{tail_m_bold}|\S+|\n/i
- end
- end
- def songsheet
- @data=@data.compact
- @data.each do |dob|
- dob=breaks(dob)
- dob=if @md.sem_tag then sem(dob) else dob end #revisit
- dob=wordlist_italics(dob)
- dob=wordlist_bold(dob)
- dob=bodymarkup(dob)
- @data_new << dob unless dob.nil?
- end
- @data_new
- end
- def sem(dob) #revisit
- dob=SiSU_Sem::Tags.new(dob,@md).rm.all
- end
- def breaks(dob)
- if dob.is !=:meta \
- && dob.is !=:comment \
- && dob.is !=:code \
- && dob.is !=:table
- dob.obj=dob.obj.gsub(/ \\\\(?: |$)/,"#{Mx[:br_line]}").
- gsub(/(?:<:?br>|<br \/>)/,"#{Mx[:br_line]}") # depreciated
- end
- dob
- end
- def wordlist_italics(dob)
- dob=dob.dup
- if (defined? @md.make.italics[:str] \
- and @md.make.italics[:str]) \
- or (defined? @vz.markup_make_italic[:str] \
- and @vz.markup_make_italic[:str])
- dob.obj=if dob.is !=:meta \
- && dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment
- word=dob.obj.scan(@line_scan_ital)
- word=word.flatten.compact
- line_array=[]
- word.each do |w|
- unless /#{@manmkp_ital}|#{@http_m}/.match(w)
- if defined? @md.make.italics[:regx] \
- and @md.make.italics[:regx]
- w=w.gsub(@md.make.italics[:regx],
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
- elsif defined? @vz.markup_make_italic \
- and @vz.markup_make_italic
- w=w.gsub(@vz.markup_make_italic,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
- else w
- end
- end
- line_array << w
- end
- line_array.join(' ')
- else dob.obj
- end
- end
- dob
- end
- def embolden(given)
- given=given.gsub(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}\\2").
- gsub(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*)/,
- "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}").
- gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
- gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
- gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s*([~-]#)$/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
- gsub(/(?:^!_\s+|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]}\s*)(.*)?\s*$/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
- end
- def italicise(given)
- given=given.gsub(/^\/_\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
- gsub(/^\/_\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
- gsub(/^\/_\s*(.+?)\s*([~-]#)$/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
- gsub(/^\/_\s+(.*)?\s*$/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
- end
- def wordlist_bold(dob)
- dob=dob.dup
- if (defined? @md.make.bold[:str] \
- and @md.make.bold[:str]) \
- or (defined? @vz.markup_make_bold[:str] \
- and @vz.markup_make_bold[:str])
- dob.obj=if dob.is !=:meta \
- && dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment \
- && dob.is !=:table
- line_array=[]
- word=dob.obj.scan(@line_scan_bold)
- word=word.flatten.compact
- word.each do |w|
- unless /#{@manmkp_bold}|#{@http_m}/.match(w)
- if defined? @md.make.bold[:regx] \
- and @md.make.bold[:regx] #document header: @bold: [bold word list]
- w=w.gsub(@md.make.bold[:regx],"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
- elsif defined? @vz.markup_make_bold \
- and @vz.markup_make_bold #defaults and skin adjusted bold word list
- w=w.gsub(@vz.markup_make_bold,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
- end
- else
- w=if w =~ /(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s+/; embolden(w) #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost!
- elsif w =~/^\/_\s+/; italicise(w)
- else w
- end
- end
- line_array << w
- end
- line_array.join(' ')
- else dob.obj
- end
- else
- dob.obj=if (dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:comment \
- && dob.is !=:meta) \
- and dob.obj =~ /^!_\s+/
- embolden(dob.obj)
- elsif dob.is==:heading \
- and dob.ln.to_s =~/[7-9]/
- embolden(dob.obj)
- else dob.obj
- end
- if dob.obj =~ /\/_\s+/
- dob.obj=italicise(dob.obj)
- end
- end
- dob
- end
- def fontface(dob)
- dob.obj=dob.obj.gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)\*\{(.+?)\}\*/m,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)!\{(.+?)\}!/m,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\(|\>)\/\{(.+?)\}\//m,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)_\{(.+?)\}_/m,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)#\{(.+?)\}#/m,
- "\\1#{Mx[:fa_monospace_o]}\\2#{Mx[:fa_monospace_c]}"). #monospace
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/m,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}"). #cite /blockquote?
- gsub(/(^|[^\\])\^\{(.+?)\}\^/m,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}"). #superscript
- gsub(/(^|[^\\]),\{(.+?)\},/m,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}"). #subscript
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/m,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}"). #inserted text
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/m,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}"). #strikethrough - deleted text
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>|\d+)\^(\S+?)\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript single word, watch digit added
- dob
- end
- def bodymarkup(dob)
- # << http://www.jus.uio.no/sisu/sisu_markup_table/markup >>
- # See: data/sisu/sample/document_samples_sisu_markup/
- ## fontface
- # *{emphasis}* e{emphasis}e <strong>emphasis</strong>
- # !{bold text}! b{bold}b <b>bold text</b>
- # _{underline}_ u{underline}u <u>underline</u>
- # /{italics}/ i{italics}i <i>italics</i>
- # "{citation}" c{citation}c <cite>citation</cite> #blockquote?
- # ^{superscript}^ <sup>superscript</sup>
- # ,{subscript}, <sub>subscript</sub>
- # +{inserted text}+ <ins>inserted text</ins>
- # -{deleted text}- <del>deleted text</del>
- # #{monospace text}#
- #
- # {url address}:url
- # {image.png}imageurl
- # {image.png}png
- # ~{endnote}~ <!e endnote !>
- # !_ #bold/emphasise paragraph
- # _" #blockquote paragraph
- # _1 <:i1> #indent paragraph 1 step
- # _2 <:i2> #indent paragraph 2 steps
- # _3 <:i3> #indent paragraph 3 steps
- # _4 <:i4> #indent paragraph 4 steps
- # _* #bullet (list) ●
- # _1* #bullet (list) indented
- # _1* #bullet (list) indented
- # # #numbered (list) level 1
- # _# #numbered (list) level 2
- dob=dob.dup
- if dob.is !=:meta \
- && dob.is !=:comment \
- && dob.is !=:code \
- && dob.is !=:table
- line_array=[]
- word=dob.obj.scan(/\S+|\n/) #unless line =~/^(?:#{Mx[:meta_o]}|%+\s)/ #visit
- if word
- word.each do |w| # _ - / # | : ! ^ ~
- unless w =~/~\{|\}~|~\[|\]~|^\^~|~\^|\*~\S+|~#|\{t?~|\{table|https?:\/\/\S+/ # do something earlier about table!!
- w=w.gsub(/\\?~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") #escaped special character
- end
- w=w.gsub(/^\<$/,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}").gsub(/^\>$/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character
- line_array << w
- end
- dob.obj=line_array.join(' ')
- dob.obj=dob.obj.strip
- end
- dob.obj=dob.obj.gsub(/^([*#-.]{1,12})$/,'\1 ~#'). #ocn off for these paragraph separators
- gsub(/~\{(.+?)\}~/m,Mx[:en_a_o] + '\1' + Mx[:en_a_c]).
- gsub(/~\[([^*+].+?)\]~/m,Mx[:en_b_o] + '* \1' + Mx[:en_b_c]). #default if markup does not specify
- gsub(/~\[(.+?)\]~/m,Mx[:en_b_o] + '\1' + Mx[:en_b_c])
- if dob.is ==:heading \
- and dob.ln ==1
- dob.obj=dob.obj.gsub(/\s*@title\b/," #{@md.title.full}")
- dob.obj=if defined? @md.creator.author \
- and @md.creator.author
- dob.obj.gsub(/\s+(?:@creator|@author)/,",#{Mx[:br_line]}#{@md.creator.author}")
- else dob.obj.gsub(/\s+(?:@creator|@author)/,'')
- end
- end
- if defined? @md.title \
- and @md.title \
- and defined? @md.title.full \
- and defined? @md.creator \
- and @md.creator
- if dob.is ==:heading
- dob.obj=dob.obj.gsub(/^\s*@title\s*$/,@md.title.full) if dob.lv =~/1/
- dob.obj=if dob.lv =~/[23]/ \
- and defined? @md.creator.author \
- and @md.creator.author
- dob.obj.gsub(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1#{@md.creator.author}")
- else dob.obj.gsub(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,'\1')
- end
- end
- end
- dob.obj=dob.obj.gsub(/<(https?:\/\/\S+?)>/,'< \1 >'). #catch problem markup
- gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image').
- gsub(/<!(\S+)!>/,'<:\1>'). #escaped special character
- gsub(/&nbsp;/,"#{Mx[:nbsp]}"). #escaped special character
- gsub(/\\~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\{/,"#{Mx[:gl_o]}#123#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\}/,"#{Mx[:gl_o]}#125#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\<</,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}#{Mx[:gl_o]}#lt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\>>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}#{Mx[:gl_o]}#gt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\</,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\_/,"#{Mx[:gl_o]}#095#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\-/,"#{Mx[:gl_o]}#045#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\+/,"#{Mx[:gl_o]}#043#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\//,"#{Mx[:gl_o]}#047#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\#/,"#{Mx[:gl_o]}#035#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\&/,"#{Mx[:gl_o]}#038#{Mx[:gl_c]}"). #&amp; #escaped special character
- gsub(/\\\|/,"#{Mx[:gl_o]}#124#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\:/,"#{Mx[:gl_o]}#058#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\^/,"#{Mx[:gl_o]}#094#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\,/,"#{Mx[:gl_o]}#044#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\\/,"#{Mx[:gl_o]}#092#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\*/,"#{Mx[:gl_o]}#042#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}") #escaped special character
- if dob.obj=~/(?:https?:|ftp:|\{([^{}]+?)\}(?:#|:|[.]{1,2}\/))\S+/m
- if dob.obj=~/(?:^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (?:.+?)\s*\}(?:(?:https?:|ftp:|:|[.]{1,2}\/)\S+?)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m
- dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ ([^}]+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3 #{Mx[:en_a_o]}\\3 \\4#{Mx[:en_a_c]}") # watch
- end
- if dob.obj=~/(?:^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (?:.+?)\s*\}(?:(?:https?:|ftp:|:|[.]{1,2}\/)\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m
- dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (.+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4 #{Mx[:en_a_o]}\\3#{Mx[:en_a_c]} ")
- end
- dob.obj=dob.obj.gsub(/(^|[^#])\{\s*([^{}]+?)\s*\}((?:https?:|:|[.]{2}\/|#)\S+?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3"). #linked (text or image, however text cannot include modified face, e.g. bold, ital, underline)
- gsub(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])((?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3}).
- gsub(/#{Mx[:lnk_c]}#(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}\\1#{Mx[:rel_c]}\\2}).
- gsub(/#{Mx[:lnk_c]}:(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2}).
- gsub(/#{Mx[:lnk_c]}[.]{2}\/(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2})
- end
- if dob.obj=~/_(?:https?|ftp):\S+/m # _http://url #CHECK
- dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])(_(?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3})
- end
- dob=fontface(dob)
- dob.obj=dob.obj.gsub(/<[:e]\s+(.+?)!?>/,
- "#{Mx[:en_a_o]}\\1#{Mx[:en_a_c]}"). #not tested
- gsub(/^\s*_\*\s*/,
- "#{Mx[:gl_bullet]}"). #bullets, shortcut
- gsub(/=\{(.+?)\}/,
- "#{Mx[:idx_o]}\\1#{Mx[:idx_c]}").
- gsub(/^\s*_([1-9])\*\s*/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:gl_bullet]}"). #bullets, shortcut
- gsub(/^\s*_([1-9])\s+/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}"). #indent
- gsub(/^\s*_([1-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} "). #indent bold
- gsub(/^\s*__([1-9])\s+/,
- "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}"). #hang
- gsub(/^\s*__([1-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} "). #hangdef
- gsub(/^\s*_([0-9])_([0-9])\s+/,
- "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}"). #hang
- gsub(/^\s*_([0-9])_([0-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\3#{Mx[:fa_bold_c]} "). #hangdef
- gsub(/<:hi>/,"#{Mx[:fa_hilite_o]}"). #'<span style="background-color: rgb(255,240,196)">') # bright yellow rgb(255,255,0) pale yellow rgb(255,255,200)
- gsub(/<:\/hi>/,"#{Mx[:fa_hilite_c]}"). #'</span>')
- gsub(/(#{Mx[:gr_o]}verse#{Mx[:gr_c]}.+)/m,"\\1\n").
- gsub(/[ ]+($)/,'\1').
- gsub(/\{\s*(.+?)\s*\}(https?:\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3"). #any remaining linked text or image
- gsub(/\{\s*(.+?)\s*\}(#{Mx[:url_o]}\S+?#{Mx[:url_c]})/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2"). #any remaining linked text or image
- gsub(/(^|\s)([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)/,"\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}").
- gsub(/(^|[ ])\{\s*(.+?)\s*\}(\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4"). #any remaining linked text or image
- gsub(/\{\s*(.+?)\s*\}#([a-zA-Z0-9][a-zA-Z0-9_-]*)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:rel_o]}\\2#{Mx[:rel_c]}\\3"). #any remaining linked text or image, check need
- gsub(/\{\s*(.+?)\s*\}(#{Mx[:rel_o]}\S+?#{Mx[:rel_c]})/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2"). #any remaining linked text or image, check need
- gsub(/\{\s*(.+?)\s*\}(image)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #linked image
- elsif dob.is==:table
- dob=fontface(dob)
- elsif dob.is ==:code
- dob.obj=dob.obj.gsub(/#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}\s*/,'@\1: ').
- gsub(/(^|#{Mx[:gl_c]}|\s)&lt;(br(?: \/)?)&gt;([\s,.]|$)/,'\1<\2>\3') #convert <br> <br /> back, clumsy
- if dob.number_
- codeline=[]
- ln=1
- dob.obj.split(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}|<br(?: \/)?>|\n/).each_with_index do |cl,i|
- unless i == 0
- cl=cl.gsub(Mx[:br_nl],'')
- w=3-ln.to_s.length
- cl = "#{ln}#{Mx[:nbsp]*w}#{Mx[:vline]}#{cl}#{Mx[:br_nl]}"
- ln +=1
- end
- codeline << cl
- end
- codeline= codeline.join("")
- dob.obj=codeline
- else
- dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}/,"\n")
- end
- dob
- else # @\S+?:
- end
- dob
- end
- def tech #script markup planned to be more strict for technical documents
- # *{emphasis}* e{emphasis}e <strong>emphasis</strong>
- # !{bold text}! b{bold}b <b>bold text</b>
- # _{underline}_ u{underline}u <u>underline</u>
- # /{italics}/ i{italics}i <i>italics</i>
- # "{citation}" c{citation}c <cite>citation</cite>
- # ^{superscript}^ <sup>superscript</sup>
- # ,{subscript}, <sub>subscript</sub>
- # +{inserted text}+ <ins>inserted text</ins>
- # -{deleted text}- <del>deleted text</del>
- # #{monospace text}#
- # {url address}:url
- # {image.png}imageurl
- # {image.png}png
- # ~{endnote}~ <!e endnote !>
- # +1 <!i1!>
- # +2 <!i2!>
- puts 'tech'
- @data.each do |line|
- line=line.gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)e\{(.+?)\}e/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)b\{(.+?)\}b/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)u\{(.+?)\}u/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)c\{(.+?)\}c/,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}"). #cite
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)i\{(.+?)\}i/,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)!\{(.+?)\}!/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)\*\{(.+?)\}\*/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)_\{(.+?)\}_/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\(|\>)\/\{(.+?)\}\//,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^\{(.+?)\}\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)9\{(.+?)\}9/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>),\{(.+?)\},/,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)6\{(.+?)\}6/,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)v\{(.+?)\}v/,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)x\{(.+?)\}x/,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\*(\S+?)\*/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasise single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\!(\S+?)\!/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\/([\(\)a-zA-Z0-9']+?)\/([ ,.;:'"~$]|[^a-zA-Z0-9])/,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}\\3"). #italics single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)_(\S+?)_/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^(\S+?)\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}"). #check #superscript single word, watch digit added
- gsub(/^\s*_\([1-9]\)\(\*\+\)\s*/,
- "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:fa_o]}\\2#{Mx[:fa_c_o]}"). #bullets, shortcut
- gsub(/^\s*_\([1-9]\)\s+/,
- "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}"). #watch
- gsub(/^\s*__\([1-9]\)\s+/,
- "#{Mx[:pa_o]}:h\\1#{Mx[:pa_c]}"). #watch
- #line.gsub(/^\s*__\([1-9]\)!\s+/,
- # "#{Mx[:pa_o]}:hd\\1#{Mx[:pa_c]}"). #watch
- gsub(/#{Mx[:br_line]}\s*_[12]\s+/,
- "#{Mx[:br_line]} ") #indent used in endnotes, not implemented, replace when ready with: line.gsub(/(?:<br>|<br \/>)\s*_([12])\s+/,'<br><:i\1> ')
- end
- @data
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_columns.rb b/lib/sisu/v3dv/db_columns.rb
deleted file mode 100644
index cf4ba9c7..00000000
--- a/lib/sisu/v3dv/db_columns.rb
+++ /dev/null
@@ -1,2108 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbColumns
- require_relative 'sysenv' # sysenv.rb
- require_relative 'db_sqltxt' # db_sqltxt.rb
- class Columns < SiSU_DbText::Prepare
- def initialize(md=nil)
- @md=md
- @db=SiSU_Env::InfoDb.new #watch
- @lang ||=SiSU_i18n::Languages.new
- if defined? md.opt.mod \
- and md.opt.mod.inspect=~/import|update/ \
- and FileTest.exist?(md.fns)
- txt_arr=IO.readlines(md.fns,'')
- src=txt_arr.join("\n")
- if @db.share_source?
- @sisutxt=special_character_escape(src)
- else @sisutxt=''
- end
- @fulltext=clean_searchable_text(txt_arr)
- else @sisutxt,@fulltext='',''
- end
- end
-#% structures
- #def column_define
- # def varchar(name,size)
- # "#{name} VARCHAR(#{size}) NULL,"
- # end
- #end
-=begin
-#% title
-@title:
- :subtitle:
- :short:
- :edition:
- :language:
- :note:
-=end
- def column
- def title # DublinCore 1 - title
- def name
- 'title'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata full document title [DC1]';}
- end
- def tuple
- t=if defined? @md.title.full \
- and @md.title.full=~/\S+/
- txt=@md.title.full
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_main
- def name
- 'title_main'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_part]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata main document title';}
- end
- def tuple
- t=if defined? @md.title.main \
- and @md.title.main=~/\S+/
- txt=@md.title.main
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_sub
- def name
- 'title_sub'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_part]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document subtitle';}
- end
- def tuple
- t=if defined? @md.title.sub \
- and @md.title.sub=~/\S+/
- txt=@md.title.sub
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_short
- def name
- 'title_short'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_part]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document short title if any';}
- end
- def tuple
- t=if defined? @md.title.short \
- and @md.title.short=~/\S+/
- txt=@md.title.short
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_edition
- def name
- 'title_edition'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_edition]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document edition (version)';}
- end
- def tuple
- t=if defined? @md.title.edition \
- and @md.title.edition=~/\S+/
- txt=@md.title.edition
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_note
- def name
- 'title_note'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes associated with title';}
- end
- def tuple
- t=if defined? @md.title.note \
- and @md.title.note=~/\S+/
- txt=@md.title.note
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_language
- def name
- 'title_language'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language [DC12]';}
- end
- def tuple
- t=if @lang.list[@md.opt.lng][:n]
- txt=@lang.list[@md.opt.lng][:n]
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_language_char # consider
- def name
- 'title_language_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language iso code';}
- end
- def tuple
- t=if defined? @md.opt.lng \
- and @md.opt.lng=~/\S+/
- txt=@md.opt.lng
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% creator
-@creator:
- :author:
- :editor:
- :contributor:
- :illustrator:
- :photographer:
- :translator:
- :prepared_by:
- :digitized_by:
- :audio:
- :video:
-=end
- def creator_author # DublinCore 2 - creator/author (author)
- def name
- 'creator_author'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document author (creator) [DC2]';}
- end
- def tuple
- t=if defined? @md.creator.author_detail \
- and @md.creator.author_detail.class==Array \
- and @md.creator.author_detail.length > 0
- txt=''
- @md.creator.author_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_author_honorific # consider
- def name
- 'creator_author_hon'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_creator_misc_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document author honorific (title e.g, Ms. Dr. Prof.)';}
- end
- def tuple
- t=if defined? @md.creator.author_hon \
- and @md.creator.author_hon=~/\S+/
- txt=@md.creator.author_hon
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_author_nationality # consider
- def name
- 'creator_author_nationality'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_creator_misc_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata nationality of document author (creator)';}
- end
- def tuple
- t=if defined? @md.creator.author_nationality_detail \
- and @md.creator.author_nationality=~/\S+/
- txt=@md.creator.author_nationality_detail
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_editor
- def name
- 'creator_editor'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document editor name(s)';}
- end
- def tuple
- t=if defined? @md.creator.editor_detail \
- and @md.creator.editor_detail.class==Array \
- and @md.creator.editor_detail.length > 0
- txt=@md.creator.editor_detail #dc
- txt=''
- @md.creator.editor_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_contributor # DublinCore 6 - contributor
- def name
- 'creator_contributor'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document contributor name(s) [DC6]';}
- end
- def tuple
- t=if defined? @md.creator.contributor_detail \
- and @md.creator.contributor_detail.class==Array \
- and @md.creator.contributor_detail.length > 0
- txt=@md.creator.contributor_detail #dc
- txt=''
- @md.creator.contributor_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_illustrator
- def name
- 'creator_illustrator'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document illustrator name(s)';}
- end
- def tuple
- t=if defined? @md.creator.illustrator_detail \
- and @md.creator.illustrator_detail.class==Array \
- and @md.creator.illustrator_detail.length > 0
- txt=@md.creator.illustrator_detail
- txt=''
- @md.creator.illustrator_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_photographer
- def name
- 'creator_photographer'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document photographer name(s)';}
- end
- def tuple
- t=if defined? @md.creator.photographer_detail \
- and @md.creator.photographer_detail.class==Array \
- and @md.creator.photographer_detail.length > 0
- txt=@md.creator.photographer_detail
- txt=''
- @md.creator.photographer_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_translator
- def name
- 'creator_translator'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document translator name(s)';}
- end
- def tuple
- t=if defined? @md.creator.translator_detail \
- and @md.creator.translator_detail.class==Array \
- and @md.creator.translator_detail.length > 0
- txt=''
- @md.creator.translator_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_prepared_by
- def name
- 'creator_prepared_by'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document prepared by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.prepared_by_detail \
- and @md.creator.prepared_by_detail.class==Array \
- and @md.creator.prepared_by_detail.length > 0
- txt=@md.creator.prepared_by_detail
- txt=''
- @md.creator.prepared_by_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_digitized_by
- def name
- 'creator_digitized_by'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document digitized by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.digitized_by_detail \
- and @md.creator.digitized_by_detail.class==Array \
- and @md.creator.digitized_by_detail.length > 0
- txt=@md.creator.digitized_by_detail
- txt=''
- @md.creator.digitized_by_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_audio
- def name
- 'creator_audio'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document audio by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.audio_detail \
- and @md.creator.audio_detail.class==Array \
- and @md.creator.audio_detail.length > 0
- txt=@md.creator.audio_detail
- txt=''
- @md.creator.audio_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_video
- def name
- 'creator_video'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document video by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.video_detail \
- and @md.creator.video_detail.class==Array \
- and @md.creator.video_detail.length > 0
- txt=''
- @md.creator.video_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% language
-#taken from other fields
-@title:
- :language:
-@original:
- :language:
-#not available -->
-#@language:
-# :document:
-# :original:
-=end
- def language_document
- def name
- 'language_document'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language';}
- end
- def tuple
- t=if @lang.list[@md.opt.lng][:n]
- txt=@lang.list[@md.opt.lng][:n]
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def language_document_char
- def name
- 'language_document_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language';}
- end
- def tuple
- #modify check, is now required, SiSUv3d_
- t=if defined? @md.opt.lng \
- and @md.opt.lng=~/\S+/
- txt=@md.opt.lng
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def language_original
- def name
- 'language_original'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata original document/text language';}
- end
- def tuple
- t=if defined? @md.language.original \
- and @md.language.original=~/\S+/
- txt=@md.language.original
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def language_original_char
- def name
- 'language_original_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language';}
- end
- def tuple
- t=if defined? @md.language.original_char \
- and @md.language.original_char=~/\S+/
- txt=@md.language.original_char
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% date
-@date:
- :added_to_site:
- :available:
- :created:
- :issued:
- :modified:
- :published:
- :valid:
- :translated:
- :original_publication:
-=end
- def date_added_to_site
- def name
- 'date_added_to_site'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- #"#{name} DATE,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date added to site';}
- end
- def tuple
- t=if defined? @md.date.added_to_site \
- and @md.date.added_to_site=~/\S+/
- txt=@md.date.added_to_site
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_available
- def name
- 'date_available'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date added to site [DC]';}
- end
- def tuple
- t=if defined? @md.date.available \
- and @md.date.available=~/\S+/
- txt=@md.date.available
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_created
- def name
- 'date_created'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date created [DC]';}
- end
- def tuple
- t=if defined? @md.date.created \
- and @md.date.created=~/\S+/
- txt=@md.date.created
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_issued
- def name
- 'date_issued'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date issued [DC]';}
- end
- def tuple
- t=if defined? @md.date.issued \
- and @md.date.issued=~/\S+/
- txt=@md.date.issued
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_modified
- def name
- 'date_modified'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date modified [DC]';}
- end
- def tuple
- t=if defined? @md.date.modified \
- and @md.date.modified=~/\S+/
- txt=@md.date.modified
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_published
- def name
- 'date_published'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date published [DC7]';}
- end
- def tuple
- t=if defined? @md.date.published \
- and @md.date.published=~/\S+/
- txt=@md.date.published
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_valid
- def name
- 'date_valid'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date valid [DC]';}
- end
- def tuple
- t=if defined? @md.date.valid \
- and @md.date.valid=~/\S+/
- txt=@md.date.valid
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_translated
- def name
- 'date_translated'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date translated';}
- end
- def tuple
- t=if defined? @md.date.translated \
- and @md.date.translated=~/\S+/
- txt=@md.date.translated
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_original_publication
- def name
- 'date_original_publication'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date of original publication';}
- end
- def tuple
- t=if defined? @md.date.original_publication \
- and @md.date.original_publication=~/\S+/
- txt=@md.date.original_publication
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_generated
- def name
- 'date_generated'
- end
- def create_column #choose other representation of time
- "#{name} VARCHAR(30) NULL,"
- #"#{name} VARCHAR(10) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date of sisu generation of document, automatically populated';}
- end
- def tuple #choose other representation of time
- t=if defined? @md.generated \
- and @md.generated.to_s=~/\S+/
- txt=@md.generated.to_s
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% publisher
-@publisher:
-=end
- def publisher
- def name
- 'publisher'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document publisher [DC5]';}
- end
- def tuple
- t=if defined? @md.publisher \
- and @md.publisher=~/\S+/
- txt=@md.publisher
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-##% current
-# def current_publisher
-# def name
-# 'current_publisher'
-# end
-# def size
-# 10
-# end
-# def create_column
-# "#{name} VARCHAR(#{current_publisher.size}) NULL,"
-# end
-# def tuple
-# t=if defined? @md.current.publisher \
-# and @md.current.publisher=~/\S+/
-# txt=@md.current.publisher
-# txt=special_character_escape(txt)
-# "'#{txt}', "
-# end
-# end
-# self
-# end
-=begin
-#% original
-@original:
- :publisher:
- #:date: #repeated under date
- :language:
- :institution:
- :nationality:
- :source:
-=end
- def original_publisher
- def name
- 'original_publisher'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original publisher [DC5]';}
- end
- def tuple
- t=if defined? @md.original.publisher \
- and @md.original.publisher=~/\S+/
- txt=@md.original.publisher
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_language
- def name
- 'original_language'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original language';}
- end
- def tuple
- t=if defined? @md.original.language \
- and @md.original.language=~/\S+/
- txt=@md.original.language
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_language_char # consider
- def name
- 'original_language_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original language iso character';}
- end
- def tuple
- t=if defined? @md.original.language_char \
- and @md.original.language_char=~/\S+/
- txt=@md.original.language_char
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_source
- def name
- 'original_source'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original source [DC11]';}
- end
- def tuple
- t=if defined? @md.original.source \
- and @md.original.source=~/\S+/
- txt=@md.original.source
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_institution
- def name
- 'original_institution'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original institution';}
- end
- def tuple
- t=if defined? @md.original.institution \
- and @md.original.institution=~/\S+/
- txt=@md.original.institution
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_nationality
- def name
- 'original_nationality'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original nationality';}
- end
- def tuple
- t=if defined? @md.original.nationality \
- and @md.original.nationality=~/\S+/
- txt=@md.original.nationality
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% rights
-@rights:
- #:copyright: #mapped to :text: used where no other copyrights and included in :all:
- :text:
- :translation:
- :illustrations:
- :photographs:
- :preparation:
- :digitization:
- :audio:
- :video:
- :license:
- :all:
-=end
- def rights_all
- def name
- 'rights'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata rights associated with document (composite) [DC15]';}
- end
- def tuple
- t=if defined? @md.rights.all \
- and @md.rights.all=~/\S+/
- txt=@md.rights.all
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_text
- def name
- 'rights_copyright_text'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text';}
- end
- def tuple
- t=if defined? @md.rights.copyright_text \
- and @md.rights.copyright_text=~/\S+/
- txt=@md.rights.copyright_text
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_translation
- def name
- 'rights_copyright_translation'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text translation (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_translation \
- and @md.rights.copyright_translation=~/\S+/
- txt=@md.rights.copyright_translation
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_illustrations
- def name
- 'rights_copyright_illustrations'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text illustrations (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_illustrations \
- and @md.rights.copyright_illustrations=~/\S+/
- txt=@md.rights.copyright_illustrations
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_photographs
- def name
- 'rights_copyright_photographs'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text photographs (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_photographs \
- and @md.rights.copyright_photographs=~/\S+/
- txt=@md.rights.copyright_photographs
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_preparation
- def name
- 'rights_copyright_preparation'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text preparation (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_preparation \
- and @md.rights.copyright_preparation=~/\S+/
- txt=@md.rights.copyright_preparation
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_digitization
- def name
- 'rights_copyright_digitization'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text digitization (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_digitization \
- and @md.rights.copyright_digitization=~/\S+/
- txt=@md.rights.copyright_digitization
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_audio
- def name
- 'rights_copyright_audio'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text audio (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_audio \
- and @md.rights.copyright_audio=~/\S+/
- txt=@md.rights.copyright_audio
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_video
- def name
- 'rights_copyright_video'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text video (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_video \
- and @md.rights.copyright_video=~/\S+/
- txt=@md.rights.copyright_video
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_license
- def name
- 'rights_license'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata license granted for use of document if any)';}
- end
- def tuple
- t=if defined? @md.rights.license \
- and @md.rights.license=~/\S+/
- txt=@md.rights.license
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% classify
-@classify:
- :topic_register:
- :coverage:
- :format:
- :identifier:
- :keywords:
- :relation:
- :subject:
- :type:
- :loc:
- :dewey:
- :pg:
- :isbn:
-=end
- def classify_topic_register
- def name
- 'classify_topic_register'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document topic register (semi-structured document subject information)';}
- end
- def tuple
- t=if defined? @md.classify.topic_register \
- and @md.classify.topic_register=~/\S+/
- txt=@md.classify.topic_register
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_subject
- def name
- 'classify_subject'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document subject matter [DC3]';}
- end
- def tuple
- t=if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- txt=@md.classify.subject
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_type #check
- def name
- 'classify_type'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document type [DC8]';}
- end
- def tuple
- t=if defined? @md.classify.type \
- and @md.classify.type=~/\S+/
- txt=@md.classify.type
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_loc
- def name
- 'classify_loc'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Library of Congress';}
- end
- def tuple
- t=if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- txt=@md.classify.loc
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_dewey
- def name
- 'classify_dewey'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Dewey';}
- end
- def tuple
- t=if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- txt=@md.classify.dewey
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_oclc
- def name
- 'classify_oclc'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Online Computer Library Center number';}
- end
- def tuple
- t=if defined? @md.classify.oclc \
- and @md.classify.oclc=~/\S+/
- txt=@md.classify.oclc
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_pg
- def name
- 'classify_pg'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_small]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document project gutenberg (if any)';}
- end
- def tuple
- t=if defined? @md.classify.pg \
- and @md.classify.pg=~/\S+/
- txt=@md.classify.pg
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_isbn
- def name
- 'classify_isbn'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_small]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document isbn (if any)';}
- end
- def tuple
- t=if defined? @md.classify.isbn \
- and @md.classify.isbn=~/\S+/
- txt=@md.classify.isbn
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_format
- def name
- 'classify_format'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document format [DC9]';}
- end
- def tuple
- t=if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- txt=@md.classify.format
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_identifier
- def name
- 'classify_identifier'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_identify]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document identifier [DC10]';}
- end
- def tuple
- t=if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- txt=@md.classify.identifier
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_relation
- def name
- 'classify_relation'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document relation [DC13]';}
- end
- def tuple
- t=if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- txt=@md.classify.relation
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_coverage
- def name
- 'classify_coverage'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document coverage [DC14]';}
- end
- def tuple
- t=if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- txt=@md.classify.coverage
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_keywords
- def name
- 'classify_keywords'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document keywords';}
- end
- def tuple
- t=if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- txt=@md.classify.keywords
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% notes
-@notes:
- :abstract:
- :comment:
- :description:
- :history:
- :prefix:
- :prefix_a:
- :prefix_b:
- :suffix:
-=end
- def notes_abstract
- def name
- 'notes_abstract'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes abstract';}
- end
- def tuple
- t=if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- txt=@md.notes.abstract
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_comment
- def name
- 'notes_comment'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes comment';}
- end
- def tuple
- t=if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- txt=@md.notes.comment
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_description
- def name
- 'notes_description'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes description [DC4]';}
- end
- def tuple
- t=if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- txt=@md.notes.description
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_history #check, consider removal
- def name
- 'notes_history'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes history';}
- end
- def tuple
- t=if defined? @md.notes.history \
- and @md.notes.history=~/\S+/
- txt=@md.notes.history
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_prefix
- def name
- 'notes_prefix'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes prefix';}
- end
- def tuple
- t=if defined? @md.notes.prefix \
- and @md.notes.prefix=~/\S+/
- txt=@md.notes.prefix
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_prefix_a
- def name
- 'notes_prefix_a'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes prefix_a';}
- end
- def tuple
- t=if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- txt=@md.notes.prefix_a
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_prefix_b
- def name
- 'notes_prefix_b'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes prefix_b';}
- end
- def tuple
- t=if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- txt=@md.notes.prefix_b
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_suffix
- def name
- 'notes_suffix'
- end
- def create_column # keep text
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes suffix';}
- end
- def tuple
- t=if defined? @md.notes.suffix \
- and @md.notes.suffix=~/\S+/
- txt=@md.notes.suffix
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% src
-=end
- def src_filename
- def name
- 'src_filename'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_filename]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text filename';}
- end
- def tuple
- t=if defined? @md.fns \
- and @md.fns=~/\S+/
- txt=@md.fns
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_fingerprint
- def name
- 'src_fingerprint' #hash/digest, sha256 or md5
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_digest]}) NULL,"
- #"#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text fingerprint, hash digest sha256 (or md5)';}
- end
- def tuple
- t=if defined? @md.dgst \
- and @md.dgst.class==Array \
- and @md.dgst[1]=~/\S+/
- txt=@md.dgst[1]
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_filesize
- def name
- 'src_filesize'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_filesize]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text file size';}
- end
- def tuple
- t=if defined? @md.filesize \
- and @md.filesize=~/\S+/
- txt=@md.filesize
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_word_count
- def name
- 'src_word_count'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text word count';}
- end
- def tuple
- t=if defined? @md.wc_words \
- and @md.wc_words=~/\S+/
- txt=@md.wc_words
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_txt # consider naming sisusrc
- def name
- 'src_text'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text (if shared)';}
- end
- def tuple
- t=if @md.opt.mod.inspect=~/import|update/ \
- and FileTest.exist?(@md.fns)
- ["#{name}, ","'#{@sisutxt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% misc
-@make:
- :skin:
-@links:
-=end
- def fulltext
- def name
- 'fulltext'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'document full text clean, searchable';}
- end
- def tuple
- t=if @md.opt.mod.inspect=~/import|update/ \
- and FileTest.exist?(@md.fns)
- ["#{name}, ","'#{@fulltext}', "]
- else ['','']
- end
- end
- self
- end
- def skin_name #check
- def name
- 'skin_name'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_filename]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'source text skin name';}
- end
- def tuple
- t=if defined? @md.skin_name \
- and @md.skin_name=~/\S+/
- txt=@md.skin_name
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def skin_fingerprint #check
- def name
- 'skin_fingerprint'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_digest]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'source text skin fingerprint';}
- end
- def tuple
- t=if defined? @md.dgst_skin \
- and @md.dgst_skin.class==Array \
- and @md.dgst_skin[1]=~/\S+/
- txt=@md.dgst_skin[1]
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def skin # you likely want a separate table for skins
- def name
- 'skin'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'source text skin';}
- end
- def tuple
- t=if defined? @md.skin \
- and @md.skin=~/\S+/
- txt=@md.skin
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def links
- def name
- 'links'
- end
- def create_column
- "#{name} TEXT NULL,"
- #"#{name} VARCHAR(#{links.size}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document links';}
- end
- def tuple
- t=if defined? @md.links \
- and @md.links=~/\S+/
- txt=@md.links
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- self
- end
- end
- class ColumnSize
- def document_clean # restriction not necessary
- 60000
- end
- def document_body
- 16000
- end
- def document_seg
- 120
- end
- def document_seg_full
- 120
- end
- def endnote_clean # restriction not necessary
- 60000
- end
- def endnote_body
- 16000
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_create.rb b/lib/sisu/v3dv/db_create.rb
deleted file mode 100644
index 627f0ea5..00000000
--- a/lib/sisu/v3dv/db_create.rb
+++ /dev/null
@@ -1,614 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbCreate
- require_relative 'db_columns' # db_columns.rb
- class Create < SiSU_DbColumns::Columns
- require_relative 'sysenv' # sysenv.rb
- @@dl=nil
- def initialize(opt,conn,file,sql_type='pg')
- @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
- @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- @comment=(@sql_type=='pg') \
- ? (SiSU_DbCreate::Comment.new(@conn,@sql_type))
- : nil
- @@dl ||=SiSU_Env::InfoEnv.new.digest.length
- end
- def available
- DBI.available_drivers.each do |driver|
- puts "Driver: #{driver}"
- DBI.data_sources(driver).each do |dsn|
- puts "\tDatasource: #{dsn}"
- end
- end
- end
- def create_db
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- tell=(@sql_type=='sqlite') \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create Sqlite db tables in:',%{"#{@file}"})
- : SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create PG db tables in:',%{"#{Db[:name_prefix]}#{@env.path.stub_pwd}"})
- tell.colorize if @opt.cmd =~/[vVM]/
- SiSU_Env::SystemCall.new.create_pg_db(@env.path.stub_pwd) if @sql_type=='pg' #watch use of path.stub_pwd instead of stub
- end
- def output_dir?
- dir=SiSU_Env::InfoEnv.new('')
- if @opt.cmd =~/d/
- dir.path.webserv_stub_ensure
- end
- end
- def create_table
- def metadata_and_text
- print %{
- currently using sisu dbi module
- to be populated from document files
- create tables metadata_and_text
- data import through ruby transfer
- } unless @opt.cmd =~/q/
- @conn.execute(%{
- CREATE TABLE metadata_and_text (
- tid BIGINT PRIMARY KEY,
- /* title */
- #{column.title.create_column}
- #{column.title_main.create_column}
- #{column.title_sub.create_column}
- #{column.title_short.create_column}
- #{column.title_edition.create_column}
- #{column.title_note.create_column}
- #{column.title_language.create_column}
- #{column.title_language_char.create_column}
- /* creator */
- #{column.creator_author.create_column}
- #{column.creator_author_honorific.create_column}
- #{column.creator_author_nationality.create_column}
- #{column.creator_editor.create_column}
- #{column.creator_contributor.create_column}
- #{column.creator_illustrator.create_column}
- #{column.creator_photographer.create_column}
- #{column.creator_translator.create_column}
- #{column.creator_prepared_by.create_column}
- #{column.creator_digitized_by.create_column}
- #{column.creator_audio.create_column}
- #{column.creator_video.create_column}
- /* language */
- #{column.language_document.create_column}
- #{column.language_document_char.create_column}
- #{column.language_original.create_column}
- #{column.language_original_char.create_column}
- /* date */
- #{column.date_added_to_site.create_column}
- #{column.date_available.create_column}
- #{column.date_created.create_column}
- #{column.date_issued.create_column}
- #{column.date_modified.create_column}
- #{column.date_published.create_column}
- #{column.date_valid.create_column}
- #{column.date_translated.create_column}
- #{column.date_original_publication.create_column}
- #{column.date_generated.create_column}
- /* publisher */
- #{column.publisher.create_column}
- /* original */
- #{column.original_publisher.create_column}
- #{column.original_language.create_column}
- #{column.original_language_char.create_column}
- #{column.original_source.create_column}
- #{column.original_institution.create_column}
- #{column.original_nationality.create_column}
- /* rights */
- #{column.rights_all.create_column}
- #{column.rights_copyright_text.create_column}
- #{column.rights_copyright_translation.create_column}
- #{column.rights_copyright_illustrations.create_column}
- #{column.rights_copyright_photographs.create_column}
- #{column.rights_copyright_preparation.create_column}
- #{column.rights_copyright_digitization.create_column}
- #{column.rights_copyright_audio.create_column}
- #{column.rights_copyright_video.create_column}
- #{column.rights_license.create_column}
- /* classify */
- #{column.classify_topic_register.create_column}
- #{column.classify_subject.create_column}
- #{column.classify_type.create_column}
- #{column.classify_loc.create_column}
- #{column.classify_dewey.create_column}
- #{column.classify_oclc.create_column}
- #{column.classify_pg.create_column}
- #{column.classify_isbn.create_column}
- #{column.classify_format.create_column}
- #{column.classify_identifier.create_column}
- #{column.classify_relation.create_column}
- #{column.classify_coverage.create_column}
- #{column.classify_keywords.create_column}
- /* notes */
- #{column.notes_abstract.create_column}
- #{column.notes_comment.create_column}
- #{column.notes_description.create_column}
- #{column.notes_history.create_column}
- #{column.notes_prefix.create_column}
- #{column.notes_prefix_a.create_column}
- #{column.notes_prefix_b.create_column}
- #{column.notes_suffix.create_column}
- /* src */
- #{column.src_filename.create_column}
- #{column.src_fingerprint.create_column}
- #{column.src_filesize.create_column}
- #{column.src_word_count.create_column}
- #{column.src_txt.create_column}
- /* misc */
- #{column.fulltext.create_column}
- #{column.skin_name.create_column}
- #{column.skin_fingerprint.create_column}
- #{column.skin.create_column}
- #{column.links.create_column.gsub(/,$/,'')}
-/* subj VARCHAR(64) NULL, */
-/* contact VARCHAR(100) NULL, */
-/* information VARCHAR(100) NULL, */
-/* types CHAR(1) NULL, */
-/* writing_focus_nationality VARCHAR(100) NULL, */
- );
- })
- @comment.psql.metadata_and_text if @comment
- end
- def doc_objects # create doc_objects base
- print %{
- to be populated from documents files
- create tables doc_objects
- data import through ruby transfer
- } unless @opt.cmd =~/q/
- @conn.execute(%{
- CREATE TABLE doc_objects (
- lid BIGINT PRIMARY KEY,
- metadata_tid BIGINT REFERENCES metadata_and_text,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- clean TEXT NULL,
- body TEXT NULL,
- seg VARCHAR(256) NULL,
- lev_an VARCHAR(1),
- lev SMALLINT NULL,
- lev1 SMALLINT,
- lev2 SMALLINT,
- lev3 SMALLINT,
- lev4 SMALLINT,
- lev5 SMALLINT,
- lev6 SMALLINT,
- en_a SMALLINT NULL,
- en_z SMALLINT NULL,
- en_a_asterisk SMALLINT NULL,
- en_z_asterisk SMALLINT NULL,
- en_a_plus SMALLINT NULL,
- en_z_plus SMALLINT NULL,
- t_of VARCHAR(16),
- t_is VARCHAR(16),
- node VARCHAR(16) NULL,
- parent VARCHAR(16) NULL,
- digest_clean CHAR(#{@@dl}),
- digest_all CHAR(#{@@dl}),
- types CHAR(1) NULL
- );
- })
- @comment.psql.doc_objects if @comment
- end
- def endnotes
- print %{
- to be populated from document files
- create tables endnotes
- data import through ruby transfer
- } unless @opt.cmd =~/q/
- @conn.execute(%{
- CREATE TABLE endnotes (
- nid BIGINT PRIMARY KEY,
- document_lid BIGINT REFERENCES doc_objects,
- nr SMALLINT,
- clean TEXT NULL,
- body TEXT NULL,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- digest_clean CHAR(#{@@dl}),
- metadata_tid BIGINT REFERENCES metadata_and_text
- );
- })
- @comment.psql.endnotes if @comment
- end
- def endnotes_asterisk
- print %{
- to be populated from document files
- create tables endnotes_asterisk
- data import through ruby transfer
- } unless @opt.cmd =~/q/
- @conn.execute(%{
- CREATE TABLE endnotes_asterisk (
- nid BIGINT PRIMARY KEY,
- document_lid BIGINT REFERENCES doc_objects,
- nr SMALLINT,
- clean TEXT NULL,
- body TEXT NULL,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- digest_clean CHAR(#{@@dl}),
- metadata_tid BIGINT REFERENCES metadata_and_text
- );
- })
- @comment.psql.endnotes_asterisk if @comment
- end
- def endnotes_plus
- print %{
- to be populated from document files
- create tables endnotes_plus
- data import through ruby transfer
- } unless @opt.cmd =~/q/
- @conn.execute(%{
- CREATE TABLE endnotes_plus (
- nid BIGINT PRIMARY KEY,
- document_lid BIGINT REFERENCES doc_objects,
- nr SMALLINT,
- clean TEXT NULL,
- body TEXT NULL,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- digest_clean CHAR(#{@@dl}),
- metadata_tid BIGINT REFERENCES metadata_and_text
- );
- })
- @comment.psql.endnotes_plus if @comment
- end
- def urls # create doc_objects file links mapping
- print %{
- currently using sisu dbi module
- to be populated from doc_objects files
- create tables urls
- data import through ruby transfer
- } unless @opt.cmd =~/q/
- @conn.execute(%{
- CREATE TABLE urls (
- metadata_tid BIGINT REFERENCES metadata_and_text,
- plaintext varchar(512),
- html_toc varchar(512),
- html_doc varchar(512),
- xhtml varchar(512),
- xml_sax varchar(512),
- xml_dom varchar(512),
- odf varchar(512),
- pdf_p varchar(512),
- pdf_l varchar(512),
- concordance varchar(512),
- latex_p varchar(512),
- latex_l varchar(512),
- digest varchar(512),
- manifest varchar(512),
- markup varchar(512),
- sisupod varchar(512)
- );
- })
- @comment.psql.urls if @comment
- end
- self
- end
- end
- class Comment < SiSU_DbColumns::Columns
- def initialize(conn,sql_type='pg')
- @conn=conn
- if sql_type =~ /pg/; psql
- end
- end
- def psql
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- conn.execute(sql)
- end
- end
- end
- def metadata_and_text
- sql_arr=[
- %{COMMENT ON Table metadata_and_text
- IS 'contains SiSU metadata and fulltext for search (including source .sst if shared)';},
- %{COMMENT ON COLUMN metadata_and_text.tid
- IS 'unique';},
- %{#{column.title.column_comment}},
- %{#{column.title_main.column_comment}},
- %{#{column.title_sub.column_comment}},
- %{#{column.title_short.column_comment}},
- %{#{column.title_edition.column_comment}},
- %{#{column.title_note.column_comment}},
- %{#{column.title_language.column_comment}},
- %{#{column.title_language_char.column_comment}},
- %{#{column.creator_author.column_comment}},
- %{#{column.creator_author_honorific.column_comment}},
- %{#{column.creator_author_nationality.column_comment}},
- %{#{column.creator_editor.column_comment}},
- %{#{column.creator_contributor.column_comment}},
- %{#{column.creator_illustrator.column_comment}},
- %{#{column.creator_photographer.column_comment}},
- %{#{column.creator_translator.column_comment}},
- %{#{column.creator_prepared_by.column_comment}},
- %{#{column.creator_digitized_by.column_comment}},
- %{#{column.creator_audio.column_comment}},
- %{#{column.creator_video.column_comment}},
- %{#{column.language_document.column_comment}},
- %{#{column.language_document_char.column_comment}},
- %{#{column.language_original.column_comment}},
- %{#{column.language_original_char.column_comment}},
- %{#{column.date_added_to_site.column_comment}},
- %{#{column.date_available.column_comment}},
- %{#{column.date_created.column_comment}},
- %{#{column.date_issued.column_comment}},
- %{#{column.date_modified.column_comment}},
- %{#{column.date_published.column_comment}},
- %{#{column.date_valid.column_comment}},
- %{#{column.date_translated.column_comment}},
- %{#{column.date_original_publication.column_comment}},
- %{#{column.date_generated.column_comment}},
- %{#{column.publisher.column_comment}},
- %{#{column.original_publisher.column_comment}},
- %{#{column.original_language.column_comment}},
- %{#{column.original_language_char.column_comment}},
- %{#{column.original_source.column_comment}},
- %{#{column.original_institution.column_comment}},
- %{#{column.original_nationality.column_comment}},
- %{#{column.rights_all.column_comment}},
- %{#{column.rights_copyright_text.column_comment}},
- %{#{column.rights_copyright_translation.column_comment}},
- %{#{column.rights_copyright_illustrations.column_comment}},
- %{#{column.rights_copyright_photographs.column_comment}},
- %{#{column.rights_copyright_preparation.column_comment}},
- %{#{column.rights_copyright_digitization.column_comment}},
- %{#{column.rights_copyright_audio.column_comment}},
- %{#{column.rights_copyright_video.column_comment}},
- %{#{column.rights_license.column_comment}},
- %{#{column.classify_topic_register.column_comment}},
- %{#{column.classify_subject.column_comment}},
- %{#{column.classify_type.column_comment}},
- %{#{column.classify_loc.column_comment}},
- %{#{column.classify_dewey.column_comment}},
- %{#{column.classify_oclc.column_comment}},
- %{#{column.classify_pg.column_comment}},
- %{#{column.classify_isbn.column_comment}},
- %{#{column.classify_format.column_comment}},
- %{#{column.classify_identifier.column_comment}},
- %{#{column.classify_relation.column_comment}},
- %{#{column.classify_coverage.column_comment}},
- %{#{column.classify_keywords.column_comment}},
- %{#{column.notes_abstract.column_comment}},
- %{#{column.notes_comment.column_comment}},
- %{#{column.notes_description.column_comment}},
- %{#{column.notes_history.column_comment}},
- %{#{column.notes_prefix.column_comment}},
- %{#{column.notes_prefix_a.column_comment}},
- %{#{column.notes_prefix_b.column_comment}},
- %{#{column.notes_suffix.column_comment}},
- %{#{column.src_filename.column_comment}},
- %{#{column.src_fingerprint.column_comment}},
- %{#{column.src_filesize.column_comment}},
- %{#{column.src_word_count.column_comment}},
- %{#{column.src_txt.column_comment}},
- %{#{column.fulltext.column_comment}},
- %{#{column.skin_name.column_comment}},
- %{#{column.skin_fingerprint.column_comment}},
- %{#{column.skin.column_comment}},
- %{#{column.links.column_comment}},
- ]
- conn_execute_array(sql_arr)
- end
- def doc_objects
- sql_arr=[
- %{COMMENT ON Table doc_objects
- IS 'contains searchable text of SiSU document objects';},
- %{COMMENT ON COLUMN doc_objects.lid
- IS 'unique';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text';},
- %{COMMENT ON COLUMN doc_objects.lev_an
- IS 'doc level A-C 1-6';},
- %{COMMENT ON COLUMN doc_objects.lev
- IS 'doc level 1-6 \d\~';},
- %{COMMENT ON COLUMN doc_objects.seg
- IS 'segment name from level number 4 (lv 1)';},
- %{COMMENT ON COLUMN doc_objects.ocn
- IS 'object citation number';},
- %{COMMENT ON COLUMN doc_objects.en_a
- IS 'first endnote number in text object (eg. NULL or 34) (used with en_z to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_z
- IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_a_asterisk
- IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_asterisk to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_z_asterisk
- IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_asterisk to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_a_plus
- IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_plus to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_z_plus
- IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_plus to create range)';},
- %{COMMENT ON COLUMN doc_objects.types
- IS 'document types seg scroll';},
- %{COMMENT ON COLUMN doc_objects.clean
- IS 'text object - substantive text: clean, stripped of markup';},
- %{COMMENT ON COLUMN doc_objects.body
- IS 'text object - substantive text: light html markup';},
- %{COMMENT ON COLUMN doc_objects.lev1
- IS 'document structure, level number 1';},
- %{COMMENT ON COLUMN doc_objects.lev2
- IS 'document structure, level number 2';},
- %{COMMENT ON COLUMN doc_objects.lev3
- IS 'document structure, level number 3';},
- %{COMMENT ON COLUMN doc_objects.lev4
- IS 'document structure, level number 4';},
- %{COMMENT ON COLUMN doc_objects.lev5
- IS 'document structure, level number 5';},
- %{COMMENT ON COLUMN doc_objects.lev6
- IS 'document structure, level number 6';},
- %{COMMENT ON COLUMN doc_objects.t_of
- IS 'document structure, type of object (object is of)';},
- %{COMMENT ON COLUMN doc_objects.t_is
- IS 'document structure, object is';},
- %{COMMENT ON COLUMN doc_objects.node
- IS 'document structure, object node if heading';},
- %{COMMENT ON COLUMN doc_objects.parent
- IS 'document structure, object parent (is a heading)';}
- ]
- conn_execute_array(sql_arr)
- end
- def endnotes
- sql_arr=[
- %{COMMENT ON Table endnotes
- IS 'contains searchable text of SiSU documents endnotes';},
- %{COMMENT ON COLUMN endnotes.nid
- IS 'unique';},
- %{COMMENT ON COLUMN endnotes.document_lid
- IS 'ties to text block from which referenced';},
- %{COMMENT ON COLUMN endnotes.nr
- IS 'endnote number <!e_(\d+)!>';},
- %{COMMENT ON COLUMN endnotes.clean
- IS 'endnote substantive content, stripped of markup';},
- %{COMMENT ON COLUMN endnotes.body
- IS 'endnote substantive content';},
- %{COMMENT ON COLUMN endnotes.ocn
- IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document';}
- ]
- conn_execute_array(sql_arr)
- end
- def endnotes_asterisk
- sql_arr=[
- %{COMMENT ON Table endnotes_asterisk
- IS 'contains searchable text of SiSU documents endnotes marked with asterisk';},
- %{COMMENT ON COLUMN endnotes_asterisk.nid
- IS 'unique';},
- %{COMMENT ON COLUMN endnotes_asterisk.document_lid
- IS 'ties to text block from which referenced';},
- %{COMMENT ON COLUMN endnotes_asterisk.nr
- IS 'endnote number <!e_(\d+)!>';},
- %{COMMENT ON COLUMN endnotes_asterisk.clean
- IS 'endnote substantive content, stripped of markup';},
- %{COMMENT ON COLUMN endnotes_asterisk.body
- IS 'endnote substantive content';},
- %{COMMENT ON COLUMN endnotes_asterisk.ocn
- IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document';}
- ]
- conn_execute_array(sql_arr)
- end
- def endnotes_plus
- sql_arr=[
- %{COMMENT ON Table endnotes_plus
- IS 'contains searchable text of SiSU documents endnotes marked with plus';},
- %{COMMENT ON COLUMN endnotes_plus.nid
- IS 'unique';},
- %{COMMENT ON COLUMN endnotes_plus.document_lid
- IS 'ties to text block from which referenced';},
- %{COMMENT ON COLUMN endnotes_plus.nr
- IS 'endnote number <!e_(\d+)!>';},
- %{COMMENT ON COLUMN endnotes_plus.clean
- IS 'endnote substantive content, stripped of markup';},
- %{COMMENT ON COLUMN endnotes_plus.body
- IS 'endnote substantive content';},
- %{COMMENT ON COLUMN endnotes_plus.ocn
- IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document';},
- ]
- conn_execute_array(sql_arr)
- end
- def urls
- sql_arr=[
- %{COMMENT ON Table urls
- IS 'contains base url links to different SiSU output';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document, the mapping of rows is one to one';},
- %{COMMENT ON COLUMN urls.plaintext
- IS 'plaintext utf-8';},
- %{COMMENT ON COLUMN urls.html_toc
- IS 'table of contents for segmented html document';},
- %{COMMENT ON COLUMN urls.html_doc
- IS 'html document (scroll)';},
- %{COMMENT ON COLUMN urls.xhtml
- IS 'xhtml document (scroll)';},
- %{COMMENT ON COLUMN urls.xml_sax
- IS 'xml sax oriented document (scroll)';},
- %{COMMENT ON COLUMN urls.xml_dom
- IS 'xml dom oriented document (scroll)';},
- %{COMMENT ON COLUMN urls.odf
- IS 'opendocument format text';},
- %{COMMENT ON COLUMN urls.pdf_p
- IS 'pdf portrait';},
- %{COMMENT ON COLUMN urls.pdf_l
- IS 'pdf landscape';},
- %{COMMENT ON COLUMN urls.concordance
- IS 'rudimentary document index linked to html';},
- %{COMMENT ON COLUMN urls.latex_p
- IS 'latex portrait';},
- %{COMMENT ON COLUMN urls.latex_l
- IS 'latex_landscape';},
- %{COMMENT ON COLUMN urls.markup
- IS 'markup';},
- %{COMMENT ON COLUMN urls.sisupod
- IS 'SiSU document format .tgz (all SiSU information on document)';},
- ]
- conn_execute_array(sql_arr)
- end
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_dbi.rb b/lib/sisu/v3dv/db_dbi.rb
deleted file mode 100644
index 0c19578f..00000000
--- a/lib/sisu/v3dv/db_dbi.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbDBI
- require_relative 'db_columns' # db_columns.rb
- require_relative 'db_tests' # db_tests.rb
- require_relative 'db_create' # db_create.rb
- require_relative 'db_select' # db_select.rb
- require_relative 'db_indexes' # db_indexes.rb
- require_relative 'db_drop' # db_drop.rb
- require_relative 'db_remove' # db_remove.rb
- require_relative 'db_load_tuple' # db_load_tuple.rb
- require_relative 'db_import' # db_import.rb
- class ColumnSize < SiSU_DbColumns::ColumnSize # db_columns.rb
- end
- class Test < SiSU_DbTests::Test # db_tests.rb
- end
- class Create <SiSU_DbCreate::Create # db_create.rb
- end
- class Case <SiSU_DbSelect::Case # db_select.rb
- end
- class Index <SiSU_DbIndex::Index # db_indexes.rb
- end
- class Drop <SiSU_DbDrop::Drop # db_drop.rb
- end
- class Remove <SiSU_DbRemove::Remove # db_remove.rb
- end
- class LoadDocuments <SiSU_DbTuple::LoadDocuments # db_load_tuple.rb
- end
- class LoadMetadata <SiSU_DbTuple::LoadMetadata # db_load_tuple.rb
- end
- class LoadUrls <SiSU_DbTuple::LoadUrls # db_update urls
- end
- class Import <SiSU_DbImport::Import #<SiSU_DB::ColumnSize # db_import.rb
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_drop.rb b/lib/sisu/v3dv/db_drop.rb
deleted file mode 100644
index 4b9aba7d..00000000
--- a/lib/sisu/v3dv/db_drop.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbDrop
- class Drop
- require_relative 'response' # response.rb
- def initialize(opt,conn,db_info,sql_type='')
- @opt,@conn,@db_info,@sql_type=opt,conn,db_info,sql_type
- @ans=SiSU_Response::Response.new
- case @sql_type
- when /sqlite/
- cascade=''
- else
- cascade='CASCADE'
- end
- @drop_table=[
- "DROP TABLE metadata_and_text #{cascade};",
- "DROP TABLE doc_objects #{cascade};",
- "DROP TABLE urls #{cascade};",
- "DROP TABLE endnotes #{cascade};",
- "DROP TABLE endnotes_asterisk #{cascade};",
- "DROP TABLE endnotes_plus #{cascade};",
- ]
- end
- def drop
- def tables #% drop all tables
- begin
- msg_sqlite="as not all disk space is recovered after dropping the database << #{@db_info.sqlite.db} >>, you may be better off deleting the file, and recreating it as necessary"
- case @sql_type
- when /sqlite/
- puts msg_sqlite
- ans=@ans.response?('remove sql database?')
- if ans \
- and File.exist?(@db_info.sqlite.db)
- @conn.close
- File.unlink(@db_info.sqlite.db)
- db=SiSU_Env::InfoDb.new
- conn=db.sqlite.conn_sqlite3
- sdb=SiSU_DbDBI::Create.new(@opt,conn,@db_info,@sql_type)
- sdb_index=SiSU_DbDBI::Index.new(@opt,conn,@db_info,@sql_type)
- sdb.output_dir?
- begin
- sdb.create_db
- sdb.create_table.metadata_and_text
- sdb.create_table.doc_objects
- sdb.create_table.endnotes
- sdb.create_table.endnotes_asterisk
- sdb.create_table.endnotes_plus
- sdb.create_table.urls
- sdb_index.create_indexes
- rescue; SiSU_Errors::InfoError.new($!,$@,'-D').error; sdb.output_dir?
- end
- exit
- else
- @conn.transaction
- @drop_table.each do |d|
- @conn.execute(d)
- end
- @conn.commit
- end
- else
- @drop_table.each do |d|
- @conn.execute(d)
- end
- end
- rescue
- case @sql_type
- when /sqlite/
- ans=@ans.response?('remove sql database?')
- if ans and File.exist?(@db_info.sqlite.db); File.unlink(@db_info.sqlite.db)
- end
- else
- @drop_table.each do |d|
- @conn.execute(d)
- end
- end
- ensure
- end
- end
- def indexes
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- conn.execute(sql)
- end
- end
- end
- def base #% drop base indexes
- print "\n drop documents common indexes\n" unless @opt.cmd =~/q/
- sql_arr=[
- %{DROP INDEX idx_title;},
- %{DROP INDEX idx_author;},
- %{DROP INDEX idx_filename;},
- %{DROP INDEX idx_topics;},
- %{DROP INDEX idx_ocn;},
- %{DROP INDEX idx_digest_clean;},
- %{DROP INDEX idx_digest_all;},
- %{DROP INDEX idx_lev1;},
- %{DROP INDEX idx_lev2;},
- %{DROP INDEX idx_lev3;},
- %{DROP INDEX idx_lev4;},
- %{DROP INDEX idx_lev5;},
- %{DROP INDEX idx_lev6;},
- %{DROP INDEX idx_endnote_nr;},
- %{DROP INDEX idx_digest_en;},
- %{DROP INDEX idx_endnote_nr_asterisk;},
- %{DROP INDEX idx_endnote_asterisk;},
- %{DROP INDEX idx_digest_en_asterisk;},
- %{DROP INDEX idx_endnote_nr_plus;},
- %{DROP INDEX idx_endnote_plus;},
- %{DROP INDEX idx_digest_en_plus},
- ]
- conn_execute_array(sql_arr)
- end
- def text #% drop TEXT indexes, sqlite
- print "\n drop documents TEXT indexes\n" unless @opt.cmd =~/q/
- sql_arr=[
- %{DROP INDEX idx_clean;},
- %{DROP INDEX idx_endnote},
- ]
- conn_execute_array(sql_arr)
- end
- self
- end
- indexes.base
- @opt.cmd=~/D/ || ((@opt.mod=~/psql/) ? '' : indexes.text)
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_import.rb b/lib/sisu/v3dv/db_import.rb
deleted file mode 100644
index 3bb6e210..00000000
--- a/lib/sisu/v3dv/db_import.rb
+++ /dev/null
@@ -1,690 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-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 'sqlite3'
- class Import < SiSU_DbText::Prepare
- include SiSU_Param
- include SiSU_Screen
- @@dl=nil
- @@hname=nil
- attr_accessor :tp
- def initialize(opt,conn,file,sql_type='pg')
- @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
- @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @dal="#{@env.processing_path.dal}"
- if @opt.fns.empty? or @opt.cmd.empty?; @fnb=''
- else
- @md=SiSU_Param::Parameters.new(@opt).get
- @fnb=@md.fnb
- end
- @suffix=@opt.fns[/(?:.+?)(?:\.ssm\.sst|\.-?sst)/,1]
- @fnc="#{@dal}/#{@opt.fns}.content.rbm"
- @@seg,@@seg_full='','' #create? consider placing field just before clean text as opposed to seg which contains seg(.html) name info seg_full would contain seg info for levels 5 & 6 where available eg seg_full may be 7.3 (level 5) and 7.3.1 (level 6) where seg is 7
- @col=Hash.new('')
- @col[:ocn]=''
- @counter={}
- @db=SiSU_Env::InfoDb.new
- if @sql_type=='sqlite'
- @driver_sqlite3=(@conn.inspect.match(/^(.{10})/)[1]==@db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1]) \
- ? true
- : false
- end
- sql='SELECT MAX(lid) FROM doc_objects'
- begin
- @col[:lid] ||=0
- @col[:lid]=@driver_sqlite3 \
- ? @conn.execute( sql ).join.to_i
- : @conn.execute( sql ) { |x| x.fetch_all.flatten[0] }
- rescue
- puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/
- end
- @col[:lid]=0 if @col[:lid].nil? or @col[:lid].to_s.empty?
- sql='SELECT MAX(nid) FROM endnotes'
- begin
- @id_n=@driver_sqlite3 \
- ? @conn.execute( sql ).join.to_i
- : @id_n=@conn.execute( sql ) { |x| x.fetch_all.flatten[0] }
- @id_n ||=0
- rescue
- puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/
- end
- @id_n =0 if @col[:lid].nil? or @col[:lid].to_s.empty?
- @col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0
- @db=SiSU_Env::InfoDb.new
- @pdf_fn=SiSU_Env::FileOp.new(@md).base_filename
- @@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
- SiSU_Screen::Ansi.new(@opt.cmd,"#{@db.psql.db}::#{@opt.fns}").puts_blue if @opt.cmd =~/vVM/
- SiSU_Screen::Ansi.new(@opt.cmd,'Marshal Load',@fnc).puts_grey if @opt.cmd =~/v/
-#%
- select_first_match=%{
- SELECT metadata_and_text.tid
- FROM metadata_and_text
- WHERE metadata_and_text.src_filename = '#{@opt.fns}'
- AND metadata_and_text.language_document_char = '#{@opt.lng}'
- ;}
- file_exist=@sql_type=~/sqlite/ \
- ? @conn.get_first_value(select_first_match)
- : @conn.select_one(select_first_match)
- 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=t_d.flatten
- if @opt.cmd =~/[MV]/
- puts @conn.class if defined? @conn.class
- puts @conn.driver_name if defined? @conn.driver_name
- puts @conn.driver if defined? @conn.driver
- end
- begin
- sql=''
- if @sql_type=~/sqlite/
- @conn.transaction do |conn|
- t_d.each do |sql|
- conn.execute(sql)
- end
- end
- #also 'execute' works for sqlite
- #@conn.execute("BEGIN")
- # t_d.each do |sql|
- # @conn.execute(sql)
- # end
- #@conn.execute("COMMIT")
- else
- #'do' works for postgresql
- @conn.do("BEGIN")
- t_d.each do |sql|
- @conn.do(sql)
- end
- @conn.do("COMMIT")
- end
- rescue DBI::DatabaseError => e
- puts "Error code: #{e.err}"
- puts "Error message: #{e.errstr}"
- puts "Error SQLSTATE: #{e.state}"
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- sqlfn="#{@env.processing_path.sql}/#{@md.fnb}.sql"
- sql=File.new(sqlfn,'w')
- t_d.each {|i| sql.puts i}
- p sqlfn
- if @opt.cmd =~/M/
- puts sql
- p @conn.methods.sort
- puts "#{__FILE__}:#{__LINE__}"
- end
- rescue
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- sqlfn="#{@env.processing_path.sql}/#{@md.fnb}.sql"
- sql=File.new(sqlfn,'w')
- t_d.each {|i| sql.puts i}
- p sqlfn
- if @opt.cmd =~/M/
- puts sql
- p @conn.methods.sort
- puts "#{__FILE__}:#{__LINE__}"
- end
- ensure
- end
- else
- if file_exist
- @db=SiSU_Env::InfoDb.new
- puts "\n#{@cX.grey}file #{@cX.off} #{@cX.blue}#{@opt.fns}#{@cX.off} in language code #{cX.blue}#{@opt.lng}#{cX.off} #{@cX.grey}already exists in database#{@cX.off} #{@cX.blue}#{@db.psql.db}#{@cX.off} #{@cX.brown}update instead?#{@cX.off}"
- end
- end
- end
- def pf_db_import_transaction_open
- end
- def pf_db_import_transaction_close
- end
- def db_import_metadata #% import documents - populate database
- print %{ #{@cX.grey}import documents dbi_unit #{@cX.off} } if @opt.cmd =~/vVM/
- @tp={}
- @md=SiSU_Param::Parameters.new(@opt).get
-#% sisutxt & fulltxt
- if FileTest.exist?(@md.fns)
- txt_arr=IO.readlines(@md.fns,'')
- src=txt_arr.join("\n")
- src=special_character_escape(src)
- @tp[:sisutxt_f],@tp[:sisutxt_i]='sisutxt, ',"'#{src}', "
- txt=clean_searchable_text(txt_arr)
- #txt=special_character_escape(txt)
- @tp[:fulltxt_f],@tp[:fulltxt_i]='fulltxt, ',"'#{txt}', "
- end
-#% title
- if defined? @md.title.full \
- and @md.title.full=~/\S+/ # DublinCore 1 - title
- #@tp[:title]=@md.title.full
- #special_character_escape(@tp[:title])
- #@tp[:title_f],@tp[:title_i]='title, ',"'#{@tp[:title]}', "
- sql='SELECT MAX(tid) FROM metadata_and_text;'
- begin
- @@id_t ||=0
- id_t=if @driver_sqlite3
- @conn.execute( sql ).join.to_i # { |x| id_t=x.join.to_i }
- else
- @conn.execute( sql ) { |x| x.fetch_all.flatten[0] }
- end
- @@id_t=id_t if id_t
- rescue
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- @@id_t+=1 #bug related, needs to be performed once at start of file, but consider moving, as, placed here it means program will fail if document header lacks @title:
- puts %{\n#{@cX.grey}Processing file number#{@cX.off}: #{@cX.green}#{@@id_t}#{@@cX.off}} if @opt.cmd =~/vVM/
- end
- ################ CLEAR ##############
- SiSU_DbDBI::Test.new(self,@opt).verify #% import title names, filenames (tuple)
- t=SiSU_DbTuple::LoadMetadata.new(@conn,@@id_t,@md,@file)
- tuple=t.tuple
- tuple
- end
- def db_import_documents(dal_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|
- 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')
- data.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:gl_o]}(●)#{Mx[:gl_c]}\s*/,'\1 ')
- data.obj.gsub!(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
- @col[:seg]=@@seg
- if data.of ==:para \
- || :heading \
- || :heading_insert \
- || :block \
- || :group # regular text what of code-blocks grouped text etc.
- notedata=data.obj.dup
- if data.is==:heading \
- && (data.ln.inspect=~/[123]/)
- @col[:lev],txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.ln,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @col[:lid]+=1
- txt=endnotes(txt).extract_any
- @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_minus
- @col[:body]=special_character_escape(@col[:body])
- @col[:plaintext]=@col[:body].dup
- @col[:plaintext]=strip_markup(@col[:plaintext])
- @col[:plaintext]=clean_searchable_text(@col[:plaintext])
- if @en[0]; @en_a,@en_z=@en[0].first,@en[0].last
- end
- if @en_ast[0]; @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last
- end
- if @en_pls[0]; @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last
- end
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
- @tuple_array << t.tuple
- case @col[:lev]
- when /1/; @col[:lv1]+=1
- when /2/; @col[:lv2]+=1
- when /3/; @col[:lv3]+=1
- end
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is==:heading \
- && data.ln==4
- @@seg,txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.name,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @col[:seg]=@@seg
- @col[:lv4]+=1
- @col[:lid]+=1
- @col[:lev]=4
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
- @col[:body]=special_character_escape(@col[:body])
- @col[:plaintext]=@col[:body].dup
- @col[:plaintext]=strip_markup(@col[:plaintext])
- @col[:plaintext]=clean_searchable_text(@col[:plaintext])
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
- @tuple_array << t.tuple
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is==:heading \
- && data.ln==5
- txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @@seg_full=data.name if data.is==:heading \
- && data.ln==5 \
- && data.name #check data.name
- @@seg ||='' #nil # watch
- @col[:seg]=@@seg
- @col[:lv5]+=1
- @col[:lid]+=1
- @col[:lev]=5
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
- @col[:body]=special_character_escape(@col[:body])
- @col[:plaintext]=@col[:body].dup
- @col[:plaintext]=strip_markup(@col[:plaintext])
- @col[:plaintext]=clean_searchable_text(@col[:plaintext])
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
- @tuple_array << t.tuple
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is==:heading \
- && data.ln==6
- txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @@seg_full=data.name if data.is==:heading && data.ln==6 && data.name #check data.name
- @@seg ||='' #nil # watch
- @col[:seg]=@@seg
- @col[:lv6]+=1
- @col[:lid]+=1
- @col[:lev]=6
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- @col[:body]=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
- @col[:body]=special_character_escape(@col[:body])
- @col[:plaintext]=@col[:body].dup
- @col[:plaintext]=strip_markup(@col[:plaintext])
- @col[:plaintext]=clean_searchable_text(@col[:plaintext])
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
- @tuple_array << t.tuple
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.of==:structure \
- || data.of==:layout \
- || data.of==:comment
- #added watch
- else #% regular text
- @col[:lid]+=1
- txt=''
- txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.odv,data.osp,data.of,data.is,'',data.parent,'',''
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- if @sql_type=~/pg/ \
- and txt.size > (SiSU_DbColumns::ColumnSize.new.document_clean - 1) #% examine pg build & remove limitation
- puts "\n\nTOO LARGE (TXT - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nTEXT BODY\n#{@col[:body].size} object #{@col[:ocn]} -> #{@col[:body].slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- @col[:body]=if data.is==:table
- SiSU_FormatShared::CSS_Format.new(@md,data).html_table
- elsif data.is==:code
- SiSU_FormatShared::CSS_Format.new(@md,data).code
- elsif defined? data.indent \
- and defined? data.hang \
- and data.indent =~/[1-9]/ \
- and data.indent == data.hang
- SiSU_FormatShared::CSS_Format.new(@md,data).indent(data.indent)
- elsif defined? data.indent \
- and defined? data.hang \
- and data.hang =~/[0-9]/ \
- and data.indent != data.hang
- SiSU_FormatShared::CSS_Format.new(@md,data).hang_indent(data.hang,data.indent)
- else
- SiSU_FormatShared::CSS_Format.new(@md,data).norm
- end
- @col[:body]=special_character_escape(@col[:body])
- @col[:plaintext]=@col[:body].dup
- @col[:plaintext]=strip_markup(@col[:plaintext])
- @col[:plaintext]=clean_searchable_text(@col[:plaintext])
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file)
- @tuple_array << t.tuple
- @en,@en_ast,@en_pls=[],[],[]
- @col[:en_a]=@col[:en_z]=nil
- @col[:lev]=@col[:plaintext]=@col[:body]=@col[:words]=''
- end
- if notedata =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/ #% import into database endnotes tables
- endnote_array=notedata.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/)
- endnote_array.each do |inf|
- if inf[/#{Mx[:en_a_o]}\d+.+?#{Mx[:en_a_c]}/]
- if inf[/#{Mx[:en_a_o]}(\d+)(.+?)#{Mx[:en_a_c]}/]
- nr,txt,digest_clean=$1,$2.strip,0
- end
- @id_n+=1
- txt=special_character_escape(txt)
- body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
- txt=strip_markup(txt)
- if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
- puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- if txt
- en={
- type: 'endnotes',
- id: @id_n,
- lid: @col[:lid],
- nr: nr,
- txt: txt,
- body: body,
- ocn: @col[:ocn],
- ocnd: @col[:ocnd],
- ocns: @col[:ocns],
- id_t: @@id_t,
- hash: digest_clean
- }
- t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file)
- @tuple_array << t.tuple
- end
- end
- end
- word_mode=notedata.scan(/\S+/)
- end
- if notedata =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/ #% import into database endnotes tables
- endnote_array=notedata.scan(/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/)
- endnote_array.each do |inf|
- if inf[/#{Mx[:en_b_o]}\*\d+.+?#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- if inf[/#{Mx[:en_b_o]}[*](\d+)(.+?)#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- nr,txt,digest_clean=$1,$2.strip,0
- end
- @id_n+=1
- txt=special_character_escape(txt)
- body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
- txt=strip_markup(txt)
- if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
- puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- if txt
- en={
- type: 'endnotes_asterisk',
- id: @id_n,
- lid: @col[:lid],
- nr: nr,
- txt: txt,
- body: body,
- ocn: @col[:ocn],
- ocnd: @col[:ocnd],
- ocns: @col[:ocns],
- id_t: @@id_t,
- hash: digest_clean
- }
- t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file)
- @tuple_array << t.tuple
- end
- end
- end
- word_mode=notedata.scan(/\S+/)
- end
- if notedata =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/ #% import into database endnotes tables
- endnote_array=notedata.scan(/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/)
- endnote_array.each do |inf|
- if inf[/#{Mx[:en_b_o]}\+\d+.+?#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- if inf[/#{Mx[:en_b_o]}[+](\d+)(.+?)#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- nr,txt,digest_clean=$1,$2.strip,0
- end
- @id_n+=1
- txt=special_character_escape(txt)
- body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
- txt=strip_markup(txt)
- if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
- puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- if txt
- en={
- type: 'endnotes_plus',
- id: @id_n,
- lid: @col[:lid],
- nr: nr,
- txt: txt,
- body: body,
- ocn: @col[:ocn],
- ocnd: @col[:ocnd],
- ocns: @col[:ocns],
- id_t: @@id_t,
- hash: digest_clean
- }
- t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file)
- @tuple_array << t.tuple
- end
- end
- end
- word_mode=notedata.scan(/\S+/)
- end
- end
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- @tuple_array
- end
- def endnotes(txt)
- @txt=txt
- def extract_any
- if @txt =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/
- endnotes(@txt).range
- @en << endnotes(@txt).standard if @txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/
- @en_ast << endnotes(@txt).asterisk if @txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/
- @en_pls << endnotes(@txt).plus if @txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/
- @txt=endnotes(@txt).clean_text
- end
- @txt
- end
- def standard
- x=(@txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/) \
- ? @txt.scan(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/)
- : nil
- end
- def asterisk
- x=(@txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/) \
- ? @txt.scan(/#{Mx[:en_b_o]}[*](\d+).+?#{Mx[:en_b_c]}/)
- : nil
- end
- def plus
- x=(@txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/) \
- ? @txt.scan(/#{Mx[:en_b_o]}[+](\d+).+?#{Mx[:en_b_c]}/)
- : nil
- end
- def clean_text(base_url=nil)
- @txt=if base_url
- @txt.gsub(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>}).
- gsub(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>}).
- gsub(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,%{<sup><a href="#{base_url}#_\\1" name="-\\1">\\1</a></sup>})
- else
- @txt.gsub(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,'<sup>\1</sup>').
- gsub(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,'<sup>\1</sup>').
- gsub(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,'<sup>\1</sup>')
- end
- @txt
- end
- def range
- @col[:en_a]=@col[:en_z]=nil
- if @txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}|#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/
- word_array=@txt.scan(/\S+/)
- word_array.each do |w|
- if w[/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/] # not tested since change 2003w31
- @col[:en_a]=$1 unless @col[:en_a]
- @col[:en_z]=@col[:en_a].dup unless @col[:en_a]
- @col[:en_z]=$1 if @col[:en_a]
- end
- end
- end
- @col
- end
- self
- end
- def db_import_urls(dbi_unit,content) #% import documents OID - populate database
- begin
- @fnc=content
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- base=@env.url.root
- out=@env.path.output
- f,u={},{}
- if @fnb.empty? \
- or @fnb.nil?
- p 'file output path error' #remove
- end
- if FileTest.file?("#{@md.file.output_path.txt.dir}/#{@md.file.base_filename.txt}")==true
- f[:txt],u[:txt]='plaintext,', "'#{@md.file.output_path.txt.url}/#{@md.file.base_filename.txt}',"
- end
- if FileTest.file?("#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_seg}")==true
- f[:html_toc],u[:html_toc]='html_toc,', "'#{@md.file.output_path.html_seg.url}/#{@md.file.base_filename.html_seg}',"
- end
- if FileTest.file?("#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_scroll}")==true
- f[:html_doc],u[:html_doc]='html_doc,', "'#{@md.file.output_path.html_scroll.url}/#{@md.file.base_filename.html_scroll}',"
- end
- if FileTest.file?("#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}")==true
- f[:xhtml],u[:xhtml]='xhtml,', "'#{@md.file.output_path.xhtml.url}/#{@md.file.base_filename.xhtml}',"
- end
- if FileTest.file?("#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}")==true
- f[:xml_sax],u[:xml_sax]='xml_sax,', "'#{@md.file.output_path.xml_sax.url}/#{@md.file.base_filename.xml_sax}',"
- end
- if FileTest.file?("#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}")==true
- f[:xml_dom],u[:xml_dom]='xml_dom,', "'#{@md.file.output_path.xml_dom.url}/#{@md.file.base_filename.xml_dom}',"
- end
- if FileTest.file?("#{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}")==true
- f[:epub],u[:epub]='epub,', "'#{@md.file.output_path.epub.url}/#{@md.file.base_filename.epub}',"
- end
- if FileTest.file?("#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}")==true
- f[:odf],u[:odf]='odf,', "'#{@md.file.output_path.odt.url}/#{@md.file.base_filename.odt}',"
- end
- if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_a4}")==true #\
- #or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_letter}")==true
- f[:pdf_p],u[:pdf_p]='pdf_p,', "'#{@md.file.output_path.pdf.url}/#{@pdf_fn.pdf_p_a4}',"
- end
- if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_a4}")==true #\
- #or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_letter}")==true
- f[:pdf_l],u[:pdf_l]='pdf_l,', "'#{@md.file.output_path.pdf.url}/#{@pdf_fn.pdf_l_a4}',"
- end
- if FileTest.file?("#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}")==true
- f[:concordance],u[:concordance]='concordance,', "'#{@md.file.output_path.html_concordance.url}/#{@md.file.base_filename.html_concordance}',"
- end
- #if FileTest.file?("#{@md.file.output_path.x.dir}/#{@md.file.base_filename.x}")==true
- # f[:latex_p],u[:latex_p]='latex_p,', "'#{@md.file.output_path.x.url}/#{@md.file.base_filename.x}',"
- #end
- ##if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.tex")==true
- ## f[:latex_p],u[:latex_p]='latex_p,', "'#{base}/#{@fnb}/#{@opt.fns}.tex',"
- ##end
- #if FileTest.file?("#{@md.file.output_path.x.dir}/#{@md.file.base_filename.x}")==true
- # f[:latex_l],u[:latex_l]='latex_l,', "'#{@md.file.output_path.x.url}/#{@md.file.base_filename.x}',"
- #end
- ##if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.landscape.tex")==true
- ## f[:latex_l],u[:latex_l]='latex_l,', "'#{base}/#{@fnb}/#{@opt}.fns}.landscape.tex',"
- ##end
- if FileTest.file?("#{@md.file.output_path.digest.dir}/#{@md.file.base_filename.digest}")==true
- f[:digest],u[:digest]='digest,', "'#{@md.file.output_path.digest.url}/#{@md.file.base_filename.digest}',"
- end
- if FileTest.file?("#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}")==true #revisit, was to be text, this is html
- f[:manifest],u[:manifest]='manifest,', "'#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}',"
- end
- if FileTest.file?("#{@md.file.output_path.src.dir}/#{@md.file.base_filename.src}")==true
- f[:markup],u[:markup]='markup,', "'#{@md.file.output_path.src.url}/#{@md.file.base_filename.src}',"
- end
- if FileTest.file?("#{@md.file.output_path.sisupod.dir}/#{@md.file.base_filename.sisupod}")==true
- f[:sisupod],u[:sisupod]='sisupod,', "'#{@md.file.output_path.sisupod.url}/#{@md.file.base_filename.sisupod}',"
- end
- t=SiSU_DbTuple::LoadUrls.new(@conn,f,u,@@id_t,@opt,@file)
- tuple=t.tuple
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- tuple
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_indexes.rb b/lib/sisu/v3dv/db_indexes.rb
deleted file mode 100644
index f61c584f..00000000
--- a/lib/sisu/v3dv/db_indexes.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbIndex
- class Index # create documents Indexes def initialize(opt,conn='',sql_type='')
- def initialize(opt,conn,file,sql_type='')
- @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
- end
- def create_indexes # check added from pg not tested
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- conn.execute(sql)
- end
- end
- end
- def base
- print "\n create documents common indexes\n" unless @opt.cmd =~/q/
- sql_arr=[
- %{CREATE INDEX idx_ocn ON doc_objects(ocn);},
- %{CREATE INDEX idx_digest_clean ON doc_objects(digest_clean);},
- %{CREATE INDEX idx_digest_all ON doc_objects(digest_all);},
- %{CREATE INDEX idx_lev1 ON doc_objects(lev1);},
- %{CREATE INDEX idx_lev2 ON doc_objects(lev2);},
- %{CREATE INDEX idx_lev3 ON doc_objects(lev3);},
- %{CREATE INDEX idx_lev4 ON doc_objects(lev4);},
- %{CREATE INDEX idx_lev5 ON doc_objects(lev5);},
- %{CREATE INDEX idx_lev6 ON doc_objects(lev6);},
- %{CREATE INDEX idx_endnote_nr ON endnotes(nr);},
- %{CREATE INDEX idx_digest_en ON endnotes(digest_clean);},
- %{CREATE INDEX idx_endnote_nr_asterisk ON endnotes_asterisk(nr);},
- %{CREATE INDEX idx_endnote_asterisk ON endnotes_asterisk(clean);},
- %{CREATE INDEX idx_digest_en_asterisk ON endnotes_asterisk(digest_clean);},
- %{CREATE INDEX idx_endnote_nr_plus ON endnotes_plus(nr);},
- %{CREATE INDEX idx_endnote_plus ON endnotes_plus(clean);},
- %{CREATE INDEX idx_digest_en_plus ON endnotes_plus(digest_clean);},
- %{CREATE INDEX idx_title ON metadata_and_text(title);},
- %{CREATE INDEX idx_author ON metadata_and_text(creator_author);},
- %{CREATE INDEX idx_filename ON metadata_and_text(src_filename);},
- %{CREATE INDEX idx_language ON metadata_and_text(language_document_char);},
- %{CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register)},
- ]
- conn_execute_array(sql_arr)
- end
- def text
- print "\n create documents TEXT indexes\n" unless @opt.cmd =~/q/
- sql_arr=[
- %{CREATE INDEX idx_clean ON doc_objects(clean);},
- %{CREATE INDEX idx_endnote ON endnotes(clean);}
- ]
- conn_execute_array(sql_arr)
- end
- base
- @opt.cmd=~/D/ || ((@opt.mod=~/psql/) ? '' : text)
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_load_tuple.rb b/lib/sisu/v3dv/db_load_tuple.rb
deleted file mode 100644
index c3273ace..00000000
--- a/lib/sisu/v3dv/db_load_tuple.rb
+++ /dev/null
@@ -1,333 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbTuple
- require_relative 'db_columns' # db_columns.rb
- class LoadDocuments
- require_relative 'param' # param.rb
- include SiSU_Param
- def initialize(conn,col,opt,file)
- @conn,@col,@opt,@file=conn,col,opt,file
- @col[:lev]=@col[:lev].to_i
- unless @col[:lev]=~/^[1-6]/ \
- or @col[:lev]==1 \
- or @col[:lev]==2 \
- or @col[:lev]==3 \
- or @col[:lev]==4 \
- or @col[:lev]==5 \
- or @col[:lev]==6 #changed from \d+ ??
- @col[:lev]=0
- end
- @col[:ocn]=0 unless @col[:ocn].inspect=~/\d+/
- @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- end
- def tuple #% import line
- sql_entry=if @col[:en_a]
- "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " +
- "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
- else
- "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, t_of, t_is, node, parent, digest_clean, digest_all) " +
- "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
- end
- if @opt.cmd =~/M/
- if @opt.cmd =~/V/
- puts @file.inspect
- puts sql_entry
- end
- @file.puts sql_entry
- else
- if @opt.cmd =~/V/
- puts sql_entry
- @file.puts sql_entry
- end
- end
- if @opt.cmd =~/v/
- if @col[:lev].inspect =~/[12356789]/
- lev=case @col[:lev].inspect
- when /1/; ':A'
- when /2/; ':B'
- when /3/; ':C'
- when /5/; ' 2'
- when /6/; ' 3'
- end
- puts %{#{lev}>\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}}
- elsif @col[:lev].inspect =~/[4]/
- puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}}
- end
- end
- sql_entry
- end
- end
- class LoadMetadata #< SiSU_DbColumns::Columns
- def initialize(conn,id,md,file)
- @conn,@id,@md,@file=conn,id,md,file
- @tp=SiSU_DbColumns::Columns.new(md)
- end
- def tuple
- sql_entry="INSERT INTO metadata_and_text (
-#{@tp.column.title.tuple[0]}
-#{@tp.column.title_main.tuple[0]}
-#{@tp.column.title_sub.tuple[0]}
-#{@tp.column.title_short.tuple[0]}
-#{@tp.column.title_edition.tuple[0]}
-#{@tp.column.title_note.tuple[0]}
-#{@tp.column.title_language.tuple[0]}
-#{@tp.column.title_language_char.tuple[0]}
-#{@tp.column.creator_author.tuple[0]}
-#{@tp.column.creator_author_honorific.tuple[0]}
-#{@tp.column.creator_author_nationality.tuple[0]}
-#{@tp.column.creator_editor.tuple[0]}
-#{@tp.column.creator_contributor.tuple[0]}
-#{@tp.column.creator_illustrator.tuple[0]}
-#{@tp.column.creator_photographer.tuple[0]}
-#{@tp.column.creator_translator.tuple[0]}
-#{@tp.column.creator_prepared_by.tuple[0]}
-#{@tp.column.creator_digitized_by.tuple[0]}
-#{@tp.column.creator_audio.tuple[0]}
-#{@tp.column.creator_video.tuple[0]}
-#{@tp.column.language_document.tuple[0]}
-#{@tp.column.language_document_char.tuple[0]}
-#{@tp.column.language_original.tuple[0]}
-#{@tp.column.language_original_char.tuple[0]}
-#{@tp.column.date_added_to_site.tuple[0]}
-#{@tp.column.date_available.tuple[0]}
-#{@tp.column.date_created.tuple[0]}
-#{@tp.column.date_issued.tuple[0]}
-#{@tp.column.date_modified.tuple[0]}
-#{@tp.column.date_published.tuple[0]}
-#{@tp.column.date_valid.tuple[0]}
-#{@tp.column.date_translated.tuple[0]}
-#{@tp.column.date_original_publication.tuple[0]}
-#{@tp.column.date_generated.tuple[0]}
-#{@tp.column.publisher.tuple[0]}
-#{@tp.column.original_publisher.tuple[0]}
-#{@tp.column.original_language.tuple[0]}
-#{@tp.column.original_language_char.tuple[0]}
-#{@tp.column.original_source.tuple[0]}
-#{@tp.column.original_institution.tuple[0]}
-#{@tp.column.original_nationality.tuple[0]}
-#{@tp.column.rights_all.tuple[0]}
-#{@tp.column.rights_copyright_text.tuple[0]}
-#{@tp.column.rights_copyright_translation.tuple[0]}
-#{@tp.column.rights_copyright_illustrations.tuple[0]}
-#{@tp.column.rights_copyright_photographs.tuple[0]}
-#{@tp.column.rights_copyright_preparation.tuple[0]}
-#{@tp.column.rights_copyright_digitization.tuple[0]}
-#{@tp.column.rights_copyright_audio.tuple[0]}
-#{@tp.column.rights_copyright_video.tuple[0]}
-#{@tp.column.rights_license.tuple[0]}
-#{@tp.column.classify_topic_register.tuple[0]}
-#{@tp.column.classify_subject.tuple[0]}
-#{@tp.column.classify_type.tuple[0]}
-#{@tp.column.classify_loc.tuple[0]}
-#{@tp.column.classify_dewey.tuple[0]}
-#{@tp.column.classify_oclc.tuple[0]}
-#{@tp.column.classify_pg.tuple[0]}
-#{@tp.column.classify_isbn.tuple[0]}
-#{@tp.column.classify_format.tuple[0]}
-#{@tp.column.classify_identifier.tuple[0]}
-#{@tp.column.classify_relation.tuple[0]}
-#{@tp.column.classify_coverage.tuple[0]}
-#{@tp.column.classify_keywords.tuple[0]}
-#{@tp.column.notes_abstract.tuple[0]}
-#{@tp.column.notes_comment.tuple[0]}
-#{@tp.column.notes_description.tuple[0]}
-#{@tp.column.notes_history.tuple[0]}
-#{@tp.column.notes_prefix.tuple[0]}
-#{@tp.column.notes_prefix_a.tuple[0]}
-#{@tp.column.notes_prefix_b.tuple[0]}
-#{@tp.column.notes_suffix.tuple[0]}
-#{@tp.column.src_filename.tuple[0]}
-#{@tp.column.src_fingerprint.tuple[0]}
-#{@tp.column.src_filesize.tuple[0]}
-#{@tp.column.src_word_count.tuple[0]}
-#{@tp.column.src_txt.tuple[0]}
-#{@tp.column.fulltext.tuple[0]}
-#{@tp.column.skin_name.tuple[0]}
-#{@tp.column.skin_fingerprint.tuple[0]}
-#{@tp.column.skin.tuple[0]}
-#{@tp.column.links.tuple[0]}
-tid)
-" +
- "VALUES (
-#{@tp.column.title.tuple[1]}
-#{@tp.column.title_main.tuple[1]}
-#{@tp.column.title_sub.tuple[1]}
-#{@tp.column.title_short.tuple[1]}
-#{@tp.column.title_edition.tuple[1]}
-#{@tp.column.title_note.tuple[1]}
-#{@tp.column.title_language.tuple[1]}
-#{@tp.column.title_language_char.tuple[1]}
-#{@tp.column.creator_author.tuple[1]}
-#{@tp.column.creator_author_honorific.tuple[1]}
-#{@tp.column.creator_author_nationality.tuple[1]}
-#{@tp.column.creator_editor.tuple[1]}
-#{@tp.column.creator_contributor.tuple[1]}
-#{@tp.column.creator_illustrator.tuple[1]}
-#{@tp.column.creator_photographer.tuple[1]}
-#{@tp.column.creator_translator.tuple[1]}
-#{@tp.column.creator_prepared_by.tuple[1]}
-#{@tp.column.creator_digitized_by.tuple[1]}
-#{@tp.column.creator_audio.tuple[1]}
-#{@tp.column.creator_video.tuple[1]}
-#{@tp.column.language_document.tuple[1]}
-#{@tp.column.language_document_char.tuple[1]}
-#{@tp.column.language_original.tuple[1]}
-#{@tp.column.language_original_char.tuple[1]}
-#{@tp.column.date_added_to_site.tuple[1]}
-#{@tp.column.date_available.tuple[1]}
-#{@tp.column.date_created.tuple[1]}
-#{@tp.column.date_issued.tuple[1]}
-#{@tp.column.date_modified.tuple[1]}
-#{@tp.column.date_published.tuple[1]}
-#{@tp.column.date_valid.tuple[1]}
-#{@tp.column.date_translated.tuple[1]}
-#{@tp.column.date_original_publication.tuple[1]}
-#{@tp.column.date_generated.tuple[1]}
-#{@tp.column.publisher.tuple[1]}
-#{@tp.column.original_publisher.tuple[1]}
-#{@tp.column.original_language.tuple[1]}
-#{@tp.column.original_language_char.tuple[1]}
-#{@tp.column.original_source.tuple[1]}
-#{@tp.column.original_institution.tuple[1]}
-#{@tp.column.original_nationality.tuple[1]}
-#{@tp.column.rights_all.tuple[1]}
-#{@tp.column.rights_copyright_text.tuple[1]}
-#{@tp.column.rights_copyright_translation.tuple[1]}
-#{@tp.column.rights_copyright_illustrations.tuple[1]}
-#{@tp.column.rights_copyright_photographs.tuple[1]}
-#{@tp.column.rights_copyright_preparation.tuple[1]}
-#{@tp.column.rights_copyright_digitization.tuple[1]}
-#{@tp.column.rights_copyright_audio.tuple[1]}
-#{@tp.column.rights_copyright_video.tuple[1]}
-#{@tp.column.rights_license.tuple[1]}
-#{@tp.column.classify_topic_register.tuple[1]}
-#{@tp.column.classify_subject.tuple[1]}
-#{@tp.column.classify_type.tuple[1]}
-#{@tp.column.classify_loc.tuple[1]}
-#{@tp.column.classify_dewey.tuple[1]}
-#{@tp.column.classify_oclc.tuple[1]}
-#{@tp.column.classify_pg.tuple[1]}
-#{@tp.column.classify_isbn.tuple[1]}
-#{@tp.column.classify_format.tuple[1]}
-#{@tp.column.classify_identifier.tuple[1]}
-#{@tp.column.classify_relation.tuple[1]}
-#{@tp.column.classify_coverage.tuple[1]}
-#{@tp.column.classify_keywords.tuple[1]}
-#{@tp.column.notes_abstract.tuple[1]}
-#{@tp.column.notes_comment.tuple[1]}
-#{@tp.column.notes_description.tuple[1]}
-#{@tp.column.notes_history.tuple[1]}
-#{@tp.column.notes_prefix.tuple[1]}
-#{@tp.column.notes_prefix_a.tuple[1]}
-#{@tp.column.notes_prefix_b.tuple[1]}
-#{@tp.column.notes_suffix.tuple[1]}
-#{@tp.column.src_filename.tuple[1]}
-#{@tp.column.src_fingerprint.tuple[1]}
-#{@tp.column.src_filesize.tuple[1]}
-#{@tp.column.src_word_count.tuple[1]}
-#{@tp.column.src_txt.tuple[1]}
-#{@tp.column.fulltext.tuple[1]}
-#{@tp.column.skin_name.tuple[1]}
-#{@tp.column.skin_fingerprint.tuple[1]}
-#{@tp.column.skin.tuple[1]}
-#{@tp.column.links.tuple[1]}
-#{@id}
-);"
- if @md.opt.cmd =~/M/
- puts "maintenance mode on: creating sql transaction file (for last transaction set (document) only):\n\t#{@file.inspect}"
- @file.puts sql_entry
- else
- @file.puts sql_entry if @md.opt.cmd =~/V/
- end
- sql_entry
- end
- end
- class LoadUrls
- def initialize(conn,f,u,id,opt,file)
- @conn,@f,@u,@id,@opt,@file=conn,f,u,id,opt,file
- end
- def tuple
- sql_entry="INSERT INTO urls (#{@f[:txt]} #{@f[:html_toc]} #{@f[:html_doc]} #{@f[:xhtml]} #{@f[:xml_sax]} #{@f[:xml_dom]} #{@f[:odf]} #{@f[:pdf_p]} #{@f[:pdf_l]} #{@f[:concordance]} #{@f[:latex_p]} #{@f[:latex_l]} #{@f[:manifest]} #{@f[:digest]} #{@f[:markup]} #{@f[:sisupod]} metadata_tid) " +
- "VALUES (#{@u[:txt]} #{@u[:html_toc]} #{@u[:html_doc]} #{@u[:xhtml]} #{@u[:xml_sax]} #{@u[:xml_dom]} #{@u[:odf]} #{@u[:pdf_p]} #{@u[:pdf_l]} #{@u[:concordance]} #{@u[:latex_p]} #{@u[:latex_l]} #{@u[:manifest]} #{@u[:digest]} #{@u[:markup]} #{@u[:sisupod]} #{@id});"
- if @opt.cmd =~/M/
- @file.puts sql_entry
- else
- @file.puts sql_entry if @opt.cmd =~/V/
- end
- sql_entry
- end
- end
- class LoadEndnotes
- def initialize(conn,en,opt,file)
- @conn,@en,@opt,@file=conn,en,opt,file
- end
- def tuple
- sql_entry="INSERT INTO #{@en[:type]} (nid, document_lid, nr, clean, body, ocn, ocnd, ocns, metadata_tid, digest_clean) " +
- "VALUES ('#{@en[:id]}', '#{@en[:lid]}', '#{@en[:nr]}', '#{@en[:txt]}', '#{@en[:body]}', '#{@en[:ocn]}', '#{@en[:ocnd]}', '#{@en[:ocns]}', '#{@en[:id_t]}', '#{@en[:hash]}');"
- if @opt.cmd =~/M/
- @file.puts sql_entry
- else
- @file.puts sql_entry if @opt.cmd =~/V/
- end
- sql_entry
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_remove.rb b/lib/sisu/v3dv/db_remove.rb
deleted file mode 100644
index e34a0a93..00000000
--- a/lib/sisu/v3dv/db_remove.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbRemove
- class Remove
- def initialize(opt,conn,file,sql_type)
- @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
- @md=SiSU_Param::Parameters.new(@opt).get
- @fnb=@md.fnb
- @db=SiSU_Env::InfoDb.new
- end
- def remove
- driver_sqlite3=if @sql_type=='sqlite'
- (@conn.inspect.match(/^(.{10})/)[1]==@db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1]) \
- ? true
- : false
- end
- del_id=if driver_sqlite3
- @conn.get_first_value(%{
- SELECT tid
- FROM metadata_and_text
- WHERE src_filename = '#{@opt.fns}'
- AND metadata_and_text.language_document_char = '#{@opt.lng}'
- ;}).to_i
- else
- x=@conn.select_one(%{
- SELECT metadata_and_text.tid
- FROM metadata_and_text
- WHERE metadata_and_text.src_filename = '#{@opt.fns}'
- AND metadata_and_text.language_document_char = '#{@opt.lng}'
- ;})
- x ? (x.join.to_i) : nil
- end
- if del_id
- sql_entry=[
- "DELETE FROM endnotes WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM endnotes_asterisk WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM endnotes_plus WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM doc_objects WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM urls WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM metadata_and_text WHERE metadata_and_text.tid = '#{del_id}';",
- ]
- if driver_sqlite3
- @conn.transaction
- sql_entry.each do |s|
- @conn.execute(s)
- end
- @conn.commit if driver_sqlite3
- else
- sql_entry.each do |s|
- @conn.execute(s)
- end
- end
- if @opt.cmd =~/M/
- @file.puts sql_entry if @opt.cmd =~/M/
- end
- else
- SiSU_Screen::Ansi.new(@opt.cmd,"no such file in database #{@db.psql.db}::#{@opt.fns}").puts_grey if @opt.cmd =~/vVM/
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_select.rb b/lib/sisu/v3dv/db_select.rb
deleted file mode 100644
index 52fbe8ba..00000000
--- a/lib/sisu/v3dv/db_select.rb
+++ /dev/null
@@ -1,216 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbSelect
- class Case
- def initialize(opt,conn='',sql_type='pg')
- @opt,@conn,@sql_type=opt,conn,sql_type
- @db=SiSU_Env::InfoDb.new
- @file=sql_maintenance_file
- @sdb=SiSU_DbDBI::Create.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
- @sdb_index=SiSU_DbDBI::Index.new(@opt,@conn,@file,@sql_type) # db_dbi.rb
- @sdb_no=SiSU_DbDBI::Drop.new(@opt,@conn,@db,@sql_type) # db_dbi.rb
- if @opt.mod.inspect =~/update|import/
- @sdb_import=SiSU_DbDBI::Import.new(@opt,@conn,@file,@sql_type)
- @sdb_remove_doc=SiSU_DbDBI::Remove.new(@opt,@conn,@file,@sql_type)
- elsif @opt.mod.inspect =~/remove/
- @sdb_remove_doc=SiSU_DbDBI::Remove.new(@opt,@conn,@file,@sql_type)
- end
- end
- def db_exist?
- if @sql_type=='sqlite' \
- and (not (FileTest.file?(@db.sqlite.db)) or FileTest.zero?(@db.sqlite.db))
- puts %{no connection with #{@sql_type} database established, createdb "#{@db.sqlite.db}"?}
- exit
- end
- if @conn.class==NilClass
- db=@sql_type=='sqlite' \
- ? @db.sqlite.db
- : @db.psql.db
- puts %{no connection with #{@sql_type} database established, createdb "#{db}"?}
- exit
- end
- end
- def sql_maintenance_file
- file=if @opt.inspect =~/M/
- x=if @opt.fns and not @opt.fns.empty?
- @env=SiSU_Env::InfoEnv.new(@opt.fns) if @opt.fns
- puts "\n#{@env.processing_path.sqlite}/#{@opt.fns}.sql" if @sql_type =~/sqlite/ and @opt.cmd =~/M/
- @db=SiSU_Env::InfoDb.new
- @job="sqlite3 #{@db.sqlite.db} < #{@env.processing_path.sqlite}/#{@opt.fns}.sql"
- File.new("#{@env.processing_path.sqlite}/#{@opt.fns}.sql",'w+')
- elsif @opt.fns and @opt.fns.inspect =~/create/; nil #sort variations later
- else nil
- end
- else nil
- end
- file
- end
- def cases
- @opt.mod.each do |mod|
- case mod
- when /^--createdb$/
- @sdb.output_dir?
- begin
- @sdb.create_db
- rescue; @sdb.output_dir?
- end
- when /^--(?:init(?:ialize)?|create(?:all)?)$/
- @sdb.output_dir?
- begin
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
- rescue; SiSU_Errors::InfoError.new($!,$@,'-D').error; @sdb.output_dir?
- end
- when /^--createtables?$/
- @sdb.output_dir?
- begin
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
- rescue; @sdb.output_dir?
- end
- when /^--recreate$/
- @sdb.output_dir?
- begin
- @sdb_no.drop.tables
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
- rescue; @sdb.output_dir?
- end
- when /^--cr(eate)?lex$/
- @sdb.output_dir?
- begin
- @sdb.create_table.doc_objects
- rescue; @sdb.output_dir?
- end
- when /^--cr(eate)?metadata$/
- @sdb.output_dir?
- begin
- @sdb.create_table.metadata_and_text
- rescue; @sdb.output_dir?
- end
- when /^--import$/
- db_exist?
- @sdb_import.marshal_load
- tell=case @sql_type
- when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{@db.sqlite.db} database?")
- when /pg/; SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?")
- else '???'
- end
- tell.puts_grey if @opt.cmd =~/v/
- when /^--update$/
- db_exist?
- @sdb_remove_doc.remove
- @sdb_import.marshal_load
- tell=case @sql_type
- when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{@db.sqlite.db} database?")
- when /pg/; SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?")
- else '???'
- end
- tell.puts_grey if @opt.cmd =~/v/
- when /^--update$/
- when /^--remove$/
- db_exist?
- @sdb_remove_doc.remove
- when /^--index$/
- db_exist?
- @sdb_index.create_indexes
- when /^droptable(s)?$/
- db_exist?
- @sdb_no.drop.tables
- when /^--dropindex(es)?$/
- db_exist?
- @sdb_no.drop.indexes
- when /^--(?:dropall|drop)$/
- db_exist?
- @sdb_no.drop.tables
- when /^--(?:db=)?(?:(?:sq)?lite|pg(?:sql)?|my(?:sql)?)$/
- when /^--(?:v\d+|dev)$/
- else
- help=SiSU_Help::Help.new
- help.summary
- help.commands
- end
- if @opt.cmd =~/M/ \
- and @opt.cmd =~/d/
- puts @job
- end
- end
- begin
- rescue; @sdb.output_dir?
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/db_sqltxt.rb b/lib/sisu/v3dv/db_sqltxt.rb
deleted file mode 100644
index e65a8521..00000000
--- a/lib/sisu/v3dv/db_sqltxt.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DbText
- class Prepare
- def special_character_escape(str)
- str=str.gsub(/'/,"''"). #string.gsub!(/'/,"\047") #string.gsub!(/'/,"\\'")
- gsub(/(\\)/m,'\1\1'). #ok but with warnings, double backslash on sqlite #str.gsub!(/[\\]/m,'\\x5C') #ok but with warnings, but not for sqlite #str.gsub!(/(\\)/m,'\1') #ok for sqlite not for pgsql
- gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"<br />\n").
- gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,''). #check
- gsub(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg))(?:\s+\d+x\d+)?(.+?)#{Mx[:lnk_c]}\S+/,'[image: \1] \2').
- gsub(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}(?:file|ftp):\/\/\S+?([.,!?]?(?:\s|$))/,'\1\2').
- gsub(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'\1')
- end
- def clean_searchable_text(arr) #produce clean, searchable, plaintext from document source
- txt_arr,en=[],[]
- arr=arr.class==String ? arr.split(/\n+/m) : arr
- arr.each do |s|
- s=s.gsub(/([*\/_-])\{(.+?)\}\1/m,'\2').
- gsub(/^(?:block|group|poem|code)\{/m,'').gsub(/^\}(?:block|group|poem|code)/m,'').
- gsub(/\A(?:@\S+:\s+.+)\Z/m,'')
- if s =~/^:A~/
- if defined? @md.creator \
- and defined? @md.creator.author \
- and not @md.creator.author.empty?
- s=s.gsub(/@author/,@md.creator.author)
- else
- SiSU_Screen::Ansi.new('v','WARNING Document Author information missing; provide @creator: :author:',@md.fnb).warn unless @md.opt.cmd.inspect =~/q/
- end
- if defined? @md.title \
- and defined? @md.title.full \
- and not @md.title.full.empty?
- s=s.gsub(/@title/,@md.title.full)
- else
- SiSU_Screen::Ansi.new('v','WARNING Document Title missing; provide @title:',@md.fnb).warn unless @md.opt.cmd.inspect =~/q/
- end
- end
- s=s.gsub(/^(?:_[1-9]\*?|_\*)\s+/m,'').
- gsub(/^(?:[1-9]\~(\S+)?)\s+/m,'').
- gsub(/^(?::?[A-C]\~(\S+)?)\s+/m,'').
- gsub(/^%{1,3} .+/m,''). #removed even if contained in code block
- gsub(/<br>/m,' ')
- en << s.scan(/~\{\s*(.+?)\s*\}~/m)
- s=s.gsub(/~\{.+?\}~/m,'').
- gsub(/ \s+/m,' ')
- #special_character_escape(s)
- s
- end
- txt_arr << arr << en
- #txt_arr=txt_arr.flatten
- txt=txt_arr.flatten.join("\n")
- txt=special_character_escape(txt)
- txt
- end
- def strip_markup(str) #define rules, make same as in dal clean
- str=str.gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]').
- gsub(/(?:&nbsp\\;|#{Mx[:nbsp]})+/,' ').
- gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}\d+(.+)#{Mx[:tc_c]}/u,'\1'). #tables
- gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}\d+#{Mx[:tc_p]}/u,' '). #tables
- gsub(/#{Mx[:tc_p]}/u,' '). #tables tidy later
- gsub(/<.+?>/,'').
- gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:file|ftp)\/\/:\S+ /,' [image] '). # else image names found in search
- gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [image]'). # else image names found in search
- gsub(/\s\s+/,' ').
- strip
- end
- def unique_words(str)
- a=str.scan(/[a-zA-Z0-9\\\/_-]{2,}/) #a=str.scan(/\S+{2,}/)
- str=a.uniq.sort.join(' ')
- str
- end
- end
-end
-__END__
-
diff --git a/lib/sisu/v3dv/db_tests.rb b/lib/sisu/v3dv/db_tests.rb
deleted file mode 100644
index 3bef2f5f..00000000
--- a/lib/sisu/v3dv/db_tests.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbTests
- class Test
- def initialize(info,opt)
- @ck,@opt=info,opt
- unless @opt.cmd =~/q/
- puts @ck.tp[:fns] if @ck.tp[:fns] and not @ck.tp[:fns].empty?
- puts @ck.tp[:title] if @ck.tp[:title] and not @ck.tp[:title].empty?
- puts @ck.tp[:creator] if @ck.tp[:creator] and not @ck.tp[:creator].empty?
- end
- end
- def verify
- unless @opt.cmd =~/q/
- puts @ck.tp[:fns].length.to_s + ' checklength ' + @ck.tp[:fns] if @ck.tp[:fns] and @ck.tp[:fns].length >@ck.lt_filename
- puts @ck.tp[:title].length.to_s + ' checklength ' + @ck.tp[:title] if @ck.tp[:title] and @ck.tp[:title].length >@ck.lt_title
- puts @ck.tp[:subtitle].length.to_s + ' checklength ' + @ck.tp[:subtitle] if @ck.tp[:subtitle] and @ck.tp[:subtitle].length >@ck.lt_subtitle
- puts @ck.tp[:creator].length.to_s + ' checklength ' + @ck.tp[:creator] if @ck.tp[:creator] and @ck.tp[:creator].length >@ck.lt_creator
- puts @ck.tp[:author_title].length.to_s + ' checklength ' + @ck.tp[:author_title] if @ck.tp[:author_title] and @ck.tp[:author_title].length >@ck.lt_author_title
- puts @ck.tp[:illustrator].length.to_s + ' checklength ' + @ck.tp[:illustrator] if @ck.tp[:illustrator] and @ck.tp[:illustrator].length >@ck.lt_illustrator
- puts @ck.tp[:translator].length.to_s + ' checklength ' + @ck.tp[:translator] if @ck.tp[:translator] and @ck.tp[:translator].length >@ck.lt_translator
- puts @ck.tp[:prepared_by].length.to_s + ' checklength ' + @ck.tp[:prepared_by] if @ck.tp[:prepared_by] and @ck.tp[:prepared_by].length >@ck.lt_prepared_by
- puts @ck.tp[:digitized_by].length.to_s + ' checklength ' + @ck.tp[:digitized_by] if @ck.tp[:digitized_by] and @ck.tp[:digitized_by].length >@ck.lt_digitized_by
- puts @ck.tp[:subject].length.to_s + ' checklength ' + @ck.tp[:subject] if @ck.tp[:subject] and @ck.tp[:subject].length >@ck.lt_subject
- puts @ck.tp[:description].length.to_s + ' checklength ' + @ck.tp[:description] if @ck.tp[:description] and @ck.tp[:description].length >@ck.lt_description
- puts @ck.tp[:publisher].length.to_s + ' checklength ' + @ck.tp[:publisher] if @ck.tp[:publisher] and @ck.tp[:publisher].length >@ck.lt_publisher
- puts @ck.tp[:contributor].length.to_s + ' checklength ' + @ck.tp[:contributor] if @ck.tp[:contributor] and @ck.tp[:contributor].length >@ck.lt_contributor
- puts @ck.tp[:date].length.to_s + ' checklength ' + @ck.tp[:date] if @ck.tp[:date] and @ck.tp[:date].length >@ck.lt_date
- puts @ck.tp[:date_created].length.to_s + ' checklength ' + @ck.tp[:date_created] if @ck.tp[:date_created] and @ck.tp[:date_created].length >@ck.lt_date
- puts @ck.tp[:date_issued].length.to_s + ' checklength ' + @ck.tp[:date_issued] if @ck.tp[:date_issued] and @ck.tp[:date_issued].length >@ck.lt_date
- puts @ck.tp[:date_valid].length.to_s + ' checklength ' + @ck.tp[:date_valid] if @ck.tp[:date_valid] and @ck.tp[:date_valid].length >@ck.lt_date
- puts @ck.tp[:date_available].length.to_s + ' checklength ' + @ck.tp[:date_available] if @ck.tp[:date_available] and @ck.tp[:date_available].length >@ck.lt_date
- puts @ck.tp[:date_modified].length.to_s + ' checklength ' + @ck.tp[:date_modified] if @ck.tp[:date_modified] and @ck.tp[:date_modified].length >@ck.lt_date
- puts @ck.tp[:date_translated].length.to_s + ' checklength ' + @ck.tp[:date_translated] if @ck.tp[:date_translated] and @ck.tp[:date_translated].length >@ck.lt_date
- puts @ck.tp[:date_added_to_site].length.to_s + ' checklength ' + @ck.tp[:date_added_to_site] if @ck.tp[:date_added_to_site] and @ck.tp[:date_added_to_site].length >@ck.lt_date
- puts @ck.tp[:type].length.to_s + ' checklength ' + @ck.tp[:type] if @ck.tp[:type] and @ck.tp[:type].length >@ck.lt_type
- puts @ck.tp[:format].length.to_s + ' checklength ' + @ck.tp[:format] if @ck.tp[:format] and @ck.tp[:format].length >@ck.lt_format
- puts @ck.tp[:identifier].length.to_s + ' checklength ' + @ck.tp[:identifier] if @ck.tp[:identifier] and @ck.tp[:identifier].length >@ck.lt_identifier
- puts @ck.tp[:source].length.to_s + ' checklength ' + @ck.tp[:source] if @ck.tp[:source] and @ck.tp[:source].length >@ck.lt_source
- puts @ck.tp[:language].length.to_s + ' checklength ' + @ck.tp[:language] if @ck.tp[:language] and @ck.tp[:language].length >@ck.lt_language
- puts @ck.tp[:language_original].length.to_s + ' checklength ' + @ck.tp[:language_original] if @ck.tp[:language_original] and @ck.tp[:language_original].length >@ck.lt_language_original
- puts @ck.tp[:relation].length.to_s + ' checklength ' + @ck.tp[:relation] if @ck.tp[:relation] and @ck.tp[:relation].length >@ck.lt_relation
- puts @ck.tp[:coverage].length.to_s + ' checklength ' + @ck.tp[:coverage] if @ck.tp[:coverage] and @ck.tp[:coverage].length >@ck.lt_coverage
- puts @ck.tp[:rights].length.to_s + ' checklength ' + @ck.tp[:rights] if @ck.tp[:rights] and @ck.tp[:rights].length >@ck.lt_rights
- puts @ck.tp[:copyright].length.to_s + ' checklength ' + @ck.tp[:copyright] if @ck.tp[:copyright] and @ck.tp[:copyright].length >@ck.lt_copyright
- puts @ck.tp[:owner].length.to_s + ' checklength ' + @ck.tp[:owner] if @ck.tp[:owner] and @ck.tp[:owner].length >@ck.lt_owner
- puts @ck.tp[:keywords].length.to_s + ' checklength ' + @ck.tp[:keywords] if @ck.tp[:keywords] and @ck.tp[:keywords].length >@ck.lt_keywords
- puts @ck.tp[:abstract].length.to_s + ' checklength ' + @ck.tp[:abstract] if @ck.tp[:abstract] and @ck.tp[:abstract].length >@ck.lt_abstract
- puts @ck.tp[:comment].length.to_s + ' checklength ' + @ck.tp[:comment] if @ck.tp[:comment] and @ck.tp[:comment].length >@ck.lt_comment
- puts @ck.tp[:loc].length.to_s + ' checklength ' + @ck.tp[:loc] if @ck.tp[:loc] and @ck.tp[:loc].length >@ck.lt_loc
- puts @ck.tp[:dewey].length.to_s + ' checklength ' + @ck.tp[:dewey] if @ck.tp[:dewey] and @ck.tp[:dewey].length >@ck.lt_dewey
- puts @ck.tp[:isbn].length.to_s + ' checklength ' + @ck.tp[:isbn] if @ck.tp[:isbn] and @ck.tp[:isbn].length >@ck.lt_isbn
- puts @ck.tp[:pg].length.to_s + ' checklength ' + @ck.tp[:pg] if @ck.tp[:pg] and @ck.tp[:pg].length >@ck.lt_pg
- puts @ck.tp[:topic_register].length.to_s + ' checklength ' + @ck.tp[:topic_register] if @ck.tp[:topic_register] and @ck.tp[:topci_register].length >@ck.lt_topic_register
- puts @ck.tp[:date] if @ck.tp[:date] and not @ck.tp[:date].empty? and @ck.tp[:date] !~/\d\d-\d\d-\d\d/
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/dbi.rb b/lib/sisu/v3dv/dbi.rb
deleted file mode 100644
index f11d9e81..00000000
--- a/lib/sisu/v3dv/dbi.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: postgresql module, dbi import frame
-
-=end
-module SiSU_DBI #% database building
- require_relative 'help' # help.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'db_dbi' # db_dbi.rb
- include SiSU_DbDBI
- require_relative 'shared_html_lite' # shared_html_lite.rb
- include SiSU_FormatShared
- class SQL
- def initialize(opt)
- SiSU_Env::Load.new('dbi',true).prog
- @opt=opt
- @db=SiSU_Env::InfoDb.new
- if @opt.cmd =~/[Dd]/ \
- or @opt.mod.inspect =~/--(pg(?:sql)?|(?:sq)?lite)/
- @sql_type=if @opt.cmd=~/D/ \
- or @opt.mod.inspect =~/--pg(?:sql)?/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'pg'
- elsif @opt.cmd =~/d/ \
- and @opt.mod.inspect =~/--(?:db[=-])?pg(?:sql)?/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'pg'
- elsif @opt.cmd=~/d/ \
- or @opt.mod.inspect =~/--(?:sq)?lite/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'sqlite'
- elsif @opt.cmd =~/d/ \
- and @opt.mod.inspect =~/--(?:db[=-])?(?:sq)?lite/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'sqlite'
- else
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'sqlite'
- end
- end
- end
- def maintenance_check(opt,file,line)
- p opt.mod
- p opt.cmd
- p "at #{file} #{line}"
- end
- def read_psql
- begin
- @conn=@db.psql.conn_dbi
- rescue
- if @opt.mod.inspect=~/--(createall|create)/
- puts %{manually create the database: "#{@db.db}" if it does not yet exist}
- #sudo su -p postgres; createdb #{@db.db}; #[createuser?]
- end
- SiSU_DbDBI::Case.new(@opt,@conn,@sql_type).cases
- @conn=DBI.connect(@db.dbi,@db.user,@db.db)
- ensure
- end
- end
- def read_sqlite
- begin
- sql_type='sqlite'
- @conn=@db.sqlite.conn_sqlite3
- rescue
- ensure
- end
- end
- def connect
- case @sql_type
- when /pg/; read_psql
- when /sqlite/; read_sqlite
- end
- SiSU_Screen::Ansi.new(@opt.cmd,"DBI (#{@sql_type}) #{@opt.mod}",@opt.fns).dbi_title unless @opt.cmd =~/q/
- begin
- SiSU_DbDBI::Case.new(@opt,@conn,@sql_type).cases
- rescue
- SiSU_Errors::InfoError.new($!,$@,@cf,@opt.fns).error
- ensure
- end
- begin
- rescue
- connect
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/defaults.rb b/lib/sisu/v3dv/defaults.rb
deleted file mode 100644
index e74ff83c..00000000
--- a/lib/sisu/v3dv/defaults.rb
+++ /dev/null
@@ -1,2267 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/gpl.fsf/toc.html>
- <http://www.sisudoc.org/sisu/gpl.fsf/doc.html>
- <http://www.sisudoc.org/sisu/gpl.fsf/plain.txt>
-
- * 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/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: Default values (reset by skins)
-
-=end
-$latex_run=nil
-module SiSU_Viz
- require 'uri'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'css' # css.rb
- include SiSU_Style
- class Skin
- def initialize
- @fonts='verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman' # 'verdana, arial, georgia, tahoma, sans-serif, helvetica, "times new roman", times, roman'
- @dir=SiSU_Env::InfoEnv.new
- @date=SiSU_Env::InfoDate.new #{@date.year}
- @v=SiSU_Env::InfoVersion.instance.get_version
- end
- #% glyph
- def glyph_bullet # &bullet;
- '&#149;&nbsp;' # [&#149; flagged]
- end
- #% html
- def html_hardspace
- '&nbsp;'
- end
- #% php
- def php_persist
- end
- #% javascript #kxjs knxjs
- def js_home
- end
- def js_infobox
- end
- def js_knxjs
- end
- def js_head
- end
- def js_top
- end
- def js_sisu
- end
- def js_home
- end
- def js_sponsor
- end
- def js_books
- end
- def js_journals
- end
- def js_conferences
- end
- def js_services
- end
- def js_catalogue
- end
- def js_doc
- end
- def js_toc
- end
- def js_seg
- end
- def js_mail
- end
- def js_manifest
- end
- def js_status
- end
- def js_next
- end
- def js_prev
- end
- def js_plaintext
- end
- def js_portrait
- end
- def js_landscape
- end
- def js_pdf
- end
- def js_epub
- end
- def js_odf
- end
- def js_concordance
- end
- def js_instruments
- end
- def js_external
- end
- def js_gopher
- end
- def js_ftp
- end
- def js_law
- end
- def js_disclaimer
- end
- def semantic_tags
- def default
- {
- pub: 'publication',
- conv: 'convention',
- vol: 'volume',
- pg: 'page',
- cty: 'city',
- org: 'organization',
- uni: 'university',
- dept: 'department',
- fac: 'faculty',
- inst: 'institute',
- co: 'company',
- com: 'company',
- conv: 'convention',
- dt: 'date',
- y: 'year',
- m: 'month',
- d: 'day',
- ti: 'title',
- au: 'author',
- ed: 'editor', #editor?
- v: 'version', #edition
- n: 'name',
- fn: 'firstname',
- mn: 'middlename',
- ln: 'lastname',
- in: 'initials',
- qt: 'quote',
- ct: 'cite',
- ref: 'reference',
- ab: 'abreviation',
- def: 'define',
- desc: 'description',
- trans: 'translate',
- }
- end
- self
- end
- #% decorate
- def decorate_italics
- 'title|article|book|journal'
- end
- def decorate_bold
- end
- def decorate_uppercase
- 'surname'
- end
- #% semantic
- def sem_title #dc 1
- 'title'
- end
- def sem_article
- 'article'
- end
- def sem_book
- 'book'
- end
- def sem_journal
- 'journal'
- end
- def sem_fullname # (contains: firstname, surname) #issues arise as contains surname etc.
- 'fullname'
- end
- def sem_first
- 'first'
- end
- def sem_surname
- 'surname'
- end
- def sem_middle
- 'middle'
- end
- def sem_creator #dc 2 #==fullname (contains: firstname, surname)
- 'creator'
- end
- def sem_author #==fullname (contains: firstname, surname)
- 'author'
- end
- def sem_editor #==fullname (contains: firstname, surname)
- 'editor'
- end
- def sem_illustrator #==fullname (contains: firstname, surname)
- 'illustrator'
- end
- def sem_translator #==fullname (contains: firstname, surname)
- 'translator'
- end
- def sem_isbn # 10 or 13
- 'isbn'
- end
- def sem_isbn_10
- 'isbn10'
- end
- def sem_isbn_13
- 'isbn13'
- end
- def sem_loc # library of congress
- 'loc'
- end
- def sem_dewey
- 'dewey'
- end
- def sem_pg # project gutenberg number
- 'pg'
- end
- def sem_subject #dc 3
- 'subject'
- end
- def sem_date #dc 7
- 'date'
- end
- def sem_date_created
- 'date_created'
- end
- def sem_date_issued
- 'date_issued'
- end
- def sem_date_available
- 'date_available'
- end
- def sem_date_valid
- 'date_valid'
- end
- def sem_date_modified
- 'date_modified'
- end
- def sem_type #dc 8
- 'type'
- end
- def sem_description #dc 4
- 'description'
- end
- def sem_publisher #dc 5
- 'publisher'
- end
- def sem_contributor #dc 6
- 'contributor'
- end
- def sem_format #dc 9
- 'format'
- end
- def sem_identifier #dc 10
- 'identifier'
- end
- def sem_source #dc 11
- 'source'
- end
- def sem_language #dc 12
- 'language'
- end
- def sem_relation #dc 13
- 'source'
- end
- def sem_coverage #dc 14
- 'coverage'
- end
- def sem_rights #dc 15
- 'rights'
- end
- def sem_copyright
- 'copyright'
- end
- def sem_license
- 'license'
- end
- def sem_prepared_by
- 'prepared_by'
- end
- def sem_digitized_by
- 'digitized_by'
- end
- def sem_keywords
- 'keywords'
- end
- def sem_comments
- 'comments'
- end
- def sem_abstract
- 'abstract'
- end
- #% path
- def path_stylesheet_home
- %{ <link rel="stylesheet" href="./#{@dir.path.style}/homepage.css" type="text/css" />}
- end
- #% text #changed from txt to avoid naming conflicts #FOLLOW
- def txt_generator
- %{ <meta name="generator" content="#{@v[:project]} #{@v[:version]} of #{@v[:date_stamp]} (#{@v[:date]}) (n*x and Ruby!)" />
- <link rel="generator" href="http://www.sisudoc.org/" />}
- end
- def txt_generator_comment
- %{ <!- #{@v[:project]} #{@v[:version]} of #{@v[:date_stamp]} (#{@v[:date]}) (n*x and Ruby!)" http://www.sisudoc.org/ ->}
- end
- def txt_hp
- '&nbsp;SiSU'
- end
- def txt_hp_alias
- 'SiSU'
- end
- def txt_home
- 'SiSU'
- end
- def txt_signature # used in latex/pdf footer
- 'SiSU'
- end
- #% url
- def url_urify(uri)
- URI.parse(uri)
- end
- def url_sisu
- 'http://www.sisudoc.org/'
- end
- def url_sisudoc
- 'http://www.sisudoc.org'
- end
- def url_footer_signature
- 'http://www.sisudoc.org/'
- end
- def url_root
- '/sisu' #watch
- end
- def url_root_http
- 'http://www.sisudoc.org/' #watch
- end
- def url_home
- 'http://www.sisudoc.org/' # used in pdf header
- end
- def url_site #used as stub... where there are subdirectories and is different from home
- url_home
- #'http://www.sisudoc.org/' # used in pdf header
- end
- def url_txt
- 'www.sisudoc.org/'
- end
- def url_path_image_base #used for html image display
- "#{Xx[:html_relative2]}_sisu/image"
- end
- def url_path_image #used for html image display
- "#{Xx[:html_relative2]}_sisu/image"
- end
- def url_path_image_sys #used for html image display
- "#{Xx[:html_relative2]}_sisu/image_sys"
- end
- def url_path_image_epub
- './image'
- end
- def url_path_ebook_dir
- './ebook'
- end
- def url_path_ebook_images
- '.'
- end
- def url_promo
- ''
- end
- def url_promo_home
- ''
- end
- def url_decoration
- def tex_open #'{\UseTextSymbol{OML}{<}}'
- Dx[:url_o]
- end
- def tex_close #'{\UseTextSymbol{OML}{>}}'
- Dx[:url_c]
- end
- def xml_open #'&lt;'
- Dx[:url_o]
- end
- def xml_close #'&gt;'
- Dx[:url_c]
- end
- def txt_open
- '<'
- end
- def txt_close
- '>'
- end
- self
- end
- def rel_decoration
- def tex_open #'{\UseTextSymbol{OML}{<}}'
- Dx[:rel_o]
- end
- def tex_close #'{\UseTextSymbol{OML}{>}}'
- Dx[:rel_c]
- end
- def xml_open #'&lt;'
- Dx[:rel_o]
- end
- def xml_close #'&gt;'
- Dx[:rel_c]
- end
- def txt_open
- '<'
- end
- def txt_close
- '>'
- end
- self
- end
- #% color
- def color_shadow
- '"4"'
- end
- def color_body
- %{<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">}
- end
- def color_white
- '"#ffffff"'
- end
- def color_black
- '#000000'
- end
- def color_shadow #hmmm
- '"4"'
- end
- def color_blue_dark
- '#000099'
- end
- def color_blue
- 'blue'
- end
- def color_blue_base
- '#b9d4dd'
- end
- def color_blue_ink
- '#003399'
- end
- def color_blue_tinge
- '#e3ecef'
- end
- def color_blue_grey
- '#8faebf'
- end
- def color_blue_murky
- '#437389'
- end
- def color_beige
- '#f1e8de'
- end
- def color_subtleglow
- '#dddccc'
- end
- def color_glow
- '#fff0c3'
- end
- def color_rose
- '#ffdec9'
- end
- def color_turquoise
- '#1c869b'
- end
- def color_grey_pale
- '#eeeeee'
- end
- def color_grey_medium
- '#cccccc'
- end
- def color_grey
- '#999999'
- end
- def color_yellow_light
- '#fff3b6'
- end
- def color_yellow
- '#ffde14'
- end
- def color_yellow_dark
- '#ffcc00'
- end
- def color_green_light
- '#b7d398' # #e2efd5 #b7d398 #b1c999 # '#aed19e'
- end
- def color_green
- '#0a8400'
- end
- def color_green_dark
- '#086800'
- end
- def color_ruby
- '#a00000'
- end
- def color_maroon
- '#800000'
- end
- def color_paper
- %{"#{color_white}"}
- end
- def color_band1
- %{"#{color_white}"}
- end
- def color_band2
- %{"#{color_white}"}
- end
- def color_body
- %{<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">}
- end
- def color_font_face #was font WATCH
- "#{color_black}"
- end
- def color_surround
- %{"#{color_white}"}
- end
- def color_band
- %{"#{color_white}"}
- end
- def color_table1
- 'ffffcc'
- end
- def color_table2
- 'c0d0f0'
- end
- def color_band1
- '"#ffffff"'
- end
- def color_band2
- '"#ffffff"'
- end
- #% icon
- def icon_ico
- 'rb7.ico'
- end
- def icon_sisu
- 'sisu.png'
- end
- def icon_manifest
- 'b_info.png'
- end
- def icon_doc
- 'b_doc.png'
- end
- def icon_toc
- 'b_toc.png'
- end
- def icon_wmp
- 'b_wmp.png'
- end
- def icon_odf
- 'b_odf.png'
- end
- def icon_epub
- 'b_epub.png'
- end
- def icon_pdf
- 'b_pdf.png'
- end
- def icon_pdf_portrait
- 'b_pdf.png'
- end
- def icon_pdf_landscape
- 'b_pdf.png'
- end
- def icon_status
- 'b_status.png'
- end
- def icon_external
- 'b_ext.png'
- end
- def icon_external_toc
- 'b_ext_toc.png'
- end
- def icon_seg_toc
- 'b_bluebell.png'
- end
- def icon_crosslink_toc
- 'b_amber.png'
- end
- def icon_mail
- 'b_mail.png'
- end
- def icon_para
- 'b_para.png'
- end
- def icon_pdf
- 'b_pdf.png'
- end
- def icon_ftp
- 'b_ftp.png'
- end
- def icon_gopher
- 'b_gopher.png'
- end
- def icon_choice
- 'b_choice.png'
- end
- def icon_new
- 'b_new.png'
- end
- def icon_book
- 'b_amber.png'
- # b_book.png
- end
- def icon_dot_clear
- 'dot_clear.png'
- end
- def icon_dot_white
- 'dot_white.png'
- end
- def icon_dot
- icon_dot_white
- end
- def icon_amber
- 'b_amber.png'
- end
- def icon_rose
- 'b_rose.png'
- end
- def icon_bluebell
- 'b_bluebell.png'
- end
- def icon_home_button
- 'sisu.png'
- end
- def icon_home_banner
- 'sisu.png'
- end
- def icon_site
- 'b_home.png'
- end
- def icon_bluedot
- 'blueband.png'
- end
- def icon_next
- 'arrow_next_red.png'
- end
- def icon_previous
- 'arrow_prev_red.png'
- end
- def icon_up
- 'arrow_up_red.png'
- end
- #% font
- def font_fonts
- @fonts
- end
- def font_face
- %{face="#{font_fonts}"}
- end
- def font_lmtoc_face
- %{face="#{font_fonts}"}
- end
- def font_ebook_face
- %{face="#{font_fonts}"}
- end
- def font_face_lmtoc
- %{face="#{font_fonts}"}
- end
- def font_color
- 'color="#000000"'
- end
- def font_size
- 'size="4"'
- end
- def font_size_txt
- 'size="4"'
- end
- def font_size_txt_00
- 'size="3"'
- end
- def font_size_endnote
- 'size="3"'
- end
- def font_small
- 'size="3"'
- end
- def font_tiny
- 'size="2"'
- end
- #% markup
- def markup_italics_list #regular expression of words to be italised
- end
- def markup_bold_list #regular expression of words to be made bold
- 'SiSU'
- end
- def markup_make_italic
- if defined? italics_list \
- and italics_list
- make={}
- if italics_list
- r=italics_list.dup
- x=case r
- when /\/i$/; 'i'
- else ''
- end
- r=r.gsub(/^\/(.+?)\/i?/,'\1').
- gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
- m='\b(' + r + ')\b'
- make[:str]
- make[:regx]=if x =~/i/; /#{m}/i
- else /#{m}/
- end
- else nil
- end
- end
- end
- def markup_make_bold
- if defined? bold_list \
- and not bold_list.empty?
- make={}
- if bold_list
- r=bold_list.dup
- x=case r
- when /\/i$/; 'i'
- else ''
- end
- r.gsub(/^\/(.+?)\/i?/,'\1').
- gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
- m='\b(' + r + ')\b'
- make[:str]
- make[:regx]=if x =~/i/; /#{m}/i
- else /#{m}/
- end
- else nil
- end
- make
- end
- end
- #% paragraph
- def paragraph_txt
- %{<p class="normal">}
- end
- def paragraph_txt_00
- %{<p class="justify">}
- end
- def paragraph_font_citation
- %{<font #{font_size_txt} #{font_face}>}
- end
- def paragraph_endnote
- %{<p class="endnote">}
- end
- def paragraph_table
- %{<p align="left"><font #{font_small} #{font_color} #{font_face}>}
- end
- def paragraph_table_xml
- end
- def paragraph_tiny
- %{<p class="tiny">}
- end
- def paragraph_small
- %{<p class="small">} # keep but not used?
- end
- def paragraph_font_tiny
- %{<font #{font_tiny} #{font_face}>}
- end
- def paragraph_font_small
- %{<font #{font_small} #{font_face}>}
- end
- def paragraph_heading_1
- %{<h1>}
- end
- def paragraph_heading_1_center
- %{<h1 class="center">}
- end
- #% table
- def table_close
- '</td></tr>
-</table>'
- end
- def table_close_centered_table
- end
- def table_align_A
- end
- def table_align_B
- end
- def table_align_C
- end
- def table_width_1
- '"100%"'
- end
- def table_width_2
- '"99%"'
- end
- def table_width_3
- '"94%"'
- end
- def table_width_4
- '"90%"'
- end
- def table_width_txt
- '"94%"'
- end
- def table_width_txt_avgo
- '"100%"'
- end
- def table_width_txt_r
- '"96%"'
- end
- def table_cellpad_small_paper_margins
- '"6"'
- end
- def table_cellpad_paper_margins
- '"36"'
- end
- def table_cellpad_A
- '"0"'
- end
- def table_cellpad_B
- '"20"'
- end
- def table_cellpad_shadow
- '"4"'
- end
- def table_cellpad_band
- '"16"'
- end
- def table_cellpad_box
- '"20"'
- end
- def table_table_align_A
- '<center>'
- end
- def table_table_align_B
- '<center>'
- end
- def table_table_align_C
- ' '
- end
- #% table_do
- def table_do_table_paper
- %{#{table_align_C} <table summary="table paper" width=#{table_width_2} border="0" cellpadding=#{table_cellpad_paper_margins} bgcolor=#{color_paper} align="Justify"><tr><td>\n<font color="#000000"><p />\n}
- end
- def table_do_table_surround
- %{<table summary="table surround" width="100%" border="0" cellpadding="0" bgcolor="#ffffff" align="center"><tr><td>\n}
- end
- #% indent
- def indent_level_0
- '"1%"'
- end
- def indent_level_1
- '"4%"'
- end
- def indent_level_2
- '"6%"'
- end
- def indent_level_3
- '"8%"'
- end
- def indent_level_4
- '"10%"'
- end
- #% margin
- def margin_num
- '</p> </td><td width="4%" align="right" valign="top">'
- end
- def margin_numless
- '</td><td width="4%" align="right" valign="top">'
- end
- def margin_num_css
- '</td>
-<td width="2%" align="right" valign="top"> '
- end
- def margin_num_header
- '</td>
-<td width="4%" align="right" valign="top">'
- end
- def margin_txt_00_1
- %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td width=#{indent_level_1} align="right">
-</td>
-<td valign="top" align="left" width=#{indent_level_1_c2w100}>}
- end
- def margin_txt_w1
- %{<table summary="" width=#{table_width_txt_r} border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td width="6%" align="right">&nbsp;</td>
-<td width="90%" valign="top" align="justify">}
- end
- def margin_txt_w2
- %{<table summary="" width=#{table_width_txt_r} border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td width="10%" align="right">&nbsp;</td>
-<td width="86%" valign="top" align="justify">}
- end
- def margin_txt_0
- %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td width=#{indent_level_0} align="right">
-</td><td valign="top" align="justify">}
- end
- def margin_txt_1
- %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td width=#{indent_level_1} align="right"></td><td valign="top" align="justify">}
- end
- def margin_txt_2
- %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td width=#{indent_level_2} align="right">
-</td>
-<td valign="top" align="justify">}
- end
- def margin_txt_3
- %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td width=#{indent_level_3} align="right">
-</td>
-<td valign="top" align="justify">}
- end
- def margin_css #unused, check
- '<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
-<tr><td valign="top" align="justify"> '
- end
- #% png
- def png_ico
- %{ <link rel="shortcut icon" href="../_sisu/image/#{icon_ico}" />}
- end
- def png_sisu #check url path
- %{ <a href="#{@url.sisu}">
- <img border="0" width="160" height="60" src="#{url_path_image}/#{icon_sisu}" alt="SiSU" />
- </a>}
- end
- def png_hp
- dir=SiSU_Env::InfoEnv.new #(@fns)
- %{ <a href="#{url.site}">
- <img border="0" width="160" height="60" src="#{@dir.url.images_local}/#{icon_home_banner}" alt="#{txt_home}" />
- </a>}
- end
- def png_site
- %{<img src="#{url_path_image}/#{icon_site}" alt="@" border="0" />}
- end
- def png_homepage
- png_site
- end
- def png_nav
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_bluebell}" alt="Contents" />}
- end
- def png_manifest
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_manifest}" alt="Document Manifest" />}
- end
- def png_doc
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_doc}" alt="Full Text" />}
- end
- def png_toc
- %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_toc}" alt="TOC linked" />}
- end
- def png_odf
- %{<img border="0" height="18" width="18" src="#{url_path_image_sys}/#{icon_odf}" alt="ODF/ODT" />}
- end
- def png_epub
- %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_epub}" alt="EPUB" />}
- end
- def png_pdf
- %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_pdf}" alt="PDF" />}
- end
- def png_pdf_portrait
- %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_pdf}" alt="PDF portrait" />}
- end
- def png_pdf_landscape
- %{<img border="0" height="15" width="18" src="#{url_path_image_sys}/#{icon_pdf}" alt="PDF landscape" />}
- end
- def png_wmp
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_wmp}" alt="Concordance" />}
- end
- def png_para
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_para}" alt="Segment" />}
- end
- def png_status
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_status}" alt="Membership status" />}
- end
- def png_mark
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_rose}" alt="*" />}
- end
- def png_doc_tiny
- %{<img border="0" height="8" width="8" src="#{url_path_image_sys}/#{icon_doc}" alt="Doc" />}
- end
- def png_toc_tiny
- %{<img border="0" height="8" width="8" src="#{url_path_image_sys}/#{icon_toc}" alt="TOC" />}
- end
- def png_status_tiny
- %{<img border="0" height="8" width="8" src="#{url_path_image_sys}/#{icon_status}" alt="Status, Member States" />}
- end
- def png_ftp
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_ftp}" alt="FTP" />}
- end
- def png_gopher
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_gopher}" alt="Gopher" />}
- end
- def png_crosslink
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_crosslink_toc}" alt="lateral hop" />}
- end
- def png_crosslink_ext
- %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_external_toc}" alt="lateral hop" />}
- end
- def png_home
- #dir=SiSU_Env::InfoEnv.new #(@fns)
- %{<img border="0" src="#{url_path_image_base}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
- #%{<img border="0" src="#{dir.url.images_local}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
- end
- def png_home_button
- rel=@dir.path_rel_links.html_scroll_2
- %{<img border="0" src="#{rel}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
- end
- def png_book
- %{<img border="2" height="15" width="15" src="#{url_path_image_sys}/#{icon_book}" alt="Cameron May Books" />}
- end
- #% png_nav #not currently used
- def png_nav_home
- end
- def png_nav_toc
- %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon_up}" alt="TOC" />}
- end
- def png_nav_doc
- end
- def png_nav_previous
- %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon_previous}" alt="&lt;&lt;&nbsp;previous" />}
- end
- def png_nav_next
- %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon_next}" alt="next&nbsp;&gt;&gt;" />}
- end
- def png_nav_pre
- png_nav_previous
- end
- def png_nav_nxt
- png_nav_next
- end
- def epub_png_nav_previous
- %{<img border="0" width="22" height="22" src="#{url_path_image_epub}/#{icon_previous}" alt="&lt;&lt;&nbsp;previous" />}
- end
- def epub_png_nav_next
- %{<img border="0" width="22" height="22" src="#{url_path_image_epub}/#{icon_next}" alt="next&nbsp;&gt;&gt;" />}
- end
- def epub_png_nav_up
- %{<img border="0" width="22" height="22" src="#{url_path_image_epub}/#{icon_up}" alt="&#094;up&nbsp;&#094;" />}
- end
- def epub_png_nav_pre
- epub_png_nav_previous
- end
- def epub_png_nav_nxt
- epub_png_nav_next
- end
- def epub_png_nav_toc
- epub_png_nav_up
- end
- def png_nav_pdf
- %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_pdf}" alt="PDF" />}
- end
- def png_nav_pdf_portrait
- %{<img border="0" width="15" height="18" src="#{url_path_image_sys}/#{icon_pdf}" alt="pdf portrait" />}
- end
- def png_nav_pdf_landscape
- %{<img border="0" width="18" height="15" src="#{url_path_image_sys}/#{icon_pdf}" alt="pdf landscape" />}
- end
- def png_nav_dot_toc
- %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon_dot}" alt="&#094;" />}
- end
- def png_nav_dot_previous
- %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon_dot}" alt="&lt;" />}
- end
- def png_nav_dot_next
- %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon_dot}" alt="&gt;" />}
- end
- def png_nav_dot_pre
- png_nav_dot_previous
- end
- def png_nav_dot_nxt
- png_nav_dot_next
- end
- #% nav_txt
- def nav_txt_home
- %{ <font face="#{font_fonts}" size="2">
- #{png_site}&nbsp;
- </font> }
- end
- def nav_txt_home_button
- %{ <font face="#{font_fonts}" size="2">
- #{png_home_button}&nbsp;
- </font> }
- end
- def nav_txt_homepage
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;home&nbsp;
- </font> }
- end
- def nav_txt_toc_link
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;&nbsp;toc&nbsp;
- </font> }
- end
- def nav_txt_toc_link_verbose
- %{ <font face="#{font_fonts}" size="2">
- #{png_toc}&nbsp;&nbsp;segments'&nbsp;toc&nbsp;
- </font> }
- end
- def nav_txt_doc_link
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;scroll&nbsp;
- </font> }
- end
- def nav_txt_manifest
- #{png_manifest}&nbsp;document&nbsp;manifest
- %{ <font face="#{font_fonts}" size="2">
- [&nbsp;document&nbsp;manifest&nbsp;]
- </font> }
- end
- def nav_txt_concordance
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;&nbsp;A-Z&nbsp;
- </font> }
- end
- def nav_txt_previous
- ' <font face="" size="2">
- &nbsp;&nbsp;<b>&lt;&lt;</b>&nbsp;Previous&nbsp;&nbsp;
- </font>
- Full&nbsp;Text&nbsp;'
- end
- def nav_txt_next
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;&nbsp;Next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>&gt;&gt;</b>&nbsp;&nbsp;
- </font> }
- end
- def nav_txt_plaintext
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;&nbsp;txt&nbsp;
- </font> }
- end
- def nav_txt_odf
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;&nbsp;odt&nbsp;
- </font> }
- end
- def nav_txt_pdfs
- %{ <font face="#{font_fonts}" size="2">
- pdfs&nbsp;&nbsp;
- </font> }
- end
- def nav_txt_epub
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;epub&nbsp;
- </font> }
- end
- def nav_txt_pdf_portrait
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;pdf&nbsp;
- </font> }
- end
- def nav_txt_pdf_landscape
- %{ <font face="#{font_fonts}" size="2">
- &nbsp;pdf&nbsp;
- </font> }
- end
- #% banner
- def banner_home
- %{ <center>
- <a href="#{url_site}/" target="_top" #{js_home}>
- #{png_site}
- </a>
- <br />
- <font size="2" color="#444444">
- an
- <br />
- (&nbsp;international&nbsp;|&nbsp;transnational&nbsp;)
- <br />
- commercial&nbsp;law&nbsp;&&nbsp;e-commerce
- <br />
- infrastructure monitor</font></center>}
- end
- def banner_home_guide
- %{ <br />
- <a href="#{url_site}/" target="_top" #{js_home}>
- #{png_doc} LM toc
- </a>
- <a href="../treaties.and.organisations/lm.chronological" target="_top" #{js_instruments}>
- #{png_doc} LM 20**
- </a>
- <br />}
- end
- def banner_home_button_only
- %{<a href="#{url_site}/" #{js_home}>
- #{png_home_button}
- </a>}
- end
- def banner_home_button #yellow_dark now white
- %{<table summary="home button" width="100%" border="0" cellpadding="3" bgcolor= "#ffffff" align="center">
-<tr><td align="left" valign="middle" bgcolor="#{color_white}" width="10%">
- <a href="#{url_site}/" #{js_home}>
- #{png_home_button}
- </a>
-</td>
-<td width="90%">
-#{table_close}}
- end
- def banner_home_and_index_buttons #yellow_dark now white
- %{<table summary="home and index buttons" bgcolor=#{color_band1}>
-<tr><td width="20%">
-<table summary="home button" width="100%" border="0" cellpadding="3" align="center">
-<tr><td align="center" valign="middle" bgcolor="#{color_white}">
- <a href="#{url_site}/" target="_top" #{js_home}>
- #{png_home}
- </a>
-</td></tr>
-</table>
-</td>
-<td width="60%">
-<table summary="other contents buttons" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="center" bgcolor=#{color_band2}>
- <font face="arial" size="2">
- <a href="toc" target="_top" #{js_toc}>
- &nbsp;This&nbsp;text's&nbsp;sub-&nbsp;
- <br />
- &nbsp;Table&nbsp;of&nbsp;Contents&nbsp;
- </a>
- </font>
-</td></tr>
-</table>
-</td>
-<td width="20%">
- &nbsp;
-#{table_close}}
- end
- def banner_url_txt_sisu
- %{<a href="#{url_sisu}/sisu" target="_top" #{js_home}>SiSU</a>}
- end
- def banner_band #yellow_dark now white
- %{<table summary="home button" width="100%" border="0" cellpadding="3" bgcolor= "#ffffff" align="center">
-<tr><td align="left" valign="middle" bgcolor="#{color_white}">
- <a href="#{url_site}/" target="_top" #{js_home}>
- #{png_home}
- </a>
-</td>
-<td width="90%">
-#{table_close}}
- end
- def banner_credit_band
- %{<table summary="credits table yellow" width="80%" border="1" cellpadding="0" bgcolor="#{color_yellow_dark}" align="center">
-<tr><td align="center">
-<table summary="salmon" width="100%" border="0" cellpadding="0" bgcolor="#ffdec9">
-<tr><td align="center">
-<table summary="credits white background" width="100%" border="0" cellpadding="6" bgcolor="#ffffff">
-<tr><td align="center">}
- end
- def banner_instrument_cover_band_scr
- '<table summary="scroll instrument cover band" width="100%" border="0" cellpadding="8" bgcolor="#ffffff" align="center">
-<tr><td align="center">'
- end
- def banner_instrument_cover_band_seg
- '<table summary="segment instrument cover band, title, author, location" width="100%" border="0" cellpadding="8" bgcolor="#ffffff" align="center">
-<tr><td align="center">'
- end
- #% widget
- def widget_promo # Array used to build promo from list.yml and promo.yml
- # ['sisu_icon','sisu','sisu_search_libre','open_society','fsf','ruby']
- end
- def widget_browsers
-<<WOK
-<tr align="center"><td align="center">
-<table summary="browser suggestions" bgcolor="#ffffff" cellpadding="4" border="0">
-<tr><td>
- <p>
- <font color="#666666" size="2">
- If you have problems viewing pages on this site please update your browser:
- </font>
- </p>
-#{table_close}
-<table summary="browser suggestions" bgcolor="#ffffff" cellpadding="4" border="0">
-<tr><td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.gnome.org/projects/epiphany/" target="external">
- &nbsp;Epiphany
- </a>
- <sup>&reg;</sup>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://galeon.sourceforge.net/" target="external">
- &nbsp;Galeon
- </a>
- <sup>&reg;</sup>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.microsoft.com/windows/ie/default.asp" target="external">
- I-Explorer
- </a>
- <sup>&reg;</sup>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://kazehakase.sourceforge.jp/" target="external">
- Kazehakase</a>
- <sup>&reg;</sup>&nbsp;|</font></p></td>
-<td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.konqueror.org/" target="external">
- Konqueror</a>
- <sup>&reg;</sup>&nbsp;|</font></p></td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.mozilla.org/" target="external">
- Mozilla
- </a>
- <a href="http://www.mozilla.org/products/firefox/" target="external">
- <b>Firefox</b>
- </a>
- <sup>&reg;</sup>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://home.netscape.com/comprod/mirror/client_download.html" target="external">
- Netscape
- </a>
- <sup>&reg;</sup>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.opera.com/" target="external">
- Opera
- </a>
- <sup>&reg;</sup>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.apple.com/safari/" target="external">
- Safari
- </a>
- <sup>&reg;</sup>
- </font>
- </p>
-#{table_close}
-<table summary="lightweight browser and text browser suggestions" bgcolor="#ffffff" cellpadding="4" border="0">
-<tr><td>
- <p>
- <font color="#666666" size="1">
- for console/text viewing:
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://elinks.or.cz/" target="external">
- <b>elinks</b>
- </a>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://atrey.karlin.mff.cuni.cz/~clock/twibright/links" target="external">
- <b>links2</b>
- </a>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://w3m.sourceforge.net/" target="external">
- <b>w3m</b>
- </a>
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- for lightweight gui (X) viewing try:
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.dillo.org/" target="external">
- Dillo
- </a>
- &nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://www.gnome.org/projects/epiphany/" target="external">
- &nbsp;Epiphany
- </a>
- <sup>&reg;</sup>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://galeon.sourceforge.net/" target="external">
- &nbsp;Galeon
- </a>&nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p>
- <font color="#666666" size="1">
- <a href="http://atrey.karlin.mff.cuni.cz/~clock/twibright/links" target="external">
- <b>links2 -g</b>
- </a>
- </font>
- </p>
-#{table_close}
-</td></tr>
-WOK
- end
- def widgets_open
-<<WOK
-<table summary="SiSU summary" bgcolor="#ffffff" cellpadding="4" border="0">
-WOK
- end
- def widget_pdfviewers
-<<WOK
-<tr align="center"><td align="center">
-<!-- pdf viewer suggestions -->
-<tr><td>
- <p class="center">
- <font color="#666666" size="1">
- &amp; for
- <a href="http://www.adobe.com/products/acrobat/adobepdf.html" target="external">
- pdf
- </a>
- viewings of this site we recommend stand alone viewers
- <br />
- (rather than web browser plugins):
- </font>
- </p>
-</td></tr>
-<tr align="center"><td align="center">
- <p class="center">
- <font color="#666666" size="1">
- <a href="http://www.adobe.com/products/acrobat/readstep2.html" target="external">
- Acrobat Reader
- </a>
- <sup>&reg;</sup>
- &nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p class="center">
- <font color="#666666" size="1">
- <a href="http://www.gnome.org/projects/evince/" target="external">
- <b>Evince</b>
- </a>
- <sup>&reg;</sup>
- </font>
- </p>
-</td>
-<td>
- <p class="center"><font color="#666666" size="1">
- <a href="http://www.cs.wisc.edu/~ghost/gv/" target="external">
- &nbsp;GhostView<sup>&reg;</sup>&nbsp;</a>,
- <a href="http://wwwthep.physik.uni-mainz.de/~plass/gv/" target="external">
- GV<sup>&reg;</sup>
- </a>
- &amp;
- <a href="http://www.cs.wisc.edu/~ghost/gsview/" target="external">
- GSview<sup>&reg;</sup>
- </a>
- &nbsp;|
- </font>
- </p>
-</td>
-<td>
- <p class="center">
- <font color="#666666" size="1">
- <a href="http://www.foolabs.com/xpdf/" target="external">
- &nbsp;Xpdf
- </a>
- <sup>&reg;</sup>
- </font>
- </p>
-</td></tr>
-WOK
- end
- def widget_sisu_text
-<<WOK
- <p class="tiny"><font color="#666666" size="2">
- Output generated by
- <a href="#{url_sisu}" #{js_sisu}>
- #{@v[:project]}
- </a>
- #{@v[:version]} #{@v[:date]} (#{@v[:date_stamp]})
- </font></p>
-WOK
- end
- def widget_sisu
-<<WOK
-<!-- widget sisu -->
-<tr><td valign="top" width="100%">
-<!-- SiSU Rights -->
-#{widget_sisu_text}
-</td></tr>
-WOK
- end
- def widget_sisu_verbose
-<<WOK
-<!-- widget sisu -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="#{url_sisu}" #{js_sisu}>
- <img border="0" src="../_sisu/image/sisu.png" alt="SiSU" width="120" height="39" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
-<!-- SiSU Rights -->
- <p class="tiny_left"><font color="#666666" size="2">
- Output generated by
- <a href="#{url_sisu}" #{js_sisu}>
- #{@v[:project]}
- </a>
- #{@v[:version]} #{@v[:date]} (#{@v[:date_stamp]})
- <br />
- <a href="#{url_sisu}" #{js_sisu}>
- <b>#{@v[:project]}</b>
- </a>
- Copyright <sup>&copy;</sup> Ralph Amissah
- 1997, current #{@date.year_static}.
- All Rights Reserved.
- <br />
- <a href="#{url_sisu}" #{js_sisu}>
- #{@v[:project]}
- </a>
- is software for document structuring, publishing and search,
- <br />
- <a href="#{url_sisu}" #{js_sisu}>
- www.sisudoc.org/
- </a>
- and
- <a href="#{url_sisudoc}" #{js_sisu}>
- www.sisudoc.org
- </a>
- <br />
- <i>w3 since October 3 1993</i>
- <a href="mailto:ralph@amissah.com" #{js_mail}>
- ralph@amissah.com
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- #{@v[:project]} using:
- <br />Standard SiSU markup syntax,
- <br />Standard SiSU meta-markup syntax, and the
- <br />Standard SiSU <u>object citation numbering</u> and system, (object/text positioning system)
- <br />
- Copyright <sup>&copy;</sup> Ralph Amissah 1997, current #{@date.year_static}.
- All Rights Reserved.
- </font></p>
-</td></tr>
-WOK
- end
- def widget_way_better
- <<WOK
-<!-- widget way better -->
-<tr><td valign="top" width="10%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="http://www.gnu.org/licenses/gpl.html">
- <img border="0" src="../_sisu/image/gplv3_free_software.png" alt="GPLv3" width="127" height="51" />
- </a>
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- <a href="#{url_sisu}" #{js_sisu}>
- #{@v[:project]}
- </a>
- is released under
- <a href="http://www.gnu.org/licenses/gpl.html">GPLv3</a>
- or later,
- #{url_decoration.xml_open}<a href="http://www.gnu.org/licenses/gpl.html">http://www.gnu.org/licenses/gpl.html</a>#{url_decoration.xml_close}
- </font></p>
-</td><td valign="top" width="45%">
- <p class="tiny_left"><font color="#666666" size="2">
- #{@v[:project]}, developed using
- <a href="http://www.ruby-lang.org/en/">
- Ruby
- </a>
- on
- <a href="http://www.debian.org/">
- Debian/Gnu/Linux
- </a>
- software infrastructure,
- with the usual GPL (or OSS) suspects.
- <br />
- Better - "performance, reliability, scalability, security &amp; total cost of ownership"
- [not to mention flexibility &amp; choice] use of and adherence to open standards (where practical and fair) and it is software libré.
- <br />
- Get With the Future
- <a href="http://www.sisudoc.org/">
- Way Better!
- </a>
- </font></p>
-</td></tr>
-WOK
- end
- #% credits
- def credits_itl_cover_band
- %{<table summary="itl cover band" width="88%" border="0" cellpadding="0" bgcolor="blue">
-<tr><td>
-<table summary="" width="100%" border="0" cellpadding="8" bgcolor="#000099">
-<tr><td>
-<table summary="" width="99%" border="1" cellpadding="0" bgcolor="#ffcc00">
-<tr><td>
-<table summary="" width="100%" border="1" cellpadding="0" bgcolor="#ffffff">
-<tr><td align="center">
- <font #{font_face}>
- <br />
- \@
- <br />
- #{txt_home}
- <br />
- #{banner_url_txt_sisu}
- <br />
- </font>
-#{table_close*4}}
- end
- def credits_sisu_manifest
- widget_sisu_text
- end
- def credits_sisu
- x=%{<div class="substance">
-<table summary="SiSU summary" bgcolor="#ffffff" cellpadding="4" border="0">
-<tr><td>
- #{widget_sisu}
- #{widget_way_better}
-</table></div>}
- ''
- end
- def credits_splash
- end
- def credits_sisu_epub
- x=%{<div class="substance">
-<p class="center"><a href="http://www.openebook.org"><b>EPUB</b></a> generated by <a href="http://www.sisudoc.org"><b>#{@v[:project]}</b></a> v#{@v[:version]}, GPL3</p>
-</div>}
- ''
- end
- #% bottom
- def bottom_surround
- %{</td>
-<td align="center" valign="bottom">#{table_close}<table summary="" border="0" width="100%" valign="top">
-<tr><td valign="top" width="20%"><table summary="" width="100%" border="0" cellpadding="0" bgcolor="#e3ecef" align="center">
-<tr><td valign="top">
-#{table_close}
-</td>
-<td align="center" valign="top">
- #{banner_band}
-#{table_close}
-<table summary="" border="0" width="100%" valign="top">
-<tr><td valign="top" width="20%">
-<table summary="" width="100%" border="0" cellpadding="0" bgcolor="#e3ecef" align="center">
-<tr><td valign="top">
- #{table_close}
-</td>
-<td align="center" valign="top">
- #{credits_splash}
-#{table_close}
-</body>
-</html>}
- end
- end
- class Home < Skin
- def initialize
- @v=SiSU_Env::InfoVersion.instance.get_version
- @dir=SiSU_Env::InfoEnv.new
- @date=SiSU_Env::InfoDate.new #{@date.year}
- end
- def redirect
- <<WOK
-<html><head>
-<title>SiSU</title>
-<meta http-equiv="refresh" content="0, url=http://www.sisudoc.org/sisu/SiSU/">
-</head>
-<body>
-SiSU informtion provided at <a href="http://www.sisudoc.org/sisu/SiSU/">www.sisudoc.org/sisu/SiSU</a><p />
-If your browser supports redirection, you will be escorted there shortly.
-</body>
-</html>
-WOK
- end
- def homepage
- <<WOK
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<title>SiSU information Structuring Universe - Structured
-information, Serialized Units - software for electronic texts,
-documents, books, digital libraries in plaintext, html, XHTML, XML,
-ODF (OpenDocument), EPUB, LaTeX, PDF, SQL (PostgreSQL and SQLite), and
-for search</title>
-<meta name="dc.title"
- content="SiSU information Structuring Universe, Structured information Serialised Units, #{@date.year_static}" />
-<meta name="dc.creator" content="Ralph Amissah" />
-<meta name="dc.subject" content=
-"document structuring, ebook, publishing, PDF, LaTeX, XML, ODF, EPUB, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" />
-<meta name="dc.publisher" content=
-"SiSU http://www.sisudoc.org/" />
-<meta name="dc.language" content="en" />
-<meta name="dc.rights" content="Copyright Ralph Amissah" />
-<meta name="generator" content="#{@v[:project]} #{@v[:version]} of #{@v[:date_stamp]} (#{@v[:date]}) (n*x and Ruby!)" />
-<link rel="generator" href="http://www.sisudoc.org/sisu/SiSU" />
-<link rel="stylesheet" href="./#{@dir.path.style}/html.css" type="text/css" />
-<link rel="shortcut icon" href="./_sisu/image/rb7.ico" />
-</head>
-<body>
-<div id="top_band">
-<p class="top_band_image">
- <a href="http://www.sisudoc.org/sisu/SiSU" target="_top">
- <img border="0" src="./_sisu/image/sisu.png" alt="SiSU &gt;&gt;">
- </a>
-</p>
-<h1 class="top_band">
- SiSU information Structuring Universe
-</h1>
-<h2 class="top_band_tiny">
- Structured information, Serialized Units
- &nbsp;&nbsp;
- <a href="http://www.sisudoc.org" target="_top">
- &lt;www.sisudoc.org&gt;
- </a>
- &nbsp;&nbsp;or&nbsp;&nbsp;
- <a href="http://www.jus.uio.no/sisu/" target="_top">
- &lt;www.jus.uio.no/sisu/&gt;
- </a>
-</h2>
-<h2 class="top_band_tiny">
-software for electronic texts, document collections, books, digital libraries, and search,
-</h2>
-<h2 class="top_band_tiny">
- with "atomic search" and text positioning system (shared text citation numbering: "<i>ocn</i>")
-</h2>
-<h2 class="top_band_tiny">
-outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), EPUB, LaTeX, PDF, SQL (PostgreSQL and SQLite)
-</h2>
-</div>
-<div id="top_band_search">
-</div>
-<div id="column_left">
-<p class="bold">
- <a href="http://www.sisudoc.org/sisu/SiSU" target="_top">
- SiSU
- </a>
-</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/sisu_manual/" target="_top">
- SiSU Manual
- </a>
-</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/SiSU/1.html#summary" target="_top">
- What does SiSU do? Summary
- </a>
-</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/SiSU/examples.html" target="_top">
- Book Samples and Markup Examples
- </a>
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/sisu_site_metadata/harvest_authors.html" target="_top">
- sorted by Author (sisu metadata)
- </a>
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/sisu_site_metadata/harvest_topics.html" target="_top">
- sorted by Topic (sisu metadata)
- </a>
-</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/SiSU/1.html#ocn" target="_top">
- Object Citation Numbering - <i>ocn</i>
- </a>
-</p>
-<p class="tiny">(a text positioning system)</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/SiSU/1.html#search" target="_top">
- Search - "<i>granular</i>"
- </a>
-</p>
-<p class="tiny">
- Of interest is the ease of streaming documents to a relational database, at an object (roughly paragraph) level and the potential for increased precision in the presentation of matches that results thereby. The ability to serialise html, LaTeX, XML, SQL, (whatever) is also inherent in / incidental to the design. For a description see the
- <a href="http://www.sisudoc.org/sisu/sisu_provisional_patent_application_200408" target="_top">
- abandoned U.S. provisional patent application
- </a>
-</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- <a href="http://git.sisudoc.org/" target="_top">
- <b>Development, SCM - Git</b>
- </a><br />
- <a href="http://git.sisudoc.org/" target="_top">
- &lt;http://git.sisudoc.org&gt;
- </a>
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/SiSU/download.html" target="_top">
- <b>Download</b> alternatives
- </a>
-</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- <a href="http://www.sisudoc.org/sisu/SiSU/changelog.html" target="_top">
- Changelog
- </a>
-</p>
-<p class="tiny">
- ---
-</p>
-<p class="small">
- License, SiSU is licensed under
- <a href="http://www.gnu.org/licenses/gpl.html" target="_top">
- GPLv3 or later
- </a>
-</p>
-<p class="tiny">
- Gnu / Linux / Unix
-</p>
-<p class="tiny">
- Note: the placement of SiSU documents on the Net predate the release of SiSU.
-</p>
-</div>
-<div id="column_center">
-<p class="bold">
-SiSU Short Description
-</p>
-<p>
-SiSU is a comprehensive future-proofing electronic document management system. Built-in search capabilities allow you to search across multiple documents and highlight matches in an easy-to-follow format. Paragraph numbering system allows you to cite your electronic documents in a consistent manner across multiple file formats. Multiple format outputs allow you to display your documents in plain text, PDF (portrait and horizontal), OpenDocument format, HTML, or e-book reading format (EPUB). Word mapping allows you to easily create word indexes for your documents. Future-proofing flexibility allows you to quickly adapt your documents to newer output formats as needed. All these and many other features are achieved with little or no additional work on your documents - by marking up the documents with a super simplistic markup language, leaving the SiSU engine to handle the heavy-lifting processing.
-</p>
-<p>
-Potential users of SiSU include individual authors who want to publish their books or articles electronically to reach a broad audience, web publishers who want to provide multiple channels of access to their electronic documents, or any organizations which centrally manage a medium or large set of electronic documents, especially governmental organizations which may prefer to keep their documents in easily accessible yet non-proprietary formats.
-</p>
-<p>
-SiSU is an Open Source project initiated and led by Ralph Amissah <a href="mailto:ralph.amissah@gmail.com">&lt;ralph.amissah@gmail.com&gt;</a> and can be contacted via mailing list <a href="http://lists.sisudoc.org/listinfo/sisu">&lt;http://lists.sisudoc.org/listinfo/sisu&gt;</a> at <a href="mailto:sisu@lists.sisudoc.org">&lt;sisu@lists.sisudoc.org&gt;</a>. SiSU is licensed under the GNU General Public License.
-</p>
-<p class="bold">
- For less markup than the most elementary HTML you can have more.
-</p>
-<p><a href="http://www.sisudoc.org/sisu/SiSU" target="_top"><b>SiSU</b> - Structured information, Serialized Units</a> for electronic documents, is an information structuring, transforming, publishing and search framework with the following features:</p>
-<p>
-<b>(i)</b> markup syntax:
-<b>(a)</b>
-simpler than html,
-<b>(b)</b>
-mnemonic, influenced by mail/messaging/wiki markup practices,
-<b>(c)</b> human readable, and easily writable,</p>
-<p><b>(ii)</b>
-<b>(a)</b>
-minimal markup requirement,
-<b>(b)</b>
-single file marked up for multiple outputs,</p>
-<p><b>
-notes
-</b></p>
-<p class="small">
-<b>*</b>
-documents are prepared in a single UTF-8 file using a minimalistic mnemonic syntax. Typical literature, documents like "War and Peace" require almost no markup, and most of the headers are optional.
-</p>
-<p class="small">
-<b>*</b>
-markup is easily readable/parsed by the human eye, (basic markup is simpler and more sparse than the most basic html), [this may also be converted to XML representations of the same input/source document].
-</p>
-<p class="small">
-<b>*</b>
-markup defines document structure (this may be done once in a header pattern-match description, or for heading levels individually); basic text attributes (bold, italics, underscore, strike-through etc.) as required; and semantic information related to the document (header information, extended beyond the Dublin core and easily further extended as required); the headers may also contain processing instructions.
-</p>
-<p><b>(iii)</b>
-<b>(a)</b>
-multiple outputs primarily industry established and institutionally accepted open standard formats, include amongst others: plaintext (UTF-8); html; (structured) XML; ODF (Open Document text); EPUB; LaTeX; PDF (via LaTeX); SQL type databases (currently PostgreSQL and SQLite). Also produces: concordance files; document content certificates (md5 or sha256 digests of headings, paragraphs, images etc.) and html manifests (and sitemaps of content).
-
-<b>(b)
-</b>
-takes advantage of the strengths implicit in these very different output types, (e.g. PDFs produced using typesetting of LaTeX, databases populated with documents at an individual object/paragraph level, making possible granular search (and related possibilities))</p>
-<p><b>(iv)</b>
-outputs share a common numbering system (dubbed "object citation numbering" (ocn)) that is meaningful (to man and machine) across various digital outputs whether paper, screen, or database oriented, (PDF, html, XML, EPUB, sqlite, postgresql), this numbering system can be used to reference content.</p>
-<p>
-<b>(v)</b>
-SQL databases are populated at an object level (roughly headings, paragraphs, verse, tables) and become searchable with that degree of granularity, the output information provides the object/paragraph numbers which are relevant across all generated outputs; it is also possible to look at just the matching paragraphs of the documents in the database; [output indexing also work well with search indexing tools like hyperesteier].</p>
-<p>
-<b>(vi)</b>
- use of semantic meta-tags in headers permit the addition of semantic information on documents, (the available fields are easily extended)</p>
-<p>
-<b>(vii)</b>
-creates organised directory/file structure for (file-system) output, easily mapped with its clearly defined structure, with all text objects numbered, you know in advance where in each document output type, a bit of text will be found (e.g. from an SQL search, you know where to go to find the prepared html output or PDF etc.)... there is more; easy directory management and document associations, the document preparation (sub-)directory may be used to determine output (sub-)directory, the skin used, and the SQL database used,</p>
-<p>
-<b>(viii)</b>
-"Concordance file" wordmap, consisting of all the words in a document and their (text/ object) locations within the text, (and the possibility of adding vocabularies),</p>
-<p>
-<b>(ix)</b>
-document content certification and comparison considerations:
-<b>(a)</b>
-the document and each object within it stamped with an md5 hash making it possible to easily check or guarantee that the substantive content of a document is unchanged,
-<b>(b)</b>
-version control, documents integrated with time based source control system, default RCS or CVS with use of $Id$ tag, which SiSU checks
-</p>
-<p>
-<b>(x)</b>
-SiSU's minimalist markup makes for meaningful "diffing" of the substantive content of markup-files,</p>
-<p>
-<b>(xi)</b>
-easily skinnable, document appearance on a project/site wide, directory wide, or document instance level easily controlled/changed,</p>
-<p>
-<b>(xii)</b>
-in many cases a regular expression may be used (once in the document header) to define all or part of a documents structure obviating or reducing the need to provide structural markup within the document,</p>
-<p>
-<b>(xiii)</b>
-prepared files may be batch process, documents produced are static files so this needs to be done only once but may be repeated for various reasons as desired (updated content, addition of new output formats, updated technology document presentations/representations)</p>
-<p>
-<b>(xiv)</b>
-possible to pre-process, which permits: the easy creation of standard form documents, and templates/term-sheets, or; building of composite documents (master documents) from other sisu marked up documents, or marked up parts, i.e. import documents or parts of text into a main document should this be desired</p>
-<p>
-there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added.
-</p>
-<p>
-<b>(xv)</b>
-there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added:
-<b>(a)</b>
-modular, (thanks in no small part to Ruby) another output format required, write another module....
-<b>(b)</b> easy to update output formats (eg html, XHTML, LaTeX/PDF produced can be updated in program and run against whole document set),
-<b>(c)</b> easy to add, modify, or have alternative syntax rules for input, should you need to,</p>
-<p>
-<b>(xvi)</b>
-scalability, dependent on your file-system (ext3, Reiserfs, XFS, whatever) and on the relational database used (currently Postgresql and SQLite), and your hardware,</p>
-<p>
-<b>(xvii)</b>
-only marked up files need be backed up, to secure the larger document set produced,</p>
-<p>
-<b>(xviii)</b>
-document management,</p>
-<p>
-<b>(xix)</b>
-Syntax highlighting for SiSU markup is available for a number of text editors.</p>
-<p><b>(xx)</b> remote operations:
-<b>(a)</b>
-run SiSU on a remote server, (having prepared sisu markup documents locally or on that server, i.e. this solution where sisu is installed on the remote server, would work whatever type of machine you chose to prepare your markup documents on),
-<b>(b)</b>
-generated document outputs may be posted by sisu to remote sites (using rsync/scp)
-<b>(c)</b>
-document source (plaintext utf-8) if shared on the net may be identified by its url and processed locally to produce the different document outputs.</p>
-<p>
-<b>(xxi)</b>
-document source may be bundled together (automatically) with associated documents (multiple language versions or master document with inclusions) and images and sent as a zip file called a sisupod, if shared on the net these too may be processed locally to produce the desired document outputs, these may be downloaded, shared as email attachments, or processed by running sisu against them, either using a url or the filename.
-</p>
-<p>
-<b>(xxii)</b>
-for basic document generation, the only software dependency is Ruby, and a few standard Unix tools (this covers plaintext, html, XML, ODF, EPUB, LaTeX). To use a database you of course need that, and to convert the LaTeX generated to PDF, a LaTeX processor like tetex or texlive.
-</p>
-<p>
-as a developers tool it is flexible and extensible
-</p>
-<br />
-<p class="small">
-<a href="http://www.sisudoc.org"><b>SiSU</b></a> at <a href="http://www.sisudoc.org">&lt;www.sisudoc.org&gt;</a> or <a href="http://www.jus.uio.no/sisu/">&lt;www.jus.uio.no/sisu/&gt;</a></p>
-</div>
-<div id="column_right">
-<p class="tiny">
-<!-- Search SiSU -->
-<a name="search"></a><form method="get" action="http://search.sisudoc.org" target="_top">
-<input type="text" name="s1" size="24" maxlength="255" />
-<br />
-<input type="submit" name="ignore" value="search" />
-<input type="hidden" name="db" value="#{Db[:name_prefix]}sisu" />
-<input type="hidden" name="a" value="1" />
-<input type="radio" name="view" value="index" checked="checked" /> idx
-<input type="radio" name="view" value="text" /> txt
-<a href="http://search.sisudoc.org" target="_top">&lt;search.sisudoc.org&gt;</a>
-</form>
-<!-- Search SiSU -->
-</p>
-<p class="tiny">
-SiSU ("SiSU information Structuring Universe" or "Structured information, Serialized Units"),<sup>1</sup> is a Unix command line oriented framework for document structuring, publishing and search. Featuring minimalistic markup, multiple standard outputs, a common citation system, and granular search.
-</p>
-<p class="tiny">
- Using markup applied to a document, SiSU can produce plain text, HTML, XHTML, XML, OpenDocument, LaTeX or PDF files, and populate an SQL database with objects<sup>2</sup> (equating generally to paragraph-sized chunks) so searches may be performed and matches returned with that degree of granularity (e.g. your search criteria is met by these documents and at these locations within each document). Document output formats share a common object numbering system for locating content. This is particularly suitable for "published" works (finalized texts as opposed to works that are frequently changed or updated) for which it provides a fixed means of reference of content.
-</p>
-
-<p class="small">
-How it works
-</p>
-<p class="tiny">
-SiSU markup is fairly minimalistic, it consists of: a (largely optional) document header, made up of information about the document (such as when it was published, who authored it, and granting what rights) and any processing instructions; and markup within text which is related to document structure and typeface. SiSU must be able to discern the structure of a document, (text headings and their levels in relation to each other), either from information provided in the instruction header or from markup within the text (or from a combination of both). Processing is done against an abstraction of the document comprising of information on the document's structure and its objects,<sup>2</sup> which the program serializes (providing the object numbers) and which are assigned hash sum values based on their content. This abstraction of information about document structure, objects, (and hash sums), provides considerable flexibility in representing documents different ways and for different purposes (e.g. search, document layout, publishing, content certification, concordance etc.), and makes it possible to take advantage of some of the strengths of established ways of representing documents, (or indeed to create new ones).</p>
-<p class="tiny">
-<sup>1.</sup> also chosen for the meaning of the Finnish term "sisu".
-</p>
-<p class="tiny">
-<sup>2</sup> objects include: headings, paragraphs, verse, tables, images, but not footnotes/endnotes which are numbered separately and tied to the object from which they are referenced.</p>
-<p class="small">
- More information on <a href="http://www.sisudoc.org/sisu/SiSU/"><b>SiSU</b></a> provided at:
- <a href="http://www.sisudoc.org/sisu/SiSU/">
- &lt;www.sisudoc.org/sisu/SiSU&gt;
- </a>
-</p>
-<p class="tiny">
-SiSU was developed in relation to legal documents, and is strong across a wide variety of texts (law, literature...(humanities, law and part of the social sciences)). SiSU handles images but is not suitable for formulae/ statistics, or for technical writing at this time.</p>
-<p class="tiny">
-SiSU has been developed and has been in use for several years. Requirements to cover a wide range of documents within its use domain have been explored.</p>
-<p class="small">
-<a href="mailto:ralph@amissah.com">
-&lt;ralph@amissah.com&gt;
-</a>
-</p>
-<p class="small">
-<a href="mailto:ralph.amissah@gmail.com">
-&lt;ralph.amissah@gmail.com&gt;
-</a>
-</p>
-<p class="small">
-<a href="mailto:sisu@lists.sisudoc.org">
-&lt;sisu@lists.sisudoc.org&gt;
-</a>
-</p>
-<p class="small">
-<a href="http://lists.sisudoc.org/listinfo/sisu">
-&lt;http://lists.sisudoc.org/listinfo/sisu&gt;
-</a>
-</p>
-<p class="small">
-#{@date.year_static}
-</p>
-<p class="tiny">
-w3 since October 3 1993
-</p>
-</div>
-</body>
-</html>
-WOK
- end
- def home_toc
- ' '
- end
- end
- class Inserts
- end
- class TeX < Skin
- def initialize(papersize='')
- @papersize=papersize
- end
- def a4
- def portrait
- def w
- 160
- end
- def h
- 228
- end
- def img_px
- 450
- end
- self
- end
- def landscape
- def w
- 238
- end
- def h
- 160
- end
- def img_px
- 300
- end
- self
- end
- self
- end
- def letter
- def portrait
- def w
- 166
- end
- def h
- 212
- end
- def img_px
- 468
- end
- self
- end
- def landscape
- def w
- 226
- end
- def h
- 166
- end
- def img_px
- 290
- end
- self
- end
- self
- end
- def legal
- def portrait
- def w
- 168
- end
- def h
- 286
- end
- def img_px
- 474
- end
- self
- end
- def landscape
- def w
- 296
- end
- def h
- 166
- end
- def img_px
- 420
- end
- self
- end
- self
- end
- def b5
- def portrait
- def w
- 140
- end
- def h
- 204
- end
- def img_px
- 356
- end
- self
- end
- def landscape
- def w
- 200
- end
- def h
- 130
- end
- def img_px
- 260
- end
- self
- end
- self
- end
- def a5
- def portrait
- def w
- 112
- end
- def h
- 162
- end
- def img_px
- 280
- end
- self
- end
- def landscape
- def w
- 152
- end
- def h
- 100
- end
- def img_px
- 190
- end
- self
- end
- self
- end
- def dimensions
- d=case @papersize
- when /a4/; a4
- when /letter/; letter
- when /legal/; legal
- when /b5/; b5
- when /a5/; a5
- else a4
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/digests.rb b/lib/sisu/v3dv/digests.rb
deleted file mode 100644
index bc4a37e5..00000000
--- a/lib/sisu/v3dv/digests.rb
+++ /dev/null
@@ -1,388 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: document digests (md5|sha256) and structure processing
-
-=end
-module SiSU_DigestView
- require_relative 'particulars' # particulars.rb
- require_relative 'prog_text_translation' # prog_text_translation.rb
- require_relative 'shared_markup_alt.rb' # shared_markup_alt.rb
- pwd=Dir.pwd
- class Source
- @@dg=nil
- def initialize(opt)
- @opt=opt
- @fnb=@opt.fnb
- @@endnotes_para=[]
- @@dg=nil
- @dg=@@dg ||=SiSU_Env::InfoEnv.new.digest.type
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- begin
- @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array
- unless @opt.cmd =~/q/
- tool=(@opt.cmd =~/[MVv]/) \
- ? "#{@env.program.text_editor} file://#{@md.file.output_path.hash_digest.dir}/#{@md.file.base_filename.hash_digest}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,"Document #{@dg} Digests",tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,"Document #{@dg} Digests",tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.hash_digest.dir}/#{@md.file.base_filename.hash_digest}").flow if @opt.cmd =~/[MV]/
- end
- SiSU_DigestView::Source::Scroll.new(@particulars).songsheet
- SiSU_Env::InfoSkin.new(@md).select
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Scroll <Source
- @@dl=nil
- @@ds={}
- @@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
- SiSU_Env::FileOp.new(@md).mkdir
- @@dg ||=@env.digest.type
- @@dl ||=@env.digest.length
- @dg,@dl=@@dg,@@dl
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- @language=l[:n]
- @tr=SiSU_Translate::Source.new(@md,@language)
- @sp=' '
- end
- def songsheet
- @@description,@@ds[:digests],@@ds[:tree],@@ds[:summary],@@sc_info=[],[],[],[],[]
- message_digest
- dal_structure
- supplementary
- output
- end
- def description(f,e='')
- puts f + e.to_s if @md.opt.cmd =~/V/
- @@description << f << e
- end
- def digests(f,e='')
- puts f if @md.opt.cmd =~/V/
- @@ds[:digests] << f + "\n"
- end
- def dal_structure_tree(f,e='')
- puts f + e.to_s if @md.opt.cmd =~/V/
- @@ds[:tree] << f << e
- end
- def dal_structure_summary(f,e='')
- puts f + e.to_s if @md.opt.cmd =~/V/
- @@ds[:summary] << f << e
- end
- def rcinfo(f,e='')
- puts f + e.to_s if @md.opt.cmd =~/V/
- @@sc_info << f << e
- end
- def output
- file=SiSU_Env::FileOp.new(@md)
- filename_digest=file.write_file.hash_digest
- filename_digest << @@description.join << @@ds[:digests].join << @@ds[:tree].join << @@ds[:summary].join << @@sc_info.join
- end
- def rgx_txt(txt)
- txt=txt.gsub(/([()])/,"\\\\\\1")
- end
- def message_digest
- data=@data
- sys=SiSU_Env::SystemCall.new
- l=Hash.new(0)
- @p=[]
- @g,@v,@r='','',''
- data.each do |para|
- x=nil
- y,para_endnotes=[],[]
- if para =~/#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}#{Mx[:id_o]}([0-9a-f]{#{@dl}}):([0-9a-f]{#{@dl}})#{Mx[:id_c]}/
- ocn,h1,h2,d_clean,d_all=$1,$2,$3,$4,$5
- @ocn=ocn unless ocn.to_i==0
- para=para.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>')
- if para=~/#{Mx[:en_a_o]}[\d*+]+.+?#{Mx[:id_o]}[0-9a-f]{#{@dl}}#{Mx[:id_c]}#{Mx[:en_a_c]}/
- para_endnotes << para.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+).+?#{Mx[:id_o]}([0-9a-f]{#{@dl}})#{Mx[:id_c]}(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/)
- end
- ima=[]
- if para !~/^%+\s/ \
- and para =~/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+\.(png|jpg|gif))\s.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- images=para.scan(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+\.(?:png|jpg|gif))\s.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/).flatten
- else image=nil
- end
- x=case para
- when /^#{Mx[:meta_o]}title#{Mx[:meta_c]}/
- "\n" + ' '*0 +'@' + ' '*9
- when /^#{Mx[:meta_o]}subtitle#{Mx[:meta_c]}/
- "\n" + ' '*1 +'@' + ' '*8
- when /^#{Mx[:lv_o]}1:/ #fix Mx[:lv_o]
- "\n" + ' '*2 +':A ' + ' '*6 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all
- when /^#{Mx[:lv_o]}2:/ #fix Mx[:lv_o]
- "\n" + ' '*3 +':B ' + ' '*5 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all
- when /^#{Mx[:lv_o]}3:/ #fix Mx[:lv_o]
- "\n" + ' '*4 +':C ' + ' '*4 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all
- when /^#{Mx[:lv_o]}4:/ #fix Mx[:lv_o]
- "\n" + ' '*5 +'1' + ' '*4 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all
- when /^#{Mx[:lv_o]}5:/ #fix Mx[:lv_o]
- "\n" + ' '*6 +'2' + ' '*3 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all
- when /^#{Mx[:lv_o]}6:/ #fix Mx[:lv_o]
- "\n" + ' '*7 +'3' + ' '*2 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all
- else
- if para =~/MD5\(\S+?\.sst\)=\s*<u>([0-9a-f]{#{@dl}})<\/u>/ #watch
- @n,@s=/MD5\((\S+?\.sst)\)=\s*<u>([0-9a-f]{#{@dl}})<\/u>/.match(para)[1,2]
- end
- x=unless ocn =~ /^0$/
- if images \
- and images.length > 0 # then get path of image & produce digest
- @image_name,@image_dgst,@img=[],[],[]
- images.each do |i|
- image_source=if FileTest.file?("#{@env.path.image_source_include_local}/#{i}")
- @env.path.image_source_include_local
- elsif FileTest.file?("#{@env.path.image_source_include_remote}/#{i}")
- @env.path.image_source_include_remote
- elsif FileTest.file?("#{@env.path.image_source_include}/#{i}")
- @env.path.image_source_include
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"ERROR - image:", %{"#{i}" missing}, "search locations: #{@env.path.image_source_include_local}, #{@env.path.image_source_include_remote} and #{@env.path.image_source_include}").error2 unless @md.opt.cmd =~/q/
- nil
- end
- @img << /\S+\.(png|jpg|gif)/.match(i)[1]
- not_found_msg='image not found'
- if image_source
- para_image = image_source + '/' + i
- @image_name << i
- @image_dgst << if @dg =~/^sha(?:2|256)$/; sys.sha256(para_image)
- else sys.md5(para_image)
- end
- else
- @image_name << ' '*16 + i + ' [image missing]'
- @image_dgst << ''
- @image_dgst[1]=not_found_msg + ' '*(32-not_found_msg.length)
- end
- end
- line= "\n" + ' '*9 + ' - ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all + "\n"
- line_image=[]
- c=0
- @image_name.each do |ok|
- line_image << %{ #{@img[c]} #{@image_dgst[c][1]} #{@image_name[c]}}
- c +=1
- end
- line=line + line_image.join("\n")
- else "\n" + ' '*9 + ' - ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all
- end
- else
- prefix=''
- metad=[@tr.full_title,@tr.author,@tr.translator,@tr.illustrator,@tr.prepared_by,@tr.digitized_by,@tr.description,@tr.subject,@tr.abstract,@tr.publisher,@tr.contributor,@tr.date_created,@tr.date_issued,@tr.date_available,@tr.date_modified,@tr.date_valid,@tr.date,@tr.type,@tr.format,@tr.rights,@tr.identifier,@tr.source,@tr.language,@tr.language_original,@tr.relation,@tr.coverage,@tr.keywords,@tr.comments,@tr.cls_loc,@tr.cls_dewey,@tr.cls_gutenberg,@tr.cls_isbn,@tr.prefix_a,@tr.prefix_b,@tr.sourcefile,@tr.sourcefile_digest,@tr.last_generated,@tr.sisu_version,@tr.ruby_version,@tr.sc_number,@tr.sc_date,'Skin_Digest: ','Generated by: ','Ruby version: ']
- metad.each do |n|
- m=rgx_txt(n)
- if m=~/\S+/ \
- and para=~/^#{m}:/
- x,o=0,18
- while x < 2; o = o + 2
- x=o - n.length
- end
- space=' '*x
- prefix="#{n.downcase}#{space}"
- break
- else prefix=' '*9
- end
- end
- m_title=rgx_txt(@tr.full_title)
- m_author=rgx_txt(@tr.author)
- m_sourcefile_digest=rgx_txt(@tr.sourcefile_digest)
- m_sisu_version=rgx_txt(@tr.sisu_version)
- m_last_generated=rgx_txt(@tr.last_generated)
- m_ruby_version=rgx_txt(@tr.ruby_version)
- case para
- when /#{m_title}: /
- @t=/#{m_title}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#{@dl}}:[0-9a-f]{#{@dl}}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip
- when /#{m_author}: /
- @c=/#{m_author}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#{@dl}}:[0-9a-f]{#{@dl}}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip
- when /#{m_sourcefile_digest}.+?<u>/ #watch
- dgst_extra="\n" + ' '*21 +'source' +' '*4 + @md.dgst[1] + ' '*34 + @md.fns
- when /Skin_Digest: /
- dgst_extra="\n" + ' '*21 + 'skin' +' '*6 + @md.dgst_skin[1] + ' '*34 + /(skin_\S+?\.rb)/.match(@md.dgst_skin[0])[1]
- when /#{m_sisu_version}: /
- @v=/#{m_sisu_version}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#{@dl}}:[0-9a-f]{#{@dl}}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip
- when /#{m_last_generated}: /
- @g=/#{m_last_generated}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#{@dl}}:[0-9a-f]{#{@dl}}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip
- when /#{m_ruby_version}: /
- @r=/#{m_ruby_version}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#{@dl}}:[0-9a-f]{#{@dl}}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip
- end
- dgst_extra ||=''
- "\n" + prefix +' - ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all + dgst_extra + "\n"
- end
- end
- para_endnotes[0].each { |e| y << "\n" + ' '*(28-e[0].length) + "[#{e[0].to_s}] #{e[1].to_s}" } if para_endnotes[0]
- if y; digests(x,y)
- else digests(x)
- end
- end
- end
- manifest="#{@env.url.root}/#{@md.fnb}/sisu_manifest.html"
- a=%{ocn digest clean (no markup/notes),#{@sp*33}digest all (includes markup & endnotes)\n}
- description("#{@md.title.full}\n")
- description("#{@md.author}\n")
- description("#{@md.fns}\n")
- description("----------------------------------------------\n")
- description("SiSU Document Content Certificate (Digest/DCC)\n")
- description("----------------------------------------------\n")
- description(" #{@dg} digests\n")
- description("------------\n")
- description("Sourcefile digest: #{@md.dgst[1]}\n")
- description(" source filename: #{@md.fns}\n")
- description("available outputs: #{manifest}\n")
- #description(" time generated: #{@g}\n")
- #description(" SiSU version used: #{@v}\n")
- #description(" Ruby version used: #{@r}\n")
- description("------------\n")
- description("Document Digests\n")
- description(a)
- end
- def dal_structure
- data=@data
- endnotes=nil
- data.each do |t_o|
- dgst=SiSU_TextRepresentation::ModifiedTextPlusHashDigest.new(@md,t_o).composite.dgst
- if dgst
- if t_o.is==:heading
- digests("#{@sp*0}#{dgst[:ocn]}#{@sp*(8-dgst[:ocn].to_s.length)}#{dgst[:dgst_stripped_txt]} #{dgst[:dgst_markedup_txt]} #{dgst[:is]} #{t_o.lv}")
- elsif t_o.is==:heading_insert
- digests("#{@sp*0}[#{dgst[:ocn]}]#{@sp*(6-dgst[:ocn].to_s.length)}#{dgst[:dgst_stripped_txt]} #{dgst[:dgst_markedup_txt]} #{dgst[:is]} #{t_o.lv}")
- else
- digests("#{@sp*0}#{dgst[:ocn]}#{@sp*(8-dgst[:ocn].to_s.length)}#{dgst[:dgst_stripped_txt]} #{dgst[:dgst_markedup_txt]} #{dgst[:is]}")
- if dgst[:images]
- dgst[:images].each do |img|
- digests("#{@sp*8}#{img[:img_dgst]}#{@sp*66}#{img[:img_type]} #{img[:img_name]}")
- end
- end
- end
- if dgst[:endnotes]
- dgst[:endnotes].each do |en|
- digests("#{@sp*8}#{en[:note_dgst]}#{@sp*66}note [#{en[:note_number]}]")
- endnotes=en[:note_number]
- end
- end
- end
- end
- l=Hash.new(0)
- ocn=nil
- dal_structure_tree("------------\n")
- dal_structure_tree("document structure[*]\n")
- data.each do |t_o|
- if t_o.is==:heading
- x=case t_o.ln
- when 1; l[1] +=1 #fix Mx[:lv_o]
- ' '*0 +':A'
- when 2; l[2] +=1 #fix Mx[:lv_o]
- ' '*1 +':B'
- when 3; l[3] +=1 #fix Mx[:lv_o]
- ' '*2 +':C'
- when 4; l[4] +=1 #fix Mx[:lv_o]
- ' '*3 +'1'
- when 5; l[5] +=1 #fix Mx[:lv_o]
- ' '*4 +'2'
- when 6; l[6] +=1 #fix Mx[:lv_o]
- ' '*5 +'3'
- else nil
- 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?
- end
- dal_structure_tree(" [*] heading levels\n")
- dal_structure_summary("------------\n")
- dal_structure_summary("document structure[*]\n")
- [0,1,2,3,4,5,6].each do |y|
- v=case y
- when 1; ':A'
- when 2; ':B'
- when 3; ':C'
- when 4; '1 '
- when 5; '2 '
- when 6; '3 '
- end
- dal_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")
- end
- def supplementary
- if defined? @md.sc_number \
- and @md.sc_number
- rcinfo("------------\n")
- rcinfo("source control information\n")
- rcinfo(" (the following information while not important for document content certification\n may help the publisher in locating the version referred to)\n")
- rcinfo(" rcs version number: #{@md.sc_number}\n")
- if defined? @md.sc_date \
- and @md.sc_date
- rcinfo(" rcs date: #{@md.sc_date}\n")
- end
- if defined? @md.sc_time \
- and @md.sc_time
- rcinfo(" rcs time: #{@md.sc_time}\n")
- end
- end
- rcinfo("------------\n")
- rcinfo("Note: the time generated related fields (text and digests) will vary between otherwise identical document outputs\n")
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/embedded.rb b/lib/sisu/v3dv/embedded.rb
deleted file mode 100644
index 0c73e9e3..00000000
--- a/lib/sisu/v3dv/embedded.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: sitemap created from parameters extracted from input file(s)
-
-=end
-module SiSU_Embedded
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- class Source
- def initialize(opt)
- @opt=opt
- @md=SiSU_Param::Parameters.new(@opt).get
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @rhost=SiSU_Env::InfoRemote.new(@opt).remote_host_base
- @base_src_dir=@opt.f_pth[:pth].sub(/\/#{@opt.f_pth[:lng]}$/,'')
- @f=SiSU_Env::FileOp.new(@md)
- end
- def read
- songsheet
- end
- def songsheet
- images
- audio
- multimedia
- begin
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- def images
- src="#{@base_src_dir}/_sisu/image"
- src_img='_sisu/image'
- ldest=@env.path.output
- img_dir="#{@env.path.output}/_sisu/image"
- @rhost.each do |remote_conn|
- rdest="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/image"
- remote_rel=remote_conn[:name] + '/' + @f.output_path.stub.rcp
- if @md.opt.cmd.inspect =~/[vVMR]/ \
- and FileTest.directory?(src)
- FileUtils::mkdir_p(img_dir) unless FileTest.directory?(img_dir)
- src_ec=@f.place_file.images.rel + '/' + @md.ec[:image].join(" #{@f.output_path.images.rel}/")
- unless @opt.fns =~/\.-sst$/
- SiSU_Env::SystemCall.new(src_ec,ldest,'q').rsync('--relative',@opt.base_path)
- #if @md.opt.cmd.inspect =~/R/ #rsync to remote image directory
- # SiSU_Env::SystemCall.new(src_ec,remote_rel,'q').rsync('--relative')
- #end
- end
- end
- end
- end
- def audio
- #p @md.ec[:audio]
- src="#{@base_src_dir}/_sisu/mm/audio"
- ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/audio"
- @rhost.each do |remote_conn|
- rdest="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/mm/audio"
- if @md.opt.cmd.inspect =~/[vVMR]/ \
- and FileTest.directory?(src)
- FileUtils::mkdir_p(ldest) unless FileTest.directory?(ldest)
- src_ec="#{src}/" + @md.ec[:audio].join(" #{src}/")
- SiSU_Env::SystemCall.new(src_ec,"#{ldest}/.",'q').rsync
- if @md.opt.cmd.inspect =~/R/ #rsync to remote audio directory
- SiSU_Env::SystemCall.new(src_ec,"#{rdest}/.",'q').rsync
- end
- end
- end
- end
- def multimedia
- #p @md.ec[:multimedia]
- src="#{@base_src_dir}/_sisu/mm/video"
- ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/video"
- @rhost.each do |remote_conn|
- rdest="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/mm/video"
- if @md.opt.cmd.inspect =~/[vVMR]/ \
- and FileTest.directory?(src)
- FileUtils::mkdir_p(ldest) unless FileTest.directory?(ldest)
- src_ec="#{src}/" + @md.ec[:multimedia].join(" #{src}/")
- SiSU_Env::SystemCall.new(src_ec,"#{ldest}/.",'q').rsync
- if @md.opt.cmd.inspect =~/R/ #rsync to remote video directory
- SiSU_Env::SystemCall.new(src_ec,"#{rdest}/.",'q').rsync
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/epub.rb b/lib/sisu/v3dv/epub.rb
deleted file mode 100644
index e9aeb4de..00000000
--- a/lib/sisu/v3dv/epub.rb
+++ /dev/null
@@ -1,669 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: epub generation, processing
-
-=end
-module SiSU_EPUB
- 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
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- songsheet
- end
- def songsheet
- begin
- @md=@particulars.md
- @fnb=@md.fnb
- @env=@particulars.env
- loc=@env.path.url.output_tell
- unless @opt.cmd =~/q/
- tool=(@opt.cmd =~/[MVvz]/) \
- ? "#{@env.program.epub_viewer} #{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'EPUB',tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'EPUB',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}").flow if @opt.cmd =~/[MV]/
- end
- @env.processing_path.epub_bld #(@md)
- @env.processing_path.epub_cp_images(@md)
- dir_epub=@env.processing_path.epub
- SiSU_Env::InfoSkin.new(@md).select
- data=nil
- SiSU_Env::FileOp.new(@md).mkdir.output.epub
- @tuned_file_array=SiSU_EPUB::Source::XHTML_Environment.new(@particulars).tuned_file_instructions
- data=@tuned_file_array
- scr_endnotes=SiSU_EPUB::Source::Endnotes.new(@md,data).scroll
- toc=SiSU_EPUB::Source::Toc.new(@md,data).songsheet
- data=@tuned_file_array
- scr_toc=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
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- unless @opt.cmd =~/[MV]/ #check maintenance flag
- texfiles=Dir["#{@env.processing_path.tune}/#{@opt.fns}*"]
- texfiles.each do |f|
- if FileTest.file?(f)
- File.unlink(f)
- end
- end
- end
- SiSU_Env::Clear.new(@opt.cmd,@opt.fns).param_instantiate
- @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{}
- @@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0
- @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]}
- @@filename_seg,@@seg_url,@@fn,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','','',''
- @@is4=@@is3=@@is2=@@is1=@@heading1=@@heading2=@@heading3=@@heading4=0
- end
- end
- private
- class XHTML_Environment
- def initialize(particulars)
- @particulars=particulars
- @md,@env=particulars.md,particulars.env
- @vz=SiSU_Env::GetInit.instance.skin
- @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::CreateSystemLink.new #home
- end
- def link_images
- @symlnk.images
- end
- def directories
- title=File.basename(@md.fns,'.rb')
- SiSU_Env::FileOp.new(@md).mkdir.output.epub
- end
- def tuned_file_instructions
- @tell=SiSU_Screen::Ansi.new(@md.opt.cmd)
- @md.opt.cmd=@md.opt.cmd.gsub(/H/,'h')
- @md.file_type='html' if @md.opt.cmd =~/[hon]/
- directories
- dal_array=@particulars.dal_array # dal file drawn here
- @tuned_file_array=SiSU_EPUB_Tune::Tune.new(dal_array,@md).songsheet
- @tuned_file_array
- end
- end
- class Endnotes
- include SiSU_EPUB_Format
- def initialize(md,data)
- @md,@data=md,data
- end
- def scroll
- @scr_endnotes=[]
- format_head_scroll=SiSU_EPUB_Format::HeadScroll.new(@md)
- @data.each do |dob|
- pg=dob.dup
- unless pg.is ==:code
- if pg.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ /
- endnote_array=[]
- if pg.obj=~/#{Mx[:en_a_o]}[\d*+].+?#{Mx[:en_a_c]}/m
- endnote_array = pg.obj.scan(/#{Mx[:en_a_o]}[\d*+]+(.+?)#{Mx[:en_a_c]}/m)
- end
- if pg.obj=~/#{Mx[:en_b_o]}[\d*]+\s.+?#{Mx[:en_b_c]}/m
- endnote_array = pg.obj.scan(/#{Mx[:en_b_o]}[\d*]+(.+?)#{Mx[:en_b_c]}/m)
- end
- if pg.obj=~/#{Mx[:en_b_o]}[\d+]+\s.+?#{Mx[:en_b_c]}/m
- endnote_array = pg.obj.scan(/#{Mx[:en_b_o]}[\d+]+(.+?)#{Mx[:en_b_c]}/m)
- end
- endnote_array.flatten.each do |note|
- txt_obj={ txt: note }
- format_scroll=SiSU_EPUB_Format::FormatScroll.new(@md,txt_obj)
- @scr_endnotes << format_scroll.endnote_body
- end
- end
- end
- end
- @scr_endnotes
- end
- end
- class Toc
- @@toc={ seg: [], seg_mini: [], scr: [], ncx: [], opf: [] }
- @@seg_url=''
- @@firstseg=nil
- def initialize(md=nil,data='')
- @md,@data=md,data
- @vz=SiSU_Env::GetInit.instance.skin
- @epub=SiSU_EPUB_Format::HeadInformation.new(@md)
- @tell=SiSU_Screen::Ansi.new(@md.opt.cmd) if @md
- @make=SiSU_Env::ProcessingSettings.new(@md)
- end
- def songsheet #extracts toc for scroll & seg
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Toc').txt_grey if @md.opt.cmd =~/[MVv]/
- toc=nil
- @@firstseg=nil
- @@toc={ seg: [], seg_mini: [], scr: [], ncx: [], opf: [] }
- md_opf_a_content,md_opf_a_spine,md_opf_a_guide=[],[],[]
- @nav_no=0
- @s_a_no,@s_b_no,@s_c_no=0,0,0
- @@toc[:ncx] << @epub.toc_ncx.open #epub ncx navmap
- @@toc[:ncx] << @epub.toc_ncx.head_open << @epub.toc_ncx.head << @epub.toc_ncx.head_close
- @@toc[:ncx] << @epub.toc_ncx.doc_title << @epub.toc_ncx.doc_author
- @@toc[:ncx] << @epub.toc_ncx.navmap_open
- @@toc[:opf] << @epub.metadata_opf.package_open
- @@toc[:opf] << @epub.metadata_opf.metadata
- @@toc[:opf] << @epub.metadata_opf.manifest_open
- @@toc[:seg] << %{<div class="content">\n<div class="substance">}
- @@toc[:scr] << %{<div class="content">\n<div class="substance">}
- md_opf_a_content << @epub.metadata_opf.manifest_content_sisu_toc
- if @make.build.toc?
- md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc
- md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc
- end
- @ncxo=[nil,false,false,false,false,false,false]
- @dob_toc2,@dob_toc3=nil,nil
- @ncx_cls=[]
- @level_a_first_occurrence=true
- @data.each do |dob|
- if dob.is==:heading \
- || dob.is==:heading_insert
- dob_toc=dob.dup
- toc=case dob_toc.ln
- when 1
- @s_a_no +=1
- name_s_a='section_a' + @s_a_no.to_s
- @nav_no+=1
- @nav_no2=@nav_no
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1]
- @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4]=true,false,false,false
- @epub.sections(dob_toc,name_s_a)
- @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_s_a) if dob_toc
- if @level_a_first_occurrence \
- && @make.build.toc?
- @nav_no+=1
- @@toc[:ncx] << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc
- @level_a_first_occurrence=false
- end
- md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_a)
- md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_a)
- md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_a)
- SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_1
- when 2
- @s_b_no +=1
- name_s_b='section_b' + @s_b_no.to_s
- @nav_no+=1
- @nav_no2=@nav_no
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
- @ncxo[2],@ncxo[3],@ncxo[4]=true,false,false
- @epub.sections(dob_toc,name_s_b)
- @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_s_b) if dob_toc
- md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_b)
- md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_b)
- md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_b)
- SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_2
- when 3
- @s_c_no +=1
- name_s_c='section_c' + @s_c_no.to_s
- @nav_no+=1
- @nav_no3=@nav_no
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
- @ncxo[3],@ncxo[4]=true,false
- @epub.sections(dob_toc,name_s_c)
- @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_s_c) if dob_toc
- md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_c)
- md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_c)
- md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_c)
- SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_3
- when 4
- @ncx_cls=[]
- @nav_no+=1
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
- @ncxo[4]=true
- @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no) if dob_toc
- md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc)
- md_opf_a_spine << @epub.metadata_opf.spine(dob_toc)
- md_opf_a_guide << @epub.metadata_opf.guide(dob_toc)
- SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_4
- when 5; SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_5
- when 6; SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_6
- else nil
- end
- toc.each do |k,d|
- d.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- end if toc
- if @@firstseg.nil? \
- and dob.ln==4 \
- and dob.name =~/\S+/
- @@firstseg=dob.name
- end
- if toc
- begin
- @@toc[:seg] << toc[:seg]
- @@toc[:scr] << toc[:seg]
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- end
- end
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
- @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
- @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4]=false,false,false,false
- md_opf_a_content << @epub.metadata_opf.manifest_images(@md.ec[:image])
- @@toc[:seg] << "</div>\n</div>"
- @@toc[:scr] << "</div>\n</div>"
- @@toc[:ncx] << @epub.toc_ncx.navmap_close
- @@toc[:ncx] << @epub.toc_ncx.close
- @@toc[:opf] << md_opf_a_content << @epub.metadata_opf.manifest_close
- @@toc[:opf] << @epub.metadata_opf.spine_open << md_opf_a_spine << @epub.metadata_opf.spine_close
- @@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
- @md.firstseg=@@firstseg
- @@toc
- end
- protected
- def level_1
- dob=@data
- linkname,link=dob.obj.strip,dob.ocn
- if link \
- and link !~/#/ #% keep eye on link
- p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,link)
- end
- title=if dob.obj !~/Document Information/; linkname
- else
- link='metadata'
- %{<b><a href="#{link}#{Sfx[:epub_xhtml]}">#{linkname}</a></b>}
- end
- toc={}
- txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
- toc[:seg]=if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/ #check
- format_toc.lev0
- else format_toc.lev1
- end
- title=if dob.ocn ==0
- if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/
- %{<a href="#docinfo">#{linkname}</a>}
- else linkname
- end
- else
- @@toc[:scr] << '<br />'
- link=if dob.ln; dob.ln
- else ''
- end
- %{<b><a href="##{link}">#{linkname}</a></b>}
- end
- txt_obj={ txt: title }
- format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj)
- toc[:scr]=if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/
- format_toc.lev0
- else format_toc.lev1
- end
- toc
- end
- def level_2
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- if ocn \
- and ocn !~/#/
- p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
- end
- txt_obj={ txt: linkname }
- format_toc=SiSU_EPUB_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)
- toc[:scr]=format_toc.lev2
- end
- toc
- end
- def level_3
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- if ocn \
- and ocn !~/#/
- p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn)
- end
- txt_obj={ txt: linkname }
- format_toc=SiSU_EPUB_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)
- toc[:scr]=format_toc.lev3
- end
- toc
- end
- def level_4
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn
- if dob.ln==4
- seg_link=%{ <a href="#{dob.name}#{Sfx[:epub_xhtml]}">
- #{dob.obj}
- </a> }
- @@seg_url=dob.name
- elsif dob.obj =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/
- seg_link=dob.obj.gsub(/^(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/,
- %{<a href="\\1#{Sfx[:epub_xhtml]}">} +
- %{\\1 \\2</a> })
- end
- p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn
- txt_obj={ txt: seg_link }
- format_toc=SiSU_EPUB_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)
- toc[:scr]=format_toc.lev4
- toc
- end
- def level_5
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- toc={}
- if ocn \
- and ocn !~/#/
- p_num=SiSU_EPUB_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)
- 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)
- toc[:scr]=format_toc.lev5
- end
- toc
- end
- def level_6
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- toc={}
- if ocn \
- and ocn !~/#/
- p_num=SiSU_EPUB_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)
- 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)
- toc[:scr]=format_toc.lev6
- end
- toc
- end
- end
- class ScrollHeadAndSegToc < Toc
- def initialize(md='',toc='',links_guide_toc='')
- @md,@toc,@links_guide_toc=md,toc,links_guide_toc
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def in_common
- toc_shared=[]
- segtoc=[]
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Scroll & Segtoc').txt_grey if @md.opt.cmd =~/[MVv]/
- format_head_toc=SiSU_EPUB_Format::HeadToc.new(@md)
- dochead=format_head_toc.head
- dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge
- toc_shared << dochead #<< ads.div.major
- segtoc << format_head_toc.head #<< ads.div.major
- if SiSU_EPUB_Format::HeadToc.method_defined? :toc_head_escript
- toc_shared << format_head_toc.toc_head_escript
- segtoc << format_head_toc.toc_head_escript
- end
- if defined? @md.rights.all \
- and @md.rights.all
- rights=format_head_toc.rights.all
- rights=SiSU_EPUB_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
- end
- seg_toc_band=format_head_toc.seg_head_navigation_band
- seg_toc_band_bottom=format_head_toc.seg_head_navigation_band_bottom
- 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)
- toc_shared << format_txt_obj.center_bold
- segtoc << format_txt_obj.center_bold
- if defined? @md.creator.author \
- and @md.creator.author
- creator_endnote=@md.creator.author.gsub(/(\*+)/,%{&nbsp;<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)
- toc_shared << format_txt_obj.center_bold
- segtoc << format_txt_obj.center_bold
- end
- segtoc << seg_toc_band
- tmp_head=nil
- if defined? @md.prefix_a \
- and @md.prefix_a
- tmp_head ||= %{#{@md.prefix_a}\n}
- toc_shared << tmp_head.dup
- segtoc << tmp_head.dup
- end
- tmp_head=nil
- toc_shared << @links_guide_toc
- if defined? @md.rights.all \
- and @md.rights.all
- toc_shared << rights
- end
- if defined? @md.prefix_b \
- and @md.prefix_b
- toc_shared << prefix_b
- end
- #Table of Contents added/appended here
- toc_shared << @toc[:scr]
- segtoc << @links_guide_toc
- segtoc << @toc[:seg]
- if defined? @md.rights.all \
- and @md.rights.all
- segtoc << rights
- end
- if defined? @md.prefix_b \
- and @md.prefix_b
- segtoc << prefix_b
- end
- #Segtoc tail added here
- segtoc << seg_toc_band_bottom
- segtoc << format_head_toc.xhtml_close
- segtoc=segtoc.flatten.compact #watch
- SiSU_EPUB::Source::Output.new(@md,segtoc).segtoc
- segtoc=[]
- @toc[:scr],@toc[:seg]=[],[]
- toc_shared
- end
- end
- class Table < SiSU_XHTML_Table::TableXHTML
- end
- class Seg < SiSU_EPUB_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)
- @make=SiSU_Env::ProcessingSettings.new(@md)
- @make_file=SiSU_Env::CreateFile.new(@md.fns)
- end
- def songsheet
- mimetype
- metainf_container
- css
- images if @md.ec[:image]
- #concordance #uncomment to enable inclusion of concordance file
- output_zip
- end
- def mimetype
- out=@make_file.epub.mimetype
- out<<@epub_header.mimetype
- out.close
- end
- def metainf_container #container.xml file in META-INF directory
- out=@make_file.epub.metainf_cont
- out<<@epub_header.metainf_container
- out.close
- end
- def css
- out=@make_file.epub.xhtml_css
- out << SiSU_EPUB_Format::CSS.new.css_epub_xhtml
- out.close
- end
- def epub_toc_ncx
- begin
- out=@make_file.epub.toc_ncx
- @output.each do |para|
- unless para =~/\A\s*\Z/
- out.puts para
- end
- end
- out.close
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- def epub_metadata_opf
- begin
- out=@make_file.epub.metadata
- @output.each do |para|
- unless para =~/\A\s*\Z/
- out.puts para
- end
- end
- out.close
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- def images
- img_pth=@md.env.path.image_source_include
- @md.ec[:image].each do |x|
- if FileTest.directory?("#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}/image") \
- && FileTest.file?("#{@md.file.output_path.epub.rel_image}/#{x}")
- FileUtils::cp("#{@md.file.output_path.epub.rel_image}/#{x}","#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}/image")
- elsif FileTest.directory?("#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}/image") \
- && FileTest.file?("#{img_pth}/#{x}")
- FileUtils::cp("#{img_pth}/#{x}","#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}/image")
- end
- end
- end
- def concordance
- SiSU_EPUB_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)
- if FileTest.directory?(@md.env.processing_path.epub)
- pwd=Dir.pwd
- Dir.chdir(@md.env.processing_path.epub)
- system("
- zip -qXr9D #{@epub_doc} *
- ")
- FileUtils::mv(@epub_doc, @md.file.place_file.epub.dir)
- Dir.chdir(pwd)
- unless @md.opt.cmd.inspect =~/M/
- FileUtils::rm_r(@md.env.processing_path.epub)
- end
- end
- end
- def segtoc
- begin
- if @make.build.toc?
- filename_html_index=@make_file.epub.xhtml_index
- @output.each do |para|
- para=para.strip
- unless para =~/\A\s*\Z/
- filename_html_index.puts para,"\n"
- end
- end
- filename_html_index.close
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/epub_concordance.rb b/lib/sisu/v3dv/epub_concordance.rb
deleted file mode 100644
index e2e5bb5c..00000000
--- a/lib/sisu/v3dv/epub_concordance.rb
+++ /dev/null
@@ -1,316 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: epub concordance file (html concordance, wordmap, linked index
- of words in document)
-
-=end
-module SiSU_EPUB_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
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- begin
- @env,@md=@particulars.env,@particulars.md
- wordmax=@env.concord_max
- unless @md.wc_words.nil?
- if @md.wc_words < wordmax
- SiSU_EPUB_Concordance::Source::Words.new(@particulars).songsheet
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"concordance skipped, large document has over #{wordmax} words (#{@md.wc_words})").warn unless @md.opt.cmd =~/q/
- end
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"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.cmd =~/q/
- SiSU_EPUB_Concordance::Source::Words.new(@particulars).songsheet
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- 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
- def initialize(particulars)
- @particulars,@md=particulars,particulars.md
- @data=SiSU_EPUB::Source::XHTML_Environment.new(particulars).tuned_file_instructions
- @vz=SiSU_Env::GetInit.instance.skin
- txt_path=%{#{@md.dir_out}}
- SiSU_Env::InfoSkin.new(@md).select
- @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 --&gt;"></a>}
- @doc_details =<<WOK
-<table summary="links to text related to this rudimentary index" width="96%" border="0" bgcolor="white" cellpadding="0" align="center"><tr><td width="2%" align="right">&nbsp;</td><td width="94%" valign="top" align="justify"><h1 class="small"><a href="#{@md.file.base_filename.epub}" #{@vz.js_toc}><b>#{@md.title.full}</b></a></h1><p class="bold">#{@md.creator.author}</p></td></tr></table>
-WOK
- end
- def create
- @css=SiSU_Env::CSS_Stylesheet.new(@particulars.md)
- format_head_toc=SiSU_EPUB_Format::HeadToc.new(@md)
- dochead=format_head_toc.head
- <<WOK
-#{dochead}
-<div class="content">
- #{@doc_details}
-<p>Word index links are to html versions of the text the segmented version followed by the scroll (single document) version.<br />[For segmented text references [T1], [T2] or [T3] appearing without a link, indicates that the word appears in a title (or subtitle) of the text (that is identifiable by the appended object citation number).]</p>
-<p>(The word listing/index is Case sensitive: Capitalized words appear before lower case)</p>
- <p>
- <b>word</b> (number of occurences)<br />linked references to word within document <br />
- [if number of occurences exceed number of references - word occurs more than once in at least one reference. Footnote/endnotes are either assigned to the paragraph from which they are referenced or ignored, so it is relevant to check the footnotes referenced from within a paragraph as well.]
- </p>
- <p>
- (After the page is fully loaded) you can jump directly to a word by appending a hash (#) and the word to the url for this text, (do not forget that words are case sensitive, and may be listed twice (starting with and without an upper case letter)), #your_word # [&nbsp;http://[web host]/#{@fnb}/concordance.html#your_word&nbsp;]
- </p>
-WOK
- end
- end
- class Word
- @@word_previous=''
- def initialize(word,freq)
- @word,@freq=word,freq
- end
- def html
- w=if @word.capitalize==@@word_previous
- %{\n<p class="concordance_word">#{@word}</p><p class="concordance_count">(#{@freq})</p>\n\t<p class="concordance_object"> }
- else n=@word.strip.gsub(/\s+/,'_') #also need to convert extended character set to html
- %{\n<p class="concordance_word"><a name="#{n}">#{@word}</a></p><p class="concordance_count">(#{@freq})</p>\n\t<p class="concordance_object"> }
- end
- @@word_previous=@word.capitalize
- w
- end
- end
- class Words
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'epub_format' # epub_format.rb
- include SiSU_EPUB_Format
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Screen
- def initialize(particulars)
- @particulars=particulars
- begin
- @vz=SiSU_Env::GetInit.instance.skin
- @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array
- @path="#{@env.processing_path.epub}"
- @freq=Hash.new(0)
- @rxp_lv1=/^#{Mx[:lv_o]}1:/ #fix Mx[:lv_o]
- @rxp_lv2=/^#{Mx[:lv_o]}2:/ #fix Mx[:lv_o]
- @rxp_lv3=/^#{Mx[:lv_o]}3:/ #fix Mx[:lv_o]
- @rxp_seg=/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}/
- @rxp_title=Regexp.new("^#{Mx[:meta_o]}title#{Mx[:meta_c]}\s*(.+?)\s*$")
- @rxp_t1=Regexp.new('^T1')
- @rxp_t2=Regexp.new('^T2')
- @rxp_t3=Regexp.new('^T3')
- @rxp_excluded1=/(?:https?|file|ftp):\/\/\S+/
- @rxp_excluded0=/^(?:#{Mx[:fa_bold_o]}|#{Mx[:fa_italics_o]})?(?:to\d+|\d+|&nbsp;|#{Mx[:br_endnotes]}|EOF|#{Mx[:br_eof]}|thumb_\S+|snap_\S+|_+|-+|[(]?(?:ii+|iv|vi+|ix|xi+|xiv|xv|xvi+|xix|xx)[).]?|\S+?_\S+|[\d_]+\w\S+|[\w\d]{1,2}|\d{1,3}\w?|[0-9a-f]{16,64}|\d{2,3}x\d{2,3}|\S{0,2}sha\d|\S{0,3}\d{4}w\d\d|\b\w\d+|\d_all\b|e\.?g\.?)(?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})?$/mi #this regex causes and cures a stack dump in ruby 1.9 !!!
- @rgx_splitlist=%r{[—.,;:-]+|#{Mx[:nbsp]}+}mi
- @rgx_scanlist=%r{#{Mx[:fa_italics_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_italics_c]}|#{Mx[:fa_bold_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_bold_c]}|#{Mx[:url_o]}https?://\S+?#{Mx[:url_c]}|file://\S+|<\S+?>|\w+|[a-zA-Z]+}mi
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- def songsheet
- begin
- #fix to use
- p __LINE__.to_s + ':' + __FILE__
- p "#{@path}/content/#{@md.fn[:epub_concord]}"
- p "#{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}"
- @file_concordance=File.open("#{@path}/content/#{@md.fn[:epub_concord]}",'w')
- map_para
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- @file_concordance.close
- end
- end
- protected
- def location_scroll(wordlocation,show)
- @wordlocation=wordlocation
- %{<a href="doc#{Sfx[:epub_xhtml]}\##{@wordlocation}">#{@wordlocation}</a>; }
- end
- def location_seg(wordlocation,show)
- @wordlocation,@show=wordlocation,show
- @word_location_seg=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{Sfx[:epub_xhtml]}#o\\2") unless wordlocation.nil?
- case @wordlocation
- when @rxp_t1
- %{[<a href="doc#{Sfx[:epub_xhtml]}##{@show}">H</a>]#{@show}, }
- when @rxp_t2
- %{[<a href="doc#{Sfx[:epub_xhtml]}##{@show}">H</a>]#{@show}, }
- when @rxp_t3
- %{[<a href="doc#{Sfx[:epub_xhtml]}##{@show}">H</a>]#{@show}, }
- else %{<a href="#{@word_location_seg}">#{@show}</a>, }
- end
- end
- def map_para
- @seg,toy=nil,nil
- @word_map={}
- @dal_array.each do |line|
- if defined? line.ocn
- if (line.is ==:heading \
- || line.is ==:heading_insert) \
- && line.ln==4
- @seg=line.name
- end
- if line.ocn.to_s =~/\d+/; toy=line.ocn.to_s
- end
- if toy =~/\d+/ \
- and toy !~/^0$/
- line.obj=line.obj.split(@rgx_splitlist).join(' ') #%take in word or other match
- for word in line.obj.scan(@rgx_scanlist) #%take in word or other match
- word=word.gsub(/#{Mx[:lnk_o]}|#{Mx[:lnk_c]}|#{Mx[:url_o]}|#{Mx[:url_c]}/,'').
- gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').
- gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
- gsub(/#{Mx[:gl_o]}#[a-z]+#{Mx[:gl_c]}/,'').
- gsub(/#{Mx[:gl_o]}#[0-9]+#{Mx[:gl_c]}/,'').
- gsub(/^\S$/,'')
- word=nil if word.empty?
- word=nil if word =~@rxp_excluded0 #watch
- word=nil if word =~@rxp_excluded1 #watch
- word=nil if word =~/^\S$/
- if word
- word=word.gsub(/#{Mx[:br_nl]}|#{Mx[:br_line]}/,' ').
- gsub(/#{Mx[:fa_o]}[a-z]{1,7}#{Mx[:fa_o_c]}|#{Mx[:fa_c_o]}[a-z]{1,7}#{Mx[:fa_c]}/,'').
- gsub(/#{Mx[:mk_o]}(?:[0-9a-f]{32}:[0-9a-f]{32}|[0-9a-f]{64}:[0-9a-f]{64})#{Mx[:mk_c]}/,'').
- gsub(/#{Mx[:mk_o]}(?:[0-9a-f]{32}|[0-9a-f]{64})#{Mx[:mk_c]}/,'').
- gsub(/#{Mx[:en_a_o]}(?:\d|[*+])*|#{Mx[:en_b_o]}(?:\d|[*+])*|#{Mx[:en_a_c]}|#{Mx[:en_b_c]}/mi,'').
- gsub(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'').gsub(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'').
- gsub(/<\/?\S+?>/,'').
- gsub(/^\@+/,'').
- strip.
- gsub(/#{Mx[:tc_p]}.+/,'').
- gsub(/[\.,;:"]$/,'').
- gsub(/["]/,'').
- gsub(/^\s*[\(]/,'').
- gsub(/[\(]\s*$/,'').
- gsub(/^(?:See|e\.?g\.?).+/,'').
- gsub(/^\s*[.,;:]\s*/,'').
- strip.
- gsub(/^\(?[a-zA-Z]\)$/,'').
- gsub(/^\d+(st|nd|rd|th)$/,'').
- gsub(/^(\d+\.?)+$/, '').
- gsub(/#{Mx[:mk_o]}|#{Mx[:mk_c]}/,'').
- gsub(/:name#\S+/,'').
- gsub(/^\S$/,'')
- word=nil if word =~/^\S$/
- word=nil if word =~/^\s*$/ #watch
- if word
- unless word =~/[A-Z][A-Z]/ \
- or word =~/\w+\s\w+/
- word=word.capitalize
- end
- @freq[word] +=1
- @word_map[word] ||= []
- if line !~@rxp_lv1 \
- and line !~@rxp_lv2 \
- and line !~@rxp_lv3
- @word_map[word] << location_seg("#{@seg}\##{toy}",toy)
- else
- @word_map[word] << case line
- when @rxp_lv1; location_seg('T1',toy)
- when @rxp_lv2; location_seg('T2',toy)
- when @rxp_lv3; location_seg('T3',toy)
- end
- end
- end
- end
- end
- end
- end
- end
- scr='<font size="1" color="#777777" face=times new roman><img border="0" height="15" width="15" src="../_sisu/image/b_doc.png" alt="Full Text">&nbsp;scroll:&nbsp;</font><font size="1" color="#222222" face=times new roman>doc#&nbsp;</font> '
- seg=''
- @file_concordance << SiSU_EPUB_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>,&nbsp;}}
- @file_concordance << '</p>'
- letter=alph.shift
- @file_concordance << %{\n<p class="letter"><a name="A">A</a></p>}
- for word in @freq.keys.sort! {|a,b| a.downcase<=>b.downcase}
- f=/^(\S)/.match(word)[1]
- if letter < f.upcase
- while letter < f.upcase
- if alph.length > 0
- letter=alph.shift
- @file_concordance << %{\n<p class="letter"><a name="#{letter}">#{letter}</a></p>}
- else break
- end
- end
- end
- keyword=SiSU_EPUB_Concordance::Source::Word.new(word,@freq[word]).html
- if keyword !~ @rxp_excluded0
- if @word_map[word][0] =~ /\d+/
- wm=[]
- @file_concordance << %{#{keyword}#{seg}#{@word_map[word].uniq.compact.join}}
- end
- @file_concordance << '</p>'
- end
- # special cases endnotes and header levels 1 - 3
- end
- credits=@vz.credits_sisu_epub
- @file_concordance << %{</div>>#{credits}</body>\n</html>} # footer
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/epub_format.rb b/lib/sisu/v3dv/epub_format.rb
deleted file mode 100644
index e11f5d3d..00000000
--- a/lib/sisu/v3dv/epub_format.rb
+++ /dev/null
@@ -1,2223 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: epub formating, css template
-
-=end
-module SiSU_EPUB_Format
- include SiSU_Viz
- class ParagraphNumber
- def initialize(md,ocn)
- @md,@ocn=md,ocn.to_s
- @ocn ||=''
- vz=SiSU_Env::GetInit.instance.skin
- end
- def ocn_display
- @make=SiSU_Env::ProcessingSettings.new(@md)
- if @make.build.ocn?
- ocn_class='ocn'
- if @ocn.to_i==0
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- else
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a href="#o\\1" class="lnk#{ocn_class}">\\1</a></label>})
- end
- else
- ocn_class='ocn_off'
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- end
- end
- def name
- %{<a name="#{@ocn}"></a>}
- end
- def id #w3c? "tidy" complains about numbers as identifiers ! annoying
- %{id="o#{@ocn}"}
- end
- def goto
- %{<a href="##{@ocn}">}
- end
- end
- class CSS
- def css_epub_xhtml
-<<WOK
-/* SiSU epub css default stylesheet */
- body {
- color: black;
- background: #ffffff;
- background-color: #ffffff;
- }
-/*
- table {
- margin-left: 5%;
- display: block;
- }
- tr {
- display: block;
- }
- th,td {
- display: inline;
- vertical-align: top;
- }
-*/
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- }
- a:hover {
- color: #000000;
- background-color: #f9f9aa;
- }
-/*
- a:hover {
- border-bottom: 2px solid #777777;
- background-color: #fff3b6;
- }
-*/
- a:hover img {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- a.lnkocn:link {
- color: #777777;
- text-decoration: none;
- }
- div {
- margin-left: 0;
- margin-right: 0;
- }
- div.p {
- margin-left: 5%;
- margin-right: 1%;
- }
-
- .norm, .bold, .verse, .group, .block, .alt {
- line-height: 150%;
- margin-left: 0em;
- margin-right: 2em;
- margin-top: 10px;
- margin-bottom: 0px;
- padding-left: 0em;
- text-indent: 0mm;
- }
- p, h0, h1, h2, h3, h4, h5, h6 {
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-size: 100%;
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- margin-left: 0em;
- margin-right: 2em;
- text-indent: 0mm;
- margin-top: 3px;
- margin-bottom: 3px;
- }
- p.norm { }
- p.i1 {padding-left: 1em;}
- p.i2 {padding-left: 2em;}
- p.i3 {padding-left: 3em;}
- p.i4 {padding-left: 4em;}
- p.i5 {padding-left: 5em;}
- p.i6 {padding-left: 6em;}
- p.i7 {padding-left: 7em;}
- p.i8 {padding-left: 8em;}
- p.i9 {padding-left: 9em;}
-
- p.h0i0 {
- padding-left: 0em;
- text-indent: 0em;
- }
- p.h0i1 {
- padding-left: 1em;
- text-indent: -1em;
- }
- p.h0i2 {
- padding-left: 2em;
- text-indent: -2em;
- }
- p.h0i3 {
- padding-left: 3em;
- text-indent: -3em;
- }
- p.h0i4 {
- padding-left: 4em;
- text-indent: -4em;
- }
- p.h0i5 {
- padding-left: 5em;
- text-indent: -5em;
- }
- p.h0i6 {
- padding-left: 6em;
- text-indent: -6em;
- }
- p.h0i7 {
- padding-left: 7em;
- text-indent: -7em;
- }
- p.h0i8 {
- padding-left: 8em;
- text-indent: -8em;
- }
- p.h0i9 {
- padding-left: 9em;
- text-indent: -9em;
- }
-
- p.h1i0 {
- padding-left: 0em;
- text-indent: 1em;
- }
- p.h1i1 {
- padding-left: 1em;
- text-indent: 0em;
- }
- p.h1i2 {
- padding-left: 2em;
- text-indent: -1em;
- }
- p.h1i3 {
- padding-left: 3em;
- text-indent: -2em;
- }
- p.h1i4 {
- padding-left: 4em;
- text-indent: -3em;
- }
- p.h1i5 {
- padding-left: 5em;
- text-indent: -4em;
- }
- p.h1i6 {
- padding-left: 6em;
- text-indent: -5em;
- }
- p.h1i7 {
- padding-left: 7em;
- text-indent: -6em;
- }
- p.h1i8 {
- padding-left: 8em;
- text-indent: -7em;
- }
- p.h1i9 {
- padding-left: 9em;
- text-indent: -8em;
- }
-
- p.h2i0 {
- padding-left: 0em;
- text-indent: 2em;
- }
- p.h2i1 {
- padding-left: 1em;
- text-indent: 1em;
- }
- p.h2i2 {
- padding-left: 2em;
- text-indent: 0em;
- }
- p.h2i3 {
- padding-left: 3em;
- text-indent: -1em;
- }
- p.h2i4 {
- padding-left: 4em;
- text-indent: -2em;
- }
- p.h2i5 {
- padding-left: 5em;
- text-indent: -3em;
- }
- p.h2i6 {
- padding-left: 6em;
- text-indent: -4em;
- }
- p.h2i7 {
- padding-left: 7em;
- text-indent: -5em;
- }
- p.h2i8 {
- padding-left: 8em;
- text-indent: -6em;
- }
- p.h2i9 {
- padding-left: 9em;
- text-indent: -7em;
- }
-
- p.h3i0 {
- padding-left: 0em;
- text-indent: 3em;
- }
- p.h3i1 {
- padding-left: 1em;
- text-indent: 2em;
- }
- p.h3i2 {
- padding-left: 2em;
- text-indent: 1em;
- }
- p.h3i3 {
- padding-left: 3em;
- text-indent: 0em;
- }
- p.h3i4 {
- padding-left: 4em;
- text-indent: -1em;
- }
- p.h3i5 {
- padding-left: 5em;
- text-indent: -2em;
- }
- p.h3i6 {
- padding-left: 6em;
- text-indent: -3em;
- }
- p.h3i7 {
- padding-left: 7em;
- text-indent: -4em;
- }
- p.h3i8 {
- padding-left: 8em;
- text-indent: -5em;
- }
- p.h3i9 {
- padding-left: 9em;
- text-indent: -6em;
- }
-
- p.h4i0 {
- padding-left: 0em;
- text-indent: 4em;
- }
- p.h4i1 {
- padding-left: 1em;
- text-indent: 3em;
- }
- p.h4i2 {
- padding-left: 2em;
- text-indent: 2em;
- }
- p.h4i3 {
- padding-left: 3em;
- text-indent: 1em;
- }
- p.h4i4 {
- padding-left: 4em;
- text-indent: 0em;
- }
- p.h4i5 {
- padding-left: 5em;
- text-indent: -1em;
- }
- p.h4i6 {
- padding-left: 6em;
- text-indent: -2em;
- }
- p.h4i7 {
- padding-left: 7em;
- text-indent: -3em;
- }
- p.h4i8 {
- padding-left: 8em;
- text-indent: -4em;
- }
- p.h4i9 {
- padding-left: 9em;
- text-indent: -5em;
- }
-
- p.h5i0 {
- padding-left: 0em;
- text-indent: 5em;
- }
- p.h5i1 {
- padding-left: 1em;
- text-indent: 4em;
- }
- p.h5i2 {
- padding-left: 2em;
- text-indent: 3em;
- }
- p.h5i3 {
- padding-left: 3em;
- text-indent: 2em;
- }
- p.h5i4 {
- padding-left: 4em;
- text-indent: 1em;
- }
- p.h5i5 {
- padding-left: 5em;
- text-indent: 0em;
- }
- p.h5i6 {
- padding-left: 6em;
- text-indent: -1em;
- }
- p.h5i7 {
- padding-left: 7em;
- text-indent: -2em;
- }
- p.h5i8 {
- padding-left: 8em;
- text-indent: -3em;
- }
- p.h5i9 {
- padding-left: 9em;
- text-indent: -4em;
- }
-
- p.h6i0 {
- padding-left: 0em;
- text-indent: 6em;
- }
- p.h6i1 {
- padding-left: 1em;
- text-indent: 5em;
- }
- p.h6i2 {
- padding-left: 2em;
- text-indent: 4em;
- }
- p.h6i3 {
- padding-left: 3em;
- text-indent: 3em;
- }
- p.h6i4 {
- padding-left: 4em;
- text-indent: 2em;
- }
- p.h6i5 {
- padding-left: 5em;
- text-indent: 1em;
- }
- p.h6i6 {
- padding-left: 6em;
- text-indent: 0em;
- }
- p.h6i7 {
- padding-left: 7em;
- text-indent: -1em;
- }
- p.h6i8 {
- padding-left: 8em;
- text-indent: -2em;
- }
- p.h6i9 {
- padding-left: 9em;
- text-indent: -3em;
- }
-
- p.h7i0 {
- padding-left: 0em;
- text-indent: 7em;
- }
- p.h7i1 {
- padding-left: 1em;
- text-indent: 6em;
- }
- p.h7i2 {
- padding-left: 2em;
- text-indent: 5em;
- }
- p.h7i3 {
- padding-left: 3em;
- text-indent: 4em;
- }
- p.h7i4 {
- padding-left: 4em;
- text-indent: 3em;
- }
- p.h7i5 {
- padding-left: 5em;
- text-indent: 2em;
- }
- p.h7i6 {
- padding-left: 6em;
- text-indent: 1em;
- }
- p.h7i7 {
- padding-left: 7em;
- text-indent: 0em;
- }
- p.h7i8 {
- padding-left: 8em;
- text-indent: -1em;
- }
- p.h7i9 {
- padding-left: 9em;
- text-indent: -2em;
- }
-
- p.h8i0 {
- padding-left: 0em;
- text-indent: 8em;
- }
- p.h8i1 {
- padding-left: 1em;
- text-indent: 7em;
- }
- p.h8i2 {
- padding-left: 2em;
- text-indent: 6em;
- }
- p.h8i3 {
- padding-left: 3em;
- text-indent: 5em;
- }
- p.h8i4 {
- padding-left: 4em;
- text-indent: 4em;
- }
- p.h8i5 {
- padding-left: 5em;
- text-indent: 3em;
- }
- p.h8i6 {
- padding-left: 6em;
- text-indent: 2em;
- }
- p.h8i7 {
- padding-left: 7em;
- text-indent: 1em;
- }
- p.h8i8 {
- padding-left: 8em;
- text-indent: 0em;
- }
- p.h8i9 {
- padding-left: 9em;
- text-indent: -1em;
- }
-
- p.h9i0 {
- padding-left: 0em;
- text-indent: 9em;
- }
- p.h9i1 {
- padding-left: 1em;
- text-indent: 8em;
- }
- p.h9i2 {
- padding-left: 2em;
- text-indent: 7em;
- }
- p.h9i3 {
- padding-left: 3em;
- text-indent: 6em;
- }
- p.h9i4 {
- padding-left: 4em;
- text-indent: 5em;
- }
- p.h9i5 {
- padding-left: 5em;
- text-indent: 4em;
- }
- p.h9i6 {
- padding-left: 6em;
- text-indent: 3em;
- }
- p.h9i7 {
- padding-left: 7em;
- text-indent: 2em;
- }
- p.h9i8 {
- padding-left: 8em;
- text-indent: 1em;
- }
- p.h9i9 {
- padding-left: 9em;
- text-indent: 0em;
- }
-
- p.it0 {
- margin-left: 0em;
- margin-top: 6px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it1 {
- margin-left: 1em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it2 {
- margin-left: 2em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it3 {
- margin-left: 3em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it4 {
- margin-left: 4em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it5 {
- margin-left: 5em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it6 {
- margin-left: 6em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it7 {
- margin-left: 7em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it8 {
- margin-left: 8em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it9 {
- margin-left: 9em;
- margin-bottom: 0px;
- margin-top: 0px;
- line-height: 100%;
- }
-
- p.group { }
-
- p.block { }
-
- p.alt { }
-
- p.verse {
- margin-bottom: 6px;
- }
-
- p.code {
- font-family: inconsolata, andale mono, courier new, courier, monospace;
- font-size: 90%;
- text-align: left;
- background-color: #eeeeee;
- }
-
- p.caption {
- text-align: left;
- font-size: 80%;
- display: inline;
- }
-
- p.endnote {
- font-size: 96%;
- line-height: 120%;
- text-align: left;
- margin-right: 2em;
- }
- p.endnote_indent {
- font-size: 96%;
- line-height: 120%;
- text-align: left;
- margin-left: 2em;
- margin-right: 2em;
- }
-
- p.center {
- text-align: center;
- }
- p.align_right {
- text-align: right;
- }
- p.bold {
- font-weight: bold;
- }
- p.bold_left {
- font-weight: bold;
- text-align: left;
- }
- p.centerbold {
- text-align: center;
- font-weight: bold;
- }
- p.em {
- font-weight: bold;
- font-style: normal;
- background: #fff3b6;
- }
-
- p.small {
- font-size: 80%;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 6px;
- text-align: left;
- }
-
- .tiny, .tiny_left, .tiny_right, .tiny_center {
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 6px;
- text-align: left;
- }
- p.tiny { }
- p.tiny_left {
- margin-left: 0px;
- margin-right: 0px;
- text-align: left;
- }
- p.tiny_right {
- margin-right: 1em;
- text-align: right;
- }
- p.tiny_center {
- margin-left: 0px;
- margin-right: 0px;
- text-align: center;
- }
-
- p.concordance_word {
- line-height: 150%;
- font-weight: bold;
- display: inline;
- margin-top: 4px;
- margin-bottom: 1px;
- }
- p.concordance_count {
- font-size: 80%;
- color: #777777;
- display: inline;
- margin-left: 0em;
- }
- p.concordance_object {
- font-size: 80%;
- line-height: 120%;
- text-align: left;
- margin-left: 3em;
- margin-top: 1px;
- margin-bottom: 3px;
- }
- p.book_index_lev1 {
- line-height: 100%;
- margin-top: 4px;
- margin-bottom: 1px;
- }
- p.book_index_lev2 {
- line-height: 100%;
- text-align: left;
- margin-left: 3em;
- margin-top: 1px;
- margin-bottom: 3px;
- }
-
- p.quickref {
- font-size: 10px;
- font-style: italic;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 5px;
- text-align: left;
- }
- p.bigref {
- font-size: 11px;
- font-weight: bold;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 5px;
- text-align: center;
- }
-
- p.letter {
- font-weight: bold;
- font-size: 80%;
- margin-left: 0em;
- margin-top: 2px;
- margin-bottom: 2px;
- margin-right: 6px;
- text-align: left;
- color: white;
- background: #880000;
- }
-
- tt {
- font-family: inconsolata, andale mono, courier new, courier, monospace;
- background-color: #eeeeee;
- }
-
- label.ocn {
- width: 2%;
- float: right;
- top: 0;
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 5px;
- color: #777777;
- margin-right: 5px;
- text-align: right;
- background-color: #ffffff;
- }
-
- table { }
- tr { }
- th,td {
- vertical-align: top;
- text-align: left;
- }
- th {
- font-weight: bold;
- }
-
- p.left, th.left, td.left {
- text-align: left;
- }
- p.small_left, th.small_left, td.small_left {
- text-align: left;
- font-size: 80%;
- }
- p.right, th.right, td.right {
- text-align: right;
- }
-
- #horizontal_links {
- background: #eeeeee;
- margin-left: 5%;
- margin-right: 5%;
- }
- #horizontal {
- margin: 0;
- padding: 0 0 0 10px;
- border-top: 1px solid #000077;
- border-bottom: 1px solid #000077;
- }
- #horizontal li {
- margin: 0 0 0 0;
- padding: 0 16px 0 0;
- display: inline;
- list-style-type: none;
- text-align: left;
- background: none;
- }
- #horizontal a {
- line-height: 12px;
- margin: 0 0 0 0;
- text-decoration: none;
- color: #000077;
- }
- #horizontal a.active, #horizontal a:hover {
- border-bottom: 2px solid #777777;
- padding-bottom: 2px;
- color: #000077;
- }
- #horizontal a:hover {
- color: #000077;
- }
-
- #document_versions {
- position: absolute;
- top: 10mm;
- right: 2%;
- width: 12%;
- float: right;
- }
-
- #vertical_links {
- position: absolute;
- top: 10mm;
- right: 0px;
- width: 20%;
- background: #dddddd;
- float: right;
- }
- #vertical {
- padding: 0 12px 0px 0px;
- margin-left: 2%;
- margin-right: 2%;
- }
- #vertical li {
- display: block;
- list-style-type: none;
- }
- #vertical a {
- line-height: 12px;
- text-decoration: none;
- color: #000077;
- }
- #vertical a.active, #vertical a:hover {
- border-bottom: 2px solid #777777;
- padding-bottom: 2px;
- color: #000077;
- }
-
- ul, li {
- list-style-type: none;
- list-style: none;
- padding-left: 20px;
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-weight: normal;
- line-height: 150%;
- text-align: justify;
- text-indent: 0mm;
- margin-left: 1em;
- margin-right: 2em;
- margin-top: 3px;
- margin-bottom: 3px;
- }
-
- li {
- background: url(../image/bullet_09.png) no-repeat 0px 6px;
- }
-
- ul {
- }
- li.bullet { margin-left: 0em; }
- li.i1 { margin-left: 1em; }
- li.i2 { margin-left: 2em; }
- li.i3 { margin-left: 3em; }
- li.i4 { margin-left: 4em; }
- li.i5 { margin-left: 5em; }
- li.i6 { margin-left: 6em; }
- li.i7 { margin-left: 7em; }
- li.i8 { margin-left: 8em; }
- li.i9 { margin-left: 9em; }
-
- li.doc, li.ref, li.refcenter {
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 0px;
- font-size: 8px;
- font-style: normal;
- text-align: left;
- }
- li.doc {
- background: url(../image/bullet_09.png) no-repeat 0px 6px;
- padding-left: 16px;
- margin-left: 10px;
- margin-right: 0px;
- }
- li.ref {
- background: none;
- padding-left: 0;
- margin-left: 0;
- color: #777777;
- }
- li.refcenter {
- background: url(../image/bullet_09.png) no-repeat 0px 6px;
- padding-left: 20px;
- margin-left: 10%;
- font-size: 9px;
- color: #777777;
- text-align: center;
- }
- li.refbold {
- list-style-type: none;
- padding-left: 16px;
- margin-left: 0;
- margin-right: 10mm;
- font-weight: bold;
- }
-
- h0, h1, h2, h3, h4, h5, h6 {
- font-weight: bold;
- line-height: 120%;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- h4.norm, h5.norm, h6.norm {
- margin-top: 10px;
- margin-bottom: 0px;
- }
- h1.center, h2.center, h3.center, h4.center, h5.center, h6.center {
- text-align: center;
- }
- h1 { font-size: 120%; }
- h2 { font-size: 115%; }
- h3 { font-size: 110%; }
- h4 { font-size: 105%; }
- h5 { font-size: 100%; }
- h6 { font-size: 100%; }
- h0 { font-size: 80%; }
-
- h1.i {margin-left: 2em;}
- h2.i {margin-left: 3em;}
- h3.i {margin-left: 4em;}
- h4.i {margin-left: 5em;}
- h5.i {margin-left: 6em;}
- h6.i {margin-left: 7em;}
- h7.i {margin-left: 8em;}
- h8.i {margin-left: 9em;}
- h9.i {margin-left: 10em;}
-
- .toc {
- font-weight: normal;
- margin-top: 6px;
- margin-bottom: 6px;
- }
- h1.toc {
- margin-left: 1em;
- font-size: 115%;
- line-height: 150%;
- }
- h2.toc {
- margin-left: 2em;
- font-size: 110%;
- line-height: 140%;
- }
- h3.toc {
- margin-left: 3em;
- font-size: 105%;
- line-height: 120%;
- }
- h4.toc {
- margin-left: 4em;
- font-size: 100%;
- line-height: 120%;
- }
- h5.toc {
- margin-left: 5em;
- font-size: 95%;
- line-height: 110%;
- }
- h6.toc {
- margin-left: 6em;
- font-size: 90%;
- line-height: 110%;
- }
-
- .microtoc {
- margin-top: 2px;
- margin-bottom: 2px;
- }
-
- h1.microtoc {
- margin-left: 0mm;
- font-size: 115%;
- }
- h2.microtoc {
- margin-left: 5mm;
- font-size: 110%;
- }
- h3.microtoc {
- margin-left: 10mm;
- font-size: 105%;
- }
- h4.microtoc {
- margin-left: 15mm;
- font-weight: normal;
- font-size: 100%;
- }
- h5.microtoc {
- margin-left: 20mm;
- font-weight: normal;
- font-size: 95%;
- }
- h6.microtoc {
- margin-left: 25mm;
- font-weight: normal;
- font-size: 90%;
- }
-
- .subtoc {
- margin-right: 34%;
- font-weight: normal;
- }
- h5.subtoc {
- margin-left: 2em;
- font-size: 80%;
- margin-top: 2px;
- margin-bottom: 2px;
- }
- h6.subtoc {
- margin-left: 3em;
- font-size: 75%;
- margin-top: 0px;
- margin-bottom: 0px;
- }
-
- div.substance {
- width: 100%;
- background-color: #ffffff;
- }
- div.ocn {
- width: 5%;
- float: right;
- top: 0;
- background-color: #ffffff;
- }
- div.endnote {
- width: 100%;
- background-color: #fffffff;
- }
- div.toc {
- position: absolute;
- float: left;
- margin: 0;
- padding: 0;
- padding-top: 0.5em;
- border: 0;
- width: 5%;
- background-color: #eeeeee;
- margin-right:1em;
- }
- div.summary {
- margin: 0;
- padding: 0;
- border-left: 2em solid #eeeeee;
- padding-left: 0em;
- background-color: #eeeeee;
- }
- div.content, div.main_column {
- margin: 0;
- padding: 0;
- border-left: 0% solid #ffffff;
- padding-left: 5%;
- }
- div.content:after {
- content:' ';
- clear:both;
- display:block;
- height:0;
- overflow:hidden
- }
- div.footer {
- clear:left;
- padding: 0.5em;
- font-size: 80%;
- margin: 0;
- }
- div.toc ul {
- list-style: none;
- padding: 0;
- margin: 0;
- }
- div.toc li ul a, li ul span.currentlink
- {
- font-weight: normal;
- font-size: 90%;
- padding-left: 2em;
- background-color: #eeeeee;
- }
- div.toc a, span.currentlink{
- display:block;
- text-decoration: none;
- padding-left: 0.5em;
- color: #0000aa;
- }
- hr {
- width: 90%;
- }
-
- span.currentlink {
- text-decoration: none;
- background-color: #aaaaf9;
- }
-
- div.toc a:visited {
- color: #0000aa;
- }
- div.toc a:hover {
- color: #000000;
- background-color: #f9f9aa;
- }
-
- h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c {
- text-align: center
- }
- h1.red, h2.red, h3.red, h4.red, h5.red, h6.red {
- text-align: center;
- color: #ff0000;
- margin-left: 5mm;
- text-indent: 5mm;
- margin-top: 30px;
- margin-bottom: 20px;
- margin-right: 15mm;
- }
- h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby {
- text-align: center;
- color: #990000;
- margin-left: 5mm;
- text-indent: 5mm;
- margin-top: 30px;
- margin-bottom: 20px;
- margin-right: 15mm;
- }
-WOK
- end
- end
- class HeadInformation
- include SiSU_Viz
- attr_reader :md,:rdf,:vz
- def initialize(md)
- @md=md
- # DublinCore 1 - title
- @vz=SiSU_Env::GetInit.instance.skin
- @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 || [])
- @index='index'
- @metalink='#metadata'
- @tocband_scroll,@tocband_segtoc=nil,nil
- end
- def doc_type_xhtml
-<<WOK
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-WOK
- end
-=begin
-~/epub
- |-- META-INF
- | `-- container.xml #✓ simple, make sure full-path of rootfile points to metadata.opf
- |-- content
- | |-- 1.xhtml
- | |-- 2.xhtml
- | |-- 3.xhtml
- | |-- ... .xhtml
- | |-- concordance.xhtml
- | |-- css
- | | `-- xhtml.css
- | |-- endnotes.xhtml
- | |-- image
- | | |-- arrow_next_red.png
- | | |-- arrow_prev_red.png
- | | |-- arrow_up_red.png
- | | `-- bullet_09.png
- | |-- index.xhtml
- | |-- meta.xhtml
- | |-- metadata.xhtml
- | `-- toc.xhtml
- |-- metadata.opf #(i) metadata dc; (ii) manifest (contents); (iii) spine (mimetypes)
- |-- mimetype #✓ application/epub+zip
- `-- toc.ncx #✓ (i) head (ii) doc title (iii) navmap, list of navigation points (like chapters)
-=end
- def doc_type
- doc_type_xhtml
- end
- def mimetype
- <<WOK
-application/epub+zip
-WOK
- end
- def metainf_container #container.xml file in META-INF directory
- #simple, make sure full-path of rootfile points to metadata.opf
- #epub_metadata.opf content.opf
- <<WOK
-<?xml version="1.0" encoding="UTF-8"?>
-<container version="1.0"
- xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
- <rootfiles>
- <rootfile full-path="#{Ep[:d_oebps]}/#{Ep[:f_opf]}"
- media-type="application/oebps-package+xml" />
- </rootfiles>
-</container>
-WOK
- end
- def sections(dob,name)
- filename="#{name}#{Sfx[:epub_xhtml]}"
- dir_epub_cont="#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}"
- segfilename="#{dir_epub_cont}/#{filename}"
- output_epub_cont_seg=File.new(segfilename,'w')
- output_epub_cont_seg << %{#{doc_type}
-<head>
- <title>
- #{dob.obj} -
- #{@md.html_title}
- </title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{@css.xhtml_epub}
-</head>
-#{@vz.color_body}
-<div class="content">
-<div class="substance">
- <label class="ocn"><a href="#o8" class="lnkocn">8</a></label>
- <h1 class="norm" id="o8">
- #{dob.obj}
- </h1>
-</div>
-</body>
-</html>}
-output_epub_cont_seg.close
- end
- def toc_ncx #list of navigation points (like chapters), table of contents, listing each navigation point (chapters and such) under the navigation map
- def structure
- open
- head_open
- head
- head_close
- doc_title
- doc_author
- navmap_open
- #navmap ...
- navmap_close
- close
- end
- def open
- <<WOK
-<?xml version="1.0"?>
-<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
- "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
-<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
-WOK
- end
- def close
- <<WOK
-</ncx>
-WOK
- end
- def head_open
- <<WOK
- <head>
-WOK
- end
- def head
- depth=@md.lvs[1] + @md.lvs[2] + @md.lvs[3] + @md.lvs[4]
- <<WOK
- <!-- four required metadata items (for all NCX documents,
- (including the relaxed constraints of OPS 2.0) -->
- <title>#{@md.title.full} by #{@md.author}</title>
- <link href="css/xhtml.css" rel="stylesheet" type="text/css" id="main-css" />
- <meta name="dtb:uid" content="urn:uuid:#{@md.dgst[1]}" />
- <!-- <meta name="epub-creator" content="#{@md.publisher}" /> -->
- <meta name="dtb:depth" content="#{depth}" />
- <meta name="dtb:totalPageCount" content="0" />
- <meta name="dtb:maxPageNumber" content="0" />
-WOK
- end
- def head_close
- <<WOK
- </head>
-WOK
- end
- def doc_title
- <<WOK
- <docTitle>
- <text>#{@md.title.full}</text>
- </docTitle>
-WOK
- end
- def doc_author
- <<WOK
- <docAuthor>
- <text>#{@md.author}</text>
- </docAuthor>
-WOK
- end
- def navmap_open
- <<WOK
- <navMap>
-WOK
- end
- def navmap_sisu_toc(no)
- id_u=DISABLE[:epub][:ncx_navpoint_unique_id] \
- ? ''
- : "-#{no}"
- <<WOK
- <navPoint id="navpoint#{id_u}" playOrder="#{no}">
- <navLabel>
- <text>Table of Contents</text>
- </navLabel>
- <content src="index#{Sfx[:epub_xhtml]}" />
- </navPoint>
-WOK
- end
- def navpoint(dob,no,name=nil)
- name=name ? name : dob.name
- id_u=DISABLE[:epub][:ncx_navpoint_unique_id] \
- ? ''
- : "-#{no}"
- <<WOK
- <navPoint id="navpoint#{id_u}" playOrder="#{no}">
- <navLabel>
- <text>#{dob.obj}</text>
- </navLabel>
- <content src="#{name}#{Sfx[:epub_xhtml]}" />
-WOK
- end
- def navpoint_close
- <<WOK
- </navPoint>
-WOK
- end
- def navmap_close
- <<WOK
- </navMap>
-WOK
- end
- self
- end
- def metadata_opf #(i) metadata dc; (ii) manifest (contents); (iii) spine (mimetypes)
- def structure
- package_open
- metadata_open
- metadata_close
- manifest_open
- manifest_close
- spine_open
- spine_close
- guide_open
- guide_close
- package_close
- end
- def package_open
- <<WOK
-<?xml version="1.0" encoding="UTF-8"?>
-<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="EPB-UUID" version="2.0">
-WOK
- end
- def package_close
- <<WOK
-</package>
-WOK
- end
- def metadata #metadata dc
- author=if defined? @md.creator.author \
- and @md.creator.author =~/\S+/
- m=''
- @md.creator.author_detail.each do |x|
- surname=x[:the] \
- ? x[:the]
- : ''
- other_names=x[:others] \
- ? ', ' + x[:others]
- : ''
- m=(m.empty?) \
- ? (surname + other_names)
- : (m + '; ' + surname + ', ' + other_names)
- m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,';')
- end
- x=@md.creator.author.dup
- x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- %{\n <dc:creator opf:file-as="#{m}" opf:role="aut">#{x}</dc:creator>}
- else ''
- end
- editor=if defined? @md.creator.editor \
- and @md.creator.editor =~/\S+/
- m=''
- @md.creator.editor_detail.each do |x|
- surname=x[:the] \
- ? x[:the]
- : ''
- other_names=x[:others] \
- ? ', ' + x[:others]
- : ''
- m=(m.empty?) \
- ? (surname + other_names)
- : (m + '; ' + surname + ', ' + other_names)
- m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,';')
- end
- x=@md.creator.editor.dup
- x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- %{\n <dc:creator opf:file-as="#{m}" opf:role="edt">#{x}</dc:creator>}
- else ''
- end
- translator=if defined? @md.creator.translator \
- and @md.creator.translator =~/\S+/
- m=''
- @md.creator.translator_detail.each do |x|
- surname=x[:the] \
- ? x[:the]
- : ''
- other_names=x[:others] \
- ? ', ' + x[:others]
- : ''
- m=(m.empty?) \
- ? (surname + other_names)
- : (m + '; ' + surname + ', ' + other_names)
- m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,';')
- end
- x=@md.creator.translator.dup
- x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- %{\n <dc:creator opf:file-as="#{m}" opf:role="trl">#{x}</dc:creator>}
- else ''
- end
- illustrator=if defined? @md.creator.illustrator \
- and @md.creator.illustrator =~/\S+/
- m=''
- @md.creator.illustrator_detail.each do |x|
- surname=x[:the] \
- ? x[:the]
- : ''
- other_names=x[:others] \
- ? ', ' + x[:others]
- : ''
- m=(m.empty?) \
- ? (surname + other_names)
- : (m + '; ' + surname + ', ' + other_names)
- m=m.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,';')
- end
- x=@md.creator.illustrator.dup
- x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- %{\n <dc:creator opf:file-as="#{m}" opf:role="ill">#{x}</dc:creator>}
- else ''
- end
- date_published=if defined? @md.date.published \
- and @md.date.published =~/\S+/
- x=@md.date.published.dup
- x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- %{\n <dc:date opf:event="published">#{x}</dc:date>}
- else ''
- end
- subject=if defined? @md.classify.subject \
- and @md.classify.subject =~/\S+/
- x=@md.classify.subject.dup
- x=x.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- %{\n <dc:subject>#{x}</dc:subject>}
- else ''
- end
- language=if defined? @md.opt.lng \
- and @md.opt.lng =~/\S+/
- language=@md.opt.lng.gsub(/<br>/,'<br />')
- %{\n <dc:language>#{language}</dc:language>}
- else ''
- end
- rights=if defined? @md.rights.all \
- and @md.rights.all =~/\S+/
- rights=@md.rights.all.gsub(/<br>/,'<br />')
- %{\n <dc:rights>#{rights}</dc:rights>}
- else ''
- end
- f=SiSU_Env::FileOp.new(@md)
- <<WOK
- <metadata xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:opf="http://www.idpf.org/2007/opf"
- unique-identifier="urn:uuid:#{@md.dgst[1]}" version="2.0">
- <dc:title>#{@md.title.full}</dc:title>
- #{author}#{editor}#{translator}#{illustrator}#{language}#{date_published}#{subject}#{rights}
- <dc:identifier opf:scheme="URI">#{f.output_path.epub.url}/#{f.base_filename.epub}</dc:identifier>
- <dc:identifier id="bookid">urn:uuid:#{@md.dgst[1]}</dc:identifier>
- <!-- <dc:identifier id="EPB-UUID">urn:uuid:#{@md.dgst[1]}</dc:identifier> -->
- </metadata>
-WOK
- end
- def manifest_open
- <<WOK
- <manifest>
- <!-- NCX -->
- <item id="ncx" href="#{Ep[:f_ncx]}" media-type="application/x-dtbncx+xml" />
- <!-- CSS Style Sheets -->
- <item id="main-css" href="css/xhtml.css" media-type="text/css" />
- <!-- Content Documents -->
-WOK
- end
- def manifest_content_sisu_toc
- <<WOK
- <item id="index" href="index.xhtml" media-type="application/xhtml+xml" />
-WOK
- end
- def manifest_content(dob,name=nil)
- name=name ? name : dob.name
- <<WOK
- <item id="#{name}" href="#{name}#{Sfx[:epub_xhtml]}" media-type="application/xhtml+xml" />
-WOK
- end
- def manifest_images(imgs)
- imgs=imgs + ['arrow_next_red.png','arrow_prev_red.png','arrow_up_red.png','bullet_09.png']
- images=[" <!-- Images -->\n"]
- imgs.each do |i|
- image,type=/(\S+?)\.(png|jpg|gif)/.match(i)[1,2]
- images<<<<WOK
- <item id="#{image}" href="image/#{image}.#{type}" media-type="image/#{type}" />
-WOK
- end
- images=images.join('')
- images
- end
- def manifest_close
- <<WOK
- </manifest>
-WOK
- end
- def spine_open
- #spine: reading order of XHTML files from manifest, idref attribute refers back to id in manifest (exclude images, CSS etc.).
- <<WOK
- <spine toc="ncx">
-WOK
- end
- def spine_sisu_toc
- <<WOK
- <itemref idref="index" linear="yes" />
-WOK
- end
- def spine(dob,name=nil)
- name=name ? name : dob.name
- <<WOK
- <itemref idref="#{name}" linear="yes" />
-WOK
- end
- def spine_close
- <<WOK
- </spine>
-WOK
- end
- def guide_open
- #guide: presentation order of XHTML files by reader).
- <<WOK
- <guide>
-WOK
- end
- def guide_sisu_toc
- <<WOK
- <reference type="index" href="index#{Sfx[:epub_xhtml]}" />
-WOK
- end
- def guide(dob,name=nil)
- name=name ? name : dob.name
- <<WOK
- <reference type="text" href="#{name}#{Sfx[:epub_xhtml]}" />
-WOK
- end
- def guide_close
- <<WOK
- </guide>
-WOK
- end
- self
- end
- def toc_head_escript
- end
- def seg_head_escript
- end
- def table_close
- %{ </font>
-#{@vz.table_close}}
- end
- def buttons_home
- %{<!- home and index buttons -!>
- #{@vz.banner_home_and_index_buttons}
-<!- home and index buttons -!>}
- end
- def copyat
- %{<p class="tiny">copy @
- <a href="#{@vz.url_home}" #{@vz.js_home}>
- #{@vz.txt_home}
- </a></p>}
- end
- def xhtml_close
- %{#{@vz.credits_sisu_epub}
- </body>
-</html>}
- end
- end
- class HeadToc < HeadInformation
- def initialize(md)
- super(md)
- @md=md
- @tocband_segtoc=make_seg
- end
- def seg_head_navigation_band
- firstseg=%{<a href="#{@md.firstseg}#{Sfx[:epub_xhtml]}" target="_top">
- #{@vz.epub_png_nav_nxt}
- </a>} if @md.firstseg =~/\S+/
- DISABLE[:epub][:internal_navigation] \
- ? ''
- : %{<p class="align_right">#{firstseg}</p>}
- end
- def seg_head_navigation_band_bottom
- firstseg=%{<a href="#{@md.firstseg}#{Sfx[:epub_xhtml]}" target="_top">
- #{@vz.epub_png_nav_nxt}
- </a>} if @md.firstseg =~/\S+/
- DISABLE[:epub][:internal_navigation] \
- ? ''
- : %{<p class="align_right">#{firstseg}</p>}
- end
- def manifest_link(text)
- %{ <a href="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}" target="_top" #{@vz.js_manifest}>#{text}</a>}
- end
- def concordance_link(text)
- if @md.concord_make
- %{<a href="#{@md.file.base_filename.html_concordance}" target="_top" #{@vz.js_concordance}>
- #{text}
- </a>}
- else ''
- end
- end
- def head
- %{#{doc_type}
-<head>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{@css.xhtml_epub}
-</head>
-#{@vz.color_body}
-#{@vz.js_top}}
- end
- def concordance
- if @md.concord_make
- %{#{@vz.margin_css}
- <h4 class="toc">
- <a href="./#{@md.file.base_filename.html_concordance}" #{@vz.js_concordance}>
- <i>Concordance</i>
- </a>
- </h4>
-#{@vz.table_close}}
- else
- %{#{@vz.margin_css}
-#{@vz.table_close}}
- end
- end
- def links_guide_open(type='horizontal')
- if type=='vertical'; links_guide_vertical_open
- else links_guide_horizontal_open
- end
- end
- def prefix_a
- end
- def rights
- def all
- rghts=@md.rights.all.gsub(/<br>/,'<br />')
- rghts=rghts.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>&copy;</sup>&nbsp;')
- %{<p class="small_left">Rights: #{rghts}</p>}
- end
- self
- end
- def prefix_b
- %{<p class="small_left">Prefix: #{@md.prefix_b}}
- end
- def make_seg
- concord=concordance_link(@vz.nav_txt_concordance)
- %{<table summary="toc segment" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="center" bgcolor="white">
- #{@vz.nav_txt_toc_link}
-</td>
-<td align="center" bgcolor="white">
- <font size=2>
- #{concord}
-#{@vz.table_close}}
- end
- def manifest #check structure
- manifest=manifest_link(@vz.nav_txt_manifest)
- %{#{@vz.margin_txt_3}
- #{@vz.paragraph_font_small}
- #{manifest}
- </font>
-#{@vz.table_close}}
- end
- def concordance #check structure
- concord=concordance_link(@vz.nav_txt_concordance)
- %{#{@vz.margin_txt_3}
- #{@vz.paragraph_font_small}
- #{concord}
- </font>
-#{@vz.table_close}}
- end
- def metadata
- %{#{@vz.margin_css}
- <h4 class="toc">
- <a href="#{@metalink}" #{@vz.js_metalink}>
- <i>MetaData</i>
- </a>
- </h4>
-#{@vz.table_close}}
- end
- end
- class HeadSeg < HeadInformation
- def initialize(md)
- super(md)
- end
- def head
- %{#{doc_type}
-<head>
- <title>
- #{@seg_name_xhtml[@seg_name_xhtml_tracker]} -
- #{@md.html_title}
- </title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{@css.xhtml_epub}
-</head>
-#{@vz.color_body}}
- end
- def endnote_mark
-%{
- <hr class="endnote" />
-}
- end
- end
- class HeadScroll < HeadToc
- def initialize(md)
- super(md)
- end
- def toc_owner_details
- %{#{@vz.margin_txt_3}
-#{@vz.paragraph_font_small}
- <a href="#owner.details">
- Owner Details
- <font size="1" color="#777777">
- &nbsp;&nbsp;&nbsp;
- </font>
- </a>
- </font>
-#{@vz.table_close}}
- end
- end
- class FormatTextObject
- @vz=SiSU_Env::GetInit.instance.skin
- attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- if t_o.class==Hash
- @txt =t_o[:txt] || nil
- @ocn =t_o[:ocn] || nil
- @ocn_display =t_o[:ocn_display] || nil
- @headname =t_o[:headname] || nil
- @trailer =t_o[:trailer] || nil
- @endnote_part_a =t_o[:endnote_part_a] || nil
- @endnote_part_b =t_o[:endnote_part_b] || nil
- @lnk_url =t_o[:lnk_url] || nil
- @lnk_txt =t_o[:lnk_txt] || nil
- @format =t_o[:format] || nil
- @target =t_o[:target] || nil #occasionally passed but not used
- if @format and not @format.empty?
- if @format=~/^\d:(\S+)/ #need more reliable marker #if @format =~ /#{Rx[:lv]}/
- headname=$1 #format[/\d~(\S+)/m,1]
- @headname=if headname =~/^[a-zA-Z]/; %{<id="#{headname}">} #consider: h_#{headname}
- else %{<id="h#{headname}"></a>}
- end
- @headname=if headname =~/^[a-zA-Z]/; %{<a name="#{headname}" id="#{headname}"></a>} #consider: h_#{headname}
- else %{<a name="h#{headname}" id="h#{headname}"></a>}
- end
- end
- end
- elsif t_o.class.inspect =~/Object/
- @dob=t_o if defined? t_o.is
- @named=nametags_seg(@dob)
- @txt=((defined? t_o.obj) ? t_o.obj : nil)
- @ocn=((defined? t_o.ocn) ? t_o.ocn.to_s : nil)
- @headname=((t_o.is==:heading and defined? t_o.name) ? t_o.name : nil)
- else
- if @md.opt.cmd =~/M/
- p __FILE__ +':'+ __LINE__.to_s
- p t_o.class
- p caller
- end
- end
- if @txt and not @txt.empty?
- @txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
- end
- @p_num=ParagraphNumber.new(@md,@ocn)
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def nametags_seg(dob) #FIX
- tags=''
- if defined? dob.tags \
- and dob.tags.length > 0 # insert tags "hypertargets"
- dob.tags.each do |t|
- tags=tags +%{<a name="#{t}" />}
- end
- end
- tags
- end
- def endnote_body
- %{
-<p class="endnote">
- #{@txt}
-</p>
-}
- end
- def endnote_body_indent
- %{
- <p class="endnote_indent">
- #{@txt}
- </p>
-}
- end
- def no_paranum
- %{
-<div class="substance">
- <label class="ocn">&nbsp;</label>
- <p class="norm">
- #{@txt}
- </p>
-</div>
-}
- end
- def para_form_css(tag,attrib,txt) # regular paragraphs shaped here
- ul=ulc=''
- ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- #{ul}<#{tag} class="#{attrib}" #{@p_num.id}>
- #{@named}#{txt}
- </#{tag}>#{ulc}
-</div>
-}
- end
- def para
- para_form_css('p','norm',@txt)
- end
- def group
- para_form_css('p','group',@txt)
- end
- def block
- para_form_css('p','block',@txt)
- end
- def alt
- para_form_css('p','alt',@txt)
- end
- def verse
- para_form_css('p','verse',@txt)
- end
- def code
- para_form_css('p','code',@txt)
- end
- def center
- para_form_css('p','center',@txt)
- end
- def bold
- para_form_css('p','bold',@txt)
- end
- def bullet
- para_form_css('li','bullet',@txt)
- end
- def table
- @txt=if @t_o.obj !~/^<table\s/
- table=SiSU_XHTML_Shared::TableXHTML.new(@t_o) #move, make happen earlier
- table.table.obj
- else @txt
- end
- para_form_css('p','norm',@txt)
- end
- def break
- @txt=@txt.gsub(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />').
- gsub(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />')
- para_form_css('p','norm',@txt)
- end
- def format(tag,attrib)
- para_form_css(tag,attrib,@txt)
- end
- def title_heading(tag,attrib)
- %{
-<div class="content">
-<#{tag} class="#{attrib}">
- #{@named}#{@txt}
- </#{tag}>
-</div>
-}
- end
- def title_heading1
- id_u=DISABLE[:epub][:per_section_title] \
- ? ''
- : title_heading('h1','tiny')
- end
- def title_heading2
- id_u=DISABLE[:epub][:per_section_title] \
- ? ''
- : title_heading('h2','tiny')
- end
- def title_heading3
- id_u=DISABLE[:epub][:per_section_title] \
- ? ''
- : title_heading('h3','tiny')
- end
- def title_heading4
- ''
- end
- def seg_heading_sub(tag,attrib,txt)
- txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name}
- #{@named}#{@txt}
- </#{tag}>
-</div>
-}
- end
- def seg_heading4
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <h1 class="norm" #{@p_num.id}>
- #{@txt}
- </h1>
-</div>
-}
- end
- def seg_heading5
- seg_heading_sub('p','bold',@txt)
- end
- def seg_heading6
- seg_heading_sub('p','bold',@txt)
- end
- def dl #check :trailer
- "<dl><b>#{@txt}</b> #{@trailer}</dl>"
- end
- def table_css_end
- '</table>
- </p>
- </div>'
- end
- def gsub_body #unused
- @txt=case @txt
- when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\((i+|iv|v|vi+|ix|x|xi+)\)/
- @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>').
- gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>')
- when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\(?(\d|[a-z])+\)/
- @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>').
- gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>')
- when /^\s*\d{1,3}\.\s/
- @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>')
- when /^\s*[A-Z]\.\s/
- @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>')
- else @txt
- end
- end
- def bold_para
- %{#{@vz.margin_txt_0}
- <p class="bold">
- #{@txt}
- </p>
-#{@vz.margin_num_css}
- &nbsp;&nbsp;&nbsp;
-#{@vz.table_close}}
- end
- def bold_heading #unused
- @txt=@txt.gsub(/[1-9]~\S+/,'').
- gsub(/[1-9]~/,'')
- %{<p class="bold">
- #{@txt}
- </p>
-#{@vz.margin_num_css}
- &nbsp;&nbsp;&nbsp;
-#{@vz.table_close}}
- end
- def toc_head_copy_at
- %{<p class="center">#{@txt}</p>\n}
- end
- def center
- %{<p class="center">#{@txt}</p>\n}
- end
- def bold
- %{<p class="bold">#{@txt}</p>\n}
- end
- def center_bold
- %{<p class="centerbold">#{@txt}</p>\n}
- end
- end
- class FormatScroll < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- @vz=SiSU_Env::GetInit.instance.skin
- end
- end
- class FormatSeg < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- end
- def endnote_seg_body(fn='') #FIX #url construction keep within single line... BUG WATCH 200408
- fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info
- %{
- <p class="endnote">
- #{@endnote_part_a}#{fn}#{Sfx[:epub_xhtml]}#{@endnote_part_b}
- </p>
-}
- end
- def clean(txt)
- txt=txt.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,'').
- gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
- end
- def subtoc_lev(tag,attrib)
- @txt=clean(@txt)
- txt=if @txt \
- and @txt =~/<\/?i>|<a\s+name="\S+?">/mi
- @txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text
- else @txt
- end
- note=''
- if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
- note=$1
- note=note.gsub(/[\n\s]+/m,' ')
- txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
- gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">&nbsp;<sup id="note\d+">\d+<\/sup>&nbsp;/m,'').
- gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{Mx[:nbsp]}<sup id="note\d+">\d+<\/sup>#{Mx[:nbsp]}/m,'') #remove
- end
- %{<#{tag} class="#{attrib}">
- <a href="#o#{@ocn}"><i>#{txt}</i></a> #{note}
- </#{tag}>}
- end
- def subtoc_lev5
- subtoc_lev('h5','subtoc') if @txt
- end
- def subtoc_lev6
- subtoc_lev('h6','subtoc') if @txt
- end
- def heading_sub(tag,attrib,txt)
- txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <#{tag} class="#{attrib}" #{@p_num.id}> #{@headname}
- #{@txt}
- </#{tag}>
-</div>
-}
- end
- def heading4
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <h1 class="norm" #{@p_num.id}>
- #{@t_o[:format]}
- #{@txt}
- </h1>
-</div>
-}
- end
- def heading5
- heading_sub('p','bold',@txt)
- end
- def heading6
- heading_sub('p','bold',@txt)
- end
- def navigation_heading4
- %{<table summary="navigation segment heading 4" width=100% bgcolor="#08163f" border="0">
-<tr><td align="center">
-<p class="bold">
- #{@txt}
-</p>
-#{@vz.table_close}}
- end
- def navigation_heading5
- %{<p class="bold">
- #{@txt}
-</p>}
- end
- def navigation_heading6
- %{<p class="bold">
- #{@txt}
-</p>}
- end
- def navigation_center
- %{<p class="centerbold">#{@txt}</p>}
- end
- end
- class FormatToc < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- end
- def links_guide
- %{ <li class="doc">
- <a href="#{@lnk_url}" target="_top">
- #{@lnk_txt}
- </a>
- </li>
-}
- end
- def lev(tag,attrib)
- if @txt
- %{<#{tag} class="#{attrib}">
- #{@txt}
- </#{tag}>
-}
- else ''
- end
- end
- def lev1
- lev('h1','toc')
- end
- def lev2
- lev('h2','toc')
- end
- def lev3
- lev('h3','toc')
- end
- def lev4
- lev('h4','toc')
- end
- def lev5
- lev('h5','toc')
- end
- def lev6
- lev('h6','toc')
- end
- def lev0 #docinfo
- lev('h0','toc')
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/epub_segments.rb b/lib/sisu/v3dv/epub_segments.rb
deleted file mode 100644
index 262fde3c..00000000
--- a/lib/sisu/v3dv/epub_segments.rb
+++ /dev/null
@@ -1,532 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: epub segment generation, processing
-
-=end
-module SiSU_EPUB_Seg
- require_relative 'shared_xhtml' # shared_xhtml.rb
- require_relative 'epub' # epub.rb
- require_relative 'shared_metadata' # shared_metadata.rb
- class Output
- def initialize(md,outputfile,seg,type='')
- @md,@output_epub_cont_seg,@seg,@type=md,outputfile,seg,type
- end
- def output #CONSIDER
- if @seg[:title] =~/\S/
- filename_seg=[]
- filename_seg << @seg[:title] << @seg[:nav]
- if @type=='endnotes'
- @seg[:headings]=[] #watch
- txt_obj={ txt: 'Endnotes', ocn_display: ''}
- format_seg=SiSU_EPUB_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)
- @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)
- @seg[:headings] << format_seg.title_heading1
- filename_seg << @seg[:heading_idx] << @seg[:headings] << %{\n<div class="content">\n} << metadata << '</div>'
- elsif @type=='sisu_manifest'
- env=SiSU_Env::InfoEnv.new(@md.fns)
- path_and_name,url_and_name="#{env.path.output}/#{@md.fnb}/sisu_manifest.html","#{env.url.root}/#{@md.fnb}/sisu_manifest.html"
- manifest=if FileTest.file?("#{path_and_name}")==true
- <<WOK
-<p>A list of available output types may be available at the following url:</p>
-<p><a href="#{url_and_name}">#{url_and_name}</a></p>
-WOK
- else ''
- end
- @seg[:headings]=[]
- txt_obj={ txt: 'Manifest', ocn_display: ''}
- format_seg=SiSU_EPUB_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
- filename_seg << @seg[:headings] << @seg[:main] << "\n</div>\n"
- end
- filename_seg << @seg[:tail] << @seg[:nav] << @seg[:close]
- filename_seg=filename_seg.flatten.compact #watch
- filename_seg.each do |str|
- unless str =~/\A\s*\Z/
- @output_epub_cont_seg << str.strip
- end
- end
- @output_epub_cont_seg.close
- end
- end
- end
- class Seg
- @@seg,@@seg_subtoc,@@seg_endnotes,@@seg_ad={},{},{},{}
- @@seg_name,@@seg_name_xhtml=[],[]
- @@seg_url=@@fn=@@get_hash_to=@@get_hash_fn=''
- @@loop_count=@@seg_total=@@tracker=0
- @@is4=@@is3=@@is2=@@is1=0
- @@heading1=@@heading2=@@heading3=@@heading4=0
- @@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(7){[]}
- @@seg[:heading_endnotes]=''
- @@tablehead,@@number_of_cols=0,0
- @@fns_previous=''
- attr_reader :seg_name_xhtml,:seg_name_xhtml_tracker
- def initialize(md='',data='')
- @md,@data=md,data
- @vz=SiSU_Env::GetInit.instance.skin
- @seg_name_xhtml=@@seg_name_xhtml || nil
- @seg_name_xhtml_tracker=@@tracker || nil
- @make=SiSU_Env::ProcessingSettings.new(@md) if @md
- end
- def songsheet
- begin
- data=get_subtoc_endnotes(@data)
- data=articles(data)
- SiSU_EPUB_Seg::Seg.new.cleanup # (((( added ))))
- #### (((( END )))) ####
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- @@seg_name=[]
- end
- end
- protected
- def articles(data)
- track,tracking,newfile=0,0,0
- @@is4=@@is3=@@is2=@@is1=0
- printed_endnote_seg='n'
- idx_xhtml=nil
- if @md.book_idx
- idx_xhtml=SiSU_Particulars::CombinedSingleton.instance.get_idx_xhtml(@md).xhtml_idx
- idx_xhtml.each {|x| @@seg[:idx] << x }
- @@seg[:heading_idx]=''
- end
- data.each do |dob|
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==4
- @@seg_name << dob.name
- seg_name=dob.name
- end
- end
- @@seg_name_xhtml=@@seg_name
- @@seg_total=@@seg_name.length
- testforartnum=@@seg_name_xhtml
- SiSU_Screen::Ansi.new(@md.opt.cmd,@@seg_name.length) if @md.opt.cmd =~/[MVv]/
- map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
- data.each do |dob|
- #if defined? dob.obj \
- #and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/
- # ##Consider: remove, reinstate earlier?
- # #while dob.obj =~/href="#{Xx[:segment]}#+(\S+?)"/
- # # m=$1
- # # if map_nametags[m][:segname]
- # # dob.obj=dob.obj.sub(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#{map_nametags[m][:segname]}#{Sfx[:html]}#\\1"})
- # # else
- # # p "NOT FOUND name_tags: #{m}"
- # # dob.obj=dob.obj.sub(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#\\1"}) # not satisfactory
- # # end
- # #end
- #end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==4
- if dob.ocn==0
- @@heading4=dob.obj
- else @@heading4=dob.obj
- end
- @@is4=newfile=1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==3
- @@heading3=dob.obj
- @@is4,@@is3=0,1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==2
- @@heading2=dob.obj
- @@is4,@@is3,@@is2=0,0,1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==1
- @@heading1=dob.obj
- @@is4,@@is3,@@is2,@@is1=0,0,0,1
- end
- if (@@is1 && !@@is2 && !@@is3 && !@@is4)
- if not (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==1
- head1=$_ #; check
- end
- end
- if @@is4==1
- dir_epub_cont="#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}"
- if newfile==1 \
- or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/
- newfile=0
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==4
- if tracking != 0
- SiSU_EPUB_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
- 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
- elsif @@seg_name_xhtml[tracking-1]=='book_index'
- SiSU_EPUB_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
- else puts "#{__FILE__}::#{__LINE__}"
- end
- else puts "#{__FILE__}::#{__LINE__}"
- end
- SiSU_EPUB_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
- end
- #@output_epub_cont_seg.close #%(((( EOF )))) -->
- end
- if tracking==0
- heading_art(dob)
- head(dob)
- end
- end
- tracking=tracking+1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==4 \
- and dob.name
- @@get_hash_to=dob.name
- @@get_hash_fn=dob.name
- end
- if dob.obj.class==String
- markup(dob)
- elsif dob.obj.class==Array
- dob.obj.each do |pg|
- markup(pg)
- end
- end
- if testforartnum[tracking-1] =~/endnote/
- if printed_endnote_seg=='n'
- printed_endnote_seg='y'
- end
- end
- end
- end
- data
- end
- def heading_art(dob)
- @@seg[:title]=SiSU_EPUB_Format::HeadSeg.new(@md).head
- end
- def head(dob)
- clean=/<!.*?!>|<:.*?>$/
- @p_num ||= ''
- if @@is1==1
- if defined? @md.creator.author \
- and @md.creator.author
- @author=%{<b>#{@md.creator.author}</b>\n}
- end
- ocn=if @@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_EPUB_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)
- @@seg[:headings] << format_seg.title_heading1.gsub(clean,'')
- @@heading1=@@heading1.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
- end
- if @@is2==1
- heading2=@@heading2
- ocn=if heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_EPUB_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)
- @@seg[:headings] << format_seg.title_heading2.gsub(clean,'')
- @@heading2=@@heading2.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
- end
- if @@is3==1
- heading3=@@heading3
- ocn=if heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_EPUB_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)
- @@seg[:headings] << format_seg.title_heading3.gsub(clean,'')
- @@heading3=@@heading3.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
- end
- if @@is4==1
- heading4=@@heading4
- ocn=if heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_EPUB_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)
- @@seg[:headings] << format_seg.title_heading4.gsub(clean,'')
- end
- @@tracker=@@tracker+1
- end
- def markup(dob)
- @debug=[]
- if dob.is ==:heading \
- || dob.is ==:heading_insert \
- || dob.is ==:para
- #extend as necessary FIX
- @p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,dob.ocn)
- end
- sto=SiSU_EPUB_Format::FormatTextObject.new(@md,dob)
- dob_xhtml=if dob.is==:heading \
- || dob.is==:heading_insert \
- || dob.is==:para
- dob_xhtml=if dob.is==:heading \
- or dob.is==:heading_insert
- if dob.ln==4
- sto.seg_heading4 # work on see SplitTextObject
- elsif dob.ln==5
- sto.seg_heading5
- elsif dob.ln==6; sto.seg_heading6
- end
- elsif dob.is==:para
- if dob.indent \
- and dob.hang \
- and dob.indent =~/[0-9]/ \
- and dob.hang =~/[0-9]/
- if dob.bullet_
- (dob.indent =~/[1-9]/) \
- ? sto.format('li',"i#{dob.indent}")
- : sto.format('li','bullet')
- elsif dob.indent == dob.hang
- sto.format('p',"i#{dob.indent}")
- elsif dob.indent != dob.hang
- sto.format('p',"h#{dob.hang}i#{dob.indent}")
- else sto.para
- end
- else sto.para
- end
- end
- elsif dob.is ==:block \
- || dob.is ==:group \
- || dob.is ==:alt
- sto.para #fix this should be block type specific #FIX
- elsif dob.is==:verse
- sto.verse
- elsif dob.is==:code
- sto.code
- elsif dob.is==:table
- sto.table
- elsif dob.is==:break
- sto.break
- end
- if @md.flag_separate_endnotes # may need to revisit, check
- dob.obj=dob.obj.gsub(/"\s+href="#note_ref(\d+)">/,%{" href=\"endnotes#{Sfx[:epub_xhtml]}#note_ref\\1">}) #endnote- twice #removed file type
- end
- if (dob.is ==:heading \
- || 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)
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert \
- || dob.is==:para) \
- and dob.note_ #dob.obj =~/<a href="#note_ref\d+">&nbsp;<sup id=/ #endnote- note-
- format_seg=SiSU_EPUB_Format::FormatSeg.new(@md,dob)
- dob.obj=format_seg.no_paranum
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==4
- @@seg[:main] << %{\n<div class="content">\n}
- @@seg[:main] << dob_xhtml
- if @make.build.segsubtoc?
- @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc
- end
- else
- @@seg[:main] << dob_xhtml
- end
- end
- def tail
- format_head_seg=SiSU_EPUB_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}
- if @@seg_endnotes[@@get_hash_fn].flatten.length > 0
- @@seg[:tail] << format_head_seg.endnote_mark
- @@seg[:tail] << @@seg_endnotes[@@get_hash_fn].flatten #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES|
- end
- @@seg[:tail] << '</div>'
- @@seg[:tail] << '</div>' #this div closes div class content
- end
- @@seg[:close]=[]
- @@seg[:close] << format_head_seg.xhtml_close
- end
- def reinitialise
- @@seg[:headings],@@seg[:main],@@seg[:tail],@@seg[:credits]=Array.new(4){[]}
- end
- def cleanup
- reinitialise
- @@seg_total,@@tracker=0,0
- @@seg_endnotes,@@seg_subtoc={},{}
- @@seg_endnotes_array,@@seg_subtoc_array=[],[]
- @@seg[:endnote_all]=[]
- end
- def get_subtoc_endnotes(data) #get endnotes & sub-table of contents subtoc
- data.each do |dob|
- dob.obj=dob.obj.gsub(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
- if @md.flag_auto_endnotes
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln.to_s =~/^[1234]/ \
- and not @@fn.to_s.empty?
- @@seg_endnotes[@@fn]=[]
- @@seg_endnotes[@@fn] << @@seg_endnotes_array
- @@seg_endnotes_array=[] if dob.ln==4
- @@fns_previous=@md.fns if dob.ln==4 and dob.name =~/^meta/
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- and dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs
- @@seg_subtoc[@@fn]=@@seg_subtoc_array
- @@seg_subtoc_array=[]
- if dob.name \
- and dob.obj
- @@fn=dob.name
- else
- @@fn=(dob.name =~/\S+/) \
- ? dob.name
- : ''
- end
- end
- end
- if dob.is==:heading \
- and dob.ln.to_s =~/^[56]/
- case dob.ln
- when 5
- format_seg=SiSU_EPUB_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)
- subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc
- end
- @@seg_subtoc_array << subtoc
- end
- if @md.flag_auto_endnotes
- ast,pls='&#042;','&#043;'
- if dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(?:\d|#{ast}|#{pls})+ / \
- and dob.is !=:code # endnote-
- endnote_array=[]
- if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
- endnote_array << dob.obj.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m)
- end
- if dob.obj=~/#{Mx[:en_b_o]}#{ast}\d+\s.+?#{Mx[:en_b_c]}/m
- endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}#{ast}\d+\s.+?#{Mx[:en_b_c]}/m)
- end
- if dob.obj=~/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m
- endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m)
- end
- endnote_array=endnote_array.flatten #.compact #check compacting
- endnote_array.each do |note|
- note_match=note.dup
- note_match_seg=note.dup
- e_n=note_match_seg[/(?:#{Mx[:en_a_o]}(?:\d|#{ast}|#{pls})+|#{Mx[:en_b_o]}(?:#{ast}|#{pls})\d+)\s+(.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,1]
- try=e_n.split(/<br \/>/)
- try.each do |e|
- txt_obj={ txt: e }
- format_seg=SiSU_EPUB_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
- end
- @@seg_endnotes_array << note_match
- end
- try.join('<br \/>')
- #% creation of separate end segment/page of all endnotes referenced back to reference segment
- m=/(?:#{Mx[:en_a_o]}(?:\d|#{ast}|#{pls})+|#{Mx[:en_b_o]}(?:#{ast}|#{pls})\d+)\s+(.+?href=")(#note_ref(?:\d|_a|_b)+".+)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/mi
- 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)
- note_match_all_seg=format_seg.endnote_seg_body(@@fn) #BUG WATCH 200408
- @@seg[:endnote_all] << note_match_all_seg
- end
- dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/epub_tune.rb b/lib/sisu/v3dv/epub_tune.rb
deleted file mode 100644
index 34466926..00000000
--- a/lib/sisu/v3dv/epub_tune.rb
+++ /dev/null
@@ -1,407 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: epub generation, epub pre-processing
-
-=end
-require_relative 'param'
-module SiSU_EPUB_Tune
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- require_relative 'epub_format' # epub_format.rb #watch
- @@line_mode=''
- @@endnote_array=[]
- @@endnote_call_counter=1
- @@table_align='<table summary='' width="96%" border="0" bgcolor="white" cellpadding="0" col="3">
-<tr ...><td width="2%" align="right">
-&nbsp\;</td>
-<td width="94%" valign="top" align="justify">'
- @@table_align_close='</td>
-<td width="4%" align="right" valign="top">
-<font size="1" color="#777777">
-&nbsp;&nbsp;&nbsp;</font> </td></tr></table>'
- @@counter,@@column,@columns=0,0,0
- class Output
- def initialize(data,md)
- @data,@md=data,md
- @file=SiSU_Env::FileOp.new(@md)
- @cX=SiSU_Screen::Ansi.new(@md.opt.cmd).cX
- end
- def hard_output
- @filename_tune=@file.write_file_processing.html_tune
- data=[]
- @data.each {|x| x.obj.strip; data << x if not x.obj.empty?} #1.9 array?
- data.each do |dob|
- @filename_tune.puts dob, "\n" #check
- end
- end
- def marshal
- File.open(@file.marshal.html_tune,'w') {|f| Marshal.dump(@data.to_a,f)}
- end
- end
- class CleanXHTML
- def initialize(html='')
- @html=html
- end
- def clean
- html=@html
- str=if html.class==String
- html
- else html.obj
- end
- 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;').
- gsub(/\*/u,'&#042;'). # &#042;
- gsub(/\+/u,'&#043;'). # &#043;
- gsub(/¢/u,'&cent;'). # &#162;
- gsub(/£/u,'&pound;'). # &#163;
- gsub(/¥/u,'&yen;'). # &#165;
- gsub(/§/u,'&sect;'). # &#167;
- gsub(/©/u,'&copy;'). # &#169;
- gsub(/ª/u,'&ordf;'). # &#170;
- gsub(/«/u,'&laquo;'). # &#171;
- gsub(/®/u,'&reg;'). # &#174;
- gsub(/°/u,'&deg;'). # &#176;
- gsub(/±/u,'&plusmn;'). # &#177;
- gsub(/²/u,'&sup2;'). # &#178;
- gsub(/³/u,'&sup3;'). # &#179;
- gsub(/µ/u,'&micro;'). # &#181;
- gsub(/¶/u,'&para;'). # &#182;
- gsub(/¹/u,'&sup1;'). # &#185;
- gsub(/º/u,'&ordm;'). # &#186;
- gsub(/»/u,'&raquo;'). # &#187;
- gsub(/¼/u,'&frac14;'). # &#188;
- gsub(/½/u,'&frac12;'). # &#189;
- gsub(/¾/u,'&frac34;'). # &#190;
- gsub(/×/u,'&times;'). # &#215;
- gsub(/÷/u,'&divide;'). # &#247;
- gsub(/¿/u,'&iquest;'). # &#191;
- gsub(/À/u,'&Agrave;'). # &#192;
- gsub(/Á/u,'&Aacute;'). # &#193;
- gsub(/Â/u,'&Acirc;'). # &#194;
- gsub(/Ã/u,'&Atilde;'). # &#195;
- gsub(/Ä/u,'&Auml;'). # &#196;
- gsub(/Å/u,'&Aring;'). # &#197;
- gsub(/Æ/u,'&AElig;'). # &#198;
- gsub(/Ç/u,'&Ccedil;'). # &#199;
- gsub(/È/u,'&Egrave;'). # &#200;
- gsub(/É/u,'&Eacute;'). # &#201;
- gsub(/Ê/u,'&Ecirc;'). # &#202;
- gsub(/Ë/u,'&Euml;'). # &#203;
- gsub(/Ì/u,'&Igrave;'). # &#204;
- gsub(/Í/u,'&Iacute;'). # &#205;
- gsub(/Î/u,'&Icirc;'). # &#206;
- gsub(/Ï/u,'&Iuml;'). # &#207;
- gsub(/Ð/u,'&ETH;'). # &#208;
- gsub(/Ñ/u,'&Ntilde;'). # &#209;
- gsub(/Ò/u,'&Ograve;'). # &#210;
- gsub(/Ó/u,'&Oacute;'). # &#211;
- gsub(/Ô/u,'&Ocirc;'). # &#212;
- gsub(/Õ/u,'&Otilde;'). # &#213;
- gsub(/Ö/u,'&Ouml;'). # &#214;
- gsub(/Ø/u,'&Oslash;'). # &#216;
- gsub(/Ù/u,'&Ugrave;'). # &#217;
- gsub(/Ú/u,'&Uacute;'). # &#218;
- gsub(/Û/u,'&Ucirc;'). # &#219;
- gsub(/Ü/u,'&Uuml;'). # &#220;
- gsub(/Ý/u,'&Yacute;'). # &#221;
- gsub(/Þ/u,'&THORN;'). # &#222;
- gsub(/ß/u,'&szlig;'). # &#223;
- gsub(/à/u,'&agrave;'). # &#224;
- gsub(/á/u,'&aacute;'). # &#225;
- gsub(/â/u,'&acirc;'). # &#226;
- gsub(/ã/u,'&atilde;'). # &#227;
- gsub(/ä/u,'&auml;'). # &#228;
- gsub(/å/u,'&aring;'). # &#229;
- gsub(/æ/u,'&aelig;'). # &#230;
- gsub(/ç/u,'&ccedil;'). # &#231;
- gsub(/è/u,'&egrave;'). # &#232;
- gsub(/é/u,'&eacute;'). # &#233;
- gsub(/ê/u,'&ecirc;'). # &#234;
- gsub(/ë/u,'&euml;'). # &#235;
- gsub(/ì/u,'&igrave;'). # &#236;
- gsub(/í/u,'&iacute;'). # &#237;
- gsub(/î/u,'&icirc;'). # &#238;
- gsub(/ï/u,'&iuml;'). # &#239;
- gsub(/ð/u,'&eth;'). # &#240;
- gsub(/ñ/u,'&ntilde;'). # &#241;
- gsub(/ò/u,'&ograve;'). # &#242;
- gsub(/ó/u,'&oacute;'). # &#243;
- gsub(/ô/u,'&ocirc;'). # &#244;
- gsub(/õ/u,'&otilde;'). # &#245;
- gsub(/ö/u,'&ouml;'). # &#246;
- gsub(/ø/u,'&oslash;'). # &#248;
- gsub(/ù/u,'&ugrave;'). # &#250;
- gsub(/ú/u,'&uacute;'). # &#251;
- gsub(/û/u,'&ucirc;'). # &#252;
- gsub(/ü/u,'&uuml;'). # &#253;
- gsub(/þ/u,'&thorn;'). # &#254;
- gsub(/ÿ/u,'&yuml;'). # &#255;
- gsub(/ý/u,'&yacute;').
- gsub(/<br>/u,'<br />').
- gsub(/#{Mx[:nbsp]}/u,'&nbsp;')
- end
- end
- class Tune
- def initialize(data,md)
- @data,@md=data,md
- @vz=SiSU_Env::GetInit.instance.skin
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @sys=SiSU_Env::SystemCall.new
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- end
- def songsheet
- begin
- @cX=SiSU_Screen::Ansi.new(@md.opt.cmd).cX
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Tune').txt_grey if @md.opt.cmd =~/[MVv]/
- data=SiSU_EPUB_Tune::Tune.new(@data,@md).amp_html
- 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
- if @md.opt.cmd =~/M/ #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
- end
- tuned=SiSU_EPUB_Tune::Tune.new(@data,@md).output
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- def markup
- @tuned_file=[]
- @data.each do |dob|
- dob.obj=dob.obj.gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
- 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[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'').
- gsub(/^#{Mx[:gl_bullet]}/m,'●&nbsp;&nbsp;').
- gsub(/#{Mx[:nbsp]}/,'&nbsp;').
- gsub(/<(p|br)>/,'<\1 />')
- dob.obj=SiSU_EPUB_Tune::CleanXHTML.new(dob.obj).clean
- @tuned_file << dob
- end
- end
- def urls(data)
- @words=[]
- map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
- data.each do |word|
- @words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
- http_=true
- if word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/.match(word).captures
- elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
- http_=false
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]}/.match(word).captures
- elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image/
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(image)/.match(word).captures
- end
- case m
- when /\.png|\.jpg|\.gif|c=|\s\d+x\d+/
- w,h=/\s(\d+)x(\d+)/.match(m).captures if m =~/\s\d+x\d+/
- w=%{width="#{w}"} if w
- h=%{height="#{h}"} if h
- c=m[/"(.+?)"/m,1]
- caption=%{<br /><p class="caption">#{c}</p>} if c
- png=m.scan(/\S+/)[0]
- image_path=@md.file.output_path.epub.rel_image #image_path=@env.url.images_epub
- ins=if u \
- and u.strip !~/^image$/
- %{<a href="#{u}"><img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0" /></a>#{caption}}
- else %{<img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0" />#{caption}}
- end
- word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
- else
- link=m[/(.+)/m]
- png=m.scan(/\S+/)[0].strip
- link=link.strip
- u=u.sub(/^#*/,'') #make neater
- if map_nametags[u] \
- and map_nametags[u][:segname]
- u=unless http_
- u=if u=~/^\d+$/
- u.gsub(/^(\d+)$/,"#{map_nametags[u][:segname]}#{Sfx[:xhtml]}#o\\1") if u !~/\//
- else
- u.gsub(/(\S+)/,"#{map_nametags[u][:segname]}#{Sfx[:xhtml]}#\\1") if u !~/\//
- end
- else u
- end
- elsif u =~/^:/
- u=u.gsub(/^:/,"#{@env.url.root}/")
- elsif u =~/^\.\.\//
- u=u.gsub(/^\.\.\//,"#{@env.url.root}/")
- elsif u =~/https?:\/\//
- else p "NOT FOUND name_tags: #{u}"
- end
- ins=%{<a href="#{u}">#{link}</a>}
- word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins).
- gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
- end
- word
- else word
- end
- word
- end
- @words=@words.join(' ')
- end
- def url_markup
- data=@data
- @tuned_file=[]
- data.each do |dob|
- unless dob.is==:code
- if dob.obj =~/<::\s+/ #watch
- dob.obj=dob.obj.gsub(/<::\s+(\S+?)\s+!>/,
- %{<img src="#{@env.url.images_epub}/c_\\1.png" alt="\\1" width="14" height="14" align="bottom" border="0" />})
- end
- if dob.obj =~/<:image\s+/
- dob.obj=dob.obj.gsub(/<:image\s+(http\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+>/,
- %{<a href="\\1"><img src="#{@env.url.images_epub}/\\2" \\3 \\4 naturalsizeflag="0" align="bottom" border="0" /></a>}).
- gsub(/<:image\s+(http\S+)\s+(\S+)\s+>/,
- %{<a href="\\1"><img src="#{@env.url.images_epub}/\\2" naturalsizeflag="0" align="bottom" border="0" /></a>}).
- gsub(/<:image\s+(\S+)\s+(\S+)\s+(\S+)\s+>/,
- %{<img src="#{@env.url.images_epub}/\\1" \\2 \\3 naturalsizeflag="0" align="bottom" border="0" />}).
- gsub(/<:image\s+(\S+)\s+>/,
- %{<img src="#{@env.url.images_epub}/\\1" naturalsizeflag="0" align="bottom" border="0" />})
- end
- if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
- @word_mode=dob.obj.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)[()\[\]]*[,.;:!?'"]{0,2}|(?:#{Mx[:gl_o]}\S+?#{Mx[:gl_c]})+|[^#{Mx[:lnk_o]}#{Mx[:lnk_c]}]+/mu)
- words=urls(@word_mode)
- dob.obj=dob.obj.gsub(/.+/m,words)
- end
- dob.obj=dob.obj.gsub(/\\copyright/i,%{<sup>&copy;</sup>})
- dob.obj=if (dob.obj !~/\<:ad\s+\.\.\//)
- dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*!\>/,
- %{\n<center><a href="http:\/\/\\1" target="external"><img src="#{@env.url.images_epub}/\\2" alt="\\3" /></a></center>\n})
- else
- dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*\>/,
- %{\n<center><a href="\\1" target="_top"><img src="#{@env.url.images_epub}/\\2" alt="\\3" /></a></center>\n})
- end
- dob.obj=dob.obj.gsub(/!pick/,%{<img border="0" height="15" width="15" src="#{@env.url.images_epub}/#{@vz.icon_choice}" alt="stellar" />}).
- gsub(/!new/,%{&nbsp;<img border="0" height="15" width="15" src="#{@env.url.images_epub}/#{@vz.icon_new}" alt="new" />}).
- gsub(/<:h(.{1,7}?)>/,'<a href="#h\1">\1</a>').
- gsub(/<:to(\d{1,7}?)>/,'<a href="#to\1">to&nbsp;{&nbsp;\1&nbsp;}</a> ').
- gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</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}<a href="mailto:\\1">\\1</a>#{@brace_url.xml_close}}).
- gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
- if dob.obj =~/..\/\S+/ \
- and dob.obj !~/(\"..\/\S+?\"|>\s*..\/\S+<)/
- dob.obj=dob.obj.gsub(/(\.\.\/\S+)/,'<a href="\1">\1</a>')
- end
- dob.obj=dob.obj.gsub(/<a href="\.\.\//,%{<a href="#{@vz.url_site}/})
- else
- dob.obj=dob.obj.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
- end
- @tuned_file << dob
- end
- end
- def amp_html
- data,data_new=@data,[]
- data.each do |dob|
- dob.obj=dob.obj.gsub(/&/u,'&amp;')
- data_new << dob
- end
- data_new
- end
- def endnotes_html
- data=@data
- @tuned_file=[]
- a,s='_a','_s'
- ast,pls='&#042;','&#043;'
- data.each do |dob|
- unless dob.is ==:code
- dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note\\2">#{Mx[:nbsp]}<sup id="note_ref\\2">\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1\\2 <a href="#note_ref\\2">#{Mx[:nbsp]}<sup id="note\\2">\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
- gsub(/(#{Mx[:en_b_o]})[*](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_astx\\2">#{Mx[:nbsp]}<sup id="note_ref_astx\\2">#{ast}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast}\\2 <a href="#note_ref_astx\\2">#{Mx[:nbsp]}<sup id="note_astx\\2">#{ast}\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
- gsub(/(#{Mx[:en_b_o]})[+](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_plus\\2">#{Mx[:nbsp]}<sup id="note_ref_plus\\2">#{pls}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls}\\2 <a href="#note_ref_plus\\2">#{Mx[:nbsp]}<sup id="note_plus\\2">#{pls}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched) # double-check there may here be a bug
- if dob.obj =~/#{Mx[:en_a_o]}([*+]+)\s+.+?#{Mx[:en_a_c]}/
- m=$1.length.to_i
- dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]})[*]+\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{a*m}">#{Mx[:nbsp]}<sup id="note_ref#{a*m}">#{ast*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast*m} <a href="#note_ref#{a*m}">#{Mx[:nbsp]}<sup id="note#{a*m}">#{ast*m}</sup></a> \\2 \\3}). #endnote- note- (careful may have switched)
- gsub(/(#{Mx[:en_a_o]})([+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{s*m}">#{Mx[:nbsp]}<sup id="note_ref#{s*m}">#{pls*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls*m} <a href="#note_ref#{s*m}">#{Mx[:nbsp]}<sup id="note#{s*m}">#{pls*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
- end
- end
- @tuned_file << dob
- end
- end
- def output
- data=@data
- @tuned_file=[]
- data.each do |dob|
- dob.obj=dob.obj.strip.chomp
- @tuned_file << dob
- end
- @tuned_file << "\n<EOF>" if (@md.fns =~/\.sst0/) #remove
- @tuned_file
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/errors.rb b/lib/sisu/v3dv/errors.rb
deleted file mode 100644
index 25ef688c..00000000
--- a/lib/sisu/v3dv/errors.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, error screen reporting
-
-=end
-module SiSU_Errors
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- class InfoError <CreateFile
- def initialize(error,errorlist,cmd,fns='')
- @fns,@cmd,@error,@errorlist=fns,cmd,error,errorlist
- @cmd=if cmd and cmd =~/c/; 'Vc'
- else 'V'
- end
- end
- def error #creates file errorlog.sisu in pwd of last error reported
- file=if @fns; SiSU_Env::CreateFile.new(@fns).file_error
- else File.new('/tmp/errorlog.sisu','w+')
- end
- file << @fns << "\n" << @error << "\n" << @errorlist
- file.close
- if @cmd=~/[vVM]/; STDERR.puts SiSU_Screen::Ansi.new('',$!,$@).rescue
- else SiSU_Screen::Ansi.new('',"rescued, exception reaised, silenced").puts_grey
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/git.rb b/lib/sisu/v3dv/git.rb
deleted file mode 100644
index 82700d9c..00000000
--- a/lib/sisu/v3dv/git.rb
+++ /dev/null
@@ -1,281 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_Git
- require_relative 'param' # param.rb
- require_relative 'sysenv' # sysenv.rb
- require_relative 'dal' # dal.rb
- class Source
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- @md=SiSU_Param::Parameters.new(@opt).get
- @file=SiSU_Env::FileOp.new(@md)
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- unless @opt.lng==l[:c] # @md.i18n[0]==l[:c]
- p "using: #{@opt.lng} (@make: :language:); filename #{@md.fns} filename language: #{l[:c]}, mismatch"
- end
- if @env.output_dir_structure.multilingual?
- m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst|ssm)$/ #watch added match for sss
- fnn,fnb,fnt=@opt.fns[m,1],@opt.fns[m,2],@opt.fns[m,3]
- else m=/(.+?)\.((?:-|ssm\.)?sst|ssm)$/
- fnb=@fnn=@opt.fns[m,1]
- fnt=@opt.fns[m,2]
- end
- git_path_fnb=@env.processing_path.git + '/' + fnb
- #unless @opt.cmd =~/q/
- # @opt.cmd=~/[MVvz]/ \
- # ? SiSU_Screen::Ansi.new(@opt.cmd,'Git path',@git_path[:fnb]).green_hi_blue \
- # : SiSU_Screen::Ansi.new(@opt.cmd,'Git path',@git_path[:fnb]).green_title_hi
- # SiSU_Screen::Ansi.new(@opt.cmd,"Git path","#{@opt.fns} -> #{@git_path[:fnb]}").warn if @opt.cmd =~/[MVv]/
- #end
- lng=(@md.opt.lng) ? (@md.opt.lng) : (@md.i18n[0])
- @git_path={
- fnb: git_path_fnb,
- src: git_path_fnb + '/' + Gt[:src] + '/' + lng,
- po: git_path_fnb + '/' + Gt[:po] + '/' + lng,
- pot: git_path_fnb + '/' + Gt[:pot],
- conf: git_path_fnb + '/' + Gt[:conf],
- skin: git_path_fnb + '/' + Gt[:skin],
- image: git_path_fnb + '/' + Gt[:image],
- audio: git_path_fnb + '/' + Gt[:audio],
- video: git_path_fnb + '/' + Gt[:video],
- conf: git_path_fnb + '/' + Gt[:conf]
- }
- SiSU_DAL::Source.new(@opt).read # -m
- end
- def create_file_structure_git
- make_dir_fnb
- if program_found?
- git_init
- end
- end
- def read
- create_file_structure_git
- populate.sisusrc_files
- if program_found?
- git_commit
- end
- unless @opt.cmd =~/q/
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Git path',@git_path[:fnb]).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Git path',@git_path[:fnb]).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,"Git path","#{@opt.fns} -> #{@git_path[:fnb]}").warn if @opt.cmd =~/[MVv]/
- end
- end
- def program_found?
- found=`whereis git`
- (found =~/bin\/git\b/) ? true : false
- end
- def make_dir_fnb
- FileUtils::mkdir_p(@git_path[:fnb]) unless FileTest.directory?(@git_path[:fnb])
- FileUtils::mkdir_p(@git_path[:src]) unless FileTest.directory?(@git_path[:src])
- FileUtils::mkdir_p(@git_path[:po]) unless FileTest.directory?(@git_path[:po])
- FileUtils::mkdir_p(@git_path[:pot]) unless FileTest.directory?(@git_path[:pot])
- FileUtils::mkdir_p(@git_path[:conf]) unless FileTest.directory?(@git_path[:conf])
- FileUtils::mkdir_p(@git_path[:skin]) unless FileTest.directory?(@git_path[:skin])
- FileUtils::mkdir_p(@git_path[:image]) unless FileTest.directory?(@git_path[:image])
- #FileUtils::mkdir_p(@git_path[:audio]) unless FileTest.directory?(@git_path[:audio])
- #FileUtils::mkdir_p(@git_path[:video]) unless FileTest.directory?(@git_path[:video])
- end
- def git_init
- unless FileTest.directory?("#{@git_path[:fnb]}/.git")
- pwd=Dir.pwd
- Dir.chdir(@git_path[:fnb])
- system("git init ")
- Dir.chdir(pwd)
- end
- end
- def git_commit
- if FileTest.directory?("#{@git_path[:fnb]}")
- pwd=Dir.pwd
- Dir.chdir(@git_path[:fnb])
- system("
- git add . \
- && git commit -a
- ")
- Dir.chdir(pwd)
- end
- end
- def populate
- def identify_language_versions
- print __FILE__ + ':'
- p __LINE__
- end
- def copy_src_head
- if @opt.f_pth[:lng]
- FileUtils::cp_r("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{@opt.fns}",@git_path[:src])
- elsif @opt.fns =~/\.ssm\.sst/
- ssm=@opt.fns.gsub(/\.ssm\.sst/,'.ssm')
- FileUtils::cp_r("#{@env.path.pwd}/#{ssm}",@git_path[:src])
- else
- FileUtils::cp_r("#{@env.path.pwd}/#{@opt.fns}",@git_path[:src])
- end
- end
- def copy_related_sst_ssi
- doc_import=[]
- @rgx_doc_import=/^<<\s(\S+?\.ss[ti])/
- file_array=IO.readlines(@opt.fns,'')
- file_array.each do |f|
- if f =~@rgx_doc_import
- doc_import = doc_import + f.scan(@rgx_doc_import).uniq.flatten
- end
- end
- doc_import.each do |f|
- if @opt.f_pth[:lng]
- FileUtils::cp_r("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{f}",@git_path[:src])
- else
- FileUtils::cp_r("#{@env.path.pwd}/#{f}",@git_path[:src])
- end
- end
- end
- def locate_parse_file
- composite_src=@opt.fns=~/\.ssm$/ ? true : false
- parse_file=if composite_src \
- and @opt.cmd.inspect !~/m/
- ##SiSU_Assemble::Composite.new(@opt).read
- #SiSU_DAL::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"
- else "#{@env.path.pwd}/#{@opt.fns}"
- end
- end
- def locate_skin
- SiSU_Env::InfoSkin.new(@md).select
- end
- def read_composite
- #print __FILE__ + ':'
- #p __LINE__
- end
- def extract_skin
- #print __FILE__ + ':'
- #p __LINE__
- end
- def extract_skin_and_images #(parse_file)
- parse_file_name=locate_parse_file
- parse_file=IO.readlines(parse_file_name,'')
- rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
- #rgx_rb_image=/["'](\S+?\.(?:png|jpg|gif))["']/
- #rgx_rb_image=/[^\/]?([a-z]\S+?\.(?:png|jpg|gif))/
- rgx_rb_image=/([a-z][^ \/]+?\.(?:png|jpg|gif))/
- rgx_skin=/^\s+:skin:\s+(\S+)/
- skin_get=nil
- images=[]
- skin_get
- parse_file.each do |f| #% work area
- if f !~/^%+\s/
- skin_get ||= f.scan(rgx_skin).uniq.flatten if f =~rgx_skin
- if f =~rgx_image
- images << f.scan(rgx_image).uniq
- end
- end
- end
- skin=skin_get[0] if skin_get
- skin=locate_skin
- parse_skin=IO.readlines(skin,"\n")
- parse_skin.each do |f| #% work area
- if f !~/^#/ \
- and f =~rgx_rb_image
- images << f.scan(rgx_rb_image).uniq
- end
- end
- image_path="#{@env.path.pwd}/_sisu/image"
- images.flatten.each do |i|
- if FileTest.file?("#{image_path}/#{i}")
- FileUtils::cp_r("#{image_path}/#{i}",@git_path[:image])
- end
- end
- if FileTest.file?(skin)
- FileUtils::cp_r(skin,"#{@git_path[:conf]}/skin")
- end
- { skin: skin, images: images }
- end
- def sisuyaml_rc
- sisurc=@env.path.sisurc_path
- if FileTest.file?(sisurc)
- FileUtils::cp_r(sisurc,@git_path[:conf])
- end
- end
- def read_src
- print __FILE__ + ':'
- p __LINE__
- end
- def composite_src?
- @opt.fns=~/\.ssm$/ ? true : false
- end
- def sisusrc_files
- populate.copy_src_head
- if composite_src?
- populate.copy_related_sst_ssi
- end
- populate.extract_skin
- #parse_file_name=locate_parse_file
- #parse_file=IO.readlines(parse_file_name,'')
- populate.sisuyaml_rc #(parse_file)
- populate.extract_skin_and_images #(parse_file)
- #populate.extract_composite_source
- #populate.read_composite # or read_each_composite
- populate.identify_language_versions
- end
- self
- end
- end
-end
-__END__
-@file.output_path.sisugit
diff --git a/lib/sisu/v3dv/harvest.rb b/lib/sisu/v3dv/harvest.rb
deleted file mode 100644
index 71adb0f0..00000000
--- a/lib/sisu/v3dv/harvest.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
- harvest metadata from document corpus (suitable for medium sized sites)
- (concept example, [to remove size constraint: implement SQL equivalent])
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_Harvest
- @@the_idx_topics,@@the_idx_authors={},{}
- class Source
- require_relative 'options' # options.rb
- require_relative 'harvest_topics' # harvest_topics.rb
- require_relative 'harvest_authors' # harvest_authors.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- end
- def read
- harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}"
- FileUtils::mkdir_p(harvest_pth) unless FileTest.directory?(harvest_pth)
- cases(@opt,@env)
- end
- def help
- puts <<WOK
- harvest --harvest extracts document index metadata
-
-WOK
- end
- def css(opt)
- require_relative 'css' # css.rb
- css=SiSU_Style::CSS.new
- fn_css=SiSU_Env::CSS_Default.new
- style=File.new("#{@env.path.pwd}/#{fn_css.harvest}",'w')
- style << css.harvest
- style.close
- end
- def cases(opt,env)
- case opt.mod.inspect
- when/--harvest/i
- css(opt) if opt.cmd.inspect =~/M/
- SiSU_Harvest_Authors::Songsheet.new(opt,env).songsheet
- SiSU_Harvest_Topics::Songsheet.new(opt,env).songsheet
- if opt.cmd.inspect =~/R/
- require_relative 'remote' # remote.rb
- SiSU_Remote::Put.new(opt).rsync_harvest
- end
- else
- help
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/harvest_authors.rb b/lib/sisu/v3dv/harvest_authors.rb
deleted file mode 100644
index 5bb702be..00000000
--- a/lib/sisu/v3dv/harvest_authors.rb
+++ /dev/null
@@ -1,378 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
- metadata harvest, extract authors and their writings from document set
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: simple xml representation (sax style)
-
-=end
-module SiSU_Harvest_Authors
- require_relative 'author_format' # author_format.rb
- class Songsheet
- @@the_idx_authors={}
- def initialize(opt,env)
- @opt,@env=opt,env
- @file_list=opt.files
- end
- def songsheet
- puts 'authors:'
- idx_array={}
- @opt.f_pths.each do |y|
- lang_hash_file_array={}
- name=y[:f]
- filename=y[:pth] + '/' + y[:f]
- File.open(filename,'r') do |file|
- file.each_line("\n\n") do |line|
- if line =~/^@(?:title|creator|date):(?:\s|$)/m
- lang_hash_file_array[y[:lng_is]] ||= []
- lang_hash_file_array[y[:lng_is]] << line
- elsif line =~/^@\S+?:(?:\s|$)/m \
- or line =~/^(?:\s*\n|%+ )/
- else break
- end
- end
- end
- lang_hash_file_array.each_pair do |lang,a|
- idx_array[lang] ||= []
- idx_array=SiSU_Harvest_Authors::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest
- end
- end
- the_idx=SiSU_Harvest_Authors::Index.new(idx_array,@@the_idx_authors).construct_book_author_index
- SiSU_Harvest_Authors::OutputIndex.new(@opt,the_idx).html_print.html_songsheet
- end
- end
- class Harvest
- def initialize(opt,env,data,filename,name,idx_array,lang)
- @opt,@env,@data,@filename,@name,@idx_array,@lang=opt,env,data,filename,name,idx_array,lang
- end
- def extract_harvest
- data,filename,name,idx_array,lang=@data,@filename,@name,@idx_array,@lang
- @title,@subtitle,@fulltitle,@author,@author_format,@date=nil,nil,nil,nil,nil,nil
- @authors=[]
- rgx={}
- rgx[:author]=/^@creator:(?:[ ]+|.+?:author:[ ]+)(.+?)(?:\||\n)/m
- rgx[:title]=/^@title:[ ]+(.+)/
- rgx[:subtitle]=/^@title:.+?:subtitle:[ ]+(.+?)\n/m
- rgx[:date]=/^@date:(?:[ ]+|.+?:published:[ ]+)(\d{4})/m
- data.each do |para|
- if para=~ rgx[:title]
- @title=rgx[:title].match(para)[1]
- end
- if para=~ rgx[:subtitle]
- @subtitle=rgx[:subtitle].match(para)[1]
- end
- if para=~ rgx[:author]
- @author_format=rgx[:author].match(para)[1]
- end
- if para=~ rgx[:date]
- @date=rgx[:date].match(para)[1]
- end
- break if @title and @subtitle and @author and @date
- end
- @fulltitle=@subtitle ? (@title + ' - ' + @subtitle) : @title
- if @title \
- and @author_format
- creator=SiSU_FormatAuthor::Author.new(@author_format.strip).author_details
- @authors,@authorship=creator[:authors],creator[:authorship]
- file=if name=~/~[a-z]{2,3}\.ss[mt]$/
- name.sub(/~[a-z]{2,3}\.ss[mt]$/,'')
- else
- name.sub(/\.ss[mt]$/,'')
- end
- page=if @env.output_dir_structure.by_language_code?
- "#{lang}/sisu_manifest.html"
- else
- "sisu_manifest.#{lang}.html"
- end
- idx_array[lang] <<= { filename: filename, file: file, date: @date, title: @fulltitle, author: creator, page: page, lang: lang }
- else
- #p "missing author field: #{@filename} title: #{@title}; author: #{@author_format}"
- end
- idx_array[lang]=idx_array[lang].flatten
- idx_array
- end
- end
- class Index
- def initialize(idx_array,the_idx)
- @idx_array,@the_idx=idx_array,the_idx
- @@the_idx_authors=@the_idx
- end
- def capital(txt)
- txt[0].chr.capitalize + txt[1,txt.length]
- end
- def construct_book_author_index
- idx_array=@idx_array
- idx_array.each_pair do |lang,idx_array|
- @@the_idx_authors[lang] ||= {}
- idx_array.each do |idx|
- idx[:author][:last_first_format_a].each do |author|
- author=author.strip
- if @@the_idx_authors[lang][author].class==NilClass
- @@the_idx_authors[lang][author]={ md: [] }
- end
- @@the_idx_authors[lang][author][:md] << { filename: idx[:filename], file: idx[:file], author: idx[:author], title: idx[:title], date: idx[:date], page: idx[:page], lang: idx[:lang] }
- end
- end
- end
- @the_idx=@@the_idx_authors
- end
- end
- class OutputIndex
- require_relative 'i18n' # i18n.rb
- def initialize(opt,the_idx)
- @opt,@the_idx=opt,the_idx
- @env=SiSU_Env::InfoEnv.new
- @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- @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]
- @letter=@alph.shift
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def html_file_open
- @the_idx.keys.each do |lng|
- @output ||={}
- @output[lng] ||={}
- harvest_pth,file='',''
- if @env.output_dir_structure.by_language_code?
- harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/#{lng}/manifest"
- file="#{harvest_pth}/authors.html"
- else
- harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/manifest"
- file="#{harvest_pth}/authors.#{lng}.html"
- end
- FileUtils::mkdir_p(harvest_pth) unless FileTest.directory?(harvest_pth)
- puts "file://#{file}"
- @output[lng][:html]=File.new(file,'w')
- end
- end
- def html_file_close
- @the_idx.keys.each do |lng|
- @output[lng][:html].close
- @output[lng][:html_mnt].close if @output[lng][:html_mnt].class==File
- end
- end
- def html_print
- def html_songsheet
- html_file_open
- html_head
- html_alph
- html_body
- html_tail
- html_file_close
- end
- def html_head_adjust(lng,type='')
- css_path,topics='',''
- if @env.output_dir_structure.by_language_code?
- css_path=(type !~/maintenance/) \
- ? '../../_sisu/css/harvest.css'
- : 'harvest.css'
- topics='topics.html'
- elsif @env.output_dir_structure.by_filetype?
- css_path=(type !~/maintenance/) \
- ? '../_sisu/css/harvest.css'
- : 'harvest.css'
- topics="topics.#{lng}.html"
- elsif @env.output_dir_structure.by_filename?
- css_path=(type !~/maintenance/) \
- ? '../_sisu/css/harvest.css'
- : 'harvest.css'
- topics="topics.#{lng}.html"
- end
- ln=SiSU_i18n::Languages.new.language.list
- harvest_languages=''
- @the_idx.keys.each do |lng|
- if @env.output_dir_structure.by_language_code?
- harvest_pth="../../#{lng}/manifest"
- file="#{harvest_pth}/authors.html"
- else @env.output_dir_structure.by_filetype?
- harvest_pth='.'
- file="#{harvest_pth}/authors.#{lng}.html"
- end
- l=ln[lng][:t]
- harvest_languages += %{<a href="#{file}">#{l}</a>&nbsp;&nbsp;&nbsp;}
- end
- sv=SiSU_Env::InfoVersion.instance.get_version
- <<WOK
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>SiSU Metadata Harvest - Authors</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<meta name="dc.title" content= "SiSU metadata harvest, Authors - SiSU information Structuring Universe, Structured information Serialised Units" />
-<meta name="dc.subject" content= "document structuring, ebook, publishing, PDF, LaTeX, XML, ODF, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" />
-<meta name="generator" content="#{sv[:project]} #{sv[:version]} of #{sv[:date_stamp]} (n*x and Ruby!)" />
-<link rel="generator" href="http://www.jus.uio.no/sisu/SiSU" />
-<link rel="stylesheet" href="#{css_path}" type="text/css" />
-<link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
-</head>
-<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">
-<a name="top" id="top"></a>
-<a name="up" id="up"></a>
-<a name="start" id="start"></a>
-<h1>SiSU Metadata Harvest - Authors</h1>
-<p>[<a href="../index.html">&nbsp;HOME&nbsp;</a>] also see <a href="#{topics}">SiSU Metadata Harvest - Topics</a></p>
-<p>#{@env.widget_static.search_form}</p>
-<hr />
-<p class="tiny">#{harvest_languages}</p>
-<hr />
-WOK
- end
- def html_head
- @the_idx.keys.each do |lng|
- @output[lng][:html_mnt] << html_head_adjust(lng,'maintenance') if @opt.cmd.inspect =~/M/
- @output[lng][:html] << html_head_adjust(lng)
- end
- end
- def html_alph
- a=[]
- a << '<p>'
- @alph.each do |x|
- a << ((x =~/[0-9]/) \
- ? ''
- : %{<a href="##{x}">#{x}</a>,&nbsp;})
- end
- a=a.join
- @the_idx.keys.each do |lng|
- @output[lng][:html_mnt] << a if @opt.cmd.inspect =~/M/
- @output[lng][:html] << a
- end
- end
- def html_tail
- a =<<WOK
-<hr />
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-#{@vz.credits_sisu}
-</body>
-</html>
-WOK
- @the_idx.keys.each do |lng|
- @output[lng][:html_mnt] << a if @output[lng][:html_mnt].class==File
- @output[lng][:html] << a
- end
- end
- def do_html(lng,html)
- @output[lng][:html_mnt] << html if @output[lng][:html_mnt].class==File
- @output[lng][:html] << html
- end
- def do_string_name(lng,attrib,string)
- f=/^(\S)/.match(string[0])[1]
- if @letter < f
- while @letter < f
- if @alph.length > 0
- @letter=@alph.shift
- if @output[lng][:html_mnt].class==File
- @output[lng][:html_mnt] << %{\n<p class="letter"><a name="#{@letter}"></p>#{@letter}</a><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
- end
- @output[lng][:html] << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
- else break
- end
- end
- end
- end
- def html_body
- the_idx=@the_idx
- the_idx.each_pair do |lng,lng_array|
- lng_array.sort.each do |a|
- do_string_name(lng,'',a)
- name=a[0].sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_')
- x = %{<p class="author"><a name="#{name}">#{a[0]}</a></p>}
- if @output[lng][:html_mnt].class==File
- @output[lng][:html_mnt] << x
- end
- @output[lng][:html] << x
- works=[]
- a[1][:md].each do |x|
- if @env.output_dir_structure.by_language_code?
- manifest_pth="#{@env.path.output}/#{x[:file]}"
- manifest_at=x[:file] + '.html'
- elsif @env.output_dir_structure.by_filetype?
- manifest_name=x[:file]
- manifest_at=x[:file] + '.' + lng + '.html'
- elsif @env.output_dir_structure.by_filename?
- manifest_at="../#{x[:file]}/#{x[:page]}"
- end
- work=[ "#{x[:date]} #{x[:title]}", %{<p class="publication">#{x[:date]} <a href="#{manifest_at}">#{x[:title]}</a>, #{x[:author][:authors_s]}</p>} ]
- works<<=(@output[lng][:html_mnt].class==File) \
- ? (work.concat([%{<p class="publication">[<a href="#{x[:file]}.sst">src</a>]&nbsp;&nbsp;#{x[:date]} <a href="file://#{manifest_at}">#{x[:title]}</a>, #{x[:author][:authors_s]} -- [<a href="#{x[:file]}.sst">#{x[:file]}.sst</a>]</p>}]))
- : work
- end
- works.sort_by {|x| x[0]}.each do |x|
- @output[lng][:html] << x[1]
- @output[lng][:html_mnt] << x[2] if @output[lng][:html_mnt].class==File
- end
- end
- end
- end
- self
- end
- def screen_print
- def cycle
- the_idx=@the_idx
- the_idx.sort.each do |a|
- puts a[0]
- a[1][:md].each do |x|
- puts "\t" + x[:file]
- end
- end
- end
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/harvest_topics.rb b/lib/sisu/v3dv/harvest_topics.rb
deleted file mode 100644
index dd7ec8c2..00000000
--- a/lib/sisu/v3dv/harvest_topics.rb
+++ /dev/null
@@ -1,650 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
- metadata harvest, extract topics and associated writings from document set
- (topics use topic_register header)
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: simple xml representation (sax style)
-
-=end
-module SiSU_Harvest_Topics
- require_relative 'author_format' # author_format.rb
- include SiSU_Viz
- class Songsheet
- @@the_idx_topics={}
- def initialize(opt,env)
- @opt,@env=opt,env
- @file_list=opt.files
- end
- def songsheet
- puts 'topics:'
- idx_array={}
- @opt.f_pths.each do |y|
- lang_hash_file_array={}
- name=y[:f]
- filename=y[:pth] + '/' + y[:f]
- File.open(filename,'r') do |file|
- file.each_line("\n\n") do |line|
- if line =~/^@(?:title|creator|classify):(?:\s|$)/m
- lang_hash_file_array[y[:lng_is]] ||= []
- lang_hash_file_array[y[:lng_is]] << line
- elsif line =~/^@\S+?:(?:\s|$)/m \
- or line =~/^(?:\s*\n|%+ )/
- else break
- end
- end
- end
- lang_hash_file_array.each_pair do |lang,a|
- idx_array[lang] ||= []
- idx_array=SiSU_Harvest_Topics::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest
- end
- end
- the_idx=SiSU_Harvest_Topics::Index.new(@opt,@env,idx_array,@@the_idx_topics).construct_book_topic_index
- SiSU_Harvest_Topics::OutputIndex.new(@opt,the_idx).html_print.html_songsheet
- end
- end
- class Harvest
- def initialize(opt,env,data,filename,name,idx_array,lang)
- @opt,@env,@data,@filename,@name,@idx_array,@lang=opt,env,data,filename,name,idx_array,lang
- end
- def extract_harvest
- data,filename,name,idx_array,lang=@data,@filename,@name,@idx_array,@lang
- @idx_lst,@title,@subtitle,@fulltitle,@author,@author_format=nil,nil,nil,nil,nil,nil
- rgx={}
- rgx[:author]=/^@creator:(?:[ ]+|.+?:author:[ ]+)(.+?)(?:\||\n)/m
- rgx[:title]=/^@title:[ ]+(.+)/
- rgx[:subtitle]=/^@title:.+?:subtitle:[ ]+(.+?)\n/m
- rgx[:idx]=/^@classify:.+?:topic_register:[ ]+(.+?)\n/m
- data.each do |para|
- if para=~ rgx[:idx]
- @idx_list=rgx[:idx].match(para)[1]
- end
- if para=~ rgx[:title]
- @title=rgx[:title].match(para)[1]
- end
- if para=~ rgx[:subtitle]
- @subtitle=rgx[:subtitle].match(para)[1]
- end
- if para=~ rgx[:author]
- @author_format=rgx[:author].match(para)[1]
- end
- break if @title and @subtitle and @author and @idx_lst
- end
- @fulltitle=@subtitle ? (@title + ' - ' + @subtitle) : @title
- if @title \
- and @author_format \
- and @idx_list
- creator=SiSU_FormatAuthor::Author.new(@author_format.strip).author_details
- @authors,@authorship=creator[:authors],creator[:authorship]
- file=if name=~/~[a-z]{2,3}\.ss[mt]$/
- name.sub(/~[a-z]{2,3}\.ss[mt]$/,'')
- else
- name.sub(/\.ss[mt]$/,'')
- end
- page=if @env.output_dir_structure.by_language_code?
- #fix
- end
- page=if @env.output_dir_structure.by_language_code?
- "#{lang}/sisu_manifest.html"
- else
- "sisu_manifest.#{lang}.html"
- end
- idx_array[lang] <<=if @idx_list =~/;/
- g=@idx_list.scan(/[^;]+/)
- idxl=[]
- g.each do |i|
- i=i.strip
- idxl << { filename: filename, file: file, rough_idx: i, title: @fulltitle, author: creator, page: page, lang: lang }
- end
- idxl
- else { filename: filename, file: file, rough_idx: @idx_list, title: @fulltitle, author: creator, page: page, lang: lang }
- end
- else
- p "missing required field in #{@filename} - [title]: <<#{@title}>>; [author]: <<#{@author_format}>>; [idx]: <<#{@idx_list}>>" if @opt.cmd.inspect =~/[VM]/
- end
- idx_array[lang]=idx_array[lang].flatten
- idx_array
- end
- end
- class Index
- def initialize(opt,env,idx_array,the_idx)
- @opt,@env,@idx_array,@the_idx=opt,env,idx_array,the_idx
- @@the_idx_topics=@the_idx
- end
- def capital(txt)
- txt[0].chr.capitalize + txt[1,txt.length]
- end
- def contents(lang,hash,idx)
- names=''
- idx[:author][:last_first_format_a].each do |n|
- s=n.sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_')
- names=if @env.output_dir_structure.by_language_code?
- names += %{<a href="authors.html##{s}">#{n}</a>, }
- else
- names += %{<a href="authors.#{lang}.html##{s}">#{n}</a>, }
- end
- end
- hash << { filename: idx[:filename], file: idx[:file], author: names, title: idx[:title], page: idx[:page] }
- end
- def construct_book_topic_index
- idx_array=@idx_array
- idx_array.each_pair do |lang,idx_array|
- @@the_idx_topics[lang] ||= {}
- idx_array.each do |idx|
- @lv0,@lv1,@lv2,@lv3,@lv4={},{},{},{},{}
- if idx[:rough_idx]
- idx_lst=idx[:rough_idx].scan(/[^:]+/)
- else
- puts "no topic register in: << #{idx[:filename]} >>"
- next
- end
- idx_lst_alt=[]
- idx_lst.each {|lev| idx_lst_alt << lev.scan(/[^|]+/)}
- depth = idx_lst_alt.length - 1
- range = 0..depth
- range.each do |t|
- if idx_lst_alt[t]
- case t
- when 0
- lev0=idx_lst_alt[t]
- lev0.each do |lv0|
- lv0=capital(lv0)
- if @@the_idx_topics[lang][lv0].class==NilClass
- @@the_idx_topics[lang][lv0]={ md: [] }
- end
- @lv0=lv0 if lev0.length==1
- j=@@the_idx_topics[lang][lv0][:md]
- contents(lang,j,idx) if idx_lst_alt.length - 1 == t
- end
- when 1
- lev1=idx_lst_alt[t]
- lev1.each do |lv1|
- lv1=capital(lv1)
- if @@the_idx_topics[lang][@lv0][lv1].class==NilClass
- @@the_idx_topics[lang][@lv0][lv1]={ md: [] }
- end
- @lv1=lv1 if lev1.length==1
- j=@@the_idx_topics[lang][@lv0][lv1][:md]
- contents(lang,j,idx) if idx_lst_alt.length - 1 == t
- end
- when 2
- lev2=idx_lst_alt[t]
- lev2.each do |lv2|
- lv2=capital(lv2)
- if @@the_idx_topics[lang][@lv0][@lv1][lv2].class==NilClass
- @@the_idx_topics[lang][@lv0][@lv1][lv2]={ md: [] }
- end
- @lv2=lv2 if lev2.length==1
- j=@@the_idx_topics[lang][@lv0][@lv1][lv2][:md]
- contents(lang,j,idx) if idx_lst_alt.length - 1 == t
- end
- when 3
- lev3=idx_lst_alt[t]
- lev3.each do |lv3|
- lv3=capital(lv3)
- if @@the_idx_topics[lang][@lv0][@lv1][@lv2][lv3].class==NilClass
- @@the_idx_topics[lang][@lv0][@lv1][@lv2][lv3]={ md: [] }
- end
- @lv3=lv3 if lev3.length==1
- j=@@the_idx_topics[lang][@lv0][@lv1][@lv2][lv3][:md]
- contents(lang,j,idx) if idx_lst_alt.length - 1 == t
- end
- when 4
- lev4=idx_lst_alt[t]
- lev4.each do |lv4|
- lv4=capital(lv4)
- if @@the_idx_topics[lang][@lv0][@lv1][@lv2][@lv3][lv4].class==NilClass
- @@the_idx_topics[lang][@lv0][@lv1][@lv2][@lv3][lv4]={ md: [] }
- end
- @lv4=lv4 if lev4.length==1
- j=@@the_idx_topics[lang][@lv0][@lv1][@lv2][@lv3][lv4][:md]
- contents(lang,j,idx) if idx_lst_alt.length - 1 == t
- end
- end
- end
- end
- end
- end
- @the_idx
- end
- end
- class OutputIndex
- require_relative 'i18n' # i18n.rb
- def initialize(opt,the_idx)
- @opt,@the_idx=opt,the_idx
- @env=SiSU_Env::InfoEnv.new
- @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- @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]
- @letter=@alph.shift
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def html_file_open
- @the_idx.keys.each do |lng|
- @output ||={}
- @output[lng] ||={}
- harvest_pth,file='',''
- if @env.output_dir_structure.by_language_code?
- harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/#{lng}/manifest"
- file="#{harvest_pth}/topics.html"
- else @env.output_dir_structure.by_filetype?
- harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/manifest"
- file="#{harvest_pth}/topics.#{lng}.html"
- end
- FileUtils::mkdir_p(harvest_pth) unless FileTest.directory?(harvest_pth)
- puts "file://#{file}"
- @output[lng][:html]=File.new(file,'w')
- if @opt.cmd.inspect =~/-M/
- @output[lng][:html_mnt]=File.new("#{@env.path.pwd}/topics.html",'w')
- end
- end
- end
- def html_file_close
- @the_idx.keys.each do |lng|
- @output[lng][:html].close
- @output[lng][:html_mnt].close if @output[lng][:html_mnt].class==File
- end
- end
- def html_print
- def html_songsheet
- html_file_open
- html_head
- html_alph
- html_body
- html_tail
- html_file_close
- end
- def html_head_adjust(lng,type='')
- css_path,authors='',''
- if @env.output_dir_structure.by_language_code?
- css_path=(type !~/maintenance/) \
- ? '../../_sisu/css/harvest.css'
- : 'harvest.css'
- authors='authors.html'
- elsif @env.output_dir_structure.by_filetype?
- css_path=(type !~/maintenance/) \
- ? '../_sisu/css/harvest.css'
- : 'harvest.css'
- authors="authors.#{lng}.html"
- elsif @env.output_dir_structure.by_filename?
- css_path=(type !~/maintenance/) \
- ? '../_sisu/css/harvest.css'
- : 'harvest.css'
- authors="authors.#{lng}.html"
- end
- ln=SiSU_i18n::Languages.new.language.list
- harvest_languages=''
- @the_idx.keys.each do |lng|
- if @env.output_dir_structure.by_language_code?
- harvest_pth="../../#{lng}/manifest"
- file="#{harvest_pth}/topics.html"
- else @env.output_dir_structure.by_filetype?
- harvest_pth='.'
- file="#{harvest_pth}/topics.#{lng}.html"
- end
- l=ln[lng][:t]
- harvest_languages += %{<a href="#{file}">#{l}</a>&nbsp;&nbsp;&nbsp;}
- end
- sv=SiSU_Env::InfoVersion.instance.get_version
- <<WOK
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>SiSU Metadata Harvest - Topics</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<meta name="dc.title" content= "SiSU metadata harvest, Topics - SiSU information Structuring Universe, Structured information Serialised Units" />
-<meta name="dc.subject" content= "document structuring, ebook, publishing, PDF, LaTeX, XML, ODF, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" />
-<meta name="generator" content="#{sv[:project]} #{sv[:version]} of #{sv[:date_stamp]} (n*x and Ruby!)" />
-<link rel="generator" href="http://www.jus.uio.no/sisu/SiSU" />
-<link rel="stylesheet" href="#{css_path}" type="text/css" />
-<link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
-</head>
-<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">
-<a name="top" id="top"></a>
-<a name="up" id="up"></a>
-<a name="start" id="start"></a>
-<h1>SiSU Metadata Harvest - Topics</h1>
-<p>[<a href="../index.html">&nbsp;HOME&nbsp;</a>] also see <a href="#{authors}">SiSU Metadata Harvest - Authors</a></p>
-<p>#{@env.widget_static.search_form}</p>
-<hr />
-<p class="tiny">#{harvest_languages}</p>
-<hr />
-WOK
- end
- def html_head
- @the_idx.keys.each do |lng|
- @output[lng][:html_mnt] << html_head_adjust(lng,'maintenance') if @opt.cmd.inspect =~/M/
- @output[lng][:html] << html_head_adjust(lng)
- end
- end
- def html_alph
- a=[]
- a << '<p>'
- @alph.each do |x|
- a << ((x =~/[0-9]/) \
- ? ''
- : %{<a href="##{x}">#{x}</a>,&nbsp;})
- end
- a=a.join
- @the_idx.keys.each do |lng|
- @output[lng][:html_mnt] << a if @opt.cmd.inspect =~/M/
- @output[lng][:html] << a
- end
- end
- def html_tail
- a =<<WOK
-<hr />
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-#{@vz.credits_sisu}
-</body>
-</html>
-WOK
- @the_idx.keys.each do |lng|
- @output[lng][:html_mnt] << a if @output[lng][:html_mnt].class==File
- @output[lng][:html] << a
- end
- end
- def do_html(lng,html)
- @output[lng][:html] << html
- end
- def do_html_maintenance(lng,html)
- @output[lng][:html_mnt] << html if @output[lng][:html_mnt].class==File
- end
- def do_string(lng,attrib,string)
- html=%{<p class="#{attrib}">#{string}</p>}
- do_html(lng,html)
- do_html_maintenance(lng,html) if @output[lng][:html_mnt].class==File
- end
- def do_string_default(lng,attrib,string)
- html=%{<p class="#{attrib}">#{string}</p>}
- do_html(lng,html)
- end
- def do_string_maintenance(lng,attrib,string)
- html=%{<p class="#{attrib}">#{string}</p>}
- do_html_maintenance(lng,html) if @output[lng][:html_mnt].class==File
- end
- def do_string_name(lng,attrib,string)
- f=/^(\S)/.match(string)[1]
- if @letter < f
- while @letter < f
- if @alph.length > 0
- @letter=@alph.shift
- if @output[lng][:html_mnt].class==File
- @output[lng][:html_mnt] << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
- end
- @output[lng][:html] << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
- else break
- end
- end
- end
- name=string.strip.gsub(/\s+/,'_')
- html=%{<p class="#{attrib}"><a name="#{name}">#{string}</a></p>}
- do_html(lng,html)
- do_html_maintenance(lng,html) if @output[lng][:html_mnt].class==File
- end
- def do_array(lng,lv,array)
- lv+=1
- array.each do |b|
- do_case(lng,lv,b)
- end
- end
- def do_hash_md(lng,attrib,hash)
- if @env.output_dir_structure.by_language_code?
- manifest_at=hash[:file] + '.html'
- elsif @env.output_dir_structure.by_filetype?
- manifest_at=hash[:file] + '.' + lng + '.html'
- elsif @env.output_dir_structure.by_filename?
- manifest_at="../#{hash[:file]}/#{hash[:page]}"
- end
- html=%{<a href="#{manifest_at}">#{hash[:title]}</a> - #{hash[:author]}}
- do_string_default(lng,attrib,html)
- end
- def do_hash_md_maintenance(lng,attrib,hash)
- if @output[lng][:html_mnt].class==File #should not be run for presentation output
- html=%{[<a href="#{hash[:file]}.sst">src</a>]&nbsp;&nbsp;<a href="file://#{@env.path.output}/#{hash[:file]}/#{hash[:page]}">#{hash[:title]}</a> - #{hash[:author]}}
- do_string_maintenance(lng,attrib,html)
- end
- end
- def do_hash(lng,lv,hash)
- lv+=1
- key=[]
- hash.each_key do |m|
- if m == :md
- do_case(lng,lv,hash[m])
- elsif m != :title \
- and m != :author \
- and m != :filename \
- and m != :file \
- and m != :rough_idx \
- and m != :page
- key << m
- elsif m == :title
- do_hash_md(lng,'work',hash)
- do_hash_md_maintenance(lng,'work',hash)
- end
- end
- if key.length > 0
- key.sort.each do |m|
- attrib="lev#{lv}"
- lv==0 ? do_string_name(lng,attrib,m) : do_string(lng,attrib,m)
- do_case(lng,lv,hash[m])
- end
- end
- end
- def do_case(lng,lv,a)
- y = a.class
- case
- when y==String
- attrib="lev#{lv}"
- lv==0 ? do_string_name(lng,attrib,a) : do_string(lng,attrib,a)
- when y==Array
- do_array(lng,lv,a)
- when y==Hash
- do_hash(lng,lv,a)
- end
- end
- def html_body
- the_idx=@the_idx
- the_idx.each_pair do |lng,lng_array|
- lng_array.sort.each do |a|
- do_case(lng,-1,a)
- end
- end
- end
- self
- end
- def screen_print
- def do_string(lv,string)
- s=' '*4
- puts s*lv + string
- end
- def do_array(lng,lv,array)
- lv+=1
- array.each do |b|
- do_case(lng,lv,b)
- end
- end
- def do_hash_md(lng,lv,hash)
- string=hash[:title] + ' - ' + hash[:author]
- do_string(lng,lv,string)
- end
- def do_hash(lng,lv,hash)
- lv+=1
- key=[]
- hash.each_key do |m|
- if m == :md
- do_case(lng,lv,hash[m])
- elsif m != :title \
- and m != :author \
- and m != :filename \
- and m != :file \
- and m != :rough_idx \
- and m != :page
- key << m
- elsif m == :title
- do_hash_md(lng,lv,hash)
- end
- end
- if key.length > 0
- key.sort.each do |m|
- do_string(lng,lv,m)
- do_case(lng,lv,hash[m])
- end
- end
- end
- def do_case(lng,lv,a)
- s=' '*4
- y = a.class
- case
- when y==String
- do_string(lng,lv,a)
- when y==Array
- do_array(lng,lv,a)
- when y==Hash
- do_hash(lng,lv,a)
- end
- end
- def cycle
- the_idx=@the_idx
- the_idx.keys.each do |lng|
- the_idx[lng].each do |a|
- do_case(lng,-1,a)
- end
- end
- end
- self
- end
- def screen_print_unsorted
- def do_string(lng,lv,string)
- s=' '*4
- puts s*lv + string
- end
- def do_array(lng,lv,array)
- lv+=1
- array.each do |b|
- do_case(lng,lv,b)
- end
- end
- def do_hash_md(lng,lv,hash)
- string=hash[:title] + ' - ' + hash[:author]
- do_string(lng,lv,string)
- end
- def do_hash(lng,lv,hash)
- lv+=1
- hash.each_key do |m|
- if m == :md
- do_case(lng,lv,hash[m])
- else
- if m != :title \
- and m != :author \
- and m != :filename \
- and m != :file \
- and m != :rough_idx \
- and m != :page
- do_string(lng,lv,m)
- do_case(lng,lv,hash[m])
- elsif m == :title
- do_hash_md(lng,lv,hash)
- else
- end
- end
- end
- end
- def do_case(lng,lv,a)
- s=' '*4
- y = a.class
- case
- when y==String
- do_string(lng,lv,a)
- when y==Array
- do_array(lng,lv,a)
- when y==Hash
- do_hash(lng,lv,a)
- end
- end
- def cycle
- the_idx=@the_idx
- the_idx.keys.each do |lng|
- the_idx[lng].each do |a|
- do_case(lng,-1,a)
- end
- end
- end
- self
- end
- end
-end
-__END__
-terms -|_ t{tl1} -|_ {fa}[fa]{filenames and other details}
- | |_ {tl2} -|_ {fa}[fa]{filenames and other details}
- | | |_{tl3} -|_ {fa}[fa]{filenames and other details}
- | | | |_{tl4} - {fa}[fa]{filenames and other details}
- | | | |
- | | | |_{tl4a} - {fa}[fa]{filenames and other details}
- | | | |
- | | | |_{tl4b} - {fa}[fa]{filenames and other details}
- | | | |
- | | | |_ ...
- | | |
- | | |_{tl3a} - {fa}[fa]{filenames and other details}
- | |
- | |_{tl2a} - {fa}[fa]{filenames and other details}
- |
- |_ t{tl1a} -|_ {fa}[fa]{filenames and other details}
- |_ ...
diff --git a/lib/sisu/v3dv/help.rb b/lib/sisu/v3dv/help.rb
deleted file mode 100644
index 35a96170..00000000
--- a/lib/sisu/v3dv/help.rb
+++ /dev/null
@@ -1,1923 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: interactive infomation/help
-
-=end
-module SiSU_Help
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Screen
- require_relative 'param' # param.rb
- class Help
- require_relative 'i18n' # i18n.rb
- def initialize(request='',color='')
- @request,@color=request,color
- if color =~/color_off/; @cX=SiSU_Screen::Ansi.new('k').cX
- else @cX=SiSU_Screen::Ansi.new('yes').cX
- end
- fns='help_example_dummy_file_name.sst'
- @env=SiSU_Env::InfoEnv.new(fns)
- @db=SiSU_Env::InfoDb.new
- m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @output_stub=Dir.pwd[m,1]
- end
- def help_request
- begin
- gotten=nil
- regx=/^(list|com(?:mands)?|mod(?:ifiers)|markup|syntax|example(?:_v1|_v2)?|head(?:ers?)?|(?:heading|title|level|structure)s?|endnotes|footnotes|tables?|customise|skin|dir(?:ectories)?|paths?|lang(?:uage)?|modules|setup|conf(?:ig(?:ure)?)?|standards?|li[cs]en[sc]e|scratch|install|termsheet|dublin(?:core)?|dc|customise|styles?|appearance|theme|env(ironment)?|dir(?:ector(?:y|ies))?|metaverse|abstract|features|summary|(?:short)?cuts?|sisu|about|ext(?:ernal)?(?:_?prog(?:rams)?)?)|utf-?8|plaintext|html|xml|xhtml|epub|odf|odt|opendocument|css|pdf|latex|tex|(?:tex)?info|search|(?:hyper)?est(?:raier)?|searchform|cgi|sql|db|pg|postgresql|pg?sql|sqlite|convert|php|webrick|sitemaps?|ya?ml|ansi|colors|-[AabcDdEeFHhIMmNnopqrRSstUuVvwXxyZz0-9]|-[Ddcv]|-[CcFLSVvW]/
- help_info=%{#{@cX.blue_hi}SiSU help#{@cX.off} #{@cX.ruby}~#{@cX.off} #{@request}}
- help_list=%{#{@cX.blue}sisu --help#{@cX.off} #{@cX.cyan}type keyword else "enter" to exit help:\n\tkeywords include:#{@cX.off} #{@cX.brown}list, (com)mands, short(cuts), (mod)ifiers, (env)ironment, markup, syntax, headers, headings, endnotes, tables, example, customise, skin, (dir)ectories, path, (lang)uage, db, install, setup, (conf)igure, convert, termsheet, search, sql, features, license#{@cX.off} \n}
- help_prompt=%{#{@cX.fuschia}exit, [or carriage return to exit help] #{@cX.off}\n#{@cX.blue_hi}SiSU help#{@cX.off} #{@cX.ruby}~#{@cX.off} }
- until gotten =~/exit|quit|bye|q|^\s*$/ \
- and ( @request.nil? or @request.empty? )
- @help=Help.new(@request,@color)
- if @request
- puts help_info
- gotten=@request
- @request=nil
- end
- case gotten
- when /h((?:elp)| )|~/i
- @help.summary
- help_@request
- when /list/; @help.summary
- when /com(mands)?/; @help.commands
- when /mod(ifiers)?/; @help.modifiers
- when /markup|syntax/; @help.markup
- when /example\b/; @help.example_v2
- when /example_v1/; @help.example_v1
- when /example(_v2)?/; @help.example_v2
- when /(?:heading|title|level)s?|structure/; @help.headings
- when /head(ers?)?/; @help.headers
- when /dublin(core)?|dc/; @help.dublin_core
- when /(?:foot|end)notes/; @help.endnotes
- when /tables?/; @help.tables
- when /customise|skin/; @help.customise
- when /modules/; @help.modules
- when /env(ironment)?/; @help.environment
- when /dir(ector(y|ies))?/; @help.directories
- when /paths?/; @help.path
- when /setup/; @help.setup
- when /conf(?:ig(?:ure)?)?/; @help.configure
- when /standards?/; @help.standards
- when /lang(?:uage)?/; @help.languages
- when /li[cs]en[sc]e/; @help.license
- when /scratch/; @help.scratch
- when /install/; @help.install
- when /(?:--)?termsheet/; @help.termsheet
- when /customise|styles?|appearance|theme/; @help.customise
- when /metaverse/; @help.dal
- when /(?:--)?plaintext|(?:--)?te?xt|-[aAeE]/; @help.plaintext
- when /utf-?8/i; @help.utf8
- when /(?:--)?html|-[hH]/; @help.html
- when /css/; @help.css
- when /(?:--)?xhtml|-b/; @help.xhtml
- when /(?:--)?xml|-[xX]/; @help.xml
- when /(?:--)?odf|(?:--)?odt|opendocument|-o/; @help.odf
- when /(?:--)?epub|-e/; @help.epub
- when /php/; @help.php
- when /(?:--)?pdf|-p/; @help.pdf
- when /latex|tex/; @help.latex
- when /(tex)?info/; @help.texinfo
- when /lout/; @help.lout
- when /concordance|index|-w/; @help.concordance
- when /search\b/; @help.help_search
- when /(?:hyper)?est(?:raier)?/; @help.hyperestraier
- when /db|database|sql|postgresql|(?:--)?sqlite|(?:--)?pg|pg?sql|-[dD]/; @help.sql
- when /searchform|cgi/; @help.cgi
- when /convert/; @help.convert
- when /(?:--)?webrick|-W/; @help.webrick
- when /abstract|features|summary|about|sisu/; @help.abstract
- when /ext(?:ernal)?(?:_?prog(?:rams)?)?/; @help.external_programs
- when /ya?ml/; @help.yaml
- when /sitemaps?/; @help.sitemap
- when /(?:short)?cuts?/; @help.shortcuts
- when /ansi|colors?/; SiSU_Screen::Ansi.new('c').colors
- else @help.summary
- end
- print help_list
- print help_prompt
- gotten=nil
- gotten=gets
- end
- rescue
- #STDERR.puts Ansi.new($!, $@).rescue
- # dies silently... for now, silence of use in connection with "sisu ~ commands" etc.
- ensure
- end
- end
- def summary
- print <<WOK
- SiSU, Copyright (C) 1997 - 2012 Ralph Amissah
- License GPL version 3 or Later. This program comes with ABSOLUTELY NO WARRANTY;
- This is free software, and you are welcome to redistribute it under the conditions of the GPL3 or later.
- For more license detail type/enter: "sisu --help license"
-
-for help type 'sisu --help', 'sisu --help [help request]', 'man sisu', (or see the system or online documentation)
-
-typing "sisu" on its own or "sisu --help", should give you this sisu help summary and the sisu (interactive help mode) help prompt, from which help on each keyword can be obtained.
-
-alternatively typing #{@cX.orange}sisu --help#{@cX.off} #{@cX.green}[keyword]#{@cX.off} at the command prompt will provide the sisu help page requested and return to the command prompt (if nothing is found it will print this page and return to the command prompt)
-
- Keywords (related to using SiSU)
- #{@cX.green}help#{@cX.off} or #{@cX.green}list#{@cX.off} this sisu help summary
- #{@cX.green}commands#{@cX.off} sisu --help commands
- #{@cX.green}environment#{@cX.off} sisu --help env
- ------------------------------------------
- Preparing Documents for SiSU
- #{@cX.green}markup#{@cX.off} sisu --help markup (an incomplete overview)
- #{@cX.green}headers#{@cX.off} sisu --help headers (document-wide instructions, meta-data)
- #{@cX.green}structure#{@cX.off} sisu --help structure (document structure, headings, tables of contents)
- #{@cX.green}endnotes#{@cX.off} sisu --help endnotes
- #{@cX.green}tables#{@cX.off} sisu --help tables
- #{@cX.green}example 1.0#{@cX.off} sisu --help example_v1
- #{@cX.green}example 2.0#{@cX.off} sisu --help example
- ------------------------------------------
- #{@cX.green}search#{@cX.off} sisu --help search
- ------------------------------------------
- #{@cX.green}customise#{@cX.off} sisu --help customise
- ------------------------------------------
- SiSU's License
- #{@cX.green}license#{@cX.off} sisu --help license
-
-for help type 'sisu --help', 'sisu --help [help request]', 'man sisu', (or see the system or online documentation)
-WOK
- # #{@cX.cyan}sisu_convert#{@cX.off} program for initial (very basic and partial) conversion to sisu file format (html and word97 supported)
- end
- def abstract
- print <<WOK
-Features:
-#{@cX.cyan}(i)#{@cX.off} minimal markup requirement
-#{@cX.cyan}(ii)#{@cX.off} single file marked up for multiple outputs
-#{@cX.cyan}(iii)#{@cX.off} markup is simpler than html
-#{@cX.cyan}(iv)#{@cX.off} the simple syntax is mnemonic, influenced by mail/messaging/wiki markup practices
-#{@cX.cyan}(v)#{@cX.off} human readable, and easily writable
-#{@cX.cyan}(vi)#{@cX.off} multiple outputs include amongst others: html; pdf via LaTeX; (structured) XML; sql - currently PostgreSQL and sqlite; plaintext, (also texinfo)
-#{@cX.cyan}(vii)#{@cX.off} all text objects (headings and paragraphs) are numbered identically, for citation purposes, in all outputs (html, pdf, sql etc.)
-#{@cX.cyan}(viii)#{@cX.off} creates organised directory/file structure for output
-#{@cX.cyan}(ix)#{@cX.off} easily mapped with its clearly defined structure, with all text objects numbered, you know in advance where in each document output type, a bit of text will be found (eg. from an sql search, you know where to go to find the prepared html output or pdf etc.)... there is more
-#{@cX.cyan}(x)#{@cX.off} use of Dublin Core and other meta-tags to permit the addition of some semantic information on documents, and making easy integration of rdf/rss feeds etc.
-#{@cX.cyan}(xi)#{@cX.off} very easily skinnable, document appearance on a project/site wide, or document instance level easily controlled/changed
-#{@cX.cyan}(xii)#{@cX.off} in many cases a regular expression may be used (once in the document header) to define all or part of a documents structure obviating or reducing the need to provide structural markup within the document
-#{@cX.cyan}(xiii)#{@cX.off} is a batch processor for handling large document sets, ... though once generated they need not be re-generated, unless changes are made to the desired presentation of a particular output type
-#{@cX.cyan}(xiv)#{@cX.off} possible to pre-process, which permits the easy creation of standard form documents, and templates/term-sheets
-#{@cX.cyan}(xv)#{@cX.off} extremely modular, (thanks in no small part to Ruby) another output format required, write another module....
-#{@cX.cyan}(xvi)#{@cX.off} easy to update output formats (eg html, xhtml, latex/pdf produced can be updated in program and run against whole document set)
-#{@cX.cyan}(xvii)#{@cX.off} easy to add, modify, or have alternative syntax rules for input, should you need to
-#{@cX.cyan}(xviii)#{@cX.off} "Concordance" wordmap, consisting of all the words in a document and their (text object) locations within the text
-#{@cX.cyan}(xix)#{@cX.off} tied to revision control system, only code and marked up file need be backed up, to be sure of the much larger document set
-#{@cX.cyan}(xx)#{@cX.off} syntax highlighting files for markup, primarily (g)vim so far.
-
-SiSU was developed in relation to legal documents, and so is strong across a wide variety of texts (law, literature...), though weak on formulae/statistics, it does handle images. An assumption has been document sets that are to be preserved and maintained over time (also a result of the legal text origin). SiSU has been developed and used over a number of years, and the requirements to cover a wide range of documents have been thoroughly explored.
-
-There is more detailed information available on it from:
- #{@cX.blue}http://www.jus.uio.no/sisu#{@cX.off}
- * plaintext
- * html
- * XML (structured)
- * LaTeX/pdf
- * texinfo
- * sql (at present postgresql & sqlite)
-
-A couple of sample inputs and outputs:
-
-The markup for "War and Peace" (chosen because it is a large text & to test the use of SiSU on Project Gutenberg's plaintext), this is the markup, very little after the headers (there is an insert of their legal notices). Took no time at all, it is a particularly simple text to markup though
-A simple document and a more demanding document
- #{@cX.blue}http://www.jus.uio.no/sisu/sample/war.and.peace.leo.tolstoy.er20 http://www.jus.uio.no/sisu/sample/autonomy.markup1.er30#{@cX.off}
-Some resulting outputs:
- html #{@cX.blue}http://www.jus.uio.no/sisu/war.and.peace.leo.tolstoy/ http://www.jus.uio.no/sisu/autonomy.markup1/#{@cX.off}
- #{@cX.blue}http://www.jus.uio.no/sisu/autonomy.markup1/doc#{@cX.off}
- pdf #{@cX.blue}http://www.jus.uio.no/sisu/war.and.peace.leo.tolstoy/portrait http://www.jus.uio.no/sisu/autonomy.markup1/portrait
- #{@cX.blue}http://www.jus.uio.no/sisu/war.and.peace.leo.tolstoy/landscape http://www.jus.uio.no/sisu/autonomy.markup1/landscape#{@cX.off}
- plaintext #{@cX.blue}http://www.jus.uio.no/sisu/war.and.peace.leo.tolstoy/doc.txt http://www.jus.uio.no/sisu/autonomy.markup1/doc.txt#{@cX.off}
-WOK
- end
- def commands
- print <<WOK
-
- #{@cX.ruby}-a#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces plaintext with Unix linefeeds. Without markup, (object numbers are omitted), has footnotes at end of each para‐ graph that contains them. Modifier options available: --footnotes (default) or --endnotes and for linefeeds --unix (default) or --msdos
-
- #{@cX.ruby}-b#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces xhtml/XML output for browser viewing (sax parsing)
-
- #{@cX.ruby}-C#{@cX.off} initialise shared output directory (config files such as css and dtd files are not updated if they already exist unless modifier is used) #{@cX.ruby}-C --init=site#{@cX.off} configure/initialise site more extensive than -C on its own, shared output directory files/force update, existing shared output config files such as css and dtd files are updated if this modifier is used. in a new markup document working directory should initialise the corresponding output directory, though SiSU will automatically do this, the first time it is run (for processing) in a given directory.
-
- #{@cX.ruby}-c#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} screen toggle ansi screen colour on or off depending on default set (unless -c flag is used: if sisurc colour default is set to ´true´, output to screen will be with colour, if sisurc colour default is set to ´false´ or is undefined screen output will be without colour)
-
- #{@cX.ruby}-D#{@cX.off} #{@cX.green}[instruction]#{@cX.off} #{@cX.green}[filename]#{@cX.off} database instruction, see database section below
-
- #{@cX.ruby}-d#{@cX.off} #{@cX.green}[instruction]#{@cX.off} #{@cX.green}[filename]#{@cX.off} database instruction, see database section below [only -D currently available]
-
- #{@cX.ruby}-F#{@cX.off} generate examples of (naive) cgi search form for sqlite and pgsql depends on your already having used sisu to populate an sqlite and/or pgsql database, (the sqlite version scans the output directories for existing sisu_sqlite databases, so it is first necessary to create them, before generating the search form) see -d -D and the database section below. If the optional parameter webrick is passed, the cgi examples created will be set up to use the default port set for use by the webrick server, (otherwise the port is left blank and the system setting used, usually 80). The samples are dumped in the present work directory which must be writable, (with screen instructions given that they be copied to the cgi-bin directory).
-
- #{@cX.ruby}-H#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces html (css version) (creates html (using css)), with url link suffixes (.html .pdf etc.) omitted ("Hide"). For web servers that are confireud so as not to require file extensions to locate and serve files. [behaviour switched see -h]
-
- #{@cX.ruby}-h#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces html (hardlinks i.e. with name suffixes in links/local urls). html, with internal document links that include the document suffix, ie whether it is .html or .pdf (required for browsing directly off a file system, and works with most web servers). [behaviour switched see -H]
-
- #{@cX.ruby}-I#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces texinfo file with its myriad of possibilities
-
- #{@cX.ruby}-L#{@cX.off} prints license information
-
- #{@cX.ruby}-M#{@cX.off} #{@cX.green}[filename/wildcard/url]#{@cX.off} maintenance mode, files created for processing are not deleted, and their locations are indicated (also see -V)
-
- #{@cX.ruby}-m#{@cX.off} #{@cX.green}[filename/wildcard/url]#{@cX.off} create (new)metaVerse (used in all subsequent processing). Produce a meta file, the first step in processing, and the file all subsequent processing utilize. (Should usually be run together with other commands to ensure that the lated version of markup source document is used, i.e. add -m flag to other flags required).
-
- #{@cX.ruby}-N#{@cX.off} #{@cX.green}[filename/wildcard/url]#{@cX.off} document content certificate as md5 digest tree of document produced (as digest.txt), the digest for the document, and digests for each object contained within the document (together with information on software versions that produced it). Try -mNV for verbose digest output to screen
-
- #{@cX.ruby}-n#{@cX.off} #{@cX.green}[filename/wildcard/url]#{@cX.off} skip meta-markup (building of "metaverse"), this skips the equivalent of -m
-
- #{@cX.ruby}-p#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces LaTeX pdf (portrait & landscape). Default paper size is set in config file, or document header, or provided with additional command line parameter, e.g. --papersize='a4' preset sizes include: 'A4', U.S. 'letter' and 'legal' and book sizes 'A5' and 'B5' (system defaults to A4).
-
- #{@cX.ruby}-q#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} quiet, less output to screen
-
- #{@cX.ruby}-r#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} copies sisu output files to remote host using scp (default). This requires that sisurc.yml has been provided with information on hostname and user name, and that you have your "keys" and ssh agent in place.
-
- #{@cX.ruby}-S#{@cX.off} #produces a sisupod, a zipped sisu directory of markup files including sisu markup source files and the directories local configuration file, images and skins. Note: this only includes the configuration files or skins contained in ./_sisu not those in ~/.sisu The resulting tar gzip file has a .zip suffix added to the markup source directory name. To tar and gzip individual files see the -Z [filename/wildcard] option. Note: (this option is tested only with zsh)
-
- #{@cX.ruby}-S#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces a sisupod a zipped sisu of the content assocated with the specified sisu markup documnt, i.e. including sisu markup source file, (and associated documents if a master file, or available in multilingual versions), together with related images and skin. The resulting zipped file has a .zip suffix added to the markup source file name by default, though a .ssp suffix is also recognised. The directory structure of the unzipped file is understood by sisu, and sisu commands can be run within it. SiSU commands can be run against a sisupod contained in a local directory, or provided as a url on a remote site. As there is a security issue with skins provided by other users, they are not applied unless the flag --trust or --trusted is added to the command instruction, it is recommended that file that are not your own are treated as untrusted. This provides a convenient way of packing documents files for sending Note: if you wish to send multiple files, it quickly becomes more space efficient to tar and gzip the sisu markup directory, (without the _sisu_processing subdirectory) rather than the individual files for sending). See the -S option without [filename/wildcard]
-
- #{@cX.ruby}-T#{@cX.off} #{@cX.green}[filename/wildcard (*.termsheet.rb)]#{@cX.off} standard form document builder, preprocessing feature
-
- #{@cX.ruby}-t#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces plaintext with Unix linefeeds. Without markup, (object numbers are omitted), has footnotes at end of each para‐ graph that contains them. Modifier options available: --footnotes (default) or --endnotes and for linefeeds --unix (default) or --msdos
-
- #{@cX.ruby}-U#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} prints url list/map for the available processing flags options and resulting files that could be requested, (can be used to get a list of processing options in relation to a file, together with information on the output that would be produced), -u provides url mapping for those flags requested for processing. The default assumes sisu_webrick is running and provides webrick url mappings where appropriate, but these can be switched to file system paths in sisurc.yml
-
- #{@cX.ruby}-u#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} provides url mapping of output files for the flags requested for processing, also see -U
-
- #{@cX.ruby}-V#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} on its own provides SiSU version and environment information (sisu --help env)
-
- #{@cX.ruby}-V#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} even more verbose than -v the -V flag provides some additional information, also see -M
-
- #{@cX.ruby}-v#{@cX.off} on its own, provides SiSU version information.
-
- #{@cX.ruby}-v#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} provides more verbose output of what is being built, where it is being built (and error messages if any), as with -u flag provides a url mapping of files created for each of the processing flag requests
-
- #{@cX.ruby}-X#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces XML output with deep document structure, in the nature of dom
-
- #{@cX.ruby}-x#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces XML output (sax parsing)
-
- #{@cX.ruby}-W#{@cX.off} #{@cX.green}[port]#{@cX.off} starts ruby´s webrick webserver, points at sisu output directories (default port is set)
-
- #{@cX.ruby}-w#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces concordance, a rudimentary index of all the words in a document
-
- #{@cX.ruby}-Z#{@cX.off} Zap, if used with other processing flags #{@cX.green}deletes output files#{@cX.off} of the type about to be processed, prior to processing. If -Z is used as the lone processing related flag (or in conjunction with a combination of -[mMvVq]), will remove the related document output directory.
-
- #{@cX.ruby}-z#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces php (zend) [feature disabled, depreciated]
-
- #{@cX.ruby}--harvest#{@cX.off} #{@cX.green}*.ss[tm]#{@cX.off} makes two lists of sisu output based on the sisu markup documents in a directory: list of author and authors works (year and titles), and; list by topic with titles and author. Makes use of header metadata fields (author, title, date, topic_register). Can be used with -M and -R flags.
-
- #{@cX.ruby}databases#{@cX.off}
-
- #{@cX.ruby}dbi - database interface -D or --pgsql set for postgresql -d or --sqlite set for sqlite#{@cX.off}
-
- #{@cX.ruby}-D#{@cX.off} #{@cX.ruby}--create#{@cX.off} creates empty postgresql db and required tables & indexes (rb.dbi) [#{@cX.ruby}-d --create#{@cX.off} sqlite equivalent] it may be necessary to first run sisu #{@cX.ruby}-D#{@cX.off} #{@cX.ruby}--createdb#{@cX.off}
-
- #{@cX.ruby}-Di#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} or #{@cX.ruby}-D#{@cX.off} #{@cX.ruby}--import#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} imports data specified to postgresql db (rb.dbi) [#{@cX.ruby}-d --import#{@cX.off} sqlite equivalent]
-
- #{@cX.ruby}-Du#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} or #{@cX.ruby}-D#{@cX.off} #{@cX.ruby}--update#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} updates/imports specified data to postgresql db (rb.dbi) [#{@cX.ruby}-d --update#{@cX.off} sqlite equivalent]
-
- #{@cX.ruby}-D#{@cX.off} #{@cX.ruby}--remove#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} removes specified data to postgresql db (rb.dbi) [#{@cX.ruby}-d --remove#{@cX.off} sqlite equivalent]
-
- #{@cX.ruby}-D#{@cX.off} #{@cX.ruby}--dropall#{@cX.off} kills data" and drops (postgresql) db, tables & indexes [#{@cX.ruby}-d --dropall#{@cX.off} sqlite equivalent]
-
- #{@cX.ruby}-D#{@cX.off} #{@cX.ruby}--recreate#{@cX.off} kills data" and drops (postgresql or sqlite) db, tables & indexes, then creates an empty db with tables and indexes [#{@cX.ruby}-d --recreate#{@cX.off} sqlite equivalent]
-
- also see command #{@cX.green}shortcuts#{@cX.off}, and shorthand mappings for multiple flags
-WOK
- end
- def shortcuts
- cf_defaults=SiSU_Env::InfoProcessingFlag.new
- print <<WOK
-
- #{@cX.ruby}Shorthand for multiple flags#{@cX.off}
-
- #{@cX.ruby}--update#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} Checks existing file output and runs the flags required to update this output. This means that if only html and pdf output was requested on previous runs, only the -hp files will be applied, and only these will be generated this time, together with the summary. This can be very convenient, if you offer different outputs of different files, and just want to do the same again.
-
- #{@cX.ruby}-0#{@cX.off} to #{@cX.ruby}-5#{@cX.off} #{@cX.green}[filename or wildcard]#{@cX.off}
- #{@cX.green}Default shorthand mappings#{@cX.off} (note that the defaults can be changed in the #{@cX.green}sisurc.yml#{@cX.off} file):
-
- (these can be turned off if unavailable in sisurc.yml under program_set:)
- #{@cX.green}processing shortcut defaults set to:#{@cX.off}
- color defaut set (on==true) #{@cX.blue}#{cf_defaults.color}#{@cX.off}
- sisu -0 (also just "sisu") #{@cX.blue}#{cf_defaults.cf_0}#{@cX.off}
- sisu -1 #{@cX.blue}#{cf_defaults.cf_1}#{@cX.off}
- sisu -2 #{@cX.blue}#{cf_defaults.cf_2}#{@cX.off}
- sisu -3 #{@cX.blue}#{cf_defaults.cf_3}#{@cX.off}
- sisu -4 #{@cX.blue}#{cf_defaults.cf_4}#{@cX.off}
- sisu -5 #{@cX.blue}#{cf_defaults.cf_5}#{@cX.off}
- defaults may be changed in active sisurc.yml file under 'flag:'
-
- add -v for verbose mode and -c (color toggle), e.g.
- sisu -2vc [filename or wildcard]
-WOK
- end
- def modifiers
- print <<WOK
-
- #{@cX.ruby}Command flag modifiers#{@cX.off}
-
- #{@cX.ruby}--no-ocn#{@cX.off} [with -h -H or -p] switches off object citation numbering. Produce output without identifying numbers in margins of html or LaTeX/pdf output.
-
- #{@cX.ruby}--no-annotate#{@cX.off} strips output text of editor endnotes~[* square brackets ]~ denoted by asterisk or dagger/plus sign
-
- #{@cX.ruby}--no-asterisk#{@cX.off} strips output text of editor endnotes~[* square brackets ]~ denoted by asterisk
-
- #{@cX.ruby}--no-dagger#{@cX.off} strips output text of editor endnotes~[+ square brackets ]~ denoted by dagger/plus sign
-
-WOK
- end
- def misc
- <<WOK
- #{@cX.cyan}misc#{@cX.off}
- #{@cX.green}-s#{@cX.off} [filename or wildcard] #{@cX.green}spellcheck#{@cX.off} (aspell previously ispell
- \t#{@cX.green}mailer examples#{@cX.off}
- from vim mail.er10 (not gvim) issue command
- \t:! ruby -S mailer.rb instruction/landscape|a4l|portrait|a4p/ email@address/alias subject line
- \t:! ruby -S mailer.rb a4l ralph@amissah.com testing continues
- from vim mail.er10 use your vim alias \\mail or \\mutt (modify command line as required)
- #{@cX.green}feeds rss/rdf#{@cX.off}
- #{@cX.blue}-R #{@cX.off} (yaml|rss) extraction of semantic data into yaml file for auto build of xml feeds (rss, rdf) #{@cX.fuschia}[work area]#{@cX.off}
- #{@cX.green}-R #{@cX.off} yaml extraction of semantic data into yaml file for auto build of xml feeds (rss, rdf)
- #{@cX.green}-R #{@cX.off} rss creates rss2.0 feed
-WOK
- end
- def markup
- print <<WOK
-sisu
- Note: files for SiSU should be in UTF-8 character encoding.
-
- #{@cX.cyan}Data text markup#{@cX.off} (alternative to available html subset)
- #{@cX.green}% SiSU 0.38#{@cX.off} [statement on first line of document, declared file-type identifier, SiSU markup document, markup used is version 0.38]
- #{@cX.green}:A~#{@cX.off} heading/title [levels :A to :C available (and beneath that 1 to 6)]
- #{@cX.green}1~#{@cX.off}filename heading [segmentation level, levels 1 to 6 available]
- #{@cX.green}!{#{@cX.off}emphasis#{@cX.green}}!#{@cX.off}
- #{@cX.green}*{#{@cX.off}bold text#{@cX.green}}*#{@cX.off}
- #{@cX.green}_{#{@cX.off}underscore#{@cX.green}}_#{@cX.off}
- #{@cX.green}/{#{@cX.off}italics#{@cX.green}}/#{@cX.off}
- #{@cX.green}"{#{@cX.off}citation#{@cX.green}}"#{@cX.off}
- #{@cX.green}^{#{@cX.off}superscript#{@cX.green}}^#{@cX.off}
- #{@cX.green},{#{@cX.off}subscript#{@cX.green}},#{@cX.off}
- #{@cX.green}+{#{@cX.off}inserted text#{@cX.green}}+#{@cX.off}
- #{@cX.green}-{#{@cX.off}strikethrough#{@cX.green}}-#{@cX.off}
- ------------------------------------------
- #{@cX.cyan}Indentation and bullets#{@cX.off}
- #{@cX.green}_1#{@cX.off} indent paragraph one level
- #{@cX.green}_2#{@cX.off} indent paragraph two steps
- #{@cX.green}_*#{@cX.off} bullet text
- #{@cX.green}_1*#{@cX.off} bullet text, first indent
- ------------------------------------------
- #{@cX.cyan}Numbered List#{@cX.off} (not to be confused with headings/titles, (document structure))
- #{@cX.green}##{@cX.off} numbered list numbered list 1., 2., 3, etc.
- #{@cX.green}_##{@cX.off} numbered list numbered list indented second level a., b., c., d., etc.
- ------------------------------------------
- #{@cX.cyan}Endnotes#{@cX.off}
- #{@cX.green}~{#{@cX.off}footnote/endnote#{@cX.green}}~#{@cX.off} endnote#{@cX.green}~{#{@cX.off}self contained endnote marker & endnote in one#{@cX.green}}~#{@cX.off}
- #{@cX.green}~{*#{@cX.off}asterisk footnote/endnote#{@cX.green}}~#{@cX.off}
- editor's annotations, square bracket notes
- #{@cX.green}~[*#{@cX.off}numbered asterisk footnote/endnote series#{@cX.green}]~#{@cX.off}
- #{@cX.green}~[+#{@cX.off}numbered dagger/plus sign footnote/endnote series#{@cX.green}]~#{@cX.off}
- ---
- alternative endnote pair notation
- #{@cX.green}~^#{@cX.off} endnote marker
- #{@cX.green}^~#{@cX.off} endnote text following the paragraph in which the marker occurs
- ------------------------------------------
- #{@cX.cyan}Links#{@cX.off}
- http://url.org on its own would be automatically marked up and hyperlinked to itself
- #{@cX.green}{#{@cX.off} [text to link] #{@cX.green}}#{@cX.off}http://url.org
- #{@cX.green}{#{@cX.off}image.png#{@cX.green}}#{@cX.off}http://url.org
- #{@cX.green}{#{@cX.off}image.png#{@cX.green}}#{@cX.off}image #{@cX.green}{#{@cX.off}tux.png 64#{@cX.green}x#{@cX.off}80#{@cX.green}}#{@cX.off}image
- Linked image example
- #{@cX.green}{#{@cX.off} SiSU Geek Writer #{@cX.green}}#{@cX.off}http://www.jus.uio.no/sisu/ url example
- #{@cX.green}{#{@cX.off}tux.png 64#{@cX.green}x#{@cX.off}80 "a better way" #{@cX.green}}#{@cX.off}http://www.jus.uio.no/sisu/ image example with all options (width x height)
- Note: png and jpg support only (no gif support)
-
- shortcut - hyper-linked text with endnote providing the url information
- #{@cX.green}{~^#{@cX.off} [text to link] #{@cX.green}}#{@cX.off}http://url.org maps to #{@cX.green}{#{@cX.off} [text to link] #{@cX.green}}#{@cX.off}http://url.org #{@cX.green}~{#{@cX.off} http://url.org #{@cX.green}}~#{@cX.off}
- produces hyper-linked text within a document/paragraph, with an endnote providing the url for the text location used in the hyperlink
-
- shortcut:
- #{@cX.green}{#{@cX.off} [text to link] #{@cX.green}[3sS]}#{@cX.off}markup_source_filename.sst
- if a server host name has been provided/configured, will provide a list of available output types that would be generated using the shortcut command and the markup file provided, i.e. output generated using the command (as configured):
- "sisu -3sS markup_source_filename.sst"
- using server host, directory stub, filename to compose the link.
- ------------------------------------------
- adding fixed names in html, manual location marker/tagging
- #{@cX.green}*~[name]#{@cX.off} <a name="[name]">
- ------------------------------------------
- #{@cX.green}~##{@cX.off} unnumbered paragraph (place marker at end of paragraph)
- #{@cX.green}-##{@cX.off} unnumbered paragraph, delete when not required (place marker at end of paragraph) [used in dummy headings, eg. for segmented html]
- ------------------------------------------
- manual page breaks (LaTeX/pdf)
- #{@cX.green}<:pb>#{@cX.off} page break, which breaks a page, starting a new page in single column text and a new column in double column text
- #{@cX.green}<:pn>#{@cX.off} page new, which starts a new page, in both single and double column text (leaving an empty column in double column text if necessary).
- Note: page breaks are usually introduced to pdfs either as header instructions, indicating that pages should break at given levels
- ------------------------------------------
- #{@cX.cyan}Composite documents#{@cX.off}
- It is possible to build a document by creating a master document that requires other documents. The documents required may complete documents that could be generated independently, or they could be markup snippets, prepared so as to be easily available to be placed within another text. If the calling document is a master document (built mainly from other documents), it should be named with the suffix #{@cX.blue}.ssm#{@cX.off} Within this document you would provide information on the other documents that should be included within the text. These may be other documents that would be processed in a regular way, or markup bits prepared only for inclusion within a master document #{@cX.blue}.sst#{@cX.off} regular markup file, or #{@cX.blue}.ssi#{@cX.off} (insert/information) A secondary file of the composite document is built prior to processing with the same prefix and the suffix #{@cX.blue}.ssm.sst#{@cX.off}
-
- #{@cX.cyan}#basic sisu markup alternatives#{@cX.off}
- #{@cX.green}{#{@cX.off}filename.ssi#{@cX.green}}require#{@cX.off}
- #{@cX.green}<< {#{@cX.off}filename.ssi#{@cX.green}}#{@cX.off}
-
- #{@cX.cyan}#using textlink alternatives#{@cX.off}
- #{@cX.green}|#{@cX.off}filename.ssi#{@cX.green}|@|^|require#{@cX.off}
- #{@cX.green}<< |#{@cX.off}filename.ssi#{@cX.green}|@|^|#{@cX.off}
-
- #{@cX.cyan}#using thlnk alternatives#{@cX.off}
- #{@cX.green}<url:#{@cX.off}filename.ssi#{@cX.green}>require#{@cX.off}
- #{@cX.green}<< <url:#{@cX.off}filename.ssi#{@cX.green}>#{@cX.off}
-
- #{@cX.cyan}Composite documents - remote parts#{@cX.off}
- Composite documents may be built from remote parts, by using the composite document syntax with a url. This makes sense using either sisu regular syntax (which is just a convenient way of marking up), or thlnk syntax, which also recognises remote urls, and permits hyperlinking ascii to the url location.
-
- #{@cX.cyan}Remote documents#{@cX.off}
- SiSU will download and process remote locations if a url is provided instead of a filename. [this at present works only for sisu markup files without images]
-
- ------------------------------------------
- #{@cX.green}%#{@cX.off}#{@cX.off} add a comment to text, that will be removed prior to processing (place marker at beginning of line)
- #{@cX.green}\\#{@cX.off}#{@cX.off} escape a sepcial character, whether general: { } < > or contextual special characters, (in combination with other characters) ~ - _ / % ^ and occasionally ! # + ,
- #{@cX.green}%%#{@cX.off}#{@cX.off} same as above but recognised by vim folds for placing fold in document text, in addition to headers and headings
- ------------------------------------------
-
- #{@cX.ruby}More HELP on Markup#{@cX.off} markup help is available on:
- document wide instructions: headers (document structure)
- general text markup: headings; endnotes; tables (which also includes a note on preformatted text)
- configuration and customisation
- document or site wide customisation: customise; skin
-WOK
- help_markup
-# {../_sisu/image/tux.png http://www.jus.uio.no/sisu/ w=64 c=\"a better way\" }:image depreciated image eg
-# <!image http://www.jus.uio.no/sisu/ ../_sisu/image/tux.png width=\"64\" height=\"80\" !> old form
- end
- def example
- help_markup
- end
- def example_v1
- print <<WOK
-% SiSU 1.0
-
-@title: Working Sample Document
-
-@subtitle: Demonstrating markup
-
-@creator: Ralph Amissah
-
-@date:
-
-@markup: num_top=4
-
-@bold: [regular expression of words/phrases to be made bold]
-
-@italics: [regular expression of words/phrases to italicise]
-
-@links: { SiSU }http://www.jus.uio.no/sisu { FSF }http://www.fsf.org
-
-:A~ A Sample Document
-
-:B~ just for fun
-
-1~ This is Chapter One or Article One
-
-Ordinary Text follows here. The Title would be a Chapter or Article depending on the type of document you were working to produce.
-
-1~ This would be Chapter Two or Article Two
-
-And so on.
-
-Assuming sisu is configured properly so it has been instructed where to put the work files and ouput files, you would generate this text once saved, with the suffix .sst if saved as example.sst, by typing sisu -mhwxp example.sst while in the directory in which the file is saved.
-
-_1 -m initial processing, -h html (css based), -w concordance for html, -x xml, -p pdf output, generated via latex, there are of course additional options
-
-_1 for a listing type: sisu ~ commands
-
-_1 for an outline of sisu markup type: sisu ~ markup
-
-The example ends here.
-WOK
- help_markup
- end
- def example_v2
- print <<WOK
-% SiSU 2.0
-
-@title: Working Sample Document
- :subtitle: Demonstrating markup
-
-@creator:
- :author: Amissah, Ralph
-
-@date:
- :published: 2010-09-18
-
-@rights:
- :copyright: Ralph Amissah
-
-@make:
- :num_top: 1
- :bold: [regular expression of words/phrases to be made bold]
- :italics: [regular expression of words/phrases to italicise]
-
-@links:
- { SiSU }http://www.jus.uio.no/sisu { FSF }http://www.fsf.org
-
-:A~ @title @author
-
-:B~ just for fun
-
-1~ This is Chapter One or Article One
-
-Ordinary Text follows here. The Title would be a Chapter or Article depending on the type of document you were working to produce.
-
-1~ This would be Chapter Two or Article Two
-
-And so on.
-
-Assuming sisu is configured properly so it has been instructed where to put the work files and ouput files, you would generate this text once saved, with the suffix .sst if saved as example.sst, by typing sisu -mhwxp example.sst while in the directory in which the file is saved.
-
-_1 --dal initial processing, --html (css based), --concordance (html), --epub, --odt, --pdf output, generated via LaTeX, there are of course additional options
-
-_1 for a listing type: sisu ~ commands
-
-_1 for an outline of sisu markup type: sisu ~ markup
-
-The example ends here.
-WOK
- help_markup
- end
- def headers
- print <<WOK
-Header tags appear at the beginning of a document and provide meta information on the document (such as the Dublin Core), or information as to how the document as a whole is to be processed.
-All header instructions take either the form #{@cX.green}@headername:#{@cX.off} followed on the next line by an indented sub-category header if any #{@cX.green}:sub-headername:#{@cX.off}.
-#{@cX.green}@indentifier:#{@cX.off} information or instructions
-where the #{@cX.green}"identifier"#{@cX.off} is a tag recognised by the program, and the #{@cX.green}"information"#{@cX.off} or #{@cX.green}"instructions"#{@cX.off} belong to the tag/indentifier specified
- Note: a header where used should only be used once; all headers apart from @title: are optional; the @structure: or 0~toc header is used to describe document structure, and can be useful to know.
-This is a sample header (#{@cX.fuschia}Dublin Core in fuschia,#{@cX.off} #{@cX.cyan}other information headers in cyan,#{@cX.off} #{@cX.ruby}markup instructions in red#{@cX.off}):
-
-#{@cX.fuschia}@title:#{@cX.off} My Title - This is now the Title of the Document and used as such
- #{@cX.cyan}:subtitle:#{@cX.off} The Subtitle if any
-
-#{@cX.fuschia}@creator:#{@cX.off}
- #{@cX.fuschia}:author:#{@cX.off} Surname, Other names (if more than one author separate author names with a semi colon, if name is of an institution just write name or the name contains a comma enclose in quotation marks)
-
-#{@cX.fuschia}@classify:#{@cX.off}
- #{@cX.fuschia}:topic_register:#{@cX.off} [e.g.:] text markup language; application:text processing;output:html|xml|latex|pdf|sql
-
-#{@cX.fuschia}@subject:#{@cX.off} (whatever your subject)
-
-#{@cX.fuschia}@description:#{@cX.off}
-
-#{@cX.fuschia}@publisher:#{@cX.off}
-
-#{@cX.fuschia}@contributor:#{@cX.off}
-
-#{@cX.fuschia}@translator:#{@cX.off} [or @translated_by:]
-
-#{@cX.fuschia}@illustrator:#{@cX.off} [or @illustrated_by:]
-
-#{@cX.fuschia}@prepared_by:#{@cX.off} [or @digitized_by:]
-
-#{@cX.fuschia}@date:#{@cX.off} 2000-08-27
-\t[ also #{@cX.fuschia}@date.created:#{@cX.off} #{@cX.fuschia}@date.issued:#{@cX.off} #{@cX.fuschia}@date.available:#{@cX.off} #{@cX.fuschia}@date.valid:#{@cX.off} #{@cX.fuschia}@date.modified:#{@cX.off} ]
-
-#{@cX.fuschia}@type:#{@cX.off} article
-
-#{@cX.fuschia}@format:#{@cX.off}
-
-#{@cX.fuschia}@identifier:#{@cX.off}
-
-#{@cX.fuschia}@source:#{@cX.off}
-
-#{@cX.fuschia}@language:#{@cX.off} [or @language.document:] [country code for language if available, or language, English, en is the default setting] (en - English, fr - French, de - German, it - Italian, es - Spanish, pt - Portuguese, sv - Swedish, da - Danish, fi - Finnish, no - Norwegian, is - Icelandic, nl - Dutch, et - Estonian, hu - Hungarian, pl - Polish, ro - Romanian, ru - Russian, el - Greek, uk - Ukranian, tr - Turkish, sk - Slovak, sl - Slovenian, hr - Croatian, cs - Czech, bg - Bulgarian ) [however, encodings are not available for all of the languages listed.]
-
-#{@cX.fuschia}@language.original:#{@cX.off}
-original language in which the work was published
-
-#{@cX.fuschia}@papersize:#{@cX.off}
-(A4|US_letter|book_B5|book_A5|US_legal)
-
-#{@cX.fuschia}@relation:#{@cX.off}
-
-#{@cX.fuschia}@coverage:#{@cX.off}
-
-#{@cX.fuschia}@rights:#{@cX.off} copyright, all rights reserved, public domain, copyleft, creative commons variant, etc.
-
-#{@cX.cyan}@owner:#{@cX.off}
-
-#{@cX.cyan}@keywords:#{@cX.off} text document generation processing management latex pdf structured xml citation [your keywords here, used for example by rss feeds, and in sql searches]
-
-#{@cX.cyan}@abstract:#{@cX.off} [paper abstract, placed after table of contents]
-
-#{@cX.cyan}@comment:#{@cX.off} [...]
-
-#{@cX.cyan}@catalogue:#{@cX.off} #{@cX.green}loc=#{@cX.off}[Library of Congress classification]; #{@cX.green}dewey=#{@cX.off}[Dewey classification]; #{@cX.green}isbn=#{@cX.off}[ISBN]; #{@cX.green}pg=#{@cX.off}[Project Gutenberg text number]
-
-#{@cX.cyan}@classify_loc:#{@cX.off} [Library of Congress classification]
-
-#{@cX.cyan}@classify_dewey:#{@cX.off} [Dewey classification]
-
-#{@cX.cyan}@classify_isbn:#{@cX.off} [ISBN]
-
-#{@cX.cyan}@classify_pg:#{@cX.off} [Project Gutenberg text number]
-
-#{@cX.cyan}@prefix_a:#{@cX.off} [prefix is placed just before table of contents - not implemented]
-
-#{@cX.cyan}@prefix_b:#{@cX.off} or #{@cX.cyan}@prefix:#{@cX.off} [prefix is placed just after table of contents]
-
-#{@cX.cyan}@rcs:#{@cX.off} $Id$ [used by rcs or cvs to embed version (revision control) information into document, rcs or cvs can usefully provide a history of updates to a document ]
-
-#{@cX.ruby}@structure:#{@cX.off} PART; CHAPTER; SECTION; ARTICLE; none; none;
-optional, document structure can be defined by words to match or regular expression (the regular expression is assumed to start at the beginning of a line of text i.e. ^) default markers :A~ to :C~ and 1~ to 6~ can be used within text instead, without this header tag, and may be used to supplement the instructions provided in this header tag if provided (@structure: is a synonym for @toc:)
-
-#{@cX.ruby}@level:#{@cX.off} newpage=3; breakpage=4 [paragraph level, used by latex to breakpages, the page is optional eg. in newpage]
-
-#{@cX.ruby}@markup:#{@cX.off} num_top=4 [various markup instructions, eg: num_top=4 headings tobe numbered, starting at heading level 4... the default is to provide 3 levels, as in 1 level 4, 1.1 level 5, 1.1.1 level 6, markup to be merged within level]
-
-#{@cX.ruby}@bold:#{@cX.off} [regular expression of words/phrases to be made bold]
-
-#{@cX.ruby}@italics:#{@cX.off} [regular expression of words/phrases to italize]
-
-#{@cX.ruby}@vocabulary:#{@cX.off} name of taxonomy/vocabulary/wordlist to use against document
-
-#{@cX.ruby}@skin:#{@cX.off} skin_doc_[name_of_desired_document_skin]
-
-#{@cX.ruby}@links:#{@cX.off} { SiSU }http://www.jus.uio.no/sisu/; { FSF }http://www.fsf.org
-
-#{@cX.ruby}@@promo:#{@cX.off} sisu, ruby, search_libre_docs, open_society [places content in right pane in html, makes use of list.yml and promo.yml, commented out sample in document sample: free_as_in_freedom.richard_stallman_crusade_for_free_software.sam_williams.sst]
-
-#{@cX.grey}% header ends here, NB only @title: is mandatory [this would be a comment]#{@cX.off}
-#{@cX.grey}% NOTE: headings/levels below refer to 0.38 expermental markup
- (a conversion script provided in sisu-examples, modify.rb makes conversion between 0.37 and 0.38 markup simple)#{@cX.off}
-
-#{@cX.blue}:A~#{@cX.off} Top level heading [this is usually the same as the title @title: ]
-
-#{@cX.blue}:B~#{@cX.off} Second level heading [this is a heading level divider]
-
-#{@cX.blue}:C~#{@cX.off} Third level heading [this is a heading level divider]
-
-#{@cX.blue}1~#{@cX.off} Top level heading preceding substantive text of document or sub-heading 5, the heading level that would normally be marked 1. or 2. or 3. etc. in a document
-
-#{@cX.blue}2~#{@cX.off} Second level heading preceding substantive text of document or sub-heading 6, the heading level that would normally be marked 1.1 or 1.2 or 1.3 or 2.1 etc in a document
-
-#{@cX.blue}3~#{@cX.off} Third level heading preceding substantive text of document, that would normally be marked 1.1.1 or 1.1.2 or 1.2.1 or 2.1.1 etc. in a document
-
-WOK
- help_markup
- end
- def customise
- print <<WOK
- There are a number of files that control the appearance of a site or a document i.e.
-
- #{@cX.blue}(i)#{@cX.off} files that control #{@cX.green}site-wide appearance#{@cX.off}:
-
- #{@cX.green}defaults.rb#{@cX.off} initial values used by program, not necessary to change
-
- skins are placed in a configuration directory beneath the markup directory ./_sisu/skin/doc or in ~/.sisu/skin/doc
- if a skin is also to be used for a directory or site wide presentations, rather than being called for a single document then a softlink is placed from ~/.sisu/skin/dir or ~/.sisu/skin/site respectively to the relevant skin within ~/.sisu/skin/doc
-
- rules for skin loading are in #{@cX.green}sysenv.rb#{@cX.off}
- the skin loading heuristics / hierarchy is currently as follows:
-
- a. if there is a skin requested within a document, thent that skin is used
- 0~skin skin_lm (would load skin ~/.sisu/skin/doc/skin_lm.rb)
-
- b. use it if there is a "dir" skin with the same name as the source directory "stub" i.e.
- if working in a directory called /home/myhome/workdir/lm
- then if ~/.sisu/skin/dir/skin_lm.rb were found it would be used and skin_lm.rb would be a softlink to the relevant skin in the document skin directory (where all the actual skins are kept)
-
- x. [additionally though discouraged a special rule can be set up in sysenv AddSkin.select (which could override b if desired)]
-
- #{@cX.green}skin_site_#{@cX.off}#{@cX.cyan}[name of site skin in use]#{@cX.off}#{@cX.green}.rb#{@cX.off} this file is called by skin.rb
- if there are several such files, site appearance may be changed by
- requesting the skin_site desired from skin.rb
- and
-
- #{@cX.blue}(ii)#{@cX.off} presentation maintenance:
- if you have a body of documents the easiest way to give them a particular appearance/skin, is to associate that directory with a skin, all files in that directory take on the specified appearance, changing appearance of documents once directories are set up is as simple as copying the files from one directory to another (or renaming the directory); or associating the directory with a different skin.
-
- see also directories
-WOK
- end
- def configure
- print <<WOK
- see the following topics
- install
- setup
- and note for initial configuration it is necessary to run:
- sisu -C
- (this places the default CSS files and DTDs in place)
-WOK
- end
- def path
- help_env
- puts <<WOK
-
-If you have problems check permissions (and if in home directory ownership).
-
-#{@cX.green}directory paths as currently set#{@cX.off}:
- output docs: #{@cX.blue}#{@env.path.webserv}#{@cX.off}
- cgi scripts: #{@cX.blue}#{@env.path.cgi}#{@cX.off}
- processing: #{@cX.blue}#{@env.processing_path.processing}#{@cX.off}
- sisu meta markup: #{@cX.blue}#{@env.processing_path.dal}#{@cX.off}
- html tuning: #{@cX.blue}#{@env.processing_path.tune}#{@cX.off}
- latex: #{@cX.blue}#{@env.processing_path.tex}#{@cX.off}
- texinfo: #{@cX.blue}#{@env.processing_path.texi}#{@cX.off}
- images:
- source: #{@cX.blue}#{@env.path.image_source}#{@cX.off}
- latex source: #{@cX.blue}#{@env.path.image_source_include}#{@cX.off}
- note images are also sourced from within your pwd - #{@cX.blue}#{Dir.pwd}/_sisu/image#{@cX.off} if it exists
- #{@cX.grey}[ texinfo: #{@env.processing_path.texinfo} - check duplication ]#{@cX.off}
-
- #{@cX.green}resource configuraton files#{@cX.off} to change the paths specified above, are searched for in the following order:
- under the current SiSU markup data directory: #{@cX.blue}#{Dir.pwd}/_sisu/sisurc.yml#{@cX.off}
- under the home directory ~/.sisu: #{@cX.blue}#{@env.path.home}/.sisu/sisurc.yml#{@cX.off}
- in the "/etc" directory: #{@cX.blue}#{@env.path.etc}/sisurc.yml#{@cX.off}
- default file paths are set by the program SiSU
-
- #{@cX.green}skins#{@cX.off} for document appearances on a site, directory or per document basis are located in subdirectories #{@cX.blue}doc/#{@cX.off} #{@cX.blue}dir/#{@cX.off} and #{@cX.blue}site/#{@cX.off} within:
- #{@cX.blue}#{Dir.pwd}/_sisu/skin#{@cX.off}
- #{@cX.blue}#{@env.path.home}/.sisu/skin#{@cX.off}
- #{@cX.blue}#{@env.path.etc}/skin#{@cX.off}
- default appearances are set by the program SiSU in the absence of skins
-
- #{@cX.green}Note on subdirectories for output documents#{@cX.off}
- The last part of the name of the directory you choose to work from is used as the major sub-directory in which output files are placed,
- i.e. if you are working in a directory called #{@cX.blue}#{@env.path.home}/ebook#{@cX.off}
- the output files will be placed in a sub-directory named after the processed text within #{@cX.blue}#{@env.path.webserv}/ebook#{@cX.off}
- ( Within this major sub-directory, a sub-directory is made with the name of each document processed, into which output files - html, pdf, xml, plaintext etc. are placed (texinfo being an exception at present) )
-
- #{@cX.green}sisu -C#{@cX.off} [#{@cX.green}--init=site#{@cX.off}] configure/initialise shared output directory files initialize shared output directory (config files such as css and dtd files are not updated if they already exist unless modifier is used). -C --init=site configure/initialise site more extensive than -C on its own, shared output directory files/force update, existing shared output config files such as css and dtd files are updated if this modifier is used. in a new markup document working directory should initialise the corresponding output directory, though SiSU will automatically do this, the first time it is run (for processing) in a given directory.
-
- There are additional details, ... this should get you started.
-
- See also
- sisu --help directory
-WOK
- help_env
- end
- def directories
- help_env
- print <<WOK
-
- the directory structure used by sisu is controlled by the configuration files #{@cX.blue}sisurc.yml#{@cX.off}
-
- there are separate directories for the following:
-
- (a) #{@cX.green}data directories#{@cX.off}
- the directories in which you place the SiSU marked-up data files that are to be processed
- there may be as many directories and files as you choose to have,
- you are currently in: #{@cX.blue}#{Dir.pwd}#{@cX.off}
-
- (b) #{@cX.green}output directory#{@cX.off}
- by default files in the data directory are output to
- a sub-directory within the output directory (usually the web document directory), or to an sql database
- of the same name as the stub or last portion of the data directory name
- by way of example
- you are currently in: #{@cX.blue}#{Dir.pwd}#{@cX.off}
- the document output directory is set to: #{@cX.blue}#{@env.path.webserv}#{@cX.off}
- documents from your current directory will be placed in: #{@cX.blue}#{@env.path.output}#{@cX.off}
-
- the final output is placed in subdirectories either as configured by default in the program or as modified by SiSU configuration files
- subdirectories are created within the main output directory, based on the name of the data directory
- subsubdirectories are created the sub-directory contained in the main output directory based on the name of the file
- (subdirectories are created in this (output) sub-directory named after the data file)
- for this reason it is a convention to give descriptive names to the data file.
- The default output directory is #{@cX.green}~/sisu_www#{@cX.off}
- The output directory is currently set to:
- #{@cX.blue}#{@env.path.webserv}#{@cX.off}
- Output files, are currently set to be produced in:
- processed document output: #{@cX.blue}#{@env.path.output}#{@cX.off}
- a document in the current directory #{@cX.blue}#{Dir.pwd}#{@cX.off}
- will have its output placed in: #{@cX.blue}#{@env.path.output}/#{@output_stub}#{@cX.off}
-
- NB: the verbose flag v included in the generate command string, should
- result in a list of output filenames together with their paths.
- The flag U on its own (e.g. sisu -U gpl3.fsf.sst) should provide a list
- of output files that could be generated together with their paths.
-
- (c) #{@cX.green}configuration files#{@cX.off}
- SiSU program defaults are set within the program, and may be adjusted in the yml file #{@cX.blue}sisurc.yml#{@cX.off} which is searched for in the following paths, which are prioritized as listed (the first one found is loaded):
-###
- under the current SiSU markup data directory: #{@cX.blue}#{@env.path.pwd}/_sisu/sisurc.yml#{@cX.off}
- under the home directory ~/.sisu: #{@cX.blue}#{@env.path.home}/.sisu/sisurc.yml#{@cX.off}
- in the "/etc" directory: #{@cX.blue}#{@env.path.etc}/sisurc.yml#{@cX.off}
-
- (d) #{@cX.green}processing directories#{@cX.off} sisu creates a number of processing directories,
- where these should be located can be modified in #{@cX.green}~/.sisu/sisurc.yml#{@cX.off}
- work directories include the following:
- root working directory #{@cX.blue}#{@env.processing_path.processing}#{@cX.off}
- metaverse intermediate markup #{@cX.blue}#{@env.processing_path.dal}#{@cX.off}
- tune html (for special html/navigation pages) #{@cX.blue}#{@env.processing_path.tune}#{@cX.off}
- tex for latex and pdf #{@cX.blue}#{@env.processing_path.tex}#{@cX.off}
- texinfo for texinfo and info files #{@cX.blue}#{@env.processing_path.texi}#{@cX.off}
-
- These files are usually used only for processing and removed. There is a maintenance flag to keep them.
-
- (e) #{@cX.green}images#{@cX.off}
- there are a number of categories of images,
- NB the document markup directory is initialised by issuing the command
- sisu -C --init=site
- this creates the output sub-directory, and makes necessary image links, and
- copies images specific to the markup directory if there are any.
-
- general images for the sisu program that come with the package,
- that are the defaults used by sisu, these are installed with the program
-
- images that the author wishes to include within documents,
- these should be placed in a sub-directory
- within the current document markup directory called #{@cX.green}_sisu/image#{@cX.off}
-
- if an instruction is given to process a remote document which contains
- downloadable images, they are included in a sub-directory of the current
- markup directory #{@cX.green}_sisu/sisu/image_external#{@cX.off} that is created
- if necessary for the purpose.
-
- finally skins may specify/indicate other image directories. see sisu --help skin
- any site images required by the skin instruction must be copied in to the
- site image directory (it may be necessary to do manual configuration depending
- on what you are trying to achieve).
-
- (f) #{@cX.green}program directories#{@cX.off}
- sisu --help install
- sisu ~ install
-
- See also
- sisu --help path
-WOK
- help_env
- end
- def program_found?(program)
- if program
- rc=if SiSU_Env::InfoSettings.new.program?(program)
- SiSU_Env::InfoSettings.new.program?(program)
- else ''
- end
- if program =='rmagick'; program='identify' #rmagick is ruby lib uses imagemagick's identify
- end
- bin=if SiSU_Env::SystemCall.new.program_found?(program)
- SiSU_Env::SystemCall.new.program_found?(program)
- else 'false'
- end
- else bin,rc='false','false'
- end
- if program; "#{@cX.blue}#{program}#{@cX.off} bin: #{@cX.brown}#{bin}#{@cX.off} rc: #{@cX.brown}#{rc}#{@cX.off}"
- else "bin: #{@cX.brown}#{bin}#{@cX.off} rc: #{@cX.brown}#{rc}#{@cX.off}"
- end
- end
- def sisu_version
- version=SiSU_Env::InfoVersion.instance.get_version
- rb_ver=SiSU_Env::InfoVersion.instance.rbversion
- if version[:version]
- SiSU_Screen::Ansi.new('-v',version[:project],version[:version],version[:date_stamp],version[:date],rb_ver).version
- else puts 'SiSU version information not available'
- end
- end
- def rhost
- @ls=leading_spaces=' '*49
- @rhost=SiSU_Env::InfoRemoteHost.new.rhost
- def r1
- if @rhost.r1; @rhost.r1 + "\n"
- else ''
- end
- end
- def r2
- if @rhost.r2; @ls + @rhost.r2 + "\n"
- else ''
- end
- end
- def r3
- if @rhost.r3; @ls + @rhost.r3 + "\n"
- else ''
- end
- end
- def r4
- if @rhost.r4; @ls + @rhost.r4 + "\n"
- else ''
- end
- end
- def r5
- if @rhost.r5; @ls + @rhost.r5 + "\n"
- else ''
- end
- end
- def r6
- if @rhost.r6; @ls + @rhost.r6 + "\n"
- else ''
- end
- end
- def note
- msg='(remote settings user and host set in sisurc.yml under remote:)'
- if @rhost.r1; @ls + msg
- else msg
- end
- end
- self
- end
- def environment
- cf_defaults=SiSU_Env::InfoProcessingFlag.new
- sisu_version
- x =<<WOK
- #{@cX.green}current and output directories#{@cX.off}
- user: #{@cX.blue}#{@env.user}#{@cX.off}
- home: #{@cX.blue}#{@env.path.home}#{@cX.off}
- remote set [remote user]@[remote host]: #{@cX.blue}#{rhost.r1}#{rhost.r2}#{rhost.r3}#{rhost.r4}#{rhost.r5}#{rhost.r6}#{@cX.off}#{rhost.note}
- locale (encoding, UTF-8 desired): #{@cX.blue}#{@env.locale}#{@cX.off}
- current directory: #{@cX.blue}#{@env.path.pwd}#{@cX.off}
- document output root directory set to: #{@cX.blue}#{@env.path.webserv}#{@cX.off}
- documents from current directory placed in: #{@cX.blue}#{@env.path.output}#{@cX.off}
- webrick url: #{@cX.blue}#{@env.url.webserv_base_cgi}#{@cX.off}
- (to start webrick server 'sisu -W')
- sqlite db for present directory: #{@cX.blue}sqlite #{@env.path.output}/sisu_sqlite.db#{@cX.off}
- postgresql port set to: #{@cX.blue}#{@db.psql.port}#{@cX.off}
- postgresql db for present directory: #{@cX.blue}#{@db.psql.db}#{@cX.off}
- [first create manually if necessary: 'createdb #{@db.psql.db}']
-
- [generated sqlite cgi search form]: #{@cX.blue}#{@env.url.webserv_base_cgi}/cgi-bin/sisu_sqlite.cgi#{@cX.off}
- [generated postgresql cgi search form]: #{@cX.blue}#{@env.url.webserv_base_cgi}/cgi-bin/sisu_pgsql.cgi#{@cX.off}
- (to generate 'sisu -F' or 'sisu -F webrick')
- #{@cX.green}configuration files#{@cX.off}
- sisurc.yml used: #{@cX.blue}#{@env.path.yamlrc}#{@cX.off}
- configuration information search path: #{@cX.blue}#{@env.path.rc.join(', ')}#{@cX.off}
- (directory also relevant for skins and images)
- digest (md5 or sha256): #{@cX.blue}#{@env.digest.type}#{@cX.off}
- papersize set (LaTeX/pdf): #{@cX.blue}#{@env.papersize}#{@cX.off}
- (digest and papersize can be changed in sisurc.yml under default:)
- #{@cX.green}intermediate processing#{@cX.off}
- processing directory: #{@cX.blue}#{@env.processing_path.processing}#{@cX.off}
- (to keep processing output, use -M flag)
- #{@cX.green}programs selected for viewing output#{@cX.off}
- text editor: #{@cX.blue}#{@env.program.text_editor}#{@cX.off}
- web browser: #{@cX.blue}#{@env.program.web_browser}#{@cX.off}
- console web browser: #{@cX.blue}#{@env.program.console_web_browser}#{@cX.off}
- pdf viewer: #{@cX.blue}#{@env.program.pdf_viewer}#{@cX.off}
- xml viewer: #{@cX.blue}#{@env.program.xml_editor}#{@cX.off}
- odf viewer: #{@cX.blue}#{@env.program.odf_viewer}#{@cX.off}
- epub viewer: #{@cX.blue}#{@env.program.epub_viewer}#{@cX.off}
- (default selections can be changed in sisurc.yml under program_select:)
- #{@cX.green}programs used if available#{@cX.off}
- word count: #{program_found?(@env.program.wc)}
- imagemagick/rmagick: #{program_found?(@env.program.rmagick)}
- tidy: #{program_found?(@env.program.tidy)}
- rexml: #{program_found?(@env.program.rexml)}
- latex to pdf: #{program_found?(@env.program.pdflatex)}
- postgresql: #{program_found?(@env.program.postgresql)}
- sqlite: #{program_found?(@env.program.sqlite)}
- (these can be turned off if unavailable in sisurc.yml under program_set:)
- #{@cX.green}processing shortcut defaults set to:#{@cX.off}
- color defaut set (on==true) #{@cX.blue}#{cf_defaults.color}#{@cX.off}
- sisu -0 #{@cX.blue}#{cf_defaults.cf_0}#{@cX.off} [set as default]
- sisu -1 #{@cX.blue}#{cf_defaults.cf_1}#{@cX.off}
- sisu -2 #{@cX.blue}#{cf_defaults.cf_2}#{@cX.off}
- sisu -3 #{@cX.blue}#{cf_defaults.cf_3}#{@cX.off}
- sisu -4 #{@cX.blue}#{cf_defaults.cf_4}#{@cX.off}
- sisu -5 #{@cX.blue}#{cf_defaults.cf_5}#{@cX.off}
- (defaults may be changed in active sisurc.yml file under flag:)
- #{@cX.green}special powers, risky operations set:#{@cX.off}
- zap (delete output directories) #{@cX.blue}#{SiSU_Env::InfoSettings.new.permission?('zap')}#{@cX.off}
- css copy (copy over css files) #{@cX.blue}#{SiSU_Env::InfoSettings.new.permission?('css_modify')}#{@cX.off}
- (true/false defaults may be changed in active sisurc.yml file under permissions_set:)
-
-NOTE: for HELP type 'sisu --help', 'sisu --help [help request]', 'man sisu', (or see the system or online documentation)
-WOK
-print x
- end
- def dublin_core
- print <<WOK
-@title:
-
-@subtitle: [is added to title for purposes of Dublin Core description]
-
-@creator:
-
-@type:
-
-@subject:
-
-@date: [ccyy-mm-dd]
-
-@date.created:
-
-@date.issued:
-
-@date.available:
-
-@date.valid:
-
-@date.modified:
-
-@source:
-
-@language: en
-
-@papersize: A4
-
-@relation:
-
-@coverage:
-
-@rights:
-
-WOK
- end
- def headings
- print <<WOK
-These are not required, a header is quicker to prepare if a documents structure can be defined by matching words or a regular expression, see headers).
-
-@structure: PART; CHAPTER; SECTION; ARTICLE; none; none;
-
-structure can be defined by a match words or regular expression (the regular expression is assumed to start at the beginning of a line of text i.e. ^)
-
-The following heading or level (structuring) defaults are available (for use instead of or together with @structure: header):
-
- 1~ 2~ 3~ 4~ 5~ 6~
-
-or, [0.38]
-
- :A~ :B~ :C~ 1~ 2~ 3~
-
-Heading tags take either of the forms above, ranging from 1-6
-
-They appear at the beginning of the line on which a heading appears,
-the number indicates the level of the heading with level 1 being a title,
-
-segments (in html output) are by default created on level 4
-(segmented text is split/segmented on level 4, and
-assigned a file name automatically according to the title number,
-unless you explicitly specify otherwise)
-
-eg.
-
-% SiSU 0.16 - 0.37
-
-1~ Document Title
-
-2~ Document Subtitle whatever it is
-
-3~ Part
-
-4~ Chapter
-
-5~ Heading
-
-6~ sub-heading
-
-in the 0.38 notation this maps to:
-
-% SiSU 0.38
-
-:A~ Document Title
-
-:B~ Document Subtitle whatever it is
-
-:C~ Part
-
-1~ Chapter
-
-2~ Heading
-
-3~ sub-heading
-
-(a conversion script provided in sisu-examples, modify.rb makes conversion between 0.37 and 0.38 markup simple)
-
-Normal text would follow each heading level as appropriate, though it is most usual to start with ordinary writing beneath level 4 as it is at this level that segments are created.
-
-Automatic numbering of paragraphs is usually set to start at level 4 trough level 6 and takes the form 1. then 1.1 then 1.1.1 this being given as a Header tag 0~ There may be up to 6 levels in a document,
-
-If auto-numbering is on, then for html output the segments created (on level 4 headings) are automatically assigned the name of the title number.
-However, you may indicate an alternative set of key/title words, with one of the following instructions:
-4~filename This is a Section or Subject Heading
-
-If there is a strictly discernable word appearing at the beginning of the line in a document that identifies the level,
-the words can be used to identify the levels in a header tag:
-0~toc Part; Chapter; Section; Article; none; none
-instead of providing individual heading tags
-
-sisu structure, (0.38) alternative notation, A,B,C,1,2,3 mapping to 1,2,3,4,5,6
-
- SiSU has in effect two sets of levels to be considered
-
- 1-3 headings/levels, (A-C [0.38]) pre-ordinary paragraphs /pre-substantive text, and
-
- 4-6 headings/levels, (1-3 [0.38]) levels which are followed by ordinary text.
-
- This may be conceptualised as levels A,B,C, 1,2,3, and using such letter number notation, in effect:
-
- A must exist, optional B and C follow in the sequence
-
- 1 must exist, optional 2 and 3 follow in the sequence
-
- i.e. there are two independent heading level sequences A,B,C and 1,2,3 or using the standard notation 1,2,3 and 4,5,6
-
-on the positive side: (a) the A,B,C,1,2,3 alternative makes explicit an aspect of structuring documents in SiSU that is not otherwise obvious to the newcomer (though it appears more complicated, is more in your face and likely to be understood fairly quickly); (b) the substantive text follows levels 1,2,3 and it is 'nice' to do most work in those levels
-
-WOK
- end
- def languages
- lang=SiSU_i18n::Languages.new.language.table
- lang.each_value do |lng|
- if lng[:t] == lng[:n]
- puts "#{lng[:c]}: #{lng[:t]}"
- else
- puts "#{lng[:c]}: #{lng[:t]} (#{lng[:n]})"
- end
- end
- puts <<WOK
-
- Multi-language Document File Naming and Directory Mapping
-
- A list of language codes and languages that may be available for most output formats. These are for the most part ISO 639/1 and where there is a departure it follows those made by po4a, and the languages supported will be limited (at this time) to those supported by polyglossia. (SiSU markup text is stored in Unicode so some output formats are served by this, for example, html and sql had no problem with Chinese, pdfs would be a problem as this is not (yet?) suported by xetex and polyglossia. SiSU parses left to right and would have problems with right to left languages.)
-
- If the same document exists in different language versions, a directory structure, or a filenaming convention may be followed. Using Spannish as the sample language code (es) [filename]~[language code].sst
-
- The simplest now is to place each document in a sub-directory which has the language code as a name, if this convention is used it is preferable that all files are placed by language in the appropriate language sub-directory ... e.g.
- ./en/filename.sst
- ./es/filename.sst
-
- Alternatively files may all be placed in the same directory with the language and named using a tilde and the language code as shown:
- filename~es.sst
-
- within sisurc.yml under the heading
- default:
- language file: [at 1, 2 or 3]
-
- determines the output filenaming convention used, as follows:
-
- (1) [output directory path]/filename/es.index.html
-
- (2) [output directory path]/filename/index.es.html
-
- (3) [output directory path]/filename/index.html.es (which Apache for example can be configured to use to automatically serve each users preference)
-
- filename~fr.sst
- filename~de.sst
-
- etc. would be placed in the same directory using the same convention as indeed would:
- filename.sst
- using the default convention mapping convention.
-
- Selecting this form of filename will overide other language settings including the language header within a document.
-
-WOK
- end
- def endnotes
- print <<WOK
-
-(1) Footnote/endnotes tags take a number of possible forms, the simplest being to embed an endnote within your text~{ this would appear as an endnote, and would have an automatically assigned number }~ Embedded endnotes~{this is an endnote}~ and at the end of the paragraph~{* an asterisk marked note }~ writing the endnote:~{another endnote}~
-
- ------------------------------------------
-#{@cX.ruby}All you need to know about endnotes appears above this line...#{@cX.off} apart from the fact that you cannot mix endnote markup styles
-
-(2) The other ways of inserting an endnote involve placing a tag within the text as to where the endnote reference number should appear like so~^ and at the end of the paragraph writing the endnote:~^
-
-^~ like so, this is an endnote
-
-^~ another endnote
-
-WOK
- end
- def tables
- print <<WOK
-
-#{@cX.green}table{ [number of columns] [column width %];[column width %]#{@cX.off}
-
-[table content, line breaks are important see example below]
-
-#{@cX.green}}table#{@cX.off}
-#{@cX.grey}----#{@cX.off}
-This is a sample table:
------------------------
-
-#{@cX.green}table{ c3; 40; 30; 30;#{@cX.off}
-
-This is a table
-this would become column two of row one
-column three of row one is here
-
-And here begins another row
-column two of row two
-column three of row two, and so on
-
-#{@cX.green}}table#{@cX.off}
-
-there is an alternative way to markup tables, a sample document is provided in the file
-#{@cX.green}sisu_output_overview.sst#{@cX.off} located in
-#{@cX.green}/usr/share/doc/sisu#{@cX.off} or equivalent directory
-
-preformatted text
------------------
-
-#{@cX.green}poem{#{@cX.off}
-
- [Text here]
-
-#{@cX.green}}poem#{@cX.off}
-#{@cX.grey}----#{@cX.off}
-
-#{@cX.green}block{#{@cX.off}
-
- [Text here]
-
-#{@cX.green}}block#{@cX.off}
-#{@cX.grey}----#{@cX.off}
-
-#{@cX.green}group{#{@cX.off}
-
- [Text here]
-
-#{@cX.green}}group#{@cX.off}
-#{@cX.grey}----#{@cX.off}
-
-#{@cX.green}code{#{@cX.off}
-
- [Text here]
-
-#{@cX.green}}code#{@cX.off}
-
-WOK
- end
- def modules
- print <<WOK
-
- #{@cX.ruby}IGNORE#{@cX.off}
-
-WOK
- end
- def install
- #% system configuration
- print <<WOK
- #{@cX.green}Install SiSU#{@cX.off}
-
- Presumably if you are reading this interactively you have a copy of SiSU already installed, nevertheless here are a few notes.
-
- SiSU does require setup, the executable file #{@cX.blue}sisu#{@cX.off} is placed in #{@cX.blue}#{Config::CONFIG['bindir']}#{@cX.off} or #{@cX.blue}#{Config::CONFIG['sitelibdir']}#{@cX.off} and the library files, in #{@cX.blue}#{Config::CONFIG['rubylibdir']}/#{SiSU_lib}#{@cX.off}
- or in #{@cX.blue}#{Config::CONFIG['sitelibdir']}/#{SiSU_lib}#{@cX.off}
-
- SiSU comes with a number of installers, including #{@cX.blue}setup.rb#{@cX.off}, #{@cX.blue}install#{@cX.off} and a #{@cX.blue}Rantfile#{@cX.off} if rant is installed on your system, you may need to be root to install sisu on your system. After unpacking the tarball, in the top directory of the tarball which contains the named files type, one of:
- sudo ./sisu-install base
- sudo ./sisu-install setup
- if that does not work try
- sudo ruby ./sisu-install setup
- if rant is installed on your system you may instead run:
- sudo rant base
-
- for further options:
- ./sisu-install -T
-
- SiSU is pre-packaged for some GNU/Linux distributions such as Debian.
-
- For information on download and installation, see #{@cX.blue}http://www.jus.uio.no/sisu/SiSU/download#{@cX.off}
-
- For post installation help it is best you refer to '#{@cX.blue}man 8 sisu#{@cX.off}'
-
- Host
- host: #{@cX.blue}#{@env.hostname}#{@cX.off}
- arch: #{@cX.blue}#{@env.arch}#{@cX.off}
-
- Directories for installation
- bin: #{@cX.blue}#{Config::CONFIG['bindir']}#{@cX.off} or #{@cX.blue}#{Config::CONFIG['sitelibdir']}#{@cX.off}
- lib (site-ruby): #{@cX.blue}#{Config::CONFIG['rubylibdir']}/#{SiSU_lib}#{@cX.off} or #{@cX.blue}#{Config::CONFIG['sitelibdir']}/#{SiSU_lib}#{@cX.off}
- conf [etc]: #{@cX.blue}#{@env.path.etc}/sisu#{@cX.off}
- data (document samples, images, README): #{@cX.blue}#{@env.path.sample_data}#{@cX.off}
- processing: #{@cX.blue}#{@env.processing_path.processing}#{@cX.off}
- output www: #{@cX.blue}#{@env.path.output}#{@cX.off}
-
- Output files, are currently set to be produced in:
- processed document output: #{@cX.blue}#{@env.path.output}#{@cX.off}
- a document in the current directory #{@cX.blue}#{Dir.pwd}#{@cX.off}
- will have its output placed in: #{@cX.blue}#{@env.path.output}/#{@output_stub}#{@cX.off}
-
- Install any additional programs of interest (that SiSU makes use of, that are not already on your system)
-
- Programs SiSU makes use of include:
- LaTeX
- texinfo
- pdfetex aka. pdflatex
- sqlite
- postgresql
-
- Again, refer to '#{@cX.blue}man 8 sisu#{@cX.off}'
-
- For additional help on using SiSU once installed type:
-
- sisu --help
-
-WOK
- end
- def setup
- print <<WOK
-
- #{@cX.green}configuration files#{@cX.off}
- sisurc.yml used:
- #{@cX.blue}#{@env.path.yamlrc}#{@cX.off}
- configuration information search path:
- #{@cX.blue}#{@env.path.rc.join(', ')}#{@cX.off}
- (directory also relevant for skins and images)
-
- to initialise the mapped output directory, from within the markup document directory type:
- #{@cX.blue}sisu -CC#{@cX.off}
-
- for information on your current sisu configuration settings, type:
- #{@cX.blue}sisu --help env#{@cX.off}
- or
- #{@cX.blue}sisu -V#{@cX.off}
-
- see also
- #{@cX.blue}man 8 sisu#{@cX.off}
- and
- #{@cX.blue}http://www.jus.uio.no/sisu/SiSU#{@cX.off}
-WOK
- end
- def termsheet
- print <<WOK
-
- #{@cX.green}sisu --termsheet [termsheetname].termsheet.rb#{@cX.off}
- will produce the collection of documents associated with [termsheetname.termsheet.rb]
-
- #{@cX.green}sisu -t [termsheetname].termsheet.rb#{@cX.off}
- will produce the collection of documents associated with [termsheetname.termsheet.rb]
-
- #{@cX.green}termsheet.rb#{@cX.off} files:
- (i) are named after the facility
- (ii) contain instructions as to which standard forms to use for the agreement (standard_form.rb)
- there may be several, eg. the termsheet, and the resulting:
- main agreement; collection account charge; and deed of assignment
- (iii) contain the variable terms of the agreement, borrower, interest etc.
-
- for a new loan agreement fill out a new termsheet specifying
- what standard forms are to be used,
- and the terms of the agreement.
-
- #{@cX.green}standard_form.rb#{@cX.off} files:
- contain the standard terms of the agreement
- there is a standard form for each variation of agreement
- (so eg. there are as many facility agreements as there are variations in standard facility)
- these may be prepared for any agreement that is to be reused.
- (preparation takes the form of formating and
- placing variable holders for the variables that are to be provided by the termsheet.rb file)
-
- it is necessary to purge the directory ~facilityData when old files are removed
-
-WOK
- end
- def help_commands
- print <<WOK
-
- also see:
- sisu --help commands
- man sisu
-WOK
- end
- def help_env
- print <<WOK
-
- for sisu environment information see:
- sisu --help env
-WOK
- end
- def help_general
- help_env
- help_commands
- end
- def help_markup
- print <<WOK
-
- for help with sisu markup see:
- sisu --help markup
- sisu --help header
- sisu --help structure [sisu --help heading]
-
- to check markup version in file:
- sisu --identify [filename].sst
-
- for brief descriptive summary of markup history
- sisu --query-history
- or if for a particular version
- sisu --query-0.38
-
- for markup:
- sisu --help example
-
- sample marked up documents are provided in directory:
- #{@cX.green}/usr/share/doc/sisu/markup-samples#{@cX.off}
- and online
- #{@cX.green}www.jus.uio.no/sisu#{@cX.off}
-WOK
- end
- def convert
- print <<WOK
-
- for information on the markup version used within a sisu markup file:
- sisu --inspect [filename]
-
- to convert between sst markup versions 0.37 and 0.38:
- sisu --to-current
- sisu --to-38 [filename/wildcard]
- sisu --to-37 [filename/wildcard]
-
- convert an sst file with footnotes following text to (preferred) inline footnotes
- sisu --convert-footnotes [filename/wildcard]
-
- to convert from sst to simple xml representations (sax, dom and node):
- sisu --to-sax [filename/wildcard]
- sisu --to-sxs [filename/wildcard]
-
- sisu --to-dom [filename/wildcard]
- sisu --to-sxd [filename/wildcard]
-
- sisu --to-node [filename/wildcard]
- sisu --to-sxn [filename/wildcard]
-
- to convert to sst from simple xml representations (sax, dom and node):
- sisu --from-xml2sst [filename/wildcard [.sxs.xml,.sxd.xml,sxn.xml]]
- sisu --from-sxml [filename/wildcard [.sxs.xml,.sxd.xml,sxn.xml]]
-
- to attempt to convert a kdissert (.kdi) file to sisu markup:
- sisu --from-kdi [kdissert filename]
- (very basic and experimental)
-WOK
- end
- def dal
- print <<WOK
-
- sisu --dal [filename/wildcard] creates the metaverse, used by all other modules for downstream processing
- sisu -m [filename/wildcard] creates the metaverse, used by all other modules for downstream processing
-WOK
- help_commands
- end
- def utf8
- print <<WOK
-
- documents prepared for sisu processing should be stored in utf8
-WOK
- end
- def plaintext
- print <<WOK
-
- sisu --txt [filename/wildcard] plaintext with Unix linefeeds (footnotes follow paragraphs)
- sisu -t [filename/wildcard] plaintext with Unix linefeeds (footnotes follow paragraphs)
-
-WOK
- help_commands
- end
- def html
- print <<WOK
-
- sisu --html [filename/wildcard] html document type suffixes included
- sisu -h [filename/wildcard] html document type suffixes included
-
-WOK
- help_commands
- end
- def xhtml
- print <<WOK
-
- sisu --xhtml [filename/wildcard] xhtml document
- sisu -b [filename/wildcard] xhtml document
-WOK
- help_commands
- end
- def xml
- print <<WOK
-
- sisu --xml-sax [filename/wildcard] xml document (sax type parsing)
- sisu -x [filename/wildcard] xml document (sax type parsing)
-
- sisu --xml-dom [filename/wildcard] xml document (dom type parsing)
- sisu -X [filename/wildcard] xml document (dom type parsing)
-
- sisu --odt [filename/wildcard] odt document, (odf open document format)
- sisu -o [filename/wildcard] odt document, (odf open document format)
-
- sisu --epub [filename/wildcard] odt document, (epub document)
- sisu -e [filename/wildcard] odt document, (epub document)
-WOK
- help_commands
- end
- def odf
- print <<WOK
-
- sisu --odt [filename/wildcard] odt document, (odf open document format)
-
- sisu -o [filename/wildcard] odt document, (odf open document format)
-WOK
- help_commands
- end
- def epub
- print <<WOK
-
- sisu --epub [filename/wildcard] epub document, (open format for e-books)
- sisu -e [filename/wildcard] epub document, (open format for e-books)
-WOK
- help_commands
- end
- def php
- print <<WOK
-
- not supported
- [php output has been removed]
-WOK
- help_commands
- end
- def pdf
- print <<WOK
-
- sisu --pdf [filename/wildcard] produces pdf files from LaTeX output
- sisu -p [filename/wildcard] produces pdf files from LaTeX output
-WOK
- help_commands
- end
- def latex
- print <<WOK
-
- sisu --pdf [filename/wildcard] produces pdf files from LaTeX output
- sisu -p [filename/wildcard] produces pdf files from LaTeX output
-WOK
- help_commands
- end
- def texinfo
- print <<WOK
-
- sisu --texinfo [filename] produces texinfo and info files
- sisu -I [filename] produces texinfo and info files
-
- info and texinfo files are currently left in a separate work/output directory... have not decided what to do with them
-
- on my system info works fine point at file with info command
-
- pinfo, requires you to be within the work/output directory
- cd [work/output directory]
-
- and then to point at the file using
- pinfo ./[filename]
-WOK
- help_commands
- end
- def lout
- print <<WOK
-
- sisu -l [filename/wildcard]
-
- not currently supported, revisit someday?
-WOK
- help_commands
- end
- def concordance
- print <<WOK
-
- sisu --concordance starts the sisu webrick server, default port 8081
- sisu --wordmap starts the sisu webrick server, default port 8081
- sisu -W starts the sisu webrick server, default port 8081
-WOK
- help_commands
- end
- def help_search
- print <<WOK
-
- SiSU searches,
- depending on how you wish to implement search,
- the following may bre of interest:
- sisu --help sql
- sisu --help searchform (or 'sisu --help cgi')
- sisu --help hyperestraier (or 'sisu --help est')
- sisu --help webrick
-WOK
- end
- def cgi
- print <<WOK
-
- sisu --sample-search-form generates a sample search form
- sisu -F generates a sample search form
-
- sisu -F --webserv=webrick generates a sample search form for use with the webrick server
- sisu -Fv as above, and provides some information on setting up hyperestraier
- sisu -W starts the webrick server
-
- the generated search form must be copied to the webserver directory as instructed
-WOK
- help_search
- help_general
- end
- def sql
- print <<WOK
-
- Mappings to two databases are provided by default,
- postgresql (--pg or -D) and sqlite (--sqlite or -d),
- the same modifier commands are used within sisu to construct and populate
- databases the examples here will use --sqlite
-
- sisu --sqlite --createdb creates database where no database existed before
- sisu --sqlite --create creates database tables where no database tables existed before
- sisu --sqlite --dropall destroys database (including all its content)!!
- sisu --sqlite --recreate destroys existing database and builds a new empty database structure
-
- sisu --sqlite --import [filename/wildcard] populates database with the contents of the file
- sisu --sqlite --update [filename/wildcard] updates file contents in database
-
- sisu --sample-search-form --webserv=webrick builds a cgi web search frontend for the database created
-
- Postgresql
- user: #{@cX.blue}#{@db.psql.user}#{@cX.off}
- current db set: #{@cX.blue}#{@db.psql.db}#{@cX.off}
- port: #{@cX.blue}#{@db.psql.port}#{@cX.off}
- dbi connect: #{@cX.blue}#{@db.psql.dbi}#{@cX.off}
-
- sqlite
- current db set: #{@cX.blue}#{@db.sqlite.db}#{@cX.off}
- dbi connect #{@cX.blue}#{@db.sqlite.dbi} #{@cX.off}
-
- Note on databases built
- By default, [unless otherwise specified] databases are built on a directory basis, from collections of documents within that directory.
- The name of the directory you choose to work from is used as the database name,
- i.e. if you are working in a directory called #{@cX.blue}#{@env.path.home}/ebook#{@cX.off} the database #{@cX.blue}#{Db[:name_prefix]}ebook#{@cX.off} is used. [otherwise a manual mapping for the collection is necessary]
-WOK
- help_search
- help_general
- end
- def webrick
- print <<WOK
-
- sisu --webrick starts the sisu webrick server, default port 8081
- sisu -W starts the sisu webrick server, default port 8081
-WOK
- help_commands
- end
- def hyperestraier
- out_dir='(' + `ls #{@env.path.webserv}`.split("\n").join('|') + ')'
- print <<WOK
- Not tested recently, not up-to-date
-
- NOTE: The examples that follow assume that sisu output is placed in the directory
- /home/ralph/sisu_www
-
- (A) to generate the index
- within the webserver directory to be indexed:
- #{@cX.orange}estcmd gather -sd [index name] [directory path to index]#{@cX.off}
- the following are examples that will need to be tailored according to your needs:
- #{@cX.green}
- cd #{@env.path.webserv}
- estcmd gather -sd casket #{@env.path.webserv}
- #{@cX.off}
- you may use the 'find' command together with 'egrep' to limit
- indexing to particular document collection directories within
- the web server directory:#{@cX.green}
-
- find /home/ralph/sisu_www -type f | egrep '#{@env.path.output}/.+?\.html$' |estcmd gather -sd casket - #{@cX.off}
-
- check which directories in the webserver/output directory #{@cX.green}#{@env.path.webserv}#{@cX.off}
- you wish to include in the search index, these appear to be:
-
- #{@env.path.webserv}/#{@cX.green}#{out_dir}#{@cX.off}
-
- as sisu duplicates output in multiple file formats,
- it it is probably preferable to limit the estraier index
- to html output, and as it may also be desirable to
- exclude files 'doc.html' and 'concordance.html', as these
- duplicate information held in other html output e.g. #{@cX.green}
-
- find /home/ralph/sisu_www -type f | egrep '/sisu_www/(sisu|bookmarks)/.+?\.html$' | egrep -v '(doc|concordance)\.html$' |estcmd gather -sd casket - #{@cX.off}
-
- from your current document preparation/markup directory, you would construct a rune along the following lines: #{@cX.green}
-
- find /home/ralph/sisu_www -type f | egrep '#{@env.path.webserv}/([specify first directory for inclusion]|[specify second directory for inclusion]|[another directory for inclusion? ...])/.+?\.html$' | egrep -v '(doc|concordance)\.html$' |estcmd gather -sd #{@env.path.webserv}/casket - #{@cX.off}
-
- (B) to set up the search form
- (i) copy #{@cX.green}estseek.cgi#{@cX.off} to your cgi directory and set file permissions to 755: #{@cX.green}
-
- sudo cp -vi /usr/lib/estraier/estseek.cgi /usr/lib/cgi-bin
- sudo chmod -v 755 /usr/lib/cgi-bin/estseek.cgi
- sudo cp -v /usr/share/hyperestraier/estseek.* /usr/lib/cgi-bin #{@cX.off}
- [see estraier documentation for paths]
-
- (ii) edit #{@cX.green}estseek.conf#{@cX.off}, with attention to the lines starting 'indexname:' and 'replace:': #{@cX.green}
-
- indexname: #{@env.path.webserv}/casket
- replace: ^file://#{@env.path.webserv}{{!}}#{@env.url.webserv_host_base}
- replace: /index\.html?${{!}}/ #{@cX.off}
-
- (C) to test using webrick, start webrick: #{@cX.green}
- sisu -W #{@cX.off}
-
- and try open the url: #{@cX.blue}
- #{@env.url.webserv_host_base}/cgi-bin/estseek.cgi #{@cX.off}
-
-WOK
- end
- def yaml
- print <<WOK
- Yaml sisurc files may be used to configure sisu, these are searched for in the following locations:
-
- under the current SiSU markup data directory: #{@cX.blue}#{Dir.pwd}/_sisu/sisurc.yml#{@cX.off}
- under the home directory ~/.sisu: #{@cX.blue}#{@env.path.home}/.sisu/sisurc.yml#{@cX.off}
- in the "/etc" directory: #{@cX.blue}#{@env.path.etc}/sisurc.yml#{@cX.off}
-
- The Yaml files #{@cX.blue}promo.yml#{@cX.off} and #{@cX.blue}list.yml#{@cX.off} may be used to build a minor right pane in html, they may be placed in the following locations:
-
- under the current SiSU markup data directory: #{@cX.blue}#{Dir.pwd}/_sisu/skin/yml/#{@cX.off}
- under the home directory ~/.sisu: #{@cX.blue}#{@env.path.home}/.sisu/skin/yml/#{@cX.off}
- in the "/etc" directory: #{@cX.blue}#{@env.path.etc}/skin/yml/#{@cX.off}
-
- these may be called by the sisurc.yml, skins for document, directory or site, or from individual document headers in the header @@promo: [a commented out example header may be found in document sample: free_as_in_freedom.richard_stallman_cru‐ sade_for_free_software.sam_williams.sst, it calls for the specified lists in list.yml, which in turn calls the widgets named in promo.yml which are used to build content in the right pane of html output]
-
-WOK
- end
- def sitemap
- print <<WOK
-
- SiSU sitemaps,
- an experimental feature (following g,y,m announcement to use them this week)
- sisu -Y [filename/wildcard]
- it may be necessary run -m first (generate the the metaverse)
- sisu -mY [filename/wildcard]
-
- to generate/update the index of sitemaps
- sisu --sitemaps
-WOK
- end
- def license
-
- print <<WOK
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) 1997 - 2012 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 <#{@cX.blue}http://www.gnu.org/licenses/#{@cX.off}>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <#{@cX.blue}http://www.fsf.org/licenses/gpl.html#{@cX.off}>
- <#{@cX.blue}http://www.gnu.org/licenses/gpl.html#{@cX.off}>
- <#{@cX.blue}http://www.jus.uio.no/sisu/gpl.fsf#{@cX.off}>
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
- <#{@cX.blue}http://www.jus.uio.no/sisu#{@cX.off}>
- <#{@cX.blue}http://www.sisudoc.org#{@cX.off}>
-
- * Download:
- <#{@cX.blue}http://www.jus.uio.no/sisu/SiSU/download.html#{@cX.off}>
-
- Ralph Amissah
- <#{@cX.blue}ralph@amissah.com#{@cX.off}>
- <#{@cX.blue}ralph.amissah@gmail.com#{@cX.off}>
-
-WOK
- end
- def standards
- print <<WOK
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-Copyright (C) Ralph Amissah 1997, current 2012.
-All Rights Reserved.
-
-Information on these may be obtained from:
- http://www.jus.uio.no/sisu
-
-More information to be provided later.
-
-* however note also the License section
-
-* Ralph Amissah ralph@amissah.com
- Ralph Amissah ralph.amissah@gmail.com
-
-WOK
- end
- def conversion
- print <<WOK
-sisu_convert does the initial conversion from a couple of file formats to SiSU file format, currently only html and word97
- #{@cX.cyan}sisu_convert#{@cX.off} [keyword]
- sisu [keyword]
- #{@cX.green}--html#{@cX.off} convert from html
- ------------------------------------------
- Preparing Documents for SiSU
- #{@cX.green}--word97#{@cX.off} sisu --help markup (an incomplete overview)
-WOK
- end
- def external_programs
- puts <<WOK
-
- external ruby programs
-
- external programs
- #{@cX.cyan}pdf output - tex/latex#{@cX.off}
- #{@cX.orange}required#{@cX.off}
- tex-base/latex
- pdfetex aka. pdflatex
- #{@cX.brown}suggested/recommended#{@cX.off}
- #{@cX.cyan}db/sql output#{@cX.off}
- #{@cX.orange}required#{@cX.off}
- postgresql
- #{@cX.brown}suggested/recommended#{@cX.off}
- sqlite
- #{@cX.cyan}xml/xhtml/html output#{@cX.off}
- #{@cX.orange}required#{@cX.off}
- #{@cX.brown}suggested/recommended#{@cX.off}
- tidy (xml, xhtml well formed check)
- trang (relaxng, rnc to dtd conversion)
-WOK
- end
- def scratch
- print <<WOK
-Types of tag,
-
-then there are various tags which occur within the document.
-Structural tags, which consist of:
- heading tags that identify headings within text, and;
- footnote/endnote tags ...
-
-Markup instructions: giving information as to what is to be done to the presentation of the text
-
-Markup tags
-
-These have been kept to a minimum. A number of text html markup tags can be used <b>to bold</b> <i>to indent</i> <sup>for superscript</sup> <sub>for subscript text</sub>
-
-_1 at the beginning of a line indents the paragraph
-
-_2 at the beginning of a line double indents the paragraph
-
-Others include
-
-Other things to note:
-
-By default paragraphs are automatically numbered... and is the same across all output formats
-This makes citation a lot easier... regardless of the form of output that is being looked at
-It also permits the building of various addons, like the concordance feature which identifies each word and the paragraphs in which the word appears with links to the paragraph...
-
-Urls are automatically turned to live links in the html and pdf files created...
-WOK
- end
- end
-end
-__END__
-
diff --git a/lib/sisu/v3dv/html.rb b/lib/sisu/v3dv/html.rb
deleted file mode 100644
index fee51f2c..00000000
--- a/lib/sisu/v3dv/html.rb
+++ /dev/null
@@ -1,664 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: html generation, processing
-
-=end
-module SiSU_HTML
- require 'pstore'
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'html_table' # html_table.rb
- require_relative 'html_format' # html_format.rb
- include SiSU_HTML_Format
- require_relative 'html_segments' # html_segments.rb
- include SiSU_HTML_Seg
- require_relative 'html_scroll' # html_scroll.rb
- require_relative 'html_promo' # html_promo.rb
- include SiSU_HTML_Promo
- require_relative 'html_tune' # html_tune.rb
- include SiSU_HTML_Tune
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- songsheet
- end
- def songsheet
- begin
- @md=@particulars.md
- @fnb=@md.fnb
- @env=@particulars.env
- loc=@env.url.output_tell
- unless @opt.cmd =~/q/
- tool=if @opt.cmd =~/[MVvz]/; "#{@env.program.web_browser} file://#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_segtoc}"
- else "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- end
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'HTML',tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'HTML',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_segtoc}").flow if @opt.cmd =~/[MV]/
- end
- SiSU_Env::InfoSkin.new(@md).select
- data=nil
- @tuned_file_array=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
- data=@tuned_file_array
- scr_endnotes=SiSU_HTML::Source::Endnotes.new(data,@md).scroll
- toc=SiSU_HTML::Source::Toc.new(@md,data).songsheet
- links_guide=SiSU_HTML::Source::LinksGuide.new(data,@md).toc
- data=@tuned_file_array
- scr_toc=SiSU_HTML::Source::ScrollHeadAndSegToc.new(@md,toc,links_guide).in_common #watch
- SiSU_HTML::Source::Seg.new(@md,data).songsheet
- data=@tuned_file_array
- scr=SiSU_HTML::Source::Scroll.new(@md,data,scr_endnotes).songsheet
- scroll=SiSU_HTML::Source::ScrollOutput.new(scr_toc,scr[:body],scr[:metadata],scr[:owner_details],scr[:tails],@md).publish
- SiSU_HTML::Source::Output.new(scroll,@md).scroll
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- unless @opt.cmd =~/[MV]/ #check maintenance flag
- texfiles=Dir["#{@env.processing_path.tune}/#{@opt.fns}*"]
- texfiles.each do |f|
- if FileTest.file?(f)
- File.unlink(f)
- end
- end
- end
- SiSU_Env::Clear.new(@opt.cmd,@opt.fns,@md).param_instantiate
- @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{}
- @@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0
- @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]}
- @@filename_seg,@@seg_url,@@fn,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','','',''
- @@is4=@@is3=@@is2=@@is1=@@heading1=@@heading2=@@heading3=@@heading4=0
- end
- end
- private
- class HTML_Environment
- def initialize(particulars)
- @particulars=particulars
- @md,@env=particulars.md,particulars.env
- @vz=SiSU_Env::GetInit.instance.skin
- @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::CreateSystemLink.new #home
- end
- def link_images
- @symlnk.images
- end
- def tuned_file_instructions
- @tell=SiSU_Screen::Ansi.new(@md.opt.cmd)
- @md.opt.cmd=@md.opt.cmd.gsub(/H/,'h')
- @md.file_type='html' if @md.opt.cmd =~/[hw]/
- newfilename=%{#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_segtoc}} if @md.file_type =~/html/
- dal_array=@particulars.dal_array # dal file drawn here
- @tuned_file_array=SiSU_HTML_Tune::Tune.new(dal_array,@md).songsheet
- @tuned_file_array
- end
- end
- class LinksGuide
- @links_guide_toc=[]
- def initialize(data,md)
- @data,@md=data,md
- @links_guide_=SiSU_Env::CreateSite.new(@md.opt.cmd).html_quick_ref?
- end
- def toc
- @links_guide_toc=[]
- if @links_guide_
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
- guide_type='horzontal' #values: horizontal or vertical
- @links_guide_toc << format_head_toc.links_guide_open(guide_type)
- if defined? @md.lnk \
- and @md.lnk
- @md.lnk.each do |l|
- if defined? l[:say]
- target=if l[:url] !~/^\.(\.)?\//; 'external'
- else '_top'
- end
- s_lnk_url,s_lnk_lnk=l[:url],l[:say]
- txt_obj={ lnk_url: s_lnk_url, lnk_txt: s_lnk_lnk, target: target }
- lev_dob_ocn=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- @links_guide_toc << lev_dob_ocn.links_guide if s_lnk_lnk
- end
- end
- end
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
- @links_guide_toc << format_head_toc.links_guide_close #(guide_type)
- @links_guide_toc
- else ''
- end
- end
- end
- class Endnotes
- include SiSU_HTML_Format
- def initialize(data,md)
- @data,@md=data,md
- end
- def scroll
- @scr_endnotes=[]
- format_head_scroll=SiSU_HTML_Format::HeadScroll.new(@md)
- @data.each do |dob|
- pg=dob.dup
- unless pg.is ==:code
- if pg.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ /
- endnote_array=[]
- if pg.obj=~/#{Mx[:en_a_o]}[\d*+].+?#{Mx[:en_a_c]}/m
- endnote_array = pg.obj.scan(/#{Mx[:en_a_o]}[\d*+]+(.+?)#{Mx[:en_a_c]}/m)
- end
- if pg.obj=~/#{Mx[:en_b_o]}[\d*]+\s.+?#{Mx[:en_b_c]}/m
- endnote_array = pg.obj.scan(/#{Mx[:en_b_o]}[\d*]+(.+?)#{Mx[:en_b_c]}/m)
- end
- if pg.obj=~/#{Mx[:en_b_o]}[\d+]+\s.+?#{Mx[:en_b_c]}/m
- endnote_array = pg.obj.scan(/#{Mx[:en_b_o]}[\d+]+(.+?)#{Mx[:en_b_c]}/m)
- end
- endnote_array.flatten.each do |note|
- txt_obj={ txt: note }
- format_scroll=SiSU_HTML_Format::FormatScroll.new(@md,txt_obj)
- @scr_endnotes << format_scroll.endnote_body
- end
- end
- end
- end
- @scr_endnotes
- end
- end
- class Toc <LinksGuide
- @@toc={ seg: [], seg_mini: [], scr: [] }
- @@seg_url=''
- @@firstseg=nil
- def initialize(md=nil,data='')
- @data,@md=data,md
- @vz=SiSU_Env::GetInit.instance.skin
- @tell=SiSU_Screen::Ansi.new(@md.opt.cmd) if @md
- end
- def songsheet #extracts toc for scroll & seg
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Toc').txt_grey if @md.opt.cmd =~/[MVv]/
- toc=nil
- @@firstseg=nil
- @@toc={ seg: [], seg_mini: [], scr: [] }
- @data.each do |dob|
- if dob.is==:heading \
- || dob.is==:heading_insert
- dob_toc=dob.dup
- toc=if dob_toc.is ==:heading \
- || dob.is==:heading_insert
- toc=case dob_toc.ln
- when 1; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_1
- when 2; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_2
- when 3; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_3
- when 4; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_4
- when 5; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_5
- when 6; SiSU_HTML::Source::Toc.new(@md,dob_toc).level_6
- else nil
- end
- end
- toc.each do |k,d|
- d.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- end if toc
- if @@firstseg.nil? \
- and dob.ln==4 \
- and dob.name =~/\S+/
- @@firstseg=dob.name
- end
- if toc
- begin
- @@toc[:seg] << toc[:seg] if toc[:seg]
- @@toc[:seg_mini] << toc[:seg_mini] if toc[:seg_mini]
- @@toc[:scr] << toc[:scr] if toc[:scr]
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- end
- end
- @md.firstseg=@@firstseg
- @@toc
- end
- def minitoc
- minitoc=@@toc[:seg_mini].join("\n")
- '<div class="toc">' + minitoc + '</div>'
- end
- protected
- def rss #sort all wrong, disabled but kept
- @@toc[:seg] <<<<WOK
-<center>
-<table><tr><td>
-<p><font color="#222222" #{@font.face} size="2">
-(relatively static) RSS feeds for DOCUMENTS:<br />
-<a href="../rssfeed/documents.xml"><img border="0" height="14" width="36" src="../_sisu/image/rss.png" alt="RSS feed"></a>&nbsp;http://www.jus.uio.no/lm/rssfeed/documents.xml<br />
-<a href="../rssfeed/tradelaw.xml"><img border="0" height="14" width="36" src="../_sisu/image/rss.png" alt="RSS feed"></a>&nbsp;http://www.jus.uio.no/lm/rssfeed/tradelaw.xml<br />
-<a href="../rssfeed/environmental.xml"><img border="0" height="14" width="36" src="../_sisu/image/rss.png" alt="RSS feed"></a>&nbsp;http://www.jus.uio.no/lm/rssfeed/environmental.xml<br />
-<center><a href="mailto:info@address.com" target="_top">info@address.com</a></center>
-</font></p>
-</td></tr></table>
-WOK
- end
-#not used -->
- def level_endnotes
- if @md.flag_endnotes
- format_head_scroll=SiSU_HTML_Format::HeadScroll.new(@md)
- @@toc[:scr] << format_head_scroll.toc_endnote
- end
- end
- def level_concordance
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
- @@toc[:seg_mini] << format_head_toc.mini_seg_concordance
- end
- def level_metadata
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
- @@toc[:scr] << format_head_toc.metadata
- @@toc[:seg] << format_head_toc.seg_metadata
- @@toc[:seg_mini] << format_head_toc.mini_seg_metadata
- end
- def level_word_index
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@d0c)
- @@toc[:scr] << format_head_toc.concordance
- @@toc[:seg] << format_head_toc.concordance
- @@toc[:seg_mini] << format_head_toc.mini_concordance
- end
-# <-- not used
- def level_1
- dob=@data
- linkname,link=dob.obj.strip,dob.ocn
- if link \
- and link !~/#/ #% keep eye on link
- p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,link)
- end
- title=if dob.obj !~/Metadata/; linkname
- else
- link='metadata'
- %{<b><a href="#{link}#{@md.lang_code_insert}#{Sfx[:html]}">#{linkname}</a></b>}
- end
- toc={}
- txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:seg]=if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/
- format_toc.lev0
- else format_toc.lev1
- end
- toc[:seg_mini]=if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/
- x=if @md.concord_make
- format_toc.mini_concord_tail
- else format_toc.mini_tail
- end
- else format_toc.mini_lev1
- end
- title=if dob.ocn ==0
- if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/
- %{<a href="#docinfo">#{linkname}</a>}
- else linkname
- end
- else
- @@toc[:scr] << '<br />'
- link=if dob.ln; dob.ln
- else ''
- end
- %{<b><a href="##{link}">#{linkname}</a></b>}
- end
- txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:scr]=if dob.name =~/^meta/ \
- and dob.obj =~/Document Information/
- format_toc.lev0
- else format_toc.lev1
- end
- toc
- end
- def level_2
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- p_num=if ocn \
- and ocn !~/#/
- SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- else nil
- end
- txt_obj={ txt: linkname }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc={}
- toc[:seg]=format_toc.lev2
- toc[:seg_mini]=format_toc.mini_lev2
- if p_num
- title=%{#{p_num.goto}#{linkname}</a>}
- txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:scr]=format_toc.lev2
- end
- toc
- end
- def level_3
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- p_num=if ocn \
- and ocn !~/#/
- SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- else nil
- end
- txt_obj={ txt: linkname }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc={}
- toc[:seg]=format_toc.lev3
- toc[:seg_mini]=format_toc.mini_lev3
- if p_num
- title=%{#{p_num.goto}#{linkname}</a>}
- txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:scr]=format_toc.lev3
- end
- toc
- end
- def level_4
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) if ocn
- if dob.ln ==4
- seg_link=%{ <a href="#{dob.name}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top">
- #{dob.obj}
- </a> }
- @@seg_url=dob.name
- elsif dob.obj =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/
- seg_link=dob.obj.gsub(/^(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/,
- %{<a href="\\1#{@md.lang_code_insert}#{Sfx[:html]}" } +
- %{target="_top">\\1 \\2</a> })
- end
- p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) if ocn
- @file=SiSU_Env::FileOp.new(@md) if @md
- txt_obj=if seg_link=~/sisu_manifest\.html/
- man_link=if @file.output_dir_structure.by_language_code? \
- or @file.output_dir_structure.by_filetype?
- seg_link.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
- else seg_link
- end
- { txt: man_link }
- else { txt: seg_link }
- end
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc={}
- toc[:seg]=format_toc.lev4
- toc[:seg_mini]=format_toc.mini_lev4
- title=%{#{p_num.goto}#{linkname}</a>} if p_num
- txt_obj=if title=~/sisu_manifest.html/
- man_link=title.gsub(/sisu_manifest.html/,"../manifest/#{@file.base_filename.manifest}")
- { txt: man_link }
- else { txt: title }
- end
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:scr]=format_toc.lev4
- toc
- #end
- end
- def level_5
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- toc={}
- if ocn \
- and ocn !~/#/
- p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{ocn}">
- #{linkname}
- </a>}
- txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:seg]=format_toc.lev5
- toc[:seg_mini]=format_toc.mini_lev5
- title=%{#{p_num.goto}#{linkname}</a>}
- txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:scr]=format_toc.lev5
- end
- toc
- end
- def level_6
- dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
- toc={}
- if ocn \
- and ocn !~/#/
- p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{ocn}">
- #{linkname}
-</a>}
- txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:seg]=format_toc.lev6
- toc[:seg_mini]=format_toc.mini_lev6
- title=%{#{p_num.goto}#{linkname}</a>}
- txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc[:scr]=format_toc.lev6
- end
- toc
- end
- def level_crosslink
- dob=@data
- dob=if dob !~/^4~!/
- dob.gsub(/^4~!\s+(\S+)\s+(.+)/,
- %{<table><tr><td width =\"80\"></td>
- <td><a href="http://\\1" target="_top">
- #{@png.crosslink_ext}
- &nbsp;&nbsp;\\2
- <\/a>
- </td></tr></table>
-})
- else
- dob.gsub(/^4~!\s+(\S+)\s+(.+)/,
- %{<table><tr><td width ="80">
- </td><td>
- <a href="\\1" target="_top">
- #{@png.crosslink}
- &nbsp;&nbsp;\\2
- <\/a>
- </td></tr></table>
-})
- end
- end
- end
- class ScrollHeadAndSegToc < Toc
- def initialize(md='',toc='',links_guide_toc='')
- @md,@toc,@links_guide_toc=md,toc,links_guide_toc
- @vz=SiSU_Env::GetInit.instance.skin
- @make=SiSU_Env::ProcessingSettings.new(@md)
- end
- def in_common
- toc_shared=[]
- @segtoc=[]
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Scroll & Segtoc').txt_grey if @md.opt.cmd =~/[MVv]/
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
- dochead=format_head_toc.head
- dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge
- ads=SiSU_HTML_Promo::Ad.new(@md)
- toc_shared << dochead << ads.div.major
- @segtoc << format_head_toc.head << ads.div.major
- toc_shared << format_head_toc.toc_head_escript if SiSU_HTML_Format::HeadToc.method_defined? :toc_head_escript
- @segtoc << format_head_toc.toc_head_escript if SiSU_HTML_Format::HeadToc.method_defined? :toc_head_escript
- toc_shared << format_head_toc.scroll_head_navigation_band
- if defined? @md.rights.all
- rights=format_head_toc.rights.all
- rights=SiSU_HTML_Tune::CleanHTML.new(rights).clean
- end
- if @md.prefix_b
- prefix_b=format_head_toc.notes.prefix_b
- prefix_b=SiSU_HTML_Tune::CleanHTML.new(prefix_b).clean
- end
- @segtoc << format_head_toc.seg_head_navigation_band
- toc_shared << format_head_toc.scroll_head_title_banner_open
- @segtoc << format_head_toc.seg_head_title_banner_open
- 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_HTML_Format::FormatTextObject.new(@md,txt_obj)
- toc_shared << format_txt_obj.center_bold
- @segtoc << format_txt_obj.center_bold
- if defined? @md.creator.author
- creator_endnote=@md.creator.author.gsub(/(\*+)/,%{&nbsp;<sup><a href="#notes">\\1</a></sup>})
- tmp_head=creator_endnote + "\n"
- txt_obj={ txt: tmp_head }
- format_txt_obj=SiSU_HTML_Format::FormatTextObject.new(@md,txt_obj)
- toc_shared << format_txt_obj.center_bold
- @segtoc << format_txt_obj.center_bold
- end
- toc_shared << "#{@vz.table_close*1}\n"
- @segtoc << "#{@vz.table_close*1}\n"
- tmp_head=nil
- if @md.prefix_a
- tmp_head ||= %{<p />#{@md.prefix_a}\n}
- toc_shared << tmp_head.dup
- @segtoc << tmp_head.dup
- end
- tmp_head=nil
- toc_shared << @links_guide_toc
- if defined? @md.rights.all #and ? @md.rights.all
- toc_shared << rights
- end
- if defined? @md.prefix_b
- toc_shared << prefix_b
- end
- scr_toc=if @make.build.toc? #Table of Contents added/appended here
- toc_shared << @toc[:scr]
- end
- @segtoc << @links_guide_toc
- @segtoc << @toc[:seg]
- if defined? @md.rights.all \
- and not @md.rights.all.empty?
- @segtoc << rights
- end
- @segtoc << prefix_b if @md.prefix_b
- #Segtoc tail added here
- @segtoc << "</p>\n" #bugfix sort later DEBUGNOW
- @segtoc << @seg_toc_band_bottom
- ads=SiSU_HTML_Promo::Ad.new(@md)
- @segtoc << format_head_toc.seg_navigation_tail << ads.div.close << ads.display << format_head_toc.html_close
- @segtoc=@segtoc.flatten.compact #watch
- SiSU_HTML::Source::Output.new(@segtoc,@md).segtoc
- @segtoc=[]
- @toc[:scr],@toc[:seg]=[],[]
- toc_shared
- end
- end
- class Table < SiSU_HTML_Table::TableHTML
- end
- class Scroll < SiSU_HTML_Scroll::Scroll
- end
- class ScrollOutput
- def initialize(scr_toc,scr_body,scr_metadata,scr_owner_details,scr_tails,md)
- @scr_toc,@scr_body,@scr_metadata,@scr_owner_details,@scr_tails,@md=scr_toc,scr_body,scr_metadata,scr_owner_details,scr_tails,md
- end
- def publish
- scroll=[]
- hr='<center><hr width=90% /></center>'
- scroll << @scr_toc << '<div class="scroll">' << hr << @scr_body << @scr_endnotes << hr << @scr_owner_details << '</div>' << @scr_tails
- scroll=scroll.flatten.compact #watch
- end
- end
- class Seg < SiSU_HTML_Seg::Seg
- end
- class Output
- def initialize(data='',md='')
- @data,@md=data,md
- @file=SiSU_Env::FileOp.new(md)
- @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
- end
- def scroll
- begin
- @filename_html_scroll=@file.write_file.html_scroll
- @data.each do |para|
- para=para.strip.
- gsub(/<:.+?>/,'').
- gsub(Xx[:html_relative2],@file.path_rel_links.html_scroll_2).
- gsub(Xx[:html_relative1],@file.path_rel_links.html_scroll_1).
- #gsub(/#{Xx[:html_relative]}/,@file.path_rel_links.html_scroll).
- gsub(/#{Rx[:mx_fa_clean]}/,'')
- unless para =~/\A\s*\Z/
- @filename_html_scroll.puts para,"\n"
- end
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure; @filename_html_scroll.close
- end
- end
- def segtoc
- begin
- @filename_html_segtoc=@file.write_file.html_segtoc
- @data.each do |para|
- para=para.strip.
- gsub(/<!.+?!>/,'').
- gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2).
- gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
- unless para =~/\A\s*\Z/
- @filename_html_segtoc.puts para,"\n"
- end
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- @filename_html_segtoc.close
- pwd_set=Dir.pwd
- idx_lnk=if @o_str.dump_or_redirect?
- @file.base_filename.manifest
- else
- @file.base_filename.html_segtoc
- end
- mlnk=@file.base_filename.html_seg_index
- Dir.chdir(@file.output_path.html_seg.dir)
- FileUtils::rm_f(mlnk)
- FileUtils::ln_s(idx_lnk,mlnk)
- Dir.chdir(pwd_set)
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/html_format.rb b/lib/sisu/v3dv/html_format.rb
deleted file mode 100644
index 56360455..00000000
--- a/lib/sisu/v3dv/html_format.rb
+++ /dev/null
@@ -1,1484 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: html formating, css template
-
-=end
-module SiSU_HTML_Format
- include SiSU_Viz
- class ParagraphNumber
- def initialize(md,ocn)
- @md,@ocn=md,ocn.to_s
- @ocn ||=''
- end
- def ocn_display
- @make=SiSU_Env::ProcessingSettings.new(@md)
- if @make.build.ocn?
- ocn_class='ocn'
- if @ocn.to_i==0
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}">&nbsp;</a></label>})
- else
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}" href="##{@ocn}" class="lnk#{ocn_class}">\\1</a></label>})
- end
- else
- ocn_class='ocn_off'
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- end
- end
- def name
- %{<a name="#{@ocn}"></a>}
- end
- def id #w3c? "tidy" complains about numbers as identifiers ! annoying
- %{id="o#{@ocn}"}
- end
- def goto
- %{<a href="##{@ocn}">}
- end
- end
- class HeadInformation
- require_relative 'css' # css.rb
- require_relative 'shared_xml' # shared_xml.rb
- include SiSU_Viz
- attr_reader :md,:rdf,:vz
- def initialize(md)
- @md=md
- # DublinCore 1 - title
- @vz=SiSU_Env::GetInit.instance.skin
- @seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || [])
- @seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || [])
- @metalink='#metadata'
- @tocband_scroll,@tocband_segtoc=nil,nil
- @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet
- @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
- @index='index'
- @toc="#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_segtoc}"
- end
- def url_path_image_sys
- (@o_str.dump_or_redirect?) \
- ? './image'
- : "#{Xx[:html_relative2]}_sisu/image_sys"
- end
- def icon
- def up
- 'arrow_up_red.png'
- end
- def next
- 'arrow_next_red.png'
- end
- def previous
- 'arrow_prev_red.png'
- end
- def dot_clear
- 'dot_clear.png'
- end
- def dot_white
- 'dot_white.png'
- end
- def dot
- dot_white
- end
- self
- end
- def png_nav
- def toc
- %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.up}" alt="TOC" />}
- end
- def pre
- %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.previous}" alt="&lt;&lt;&nbsp;previous" />}
- end
- def nxt
- %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.next}" alt="next&nbsp;&gt;&gt;" />}
- end
- def dot_toc
- %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="&#094;" />}
- end
- def dot_pre
- %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="&lt;" />}
- end
- def dot_nxt
- %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="&gt;" />}
- end
- self
- end
- def doc_types #used in toc & seg_nav_band
- scroll=seg=''
- wgt=SiSU_HTML_Format::Widget.new(@md)
- %{
-<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0">
-<tr>
-<td align="center" bgcolor=#{@vz.color_band2}>
- #{wgt.manifest}
- #{wgt.search}
-</tr></table>}
- end
- def rdf
- SiSU_XML_Tags::RDF.new(md)
- end
- def doc_type
- %{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">\n}
- end
- def table_close
- %{ </font>
-#{@vz.table_close}}
- end
- def buttons_home
- %{<!- home and index buttons -!>
- #{@vz.banner_home_and_index_buttons}
-<!- home and index buttons -!>}
- end
- def copyat
- %{#{@vz.paragraph_font_tiny}copy @
- <a href="#{@vz.url_home}" #{@vz.js_home}>
- #{@vz.txt_home}
- </a></h1>}
- end
- def html_close #moved
- %{</body>
-</html>}
- end
- end
- class Widget < HeadInformation
- def initialize(md)
- super(md)
- @md=md
- @cf_defaults=SiSU_Env::InfoProcessingFlag.new
- @env=SiSU_Env::InfoEnv.new(md.fns)
- @file=SiSU_Env::FileOp.new(md)
- @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
- @make=SiSU_Env::ProcessingSettings.new(@md)
- end
- def home
- %{<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="../index.html" target="_top">
- #{@vz.nav_txt_homepage}</a>
-</td>
-}
- end
- def scroll(text)
- if @md.fns =~ /\.(?:-|ssm\.)?sst$/
- scroll=%{<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}html/#{@file.base_filename.html_scroll}" target="_top" #{@vz.js_doc}>
- #{text}
- </a>
-</td>
-}
- end
- end
- def seg(text)
- %{<td align="center" bgcolor="#99CC66">
- <a href="#{@md.file.base_filename.html_segtoc}" target="_top" #{@vz.js_doc}>
- #{text}
- </a>
-</td>
-}
- end
- def search
- if @make.build.html_search_form?
- env=SiSU_Env::InfoEnv.new(@md.fns,@md)
- env.widget.search_form('sisusearch',nil,nil,true)
- else ''
- end
- end
- def manifest
- if @make.build.links_to_manifest? \
- and not @o_str.dump_or_redirect?
- manifest_lnk=if @file.output_dir_structure.by_language_code? \
- or @file.output_dir_structure.by_filetype?
- "#{Xx[:html_relative1]}manifest/#{@file.base_filename.manifest}"
- else @file.base_filename.manifest
- end
- %{<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{manifest_lnk}" target="_top" #{@vz.js_manifest}>
- #{@vz.nav_txt_manifest}
- </a>
-</td>}
- else ''
- end
- end
- def pdf #retired 2.7.9
- pdf=if @md.programs[:pdf] \
- and @cf_defaults.cf_0 =~/p/
- %{
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_p}" target="_top" #{@vz.js_portrait}>
- #{@vz.nav_txt_pdf_portrait}
- </a>
-</td>
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_l}" target="_top" #{@vz.js_portrait}>
- #{@vz.nav_txt_pdf_landscape}
- </a>
-</td>
-}
- else ''
- end
- end
- def txt #retired 2.7.9
- txt=if @cf_defaults.cf_0 =~/[at]/
- %{
-<td valign=bottom bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}txt/#{@file.base_filename.txt}" target="_top" #{@vz.js_plaintext}>
- #{@vz.nav_txt_plaintext}
- </a>
-</td>}
- else ''
- end
- end
- def epub #retired 2.7.9
- epub=if @cf_defaults.cf_0 =~/e/
- %{
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}epub/#{@file.base_filename.epub}" target="_top" #{@vz.js_epub}>
- #{@vz.nav_txt_epub}
- </a>
-</td>}
- else ''
- end
- end
- def odf #retired 2.7.9
- odf=if @cf_defaults.cf_0 =~/o/
- %{
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}odt/#{@file.base_filename.odt}" target="_top" #{@vz.js_odf}>
- #{@vz.nav_txt_odf}
- </a>
-</td>}
- else ''
- end
- end
- def concordance(text) #retired 2.7.9
- if @md.concord_make \
- and @md.wc_words < 300000 #max word count for display of concordance here as would now be a large file
- %{<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{@md.file.base_filename.html_concordance}" target="_top" #{@vz.js_concordance}>
- #{text}
- </a>
- </td>}
- else ''
- end
- end
- end
- class XML
- end
- class HeadToc < HeadInformation
- def initialize(md)
- super(md)
- @md=md
- @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
- @make=SiSU_Env::ProcessingSettings.new(@md)
- end
- def scroll_head_navigation_band
- if @make.build.html_top_band?
- search_and_manifest=<<WOK
-<td align="center" width="60%">
- #{make_scroll_search_form_and_manifest_link}
-</td>
-WOK
- %{<table summary="table of contents scroll navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>#{search_and_manifest}
-<td width="20%">
- &nbsp;
-#{@vz.table_close}
-<p />}
- else ''
- end
- end
- def concordance_navigation_band(type='')
- if @make.build.html_top_band?
- %{<table summary="concordance navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>
-<td width="20%" align="right">
- &nbsp;<a href="toc.html" target="_top" alt="-&gt;">
- #{png_nav.toc}
- </a>&nbsp;
-#{@vz.table_close}
-<p />}
- else ''
- end
- end
- def seg_head_navigation_band(type='')
- firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" alt="-&gt;">
- #{png_nav.nxt}
- </a>} if @md.firstseg =~/\S+/
- %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>
-<td width="75%" align="center">
- #{doc_types}
-</td>
-<td width="5%" align="right">
- &nbsp;#{firstseg}&nbsp;
-#{@vz.table_close}
-<p />}
- end
- def manifest_link(text)
-# @file=SiSU_Env::FileOp.new(@md) if @md
- %{<font size=2>
- <a href="#{@md.file.base_filename.manifest}" target="_top" #{@vz.js_manifest}>#{text}</a>
- </font>}
- end
- def concordance_link(text)
- if @md.concord_make
- %{<font size=2>
- <a href="#{@md.file.base_filename.html_concordance}" target="_top" #{@vz.js_concordance}>
- #{text}
- </a>
- </font>}
- else ''
- end
- end
- def make_scroll_search_form_and_manifest_link
- wgt=SiSU_HTML_Format::Widget.new(@md)
- scroll=%{<td align="center" bgcolor=#{@vz.color_band2}>
- #{@vz.nav_txt_doc_link}
-</td>
-}
- %{<table summary="toc segment and scroll with pdf" border="0" cellpadding="3" cellspacing="0">
-<tr>
- #{wgt.manifest}
- #{wgt.search}
-</tr></table>}
- end
- def make_scroll_seg_pdf
- manifest=scroll=seg=''
- wgt=SiSU_HTML_Format::Widget.new(@md)
- seg=%{<td align="center" bgcolor=#{@vz.color_band2}>
- #{@vz.nav_txt_toc_link}
-</td>
-}
- %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0">
-<tr>
-<td align="center" bgcolor=#{@vz.color_band2}>
- #{wgt.manifest}
- #{wgt.search}
-</tr></table>}
- end
- def make_concordance
- manifest=scroll=seg=''
- wgt=SiSU_HTML_Format::Widget.new(@md)
- %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0">
-<tr>
-<td align="center" bgcolor=#{@vz.color_band2}>
- #{wgt.manifest}
- #{wgt.search}
-</tr></table>}
- end
- def head
- rdf=SiSU_XML_Tags::RDF.new(@md)
- %{#{doc_type}
-<head>
- <title>
- #{@md.html_title}
- </title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{rdf.metatag_html}
-#{@stylesheet.css_head}
-</head>
-#{@vz.color_body}
-<a name="top" id="top"></a>
-<a name="up" id="up"></a>
-<a name="start" id="start"></a>
-#{@vz.js_top}}
- end
- def concordance
- if @md.concord_make
- %{#{@vz.margin_css}
- <h4 class="toc">
- <a href="./#{@md.file.base_filename.html_concordance}" #{@vz.js_concordance}>
- <i>Concordance</i>
- </a>
- </h4>
-#{@vz.table_close}}
- else
- %{#{@vz.margin_css}
-#{@vz.table_close}}
- end
- end
- def links_guide_vertical_open
-# @file=SiSU_Env::FileOp.new(@md) if @md
- url=((defined? @vz.url_hp) && @vz.url_hp =~/^https?:\/\/\S+$/ ? @vz.url_hp : @vz.url_home)
- %{
-<div id="vertical_links">
- <ul id="vertical">
- <li class="refbold">
- <a href="#{url}" #{@vz.js_home}>
- #{@vz.txt_hp}
- </a>
- </li>
- <li class="ref">
- Quick Ref.:
- </li>
- <li class="ref">
- <a href="#{@md.file.base_filename.manifest}" alt="Document Manifest" target="_top">
- Manifest
- </a>
- </li>
-<!- quick ref -!>}
- end
- def links_guide_horizontal_open
-# @file=SiSU_Env::FileOp.new(@md) if @md
- url=((defined? @vz.url_hp) && @vz.url_hp =~/^https?:\/\/\S+$/ ? @vz.url_hp : @vz.url_home)
- %{
-<div id="horizontal_links">
- <ul id="horizontal">
- <li class="refbold">
- <a href="#{url}" #{@vz.js_home}>
- #{@vz.txt_hp}
- </a>
- </li>
- <li class="ref">
- Quick Ref.:
- </li>
- <li class="ref">
- <a href="#{@md.file.base_filename.manifest}" alt="Document Manifest" target="_top">
- Manifest
- </a>
- </li>
-<!- quick ref -!>}
- end
- def links_guide_open(type='horizontal')
- if type=='vertical'; links_guide_vertical_open
- else links_guide_horizontal_open
- end
- end
- def links_guide_close
- insert=''
- insert=if @md.sfx_src =~/s?/
- link='http://sisudoc.org' #get from defaults
- url='sisudoc.org'
- name='SiSU electronic documents' #get from defaults
- insert= %{
- <li class="ref">
- <a href="#{link}" alt="#{name}" target="_top">
- #{url}
- </a>
- </li>
- </ul>
-</div>
-}
- end
- %{ #{insert}
-<!- quick ref -!>}
- end
- def prefix_a
- end
- def rights
- def all
- rights=@md.rights.all.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>&copy;</sup>&nbsp;')
- %{<p class="small_left">Rights: #{rights}</p>
-<p />}
- end
- self
- end
- def prefix_b
- %{<p class="small_left">Prefix: #{@md.prefix_b}<p />}
- end
- def scroll_head_title_banner_open
- %{<center>
-#{@md.icon}
-</center>
-#{@vz.banner_instrument_cover_band_scr}}
- end
- def seg_head_title_banner_open
- %{<center>
- #{@md.icon}
-</center>
-#{@vz.banner_instrument_cover_band_seg}}
- end
- def make_scroll
- concord=concordance_link(@vz.nav_txt_concordance)
- %{<table summary="toc scroll" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="center" bgcolor="white" border="0">
- #{@vz.nav_txt_doc_link}
-</td>
-<td align="center" bgcolor="white">
- #{concord}
-#{@vz.table_close}}
- end
- def make_seg
- concord=concordance_link(@vz.nav_txt_concordance)
- %{<table summary="toc segment" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="center" bgcolor="white">
- #{@vz.nav_txt_toc_link}
-</td>
-<td align="center" bgcolor="white">
- <font size=2>
- #{concord}
-#{@vz.table_close}}
- end
- def manifest #check structure
- if not @o_str.dump_or_redirect?
- manifest=manifest_link(@vz.nav_txt_manifest)
- %{#{@vz.margin_txt_3}
- #{@vz.paragraph_font_small}
- #{manifest}
- </font>
-#{@vz.table_close}}
- else ''
- end
- end
- def concordance #check structure
- concord=concordance_link(@vz.nav_txt_concordance)
- %{#{@vz.margin_txt_3}
- #{@vz.paragraph_font_small}
- #{concord}
- </font>
-#{@vz.table_close}}
- end
- def metadata
- %{#{@vz.margin_css}
- <h4 class="toc">
- <a href="#{@metalink}" #{@vz.js_metalink}>
- <i>MetaData</i>
- </a>
- </h4>
-#{@vz.table_close}}
- end
- def seg_tail
- %{
-<div class="main_column">
-<p>&nbsp;<p>
-<table summary="toc segment tail" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>
-<td width="60%">
- <center>
- #{@tocband_segtoc}
- </center>
-</td></tr>
-</table>
-<p>&nbsp;</p>
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-</div>
-</div>
-</div>
-}
- end
- def scroll_tail #debug
- nav=scroll_head_navigation_band
- %{
-<div class="main_column">
-#{nav}
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-</div>
-</div>
-</div>
-}
- end
- def seg_navigation_tail #this is a bug area, look up and "tidy"
- %{
-<div class="main_column">
-<p>&nbsp;</p>
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-</div>
-</div>
-</div>
-}
- end
- end
- class HeadSeg < HeadInformation
- def initialize(md)
- super(md)
- end
- def title_banner(title,subtitle,creator)
- end
- def dot_control_pre_next
- pre="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}"
- up=@toc
- nxt="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}"
- if nxt=~/sisu_manifest\.html/
- @file=SiSU_Env::FileOp.new(@md) if @md
- if @file.output_dir_structure.by_language_code? \
- or @file.output_dir_structure.by_filetype?
- nxt=nxt.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
- end
- end
- %{<table summary="segment hidden control pre and next" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">
-<tr><td align="left">
- <a href="#{pre}" target="_top" #{@vz.js_prev}>
- #{png_nav.dot_pre}
- </a>
-</td>
-<td align="center">
- <a href="#{up}" target="_top" #{@vz.js_toc}>
- #{png_nav.dot_toc}
- </a>
-</td>
-<td align="right">
- <a href="#{nxt}" target="_top" #{@vz.js_next}>
- #{png_nav.dot_nxt}
- </a>
-#{@vz.table_close}}
- end
- def dot_control_pre
- pre="#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.lang_code_insert}#{Sfx[:html]}"
- up=@toc
- nxt="#{@md.file.base_filename.html_segtoc}"
- %{<table summary="segment hidden control pre" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">
-<tr><td align="left">
- <a href="#{pre}" target="_top" #{@vz.js_prev}>
- #{png_nav.dot_pre}
- </a>
-</td>
-<td align="center">
- <a href="#{up}" target="_top" #{@vz.js_toc}>
- #{png_nav.dot_toc}
- </a>
-</td>
-<td align="right">
- <a href="#{nxt}" target="_top" #{@vz.js_next}>
- #{png_nav.dot_nxt}
- </a>
-#{@vz.table_close}}
- end
- def toc_nav(f_pre=false,f_nxt=false,use=1)
- pre=nxt=''
- toc=%{<td align="center" bgcolor=#{@vz.color_band1}>
- <a href="#{@toc}" target="_top" #{@vz.js_toc}>
- #{png_nav.toc}
- </a>
-</td>}
- pre=%{<td align="center" bgcolor=#{@vz.color_band1}>
- <a href="#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_prev}>
- #{png_nav.pre}
- </a>
-</td>} if f_pre==true
- nxt=%{<td align="center" bgcolor=#{@vz.color_band1}>
- <a href="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" #{@vz.js_next}>
- #{png_nav.nxt}
- </a>
-</td>} if f_nxt==true
- if nxt =~/sisu_manifest.html/
- @file=SiSU_Env::FileOp.new(@md) if @md
- if @file.output_dir_structure.by_language_code? \
- or @file.output_dir_structure.by_filetype?
- nxt=nxt.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
- end
- end
- %{<table summary="segment navigation pre/next" border="0" cellpadding="3" cellspacing="0">
-<tr>
-#{pre}
-#{toc}
-#{nxt}
-<td>
-#{@vz.table_close}}
- end
- def toc_next2
- pre,nxt=false,true
- toc_nav(false,true).dup
- end
- def toc_pre_next2
- toc_nav(true,true).dup
- end
- def toc_pre2
- toc_nav(true,false,2).dup
- end
- def manifest_link(text)
- %{<font size=2>
- <a href="#{@md.file.base_filename.manifest}" target="_top" #{@vz.js_manifest}>
- #{text}
- </a>
- </font>}
- end
- def concordance_link(text)
- if @md.concord_make
- %{<font size=2>
- <a href="#{@md.file.base_filename.html_concordance}" target="_top" #{@vz.js_concordance}>
- #{text}
- </a>
- </font>}
- else ''
- end
- end
- def navigation_table
- %{<table summary="navigation segment table" width=#{@vz.table_width_1} border="0" bgcolor="white" cellpadding="0">
-<tr><th width="#{@@indent['leve_1']}" align="right">
-</td>
-<td valign="top">
- <font size=2>}
- end
- def navigation_table1
- %{<table summary="navigation segment table1" width=#{@vz.table_width_1} border="0" cellpadding=#{@vz.table_cellpad_box} bgcolor=#{@vz.color_table1} align="left">
-<tr><td valign="top">
- <font size="2">}
- end
- def navigation_table2
- %{<table summary="navigation segment table2" width=#{@vz.table_width_2} border="0" cellpadding=#{@vz.table_cellpad_box} bgcolor=#{@vz.color_table2} align="left">
-<tr><td valign="top">
- <font size="2">}
- end
- def heading_advert_local_1
- dir=SiSU_Env::InfoEnv.new(@fns)
- %{ <center>
-<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
-<tr><td align="center" bgcolor="white">
- <a href="http://#{@md.ad_url}#{Sfx[:html]}" target="_top">
- <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}">
- </a>
- <p />
-#{@vz.table_close}
-</center>}
- end
- def heading_advert_local_2
- dir=SiSU_Env::InfoEnv.new(@fns)
- %{ <center>
-<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
-<tr><td align="center" bgcolor="white">
- <a href="#{@md.ad_url}#{Sfx[:html]}" target="_top">
- <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}">
- </a>
- <p />
-#{@vz.table_close}
-</center>}
- end
- def heading_advert_external
- dir=SiSU_Env::InfoEnv.new(@fns)
- %{ <center>
-<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
-<tr><td align="center" bgcolor="white">
- <a href="#{@md.ad_url}#{Sfx[:html]}" target="external">
- <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}">
- </a>
- <p />
-#{@vz.table_close}
-</center>}
- end
- def credit
- %{
-<div class="main_column">
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits" id="credits"></a>
-</div></div>
-}
- end
- def navigation_band(segtocband,seg_table_top_control) #change name to navigation_band_banner
- %{<table summary="segment navigation band with banner" bgcolor=#{@vz.color_band1} width="100%"><tr>
-<td width="20%" align="left">
-#{@vz.banner_band}
-</td>
-<td width="75%" align="center">
- #{doc_types}
-</td>
-<td width="5%" align="right">
- #{segtocband}
-</td></tr>
-</table>
-#{seg_table_top_control}}
- end
- def navigation_band_bottom(segtocband,seg_table_top_control) #change name to navigation_band_bannerless
- %{
-<div class="main_column">
- <table summary="segment navigation band" bgcolor=#{@vz.color_band1} width="100%"><tr>
- <td width="70%" align="center">
- #{doc_types}
- </td>
- <td width="5%" align="right">
- #{segtocband}
- </td></tr>
- </table>
- #{seg_table_top_control}
-</div>
-}
- end
- def endnote_mark
-%{
-<p class="center" id="endnotes">
- <hr class="endnote" />
-</p>}
- end
- def endnote_section_open
-%{
-<div class="endnote">
-}
- end
- def endnote_section_close
-%{
-</div>
-} #revisit
- end
- def head_seg
- rdf=SiSU_XML_Tags::RDF.new(@md)
- %{#{doc_type}
-<head>
- <title>
- #{@seg_name_html[@seg_name_html_tracker]} -
- #{@md.html_title}
- </title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{rdf.metatag_html}
-#{@stylesheet.css_head_seg}
-</head>
-#{@vz.color_body}
-<a name="top" id="top"></a>
-<a name="up" id="up"></a>
-<a name="start" id="start"></a>
-#{@vz.js_top}}
- end
- def title_banner(title,subtitle,creator)
- %{
-<div class="summary">
- <p class="tiny">
- #{title}
- </p>
- <p class="tiny">
- #{subtitle}
- </p>
- <p class="tiny">
- #{creator}
- </p>
- <p class="tiny">
- copy @
- <a href="#{@vz.url_home}">
- #{@vz.txt_home}
- </a>
- </p>
-</div>
-}
- end
- end
- class HeadScroll < HeadToc
- def initialize(md)
- super(md)
- end
- def toc_owner_details
- %{#{@vz.margin_txt_3}
-#{@vz.paragraph_font_small}
- <a href="#owner.details">
- Owner Details
- <font size="1" color="#777777">
- &nbsp;&nbsp;&nbsp;
- </font>
- </a>
- </font>
-#{@vz.table_close}}
- end
- end
- class FormatTextObject
- @vz=SiSU_Env::GetInit.instance.skin
- attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- if t_o.class==Hash
- @txt =t_o[:txt] || nil
- @ocn =t_o[:ocn] || nil
- @ocn_display =t_o[:ocn_display] || nil
- @headname =t_o[:headname] || nil
- @trailer =t_o[:trailer] || nil
- @endnote_part_a =t_o[:endnote_part_a] || nil
- @endnote_part_b =t_o[:endnote_part_b] || nil
- @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/
- @dob=t_o if defined? t_o.is
- @named=nametags_seg(@dob)
- @txt=((defined? t_o.obj) ? t_o.obj : nil)
- @ocn=((defined? t_o.ocn) ? t_o.ocn.to_s : nil)
- @headname=((t_o.is==:heading and defined? t_o.name) ? t_o.name : nil)
- else
- if @md.opt.cmd =~/M/
- p t_o.class
- p caller
- end
- end
- @headnamed= (@headname ? %{<a name="h#{@headname}" id="h#{@headname}"></a>} : nil)
- if @txt and not @txt.empty?
- @txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
- end
- @p_num=ParagraphNumber.new(@md,@ocn)
- @vz=SiSU_Env::GetInit.instance.skin
- @make=SiSU_Env::ProcessingSettings.new(@md)
- end
- def nametags_scroll(dob)
- tags=''
- if defined? dob.tags \
- and dob.tags.length > 0 # insert tags "hypertargets"
- dob.tags.each do |t|
- tags=tags +%{<named id="#{t}" />}
- end
- end
- tags
- end
- def nametags_seg(dob) #FIX
- tags=''
- if defined? dob.tags \
- and dob.tags.length > 0 # insert tags "hypertargets"
- dob.tags.each do |t|
- tags=tags +%{<a name="#{t}" ></a>}
- end
- end
- tags
- end
- def headname #check whether used
- hn=if @t_o.is ==:heading \
- and not @t_o.name.empty? #determine use
- hn=if @t_o.is ==:heading; %{<a name="h#{@t_o.name}" id="h#{@t_o.name}"></a>}
- else %{<a name="#{@t_o.name}" id="#{@t_o.name}"></a>}
- end
- else nil
- end
- hn
- end
- def endnote_body
- %{
-<p class="endnote">
- #{@txt}
-</p>
-}
- end
- def endnote_body_indent
- %{
- <p class="endnote_indent">
- #{@txt}
- </p>
-}
- end
- def no_paranum
- %{
-<div class="substance">
- <label class="ocn">&nbsp;</label>
- <p class="norm">
- #{@txt}
- </p>
-</div>
-}
- end
- def para_form_css(tag,attrib) # regular paragraphs shaped here
- ul=ulc=''
- ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- #{ul}<#{tag} class="#{attrib}" #{@p_num.id}>
- #{@named}#{@txt}
- </#{tag}>#{ulc}
-</div>
-}
- end
- def para
- para_form_css('p','norm')
- end
- def block
- para_form_css('p','block')
- end
- def group
- para_form_css('p','group')
- end
- def alt
- para_form_css('p','alt')
- end
- def verse
- para_form_css('p','verse')
- end
- def code
- para_form_css('p','code')
- end
- def center
- para_form_css('p','center')
- end
- def bold
- para_form_css('p','bold')
- end
- def bullet
- para_form_css('li','bullet')
- end
- def table
- @txt=if @t_o.obj !~/^<table\s/
- table=SiSU_HTML_Shared::TableHTML.new(@t_o) #move, make happen earlier
- @txt=table.table.obj
- else @txt
- end
- para_form_css('p','norm')
- end
- def break
- @txt=@txt.gsub(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />').
- gsub(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />')
- para_form_css('p','norm')
- end
- def format(tag,attrib)
- para_form_css(tag,attrib)
- end
- def heading_normal(tag,attrib)
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name}
- #{@named}<a name="h#{@headname}">#{@txt}</a>
- </#{tag}>
-</div>
-}
- end
- def heading_body
- heading_normal('p','norm')
- end
- def heading_body1
- heading_normal('h1','norm')
- end
- def heading_body2
- heading_normal('h2','norm')
- end
- def heading_body3
- heading_normal('h3','norm')
- end
- def heading_body4
- heading_normal('h4','norm')
- end
- def heading_body5
- heading_normal('h5','norm')
- end
- def heading_body6
- heading_normal('h6','norm')
- end
- def title_heading(tag,attrib)
- cl=(@make.build.html_minitoc?) \
- ? 'content'
- : 'content0'
- %{
-<div class="#{cl}">
-<#{tag} class="#{attrib}">
- #{@named}#{@txt}
- </#{tag}>
-</div>
-}
- end
- def title_heading1
- title_heading('h1','tiny')
- end
- def title_heading2
- title_heading('h2','tiny')
- end
- def title_heading3
- title_heading('h3','tiny')
- end
- def title_heading4
- ''
- end
- def seg_heading_sub(tag,attrib)
- @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headnamed}
- #{@named}#{@txt}
- </#{tag}>
-</div>
-}
- end
- def seg_heading4
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <h1 class="norm" #{@p_num.id}>#{@p_num.name}
- #{@txt}
- </h1>
-</div>
-}
- end
- def seg_heading5
- seg_heading_sub('p','bold')
- end
- def seg_heading6
- seg_heading_sub('p','bold')
- end
- def dl #check :trailer
- "<dl><b>#{@txt}</b> #{@trailer}</dl>"
- end
- def table_css_end
- '</table>
- </p>
- </div>'
- end
- def gsub_body #fix
- @txt=case @txt
- when /^\((i+|iv|v|vi+|ix|x|xi+)\)/
- @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>')
- when /^\(?(\d|[a-z])+\)/
- @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>')
- when /^\s*\d{1,3}\.\s/
- @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>')
- when /^\s*[A-Z]\.\s/
- @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>')
- else @txt
- end
- end
- def bold_para
- %{#{@vz.margin_txt_0}
- <p class="bold">
- #{@txt}
- </p>
-#{@vz.margin_num_css}
- &nbsp;&nbsp;&nbsp;
-#{@vz.table_close}}
- end
- def bold_heading
- @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>').
- gsub(/[1-9]~/,'')
- %{<p class="bold">
- #{@txt}
- </p>
-#{@vz.margin_num_css}
- &nbsp;&nbsp;&nbsp;
-#{@vz.table_close}}
- end
- def toc_head_copy_at
- %{<p class="center">#{@txt}</p>\n}
- end
- def center
- %{<p class="center">#{@txt}</p>\n}
- end
- def bold
- %{<p class="bold">#{@txt}</p>\n}
- end
- def center_bold
- %{<p class="centerbold">#{@txt}</p>\n}
- end
- end
- class FormatScroll < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- @vz=SiSU_Env::GetInit.instance.skin
- end
- end
- class FormatSeg < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- end
- def navigation_toc_lev1_advert
- %{#{@banner.home_button}\n
-<center>
-#{@txt}
-#{@two}
-</a></center><p />}
- end
- def navigation_toc_lev1
- %{#{@banner.nav_toc}}
- end
- def navigation_toc_lev2 #change bold use css
- %{<p />
-<table summary="navigation segment level 2">
-<tr><td width ="20">
-</td>
-<td>
- <font size="3" #{@vz.font_face}>
- <b>#{@txt}</b>
- </font>
- </p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev3 #change bold use css
- %{<p />
-<table summary="navigation segment level 3">
-<tr><td width ="20">
-</td>
-<td>
- <font size="3" #{@vz.font_face}>
- <b>#{@txt}</b>
- </font>
- </p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev4
- %{<table summary="navigation segment level 4">
-<tr><td width ="80">
-</td>
-<td>
-<p>
- #{@txt}
-</p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev5
- end
- def navigation_toc_lev6
- end
- def endnote_seg_body(fn='') #FIX #url construction keep within single line... BUG WATCH 200408
- fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info
- %{
- <p class="endnote">
- #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:html]}#{@endnote_part_b}
- </p>
-}
- end
- def clean(txt)
- txt=txt.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,'').
- gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
- txt
- end
- def subtoc_lev(tag,attrib)
- @txt=clean(@txt)
- txt=if @txt \
- and @txt =~/<\/?i>|<a\s+name="\S+?">/mi
- @txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text
- else @txt
- end
- note=''
- if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
- note=$1
- note=note.gsub(/[\n\s]+/m,' ')
- txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
- gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
- end
- %{<#{tag} class="#{attrib}">
- <a href="##{@ocn}"><i>#{txt}</i></a> #{note}
- </#{tag}>}
- end
- def subtoc_lev5
- subtoc_lev('h5','subtoc') if @txt
- end
- def subtoc_lev6
- subtoc_lev('h6','subtoc') if @txt
- end
- def heading_sub(tag,attrib)
- @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headnamed}
- #{@txt}
- </#{tag}>
-</div>
-}
- end
- def heading5
- heading_sub('p','bold')
- end
- def heading6
- heading_sub('p','bold')
- end
- def heading4
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <h1 class="norm" #{@p_num.id}>#{@p_num.name}
- #{@t_o[:format]}
- #{@txt}
- </h1>
-</div>
-}
- end
- def navigation_heading4
- %{<table summary="navigation segment heading 4" width=100% bgcolor="#08163f" border="0">
-<tr><td align="center">
-<p class="bold">
- #{@txt}
-</p>
-#{@vz.table_close}}
- end
- def navigation_heading5
- %{<p class="bold">
- #{@txt}
-</p>}
- end
- def navigation_heading6
- %{<p class="bold">
- #{@txt}
-</p>}
- end
- def navigation_center
- "<center>#{@txt}</center>"
- end
- end
- class FormatToc < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- end
- def links_guide
- %{ <li class="doc">
- <a href="#{@lnk_url}" target="_top">
- #{@lnk_txt}
- </a>
- </li>
-}
- end
- def lev(tag,attrib)
- if @txt
- %{<#{tag} class="#{attrib}">
- #{@txt}
- </#{tag}>
-}
- else ''
- end
- end
- def lev1
- lev('h1','toc')
- end
- def lev2
- lev('h2','toc')
- end
- def lev3
- lev('h3','toc')
- end
- def lev4
- lev('h4','toc')
- end
- def lev5
- lev('h5','toc')
- end
- def lev6
- lev('h6','toc')
- end
- def lev0 #docinfo
- lev('h0','toc')
- end
- def strip_endnotes(txt)
- txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- txt
- end
- def mini_lev1
- @txt=strip_endnotes(@txt)
- lev('h1','minitoc')
- end
- def mini_lev2
- @txt=strip_endnotes(@txt)
- lev('h2','minitoc')
- end
- def mini_lev3
- @txt=strip_endnotes(@txt)
- lev('h3','minitoc')
- end
- def mini_lev4
- @txt=strip_endnotes(@txt)
- lev('h4','minitoc')
- end
- def mini_lev5
- @txt=strip_endnotes(@txt)
- lev('h5','minitoc')
- end
- def mini_lev6
- @txt=strip_endnotes(@txt)
- lev('h6','minitoc')
- end
- def mini_lev0 #docinfo
- lev('h0','minitoc')
- end
- def mini_tail
- %{
- <h4 class="minitoc">
- <a href="sisu_manifest.html">Manifest (alternative outputs)</a>
- </h4>
-}
- end
- def mini_concord_tail
- %{
- <h4 class="minitoc">
- <a href="concordance.html">Concordance (wordlist)</a>
- </h4>
- <h4 class="minitoc">
- <a href="sisu_manifest.html">Manifest (alternative outputs)</a>
- </h4>
-}
- end
- end
- class FormatStr
- def initialize(md,str)
- @str=str
- end
- def center
- %{<p class="center">#{@str}</p>\n}
- end
- def bold
- %{<p class="bold">#{@str}</p>\n}
- end
- def center_bold
- %{<p class="centerbold">#{@str}</p>\n}
- end
- def endnote_body
- %{
-<p class="endnote">
- #{@str}
-</p>
-}
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/html_minitoc.rb b/lib/sisu/v3dv/html_minitoc.rb
deleted file mode 100644
index 729eee50..00000000
--- a/lib/sisu/v3dv/html_minitoc.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
- minitoc
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
- module SiSU_HTML_MiniToc
- require_relative 'html_tune' # html_tune.rb
- include SiSU_HTML_Tune
- class TocMini
- @@seg_mini=nil
- @@seg_url=''
- @@firstseg=nil
- def initialize(md,data)
- @md,@data=md,data
- @pat_strip_heading_name=/<a name="h?\d.*?">(.+?)<\/a>/
- @tell=SiSU_Screen::Ansi.new(@md.opt.cmd) if @md
- end
- def songsheet
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Toc').txt_grey if @md.opt.cmd =~/[MVv]/
- toc=nil
- @toc=[]
- @data.each do |txt|
- if txt.is ==:heading \
- || txt.is ==:heading_insert
- txt.obj=txt.obj.gsub(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,''). #remove endnotes from toc
- gsub(/<a name="-\d+" href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;<\/a>/,'').
- gsub(@pat_strip_heading_name,'\1')
- #gsub(/(.*?)<a name="(\d+)"><\/a>(.*)/,'\1') #2002w42 altered gsub - problematic? - suspect
- toc=case txt.ln
- when 1; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_1
- when 2; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_2
- when 3; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_3
- when 4; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_4
- when 5; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_5
- when 6; SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_6
- else
- end
- @toc << toc
- end
- end
- @toc
- end
- protected
- def level_concordance
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
- @@seg_mini << format_head_toc.mini_seg_concordance
- end
- def level_metadata
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
- @@seg_mini << format_head_toc.mini_seg_metadata
- end
- def level_word_index
- format_head_toc=SiSU_HTML_Format::HeadToc.new(@d0c)
- @@seg_mini << format_head_toc.mini_concordance
- end
- def level_1
- txt=@data
- if (txt.is ==:heading \
- || txt.is ==:heading_insert) \
- && txt.ocn !=0
- txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
- end
- title=unless txt.obj =~/Document Information/; txt.obj
- else
- link='metadata'
- %{<b><a href="#{link}#{@md.lang_code_insert}#{Sfx[:html]}">#{txt.obj}</a></b>}
- end
- toc={}
- txt_obj={ txt: title }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc_mini=if txt.name =~/^meta/ and txt.obj=~/Document Information/
- format_toc.mini_tail
- else format_toc.mini_lev1
- end
- toc_mini
- end
- def level_2
- txt=@data
- if (txt.is ==:heading \
- || txt.is ==:heading_insert) \
- && txt.ocn !=0
- txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
- end
- txt_obj={ txt: txt.obj }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc_mini=format_toc.mini_lev2
- toc_mini
- end
- def level_3
- txt=@data
- txt_obj={ txt: txt.obj }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc_mini=format_toc.mini_lev3
- toc_mini
- end
- def level_4
- txt=@data
- unless txt =~/~metadata/
- if txt.ln ==4
- seg_link=%{ <a href="#{txt.name}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top">
- #{txt.obj}
- </a> }
- @@seg_url=txt.name
- elsif txt.obj =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/
- seg_link=txt.obj.gsub(/^(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/,
- %{<a href="\\2#{@md.lang_code_insert}#{Sfx[:html]}" } +
- %{target="_top">\\1 \\2</a> })
- end
- txt_obj={ txt: seg_link }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc_mini=format_toc.mini_lev4
- toc_mini
- end
- end
- def level_5
- txt=@data
- if (txt.is ==:heading \
- || txt.is ==:heading_insert) \
- && txt.ocn !=0
- txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
- end
- toc={}
- lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{txt.ocn}">
- #{txt.obj}
- </a>}
- txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc_mini=format_toc.mini_lev5
- toc_mini
- end
- def level_6
- txt=@data
- if (txt.is ==:heading \
- || txt.is ==:heading_insert) \
- && txt.ocn !=0
- txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
- end
- toc={}
- lnk_n_txt=%{ <a href="#{@@seg_url}#{@md.lang_code_insert}#{Sfx[:html]}##{txt.ocn}">
- #{txt.obj}
- </a>}
- txt_obj={ txt: lnk_n_txt }
- format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
- toc_mini=format_toc.mini_lev6
- toc_mini
- end
- end
- end
-__END__
diff --git a/lib/sisu/v3dv/html_promo.rb b/lib/sisu/v3dv/html_promo.rb
deleted file mode 100644
index f53211e9..00000000
--- a/lib/sisu/v3dv/html_promo.rb
+++ /dev/null
@@ -1,445 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: html advertising component, build here, mockup
-
-=end
-module SiSU_HTML_Promo
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- class Ad
- def initialize(md)
- @md=md
- @env=SiSU_Env::InfoEnv.new(@md.fns,@md)
- @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- @ad=SiSU_Env::GetInit.instance.ads
- @vz=SiSU_Env::GetInit.instance.skin
- @flag=@env.widget.promo?
- @make=SiSU_Env::ProcessingSettings.new(@md)
- end
- def div
- def major
- (@make.build.html_right_pane? \
- && @flag[:ad]) \
- ? '<div id="pane_major">'
- : ''
- end
- def minor
- (@make.build.html_right_pane? \
- && @flag[:ad]) \
- ? '<div id="pane_minor">'
- : ''
- end
- def close
- (@make.build.html_right_pane? \
- && @flag[:ad]) \
- ? '</div>'
- : ''
- end
- self
- end
- def display
- ads_array,promo_array=[],[]
- if @make.build.html_right_pane? \
- && @flag[:ad]
- ads=if @md.promo && @md.promo.length > 0 #promo set in document
- promo_array=@md.promo
- elsif @flag[:sk] #promo set in associated skin
- promo_array=@vz.widget_promo
- elsif @flag[:rc] #promo set in rc file
- promo_array=if @rc['html']['promo'].class==String
- @rc['html']['promo'].split(/[,;]\s*/)
- else @rc['html']['promo']
- end
- else advert_extract_all
- end
- ads=if promo_array.length > 0
- promo_array.each do |x|
- ads_array << advert_extract_subject(x)
- end
- ads_array
- end
- adverts(ads.join)
- end
- end
- def cell(prod,id)
- @prod,@id=prod,id
- def title
- @prod['title'] ? %{<b>#{@prod['title']}</b>} : ''
- end
- def subtitle
- @prod['subtitle'] ? %{ - #{@prod['subtitle']}} : ''
- end
- def author
- @prod['author'] ? %{<p class="pane">#{@prod['author']}</p>} : ''
- end
- def editor
- @prod['editor'] ? %{<p class="pane">#{@prod['editor']}</p>} : ''
- end
- def year
- @prod['year'] ? %{<p class="pane">#{@prod['year']}</p>} : ''
- end
- def date
- @prod['date'] ? %{<p class="pane">On: #{@prod['date']}</p>} : ''
- end
- def location
- @prod['at'] ? %{<p class="pane">At: #{@prod['at']}</p>} : ''
- end
- def pages
- @prod['pages'] ? %{<p class="pane">Pages: #{@prod['pages']} pages</p>} : ''
- end
- def form
- @prod['form'] ? %{<p class="pane">#{@prod['form']}</p>} : ''
- end
- def nick
- @prod['nick'] ? %{(#{@prod['nick']})<br />} : ''
- end
- def update
- @prod['update'] ? %{<p class="pane">Updated: #{@prod['update']}</p>} : ''
- end
- def issn
- @prod['issn'] ? %{<p class="pane">issn: #{@prod['issn']}</p>} : ''
- end
- def blurb
- @prod['blurb'] ? %{<p class="pane_blurb">#{@prod['blurb']}</p>} : ''
- end
- def search_form_sisu(table=true)
- db=if @prod['db']=~/\S+/
- (@prod['db']=~/^#{Db[:name_prefix]}\S+/) ? @prod['db'] : "#{Db[:name_prefix]}#{@prod['db']}"
- elsif defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/
- (@rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
- ? @prod['search']['sisu']['db']
- : "#{Db[:name_prefix]}#{@prod['db']}"
- else nil
- end
- action=if @prod['action']=~/^https?:\/\//
- @prod['action']
- elsif defined? @rc['search']['sisu']['action'] \
- and @rc['search']['sisu']['action'] =~/^https?:\/\//
- @rc['search']['sisu']['action']
- else nil
- end
- form=if action \
- and db
- @env.widget.search_form('sisusearch',action,db,table)
- else ''
- end
- end
- def search_form_hyperestraier(table=true)
- action=if defined? @rc['search']['hyperestraier']['action'] \
- and @rc['search']['hyperestraier']['action'] =~/^https?:\/\//
- @rc['search']['hyperestraier']['action']
- else nil
- end
- form=if action
- '<br />' + @env.widget.search_form('hyperestraier',action,'',table)
- else ''
- end
- form
- end
- def links
- if @prod['links'] #and @prod['links']==Array
- links_a=[]
- @prod['links'].each do |x|
- if x \
- and x['url'] \
- and x['title']
- subtitle=x['subtitle'] ? %{ - #{x['subtitle']}} : ''
- url_=(x['url'] =~/https?:/) ? x['url'] : "../#{x['url']}"
- links_a << %{<p class="pane_link"><a href="#{url_}">#{x['title']}#{subtitle}</a></p>\n}
- end
- end
- links_a.join
- else ''
- end
- end
- def image
- @prod['image'] ? %{<img border="0" src="../_sisu/image/#{@prod['image']}" /><br />} : ''
- end
- def url_link
- @url_=if @prod['url'] =~/https?:/
- "#{@prod['url']}"
- else "../#{@prod['url']}" # "#{@env.url.root}/#{@prod['url']}"
- end
- def show
- @prod['url'] ? %{<p class="pane_link"><a href="#{@url_}">#{@url_}</a></p>} : ''
- end
- def url
- @prod['url'] ? %{<a href="#{@url_}">} : ''
- end
- def url_relative
- @prod['url'] ? %{<a href="../#{@prod['url']}/toc.html">} : ''
- end
- self
- end
- def flyer
- if @prod['flyer']
- %{<p class="pane"><a href="../man/pdf/#{@id}.pdf"><img border="0" height="18" width="15" src="../_sisu/image/b_pdf.png">&nbsp;PDF&nbsp;flyer</a></p>}
- else ''
- end
- end
- def price
- def gbp
- if defined? @prod['price']['gbp'] \
- and @prod['price']['gbp']
- " &nbsp;&pound;&nbsp;#{@prod['price']['gbp']}&nbsp;(GBP)&nbsp;"
- else ''
- end
- end
- def euro
- if defined? @prod['price']['euro'] \
- and @prod['price']['euro']
- " &nbsp;&euro;&nbsp;#{@prod['price']['euro']}&nbsp;(Euro)&nbsp;"
- else ''
- end
- end
- def usd
- if defined? @prod['price']['usd'] \
- and @prod['price']['usd']
- " &nbsp;$&nbsp;#{@prod['price']['usd']}&nbsp;(USD)&nbsp;"
- else ''
- end
- end
- %{<p class="pane">Price:#{gbp}#{euro}#{usd}</p>}
- end
- def adsense #draw content from a configuration file
- def column_right
- if defined? @ad[:promo]['ad']['adsense']['column_right']
- @ad[:promo]['ad']['adsense']['column_right'].join("\n")
- else ''
- end
- end
- def line_single
- if defined? @ad[:promo]['ad']['adsense']['line_single']
- @ad[:promo]['ad']['adsense']['line_single'].join("\n")
- else ''
- end
- end
- self
- end
- def site_link #Work area
- if url_link.url
- <<WOK
-<p class="pane">
-#{url_link.url}
-#{image}
-#{title}
-#{subtitle}
-</a>#{nick}</p>
-WOK
- else
- <<WOK
-<p class="pane">
-#{image}
-#{title}
-#{subtitle}
-</p>
-WOK
- end
- end
- self
- end
- def output_form_sponsor(type,id)
- cell=cell(@ad[:promo][type][id],prod_id)
- prod_type=((id=~/id_(?:[0-9x]){10,13}/i) ? 'isbn' : 'id')
- id_detail=%{<p class="pane">#{prod_type}: #{prod_id}</p>}
- <<WOK
-<br />
-#{cell.site_link}
-#{cell.blurb}
-#{cell.links}
-WOK
- end
- def output_form_link(type,id)
- prod_id=id.gsub(/id_/,'')
- cell=cell(@ad[:promo][type][id],prod_id)
- <<WOK
-<br />
-#{cell.site_link}
-#{cell.author}
-#{cell.year}
-#{cell.blurb}
-#{cell.links}
-WOK
- end
- def output_form_search_sisu(type,id)
- prod_id=id.gsub(/id_/,'')
- cell=cell(@ad[:promo][type][id],prod_id)
- cell.search_form_sisu(false)
- end
- def output_form_search_hyperestraier(type,id)
- prod_id=id.gsub(/id_/,'')
- cell=cell(@ad[:promo][type][id],prod_id)
- cell.search_form_hyperestraier(false)
- end
- def output_form_book(type,id)
- prod_id=id.gsub(/id_/,'')
- cell=cell(@ad[:promo][type][id],prod_id)
- prod_type=((id=~/id_(?:[0-9x]){10,13}/i) ? 'isbn' : 'id')
- id_detail=%{<p class="pane">#{prod_type}: #{prod_id}</p>}
- <<WOK
-<br />
-#{cell.site_link}
-#{cell.author}
-#{cell.year}
-#{id_detail}
-#{cell.pages}#{cell.form}
-#{cell.price}
-#{cell.flyer}
-#{cell.blurb}
-#{cell.links}
-WOK
- end
- def output_form_journal(type,id)
- prod_id=id.gsub(/id_/,'')
- cell=cell(@ad[:promo][type][id],prod_id)
- <<WOK
-<br />
-#{cell.site_link}
-#{cell.editor}
-#{cell.issn}
-#{cell.update}
-#{cell.form}
-#{cell.price.gsub(/Price:/,'Subscription:')}
-#{cell.flyer}
-#{cell.blurb}
-#{cell.links}
-WOK
- end
- def output_form_conference(type,id)
- prod_id=id.gsub(/id_/,'')
- cell=cell(@ad[:promo][type][id],prod_id)
-#translate date (dd month yyyy) from 2007-03-04 and ruby conversion
- <<WOK
-<br />
-#{cell.site_link}
-#{cell.date}
-#{cell.location}
-#{cell.price}
-#{cell.flyer}
-#{cell.blurb}
-#{cell.links}
-WOK
- end
- def output_form_select(type,id)
- case type
- when /site/
- output_form_link(type,id)
- when /sponsor/
- output_form_sponsor(type,id)
- when /search/
- if id=~/hyperestraier/
- output_form_search_hyperestraier(type,id)
- else output_form_search_sisu(type,id)
- end
- when /book/
- output_form_book(type,id)
- when /journal/
- output_form_journal(type,id)
- when /conference/
- output_form_conference(type,id)
- end
- end
- def advert_extract_subject(category) #extracts products from category/subject list
- adverts=[]
- if defined? @ad[:promo_list][category] \
- and @ad[:promo_list][category]
- @ad[:promo_list][category].keys.each do |type|
- @ad[:promo_list][category][type].each do |i|
- if i
- id=((i.inspect =~/^\d/) ? "id_#{i.to_s.strip}" : i.to_s.strip) #watch remove .to_s ?
- gbp=usd=euro=nil
- if defined? @ad[:promo][type][id] \
- and not @ad[:promo][type][id].nil?
- adverts << output_form_select(type,id)
- else
- if defined? @ad[:promo][category][type][id] \
- and @ad[:promo][category][type][id].class==Array \
- and @ad[:promo][category][type][id].length > 0
- adverts << @ad[:promo][category][type][id].join("\n")
- end
- end
- end
- end
- end
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"category not found: #{category}").warn unless @md.opt.cmd =~/q/
- end
- adverts.join
- end
- def advert_extract_all #extracts all products from list (which is broken down into categories)
- adverts=[]
- @ad[:promo_list].keys.each do |category|
- adverts << advert_extract_subject(category)
- end
- adverts.flatten
- end
- def adverts(ads)
- <<WOK
-#{div.minor}
-#{ads}
-#{div.close}
-WOK
- end
- def no_adverts
- <<WOK
-#{div.minor}
-#{div.close}
-WOK
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/html_scroll.rb b/lib/sisu/v3dv/html_scroll.rb
deleted file mode 100644
index a4d2089e..00000000
--- a/lib/sisu/v3dv/html_scroll.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: html scroll generation, processing
-
-=end
-module SiSU_HTML_Scroll
- require_relative 'shared_html' # shared_html.rb
- require_relative 'html' # html.rb
- require_relative 'shared_metadata' # shared_metadata.rb
- require_relative 'html_promo' # html_promo.rb
- class Scroll
- def initialize(md='',data='',endnotes='')
- @md,@data,@endnotes=md,data,endnotes
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def songsheet
- begin
- scr=SiSU_HTML_Scroll::Scroll.new(@md,@data,@endnotes).markup
- scr[:tails]=SiSU_HTML_Scroll::Scroll.new(@md).tails
- scr
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- protected
- def markup
- data=@data
- @rcdc=false
- @scr={ body: [], metadata: [], owner_details: [] }
- data.each do |dob|
- dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m,@md.file.output_path.html_scroll.rel_image)
- if defined? dob.name and dob.name =~/^meta/ \
- and dob.obj =~/Document Information/
- dob.obj=dob.obj.gsub(/(Document Information(?: \(metadata\))?)/,'\1<a name="docinfo"></a>')
- end
- if dob.obj =~/^Metadata$/ \
- and dob.lv =='B'
- dob.obj=dob.obj.gsub(/Metadata/,'')
- end
- if defined? dob.name \
- and dob.name =~/^metadata/ \
- and dob.lv =='1' \
- and dob.obj =~/SiSU Metadata, document information/
- @rcdc=true
- end
- dob.obj=dob.obj.gsub(/href="[a-z0-9._-]+(#\S+?")/m,'href="\1'). # internal document links
- gsub(/href="#{Xx[:segment]}/m,'href="').
- gsub(/(?:\s*#{Mx[:br_page]}\s*|\s*#{Mx[:br_page_new]}\s*)+/m,'<p><hr width=90% /></p>')
- if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]})/
- unless dob.is ==:code
- dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- end
- if defined? dob.ocn
- @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn)
- end
- sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
- para_html=if dob.is==:heading
- x=if dob.ln==1
- sto.heading_body1
- elsif dob.ln==2
- sto.heading_body2
- elsif dob.ln==3
- sto.heading_body3
- elsif dob.ln==4
- sto.heading_body4
- elsif dob.ln==5
- sto.heading_body5
- elsif dob.ln==6
- sto.heading_body6
- end
- elsif dob.is==:heading_insert
- x=if dob.ln==1
- sto.heading_body1
- elsif dob.ln==2
- sto.heading_body2
- elsif dob.ln==3
- sto.heading_body3
- elsif dob.ln==4 \
- and dob.obj !~/^(?:Endnotes|Index|Metadata|Manifest)$/
- sto.heading_body4
- elsif dob.ln==4 \
- and dob.obj=='Endnotes'
- sto.heading_body4
- @endnotes.join("\n")
- elsif dob.ln==4 \
- and dob.obj=='Index'
- sto.heading_body4
- book_idx=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx
- book_idx.each do |x| #takes book index prepared for segments and strips segment identifying info
- x=x.gsub(/<a href="\S+?\.html#(\d+)">(\1(?:-\d+)?)<\/a>/,'<a href="#\1">\2</a>')
- end
- book_idx.join("\n")
- #elsif dob.ln==4 \
- #and dob.obj=~/Meta/
- #p __LINE__
- ##and dob.obj=='Metadata'
- #metadata=SiSU_Metadata::Summary.new(@md).xhtml.metadata
- elsif dob.ln==5
- sto.heading_body5
- elsif dob.ln==6
- sto.heading_body6
- end
- elsif dob.is==:para
- if dob.indent \
- and dob.hang \
- and dob.indent =~/[0-9]/ \
- and dob.hang =~/[0-9]/
- if dob.bullet_
- if dob.indent =~/[1-9]/
- sto.format('li',"i#{dob.indent}")
- else
- sto.format('li','bullet')
- end
- elsif dob.indent == dob.hang
- sto.format('p',"i#{dob.indent}")
- elsif dob.indent != dob.hang
- sto.format('p',"h#{dob.hang}i#{dob.indent}")
- else sto.para
- end
- else sto.para
- end
- elsif dob.is==:block
- sto.block
- elsif dob.is==:group
- sto.group
- elsif dob.is==:alt
- sto.alt
- elsif dob.is==:verse
- sto.verse
- elsif dob.is==:code
- sto.code
- elsif dob.is==:table
- sto.table
- elsif dob.is==:break
- sto.break
- end
- if dob =~/<a name="n\d+">/ \
- and dob =~/^(?:\^~\d+\s|<!e[:_]\d+!>)/ # hmmm re-adjusted 200507, for alt endnote which should again be matched ^~ ... not in response to problem though
- dob=''
- end
- unless @rcdc; @scr[:body] << para_html unless para_html =~/\A\s*\Z/
- else #@scr[:metadata] << dob.obj
- end
- end
- end
- @scr
- end
- def tails
- scr_tail=[]
- format_head_scroll=SiSU_HTML_Format::HeadToc.new(@md)
- ads=SiSU_HTML_Promo::Ad.new(@md)
- scr_tail << format_head_scroll.scroll_tail << ads.div.close << ads.display << format_head_scroll.html_close
- scr_tail
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/html_segments.rb b/lib/sisu/v3dv/html_segments.rb
deleted file mode 100644
index b1dbf73f..00000000
--- a/lib/sisu/v3dv/html_segments.rb
+++ /dev/null
@@ -1,613 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: html segment generation, processing
-
-=end
-module SiSU_HTML_Seg
- require_relative 'shared_html' # shared_html.rb
- require_relative 'html' # html.rb
- require_relative 'html_promo' # html_promo.rb
- require_relative 'shared_metadata' # shared_metadata.rb
- class Output
- def initialize(md,outputfile,seg,minitoc,type='')
- @md,@output_seg_file,@seg,@minitoc,@type=md,outputfile,seg,minitoc,type
- @title_banner_=SiSU_Env::CreateSite.new(@md.opt.cmd).html_seg_title_banner?
- @file=SiSU_Env::FileOp.new(@md)
- @make=SiSU_Env::ProcessingSettings.new(@md)
- @cl=(@make.build.html_minitoc?) \
- ? 'content'
- : 'content0'
- end
- def output
- if @seg[:title] =~/\S/
- filename_seg=[]
- if @make.build.html_top_band?
- filename_seg << @seg[:title] << @seg[:tocband_banner]
- else
- filename_seg << @seg[:title]
- end
- if @type=='endnotes'
- @seg[:headings]=[]
- format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
- if @title_banner_
- @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
- end
- txt_obj={ txt: 'Endnotes', ocn_display: '' }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- @seg[:headings] << format_seg.title_heading1
- filename_seg << @seg[:heading_endnotes] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:endnote_all] << '</div>' # << '</div>'
- elsif @type=='idx'
- @seg[:headings]=[]
- format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
- if @title_banner_
- @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
- end
- txt_obj={ txt: 'Index', ocn_display: '' }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- @seg[:headings] << format_seg.title_heading1
- filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:idx] << '</div>' # << '</div>'
- elsif @type=='metadata'
- metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata
- @seg[:headings]=[]
- format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
- if @title_banner_
- @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author)
- end
- txt_obj={ txt: 'Metadata', ocn_display: '' }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- @seg[:headings] << format_seg.title_heading1
- filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << metadata << '</div>' # << '</div>'
- else
- if @make.build.html_top_band?
- filename_seg << @minitoc << @seg[:headings] << @seg[:main] << "\n</div>\n"
- else
- filename_seg << @minitoc << @seg[:main] << "\n</div>\n"
- end
- end
- filename_seg <<=if @make.build.html_top_band?
- @seg[:tail] << @seg[:tocband_bannerless] << @seg[:credits]
- else
- @seg[:tail] << @seg[:credits]
- end
- filename_seg=filename_seg.flatten.compact #watch
- filename_seg.each do |str|
- unless str =~/\A\s*\Z/
- str=str.strip.
- gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2).
- gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
- @output_seg_file << str
- end
- end
- @output_seg_file.close
- end
- end
- end
- class Seg
- @@seg,@@seg_subtoc,@@seg_endnotes,@@seg_ad={},{},{},{}
- @@seg_name,@@seg_name_html=[],[]
- @@seg_url=@@fn=@@get_hash_to=@@get_hash_fn=''
- @@loop_count=@@seg_total=@@tracker=0
- @@is4=@@is3=@@is2=@@is1=0
- @@heading1=@@heading2=@@heading3=@@heading4=0
- @@seg[:tocband_banner],@@seg[:tocband_bannerless],@@seg[:title],@@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg[:credits],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(11){[]}
- @@seg[:heading_endnotes]=''
- @@tablehead,@@number_of_cols=0,0
- @@dp,@@segtocband=nil,nil
- @@fns_previous=''
- attr_reader :seg_name_html,:seg_name_html_tracker
- def initialize(md=nil,data='')
- @md,@data=md,data
- @vz=SiSU_Env::GetInit.instance.skin
- @seg_name_html=@@seg_name_html || nil
- @seg_name_html_tracker=@@tracker || nil
- @env=SiSU_Env::InfoEnv.new(@md.fns) if @md
- if @md
- @make=SiSU_Env::ProcessingSettings.new(@md)
- @cl=(@make.build.html_minitoc?) \
- ? 'content'
- : 'content0'
- else @cl='content'
- end
- if @md
- @title_banner_=SiSU_Env::CreateSite.new(@md.opt.cmd).html_seg_title_banner?
- end
- end
- def songsheet
- begin
- @minitoc=SiSU_HTML::Source::Toc.new(@md,@data).minitoc
- data=get_subtoc_endnotes(@data)
- data=articles(data)
- SiSU_HTML_Seg::Seg.new.cleanup # (((( added ))))
- #### (((( END )))) ####
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- @@seg_name=[]
- end
- end
- protected
- def articles(data)
- track,tracking,newfile=0,0,0
- @@is4=@@is3=@@is2=@@is1=0
- printed_endnote_seg='n'
- idx_html=nil
- if @md.book_idx
- #my_make_source_file=SiSU_Env::CreateFile.new(@md.fns)
- idx_html=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx
- idx_html.each {|x| @@seg[:idx] << x }
- @@seg[:heading_idx]=''
- end
- data.each do |dob|
- if (dob.is == :heading \
- || dob.is == :heading_insert) \
- && dob.ln == 4
- @@seg_name << dob.name
- seg_name=dob.name
- end
- end
- @@seg_name_html=@@seg_name
- @@seg_total=@@seg_name.length
- testforartnum=@@seg_name_html
- SiSU_Screen::Ansi.new(@md.opt.cmd,@@seg_name.length).segmented if @md.opt.cmd =~/[MVv]/
- map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
- data.each do |dob|
- if defined? dob.obj \
- and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/
- while dob.obj =~/href="#{Xx[:segment]}#+(\S+?)"/
- m=$1
- if map_nametags[m] \
- and map_nametags[m][:segname]
- dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#{map_nametags[m][:segname]}#{Sfx[:html]}#\\1"})
- else
- p "NOT FOUND name_tags: #{m}"
- dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#\\1"}) # not satisfactory
- end
- end
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==4
- if dob.ocn==0
- @@heading4=dob.obj
- else @@heading4=dob.obj
- end
- @@is4=newfile=1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==3
- @@heading3=dob.obj
- @@is4,@@is3=0,1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==2
- @@heading2=dob.obj
- @@is4,@@is3,@@is2=0,0,1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==1
- @@heading1=dob.obj
- @@is4,@@is3,@@is2,@@is1=0,0,0,1
- end
- if (@@is1 && !@@is2 && !@@is3 && !@@is4)
- if not (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==1
- head1=$_ #; check
- end
- end
- if @@is4==1
- if newfile==1 \
- or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/
- newfile=0
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==4
- if tracking != 0
- dirout=SiSU_Env::InfoEnv.new(@md.fns)
- dir_sisu=dirout.path.output
- @file=SiSU_Env::FileOp.new(@md)
- unless FileTest.directory?(@file.output_path.html_seg.dir)
- FileUtils::mkdir_p(@file.output_path.html_seg.dir) if File.writable?("#{@file.output_path.base.dir}/.")
- end
- SiSU_HTML_Seg::Seg.new(@md).tail
- segfilename="#{@file.output_path.html_seg.dir}/#{@@seg_name_html[tracking-1]}#{@md.lang_code_insert}#{Sfx[:html]}"
- output_seg_file=File.new(segfilename,'w') if @@seg_name_html[tracking-1]
- minitoc=(@make.build.html_minitoc?) \
- ? @minitoc
- : ''
- if dob.is==:heading \
- || (@@seg_name_html[tracking-1] !~/endnotes|book_index|metadata/)
- SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc).output
- elsif dob.is==:heading_insert
- if @@seg_name_html[tracking-1]=='endnotes'
- SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'endnotes').output
- elsif @@seg_name_html[tracking-1]=='book_index'
- SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'idx').output
- @@seg[:idx]=[]
- elsif @@seg_name_html[tracking-1]=='metadata'
- SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output
- else puts "#{__FILE__}::#{__LINE__}"
- end
- else puts "#{__FILE__}::#{__LINE__}"
- end
- SiSU_HTML_Seg::Seg.new.reinitialise
- heading_art(dob)
- head(dob)
- #keep use for last segment, eg if metadata is last segment
- if @@seg_name_html[tracking] =='metadata' # this is for metadata
- segfilename="#{@file.output_path.html_seg.dir}/#{@@seg_name_html[tracking]}#{@md.lang_code_insert}#{Sfx[:html]}"
- output_seg_file=File.new(segfilename,'w')
- SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output
- Seg.new.reinitialise
- end
- end
- if tracking==0
- heading_art(dob)
- head(dob)
- end
- end
- tracking=tracking+1
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==4 \
- && dob.name
- @@get_hash_to=dob.name
- @@get_hash_fn=dob.name
- end
- if dob.obj.class==String
- markup(dob)
- elsif dob.obj.class==Array
- dob.obj.each do |pg|
- markup(pg)
- end
- end
- if testforartnum[tracking-1] =~/endnote/
- if printed_endnote_seg=='n'
- printed_endnote_seg='y'
- end
- end
- end
- end
- data
- end
- def heading_art(dob)
- format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
- @@seg[:dot_nav]=if (@make.build.html_navigation?) \
- && (@make.build.html_navigation_bar?)
- x=if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && (dob.ln.to_s =~/^[1-6]/)
- x=if @@tracker < @@seg_total-1
- format_head_seg.dot_control_pre_next
- else
- format_head_seg.dot_control_pre
- end
- else @@seg[:dot_nav]
- end
- else @@seg[:dot_nav]=''
- end
- ads=SiSU_HTML_Promo::Ad.new(@md)
- @@seg[:title]=format_head_seg.head_seg << ads.div.major
- end
- def head(dob)
- clean=/<!.*?!>|<:.*?>/
- format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
- if @@tracker < @@seg_total-1
- if @@tracker==0; @@segtocband=format_head_seg.toc_next2 #if format_head_seg.toc_next2
- else @@segtocband=format_head_seg.toc_pre_next2 #if format_head_seg.toc_pre_next2
- end
- else @@segtocband=format_head_seg.toc_pre2 #if format_head_seg.toc_pre2
- end
- @p_num ||= ''
- if @@is1==1
- @author=%{<b>#{@md.author}</b>\n} if @md.author.to_s =~/\S/
- @@seg[:tocband_banner] << format_head_seg.navigation_band(@@segtocband,@@seg[:dot_nav])
- conditional_div_close=if @@get_hash_fn =~/metadata/ #watch
- '</div>'
- else ''
- end
- @@seg[:tocband_bannerless] << '<br />' << conditional_div_close << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav])
- @@seg[:headings] << format_head_seg.seg_head_escript if SiSU_HTML_Format::HeadSeg.method_defined? :seg_head_escript #debug PHP move up in text #bug
- if @title_banner_
- @@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'')
- end
- ocn=if @@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- txt_obj={ txt: @@heading1, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- @@seg[:headings] << format_seg.title_heading1.gsub(clean,'')
- @@heading1=@@heading1.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
- end
- if @@is2==1
- heading2=@@heading2
- ocn=if heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- @@seg[:headings] << format_seg.title_heading2.gsub(clean,'')
- @@heading2=@@heading2.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
- end
- if @@is3==1
- heading3=@@heading3
- ocn=if heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- @@seg[:headings] << format_seg.title_heading3.gsub(clean,'')
- @@heading3=@@heading3.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
- end
- if @@is4==1
- heading4=@@heading4
- ocn=if heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix
- else ''
- end
- @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- @@seg[:headings] << format_seg.title_heading4.gsub(clean,'')
- end
- @@tracker=@@tracker+1
- end
- def markup(dob)
- @debug=[]
- format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
- if dob.is !=:meta
- if dob.is==:heading \
- || dob.is==:heading_insert \
- || dob.is == :para
- @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn)
- end
- sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
- dob_html=if dob.is == :heading \
- || dob.is==:heading_insert \
- || dob.is==:para
- dob_html=if dob.is==:heading \
- || dob.is==:heading_insert
- x=if dob.ln==4
- sto.seg_heading4
- elsif dob.ln==5
- sto.seg_heading5
- elsif dob.ln==6
- sto.seg_heading6
- end
- elsif dob.is==:para
- if dob.indent \
- and dob.hang \
- and dob.indent =~/[0-9]/ \
- and dob.hang =~/[0-9]/
- if dob.bullet_
- if dob.indent =~/[1-9]/
- sto.format('li',"i#{dob.indent}")
- else
- sto.format('li','bullet')
- end
- elsif dob.indent == dob.hang
- sto.format('p',"i#{dob.indent}")
- elsif dob.indent != dob.hang
- sto.format('p',"h#{dob.hang}i#{dob.indent}")
- else sto.para
- end
- else sto.para
- end
- end
- elsif dob.is==:block
- sto.block
- elsif dob.is==:group
- sto.group
- elsif dob.is==:alt
- sto.alt
- elsif dob.is==:verse
- sto.verse
- elsif dob.is==:code
- sto.code
- elsif dob.is==:table
- sto.table
- elsif dob.is==:break
- sto.break
- end
- if @md.flag_separate_endnotes
- dob.obj=dob.obj.gsub(/"\s+href="#_(\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#_\\1">}) #endnote- twice #removed file type
- end
- if dob.obj !~/#{@vz.margin_txt_w1}|#{@vz.margin_txt_w2}/
- if (dob.is==:heading \
- || dob.is==:heading_insert \
- || dob.is==:para) \
- && (not dob.ocn \
- || (dob.ocn.to_s.empty?))
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,dob)
- end
- dob.obj=dob.obj.gsub(/\s*(-\{{2}~\d+|<:e[:_]\d+>).*/,'') #potentially dagerous - removes all paragraphs with <!e_!> #?? workpoint
- if dob.obj =~/<a name="_\d+" href="#-\d+">&nbsp;<sup>/ #endnote- note-
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,dob)
- dob=format_seg.no_paranum
- end
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==4
- @@seg[:main] << %{\n<div class="#{@cl}">\n}
- @@seg[:main] << dob_html
- if @make.build.segsubtoc?
- @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc
- end
- else
- @@seg[:main] << dob_html #unless @@flag_alt==true
- end
- end
- end
- def tail
- format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
- if @md.flag_auto_endnotes and @@seg_endnotes[@@get_hash_fn]
- @@seg[:tail] << %{\n<div class="#{@cl}">\n<div class="endnote">\n}
- if @@seg_endnotes[@@get_hash_fn].flatten.length > 0
- @@seg[:tail] << format_head_seg.endnote_mark
- @@seg[:tail] << @@seg_endnotes[@@get_hash_fn].flatten #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES|
- end
- @@seg[:tail] << '</div>'
- @@seg[:tail] << '</div>' #this div closes div class content
- end
- ads=SiSU_HTML_Promo::Ad.new(@md)
- @@seg[:credits] << format_head_seg.credit << ads.div.close << ads.display << format_head_seg.html_close
- end
- def reinitialise
- @@seg[:title],@@seg[:dot_nav],@@seg[:tocband_banner],@@seg[:tocband_bannerless],@@seg[:headings],@@seg[:main],@@seg[:tail],@@seg[:credits]=Array.new(8){[]}
- @@segtocband=nil
- end
- def cleanup
- reinitialise
- @@seg_total,@@tracker=0,0
- @@seg_endnotes,@@seg_subtoc={},{}
- @@seg_endnotes_array,@@seg_subtoc_array=[],[]
- @@seg[:endnote_all]=[]
- end
- def get_subtoc_endnotes(data) #get endnotes & sub-table of contents subtoc
- data.each do |dob|
- dob.obj=dob.obj.gsub(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
- if @md.flag_auto_endnotes
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && (dob.ln.to_s =~/^[1234]/) \
- and not @@fn.to_s.empty?
- @@seg_endnotes[@@fn]=[]
- @@seg_endnotes[@@fn] << @@seg_endnotes_array
- @@seg_endnotes_array=[] if dob.ln==4
- @@fns_previous=@md.fns if dob.ln==4 and dob.name =~/^meta/
- end
- if (dob.is==:heading \
- || dob.is==:heading_insert) \
- && dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs
- @@seg_subtoc[@@fn]=@@seg_subtoc_array
- @@seg_subtoc_array=[]
- if dob.name \
- and dob.obj
- @@fn=dob.name
- else
- if dob.name =~/\S+/
- @@fn=dob.name
- else @@fn=''
- end
- end
- end
- end
- if dob.is==:heading \
- && (dob.ln.to_s =~/^[56]/)
- case dob.ln
- when 5
- txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- subtoc=format_seg.subtoc_lev5 #keep and make available, this is the subtoc
- when 6
- txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }
- format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
- subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc
- end
- @@seg_subtoc_array << subtoc
- end
- if @md.flag_auto_endnotes
- if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <a name="_[\d*+]+"/) \
- && dob.is !=:code # endnote-
- endnote_array=[]
- if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
- endnote_array << dob.obj.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m)
- end
- if dob.obj=~/#{Mx[:en_b_o]}[*]\d+\s.+?#{Mx[:en_b_c]}/m
- endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}[*]\d+\s.+?#{Mx[:en_b_c]}/m)
- end
- if dob.obj=~/#{Mx[:en_b_o]}[+]\d+\s.+?#{Mx[:en_b_c]}/m
- endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}[+]\d+\s.+?#{Mx[:en_b_c]}/m)
- end
- endnote_array=endnote_array.flatten.compact #watch, check compacting
- endnote_array.each do |note|
- note_match=note.dup
- note_match_seg=note.dup
- e_n=note_match_seg[/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,1]
- try=e_n.split(/<br \/>/)
- try.each do |e|
- txt_obj={ txt: e }
- format_seg=SiSU_HTML_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
- end
- @@seg_endnotes_array << note_match
- end
- try.join('<br \/>')
- #% creation of separate end segment/page of all endnotes referenced back to reference segment
- m=/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?href=")(#-[\d*+]+".+)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/mi
- 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_HTML_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
- dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/html_table.rb b/lib/sisu/v3dv/html_table.rb
deleted file mode 100644
index 87a4c4b6..00000000
--- a/lib/sisu/v3dv/html_table.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: shared html parts
-
-=end
-module SiSU_HTML_Table
- require_relative 'defaults' # defaults.rb
- require_relative 'xhtml_table.rb' # xhtml_table.rb
- class TableHTML <SiSU_XHTML_Table::TableXHTML
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/html_tune.rb b/lib/sisu/v3dv/html_tune.rb
deleted file mode 100644
index e4ac08ee..00000000
--- a/lib/sisu/v3dv/html_tune.rb
+++ /dev/null
@@ -1,373 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: html generation, html pre-processing
-
-=end
-require_relative 'param'
-module SiSU_HTML_Tune
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- require_relative 'html_format' # html_format.rb #watch
- @@line_mode=''
- @@endnote_array=[]
- @@endnote_call_counter=1
- @@table_align='<table summary='' width="96%" border="0" bgcolor="white" cellpadding="0" col="3">
-<tr ...><td width="2%" align="right">
-&nbsp\;</td>
-<td width="94%" valign="top" align="justify">'
- @@table_align_close='</td>
-<td width="4%" align="right" valign="top">
-<font size="1" color="#777777">
-&nbsp;&nbsp;&nbsp;</font> </td></tr></table>'
- @@counter,@@column,@columns=0,0,0
- class Output
- def initialize(data,md)
- @data,@md=data,md
- @file=SiSU_Env::InfoFile.new(@md.fns)
- @cX=SiSU_Screen::Ansi.new(@md.opt.cmd).cX
- end
- def hard_output
- @filename_tune=@file.write_file_processing.html_tune
- data=[]
- @data.each do |x|
- unless x.obj.empty?
- x.obj=x.obj.strip
- data << x
- end
- end
- data.each do |dob|
- @filename_tune.puts dob, "\n"
- end
- end
- def marshal
- File.open(@file.marshal.html_tune,'w') {|f| Marshal.dump(@data.to_a,f)}
- end
- end
- class CleanHTML
- def initialize(html='')
- @html=html
- end
- def clean
- html=@html
- str=if html.class==String
- html
- else html.obj
- end
- 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;').
- gsub(/¢/u,'&cent;'). # &#162;
- gsub(/£/u,'&pound;'). # &#163;
- gsub(/¥/u,'&yen;'). # &#165;
- gsub(/§/u,'&sect;'). # &#167;
- gsub(/©/u,'&copy;'). # &#169;
- gsub(/ª/u,'&ordf;'). # &#170;
- gsub(/«/u,'&laquo;'). # &#171;
- gsub(/®/u,'&reg;'). # &#174;
- gsub(/°/u,'&deg;'). # &#176;
- gsub(/±/u,'&plusmn;'). # &#177;
- gsub(/²/u,'&sup2;'). # &#178;
- gsub(/³/u,'&sup3;'). # &#179;
- gsub(/µ/u,'&micro;'). # &#181;
- gsub(/¶/u,'&para;'). # &#182;
- gsub(/¹/u,'&sup1;'). # &#185;
- gsub(/º/u,'&ordm;'). # &#186;
- gsub(/»/u,'&raquo;'). # &#187;
- gsub(/¼/u,'&frac14;'). # &#188;
- gsub(/½/u,'&frac12;'). # &#189;
- gsub(/¾/u,'&frac34;'). # &#190;
- gsub(/×/u,'&times;'). # &#215;
- gsub(/÷/u,'&divide;'). # &#247;
- gsub(/¿/u,'&iquest;'). # &#191;
- gsub(/À/u,'&Agrave;'). # &#192;
- gsub(/Á/u,'&Aacute;'). # &#193;
- gsub(/Â/u,'&Acirc;'). # &#194;
- gsub(/Ã/u,'&Atilde;'). # &#195;
- gsub(/Ä/u,'&Auml;'). # &#196;
- gsub(/Å/u,'&Aring;'). # &#197;
- gsub(/Æ/u,'&AElig;'). # &#198;
- gsub(/Ç/u,'&Ccedil;'). # &#199;
- gsub(/È/u,'&Egrave;'). # &#200;
- gsub(/É/u,'&Eacute;'). # &#201;
- gsub(/Ê/u,'&Ecirc;'). # &#202;
- gsub(/Ë/u,'&Euml;'). # &#203;
- gsub(/Ì/u,'&Igrave;'). # &#204;
- gsub(/Í/u,'&Iacute;'). # &#205;
- gsub(/Î/u,'&Icirc;'). # &#206;
- gsub(/Ï/u,'&Iuml;'). # &#207;
- gsub(/Ð/u,'&ETH;'). # &#208;
- gsub(/Ñ/u,'&Ntilde;'). # &#209;
- gsub(/Ò/u,'&Ograve;'). # &#210;
- gsub(/Ó/u,'&Oacute;'). # &#211;
- gsub(/Ô/u,'&Ocirc;'). # &#212;
- gsub(/Õ/u,'&Otilde;'). # &#213;
- gsub(/Ö/u,'&Ouml;'). # &#214;
- gsub(/Ø/u,'&Oslash;'). # &#216;
- gsub(/Ù/u,'&Ugrave;'). # &#217;
- gsub(/Ú/u,'&Uacute;'). # &#218;
- gsub(/Û/u,'&Ucirc;'). # &#219;
- gsub(/Ü/u,'&Uuml;'). # &#220;
- gsub(/Ý/u,'&Yacute;'). # &#221;
- gsub(/Þ/u,'&THORN;'). # &#222;
- gsub(/ß/u,'&szlig;'). # &#223;
- gsub(/à/u,'&agrave;'). # &#224;
- gsub(/á/u,'&aacute;'). # &#225;
- gsub(/â/u,'&acirc;'). # &#226;
- gsub(/ã/u,'&atilde;'). # &#227;
- gsub(/ä/u,'&auml;'). # &#228;
- gsub(/å/u,'&aring;'). # &#229;
- gsub(/æ/u,'&aelig;'). # &#230;
- gsub(/ç/u,'&ccedil;'). # &#231;
- gsub(/è/u,'&egrave;'). # &#232;
- gsub(/é/u,'&eacute;'). # &#233;
- gsub(/ê/u,'&ecirc;'). # &#234;
- gsub(/ë/u,'&euml;'). # &#235;
- gsub(/ì/u,'&igrave;'). # &#236;
- gsub(/í/u,'&iacute;'). # &#237;
- gsub(/î/u,'&icirc;'). # &#238;
- gsub(/ï/u,'&iuml;'). # &#239;
- gsub(/ð/u,'&eth;'). # &#240;
- gsub(/ñ/u,'&ntilde;'). # &#241;
- gsub(/ò/u,'&ograve;'). # &#242;
- gsub(/ó/u,'&oacute;'). # &#243;
- gsub(/ô/u,'&ocirc;'). # &#244;
- gsub(/õ/u,'&otilde;'). # &#245;
- gsub(/ö/u,'&ouml;'). # &#246;
- gsub(/ø/u,'&oslash;'). # &#248;
- gsub(/ù/u,'&ugrave;'). # &#250;
- gsub(/ú/u,'&uacute;'). # &#251;
- gsub(/û/u,'&ucirc;'). # &#252;
- gsub(/ü/u,'&uuml;'). # &#253;
- gsub(/þ/u,'&thorn;'). # &#254;
- gsub(/ÿ/u,'&yuml;'). # &#255;
- gsub(/ý/u,'&yacute;')
- end
- end
- class Tune
- def initialize(data,md)
- @data,@md=data,md
- @vz=SiSU_Env::GetInit.instance.skin
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @sys=SiSU_Env::SystemCall.new
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- end
- def songsheet
- begin
- @cX=SiSU_Screen::Ansi.new(@md.opt.cmd).cX
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Tune').txt_grey if @md.opt.cmd =~/[MVv]/
- songsheet_array(@data)
- #data=songsheet_array(@data)
- if @md.opt.cmd =~/M/ #Hard Output Tune Optional on/off here
- data=SiSU_HTML_Tune::Output.new(@data,@md).hard_output
- SiSU_HTML_Tune::Output.new(@data,@md).marshal
- end
- tuned=SiSU_HTML_Tune::Tune.new(@data,@md).output
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- def songsheet_array(data)
- data_tuned=[]
- #@tuned_file=[]
- data.each do |dob|
- dob=angle_brackets(dob)
- dob=endnotes_html(dob)
- dob=url_markup(dob)
- dob=markup(dob)
- data_tuned << dob
- end
- data_tuned
- end
- def urls(data)
- @words=[]
- data.each do |word|
- @words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
- http_=true
- if word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/.match(word).captures
- elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}:\S+?#{Mx[:rel_c]}/
- #http_=false
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}:(\S+?)#{Mx[:rel_c]}/.match(word).captures
- u="#{Xx[:html_relative2]}/" + u
- elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
- http_=false
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]}/.match(word).captures
- elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image/
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(image)/.match(word).captures
- end
- case m
- when /\.png|\.jpg|\.gif|c=|\s\d+x\d+/
- w,h=/\s(\d+)x(\d+)/.match(m).captures if m =~/\s\d+x\d+/
- w=%{width="#{w}"} if w
- h=%{height="#{h}"} if h
- c=m[/"(.+?)"/m,1]
- caption=%{<br /><p class="caption">#{c}</p>} if c
- png=m.scan(/\S+/)[0]
- image_path=@md.file.output_path.html_seg.rel_image
- #image_path=(@md.fns =~/\.-ss[tm]$/) \
- #? @env.url.images_external
- #: @env.url.images_local
- ins=if u \
- and u.strip !~/^image$/
- %{<a href="#{u}"><img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0"></a>#{caption}}
- else %{<img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0">#{caption}}
- end
- word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
- else
- link=m[/(.+)/m]
- png=m.scan(/\S+/)[0].strip
- link=link.strip
- u=u.gsub(/(\S+)/,"#{Xx[:segment]}#\\1") if u !~/\// unless http_ #marker: in scroll remove; in seg replace
- ins=%{<a href="#{u}">#{link}</a>}
- word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins).
- gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
- end
- word
- else word
- end
- word
- end
- @words=@words.join(' ')
- end
- def url_markup(dob)
- unless dob.is==:code
- if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
- @word_mode=dob.obj.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)[()\[\]]*[,.;:!?'"]{0,2}|(?:#{Mx[:gl_o]}\S+?#{Mx[:gl_c]})+|[^#{Mx[:lnk_o]}#{Mx[:lnk_c]}]+/mu)
- words=urls(@word_mode)
- dob.obj=dob.obj.gsub(/.+/m,words)
- end #consider change, do a while loop
- dob.obj=dob.obj.gsub(/\\copyright/i,%{<sup>&copy;</sup>})
- if (dob.obj !~/\<:ad\s+\.\.\//)
- dob.obj=dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*!\>/,
- %{\n<center><a href="http:\/\/\\1" target="external"><img src="#{@env.url.images_local}/\\2" alt="\\3"></a></center>\n})
- else
- dob.obj=dob.obj.gsub(/\<:ad\s+(\S+)?\s+(\S+\.png)\s+(.+)?\;\s+(.+)?\;\s*\>/,
- %{\n<center><a href="\\1" target="_top"><img src="#{@env.url.images_local}/\\2" alt="\\3"></a></center>\n})
- end
- dob.obj=dob.obj.gsub(/!pick/,%{<img border="0" height="15" width="15" src="#{@env.url.images}/#{@vz.icon_choice}" alt="stellar">}).
- gsub(/!new/,%{&nbsp;<img border="0" height="15" width="15" src="#{@env.url.images}/#{@vz.icon_new}" alt="new">}).
- gsub(/<:h(.{1,7}?)>/,'<a href="#h\1">\1</a>').
- gsub(/<:to(\d{1,7}?)>/,'<a href="#to\1">to&nbsp;{&nbsp;\1&nbsp;}</a> ').
- gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</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}<a href="mailto:\\1">\\1</a>#{@brace_url.xml_close}}).
- gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
- if dob.obj =~/#{Xx[:html_relative2]}\/\S+/ \
- and dob.obj !~/(\"#{Xx[:html_relative2]}\/\S+?\"|>\s*#{Xx[:html_relative2]}\/\S+<)/
- dob.obj=dob.obj.gsub(/(#{Xx[:html_relative2]}\/\S+)/,'<a href="\1">\1</a>')
- end
- if dob.obj =~/..\/\S+/ \
- and dob.obj !~/(\"..\/\S+?\"|>\s*..\/\S+<)/
- dob.obj=dob.obj.gsub(/\.\.(\/\S+)/,%{<a href="#{Xx[:html_relative2]}\1">\1</a>})
- end
- dob.obj=dob.obj.gsub(/<a href=":/,%{<a href="#{@vz.url_site}/}).
- gsub(/<a href="\.\.\//,%{<a href="#{@vz.url_site}/}).
- gsub(/<a href="#{Xx[:html_relative2]}\//,%{<a href="#{@vz.url_site}/})
- else
- dob.obj=dob.obj.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
- end
- dob
- end
- def angle_brackets(dob)
- dob.obj=dob.obj.gsub(/<([a-z:\/]+)>/,"#{Dx[:lt_xml]}\\1#{Dx[:gt_xml]}")
- dob
- end
- def endnotes_html(dob)
- unless dob.is ==:code
- dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
- gsub(/(#{Mx[:en_b_o]})([*+]\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
- gsub(/(#{Mx[:en_a_o]})([*+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2</sup></a> \3 \4') #endnote- note- (careful may have switched)
- end
- dob
- end
- def markup(dob)
- dob.obj=dob.obj.gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
- 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[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'<a name="\1"></a>').
- gsub(/^#{Mx[:gl_bullet]}/m,'●&nbsp;&nbsp;').
- gsub(/#{Mx[:nbsp]}/,'&nbsp;').
- gsub(/<(p|br)>/,'<\1 />')
- dob=SiSU_HTML_Tune::CleanHTML.new(dob).clean
- dob
- end
- def output
- data=@data
- @tuned_file=[]
- data.each do |dob|
- dob.obj=dob.obj.strip.chomp
- @tuned_file << dob
- end
- @tuned_file << "\n<EOF>" if (@md.fns =~/\.sst0/) #remove
- @tuned_file
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/hub.rb b/lib/sisu/v3dv/hub.rb
deleted file mode 100644
index 5f256314..00000000
--- a/lib/sisu/v3dv/hub.rb
+++ /dev/null
@@ -1,683 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: SiSU information Structuring Universe, text structuring,
- processing, publishing, search
-
-=end
-module SiSU
- require_relative 'constants' # constants.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Screen
- @@pwd_the=Dir.pwd
- class Op
- @@env=SiSU_Env::InfoEnv.new
- def initialize(opt,req,message)
- @opt,@req,@message=opt,req,message
- @n_do=0
- end
- def pod3_output(fns_pod)
- dir_pwd=@@env.path.pwd
- dir_pod=@@env.sisupod_gen_v3(fns_pod)
- Dir.chdir("#{dir_pod}/doc")
- #system("ls")
- files=Dir['*/*.ss[tm]']
- files_ssm=Dir['*/*.ssm']
- files_sst=Dir['*/*.sst']
- content=if files_ssm.length > 0
- files_ssm.join(' ')
- elsif files_sst.length > 0
- files_sst.join(' ')
- else
- p 'no files found'
- end
- @opt.fns=content #check
- if FileTest.directory?("#{dir_pod}/doc")
- Dir.chdir("#{dir_pod}/doc")
- system("
- sisu3 -CC #{@opt.cmd} #{@opt.mod.join(' ')} #{content}
- #sisu3 -CC #{@opt.cmd} -G #{@opt.mod.join(' ')} #{content}
- ")
- Dir.chdir(dir_pwd)
- end
- @pwd=`pwd`.strip
- Dir.chdir(@pwd)
- end
- def pod2_output(fns_pod)
- dir_pwd=@@env.path.pwd
- dir_pod=@@env.sisupod_gen_v2(fns_pod)
- Dir.chdir(dir_pod)
- system("ls")
- files=Dir['*.ss[tm]']
- files_ssm=Dir['*.ssm']
- files_sst=Dir['*.sst']
- content=if files_ssm.length > 0
- files_ssm.join(' ')
- elsif files_sst.length > 0
- files_sst.join(' ')
- else
- p 'no files found'
- end
- @opt.fns=content
- if FileTest.directory?(dir_pod)
- Dir.chdir(dir_pod)
- system("
- sisu3 -CC #{@opt.cmd} #{@opt.mod.join(' ')} #{content}
- #sisu3 -CC #{@opt.cmd} -G #{@opt.mod.join(' ')} #{content}
- ")
- Dir.chdir(dir_pwd)
- end
- @pwd=`pwd`.strip
- Dir.chdir(@pwd)
- end
- def select
- require_relative @req
- if @req =~/^conf$/ # -C
- SiSU_Initialize::Source.new(@opt).read
- end
- if not @opt.files.empty?
- @opt.files.each_with_index do |fns,i|
- env=SiSU_Env::InfoEnv.new(fns)
- if fns =~ /sisupod(?:\.txz)?|\S+?(?:\.ss[mt]\.txz|\.ssp)$/
- require_relative 'remote' # remote.rb #check
- pod_name=if fns =~ /http:\/\/\S+?(?:\.ss[mt]\.txz|\.ssp)$/
- SiSU_Remote::RemoteDownload.new(fns).pod.name
- else
- re_p=/(\S+?\.ss[mt](?:\.txz)?)$/
- re_p.match(fns).captures.join
- end
- SiSU_Screen::Ansi.new(@opt.cmd,pod_name).puts_blue unless @opt.cmd =~/q/
- @opt.files.shift
- pod3_output(pod_name)
- break
- elsif fns =~ /sisupod(?:\.zip)?|\S+?(?:\.ss[mt]\.zip|\.ssp)$/
- require_relative 'remote' # remote.rb #check
- pod_name=if fns =~ /http:\/\/\S+?(?:\.ss[mt]\.zip|\.ssp)$/
- SiSU_Remote::RemoteDownload.new(fns).pod.name
- else
- re_p=/(\S+?\.ss[mt](?:\.zip)?)$/
- re_p.match(fns).captures.join
- end
- SiSU_Screen::Ansi.new(@opt.cmd,pod_name).puts_blue unless @opt.cmd =~/q/
- @opt.files.shift
- pod2_output(pod_name)
- break
- else
- put=fns.gsub(/(.+)?\.ssm\.sst$/,'\1.ssm')
- if fns !~/\.-sst$/
- @opt.fns=fns
- @opt.pth=@opt.paths[i]
- @opt.f_pth=@opt.f_pths[i]
- @opt.lng=@opt.lngs[i]
- @@pwd=@opt.pth
- else
- @opt.fns=fns
- @opt.pth=Dir.pwd
- @opt.f_pth=@opt.f_pths[i] #@opt.f_pth= { pth: Dir.pwd }
- @opt.lng='en'
- #@opt.lng=@opt.lngs[i]
- @@pwd=@opt.pth
- end
- Dir.chdir(@opt.pth) #watch
- env=SiSU_Env::InfoEnv.new(fns)
- if @req !~/(?:urls|remote)$/
- if @opt.cmd.inspect =~/-P/\
- and @req =~ /^po4a$/
- require_relative 'composite' # composite.rb #pre-processing
- SiSU_Po4a::Source.new(@opt).read # -P po4a.rb
- elsif @req=~/^dal$/ \
- and FileTest.file?(@opt.fns) \
- and @opt.fns =~ /\.(?:(?:-|ssm\.)?sst|ssm)$/
- if fns =~ /\.ssm$/
- require_relative 'composite' # composite.rb #pre-processing
- SiSU_Assemble::Composite.new(@opt).read
- @opt.fns=fns.gsub(/\.ssm$/,'.ssm.sst')
- end
- SiSU_DAL::Source.new(@opt).read # -m
- elsif FileTest.file?(env.source_file_with_path)
- case @opt.fns
- when /\.(?:(?:-|ssm\.)?sst|ssm)$/
- case @req
- when /^dal$/
- if fns =~ /\.ssm$/
- require_relative 'composite' # composite.rb #pre-processing
- SiSU_Assemble::Composite.new(@opt).read
- @opt.fns=fns.gsub(/\.ssm$/,'.ssm.sst')
- end
- SiSU_DAL::Source.new(@opt).read # -m dal.rb
- when /^git$/; SiSU_Git::Source.new(@opt).read # -g git.rb
- when /^concordance$/; SiSU_Concordance::Source.new(@opt).read # -w concordance.rb
- when /^share_src$/; SiSU_Markup::Source.new(@opt).read # -s share_src.rb
- when /^sisupod_make$/; SiSU_Doc::Source.new(@opt).read # -S sisupod_make.rb
-# when /^source_kdissert$/; SiSU_KdiSource::Source.new(@opt).read # -S share_src_kdissert.rb
- when /^digests$/; SiSU_DigestView::Source.new(@opt).read # -N digests.rb
- when /^plaintext$/; SiSU_Plaintext::Source.new(@opt).read # -t -a plaintext.rb
- when /^po4a$/; SiSU_Po4a::Source.new(@opt).read # -P po4a.rb
- #when /^wikispeak$/; SiSU_Wikispeak::Source.new(@opt).read # -g
- when /^epub$/; SiSU_EPUB::Source.new(@opt).read # -e epub.rb
- when /^odf$/; SiSU_ODF::Source.new(@opt).read # -o odf.rb
- when /^xml_md_oai_pmh_dc$/; SiSU_XML_Metadata::OAI_PMH.new(@opt).read # -O
- when /^texpdf$/; SiSU_TeX::Source.new(@opt).read # -p texpdf.rb
- when /^manpage$/; SiSU_Manpage::Source.new(@opt).read # -i manpage.rb
- when /^texinfo$/; SiSU_TexInfo::Source.new(@opt).read # -I texinfo.rb
- when /^html$/; SiSU_HTML::Source.new(@opt).read # -h -H html.rb
- when /^xhtml$/; SiSU_XHTML::Source.new(@opt).read # -b xhtml.rb
- when /^xml$/; SiSU_XML_SAX::Source.new(@opt).read # -x xml.rb
- when /^xml_dom$/; SiSU_XML_DOM::Source.new(@opt).read # -X xml_dom.rb
- when /^shared_images$/; SiSU_Images::Source.new(@opt).read # -j shared_images.rb
- #when /^xml_fictionbook$/; SiSU_XML_Fictionbook::Source.new(@opt).read # -f
- when /^xml_scaffold$/; SiSU_XML_Scaffold::Source.new(@opt).read # -k xml_scaffold.rb
- when /^embedded$/; SiSU_Embedded::Source.new(@opt).read # -m embedded.rb (image and other content) #check
- when /^manifest$/; SiSU_Manifest::Source.new(@opt).read # -y manifest.rb
- when /^qrcode$/; SiSU_QRcode::Source.new(@opt).read # -Q qrcode.rb
- when /^sitemaps$/; SiSU_Sitemaps::Source.new(@opt).read # -Y sitemaps.rb
- when /^zap$/; SiSU_Zap::Source.new(@opt).read # -Z zap.rb
- when /^dbi$/; SiSU_DBI::SQL.new(@opt).connect # -D -d dbi.rb
- when /^dbi_discreet$/; SiSU_DBI_Discreet::SQL.new(@opt).build # -d dbi_discreet.rb
- end
- @n_do=@n_do+1
- SiSU_Screen::Ansi.new(@opt.cmd,@n_do,"#{@req.upcase} processed").files_processed if @opt.cmd =~/[MVv]/
- ObjectSpace.garbage_collect
- else #print "not processed --> ", fns, "\n"
- end
- else
- if @req !~/^conf$/ \
- and @opt.fns !~/http:\/\//
- SiSU::Operations.new(@opt).not_found
- end
- end
- elsif FileTest.file?(put)
- if @opt.mod.inspect !~/harvest/ #decide whether should permit harvest in single operation
- case @req
- when /^urls$/; SiSU_Urls::Source.new(@opt).read # -u -v -V -M
- when /^remote$/
- case @message
- when /scp/; SiSU_Remote::Put.new(@opt).scp # -r
- when /rsync/; SiSU_Remote::Put.new(@opt).rsync # -R
- else #SiSU_Remote::Put.new(put,@opt.cmd).scp
- end
- end
- @n_do=@n_do+1
- SiSU_Screen::Ansi.new(@opt.cmd,@n_do,"#{@req.upcase} processed").files_processed if @opt.cmd =~/[MVv]/
- end
- else SiSU::Operations.new(@opt).not_found
- end
- end
- end
- elsif @req =~/^dbi$/; SiSU_DBI::SQL.new(@opt).connect # -D -d
- elsif @req=~/^sisupod_make$/; SiSU_Doc::Source.new(@opt).read # -S
- end
- SiSU::Operations.new.counter
- end
- end
- class Operations
- @@n_do=0
- def initialize(opt='')
- @opt=opt
- @cX=SiSU_Screen::Ansi.new(@opt).cX
- end
- def counter
- @@n_do=0
- end
- def remote_put_base_site_rsync # -CR
-p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
- require_relative 'remote' # remote.rb
- SiSU_Remote::Put.new(@opt).rsync_base
- end
- def remote_put_base_site_rsync_match # -CCRZ
-p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
- require_relative 'remote' # remote.rb
- SiSU_Remote::Put.new(@opt).rsync_base_sync
- end
- def remote_put_base_site # -Cr
-p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
- require_relative 'remote' # remote.rb
- SiSU_Remote::Put.new(@opt).scp_base
- end
- def remote_put_base_site_all # -CCr
-p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
- require_relative 'remote' # remote.rb
- SiSU_Remote::Put.new(@opt).scp_base_all
- end
- def cgi # -F
- require_relative 'cgi' # cgi.rb
- SiSU_CGI::SearchSQL.new(@opt).read
- end
- def encoding # -K build character encoding db (uses KirbyBase)
- require_relative 'character_encoding' # character_encoding.rb
- SiSU_CharacterEncode::Create.new.db
- end
- def termsheet # -t
- system("sisu_termsheet #{@opt.cmd} #{@opt.fns}\n")
- @@n_do=@@n_do+1
- SiSU_Screen::Ansi.new(@opt.cmd,@@n_do,'Termsheet(s) processed').term_sheet_title unless @opt.cmd =~/q/
- end
- def webrick # -W
- port=prt=@fns
- prt=if prt !~/\d+/
- 'webrick default (sysenv)'
- else "webrick port set to #{prt}"
- end
- puts %{#{@cX.blue}<<#{@cX.off}#{@cX.green}Start Webrick web server on port: #{prt}#{@cX.off}#{@cX.blue}>> #{@cX.off*2} }
- system("sisu_webrick #{port}&\n")
- end
- def not_found
- puts "\n#{@cX.fuschia}FILE NOT FOUND:#{@cX.off} << #{@opt.fns} >> - requested #{@opt.cmd} processing skipped\n"
- end
- def convert_name_message(fns,type,i,o,rune)
- %{\nIn filename: "#{@cX.fuschia}#{fns}#{@cX.off}" << #{type} >> #{@cX.fuschia}is apre 0.36 markup filename.#{@cX.off} #{@cX.brown}Please rename your file.#{@cX.off}\n\tAs of sisu-0.37, SiSU markup files with #{@cX.brown}the extensions #{i} should be re-named #{o}#{@cX.off}\n\tif you have the program called 'rename' installed, the following rune should do the trick:\n\t\t#{rune}\n\talternatively try:\n\t\tsisu --convert --36to37 #{fns}\n\trequested #{@opt.cmd} processing skipped\n}
- end
- def not_recognised
- case @opt.fns
- when /(\.s[123])$/
- type=@opt.fns.gsub(/\S+?(#{$1})/,'\1')
- rune=%q{rename 's/\.s[123]$/\.sst/' *.s{1,2,3}}
- puts convert_name_message(@opt.fns,type,'.s1 .s2 and .s3','.sst',rune)
- when /(\.r[123])$/
- type=@opt.fns.gsub(/\S+?(#{$1})/,'\1')
- rune=%q{rename 's/\.r[123]$/\.ssm/' *.r{1,2,3}}
- puts convert_name_message(@opt.fns,type,'.r1 .r2 and .r3','.sst',rune)
- puts %{\n\tNote also that you will need to change the names of the files called/required\n\twithin the document text to build the composite document\n\t\t.s1 .s2 .s3 should be .sst \n\t\t.si should be .ssi\n\trequested #{@opt.cmd} processing skipped\n}
- when /(\.ssi)$/
- puts "\n#{@cX.fuschia}component filetype:#{@cX.off} << #{@opt.fns} >> - is not a processed filetype, (it may be used as a component of a .ssm markup file)\n\trequested #{@opt.cmd} processing skipped\n"
- else
- puts "\n#{@cX.fuschia}FILETYPE NOT RECOGNISED:#{@cX.off} << #{@opt.fns} >> - is not a recognized filetype,\n\trequested #{@opt.cmd} processing skipped\n"
- end
- end
- end
- class Processing
- require 'fileutils'
- include FileUtils
- @@env=SiSU_Env::InfoEnv.new
- attr_accessor :op
- def initialize(opt)
- @opt=opt
- @msg,@msgs='',nil
- @tell=lambda { SiSU_Screen::Ansi.new(@opt.cmd,@msg,"#{@msgs.inspect if @msgs}") }
- end
- def op(req,msg)
- SiSU::Op.new(@opt,req,msg).select if req and msg
- end
- def actions
- if @opt.cmd =~/E/ # re-assign character
- require 'profile'
- end
- if @opt.act[:harvest][:bool]
- require_relative 'harvest' # harvest.rb
- SiSU_Harvest::Source.new(@opt).read # -h -H html.rb
- elsif @opt.mod.inspect =~/--convert|--to|--from/
- require_relative 'sst_convert_markup' # sst_convert_markup.rb
- elsif @opt.cmd =~/([abCcDdeFGgHhIjikLMmNnoPpQqRrSsTtUuVvWwXxYyZ_0-9])/ \
- and @opt.cmd =~/^-/ \
- and @opt.mod.inspect !~/--(?:sitemaps|query|identify)/ \
- or @opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/
- @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- flag=SiSU_Env::InfoProcessingFlag.new
- if @opt.cmd =~/[vVM]/ #% version information
- if (@opt.cmd =~/V/) \
- && (@opt.files.empty?) #% environment
- SiSU_Help::Help.new('env',@opt).environment
- else SiSU_Help::Help.new('env',@opt).sisu_version
- end
- end
- if @opt.act[:license][:bool] #% license information
- SiSU_Help::Help.new('license',@opt).help_request
- end
- if @opt.act[:dal][:bool] \
- or @opt.act[:maintenance][:bool] #% --maintenance, -m for -C
- path={}
- path[:css]=@@env.path.output + '/_sisu/css'
- path[:xml]=@@env.path.output + '/_sisu/xml'
- path[:xsd]=path[:xml] + '/xsd'
- path[:xsd]=path[:xml] + '/rnc'
- path[:xsd]=path[:xml] + '/rng'
- re_p3=/(sisupod(?:\.txz)?|\S+?\.ss[mt]\.txz|[^\/]+?\.ssp)$/
- unless @opt.files.join(',') =~ re_p3 #do not mix pods with source markup files in command line
- unless ( FileTest.directory?(path[:css]) \
- and FileTest.directory?(path[:xsd]) )
- @opt.cmd=@opt.cmd +='C' unless @opt.cmd =~/C/ #FIX
- end
- if @opt.cmd =~/M/
- $VERBOSE=false #debug $VERBOSE=true
- end
- end
- re_p2=/(sisupod(?:\.zip)?|\S+?\.ss[mt]\.zip)$/
- unless @opt.files.join(',') =~ re_p2 #do not mix pods with source markup files in command line
- unless ( FileTest.directory?(path[:css]) \
- and FileTest.directory?(path[:xsd]) )
- @opt.cmd=@opt.cmd +='C' unless @opt.cmd =~/C/ #FIX
- end
- if @opt.cmd =~/M/
- $VERBOSE=false #debug $VERBOSE=true
- end
- end
- end
- if @opt.act[:site_init][:bool] #% --init-site, -C initialize/configure
- op('conf','configure site')
- if @opt.cmd =~/R/
- if @opt.mod.inspect =~/--init(?:ialize)?=site/ \
- and @opt.cmd =~/RZ/
- SiSU::Operations.new(@opt).remote_put_base_site_rsync_match
- else SiSU::Operations.new(@opt).remote_put_base_site_rsync
- end
- elsif @opt.cmd =~/r/
- if @opt.mod.inspect =~/--init(?:ialize)?=site/ \
- and @opt.cmd =~/CCr/
- SiSU::Operations.new(@opt).remote_put_base_site_all
- else SiSU::Operations.new(@opt).remote_put_base_site
- end
- end
- end
- if @opt.act[:sample_search_form][:bool] #% --sample-search-form, -F cgi sample search form
- SiSU::Operations.new(@opt).cgi
- end
- if @opt.act[:webrick][:bool] #% --webrick, -W webrick
- SiSU::Operations.new(@opt).webrick
- end
- if @opt.cmd =~/Z/ #% -Z wipe previous output clean
- op('zap','Zap, deletions')
- end
- if @opt.act[:share_source][:bool]
- op('share_src','SiSU markup source')
- end
- if @opt.act[:dal][:bool]
- @retry_count= -1
- begin
- path_image='./_sisu/processing/external_document/image'
- path_skin='./_sisu/processing/external_document/skin/doc'
- @get_s,@get_p,@get_pl=[],[],[]
- re_s=/(\S+?\.-sst)$/
- re_p3=/((?:https?|file):\/\/\S+?(?:\/\S+?\.ss[mt]\.txz|sisupod(?:\.txz)?|\.ssp))/
- re_pl3=/^(\/\S+?\.ss[mt]\.txz)/
- @opt.files.each do |fns|
- if fns =~re_s
- @get_s << @opt.f_pths[0][:url]
- end
- if fns =~re_p3
- @get_p << re_p3.match(fns)[1] if re_p3
- end
- if fns =~re_pl3
- @get_pl << re_pl3.match(fns)[1] if re_p3
- end
- end
- #re_p2=/((?:https?|file):\/\/\S+?(?:\/\S+?\.ss[mt]\.zip|sisupod(?:\.zip)?|\.ssp))/
- #re_pl2=/^(\/\S+?\.ss[mt]\.zip)/
- #@opt.files.each do |fns|
- # if fns =~re_p2
- # @get_p << re_p2.match(fns)[1] if re_p2
- # end
- # if fns =~re_pl2
- # @get_pl << re_pl2.match(fns)[1] if re_p2
- # end
- #end
- if @get_s.length > 0 #% remote markup file .sst
- require_relative 'remote' # remote.rb
- SiSU_Remote::Get.new(@opt,@get_s).fns
- SiSU::Operations.new.counter
- end
- if @get_p.length > 0 #% remote sisupod
- require_relative 'remote' # remote.rb
- SiSU_Remote::Get.new(@opt,@get_p).sisupod
- end
- rescue
- SiSU_Errors::InfoError.new($!,$@,@opt,@fns).error #ok
- @retry_count +=1
- retry unless @retry_count > 1
- ensure
- end
- @opt.files=@opt.files.collect {|x| x=x.gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst$/,'\1.-sst') }
- end
- if @opt.act[:dal][:bool] #%--dal, -m
- op('dal','dal')
- end
- @opt.files=@opt.files.collect {|x| x=x.gsub(/\.ssm$/,'.ssm.sst') }
- if @opt.act[:sisupod][:bool] #% --sisupod, -S make sisupod
- op('sisupod_make','sisupod (txz)')
- if @opt.fns=~/\.kdi._sst/
- op('share_src_kdissert','kdissert (kdi)') #% -S share kdissert source
- end
- end
- if @opt.act[:qrcode][:bool] #% --qrcode, -Q
- op('qrcode','QRcode')
- end
- if @opt.act[:hash_digests][:bool] #% --hash-digests, -N digest tree
- op('digests','digests')
- end
- if @opt.act[:html][:bool] #% --html, -h
- op('html','html')
- end
- if @opt.act[:txt][:bool] #% --txt, -t -a
- #-A -f -e -E plaintext -a creates ms-dos type; -A creates unix type, plaintext file
- op('plaintext','plaintext')
- end
- if @opt.act[:epub][:bool] #% --epub, -e
- op('epub','ePub')
- end
- if @opt.act[:odt][:bool] #% --odt, -o opendocument
- op('odf','OpenDocument')
- end
- if @opt.act[:xml_sax][:bool] #% --xml-sax, -x xml sax type
- op('xml','xml sax')
- end
- if @opt.act[:xml_dom][:bool] #% --xml-dom, -x xml dom type
- op('xml_dom','xml dom')
- end
- #if @opt.act[:fictionbook] #% --fictionbook, -f fictionbook xml
- # op('xml_fictionbook','xml fictionbook')
- #end
- if @opt.act[:xhtml][:bool] #% --xhtml, -b xhtml
- op('xhtml','xhtml sax')
- end
- if @opt.act[:images][:bool] #% --images, -j
- op('shared_images','images')
- end
- if @opt.act[:concordance][:bool] #% --concordance, -w
- op('concordance','Concordance')
- end
- if @opt.cmd =~/O/ #% -O open archive initiative, metadata harvesting
- op('xml_md_oai_pmh_dc','OAI PMH')
- end
- if @opt.act[:po4a][:bool] #% --po4a, -P
- op('po4a','po4a')
- end
- if @opt.act[:git][:bool] #% --git, -g sisu git
- op('git','SiSU Git')
- end
- if @opt.cmd =~/T/ #% -T termsheet/standard form
- SiSU_Help::Help.new('termsheet').help_request
- @opt.files.each do |fns|
- if FileTest.file?(fns)
- @opt.fns=fns
- case @opt.fns
- when /\.(termsheet.rb)$/
- SiSU::Operations.new(@opt).termsheet
- else #print "not processed --> ", fns, "\n"
- end
- else SiSU::Operations.new(@opt).not_found
- end
- end
- SiSU::Operations.new.counter
- end
- if @opt.cmd =~/k/ #% -T temporary tests
- op('xml_scaffold','XML scaffold')
- end
- if @opt.act[:pdf][:bool] #% --pdf, -p latex/ texpdf
- op('texpdf','LaTeX pdf')
- end
- if @opt.act[:manpage][:bool] #% --manpage, -i
- op('manpage','manpage')
- end
- if @opt.act[:texinfo][:bool] #% --texinfo, -I
- op('texinfo','TeX Info')
- end
- if @opt.act[:psql][:bool] #% --pg, -D DB postgresql
- op('dbi','postgresql')
- end
- if @opt.act[:sqlite_discreet][:bool] #% --sqlite, -d DB sqlite
- op('dbi_discreet','sqlite')
- end
- if @opt.act[:sqlite][:bool] #% --sqlite, -d DB sqlite
- op('dbi','sqlite')
- end
- if @opt.act[:dal][:bool] #% --dal, -m embedded content
- op('embedded','Embedded Content')
- end
- if @opt.act[:manifest][:bool] #% --manifest, -y
- op('manifest','Manifest')
- end
- if @opt.act[:sitemap][:bool] #% --sitemap, -Y
- op('sitemaps','Sitemap')
- end
- if @opt.mod.inspect !~/--harvest/
- if @opt.act[:scp][:bool] #% -r copy to remote server
- op('remote','scp')
- end
- if @opt.act[:rsync][:bool] #% -R copy to remote server
- op('remote','rsync')
- end
- else
- end
- op('urls','urls')
- @msg,@msgs="\tsisu -W [to start ruby web-server on output directory]\n",nil unless @opt.cmd =~/q/
- @tell.call.print_brown if @opt.cmd =~/[uUvVM]/ unless @opt.files.join.empty?
- if defined? @@env.processing_path.processing \
- and @@env.user \
- and FileTest.directory?(@@env.processing_path.processing) \
- and @@env.processing_path.processing =~/#{@@env.user}$/ #clean temporary processing directory of content as is located in public area
- FileUtils::cd(@@env.processing_path.processing_base_tmp) do
- FileUtils::rm_rf(@@env.user) unless @opt.cmd =~/M/
- end
- end
- elsif @opt.mod.inspect =~/--query/
- require_relative 'sst_identify_markup' # sst_identify_markup.rb
- puts SiSU_Markup::MarkupHistory.new(@opt).query
- elsif @opt.mod.inspect =~/--identify/
- require_relative 'sst_identify_markup' # sst_identify_markup.rb
- markup_version=SiSU_Markup::MarkupIdentify.new(@opt).markup_version?
- elsif @opt.mod.inspect =~/--about/ #% help instructions
- if @opt.mod.inspect =~/--about/ \
- and not @opt.what.empty?
- SiSU_Help::Help.new(@opt.what,'color_off').help_request
- else SiSU_Help::Help.new('list','color_off').help_request
- end
- elsif @opt.mod.inspect =~/--sitemaps/ #% sitemaps
- require_relative 'sitemaps' # sitemaps.rb
- SiSU_Sitemaps::Source.new(@opt).read
- if @opt.cmd =~/R/
- require_relative 'remote' # remote.rb
- SiSU_Remote::Put.new(@opt).rsync_sitemaps
- end
- else #% help instructions
- unless @opt.mod.inspect =~/--convert|--to|--from|--harvest/
- if @opt.mod.inspect =~/--help/ \
- and not @opt.what.empty?
- SiSU_Help::Help.new(@opt.what).help_request
- elsif @opt.mod.inspect =~/--help/; SiSU_Help::Help.new('list').help_request
- else SiSU_Help::Help.new('env',@opt).sisu_version
- tell=SiSU_Screen::Ansi.new(''," for HELP type:\n\tsisu --help [help request]\n\tman sisu\n or see the system or online documentation on SiSU:\n #{Config::CONFIG['datadir']}/doc/sisu/\n <http://www.jus.uio.no/sisu/>\n <http://sisudoc.org/>"); tell.puts_grey
- end
- end
- end
- @opt.files.each do |fns|
- if FileTest.file?(fns)
- @opt.fns=fns
- unless @opt.fns =~ /(?:\.(?:(?:-|ssm\.)?sst|ssm|ssp|sx[sdn]\.xml|termsheet.rb)|\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip)?|\S+?\.ssp)$/
- if @opt.cmd.inspect=~/-P/
- elsif @opt.fns=~/\.kdi$/ \
- and @opt.mod.inspect =~/--(?:convert(?:-from)?|from)[=-]kdi/
- elsif @opt.fns=~/\.sx[sdn]\.xml$/ \
- and @opt.mod.inspect =~/--(?:(?:convert(?:-from)?|from)[=-])?(?:xml2sst|sxml)/
- elsif @opt.fns=~/\.ssi$/ \
- and @opt.mod.inspect =~/--identify/
- else SiSU::Operations.new(@opt).not_recognised
- end
- end
- if @opt.fns =~/\.ssm\.sst$/ \
- and @opt.cmd !~/[S_M]/ # rework necessry, revist, the _ flag is a hack, to keep ._sst files
- @msg,@msgs='temporary file removed',nil
- @tell.call.warn unless @opt.cmd =~/V/
- File.unlink(@opt.fns) if File.exist?(@opt.fns) #CONSIDER
- end
- else #SiSU::Operations.new(fns,'html').not_found
- end
- end
- end
- end
- begin #% select what to do
- if RUBY_VERSION < '1.9'
- require 'jcode'
- $KCODE='UTF8'
- end
- require_relative 'constants' # constants.rb
- require_relative 'options' # options.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'help' # help.rb
- include SiSU_Help
- require 'uri'
- home=ENV['HOME']
- argv=$*
- @opt=SiSU_Commandline::Options.new(argv)
- SiSU::Processing.new(@opt).actions
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@opt,$!,$@,nil).rescue #fix
- ensure
- Dir.chdir(@@pwd_the)
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/i18n.rb b/lib/sisu/v3dv/i18n.rb
deleted file mode 100644
index a440b7d6..00000000
--- a/lib/sisu/v3dv/i18n.rb
+++ /dev/null
@@ -1,698 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: internationalisation
-
-=end
-module SiSU_i18n
- @@language_table,@@language_list=nil,nil
- class Languages
- def language
- def table
- @@language_table ||= {
- am: { c: 'am', n: 'Amharic', t: 'Amharic', xlp: 'amharic' },
- bg: { c: 'bg', n: 'Bulgarian', t: 'Български (Bəlgarski)', xlp: 'bulgarian' },
- bn: { c: 'bn', n: 'Bengali', t: 'Bengali', xlp: 'bengali' },
- br: { c: 'br', n: 'Breton', t: 'Breton', xlp: 'breton' },
- ca: { c: 'ca', n: 'Catalan', t: 'catalan', xlp: 'catalan' },
- cs: { c: 'cs', n: 'Czech', t: 'česky', xlp: 'czech' },
- cy: { c: 'cy', n: 'Welsh', t: 'Welsh', xlp: 'welsh' },
- da: { c: 'da', n: 'Danish', t: 'dansk', xlp: 'danish' },
- de: { c: 'de', n: 'German', t: 'Deutsch', xlp: 'german' },
- el: { c: 'el', n: 'Greek', t: 'Ελληνικά (Ellinika)', xlp: 'greek' },
- en: { c: 'en', n: 'English', t: 'English', xlp: 'english' },
- eo: { c: 'eo', n: 'Esperanto', t: 'Esperanto', xlp: 'esperanto' },
- es: { c: 'es', n: 'Spanish', t: 'español', xlp: 'spanish' },
- et: { c: 'et', n: 'Estonian', t: 'Estonian', xlp: 'estonian' },
- eu: { c: 'eu', n: 'Basque', t: 'basque', xlp: 'basque' },
- fi: { c: 'fi', n: 'Finnish', t: 'suomi', xlp: 'finnish' },
- fr: { c: 'fr', n: 'French', t: 'français', xlp: 'french' },
- ga: { c: 'ga', n: 'Irish', t: 'Irish', xlp: 'irish' },
- gl: { c: 'gl', n: 'Galician', t: 'Galician', xlp: 'galician' },
- he: { c: 'he', n: 'Hebrew', t: 'Hebrew', xlp: 'hebrew' },
- hi: { c: 'hi', n: 'Hindi', t: 'Hindi', xlp: 'hindi' },
- hr: { c: 'hr', n: 'Croatian', t: 'Croatian', xlp: 'croatian' },
- hy: { c: 'hy', n: 'Armenian', t: 'Armenian', xlp: 'armenian' },
- ia: { c: 'ia', n: 'Interlingua', t: 'Interlingua', xlp: 'interlingua' },
- is: { c: 'is', n: 'Icelandic', t: 'Icelandic', xlp: 'icelandic' },
- it: { c: 'it', n: 'Italian', t: 'Italiano', xlp: 'italian' },
- la: { c: 'la', n: 'Latin', t: 'Latin', xlp: 'latin' },
- lo: { c: 'lo', n: 'Lao', t: 'Lao', xlp: 'lao' },
- lt: { c: 'lt', n: 'Lithuanian', t: 'Lithuanian', xlp: 'lithuanian' },
- lv: { c: 'lv', n: 'Latvian', t: 'Latvian', xlp: 'latvian' },
- ml: { c: 'ml', n: 'Malayalam', t: 'Malayalam', xlp: 'malayalam' },
- mr: { c: 'mr', n: 'Marathi', t: 'Marathi', xlp: 'marathi' },
- nl: { c: 'nl', n: 'Dutch', t: 'Nederlands', xlp: 'dutch' },
- no: { c: 'no', n: 'Norwegian', t: 'norsk', xlp: 'norsk' },
- nn: { c: 'nn', n: 'Norwegian Nynorsk', t: 'nynorsk', xlp: 'nynorsk' },
- oc: { c: 'oc', n: 'Occitan', t: 'Occitan', xlp: 'occitan' },
- pl: { c: 'pl', n: 'Polish', t: 'polski', xlp: 'polish' },
- pt: { c: 'pt', n: 'Portuguese', t: 'Português', xlp: 'portuges' },
- pt_BR: { c: 'pt_BR', n: 'Portuguese Brazil', t: 'Brazilian Português', xlp: 'brazilian' },
- ro: { c: 'ro', n: 'Romanian', t: 'română', xlp: 'romanian' },
- ru: { c: 'ru', n: 'Russian', t: 'Русский (Russkij)', xlp: 'russian' },
- sa: { c: 'sa', n: 'Sanskrit', t: 'Sanskrit', xlp: 'sanskrit' },
- se: { c: 'se', n: 'Sami', t: 'Samin', xlp: 'samin' },
- sk: { c: 'sk', n: 'Slovak', t: 'slovensky', xlp: 'slovak' },
- sl: { c: 'sl', n: 'Slovenian', t: 'Slovenian', xlp: 'slovenian' },
- sq: { c: 'sq', n: 'Albanian', t: 'Albanian', xlp: 'albanian' },
- sr: { c: 'sr', n: 'Serbian', t: 'Serbian', xlp: 'serbian' },
- sv: { c: 'sv', n: 'Swedish', t: 'svenska', xlp: 'swedish' },
- ta: { c: 'ta', n: 'Tamil', t: 'Tamil', xlp: 'tamil' },
- te: { c: 'te', n: 'Telugu', t: 'Telugu', xlp: 'telugu' },
- th: { c: 'th', n: 'Thai', t: 'Thai', xlp: 'thai' },
- tk: { c: 'tk', n: 'Turkmen', t: 'Turkmen', xlp: 'turkmen' },
- tr: { c: 'tr', n: 'Turkish', t: 'Türkçe', xlp: 'turkish' },
- uk: { c: 'uk', n: 'Ukranian', t: 'українська (ukrajins\'ka)', xlp: 'ukrainian' },
- ur: { c: 'ur', n: 'Urdu', t: 'Urdu', xlp: 'urdu' },
- us: { c: 'en', n: 'English (American)',t: 'English', xlp: 'english' },
- vi: { c: 'vi', n: 'Vietnamese', t: 'Vietnamese', xlp: 'vietnamese' },
- en: { c: 'en', n: 'English', t: 'English', xlp: 'english' },
- xx: { c: 'xx', n: 'Default', t: 'English', xlp: 'english' },
- }
- end
- def list
- @@language_list ||= {
- 'am' => table[:am],
- 'bg' => table[:bg],
- 'bn' => table[:bn],
- 'br' => table[:br],
- 'ca' => table[:ca],
- 'cs' => table[:cs],
- 'cy' => table[:cy],
- 'da' => table[:da],
- 'de' => table[:de],
- 'el' => table[:el],
- 'en' => table[:en],
- 'eo' => table[:eo],
- 'es' => table[:es],
- 'et' => table[:et],
- 'eu' => table[:eu],
- 'fi' => table[:fi],
- 'fr' => table[:fr],
- 'ga' => table[:ga],
- 'gl' => table[:gl],
- 'he' => table[:he],
- 'hi' => table[:hi],
- 'hr' => table[:hr],
- 'hy' => table[:hy],
- 'ia' => table[:ia],
- 'is' => table[:is],
- 'it' => table[:it],
- 'la' => table[:la],
- 'lo' => table[:lo],
- 'lt' => table[:lt],
- 'lv' => table[:lv],
- 'ml' => table[:ml],
- 'mr' => table[:mr],
- 'nl' => table[:nl],
- 'no' => table[:no],
- 'nn' => table[:nn],
- 'oc' => table[:oc],
- 'pl' => table[:pl],
- 'pt' => table[:pt],
- 'pt_BR' => table[:pt_BR],
- 'ro' => table[:ro],
- 'ru' => table[:ru],
- 'sa' => table[:sa],
- 'se' => table[:se],
- 'sk' => table[:sk],
- 'sl' => table[:sl],
- 'sq' => table[:sq],
- 'sr' => table[:sr],
- 'sv' => table[:sv],
- 'ta' => table[:ta],
- 'te' => table[:te],
- 'th' => table[:th],
- 'tk' => table[:tk],
- 'tr' => table[:tr],
- 'uk' => table[:uk],
- 'ur' => table[:ur],
- 'us' => table[:en],
- 'vi' => table[:vi],
- 'en' => table[:en],
- 'xx' => table[:en]
- }
- end
- self
- end
- end
- class Alphabet
- def initialize(lng_code)
- @lng_code=lng_code
- end
- def hash_arrays
- @alph=case @lng_code
- when /en/ #english
- {
- u: %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],
- l: %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]
- }
- when /da|no|nn/ #danish, norwegian
- {
- u: %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 Å Æ Ø],
- l: %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 å æ ø]
- #u: %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 Æ Ø Å],
- #l: %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 æ ø å]
- }
- when /sv/ #swedish
- {
- u: %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 Å Ä Ö],
- l: %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 å ä ö]
- }
- else #english default
- {
- u: %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],
- l: %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]
- }
- end
- end
- def hash_strings
- { u: hash_arrays[:u].join, l: hash_arrays[:l].join }
- end
- end
-end
-__END__
-Language Lists
-* po4a c:
- <http://www.debian.org/international/l10n/po/>
- Px[:lng_lst]=%w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi]
-* polyglossia xlp:
- <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf>
- missing from (:c) list:
- arabic asturian bahasai bahasam coptic divehi farsi lsorbian magyar scottish syriac usorbian
-note ISO_639-1
- <http://en.wikipedia.org/wiki/ISO_639-1>
- <http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>
-also note ISO_639-2
- <http://en.wikipedia.org/wiki/ISO_639-2>
- <http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes>
-
-Px[:lng_lst] # constants.rb
-
-module SiSU_TextTranslation
- class Language
- def initialize(md)
- @md=md
- end
- def tex_name(char)
- @lang=if char
- case char
- when 'sq'; 'albanian'
- when 'am'; 'amharic'
- #when 'ar'; 'arabic' # see polyglossia
- when 'hy'; 'armenian'
- #when ''; 'asturian' # polyglossia
- #when ''; 'bahasai' # polyglossia
- #when ''; 'bahasam' # polyglossia
- when 'eu'; 'basque'
- when 'bn'; 'bengali'
- when 'pt_BR'; 'brazilian'
- when 'br'; 'breton'
- when 'bg'; 'bulgarian'
- when 'ca'; 'catalan' # see polyglossia
- #when ''; 'coptic' # polyglossia
- when 'hr'; 'croatian'
- when 'cs'; 'czech'
- when 'da'; 'danish'
- #when ''; 'divehi' # polyglossia
- when 'nl'; 'dutch' # see polyglossia
- when 'en'; 'english' # see polyglossia
- when 'eo'; 'esperanto' # see polyglossia
- when 'et'; 'estonian'
- when 'gl'; 'galician'
- when 'de'; 'german'
- when 'el'; 'greek' #gl ?
- when 'he'; 'hebrew'
- when 'hi'; 'hindi'
- when 'is'; 'icelandic'
- when 'ia'; 'interlingua'
- when 'ga'; 'irish'
- when 'it'; 'italian'
- #when ''; 'farsi' # polyglossia
- when 'fi'; 'finnish'
- when 'fr'; 'french'
- when 'lo'; 'lao'
- when 'la'; 'latin'
- when 'lv'; 'latvian'
- when 'lt'; 'lithuanian'
- #when ''; 'lsorbian' # polyglossia
- #when ''; 'magyar' # polyglossia
- when 'ml'; 'malayalam'
- when 'mr'; 'marathi'
- #when 'hu'; 'magyar'
- when 'no'; 'norske'
- when 'nn'; 'nynorsk'
- when 'oc'; 'occitan'
- when 'pl'; 'polish'
- when 'pt'; 'portuges'
- when 'ro'; 'romanian'
- when 'ru'; 'russian'
- when 'se'; 'samin' #(check sami?)
- when 'sa'; 'sanskrit'
- when 'sr'; 'serbian'
- #when ''; 'scottish' # polyglossia (gd (Gaelic (Scots)))
- when 'sk'; 'slovak'
- when 'sl'; 'slovenian'
- when 'es'; 'spanish'
- when 'sv'; 'swedish'
- when 'ta'; 'tamil'
- when 'te'; 'telugu'
- when 'th'; 'thai'
- when 'tr'; 'turkish'
- when 'tk'; 'turkmen'
- when 'uk'; 'ukrainian'
- when 'ur'; 'urdu'
- #when ''; 'usorbian' # polyglossia
- when 'vi'; 'vietnamese'
- when 'cy'; 'welsh'
- when 'us'; 'USenglish' # depreciated, see iso-639-2
- else 'english'
- end
- else 'english'
- end
- end
- end
-end
-#% Language List po4a
-http://www.debian.org/international/l10n/po/
-see polyglossia for subset
-* CSB (Unknown language)
-* KAB (Unknown language)
-* TLH (Unknown language)
-* aa (Afar)
-* ab (Abkhazian)
-* af (Afrikaans)
-* af_ZA (Afrikaans, as spoken in South Africa)
-* am (Amharic)
-* an (Unknown language)
-* ang (Unknown language)
-* ar (Arabic)
-* ar_AR (Arabic, as spoken in Argentina)
-* ar_EG (Arabic, as spoken in Egypt)
-* ar_OM (Arabic, as spoken in Oman)
-* ar_PS (Arabic, as spoken in Palestinian Territory, Occupied)
-* ar_SA (Arabic, as spoken in Saudi Arabia)
-* ar_SY (Arabic, as spoken in Syrian Arab Republic)
-* as (Assamese)
-* ast (Unknown language)
-* ay (Aymara)
-* az (Azerbaijani)
-* az_IR (Azerbaijani, as spoken in Iran)
-* be (Belarusian)
-* be@latin (Unknown language)
-* be@tarask (Unknown language)
-* bem (Unknown language)
-* bg (Bulgarian)
-* bg_BG (Bulgarian, as spoken in Bulgaria)
-* bi (Bislama)
-* bn (Bengali)
-* bn_BD (Bengali, as spoken in Bangladesh)
-* bn_IN (Bengali, as spoken in India)
-* bo (Tibetan)
-* br (Breton)
-* bs (Bosnian)
-* bs_BA (Bosnian, as spoken in Bosnia and Herzegovina)
-* bs_BS (Bosnian, as spoken in Bahamas)
-* byn (Unknown language)
-* ca (Catalan)
-* ca@valencia (Unknown language)
-* ca_AD (Catalan, as spoken in Andorra)
-* ca_ES (Catalan, as spoken in Spain)
-* ca_ES@valencia (Unknown language)
-* ca_FR (Catalan, as spoken in France)
-* ca_IT (Catalan, as spoken in Italy)
-* co (Corsican)
-* crh (Unknown language)
-* cs (Czech)
-* cs_CZ (Czech, as spoken in Czech Republic)
-* csb (Unknown language)
-* cy (Welsh)
-* cy_GB (Welsh, as spoken in Great Britain)
-* cz (Unknown language)
-* da (Danish)
-* da_DK (Danish, as spoken in Denmark)
-* de (German)
-* de_AT (German, as spoken in Austria)
-* de_CH (German, as spoken in Switzerland)
-* de_DE (German, as spoken in Germany)
-* dk (Unknown language)
-* dz (Dzongkha)
-* el (Greek)
-* el_GR (Greek, as spoken in Greece)
-* en (English)
-* en@boldquot (Unknown language)
-* en@quot (Unknown language)
-* en@shaw (Unknown language)
-* en_AU (English, as spoken in Australia)
-* en_CA (English, as spoken in Canada)
-* en_GB (English, as spoken in Great Britain)
-* en_NZ (English, as spoken in New Zealand)
-* en_US (English, as spoken in United States)
-* en_US@piglatin (Unknown language)
-* en_ZA (English, as spoken in South Africa)
-* eo (Esperanto)
-* es (Spanish)
-* es_AR (Spanish, as spoken in Argentina)
-* es_CL (Spanish, as spoken in Chile)
-* es_CO (Spanish, as spoken in Colombia)
-* es_CR (Spanish, as spoken in Costa Rica)
-* es_DO (Spanish, as spoken in Dominican Republic)
-* es_EC (Spanish, as spoken in Ecuador)
-* es_ES (Spanish, as spoken in Spain)
-* es_GA (Spanish, as spoken in Gabon)
-* es_GT (Spanish, as spoken in Guatemala)
-* es_HN (Spanish, as spoken in Honduras)
-* es_LA (Spanish, as spoken in Lao People''s Democratic Republic)
-* es_MX (Spanish, as spoken in Mexico)
-* es_NI (Spanish, as spoken in Nicaragua)
-* es_PA (Spanish, as spoken in Panama)
-* es_PE (Spanish, as spoken in Peru)
-* es_PR (Spanish, as spoken in Puerto Rico)
-* es_SV (Spanish, as spoken in El Salvador)
-* es_UY (Spanish, as spoken in Uruguay)
-* es_VE (Spanish, as spoken in Venezuela)
-* et (Estonian)
-* et_EE (Estonian, as spoken in Estonia)
-* eu (Basque)
-* eu_ES (Basque, as spoken in Spain)
-* fa (Persian)
-* fa_AF (Persian, as spoken in Afghanistan)
-* fa_IR (Persian, as spoken in Iran)
-* fi (Finnish)
-* fi_FI (Finnish, as spoken in Finland)
-* fil (Unknown language)
-* fo (Faeroese)
-* fo_FO (Faeroese, as spoken in Faroe Islands)
-* fr (French)
-* fr_BE (French, as spoken in Belgium)
-* fr_CA (French, as spoken in Canada)
-* fr_CH (French, as spoken in Switzerland)
-* fr_FR (French, as spoken in France)
-* fr_FX (French, as spoken in France, Metropolitan)
-* fr_LU (French, as spoken in Luxembourg)
-* frp (Unknown language)
-* fur (Unknown language)
-* fy (Frisian)
-* fy_NL (Frisian, as spoken in Netherlands)
-* ga (Irish)
-* gd (Gaelic (Scots))
-* gez (Unknown language)
-* gl (Galician)
-* gl_ES (Galician, as spoken in Spain)
-* gn (Guarani)
-* gu (Gujarati)
-* gv (Manx)
-* ha (Hausa)
-* he (Hebrew)
-* he_IL (Hebrew, as spoken in Israel)
-* hi (Hindi)
-* hne (Unknown language)
-* hr (Croatian)
-* hr_HR (Croatian, as spoken in Croatia)
-* ht (Unknown language)
-* hu (Hungarian)
-* hu_HU (Hungarian, as spoken in Hungary)
-* hy (Armenian)
-* ia (Interlingua)
-* id (Indonesian)
-* id_ID (Indonesian, as spoken in Indonesia)
-* ig (Unknown language)
-* io (Unknown language)
-* is (Icelandic)
-* is_IS (Icelandic, as spoken in Iceland)
-* it (Italian)
-* it_CH (Italian, as spoken in Switzerland)
-* it_IT (Italian, as spoken in Italy)
-* iu (Inuktitut)
-* ja (Japanese)
-* ja_JP (Japanese, as spoken in Japan)
-* jv (Unknown language)
-* jv_ID (Unknown language)
-* ka (Georgian)
-* kab (Unknown language)
-* kk (Kazakh)
-* kl (Kalaallisut)
-* km (Khmer)
-* km_KH (Khmer, as spoken in Cambodia)
-* kn (Kannada)
-* ko (Korean)
-* ko_KR (Korean, as spoken in Korea)
-* ks (Kashmiri)
-* ku (Kurdish)
-* kw (Cornish)
-* ky (Kirghiz)
-* la (Latin)
-* lb (Letzeburgesch)
-* lg (Unknown language)
-* li (Unknown language)
-* ln (Lingala)
-* lo (Lao)
-* lt (Lithuanian)
-* lt_LT (Lithuanian, as spoken in Lithuania)
-* lv (Latvian)
-* lv_LV (Latvian, as spoken in Latvia)
-* mai (Unknown language)
-* mal (Unknown language)
-* mg (Malagasy)
-* mi (Maori)
-* mk (Macedonian)
-* mk_MK (Macedonian, as spoken in Macedonia, the Former Yugoslav Republic of)
-* ml (Malayalam)
-* ml_IN (Malayalam, as spoken in India)
-* ml_ML (Malayalam, as spoken in Mali)
-* mn (Mongolian)
-* mr (Marathi)
-* ms (Malay)
-* ms_MY (Malay, as spoken in Malaysia)
-* mt (Maltese)
-* my (Burmese)
-* my_MM (Burmese, as spoken in Myanmar)
-* na (Nauru)
-* nb (Norwegian Bokmål)
-* nb_NO (Norwegian Bokmål, as spoken in Norway)
-* nds (Unknown language)
-* ne (Nepali)
-* new (Unknown language)
-* nl (Dutch)
-* nl_BE (Dutch, as spoken in Belgium)
-* nl_NL (Dutch, as spoken in Netherlands)
-* nn (Norwegian Nynorsk)
-* nn_NO (Norwegian Nynorsk, as spoken in Norway)
-* no (Norwegian)
-* no_NO (Norwegian, as spoken in Norway)
-* nr (Ndebele, South)
-* nso (Unknown language)
-* oc (Occitan (post 1500))
-* oc_FR (Occitan (post 1500), as spoken in France)
-* om (Oromo)
-* or (Oriya)
-* pa (Panjabi)
-* pl (Polish)
-* pl_PL (Polish, as spoken in Poland)
-* pms (Unknown language)
-* ps (Pushto)
-* pt (Portuguese)
-* pt_BR (Portuguese, as spoken in Brazil)
-* pt_PT (Portuguese, as spoken in Portugal)
-* qu (Quechua)
-* rm (Rhaeto-Romance)
-* ro (Romanian)
-* ro_RO (Romanian, as spoken in Romania)
-* ru (Russian)
-* ru_RU (Russian, as spoken in Russia)
-* rw (Kinyarwanda)
-* sa (Sanskrit)
-* sc (Sardinian)
-* sd (Sindhi)
-* se (Sami)
-* se_NO (Sami, as spoken in Norway)
-* si (Sinhalese)
-* si_LK (Sinhalese, as spoken in Sri Lanka)
-* si_SI (Sinhalese, as spoken in Slovenia)
-* sk (Slovak)
-* sk_SK (Slovak, as spoken in Slovakia)
-* sl (Slovenian)
-* sl_SI (Slovenian, as spoken in Slovenia)
-* sl_SL (Slovenian, as spoken in Sierra Leone)
-* so (Somali)
-* sp (Unknown language)
-* sq (Albanian)
-* sq_AL (Albanian, as spoken in Albania)
-* sr (Serbian)
-* sr@Latn (Unknown language)
-* sr@ije (Unknown language)
-* sr@ijekavian (Unknown language)
-* sr@ijekavianlatin (Unknown language)
-* sr@latin (Unknown language)
-* sr_SR (Serbian, as spoken in Suriname)
-* sr_YU (Serbian, as spoken in Yugoslavia)
-* st (Sotho)
-* su (Sundanese)
-* su_ID (Sundanese, as spoken in Indonesia)
-* sv (Swedish)
-* sv_SE (Swedish, as spoken in Sweden)
-* sw (Swahili)
-* ta (Tamil)
-* ta_LK (Tamil, as spoken in Sri Lanka)
-* te (Telugu)
-* tg (Tajik)
-* th (Thai)
-* th_TH (Thai, as spoken in Thailand)
-* ti (Tigrinya)
-* tig (Unknown language)
-* tk (Turkmen)
-* tl (Tagalog)
-* tlh (Unknown language)
-* to (Tonga)
-* tr (Turkish)
-* tr_TR (Turkish, as spoken in Turkey)
-* tt (Tatar)
-* ug (Uighur)
-* ug_CN (Uighur, as spoken in China)
-* uk (Ukrainian)
-* uk_UA (Ukrainian, as spoken in Ukraine)
-* ur (Urdu)
-* ur_PK (Urdu, as spoken in Pakistan)
-* uz (Uzbek)
-* uz@cyrillic (Unknown language)
-* ve (Unknown language)
-* vi (Vietnamese)
-* vi_AR (Vietnamese, as spoken in Argentina)
-* vi_DE (Vietnamese, as spoken in Germany)
-* vi_PL (Vietnamese, as spoken in Poland)
-* vi_TR (Vietnamese, as spoken in Turkey)
-* vi_VN (Vietnamese, as spoken in Vietnam)
-* wa (Unknown language)
-* wal (Unknown language)
-* wo (Wolof)
-* xh (Xhosa)
-* yi (Yiddish)
-* yo (Yoruba)
-* zh (Chinese)
-* zh_CN (Chinese, as spoken in China)
-* zh_HK (Chinese, as spoken in Hong Kong)
-* zh_TW (Chinese, as spoken in Taiwan)
-* zu (Zulu)
-
- 'sq'; 'albanian'
- 'am'; 'amharic'
-#'ar'; 'arabic' # see polyglossia
- 'hy'; 'armenian'
-#''; 'asturian' # polyglossia
-#''; 'bahasai' # polyglossia
-#''; 'bahasam' # polyglossia
- 'eu'; 'basque'
- 'bn'; 'bengali'
- 'pt_BR'; 'brazilian'
- 'br'; 'breton'
- 'bg'; 'bulgarian'
- 'ca'; 'catalan' # see polyglossia
-#''; 'coptic' # polyglossia
- 'hr'; 'croatian'
- 'cs'; 'czech'
- 'da'; 'danish'
-#''; 'divehi' # polyglossia
- 'nl'; 'dutch' # see polyglossia
- 'en'; 'english' # see polyglossia
- 'eo'; 'esperanto' # see polyglossia
- 'et'; 'estonian'
- 'gl'; 'galician'
- 'de'; 'german'
- 'el'; 'greek' #gl ?
- 'he'; 'hebrew'
- 'hi'; 'hindi'
- 'is'; 'icelandic'
- 'ia'; 'interlingua'
- 'ga'; 'irish'
- 'it'; 'italian'
-#''; 'farsi' # polyglossia
- 'fi'; 'finnish'
- 'fr'; 'french'
- 'lo'; 'lao'
- 'la'; 'latin'
- 'lv'; 'latvian'
- 'lt'; 'lithuanian'
-#''; 'lsorbian' # polyglossia
-#''; 'magyar' # polyglossia
- 'ml'; 'malayalam'
- 'mr'; 'marathi'
-#'hu'; 'magyar'
- 'no'; 'norske'
- 'nn'; 'nynorsk'
- 'oc'; 'occitan'
- 'pl'; 'polish'
- 'pt'; 'portuges'
- 'ro'; 'romanian'
- 'ru'; 'russian'
- 'se'; 'samin' #(check sami?)
- 'sa'; 'sanskrit'
- 'sr'; 'serbian'
-#''; 'scottish' # polyglossia (gd (Gaelic (Scots)))
- 'sk'; 'slovak'
- 'sl'; 'slovenian'
- 'es'; 'spanish'
- 'sv'; 'swedish'
- 'ta'; 'tamil'
- 'te'; 'telugu'
- 'th'; 'thai'
- 'tr'; 'turkish'
- 'tk'; 'turkmen'
- 'uk'; 'ukrainian'
- 'ur'; 'urdu'
-#''; 'usorbian' # polyglossia
- 'vi'; 'vietnamese'
- 'cy'; 'welsh'
- 'us'; 'USenglish' # depreciated, see iso-639-2
diff --git a/lib/sisu/v3dv/manifest.rb b/lib/sisu/v3dv/manifest.rb
deleted file mode 100644
index 0eb580b3..00000000
--- a/lib/sisu/v3dv/manifest.rb
+++ /dev/null
@@ -1,900 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: summary of generated outputs and metadata
-
-=end
-module SiSU_Manifest
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'prog_text_translation' # prog_text_translation.rb
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'html_minitoc' # html_minitoc.rb
- require_relative 'html' # html.rb
- include SiSU_HTML_Format
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'i18n' # i18n.rb
- include SiSU_Viz
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- l=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
- @doc_language=l[:n]
- end
- def read
- begin
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @md=SiSU_Param::Parameters.new(@opt).get
- SiSU_Env::InfoSkin.new(@md).select
- xbrowser=@env.program.web_browser
- browser=@env.program.console_web_browser
-# webserv_url=@env.path.url.output_tell #fix in sysenv
- unless @opt.cmd =~/q/
- url_html="file://#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}"
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Manifest',"#{xbrowser} #{url_html}").green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Manifest',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}").green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,"#{browser} #{url_html}").grey_tab if @opt.cmd =~/v/i
- end
- data=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
- SiSU_Manifest::Source::Output.new(@md).check_output(data)
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Output <Source
- def initialize(md)
- @manifest={ txt: [], html: [] }
- @md,@fns=md,md.fns
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @make=SiSU_Env::ProcessingSettings.new(@md)
- @fnb=@md.fnb
- @base_url="#{@env.url.root}/#{@fnb}"
- @f=SiSU_Env::FileOp.new(@md)
- @o_str=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
- @image_path=if @o_str.dump_or_redirect?
- %{./image}
- else
- %{#{@f.path_rel_links.html_scroll_2}_sisu/image_sys}
- end
- @base_path=@f.output_path.manifest.dir
- @@dg ||=SiSU_Env::InfoEnv.new.digest.type
- @dg=@@dg
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- @language=l[:n]
- @translate=SiSU_Translate::Source.new(@md,@language)
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet
- end
- def output
- manifest=@f.write_file.manifest
- @manifest[:html].each do |x|
- x=x.gsub(Xx[:html_relative2],@f.path_rel_links.html_scroll_2).
- gsub(Xx[:html_relative1],@f.path_rel_links.html_scroll_1)
- manifest << x
- end
- end
- def url_make(url,file,src=nil)
- if @o_str.dump_or_redirect?
- ''
- elsif :src
- %{<br />#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}}
- else
- %{<p class="tiny">#{@brace_url.xml_open}<a href="#{url}/#{file}">#{url}/#{file}</a>#{@brace_url.xml_close}</p>}
- end
- end
- def summarize(id,file,pth='',rel='',url='',img='● ')
- size=(File.size("#{pth}/#{file}")/1024.00).to_s
- kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
- @manifest[:txt] << "#{file} #{id} #{kb}\n"
- @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p>#{url_make(url,file)}</td><td class="right"><p class="right">#{kb}</p></td></tr>\n}
- end
- def summarize_html_seg(id,file,pth='',rel='',url='',img='● ')
- size=(File.size("#{pth}/#{file}")/1024.00).to_s
- kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
- @manifest[:txt] << "#{file} #{id} #{kb}\n"
- @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{img}#{id}</a></p></th><td><p class="small"><a href="#{rel}/#{file}">#{file}</a></p>#{url_make(url,file)}</td><td class="right"><p class="right">#{kb}</p></td></tr>\n}
- end
- def summarize_sources(id,file,pth,rel,url)
- sys=SiSU_Env::SystemCall.new
- dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{pth}/#{file}")
- else sys.md5("#{pth}/#{file}")
- end
- SiSU_Screen::Ansi.new(@md.opt.cmd,"#{dgst[1]} #{file}").warn if @md.opt.cmd =~/[vVM]/
- size=(File.size("#{pth}/#{file}")/1024.00).to_s
- kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
- @manifest[:txt] << "#{file} #{id} #{kb}\n"
- @manifest[:html] << %{<tr><th class="left"><p class="norm"><a href="#{rel}/#{file}">#{id}</a></p></th><td class="right"><p class="tiny"><a href="#{rel}/#{file}">#{file}</a> &nbsp;&nbsp;#{dgst[1]}#{url_make(url,file,:src)}</p></td><td class="right"><p class="right">#{kb}</p></td></tr>\n} if kb and kb =~/\d+/
- end
- def published_manifests?
- @f=SiSU_Env::FileOp.new(@md) #.base_filename
- @m=[]
- url=@f.output_path.base.url
- manifests={}
- mp,mn,mt,mr=nil,nil,nil,nil
- ln=SiSU_i18n::Languages.new.language.list
- Px[:lng_lst].each do |lc|
- if @o_str.dump_or_redirect? #does not work for --redirect or --dump
- mp="#{@f.output_path.base.dir}"
- mn="#{@md.fnb}.html"
- mt="#{mp}/#{mn}"
- mr="../../#{lc}/manifest/#{mn}"
- mu="#{url}/#{mn}"
- elsif @env.output_dir_structure.by_language_code?
- mp="#{@f.output_path.base.dir}/#{lc}/manifest"
- mn="#{@md.fnb}.html"
- mt="#{mp}/#{mn}"
- mr="../../#{lc}/manifest/#{mn}"
- mu="#{url}/#{lc}/manifest/#{mn}"
- elsif @env.output_dir_structure.by_filetype?
- mp="#{@f.output_path.base.dir}/manifest"
- mn="#{@md.fnb}.#{lc}.html"
- mt="#{mp}/#{mn}"
- mr=mn
- mu="#{url}/manifest/#{mn}"
- else
- mp="#{@f.output_path.base.dir}/#{@md.fnb}"
- mn="sisu_manifest.#{lc}.html"
- mt="#{mp}/#{mn}"
- mr=mn
- mu="#{url}/#{mn}"
- end
- if FileTest.directory?(mp) \
- && FileTest.file?(mt)
- lng=ln[lc][:t]
- manifests[lc]={ ln: lng, fn: mn, rel: mr }
- @m << { mu: mu, l: lng, rel: mr }
- end
- end
- manifests
- @m=@m.uniq
- end
- def languages(id,file)
- flv=published_manifests?
- @manifest[:html] << %{<tr><th class="left"><div id="horizontal_links"><ul id="horizontal">\n}
- flv.each do |l|
- lang=SiSU_Translate::Source.new(@md,@language,l[:n]).language_list
- @manifest[:txt] << "#{l[:mu]} #{l[:l]}\n"
- @manifest[:html] << %{<li class="norm"><a href="#{l[:rel]}">#{l[:l]}</a>&nbsp;&nbsp;&nbsp;</li>}
- end
- @manifest[:html] << %{</ul></div></th></tr>\n}
- end
- def published_languages(id,file)
- flv=published_manifests?
- flv.each do |l|
- @manifest[:txt] << "#{l[:mu]} #{l[:l]}\n"
- @manifest[:html] << %{<tr><th class="left"><p class="bold"><a href="#{l[:mu]}">#{l[:l]}</a></p></th><td><p class="norm">#{l[:l]}</p><p class="tiny">#{@brace_url.xml_open}<a href="#{l[:mu]}">#{l[:mu]}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">&nbsp;</p></td></tr>\n}
- end
- end
- def metadata(id,info)
- info=info.to_s.gsub(/#{Mx[:br_line]}/,'<br />')
- @manifest[:html] << %{<tr><th class="left"><p class="bold_left">#{id}:</p></th><td><p class="left">#{info}</p></td></tr>\n}
- end
- def links(url,lnk,target)
- static=if url =~/^\.\//; url.gsub(/^\.(\.)?/,@base_url)
- elsif url =~/^\.\.\//; url.gsub(/^\.(\.)?/,@env.url.root)
- else url
- end
- @manifest[:html] << %{<tr><th class="right" width=5%><p class="norm">●</p></th><td class="left"><p class="norm"><a href="#{url}">#{lnk}</a></p><p class="tiny">&nbsp;&nbsp;#{@brace_url.xml_open}<a href="#{static}">#{static}</a>#{@brace_url.xml_close}</p></td></tr>\n}
- end
- def output_tests
- if FileTest.file?(@f.place_file.html_segtoc.dir)==true
- img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_toc.png" alt="TOC linked" /> }
- pth=@f.output_path.html_seg.dir
- rel=@f.output_path.html_seg.rel_sm
- url=@f.output_path.html_seg.url
- id,file='HTML, table of contents (for segmented text)',@f.base_filename.html_segtoc
- summarize_html_seg(id,file,pth,rel,url,img)
- end
- if FileTest.file?(@f.place_file.html_scroll.dir)==true
- img=%{<img border="0" height="15" width="15" src="#{@image_path}/b_doc.png" alt="Full Text" /> }
- pth=@f.output_path.html_scroll.dir
- rel=@f.output_path.html_scroll.rel_sm
- url=@f.output_path.html_scroll.url
- id,file='HTML, full length document',@f.base_filename.html_scroll
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?(@f.place_file.html_book_index.dir)==true
- pth=@f.output_path.html_seg.dir
- rel=@f.output_path.html_seg.rel_sm
- url=@f.output_path.html_seg.url
- id,file='HTML, (book type) index',@f.base_filename.html_book_index
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.html_concordance.dir)==true
- pth=@f.output_path.html_seg.dir
- rel=@f.output_path.html_seg.rel_sm
- url=@f.output_path.html_seg.url
- id,file='HTML, concordance file',@f.base_filename.html_concordance
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.epub.dir)==true
- img=%{<img border="0" height="18" width="18" src="#{@image_path}/b_epub.png" alt="EPUB" /> }
- id,file='EPUB (Electronic Publication, e-book standard)',@f.base_filename.epub
- pth=@f.output_path.epub.dir
- rel=@f.output_path.epub.rel_sm
- url=@f.output_path.epub.url
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_letter}")==true
- img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. letter size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_letter}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_letter}")==true
- img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. letter size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_letter}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a4}")==true
- img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A4 size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_a4}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a4}")==true
- img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A4 size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_a4}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a5}")==true
- img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A5 (book) size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_a5}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a5}")==true
- img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_a5}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_b5}")==true
- img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, B5 (book) size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_b5}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_b5}")==true
- img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, B5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_b5}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_legal}")==true
- img=%{<img border="0" height="18" width="15" src="#{@image_path}/b_pdf.png" alt="PDF portrait" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. legal size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_legal}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_legal}")==true
- img=%{<img border="0" height="15" width="18" src="#{@image_path}/b_pdf.png" alt="PDF landscape" /> }
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. legal size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_legal}"
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?(@f.place_file.odt.dir)==true
- img=%{<img border="0" height="18" width="18" src="#{@image_path}/b_odf.png" alt="ODF/ODT" /> }
- pth=@f.output_path.odt.dir
- rel=@f.output_path.odt.rel_sm
- url=@f.output_path.odt.url
- id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt
- summarize(id,file,pth,rel,url,img)
- end
- if FileTest.file?(@f.place_file.xhtml.dir)==true
- pth=@f.output_path.xhtml.dir
- rel=@f.output_path.xhtml.rel_sm
- url=@f.output_path.xhtml.url
- id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt
- id,file='XHTML',@f.base_filename.xhtml
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.xml_sax.dir)==true
- pth=@f.output_path.xml_sax.dir
- rel=@f.output_path.xml_sax.rel_sm
- url=@f.output_path.xml_sax.url
- id,file='XML SAX',@f.base_filename.xml_sax
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.xml_dom.dir)==true
- pth=@f.output_path.xml_dom.dir
- rel=@f.output_path.xml_dom.rel_sm
- url=@f.output_path.xml_dom.url
- id,file='XML DOM',@f.base_filename.xml_dom
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.info.dir)==true
- pth=@f.output_path.texinfo.dir
- rel=@f.output_path.texinfo.rel_sm
- url=@f.output_path.texinfo.url
- id,file='Info file',@f.base_filename.info
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.manpage.dir)==true
- pth=@f.output_path.manpage.dir
- rel=@f.output_path.manpage.rel_sm
- url=@f.output_path.manpage.url
- id,file='Manpage',@f.base_filename.manpage
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.sqlite_discreet.dir)==true
- id,file='SQLite3 file',@f.base_filename.sqlite_discreet
- pth=@f.output_path.sqlite_discreet.dir
- rel=@f.output_path.sqlite_discreet.rel_sm
- url=@f.output_path.sqlite_discreet.url
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.txt.dir)==true
- if @md.opt.cmd =~/a/; id='Plaintext (Unix (UTF-8) with footnotes)'
- elsif @md.opt.cmd =~/e/; id='Plaintext (Unix (UTF-8) with endnotes)'
- elsif @md.opt.cmd =~/A/; id='Plaintext (dos (UTF-8) with footnotes)'
- elsif @md.opt.cmd =~/E/; id='Plaintext (dos (UTF-8) with endnotes)'
- else id='Plaintext (UTF-8)'
- end
- pth=@f.output_path.txt.dir
- rel=@f.output_path.txt.rel_sm
- url=@f.output_path.txt.url
- file=@f.base_filename.txt
- 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='','',''
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true
- id,file='LaTeX (landscape)',"#{@md.fns}.landscape.tex"
- pth,rel,url='','',''
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.hash_digest.dir)==true
- pth=@f.output_path.hash_digest.dir
- rel=@f.output_path.hash_digest.rel_sm
- url=@f.output_path.hash_digest.url
- id,file="Digest/DCC - Document Content Certificate (#{@dg})",@f.base_filename.hash_digest
- summarize(id,file,pth,rel,url)
- end
- end
- def published_versions
- id,file='Markup (SiSU source)',@md.fns
- languages(id,file)
- end
- def language_versions
- if FileTest.file?(@f.place_file.manifest.dir)==true
- id,file='Markup (SiSU source)',@md.fns
- published_languages(id,file)
- end
- end
- def qrc_image
- fn=@md.fnb
- pth=(@o_str.dump_or_redirect?) \
- ? '.'
- : 'qrcode'
- img_md="#{pth}/#{fn}.md.png"
- img_title="#{pth}/#{fn}.title.png"
- if FileTest.file?(@f.place_file.qrcode_md.dir)==true
- @manifest[:html] <<<<WOK
-<tr><td class="left">
- <p class="tiny">QR code SiSU document metadata:</p>
- <p class="tiny">
- <img border="0" src="#{img_md}" alt="qrcode metadata" />
- </p>
-</td></tr>
-WOK
- end
- if FileTest.file?(@f.place_file.qrcode_title.dir)==true
- @manifest[:html] <<<<WOK
-<tr><td class="left">
- <p class="tiny">QR code document title info:</p>
- <p class="tiny">
- <img border="0" src="#{img_title}" alt="qrcode title" />
- </p>
-</td></tr>
-WOK
- end
- end
- def source_tests
- if @md.fns =~/\.ssm\.sst$/ #% decide whether to extract and include requested/required documents
- req=@md.fns
- if FileTest.file?(@f.place_file.src.dir)==true
- pth=@f.output_path.src.dir
- rel=@f.output_path.src.rel
- #rel=@f.output_path.src.rel_sm
- url=@f.output_path.src.url
- id,file='Markup Composite File (SiSU source)',@f.base_filename.src
- summarize_sources(id,file,pth,rel,url)
- end
- else
- if FileTest.file?(@f.place_file.src.dir)==true
- pth=@f.output_path.src.dir
- rel=@f.output_path.src.rel_sm
- url=@f.output_path.src.url
- id,file='Markup (SiSU source)',@f.base_filename.src
- summarize_sources(id,file,pth,rel,url)
- end
- end
- if FileTest.file?(@f.place_file.sisupod.dir)==true
- pth=@f.output_path.sisupod.dir
- rel=@f.output_path.sisupod.rel_sm
- url=@f.output_path.sisupod.url
- id,file='SiSU doc (tar.xz)',@f.base_filename.sisupod
- summarize_sources(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.pot.dir)==true
- pth=@f.output_path.pot.dir
- rel=@f.output_path.pot.rel_sm
- url=@f.output_path.pot.url
- id,file='SiSU pot',@f.base_filename.pot
- summarize_sources(id,file,pth,rel,url)
- end
- end
- def metadata_tests
- if defined? @md.title.full \
- and @md.title.full=~/\S+/
- id,info=@translate.full_title,@md.title.full
- metadata(id,info)
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- id,info=@translate.author,@md.creator.author
- metadata(id,info)
- end
- if defined? @md.creator.editor \
- and @md.creator.editor=~/\S+/
- id,info=@translate.editor,@md.creator.editor
- metadata(id,info)
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/
- id,info=@translate.contributor,@md.creator.contributor
- metadata(id,info)
- end
- if defined? @md.creator.translator \
- and @md.creator.translator=~/\S+/
- id,info=@translate.translator,@md.creator.translator
- metadata(id,info)
- end
- if defined? @md.creator.illustrator \
- and @md.creator.illustrator=~/\S+/
- id,info=@translate.illustrator,@md.creator.illustrator
- metadata(id,info)
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/ #dc
- id,info=@translate.publisher,@md.publisher
- metadata(id,info)
- end
- if defined? @md.creator.prepared_by \
- and @md.creator.prepared_by=~/\S+/
- id,info=@translate.prepared_by,@md.creator.prepared_by
- metadata(id,info)
- end
- if defined? @md.creator.digitized_by \
- and @md.creator.digitized_by=~/\S+/
- id,info=@translate.digitized_by,@md.creator.digitized_by
- metadata(id,info)
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- id,info=@translate.subject,@md.classify.subject
- metadata(id,info)
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- id,info=@translate.description,@md.notes.description
- metadata(id,info)
- end
- if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- id,info=@translate.abstract,@md.notes.abstract
- metadata(id,info)
- end
- if defined? @md.type \
- and @md.type=~/\S+/ #dc
- id,info=@translate.type,@md.type
- metadata(id,info)
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/ #dc
- id,info=@translate.rights,@md.rights.all
- metadata(id,info)
- end
- if defined? @md.date.published
- if defined? @md.date.published \
- and @md.date.published=~/\S+/ #dc
- id,info=@translate.date,@md.date.published
- metadata(id,info)
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/ #dc
- id,info=@translate.date_created,@md.date.created
- metadata(id,info)
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/ #dc
- id,info=@translate.date_issued,@md.date.issued
- metadata(id,info)
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/ #dc
- id,info=@translate.date_available,@md.date.available
- metadata(id,info)
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/ #dc
- id,info=@translate.date_modified,@md.date.modified
- metadata(id,info)
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/ #dc
- id,info=@translate.date_valid,@md.date.valid
- metadata(id,info)
- end
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/
- id,info=@translate.language,@md.title.language
- metadata(id,info)
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- id,info=@translate.language_original,@md.original.language
- metadata(id,info)
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- id,info=@transate.format,@md.classify.format
- metadata(id,info)
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- id,info=@translate.identifier,@md.classify.identifier
- metadata(id,info)
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/
- id,info=@translate.source,@md.original.source
- metadata(id,info)
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- id,info=@translate.relation,@md.classify.relation
- metadata(id,info)
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- id,info=@translate.coverage,@md.classify.coverage
- metadata(id,info)
- end
- if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- id,info=@translate.keywords,@md.classify.keywords
- metadata(id,info)
- end
- if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- id,info=@translate.comments,@md.notes.comment
- metadata(id,info)
- end
- if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- id,info=@translate.cls_loc,@md.classify.loc
- metadata(id,info)
- end
- if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- id,info=@translate.cls_dewey,@md.classify.dewey
- metadata(id,info)
- end
- if defined? @md.classify.oclc \
- and @md.classify.oclc=~/\S+/
- id,info=@translate.cls_oclc,@md.classify.oclc
- @manifest[:html] << %{<tr><th class="left"><p class="bold_left">#{id}:</p></th><td>\n}
- @manifest[:html] << %{<p class="left"><a href="http://worldcat.org/oclc/#{info}">#{info}</a></p>\n}
- @manifest[:html] << %{</td></tr>\n}
- end
- if defined? @md.classify.pg \
- and @md.classify.pg=~/\S+/
- id,info=@translate.cls_gutenberg,@md.classify.pg
- metadata(id,info)
- end
- if defined? @md.classify.isbn \
- and @md.classify.isbn=~/\S+/
- id,info=@translate.cls_isbn,@md.classify.isbn
- metadata(id,info)
- end
- if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- id,info=@translate.prefix_a,@md.notes.prefix_a
- metadata(id,info)
- end
- if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- id,info=@translate.prefix_b,@md.notes.prefix_b
- metadata(id,info)
- end
- if defined? @md.topic_register_array \
- and @md.topic_register_array.length > 0
- @manifest[:html] << %{<tr><th class="left"><p class="bold_left">#{@translate.topic_register}:</p></th><td>\n}
- @md.topic_register_array.each do |t|
- t.each_with_index do |st,i|
- if st.class==Array
- st.each do |v|
- @manifest[:html] << %{<p class="it#{i}">#{v}</p>\n}
- end
- else @manifest[:html] << %{<p class="it#{i}">#{st}</p>\n}
- end
- end
- end
- @manifest[:html] << %{</td></tr>\n}
- end
- if @md.fns
- id,info=@translate.sourcefile,@md.fns
- metadata(id,info)
- end
- if @md.en[:mismatch] > 0
- id,info='WARNING document error in endnote markup, number mismatch',"endnotes: #{@md.en[:note]} != endnote reference marks: #{@md.en[:mark]} (difference = #{@md.en[:mismatch]})"
- metadata(id,info)
- end
- if @md.wc_words
- id,info=@translate.word_count,@md.wc_words
- metadata(id,info)
- end
- if @md.dgst
- id,info="#{@translate.sourcefile_digest} (#{@dg})",@md.dgst[1]
- metadata(id,info)
- end
- if @md.sc_number
- id,info=@translate.sc_number,@md.sc_number
- metadata(id,info)
- end
- if @md.sc_date
- id,info=@translate.sc_date,"#{@md.sc_date} at #{@md.sc_time}"
- metadata(id,info)
- end
- if @md.generated
- id,info=@translate.last_generated,@md.generated
- metadata(id,info)
- end
- if @md.sisu_version
- id,info=@translate.sisu_version,"#{@md.sisu_version[:project]} #{@md.sisu_version[:version]} #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})"
- metadata(id,info)
- end
- if @md.ruby_version
- id,info=@translate.ruby_version,@md.ruby_version
- metadata(id,info)
- end
- end
- def links_tests
- if defined? @md.lnk \
- and @md.lnk
- @md.lnk.each do |l|
- if defined? l[:say]
- target=if l[:url] !~/^\.(\.)?\//; 'external'
- else '_top'
- end
- url,lnk=l[:url],l[:say]
- unless url.nil? \
- or url.empty?
- links(url,lnk,target)
- end
- end
- end
- end
- end
- def check_output(data)
- begin
- minitoc=SiSU_HTML_MiniToc::TocMini.new(@md,data).songsheet.join("\n")
- id,file='',''
- vz=SiSU_Env::GetInit.instance.skin
- search_form=if @make.build.search_form?
- "<td>#{@env.widget_static.search_form}</td>"
- else ''
- end
- banner_table=if vz.banner_home_button_only !~ /http:\/\/www\.jus\.uio\.no\/sisu/ \
- and vz.banner_home_button_only !~ /sisu\.home\.png/
-<<WOK
-<table summary="band" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="left" width="15%" bgcolor="#ffffff">#{vz.banner_band}</td>
-<td width="70%"><p class="tiny">#{@brace_url.xml_open}<a href="#{@base_url}/#{file}">#{@base_url}/#{file}</a>#{@brace_url.xml_close}</p></td>
-#{search_form}</tr>
-</table>
-WOK
- else
-<<WOK
-<table summary="band" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="left" bgcolor="#ffffff"><a href="http://www.jus.uio.no/sisu/" target="_top"><img border="0" src="#{vz.url_path_image_sys}/sisu.png" alt="SiSU --&gt;" /></a></td>
-<td><p class="tiny">#{@brace_url.xml_open}<a href="#{@base_url}/#{file}">#{@base_url}/#{file}</a>#{@brace_url.xml_close}</p></td>
-#{search_form}</tr>
-</table>
-WOK
- end
- @manifest[:html] <<<<WOK
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>
-SiSU manifest: #{@md.title.full}
-</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<meta name="sourcefile" content="#{@md.fns}" />
-<link rel="generator" href="http://www.jus.uio.no/sisu" />
-<link rel="shortcut icon" href="#{@f.path_rel_links.html_scroll_css}_sisu/image_sys/rb7.ico" />
-#{@stylesheet.css_head}
-</head>
-<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">
-#{banner_table}
-WOK
- if @make.build.manifest_minitoc?
- if @o_str.dump_or_redirect?
- elsif @env.output_dir_structure.by_language_code? \
- or @env.output_dir_structure.by_filetype?
- minitoc=minitoc.gsub(/<a href="(\S+?)"/m,%{<a href="../html/#{@md.fnb}/\\1"}).
- gsub(/<a href="\.\.\/html\/#{@md.fnb}\/(?:sisu_manifest\.html|#{@f.base_filename.manifest})"/m,
- %{<a href="#{@f.base_filename.manifest}"})
- end
- @manifest[:html] <<<<WOK
-<div class="toc">
-#{minitoc.to_s}
-</div>
-<div class="content">
-WOK
- else
- @manifest[:html] <<<<WOK
-<div>
-WOK
- end
- @manifest[:html] <<<<WOK
-<h1 class="small">#{@translate.manifest_description}</h1>
-<h2 class="small">#{@md.title.full}</h2>
-<p class="bold">#{@md.author}</p>
-<p class="small">
-&nbsp;&nbsp;<a href="#output">Document, Available Filetypes</a>
-</p>
-<p class="small">
-&nbsp;&nbsp;<a href="#metadata">Document Metadata</a>
-</p>
-<p class="tiny">
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#links">(metadata suggested links (if any)</a>
-</p>
-<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
-WOK
- published_versions
- @manifest[:html] << '</table>'
- @manifest[:html] <<<<WOK
-<h2 class="small"><a name="output">#{@translate.manifest_description_output}</a></h2>
-<table summary="available output/filetypes" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
-<tr> <th class="left"><p class="bold">#{@translate.filetype_description}</p></th><th class="left"><p class="bold">#{@translate.filename}</p></th><th class="right"><p class="right"><b>#{@translate.file_size}</b></p><p class="tiny_right">(kB)</p></th></tr>
-
-WOK
- output_tests
- @manifest[:html] << '</table>'
- @manifest[:html] <<<<WOK
-<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
-WOK
- source_tests
- @manifest[:html] << '</table>'
- @manifest[:html] <<<<WOK
-<h2 class="small"><a name="metadata">#{@translate.manifest_description_metadata}</a></h2>
-<table summary="document metadata" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
-<tr> <th class="left"><p class="bold">#{@translate.metadata}</p></th><th class="left"><p class="bold">#{@translate.description}</p></th></tr>
-WOK
- metadata_tests
- @manifest[:html] <<<<WOK
-</table>
-WOK
- @manifest[:html] <<<<WOK
-<p class="bold"><a name="links">#{@translate.suggested_links}:</a></p>
-<table summary="suggested links" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
-WOK
- links_tests
- @manifest[:html] <<<<WOK
-</table>
-WOK
- @manifest[:html] <<<<WOK
-<h2 class="small"><a name="languages">#{@translate.language_version_list}</a></h2>
-<table summary="language versions" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
-<tr> <th class="left"><p class="bold">#{@translate.filename}</p></th><th class="left"><p class="bold">#{@translate.description}</p></th><th class="right"><p class="right">&nbsp;</p></th></tr>
-
-WOK
- language_versions
- qrc_image
- @manifest[:html] <<<<WOK
-</table>
-</div>
-<div>
-<br />
-#{vz.credits_sisu_manifest}
-</div>
-</body>
-</html>
-WOK
- output
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/manpage.rb b/lib/sisu/v3dv/manpage.rb
deleted file mode 100644
index 0571a0e6..00000000
--- a/lib/sisu/v3dv/manpage.rb
+++ /dev/null
@@ -1,430 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: manpage text generation, stripped manpage output (unix,
- linefeed)
-
-=end
-module SiSU_Manpage
- require_relative 'dal' # dal.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- include SiSU_Param
- include SiSU_Viz
- require_relative 'manpage_format' # manpage_format.rb
- include SiSU_ManpageFormat
- require_relative 'shared_metadata' # shared_metadata.rb
- require_relative 'shared_txt' # shared_txt.rb
- pwd=Dir.pwd
- @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0
- @@tablefoot=''
- class Source
- def initialize(opt)
- @opt=opt
- if @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/
- @@dostype='unix endnotes'
- else 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)
- path=@env.path.output_tell
- tool=(@opt.cmd =~/[MVv]/) \
- ? "#{@env.program.text_editor} #{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- @opt.cmd=~/[MVvz]/ \
- && @opt.cmd !~/q/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Manpage',tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Manpage',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}").flow if @opt.cmd =~/[MV]/
- @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
- SiSU_Manpage::Source::Scroll.new(@md,@dal_array).songsheet
- SiSU_Env::InfoSkin.new(@md).select #watch
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Scroll <Source
- require_relative 'defaults' # defaults.rb
- require_relative 'shared_txt' # shared_txt.rb
- include SiSU_TextUtils
- @@endnotes={ para: [], end: [] }
- def initialize(md,data)
- @md,@data=md,data
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @vz=SiSU_Env::GetInit.instance.skin
- @tab="\t"
- @br="\n"
- @@dostype='unix endnotes'
- @manpage={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] }
- end
- def songsheet
- manpage=markup(@data)
- publish(manpage)
- end
- # Used for extraction of endnotes from paragraphs
- def extract_endnotes(para='')
- notes=para.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)\s*(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m)
- @n=[]
- notes.flatten.each do |n| #high cost to deal with <br> appropriately within manpage, consider
- n=n.dup.to_s
- if n =~/#{Mx[:br_line]}/
- fix = n.split(/\s*#{Mx[:br_line]}+\s*/) #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=if e.to_s =~/^\[[\d*+]+\]:/; SiSU_TextUtils::Wrap.new(e.to_s,78,4,1)
- else SiSU_TextUtils::Wrap.new(e.to_s,78,0,1)
- end
- wrap=util.line_wrap
- wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
- wrap.gsub(/(^|&nbsp;|#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*'). #man page requires
- gsub(/\s\.(\S+)/,' \\.\1').
- gsub(/^\s*([\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
-.TP
-.BI \\1.
-\\2
-GSUB
- )
- else
- wrap.gsub(/^\s*(.+)\Z/m, <<GSUB
-\\1
-GSUB
- )
- end
- @@endnotes[:para] << wrap
- @@endnotes[:end] << wrap << "\n.br"
- @@endnotes
- end
- end
- def manpage_metadata
- @manpage[:metadata]=SiSU_Metadata::Summary.new(@md).manpage.metadata
- end
- def manpage_tail
- SiSU_Env::InfoSkin.new(@md).select
- vz=SiSU_Env::GetInit.instance.skin
- 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}#{@br}Version number: #{@md.sc_number}#{@br}Version date: #{@md.sc_date}#{@br}"
- else ''
- end
- @manpage[:tail] <<<<WOK
-#{@br}
-.TP
-Other versions of this document:
-.TP
- manifest: <#{@md.file.output_path.digest.url}/#{@md.file.base_filename.digest}>
-.TP
-at: <#{vz.url_site}>
-.TP
-#{sc}
-.TP
-* #{generator}
-.TP
-* #{rubyv}
-.TP
-* #{lastdone}
-.TP
-* SiSU #{vz.url_sisu}
-WOK
- end
- def manpage_structure(dob='',hname='') #% Used to extract the structure of a document
- if dob.is==:heading
- lv=dob.ln
- n=dob.ln - 1
- n3=dob.ln + 2
- else lv=nil
- end
- wrapped=if dob.is==:para \
- || dob.is==:heading
- paragraph=dob.obj
- if dob.is==:para
- if dob.indent =~/[1-9]/ \
- and dob.indent == dob.hang
- util=if dob.bullet_
- SiSU_TextUtils::Wrap.new("* #{paragraph}",78,dob.indent.to_i*2)
- else SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2)
- end
- elsif dob.hang =~/[0-9]/ \
- and dob.indent != dob.hang # NOT yet implemented
- util=SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2)
- else
- util=if dob.bullet_
- SiSU_TextUtils::Wrap.new("* #{paragraph}",78,0)
- else SiSU_TextUtils::Wrap.new(paragraph,78,0)
- end
- end
- else util=SiSU_TextUtils::Wrap.new(paragraph,78,0)
- end
- w=util.line_wrap
- w=w.gsub(/^(\\\.)/,' \1')
- w
- end
- if lv
- 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
- end
- else
- @manpage[:body] << if wrapped =~/^\.BI\s/ # main text, contents, body KEEP
- '.TP' << @br << wrapped.gsub(/^\.BI\s/,'.B ') # sleight ... simpler output (check gsub!)
- else
- '.br' << @br << wrapped
- end
- end
- if @@endnotes[:para] \
- and @@dostype =~/footnote/ #edit out to switch off endnotes following paragraph to which they belong
- @manpage[:body] << @br
- @@endnotes[:para].each { |e| @manpage[:body] << e << @br }
- elsif @@endnotes[:para] \
- and @@dostype =~/endnote/
- @manpage[:body] << @br*2
- end
- @@endnotes[:para]=[]
- end
- def markup(data) # Used for major markup instructions
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- @data_mod,@endnotes,@level,@cont,@copen,@manpage_contents_close=Array.new(6){[]}
- (0..6).each { |x| @cont[x]=@level[x]=false }
- (4..6).each { |x| @manpage_contents_close[x]='' }
- manpage_tail #($1,$2)
- table_message='[table omitted, see other document formats]'
- fix=[]
- manpage_metadata
- data.each do |dob|
- if dob.is==:comment \
- || dob.is==:heading_insert
- dob.obj=''
- end
- dob.obj=dob.obj.gsub(/.+?<-#>/,''). # remove dummy headings (used by html) #check
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^\1^').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'[\1]').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'++\1++').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'--\1--').
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\1').
- gsub(/\A\s*#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}#{Mx[:br_line]}([,.:!?](?: |$))?/m,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}").
- gsub(/\s*#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}([,.:!?](?: |$))?/m,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}").
- gsub(/\A\s*#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}([,.:!?](?: |$))?#{Mx[:br_line]}/m,"#{Mx[:br_line]}.BI \\1\\2#{Mx[:br_line]}").
- gsub(/\s*#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}([,.:!?](?: |$))?/,"#{Mx[:br_line]}.B \\1\\2#{Mx[:br_line]}").
- gsub(/\s*#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}([,.:!?](?: |$))?/,"#{Mx[:br_line]}.I \\1\\2#{Mx[:br_line]}")
- unless dob.is==:code
- dob.obj=dob.obj.gsub(/(?:^|\s)#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}([,.:!?](?: |$))?/,"\\1 #{@brace_url.txt_open}\\2#{@brace_url.txt_close}\\3").
- gsub(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}([,.:!?](?: |$))?/,"\\1#{@brace_url.txt_open}\\2#{@brace_url.txt_close}\\3")
- @manpage[:endnotes]=extract_endnotes(dob.obj)
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s*(?:.+?)#{Mx[:en_a_c]}/m,'[^\1]'). # endnote marker marked up
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s*(?:.+?)#{Mx[:en_b_c]}/m,'[^\1]'). # endnote marker marked up
- gsub(/#{Mx[:gl_o]}#amp#{Mx[:gl_c]}/,'&'). ##{Mx[:gl_o]}#095#{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]}#092#{Mx[:gl_c]}/,'\e').
- 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]}/,'©')
- else
- dob.obj=dob.obj.gsub(/\\/,'\e').
- gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n") # watch
- #dob.obj.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})+\s*/,"\n") # watch
- end
- dob.obj=dob.obj.gsub(/(^|&nbsp;|#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*'). #man page requires
- gsub(/┆/,'|').
- gsub(/\s\.(\S+)/,' \\.\1').
- gsub(/(\n\.)(\S\S\S+)/m,'\1\\.\2').
- gsub(/-/,'\-') #manpages use this
- dob.obj=dob.obj.gsub(/&#126;/,'~') if dob.obj #manpages use this
- if dob.is =~/block|group|verse|alt|code/
- if dob.is ==:code
- dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
- gsub(/(^|[^}])_([<>])/m,'\1\2'). # _<_<
- gsub(/\A(.+)?\Z/m,".nf\n\n\\1\n\n.fi")
- end
- end
- #dob.obj.gsub!(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})+\s*/m,"\n.br\n") # watch
- dob.obj=dob.obj.gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})+\s*/m,"\n\n") # watch
- blit=dob.obj.scan(/\[[^\]]+\]|[^\[]+/)
- blit_array=[]
- blit.each do |x|
- x=if x =~/^\[/
- x.gsub(/\s+/,' \ ') #manpages use this
- else x
- end
- blit_array << x
- end
- dob.obj=blit_array.join
- dob.obj=dob.obj.gsub(/#{Mx[:gl_o]}:name#\S+?#{Mx[:gl_c]}/mi,''). #added
- #gsub(/\s\\\s+(#{Mx[:br_line]}|#{Mx[:br_nl]})/,'\1'). #a messy solution
- gsub(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,''). # remove page breaks
- gsub(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1\2').
- gsub(/<a href=".+?">(.+?)<\/a>/m,'\1').
- gsub(/#{Mx[:mk_o]}name#\S+?#{Mx[:mk_c]}/,''). # remove name links
- gsub(/&nbsp;|#{Mx[:nbsp]}/,' '). # decide on
- gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}\s*(\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*(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]")
- gsub(/^(?:^|[^_\\])#{Mx[:lnk_o]}\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*#{Mx[:lnk_c]}\S+/,'[image: "\1"]')
- wordlist=dob.obj.scan(/\S+/)
- if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- if dob.obj =~@regx #/.+?<~\d+;\w\d+;\w\d+>.*/ #watch change
- paranum=dob.obj[@regx,3]
- @p_num=SiSU_ManpageFormat::ParagraphNumber.new(paranum)
- end
- x=SiSU_ManpageFormat::FormatTextObject.new(@md,dob)
- if dob.is==:heading
- manpage_structure(dob)
- dob.obj=case dob.ln
- when 1; x.heading_body1
- when 2; x.heading_body2
- when 3; x.heading_body3
- when 4; x.heading_body4
- when 5; x.heading_body5
- when 6; x.heading_body6
- end
- elsif dob.is==:para
- manpage_structure(dob)
- else
- if dob.obj =~/#{table_message}/
- @manpage[:body] << dob.obj << @br
- end
- end
- if (dob.obj =~/<a name="n\d+">/ \
- and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
- dob.obj=''
- end
- if dob.obj
- dob.obj=dob.obj.gsub(/\s(\[)/m,' \ \1').
- gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n"). # watch
- gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~').
- gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{').
- gsub(/#{Mx[:pa_o]}\S+#{Mx[:pa_c]}/,' ')
- unless dob.is ==:code
- dob.obj=dob.obj.gsub(/<!.+!>/,' ').
- gsub(/<:\S+>/,' ')
- end
- end
- dob
- end
- end
- @manpage
- end
- def publish(manpage)
- divider='='
- content=[]
- date=if defined? @md.date.modified \
- and @md.date.modified
- @md.date.modified
- elsif defined? @md.date.published \
- and @md.date.published
- @md.date.published
- else SiSU_Env::InfoDate.new.year #date missing decide on action
- end
- manpage_name,manpage_synopsis='',''
- manpg={}
- proj=SiSU_Env::InfoVersion.instance.get_version
- manpage[:open] = %{.TH "#{@md.fnb}" "#{@md.make.manpage['section']}" "#{date}" "#{proj[:version]}" "#{@md.title.main}"#{@md.make.manpage['name']}#{@md.make.manpage['synopsis']}}
- content << manpage[:open]
- content << manpage[:head]
- content << manpage[:body]
- content << @@endnotes[:end] if @@dostype =~/endnotes/
- content << manpage[:metadata]
- content << manpage[:tail]
- Output.new(@md,content).manpage
- @@endnotes={ para: [], end: [] }
- end
- end
- class Output <Source
- include SiSU_Param
- include SiSU_Env
- def initialize(md,content)
- @md,@content=md,content
- end
- def manpage #%manpage output
- SiSU_Env::FileOp.new(@md).mkdir
- filename_manpage=SiSU_Env::FileOp.new(@md).write_file.manpage
- @sisu=[]
- @content.each do |para| # this is a hack
- if para.class==Array \
- and para.length > 0
- para.each do |line|
- line=line.gsub(/\s+$/m,'')
- filename_manpage.puts line #unix manpage
- end
- else filename_manpage.puts para #unix manpage # /^([*=-]|\.){5}/
- end
- end
- filename_manpage.close
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/manpage_format.rb b/lib/sisu/v3dv/manpage_format.rb
deleted file mode 100644
index 7f5b5dad..00000000
--- a/lib/sisu/v3dv/manpage_format.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: manpage formatting template
-
-=end
-module SiSU_ManpageFormat
- require_relative 'param' # param.rb
- include SiSU_Param
- include SiSU_Viz
- class ParagraphNumber
- def initialize(paranum)
- @paranum=/(\d+)/m.match(paranum)[1]
- end
- def display
- @paranum.gsub(/(\d+)/,'<font size="1" color="#777777">&nbsp;&nbsp;\1</font>')
- end
- def name
- @paranum.gsub(/(\d+)/,'<a name="\1"></a>')
- end
- def goto
- @paranum.gsub(/(\d+)/,'<a href="#\1">')
- end
- end
- class FormatTextObject
- def initialize(md,dob)
- @md,@dob=md,dob
-if @dob.class==Hash
- puts __FILE__ + ' ' + __LINE__.to_s #+ "-->\n" + caller.inspect
-elsif @dob.class==String
- puts __FILE__ + ' ' + __LINE__.to_s #+ "-->\n" + caller.inspect
-end
- rgx=/#{Mx[:en_a_o]}[\d*+]+\s+(.+?)#{Mx[:en_a_c]}/
- @dob.obj.gsub!(rgx,'\1') if @dob.obj =~rgx
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def scr_endnote_body
- "<endnote>#{@dob.obj}</endnote> "
- end
- def heading_body1
- end
- def heading_body2
- end
- def heading_body3
- end
- def heading_body4
- end
- def heading_body5
- end
- def heading_body6
- end
- end
- class XML
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/odf.rb b/lib/sisu/v3dv/odf.rb
deleted file mode 100644
index 68aa6e40..00000000
--- a/lib/sisu/v3dv/odf.rb
+++ /dev/null
@@ -1,786 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: opendocument text generation
-
-=end
-module SiSU_ODF
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'dal' # dal.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 'shared_metadata' # shared_metadata.rb
- require_relative 'shared_txt' # shared_txt.rb
- @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0
- class Source
- require 'zlib'
- require 'find'
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- @@endnotes_para=[]
- end
- def read
- begin
- @md,@env,@dal_array=@particulars.md,@particulars.env,@particulars.dal_array
- unless @opt.cmd =~/q/
- tool=(@opt.cmd =~/[MVv]/) \
- ? "#{@env.program.odf_viewer} file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Opendocument (ODF:ODT)',tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Opendocument (ODF:ODT)',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}").flow if @opt.cmd =~/[MV]/
- end
- SiSU_ODF::Source::Scroll.new(@particulars).songsheet
- SiSU_Env::InfoSkin.new(@md).select
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Scroll <Source
- require_relative 'defaults' # defaults.rb
- require_relative 'shared_txt' # shared_txt.rb
- @@img_count=0
- @@odf={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] }
- @@docstart=true
- @@fns=nil
- def initialize(particulars)
- @md,@env,@dal_array=particulars.md,particulars.env,particulars.dal_array
- @vz=SiSU_Env::GetInit.instance.skin
- @tab="\t"
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @br=(@md.opt.cmd =~/M/) ? '' : ''
- #@br=(@md.opt.cmd =~/M/) ? "\n" : ''
- end
- def songsheet
- begin
- pre
- @data=markup(@dal_array)
- post
- publish
- ensure
- unless @md.opt.cmd =~/[MV]/ #check maintenance flag
- if @env.processing_path.odt =~/od[ft]/
- #p "rm -r #{@env.processing_path.odt}" if @md.opt.cmd =~/v/
- FileUtils::rm_r(@env.processing_path.odf_pth)
- #system("rm -r #{@env.processing_path.odt}")
- end
- end
- end
- 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
- @n=[]
- notes.each do |n| #high cost to deal with <br> appropriately within odf, consider
- n=n.dup.to_s
- if n =~/#{Mx[:br_line]}/
- fix=n.split(/#{Mx[:br_line]}/) #watch #added
- fix.each do |x|
- if x =~/\S+/; @n << x
- end
- end
- else @n << n
- end
- end
- end
- def odf_metadata
- @@odf[:metadata]=SiSU_Metadata::Summary.new(@md).odf.metadata
- end
- def odf_tail
- 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}\nVersion number: #{@md.sc_number}\nVersion date: #{@md.sc_date}\n"
- else ''
- end
- url=@md.fnb
- fn=@md.file.base_filename.manifest
- 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 /> &lt;<text:a xlink:type="simple" xlink:href="#{manifest}">#{manifest}</text:a>&gt;</text:p>}
- @@odf[:tail] << %{\n<text:p text:style-name="P_normal">SiSU: &lt;<text:a xlink:type="simple" xlink:href="http://www.jus.uio.no/lm">www.jus.uio.no/sisu</text:a>&gt; and &lt;<text:a xlink:type="simple" xlink:href="http://www.sisudoc.org">www.sisudoc.org</text:a>&gt;</text:p>}
- @@odf[:tail] << "\n</office:text></office:body></office:document-content>"
- end
- def heading(dob,p_num='')
- dob.obj=dob.obj.gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
- m=/#{$1}/
- breakpage=''
- if @md.fns \
- and @md.fns != '' \
- and @md.fns !=@@fns
- @@docstart=true
- @@fns=@md.fns
- end
- unless @@docstart
- breakpage=if (@md.pagenew or @md.pagebreak) \
- and (@md.pagenew =~ m or @md.pagebreak =~m)
- '<text:p text:style-name="P_normal_page_new"> </text:p>'
- else ''
- end
- end
- @@docstart=false
- dob.obj=%{#{breakpage}<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">#{dob.obj}#{p_num}</text:h>}
- dob
- end
- def image_src(i)
- image_source=if @md.fns =~/\.ss[tm]$/ \
- and FileTest.file?("#{@env.path.image_source_include}/#{i}") #review
- @env.path.image_source_include
- elsif @md.fns =~/\.ss[tm]$/ \
- and FileTest.file?("#{@env.path.image_source_include_local}/#{i}") #review
- @env.path.image_source_include_local
- elsif @md.fns =~/\.ss[tm]$/ \
- and FileTest.file?("#{@env.path.image_source_sisu_includes}/#{i}")
- @env.path.image_source_sisu_includes
- elsif @md.fns =~/\.-ss[tm]$/ \
- and FileTest.file?("#{@env.path.image_source_include_remote}/#{i}")
- @env.path.image_source_include_remote
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"ERROR - image:",%{"#{i}" missing},"search locations: #{@env.path.image_source_include_local},#{@env.path.image_source_include_remote} and #{@env.path.image_source_include}").error2 unless @md.opt.cmd =~/q/
- nil
- end
- end
- def image_odf(img)
- # copy image to od image directory (unless exists)
- # divide pixel dimension by 37.79485 and retain 3 decimal places
- m,u=img[1],img[2]
- i=/^(\S+?\.(?:png|jpg|gif))/.match(m).captures.join if m =~/^(\S+?\.(?:png|jpg|gif))/
- c=/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/.match(m).captures.join if m =~/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/
- w,h=/\s(\d+)x(\d+)/.match(m).captures if m =~/\s\d+x\d+/
- w=(w.to_i/37.79485).to_s
- h=(h.to_i/37.79485).to_s
- h=/([0-9]+\.\d{0,3})/.match(h).captures.join
- w=/([0-9]+\.\d{0,3})/.match(w).captures.join
- image_source=image_src(i)
- pwd=Dir.pwd
- if image_source
- FileUtils::cp("#{image_source}/#{i}","#{@env.processing_path.odt}/Pictures/#{i}")
- end
- img=if i.to_s =~/jpg|png|gif/ \
- 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 ...
- else %{<text:p text:style-name="P_normal">[image omitted]</text:p>}
- end
- end
- def image(dob)
- m=if dob.obj =~/#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
- dob.obj.scan(/(#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]})/)
- elsif dob.obj =~/#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}image/
- dob.obj.scan(/(#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}(image))/)
- else nil
- end
- if m; m.each do |i|
- cont,url=i[1],i[2]
- cont=cont.gsub(/([)(\]\[])/,"\\\\\\1").
- gsub(/([+?])/,"\\\\\\1") # incorrect handling of +
- url=url.gsub(/([+?])/,"\\\\\\1")
- dob.obj=dob.obj.sub(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}image/m,image_odf(i)).
- sub(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,image_odf(i)).
- sub(/\\([)(\]\[?])/,'\1') #clumsy fix
- end
- m=nil
- end
- dob
- end
- def text_link_odf(txt,url,trail)
- txt=txt.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(
- url=url.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(
- 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}}
- 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}}
- 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}}
- else # document internal link
- if map_nametags[url] \
- and map_nametags[url][:segname]
- else p "NOT FOUND name_tags: #{url}"
- 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}}
- : %{#{txt.strip}#{trail}}
- end
- t
- end
- def text_link(dob)
- m=dob.obj.scan(/(#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]})/) #sort
- if m
- m.each do |i|
- txt,url,trail=i[1],i[2]
- txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").
- gsub(/([+?*])/,"\\\\\\1") # problems with +
- url=url.gsub(/([+?])/,"\\\\\\1") # problems with +
- dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url
- gsub(/\\([)(\]\[?])/,'\1') #clumsy fix
- end
- m=nil
- end
- dob
- end
- def text_link_relative(dob)
- m=dob.obj.scan(/(#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]})/) #sort
- if m
- m.each do |i|
- txt,url,trail=i[1],i[2]
- txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").
- gsub(/([+?*])/,"\\\\\\1") # problems with +
- url=url.gsub(/([+?])/,"\\\\\\1") # problems with +
- dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url
- gsub(/\\([)(\]\[?])/,'\1') #clumsy fix
- end
- m=nil
- end
- dob
- end
- def normal(dob,p_num='') #P1 - P3
- 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
- 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}}).
- 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
- dob.obj= if dob.is==:para \
- and dob.indent.to_s =~/[0-9]/ \
- and dob.indent == dob.hang
- %{<text:p text:style-name="P_indent_#{dob.indent}">#{dob.obj}#{p_num}</text:p>}
- elsif dob.is==:para \
- and dob.hang.to_s =~/[0-9]/ \
- and dob.indent != dob.hang
- %{<text:p text:style-name="P_h#{dob.hang}_i#{dob.indent}">#{dob.obj}#{p_num}</text:p>}
- else %{<text:p text:style-name="P_normal">#{dob.obj}#{p_num}</text:p>}
- end
- dob
- end
- def fontface(dob)
- 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}})
- 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
- end
- def footnote(t_o)
- str=if defined? t_o.obj; t_o.obj
- elsif t_o.class==String; t_o
- end
- if str
- @astx||=10000
- @astxs||=20000
- if str =~/#{Mx[:en_a_o]}\d+\s+/
- str=str.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,'<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>')
- end
- if str =~/#{Mx[:en_a_o]}([*]+)\s+/
- a=$1.gsub(/([*])/,"\\\\\\1")
- str=str.gsub(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
- @astxs+=1
- end
- if str=~/#{Mx[:en_a_o]}[*+]+\s/
- asterisk=str.scan(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/)
- asterisk.each do |x|
- a=x[0].gsub(/([*+])/,"\\\\\\1")
- str=group_clean(str)
- str=footnote_urls(str)
- str=str.gsub(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
- @astx+=1
- end
- end
- if str=~/#{Mx[:en_b_o]}[*+]\d+\s/
- asterisk=str.scan(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/)
- asterisk.each do |x|
- a=x[0].gsub(/([*+])/,"\\\\\\1")
- str=group_clean(str)
- str=footnote_urls(str)
- str=str.gsub(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
- @astx+=1
- end
- end
- end
- if defined? t_o.obj; t_o.obj=str
- elsif t_o.class==String; t_o=str
- end
- t_o
- end
- def group_clean(str)
- str=str.gsub(/&amp;nbsp;|&nbsp;|#{Mx[:nbsp]}/,'&#160;').
- gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;(text:span text:style-name="Span_\S+?"|\/text:span)&gt;/,'<\1>'). #works, not ideal
- gsub(/#{Mx[:br_line]}/,'<br />').
- gsub(/&lt;br(?:\s+\/)?&gt;/,'<br />')
- end
- def poem(dob,p_num) #P4 #same as group
- parray=[]
- dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each do |parablock|
- parablock=group_clean(parablock)
- parray << %{<text:p text:style-name="P_group">#{parablock}</text:p>} if parablock =~/\S+/
- end
- dob.obj=parray.join \
- + %{<text:p text:style-name="P_group">#{p_num}</text:p>} \
- + '<text:p text:style-name="Standard"/>'
- dob
- end
- 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
- 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}}).
- 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
- dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each do |parablock|
- parablock=group_clean(parablock)
- parablock=parablock.gsub(/&lt;text:a xlink:type="simple" xlink:href="(.+?)"&gt;/m,'<text:a xlink:type="simple" xlink:href="\1">').
- gsub(/&lt;(\/text:a)&gt;/,'<\1>').
- gsub(/&lt;(text:note text:id=.+?)&gt;/,'<\1>').
- gsub(/&lt;(text:p text:style-name="Footnote")&gt;/,'<\1>').
- gsub(/&lt;(\/?text:(?:note-citation|note-body|note|p))&gt;/,'<\1>')
- parablock=footnote(parablock)
- parray << %{<text:p text:style-name="P_group">#{parablock}</text:p>} if parablock =~/\S+/
- end
- dob.obj=parray.join \
- + %{<text:p text:style-name="P_group">#{p_num}</text:p>} \
- + '<text:p text:style-name="Standard"/>'
- dob
- end
- 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
- 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}}).
- 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
- dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each do |parablock|
- parablock=group_clean(parablock)
- parablock=parablock.gsub(/&lt;text:a xlink:type="simple" xlink:href="(.+?)"&gt;/m,'<text:a xlink:type="simple" xlink:href="\1">').
- gsub(/&lt;(\/text:a)&gt;/,'<\1>').
- gsub(/&lt;(text:note text:id=.+?)&gt;/,'<\1>').
- gsub(/&lt;(text:p text:style-name="Footnote")&gt;/,'<\1>').
- gsub(/&lt;(\/?text:(?:note-citation|note-body|note|p))&gt;/,'<\1>')
- parablock=footnote(parablock)
- parray << %{<text:p text:style-name="P_group">#{parablock}</text:p>} if parablock =~/\S+/
- end
- dob.obj=parray.join \
- + %{<text:p text:style-name="P_group">#{p_num}</text:p>} \
- + '<text:p text:style-name="Standard"/>'
- dob
- end
- def code(dob,p_num) #P5
- if dob.is==:code
- dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;')
- parray=[]
- dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each do |parablock|
- 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
- parray << %{<text:p text:style-name="P_code">#{parablock}</text:p>} if parablock =~/\S+/
- end
- dob.obj=parray.join \
- + %{<text:p text:style-name="P_group">#{p_num}</text:p>} \
- + '<text:p text:style-name="Standard"/>'
- end
- dob
- end
- def table(dob,p_num) #
- if dob.is ==:table
- table=SiSU_ODF_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)
- if dob.obj==Mx[:br_page] \
- or dob.obj==Mx[:br_page_new]
- dob=br.br_page
- elsif dob.obj==Mx[:br_obj]
- dob=br.obj_sep
- end
- end
- dob
- end
- def odf_structure(md,dob)
- @md,@dob=md,dob
- dob=if dob.is !=:code
- dob=image(dob) if dob.obj =~/#{Mx[:lnk_o]}[ ]*\S+?\.(?:png|jpg|gif)\s.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- dob=text_link(dob) if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
- dob=text_link_relative(dob) if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
- dob
- else dob
- end
- p_num=''
- if @env.odt_ocn?
- if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- if defined? dob.ocn \
- and not dob.ocn.nil?
- p_num=SiSU_ODF_Format::ParagraphNumber.new(dob.ocn).display
- end
- end
- end
- dob=footnote(dob)
- if dob.is==:heading
- @@odf[:body] << heading(dob,p_num).obj << @br*2
- elsif dob.is ==:verse
- @@odf[:body] << poem(dob,p_num).obj << @br*2
- elsif dob.is==:group
- @@odf[:body] << group(dob,p_num).obj << @br*2
- elsif dob.is==:block
- @@odf[:body] << block(dob,p_num).obj << @br*2
- elsif dob.is==:code
- @@odf[:body] << code(dob,p_num).obj << @br*2
- elsif dob.is==:table #elsif dob.obj =~ /<!Th?¡/u
- @@odf[:body] << table(dob,p_num).obj << @br*2
- elsif dob.is==:break
- @@odf[:body] << obj_break(dob).obj << @br*2
- else
- @@odf[:body] << normal(dob,p_num).obj << @br*2 # main text, contents, body KEEP
- end
- @@endnotes_para=[]
- end
- def tidywords(wordlist)
- wordlist
- end
- def markup(data) # Used for major markup instructions
- safe_characters=/[^a-zA-Z0-9}{\/?,."';:)(><\-_&!@%~#\]\[*=$| \n+`#{Mx[:tc_p]}]/u
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- dir.path.odt_bld
- @data_mod,@endnotes,@level,@cont,@copen,@odf_contents_close=Array.new(6){[]}
- @rcdc=false
- (0..6).each { |x| @cont[x]=@level[x]=false }
- (4..6).each { |x| @odf_contents_close[x]='' }
- odf_tail #($1,$2)
- fix=[]
- bullet=image_src('bullet_09.png')
- if bullet
- FileUtils::cp("#{bullet}/bullet_09.png","#{@env.processing_path.odt}/Pictures/.")
- end
- odf_metadata
- data.each do |dob|
- #p dob.obj if dob.obj =~safe_characters and @md.opt.cmd =~/V/ #KEEP
- dob.obj='' if dob.obj =~/#{Mx[:lv_o]}\d+:.*?#{Mx[:lv_c]}.+?#{Mx[:pa_non_object_dummy_heading]}/ #fix Mx[:lv_o]
- para_array=[]
- dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;')
- word=dob.obj.scan(/\S+|\n/)
- if word
- word.each do |w| # _ - / # | : ! ^ ~
- unless dob =~/^(?:#{Rx[:meta]}|%+ )/m
- w=w.gsub(/&#(?:126|152);/,'~'). #126 usual
- gsub(/&nbsp;/,'&#160;')
- if w !~/(?:&\S{2,7}?;)+/
- w=w.gsub(/&/,'&amp;')
- end
- if w !~/&\S{1,7}?;(?:&\S{1,7}?;)+/ #imperfect
- w=w.gsub(/(&\S{1,7};)+&/,'\1&amp;')
- end
- end
- para_array << w
- end
- dob.obj=para_array.join(' ')
- dob.obj=dob.obj.strip
- end
- if dob.is==:code #{Mx[:gr_o]}code#{Mx[:gr_c]}/ #fix #code-block: angle brackets special characters #fix
- dob.obj=dob.obj.gsub(/(^|[^}])_(?:<|&lt;)/m,'\1&lt;').gsub(/(^|[^}])_(?:>|&gt;)/m,'\1&gt;').
- gsub(/(^|[^}])_(?:<|&lt;)/m,'\1&lt;').gsub(/(^|[^}])_(?:>|&gt;)/m,'\1&gt;')
- end
- if dob.of==:block
- dob.obj=dob.obj.gsub(/#{Mx[:gl_bullet]}/,'● ')
- end
- dob.obj=dob.obj.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').
- 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[:tag_o]}\S+?#{Mx[:tag_c]}/,''). #check
- gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
- gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').
- 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
- end
- dob.obj=dob.obj.gsub(/#{Mx[:br_line]}/,'<br />').
- gsub(/&#169;/,'©'). #too arbitrary
- gsub(/.+?<-#>/,''). # remove dummy headings (used by html) #check
- gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
- '<text:span text:style-name="Span_bold">\1</text:span>').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
- '<text:span text:style-name="Span_italic">\1</text:span>').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
- '<text:span text:style-name="Span_underscore">\1</text:span>').
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
- '<text:span text:style-name="Span_superscript">\1</text:span>').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
- '<text:span text:style-name="Span_subscript">\1</text:span>').
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
- '<text:span text:style-name="Span_monospace">\1</text:span>').
- gsub(/­/u,'-').
- gsub(/ /u, ' '). # space identify
- gsub(/ /u, ' '). # space identify
- gsub(/·/u,'*').
- gsub(/[­–—]/u,'-'). #— – chk
- gsub(/ < /i,'&#060;').
- gsub(/\\copy(?:right)?\b/,'&#169;').
- gsub(/\\trademark\b|\\tm\b/,'&#174;').
- gsub(/\44/,'&#36;'). #$ watch
- gsub(/<a href=".+?">(.+?)<\/a>/,'\1').
- gsub(/#{Mx[:mk_o]}name#\S+?#{Mx[:mk_c]}/,'') # remove name links
- wordlist=dob.obj.scan(/\S+/)
- dob.obj=tidywords(wordlist).join(' ').strip
- @rcdc=true if @rcdc==false \
- 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)
- end
- if dob.is ==:heading \
- || dob.is ==:para \
- || dob.is ==:group \
- || dob.is ==:verse \
- || dob.is ==:code \
- || dob.is ==:table \
- || dob.is ==:break
- odf_structure(@md,dob)
- end
- if dob.obj ## Clean Prepared Text
- dob.obj=dob.obj.gsub(/<!.+!>/,' ').
- gsub(/#{Mx[:tc_o]}.+?#{Mx[:tc_c]}/,' ').
- gsub(/<:\S+>/,' ')
- end
- end
- end
- end
- def pre
- table=if @md.flag_tables
- x=<<WOK
- <style:style style:name="Table1" style:family="table"><style:table-properties style:width="16.999cm" table:align="margins"/></style:style>
- <style:style style:name="Table1.A" style:family="table-column"><style:table-column-properties style:column-width="16.999cm" style:rel-column-width="65535*"/></style:style>
- <style:style style:name="Table1.B" style:family="table-column"><style:table-column-properties style:column-width="8.499cm" style:rel-column-width="32767*"/></style:style>
- <style:style style:name="Table1.C" style:family="table-column"><style:table-column-properties style:column-width="5.666cm" style:rel-column-width="21845*"/></style:style>
- <style:style style:name="Table1.D" style:family="table-column"><style:table-column-properties style:column-width="4.349cm" style:rel-column-width="16383*"/></style:style>
- <style:style style:name="Table1.E" style:family="table-column"><style:table-column-properties style:column-width="3.399cm" style:rel-column-width="13107*"/></style:style>
- <style:style style:name="Table1.F" style:family="table-column"><style:table-column-properties style:column-width="2.833cm" style:rel-column-width="10922*"/></style:style>
- <style:style style:name="Table1.G" style:family="table-column"><style:table-column-properties style:column-width="2.428cm" style:rel-column-width="9362*"/></style:style>
- <style:style style:name="Table1.H" style:family="table-column"><style:table-column-properties style:column-width="2.124cm" style:rel-column-width="8191*"/></style:style>
- <style:style style:name="Table2" style:family="table"><style:table-properties style:width="16.999cm" table:align="margins"/></style:style>
- <style:style style:name="Table2.A" style:family="table-column"><style:table-column-properties style:column-width="16.999cm" style:rel-column-width="65535*"/></style:style>
- <style:style style:name="Table2.B" style:family="table-column"><style:table-column-properties style:column-width="8.499cm" style:rel-column-width="32767*"/></style:style>
- <style:style style:name="Table2.C" style:family="table-column"><style:table-column-properties style:column-width="5.666cm" style:rel-column-width="21845*"/></style:style>
- <style:style style:name="Table2.D" style:family="table-column"><style:table-column-properties style:column-width="4.349cm" style:rel-column-width="16383*"/></style:style>
- <style:style style:name="Table2.E" style:family="table-column"><style:table-column-properties style:column-width="3.999cm" style:rel-column-width="13107*"/></style:style>
- <style:style style:name="Table2.F" style:family="table-column"><style:table-column-properties style:column-width="2.833cm" style:rel-column-width="10922*"/></style:style>
- <style:style style:name="Table2.G" style:family="table-column"><style:table-column-properties style:column-width="2.428cm" style:rel-column-width="9362*"/></style:style>
- <style:style style:name="Table2.H" style:family="table-column"><style:table-column-properties style:column-width="2.124cm" style:rel-column-width="8191*"/></style:style>
- <style:style style:name="Table2.I" style:family="table-column"><style:table-column-properties style:column-width="1.8887cm" style:rel-column-width="7281*"/></style:style>
- <style:style style:name="Table2.J" style:family="table-column"><style:table-column-properties style:column-width="1.6999cm" style:rel-column-width="6553*"/></style:style>
- <style:style style:name="Table2.K" style:family="table-column"><style:table-column-properties style:column-width="1.5453cm" style:rel-column-width="5957*"/></style:style>
- <style:style style:name="Table2.L" style:family="table-column"><style:table-column-properties style:column-width="1.416cm" style:rel-column-width="5461*"/></style:style>
- <style:style style:name="Table2.M" style:family="table-column"><style:table-column-properties style:column-width="1.307" style:rel-column-width="5041*"/></style:style>
- <style:style style:name="Table2.N" style:family="table-column"><style:table-column-properties style:column-width="1.214cm" style:rel-column-width="4681*"/></style:style>
-WOK
- x=x.strip
- x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
- x
- else ''
- end
- breakpage=if @md.pagenew \
- or @md.pagebreak
- ' fo:break-before="page"'
- else ''
- 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: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="&apos;Nimbus Sans L&apos;" style:font-pitch="variable"/><style:font-face style:name="Tahoma" svg:font-family="Tahoma, Lucidasans, &apos;Lucida Sans&apos;, &apos;Arial Unicode MS&apos;" style:font-pitch="variable"/><style:font-face style:name="Nimbus Roman No9 L" svg:font-family="&apos;Nimbus Roman No9 L&apos;" style:font-family-generic="roman" style:font-pitch="variable"/><style:font-face style:name="Bitstream Vera Sans" svg:font-family="&apos;Bitstream Vera Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/></office:font-face-decls>
-<office:automatic-styles>
-#{table}
- <style:style style:name="P_table_cell" style:family="paragraph" style:parent-style-name="Table_Contents"><style:paragraph-properties fo:text-align="justify" style:justify-single-word="false"/></style:style>
-</office:automatic-styles>
-<office:body>
- <office:text text:use-soft-page-breaks="true">
- <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
- <text:sequence-decls><text:sequence-decl text:display-outline-level="0" text:name="Illustration"/><text:sequence-decl text:display-outline-level="0" text:name="Table"/><text:sequence-decl text:display-outline-level="0" text:name="Text"/><text:sequence-decl text:display-outline-level="0" text:name="Drawing"/></text:sequence-decls>
-WOK
- x=x.strip
- x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
- @@odf[:head] << x
- end
- def post
- end
- def publish
- divider='='
- content=[]
- data=@data
- content << @@odf[:open]
- content << @@odf[:head]
- content << @@odf[:body]
- content << @@odf[:metadata]
- content << @@odf[:tail]
- SiSU_ODF::Source::Output.new(content,@md,@env).odf
- @@odf[:head],@@odf[:body],@@odf[:tail],@@odf[:metadata]=[],[],[],[]
- end
- end
- class Output <Source
- def initialize(content,md,env)
- @content,@md,@env=content,md,env
- end
- def odf #%odf output
- env=SiSU_Env::FileOp.new(@md)
- env.mkdir
- header=SiSU_ODF_Format::ODT_Head_1_2.new(@md)
- filename="#{@env.processing_path.odt}/manifest.rdf"
- od=File.new(filename,'w+')
- od << header.manifest_rdf
- od.close
- filename="#{@env.processing_path.odt}/META-INF/manifest.xml"
- od=File.new(filename,'w+')
- od << header.meta_inf_manifest_xml(@md)
- od.close
- filename="#{@env.processing_path.odt}/meta.xml"
- od=File.new(filename,'w+')
- od << header.meta_xml
- od.close
- filename="#{@env.processing_path.odt}/settings.xml"
- od=File.new(filename,'w+')
- od << header.settings_xml
- od.close
- filename="#{@env.processing_path.odt}/styles.xml"
- od=File.new(filename,'w+')
- od << header.styles_xml
- od.close
- filename="#{@env.processing_path.odt}/mimetype"
- od=File.new(filename,'w+')
- od << header.mimetype
- od.close
- env.make_path(@env.processing_path.odt)
- env.make_path(@md.file.output_path.odt.dir)
- filename="#{@env.processing_path.odt}/content.xml"
- od=File.new(filename,'w+')
- @content.each do |para| # this is a hack
- od.puts para unless para =~/\A\s*\Z/
- end
- od.close
- opendoc=@md.file.base_filename.odt #watch where output by language
- FileUtils::mkdir_p(@md.file.output_path.odt.dir) unless FileTest.directory?(@md.file.output_path.odt.dir)
- if FileTest.directory?(@env.processing_path.odt)
- pwd=Dir.pwd
- Dir.chdir(@env.processing_path.odt)
- system("
- zip -qr #{opendoc} *
- ")
- FileUtils::mv(opendoc, @md.file.place_file.odt.dir)
- Dir.chdir(pwd)
- end
- end
- end
- end
-end
-__END__
-todo:
-* table of contents
-* page header/footer?
-
-done:
-headings *
-footnotes *
-bold underscore italics strikethrough *
-superscript subscript *
-extended ascii set *
-indents *
- [autonomy_markup0.sst] *
-groups
- poem *
- code *
- tables
-images
-bullet
-line break
-page break
-
-notes?? [you could add a note number for every object/paragraph!]
-
- FileUtils::cd(@env.processing_path.odt)
- structure=[]
- Find.find(@env.processing_path.odt) do |f|
- structure << puts f
- end
- open(opendoc,'wb') do |f|
- zip=Zlib::ZipWriter.new(f)
- structure.each |z| do
- zip << z
- end
- zip.close
- end
- #zip -qr #{opendoc} *
- FileUtils::mv(opendoc,"#{@env.path.output}/#{@md.fnb}/.")
- FileUtils::cd(Dir.pwd)
-●
-<text:span text:style-name="T6">●</text:span> #bullet
-dob.obj.gsub!(/^(#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]})\s*#{Mx[:gl_bullet]}/,'\1 <text:span text:style-name="T6">·</text:span> ') #bullet
-dob.obj.gsub!(/^#{Mx[:gl_bullet]}/,'<text:span text:style-name="T6">·</text:span> ') #bullet
diff --git a/lib/sisu/v3dv/odf_format.rb b/lib/sisu/v3dv/odf_format.rb
deleted file mode 100644
index c6d4b504..00000000
--- a/lib/sisu/v3dv/odf_format.rb
+++ /dev/null
@@ -1,607 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: opendocument formatting, default opendocument template
-
-=end
-module SiSU_ODF_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+)/,' <text:span text:style-name="Span_subscript">[\1]</text:span>')
- end
- def name
- @paranum.gsub(/(\d+)/,'<a name="\1"></a>')
- end
- def goto
- @paranum.gsub(/(\d+)/,'<a href="#\1">')
- end
- end
- class FormatTextObject
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- if t_o.class==Hash
- @txt =t_o[:txt] || nil
- else
- p t_o.class
- p caller
- end
- rgx=/#{Mx[:en_a_o]}\d+\s+(.+?)#{Mx[:en_a_c]}/
- @txt=@txt.gsub(rgx,'\1') if @txt =~rgx
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def scr_endnote_body
- "<endnote>#{@txt}</endnote> "
- end
- def heading_body1
- end
- def heading_body2
- end
- def heading_body3
- end
- def heading_body4
- end
- def heading_body5
- end
- def heading_body6
- end
- end
- class Table
- @@tablehead,@@table_counter=0,0 #reinitialise on new file
- @@tablefoot=[] #watch
- @@fns=''
- def initialize(md,dob,p_num)
- @md,@dob,@p_num=md,dob,p_num
- @txt=dob.obj
- @vz=SiSU_Env::GetInit.instance.skin
- if @md.fns != @@fns
- @@table_counter=0
- @@fns=@md.fns
- end
- end
- def table_head_open(count)
- type=if @dob.head_; 1
- else 2
- end
- alpha=case @dob.cols
- when 1; 'A'
- when 2; 'B'
- when 3; 'C'
- when 4; 'D'
- when 5; 'E'
- when 6; 'F'
- when 7; 'G'
- when 8; 'H'
- when 9; 'I'
- when 10; 'J'
- when 11; 'K'
- when 12; 'L'
- when 13; 'M'
- when 14; 'N'
- else 'D'
- end
- %{<table:table table:name="Table#{count}" table:style-name="Table#{type}">#{@br}} +
- %{<table:table-column table:style-name="Table#{type}.#{alpha}" table:number-columns-repeated="#{@dob.cols}"/>#{@br}}
- end
- def table_close(tablefoot='')
- '</table:table>' \
- + %{<text:p text:style-name="P_group">#{@p_num}</text:p>}
- end
- def table_tag_cell(str,i)
- txt_name_cell=if i==0 \
- and @dob.head_
- 'Table_Heading'
- 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}} +
- %{#{str}} +
- %{</text:p>#{@br}} +
- %{</table:table-cell>#{@br}}
- end
- def table_tag_row(str,i)
- %{<table:table-row>#{@br}} +
- %{#{str}} +
- %{</table:table-row>#{@br}}
- end
- def table_tag_row_dump(str,i)
- txt_name_row=if i==0 \
- and @dob.head_
- '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}}
- %{#{str}} +
- %{</text:p>#{@br}} +
- %{</table:table-cell>#{@br}} +
- %{</table:table-row>#{@br}}
- end
- def table_row(row,i)
- row='' if row =~/^<!$/
- m=row[/<!f(.+?)!>/,1]
- @@tablefoot << m if m
- row=row.gsub(/<!f.+?!>/,'')
- @cells=[]
- row.split(/\s*#{Mx[:tc_p]}/).each do |cell|
- @cells << table_tag_cell(cell,i)
- end
- row=@cells.join
- row=table_tag_row(row,i)
- row
- end
- def table
- @@table_counter+=1
- table_head_open(@@table_counter)
- @table=[]
- @dob.obj.split(/\s*#{Mx[:tc_c]}/).each_with_index do |r,i|
- @table << table_row(r,i)
- end
- @dob.obj= table_head_open(@@table_counter) + @table.join + table_close
- @dob
- end
- end
- class ODT_Head_1_2
- def initialize(md)
- @md=md
- @generator="#{@md.sisu_version[:project]} #{@md.sisu_version[:version]} #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})"
- end
- def manifest_rdf
- x=<<WOK
-<?xml version="1.0" encoding="utf-8"?>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about="styles.xml">
- <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/odf#StylesFile"/>
- </rdf:Description>
- <rdf:Description rdf:about="">
- <ns0:hasPart xmlns:ns0="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#" rdf:resource="styles.xml"/>
- </rdf:Description>
- <rdf:Description rdf:about="content.xml">
- <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/odf#ContentFile"/>
- </rdf:Description>
- <rdf:Description rdf:about="">
- <ns0:hasPart xmlns:ns0="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#" rdf:resource="content.xml"/>
- </rdf:Description>
- <rdf:Description rdf:about="">
- <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document"/>
- </rdf:Description>
-</rdf:RDF>
-WOK
- x=x.strip
- x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
- x
- end
- def meta_inf_manifest_xml(md)
- images=[' <manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/bullet_09.png"/>']
- if md.ec[:image].length > 0
- md.ec[:image].each do |i|
- images<<<<WOK
- <manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/#{i}"/>
-WOK
- end
- end
- images=images.join('')
- x=<<WOK
-<?xml version="1.0" encoding="UTF-8"?>
-<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">
- <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.text" manifest:version="1.2" manifest:full-path="/"/>
- <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="styles.xml"/>
- <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
- #{images}
- <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="meta.xml"/>
- <manifest:file-entry manifest:media-type="application/rdf+xml" manifest:full-path="manifest.rdf"/>
- <manifest:file-entry manifest:media-type="image/png" manifest:full-path="Thumbnails/thumbnail.png"/>
- <manifest:file-entry manifest:media-type="application/binary" manifest:full-path="layout-cache"/>
- <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="settings.xml"/>
- <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/accelerator/current.xml"/>
- <manifest:file-entry manifest:media-type="application/vnd.sun.xml.ui.configuration" manifest:full-path="Configurations2/"/>
-</manifest:manifest>
-WOK
- x=x.strip
- x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
- x
- end
- 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:meta>
- <meta:generator>#{@generator}</meta:generator>
- <meta:creation-date>#{@md.generated}</meta:creation-date>
- <dc:date>#{@md.generated}</dc:date>
- <dc:language>en-US</dc:language>
- </office:meta>
-</office:document-meta>
-WOK
- x=x.strip
- x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
- x
- end
- 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:settings>
- <config:config-item-set config:name="ooo:view-settings">
- <config:config-item config:name="ViewAreaTop" config:type="int">0</config:config-item>
- <config:config-item config:name="ViewAreaLeft" config:type="int">0</config:config-item>
- <config:config-item config:name="ViewAreaWidth" config:type="int">0</config:config-item>
- <config:config-item config:name="ViewAreaHeight" config:type="int">0</config:config-item>
- <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
- <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
- <config:config-item-map-indexed config:name="Views">
- <config:config-item-map-entry>
- <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
- <config:config-item config:name="ViewLeft" config:type="int">0</config:config-item>
- <config:config-item config:name="ViewTop" config:type="int">0</config:config-item>
- <config:config-item config:name="VisibleLeft" config:type="int">0</config:config-item>
- <config:config-item config:name="VisibleTop" config:type="int">0</config:config-item>
- <config:config-item config:name="VisibleRight" config:type="int">0</config:config-item>
- <config:config-item config:name="VisibleBottom" config:type="int">0</config:config-item>
- <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
- <config:config-item config:name="ViewLayoutColumns" config:type="short">2</config:config-item>
- <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">true</config:config-item>
- <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
- <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
- </config:config-item-map-entry>
- </config:config-item-map-indexed>
- </config:config-item-set>
- <config:config-item-set config:name="ooo:configuration-settings">
- <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
- <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
- <config:config-item config:name="MathBaselineAlignment" config:type="boolean">false</config:config-item>
- <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
- <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
- <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
- <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
- <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
- <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
- <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
- <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
- <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
- <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
- <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
- <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
- <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
- <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
- <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
- <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
- <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
- <config:config-item config:name="UpdateFromTemplate" config:type="boolean">false</config:config-item>
- <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
- <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
- <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
- <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">true</config:config-item>
- <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
- <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
- <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
- <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrinterName" config:type="string"/>
- <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
- <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
- <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
- <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
- <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">true</config:config-item>
- <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintFaxName" config:type="string"/>
- <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
- <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
- <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
- <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
- <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
- <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
- <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
- <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
- <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
- <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
- <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
- <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
- <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
- <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
- </config:config-item-set>
- </office:settings>
-</office:document-settings>
-WOK
- x=x.strip
- x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
- x
- end
- 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: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"/>
- <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:styles>
- <style:default-style style:family="graphic">
- <style:graphic-properties fo:wrap-option="wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
- <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
- <style:tab-stops/>
- </style:paragraph-properties>
- <style:text-properties style:use-window-font-color="true" fo:font-size="12pt" fo:language="en" fo:country="US" style:font-size-asian="12pt" style:language-asian="zxx" style:country-asian="none" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none"/>
- </style:default-style>
- <style:default-style style:family="paragraph">
- <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
- <style:text-properties style:use-window-font-color="true" style:font-name="Nimbus Roman No9 L" fo:font-size="12pt" fo:language="en" fo:country="US" style:font-name-asian="Nimbus Sans L" style:font-size-asian="12pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Nimbus Sans L" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
- </style:default-style>
- <style:default-style style:family="table">
- <style:table-properties table:border-model="collapsing"/>
- </style:default-style>
- <style:default-style style:family="table-row">
- <style:table-row-properties fo:keep-together="auto"/>
- </style:default-style>
- <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
- <style:style style:name="Text_body" style:display-name="Text body" style:family="paragraph" style:class="text"><style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm"/></style:style>
- <style:style style:name="P_page_break" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:break-before="page"/></style:style>
- <style:style style:name="P_normal" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:text-align="justify" style:justify-single-word="false"/></style:style>
- <style:style style:name="P_normal_page_new" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:break-after="page"/></style:style>
- <style:style style:name="P_indent_0" style:display-name="Paragraph indent 0" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:text-align="justify" style:justify-single-word="false"/></style:style>
- <style:style style:name="P_indent_1" style:display-name="Paragraph indent 1" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="1cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_2" style:display-name="Paragraph indent 2" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="2cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_3" style:display-name="Paragraph indent 3" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="3cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_4" style:display-name="Paragraph indent 4" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="4cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_5" style:display-name="Paragraph indent 5" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="5cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_6" style:display-name="Paragraph indent 6" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="6cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_7" style:display-name="Paragraph indent 7" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="7cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_8" style:display-name="Paragraph indent 8" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="8cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_indent_9" style:display-name="Paragraph indent 9" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" fo:line-height="150%" fo:margin-left="9cm" fo:margin-right="0cm" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/></style:style>
- <style:style style:name="P_h0_i0" style:display-name="Hang 0 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i1" style:display-name="Hang 0 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i2" style:display-name="Hang 0 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i3" style:display-name="Hang 0 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="-3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i4" style:display-name="Hang 0 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="-4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i5" style:display-name="Hang 0 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="-5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i6" style:display-name="Hang 0 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="-6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i7" style:display-name="Hang 0 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="-7cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i8" style:display-name="Hang 0 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-8cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h0_i9" style:display-name="Hang 0 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-9cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i0" style:display-name="Hang 1 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i1" style:display-name="Hang 1 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i2" style:display-name="Hang 1 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i3" style:display-name="Hang 1 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i4" style:display-name="Hang 1 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="-3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i5" style:display-name="Hang 1 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="-4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i6" style:display-name="Hang 1 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="-5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i7" style:display-name="Hang 1 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="-6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i8" style:display-name="Hang 1 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-7cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h1_i9" style:display-name="Hang 1 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-8cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i0" style:display-name="Hang 2 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i1" style:display-name="Hang 2 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i2" style:display-name="Hang 2 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i3" style:display-name="Hang 2 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i4" style:display-name="Hang 2 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i5" style:display-name="Hang 2 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="-3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i6" style:display-name="Hang 2 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="-4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i7" style:display-name="Hang 2 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="-5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i8" style:display-name="Hang 2 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h2_i9" style:display-name="Hang 2 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-7cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i0" style:display-name="Hang 3 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i1" style:display-name="Hang 3 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i2" style:display-name="Hang 3 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i3" style:display-name="Hang 3 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i4" style:display-name="Hang 3 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i5" style:display-name="Hang 3 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i6" style:display-name="Hang 3 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="-3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i7" style:display-name="Hang 3 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="-4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i8" style:display-name="Hang 3 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h3_i9" style:display-name="Hang 3 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i0" style:display-name="Hang 4 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i1" style:display-name="Hang 4 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i2" style:display-name="Hang 4 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i3" style:display-name="Hang 4 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i4" style:display-name="Hang 4 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i5" style:display-name="Hang 4 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i6" style:display-name="Hang 4 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i7" style:display-name="Hang 4 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="-3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i8" style:display-name="Hang 4 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h4_i9" style:display-name="Hang 4 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i0" style:display-name="Hang 5 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i1" style:display-name="Hang 5 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i2" style:display-name="Hang 5 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i3" style:display-name="Hang 5 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i4" style:display-name="Hang 5 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i5" style:display-name="Hang 5 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i6" style:display-name="Hang 5 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i7" style:display-name="Hang 5 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i8" style:display-name="Hang 5 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h5_i9" style:display-name="Hang 5 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i0" style:display-name="Hang 6 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i1" style:display-name="Hang 6 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i2" style:display-name="Hang 6 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i3" style:display-name="Hang 6 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i4" style:display-name="Hang 6 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i5" style:display-name="Hang 6 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i6" style:display-name="Hang 6 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i7" style:display-name="Hang 6 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i8" style:display-name="Hang 6 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h6_i9" style:display-name="Hang 6 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i0" style:display-name="Hang 7 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="7cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i1" style:display-name="Hang 7 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i2" style:display-name="Hang 7 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i3" style:display-name="Hang 7 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i4" style:display-name="Hang 7 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i5" style:display-name="Hang 7 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i6" style:display-name="Hang 7 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i7" style:display-name="Hang 7 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i8" style:display-name="Hang 7 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h7_i9" style:display-name="Hang 7 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i0" style:display-name="Hang 8 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="8cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i1" style:display-name="Hang 8 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="7cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i2" style:display-name="Hang 8 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i3" style:display-name="Hang 8 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i4" style:display-name="Hang 8 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i5" style:display-name="Hang 8 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i6" style:display-name="Hang 8 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i7" style:display-name="Hang 8 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i8" style:display-name="Hang 8 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h8_i9" style:display-name="Hang 8 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i0" style:display-name="Hang 9 Indent 0" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="9cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i1" style:display-name="Hang 9 Indent 1" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="8cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i2" style:display-name="Hang 9 Indent 2" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="2cm" fo:margin-right="0cm" fo:text-indent="7cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i3" style:display-name="Hang 9 Indent 3" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="3cm" fo:margin-right="0cm" fo:text-indent="6cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i4" style:display-name="Hang 9 Indent 4" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="4cm" fo:margin-right="0cm" fo:text-indent="5cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i5" style:display-name="Hang 9 Indent 5" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="5cm" fo:margin-right="0cm" fo:text-indent="4cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i6" style:display-name="Hang 9 Indent 6" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="6cm" fo:margin-right="0cm" fo:text-indent="3cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i7" style:display-name="Hang 9 Indent 7" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="7cm" fo:margin-right="0cm" fo:text-indent="2cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i8" style:display-name="Hang 9 Indent 8" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="8cm" fo:margin-right="0cm" fo:text-indent="1cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="P_h9_i9" style:display-name="Hang 9 Indent 9" style:family="paragraph" style:parent-style-name="Text_body" style:class="text"><style:paragraph-properties fo:margin-left="9cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"><style:tab-stops><style:tab-stop style:position="0cm"/></style:tab-stops></style:paragraph-properties></style:style>
- <style:style style:name="Span_bold" style:family="text"><style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/></style:style>
- <style:style style:name="Span_italic" style:family="text"><style:text-properties fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"/></style:style>
- <style:style style:name="Span_underscore" style:family="text"><style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/></style:style>
- <style:style style:name="Span_superscript" style:family="text"><style:text-properties style:text-position="super 58%"/></style:style>
- <style:style style:name="Span_subscript" style:family="text"><style:text-properties style:text-position="sub 58%"/></style:style>
- <style:style style:name="Span_monospace" style:family="text"><style:text-properties style:font-name="DejaVu Sans Mono" fo:font-size="10pt" fo:font-weight="normal" fo:background-color="#e6e6e6"/></style:style>
- <style:style style:name="Heading" style:family="paragraph" style:next-style-name="Text_body" style:class="text"> <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" fo:keep-with-next="always"/><style:text-properties style:font-name="Bitstream Vera Sans" fo:font-size="14pt" style:font-size-asian="14pt" style:font-name-complex="Tahoma" style:font-size-complex="14pt"/></style:style>
- <style:style style:name="H_1" style:display-name="Heading 1" style:family="paragraph" style:next-style-name="Text_body" style:default-outline-level="1" style:class="text"><style:text-properties fo:font-size="120%" fo:font-weight="bold" style:font-size-asian="120%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/></style:style>
- <style:style style:name="H_2" style:display-name="Heading 2" style:family="paragraph" style:next-style-name="Text_body" style:default-outline-level="2" style:class="text"><style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/></style:style>
- <style:style style:name="H_3" style:display-name="Heading 3" style:family="paragraph" style:next-style-name="Text_body" style:default-outline-level="3" style:class="text"><style:text-properties fo:font-size="110%" fo:font-weight="bold" style:font-size-asian="110%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/></style:style>
- <style:style style:name="H_4" style:display-name="Heading 4" style:family="paragraph" style:next-style-name="Text_body" style:default-outline-level="4" style:class="text"><style:text-properties fo:font-size="12pt" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-style-complex="italic" style:font-weight-complex="bold"/></style:style>
- <style:style style:name="H_5" style:display-name="Heading 5" style:family="paragraph" style:next-style-name="Text_body" style:default-outline-level="5" style:class="text"><style:text-properties fo:font-size="90%" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="90%" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="90%" style:font-style-complex="italic" style:font-weight-complex="bold"/></style:style>
- <style:style style:name="H_6" style:display-name="Heading 6" style:family="paragraph" style:next-style-name="Text_body" style:default-outline-level="6" style:class="text"><style:text-properties fo:font-size="80%" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="80%" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="80%" style:font-style-complex="italic" style:font-weight-complex="bold"/></style:style>
- <style:style style:name="P_group" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:line-height="100%" fo:text-align="justify" style:justify-single-word="false"/></style:style>
- <style:style style:name="P_code" style:family="paragraph" style:parent-style-name="Standard"><style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:line-height="100%" fo:text-align="start" style:justify-single-word="false"/><style:text-properties style:font-name="DejaVu Sans Mono" fo:font-size="9pt" fo:font-weight="normal" fo:background-color="#e6e6e6"/></style:style>
- <style:style style:name="Footnote" style:family="paragraph" style:class="extra"><style:paragraph-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="-0.499cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/> <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/></style:style>
- <style:style style:name="Table_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"><style:paragraph-properties text:number-lines="false" text:line-number="0"/></style:style>
- <style:style style:name="Footnote_symbol" style:display-name="Footnote Symbol" style:family="text"/>
- <style:style style:name="Footnote_anchor" style:display-name="Footnote Anchor" style:family="text"><style:text-properties style:text-position="super 58%"/></style:style>
- <style:style style:name="Internet_link" style:display-name="Internet link" style:family="text"><style:text-properties fo:color="#000080" fo:language="zxx" fo:country="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" style:language-asian="zxx" style:country-asian="none" style:language-complex="zxx" style:country-complex="none"/></style:style>
- <style:style style:name="Graphics" style:family="graphic"><style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="dynamic" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/></style:style>
- <text:outline-style style:name="Outline"><text:outline-level-style text:level="1" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="2" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="3" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="4" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="5" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="6" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="7" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="8" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="9" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- <text:outline-level-style text:level="10" style:num-format=""><style:list-level-properties text:min-label-distance="0.381cm"/></text:outline-level-style>
- </text:outline-style>
- <text:notes-configuration text:note-class="footnote" text:citation-style-name="Footnote_symbol" text:citation-body-style-name="Footnote_anchor" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
- <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
- <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
- <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Graphics"><style:graphic-properties style:wrap="none" style:horizontal-pos="left" style:horizontal-rel="paragraph" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/></style:style>
- <style:style style:name="gr1" style:family="graphic"><style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle" draw:color-mode="standard" draw:luminance="0%" draw:contrast="0%" draw:gamma="100%" draw:red="0%" draw:green="0%" draw:blue="0%" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:image-opacity="100%" style:mirror="none" style:run-through="background" style:wrap="none" style:vertical-pos="top" style:vertical-rel="baseline" style:horizontal-pos="left" style:horizontal-rel="paragraph" draw:wrap-influence-on-position="once-concurrent" style:flow-with-text="false"/></style:style>
- <style:style style:name="gr2" style:family="graphic"><style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle" draw:color-mode="standard" draw:luminance="0%" draw:contrast="0%" draw:gamma="100%" draw:red="0%" draw:green="0%" draw:blue="0%" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:image-opacity="100%" style:mirror="none" style:run-through="background" style:wrap="none" style:vertical-pos="middle" style:vertical-rel="baseline" style:horizontal-pos="left" style:horizontal-rel="paragraph" draw:wrap-influence-on-position="once-concurrent" style:flow-with-text="false"/></style:style>
- </office:styles>
- <office:automatic-styles>
- <style:page-layout style:name="Mpm1">
- <style:page-layout-properties fo:page-width="20.999cm" fo:page-height="29.699cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
- <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
- </style:page-layout-properties>
- <style:header-style/>
- <style:footer-style/>
- </style:page-layout>
- </office:automatic-styles>
- <office:master-styles>
- <style:master-page style:name="Standard" style:page-layout-name="Mpm1"/>
- </office:master-styles>
-</office:document-styles>
-WOK
- x=x.strip
- x=x.gsub(/\n+/m,'') unless @md.opt.cmd=~/M/
- x
- end
- def mimetype
- x=<<WOK
-application/vnd.oasis.opendocument.text
-WOK
- x=x.strip
- end
- end
- class FormatObjBreak
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- end
- def br_page
- @t_o.obj='<text:p text:style-name="P_page_break"> </text:p>'
- @t_o
- end
- def obj_sep #center later
- sep='--- '
- @t_o.obj=%{<text:p text:style-name="P_normal">#{sep*20}</text:p>}
- @t_o
- end
- end
- class XML
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/options.rb b/lib/sisu/v3dv/options.rb
deleted file mode 100644
index 11d03e1d..00000000
--- a/lib/sisu/v3dv/options.rb
+++ /dev/null
@@ -1,795 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: SiSU information Structuring Universe, command line options
- parsing
-
-=end
-module SiSU_Commandline
- require "pathname"
- require_relative 'sysenv' # sysenv.rb
- @@base_path=nil
- class Options
- attr_accessor :cmd,:mod,:act,:dir_structure_by,:f_pths,:files,:base_path,:base_stub,:sub_location,:paths,:lngs,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:lng,:lng_base,:what
- def initialize(a)
- @cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what,@lng,@lng_base,@base_path,@base_stub,@sub_location='','','','','','','','','','','','',''
- @f_pths,@files,@paths,@mod,@act=Array.new(5){[]}
- @env=SiSU_Env::InfoEnv.new
- @lng_base=@env.language_default_set
- @dir_structure_by=SiSU_Env::EnvCall.new.output_dir_structure.by?
- @@base_path ||=Dir.pwd
- @base_path=@@base_path
- r=Px[:lng_lst].join('|')
- u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
- @base_stub=@base_path.gsub(u,'\1')
- @a=sisu_glob_rules(a)
- @a.freeze
- init
- end
- def find_all(find_flag,opt)
- if find_flag
- pwd_set=Dir.pwd
- x=Dir.glob('*.ss[tm]')
- Px[:lng_lst].each do |d|
- if FileTest.directory?(d)
- x << Dir.glob("#{d}/*.ss[tm]")
- end
- end
- x=x.flatten
- opt + x
- end
- end
- def find_select(find_flag,opt)
- if find_flag
- pwd_set=Dir.pwd
- x=[]
- if opt.inspect =~/"[a-zA-Z][a-zA-Z0-9._-]+?"/
- opt.each do |g|
- x <<=if g =~/.ss[tm]/
- Dir.glob("*#{g}")
- else
- Dir.glob("*#{g}*.ss[tm]")
- end
- Px[:lng_lst].each do |d|
- if FileTest.directory?(d)
- x <<=if g =~/.ss[tm]/
- Dir.glob("#{d}/*#{g}")
- else
- Dir.glob("#{d}/*#{g}*.ss[tm]")
- end
- end
- end
- end
- end
- x.flatten
- end
- end
- def sisu_glob_rules(a)
- a=if a.inspect =~/"-[A-Za-z0-9]*[fG]/ \
- or a.inspect =~/"--find"|"--glob"/
- b,f=[],[]
- find_flag=false
- a.each do |y|
- if y =~ /^-/
- if y =~/^-/ \
- && y =~/[fG]|--find|--glob/
- find_flag=true
- end
- b << y
- end
- if find_flag \
- && y !~ /^-/ \
- && y =~ /\S+/
- if y !~/\//
- f << y
- else
- find_flag=false
- puts %{sub-directories "#{y}" cannot be provided for --find or --glob at this time}
- end
- end
- end
- r=Px[:lng_lst].join('|')
- r=r.gsub(/\|#{@lng_base}\|/,'|')
- @lang_regx=%r{(?:#{r})}
- z=if find_flag
- (f.length > 0) \
- ? (b + find_select(find_flag,f))
- : find_all(find_flag,b)
- elsif a.inspect =~/"(?:-\S+?|--\S+?)"/ \
- && a.inspect =~/"#{@lang_regx}\/?"/ \
- && a.inspect =~/"#{@lng_base}\/\S+?\.ss[tm]"/
- init_selected_lang_dirs(a)
- else b
- end
- else a
- end
- end
- def init_selected_lang_dirs(a)
- @z=[]
- a.each do |y|
- if y =~/^#{@lng_base}\/(\S+?\.ss[tm])$/
- @fn=$1
- @z << y
- elsif y =~/^#{@lang_regx}\/?$/
- @z << "#{y}/#{@fn}"
- else @z << y
- end
- end
- @z
- end
- def init
- a=@a
- if a.length > 0
- s=expand_numeric_shortcuts(a)
- q=set_files_and_paths_and_general_extract(s)
- @cmd,@mod=opt_cmd_and_mod_adjust(q[:cmd],q[:mod])
- @what=q[:what] unless q[:what].empty?
- @paths = q[:paths]
- @files = q[:files]
- @f_pths = q[:f_pths]
- @lngs = q[:lngs]
- if @files.length > 0 \
- and @cmd.empty? \
- and @mod.length==0 #% if no other action called on filename given, default is sisu --v3 -0 [filename(s)] configured as flag default
- shortcut=SiSU_Env::InfoProcessingFlag.new
- @mod=['--v3']
- @cmd=shortcut.cf_0 + 'm'
- end
- SiSU_Screen::Ansi.new(@cmd,"\tsisu " + @cmd + ' ' + @mod.join(' ') + ' ' + @files.join(' ') + "\n").print_brown if @cmd =~/[vVM]/
- end
-# @files=@files.uniq
- @act=opt_act
- @files
- self
- end
- def set_files_and_paths_and_general_extract(s)
- c,w='',''
- m,f,pth,z,lng,lngs=[],[],[],[],[],[]
- a=s.split(/\s+/)
- r_l=Px[:lng_lst].join('|')
- a.uniq.each do |x|
- if x =~/^-[a-z0-5]+/i \
- or x =~/^--\S+/
- if x =~/^-([a-z0-5]+)/i
- c << $1
- end
- if x =~/^--\S+/
- m << x
- end
- elsif x =~ /(?:\.(?:(?:-|ssm\.)?sst(?:\.xml)?|ssm|ssi|sx[sdn]\.xml|s[1-3]|kdi|ssp)|\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip))$/
- if x =~/^(?:https?|file):\/\/\S+/ \
- and x =~/\S+?\.ss[mt]$/
- r_url=/(http:\/\/\S+?\/\S+?\/src(?:\/(?:#{r_l}))?)\//
- url_base = (x[r_url,1])
- url = x
- y=x.gsub(/http:\/\/\S+?\/\S+?\/src\//,'')
- t=/(#{r_l})\/[^\/]+?\.ss[tm]$/
- l_p = (y[t,1]) \
- ? y[t,1]
- : nil
- lng << l_p
- lngs << if l_p
- l_p
- elsif x =~/~(#{r_l})\.ss[tm]/
- $1
- else lng_base
- end
- r_f=/(?:#{r_l})\/([^\/]+?\.ss[tm])$/
- fn = (y[r_f,1]) \
- ? y[r_f,1]
- : y
- fn=fn.gsub(/\.((?:ssm\.)?sst)/,'.-\1')
- fullname=Dir.pwd + '/' + fn
- pt=Pathname.new(fullname)
- pth << Dir.pwd
- r_u=/.+?\/([^\/]+)(?:\/(?:#{r_l})$|$)/
- lng_is =if l_p
- l_p
- elsif x =~/~(#{r_l})\.ss[tm]/
- $1
- else lng_base
- end
- f_pths << {
- pth: pt.split[0].realpath.to_s,
- f: pt.split[1].to_s,
- pth_stub: pt.split[0].realpath.to_s[r_u,1],
- lng: (pt.split[0].realpath.to_s[t,1]) \
- ? pt.split[0].realpath.to_s[t,1]
- : nil,
- lng_is: lng_is,
- url_base: url_base,
- url: url
- }
- f << fn
- elsif x =~/^(?:https?|file):\/\/\S+/ \
- and x =~/\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip)/
- x=x.gsub(/^file:\/\//,'')
- f << x
- elsif FileTest.file?(x)
-### FIX
- pt=Pathname.new(x)
- pth << pt.split[0].realpath.to_s #remove?
- f << pt.split[1].to_s #remove?
- r_u=/.+?\/([^\/]+)(?:\/(?:#{r_l})$|$)/
- t=/.+\/(#{r_l})$/
- l_p = (pt.split[0].realpath.to_s[t,1]) \
- ? pt.split[0].realpath.to_s[t,1]
- : nil
- lng << l_p
- lngs << if l_p
- l_p
- elsif x =~/~(#{r_l})\.ss[tm]/
- $1
- else lng_base
- end
- lng_is =if l_p
- l_p
- elsif x =~/~(#{r_l})\.ss[tm]/
- $1
- else lng_base
- end
- f_pths << {
- pth: pt.split[0].realpath.to_s,
- f: pt.split[1].to_s,
- pth_stub: pt.split[0].realpath.to_s[r_u,1],
- lng: (pt.split[0].realpath.to_s[t,1]) \
- ? pt.split[0].realpath.to_s[t,1]
- : nil,
- lng_is: lng_is,
- url_base: nil,
- url: nil
- }
-# Dir.chdir(pt.split[0].realpath)
- else puts "file not found: #{x}"
- end
- elsif x =~ /\.termsheet\.rb$/
- if FileTest.file?(x); f << x
- else puts "file not found: #{x}"
- end
- else w=x
- puts "#{x} in #{a.join(' ')}?"
- end
- end
- { cmd: c, mod: m, what: w, paths: pth, files: f, f_pths: f_pths, lng: lng, lngs: lngs }
- end
- def expand_numeric_shortcuts(a)
- shortcut=SiSU_Env::InfoProcessingFlag.new
- s=''
- a.each do |x|
- y=case x
- when /0/
- (x=~/^-1\S+/) \
- ? x.gsub(/^-0(\S+)/,shortcut.cf_0 + ' -\1')
- : x.gsub(/^-0/,shortcut.cf_0 + ' ')
- when /1/
- (x=~/^-1\S+/) \
- ? x.gsub(/^-1(\S+)/,shortcut.cf_1 + ' -\1')
- : x.gsub(/^-1/,shortcut.cf_1 + ' ')
- when /2/
- (x=~/^-2\S+/) \
- ? x.gsub(/^-2(\S+)/,shortcut.cf_2 + ' -\1')
- : x.gsub(/^-2/,shortcut.cf_2 + ' ')
- when /3/
- (x=~/^-3\S+/) \
- ? x.gsub(/^-3(\S+)/,shortcut.cf_3 + ' -\1')
- : x.gsub(/^-3/,shortcut.cf_3 + ' ')
- when /4/
- (x=~/^-4\S+/) \
- ? x.gsub(/^-4(\S+)/,shortcut.cf_4 + ' -\1')
- : x.gsub(/^-4/,shortcut.cf_4 + ' ')
- when /5/
- (x=~/^-5\S+/) \
- ? x.gsub(/^-5(\S+)/,shortcut.cf_5 + ' -\1')
- : x.gsub(/^-5/,shortcut.cf_5 + ' ')
- when /6/
- (x=~/^-6\S+/) \
- ? x.gsub(/^-6(\S+)/,shortcut.cf_5 + ' -\1')
- : x.gsub(/^-6/,shortcut.cf_5 + ' ')
- else x
- end
- s << " #{y}" unless y.empty?
- end
- s.strip!
- end
- def opt_cmd_and_mod_adjust(c,m)
- cmd,mod,files=@cmd,@mod,@files
- unless m.empty?
- m.each do |m|
- case m
- when /^--(?:color-toggle)$/; c=c+'c'
- when /^--(?:configure)$/; c=c+'CC'
- when /^--(?:dal?|machine|abstraction|abs)$/; c=c+'m'
- when /^--(?:txt|text|plaintext)$/; c=c+'t'
- when /^--(?:html)$/; c=c+'h'
- when /^--(?:epub)$/; c=c+'e'
- when /^--(?:od[ft])$/; c=c+'o'
- when /^--(?:pdf)$/; c=c+'p'
- when /^--(?:concordance|wordmap)$/; c=c+'w'
- when /^--(?:manpage)$/; c=c+'i'
- when /^--(?:texinfo)$/; c=c+'I'
- when /^--(?:xhtml)$/; c=c+'b'
- when /^--(?:xml-sax)$/; c=c+'x'
- when /^--(?:xml-dom)$/; c=c+'X'
- when /^--(?:images)$/; c=c+'j'
- when /^--(?:hash-digests)$/; c=c+'N'
- when /^--(?:po4a|pot?)$/; c=c+'P'
- when /^--(?:termsheet)$/; c=c+'T'
- when /^--(?:manifest)$/; c=c+'y'
- when /^--(?:qrcode)$/; c=c+'Q'
- when /^--(?:sqlite)$/; c=c+'d'
- when /^--(?:pg|pg?sql|postgresql)$/; c=c+'D'
- when /^--(?:remote|rsync)$/; c=c+'R'
- when /^--(?:scp)$/; c=c+'r'
- when /^--(?:source)$/; c=c+'s'
- when /^--(?:sisupod|pod)$/; c=c+'S'
- when /^--(?:git)$/; c=c+'g'
- when /^--(?:urls)$/; c=c+'U'
- when /^--(?:zap|delete)$/; c=c+'Z'
- when /^--(?:sample-search-form)$/; c=c+'F'
- when /^--(?:webserv|webrick)$/; c=c+'W'
- when /^--(?:maintenance|keep-processing-files)$/; c=c+'M'
- when /^--(?:verbose[=-]3)$/; c=c+'VM'
- when /^--(?:verbose[=-]2|Verbose|VERBOSE)$/; c=c+'V'
- when /^--(?:verbose(?:[=-]1)?)$/; c=c+'v'
- when /^--(?:verbose[=-]0|quiet|silent)$/; c=c+'q'
- else mod << m #mod only contains command modifiers; commands converted to character
- end
- end
- end
- ca=[]
- unless c.empty?
- c=c.gsub(/-/,'')
- c.scan(/CC|\S/) {|x| ca << x}
- cmd= '-' + ca.uniq.join
- end
- extra=''
- if cmd !~/[mn]/
- extra+=if cmd =~/[abegHhIiNOoPpTtwXxyz]/ \
- and cmd !~/[mn]/
- 'm' #% add dal
- 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
- else ''
- end
- end
- if cmd !~/j/
- extra+=if cmd =~/[bHhwXxyz]/ \
- and cmd !~/[j]/
- 'j' #% copy images
- else ''
- end
- end
- if cmd !~/y/
- extra+=if cmd =~/[abeHhIiNopsSstwXxz]/ \
- and cmd !~/y/
- 'ym' #% add manifest
- elsif (cmd =~/[Dd]/ \
- or mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/) \
- and files[0] !~/^remove$/ \
- and cmd !~/y/
- 'ym' #% add manifest
- else ''
- end
- end
- cmd=cmd + extra
- cmds=cmd.scan(/CC|\S/)
- [cmds.uniq.join,mod]
- end
- def opt_act #note mod line commands have already been converted to command characters, cmd
- cmd,mod=@cmd,@mod
- act={}
- act[:license]=(cmd =~/L/ \
- || mod.inspect =~/"--license/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:site_init]=(cmd =~/C/ \
- || mod.inspect =~/"--init-site/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:rc]=if mod.inspect =~/"--rc=/
- x=Dir.pwd + '/' + mod.join.gsub(/--rc=/,'')
- { bool: true, set: :on, inst: x }
- else
- { bool: false, set: :na, inst: '' }
- end
- act[:dump]=if mod.inspect =~/"--dump=/
- base_pth=mod.join(';').gsub(/^.*--dump=['"]?(.+?)(?:['"]?;.+)?$/,'\1')
- { bool: true, set: :on, inst: base_pth }
- elsif mod.inspect =~/"--dump/
- { bool: true, set: :on, inst: @base_path }
- else
- { bool: false, set: :na, inst: nil }
- end
- act[:redirect]=if mod.inspect =~/"--redirect=/
- base_pth=mod.join(';').gsub(/^.*--redirect=['"]?(.+?)(?:['"]?;.+)?$/,'\1')
- { bool: true, set: :on, inst: base_pth }
- elsif mod.inspect =~/"--redirect/
- { bool: true, set: :on, inst: @base_path }
- else
- { bool: false, set: :na, inst: nil }
- end
- act[:verbose]=(cmd =~/v/ \
- || mod.inspect =~/"--verbose"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:quiet]=(cmd =~/q/ \
- || mod.inspect =~/"--quiet"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:color_state]=if mod.inspect =~/"--color-on"|"--color"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--color-off"/
- { bool: false, set: :off }
- else { bool: true, set: :na } #fix default color
- end
-# act[:color_toggle]=if cmd =~/c/ \
-# or mod.inspect =~/"--color-toggle"/
-# true
-# else false
-# end
- act[:maintenance]=(cmd =~/M/ \
- || mod.inspect =~/"--maintenance|--keep-processing-files"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:switch]=if mod.inspect =~/"--switch-off=/
- off_list=mod.join(';').gsub(/^.*--switch-off=['"]?(.+?)(?:['"];.+)?$/,'\1')
- off_list=off_list.scan(/[^,;\s]+/)
- { bool: false, set: :off, off: off_list}
- else { bool: true, set: :na, off: [] }
- end
- act[:ocn]=
- if mod.inspect =~/"--inc-ocn"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-ocn"/ \
- || act[:switch][:off].inspect =~/"ocn"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:toc]=if mod.inspect =~/"--inc-toc"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-toc"/ \
- || act[:switch][:off].inspect =~/"toc"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:minitoc]=if mod.inspect =~/"--inc-minitoc"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-minitoc"/ \
- || act[:switch][:off].inspect =~/"minitoc"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:manifest]=if mod.inspect =~/"--inc-manifest"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-manifest"/ \
- || act[:switch][:off].inspect =~/"manifest"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:links_to_manifest]=if mod.inspect =~/"--inc-links-to-manifest"|"--inc-manifest-links"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-links-to-manifest"|"--(?:exc|no)-manifest-links"/ \
- || act[:switch][:off].inspect =~/"links_to_manifest"|"manifest_links"/ \
- || mod.inspect =~/"--(?:redirect|dump)/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:manifest_minitoc]=if mod.inspect =~/"--inc-manifest-minitoc"|"--inc-minitoc"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-manifest-minitoc"|"--(?:exc|no)-minitoc"/ \
- || act[:switch][:off].inspect =~/"manifest_minitoc"|"minitoc"/
- #|| mod.inspect =~/"--(?:redirect|dump)/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:metadata]=if mod.inspect =~/"--inc-metadata"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-metadata"/ \
- || act[:switch][:off].inspect =~/"metadata"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:html_minitoc]=if mod.inspect =~/"--inc-html-minitoc"|"--inc-minitoc"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-html-minitoc"|"--(?:exc|no)-minitoc"/ \
- || act[:switch][:off].inspect =~/"html_minitoc"|"minitoc"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:html_navigation]=if mod.inspect =~/"--inc-html-navigation"|"--inc-navigation"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-html-navigation"|"--(?:exc|no)-navigation"/ \
- || act[:switch][:off].inspect =~/"html_navigation"|"nav"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:html_navigation_bar]=if mod.inspect =~/"--inc-html-navigation-bar"|"--inc-navigation-bar"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-html-navigation-bar"|"--(?:exc|no)-navigation-bar"/ \
- || act[:switch][:off].inspect =~/"html_navigation_bar"|"navbar"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:segsubtoc]=if mod.inspect =~/"--inc-segsubtoc"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-segsubtoc"/ \
- || act[:switch][:off].inspect =~/"segsubtoc"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:search_form]=if mod.inspect =~/"--inc-search-form"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-search-form"/ \
- || act[:switch][:off].inspect =~/"search_form"|"search"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:html_search_form]=if mod.inspect =~/"--inc-html-search-form"|"--inc-search-form"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-html-search-form"|"--(?:exc|no)-search-form"/ \
- || act[:switch][:off].inspect =~/"html_search_form"|"search_form"|"search"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:html_right_pane]=if mod.inspect =~/"--inc-html-right-pane"|"--inc-right-pane"|"--inc-html-right-column"|"--inc-right-column"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-html-right-pane"|"--(?:exc|no)-right-pane"|"--(?:exc|no)-html-right-column"|"--(?:exc|no)-right-column"/ \
- || act[:switch][:off].inspect =~/"html_right_pane"|"html_right_column"|"promo"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:html_top_band]=if mod.inspect =~/"--inc-html-top-band"|"--inc-top-band"/
- { bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-html-top-band"|"--(?:exc|no)-top-band"/ \
- || act[:switch][:off].inspect =~/"html-top-band"|"top-band"/
- { bool: false, set: :off }
- else { bool: true, set: :na }
- end
- act[:dal]=(cmd =~/m/ \
- || mod.inspect =~/"--dal"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:html]=(cmd =~/h/ \
- || mod.inspect =~/"--html"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:concordance]=(cmd =~/w/ \
- || mod.inspect =~/"--concordance"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:images]=(cmd =~/j/ \
- || mod.inspect =~/"--images"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:pdf]=(cmd =~/p/ \
- || mod.inspect =~/"--pdf"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:epub]=(cmd =~/e/ \
- || mod.inspect =~/"--epub"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:odt]=(cmd =~/o/ \
- || mod.inspect =~/"--odf"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:xml_sax]=(cmd =~/x/ \
- || mod.inspect =~/"--xml-sax"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:xml_dom]=(cmd =~/X/ \
- || mod.inspect =~/"--xml-dom"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:xhtml]=(cmd =~/b/ \
- || mod.inspect =~/"--xhtml"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:txt]=(cmd =~/[at]/ \
- || mod.inspect =~/"--txt"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:manpage]=(cmd =~/i/ \
- || mod.inspect =~/"--manpage"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:texinfo]=(cmd =~/I/ \
- || 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 }
- : { bool: false, set: :na }
- act[:sqlite]=(cmd =~/d/ \
- || mod.inspect =~/"--sqlite"/) \
- && (mod.inspect =~/"--createdb"|"--create"|"--recreate"|"--dropall"|"--recreate"|"--import"|"--update"|"--remove"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:sqlite_discreet]=(cmd =~/d/ \
- || mod.inspect =~/"--sql"|"--sqlite"/) \
- && (mod.inspect =~/"--both"/ \
- || mod.inspect !~/"--createdb"|"--create"|"--recreate"|"--dropall"|"--recreate"|"--import"|"--update"|"--remove"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:harvest]=(mod.inspect =~/"--harvest"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:po4a]=(cmd =~/P/ \
- || mod.inspect =~/"--po4a"|"--pot?"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:git]=(cmd =~/g/ \
- || mod.inspect =~/"--git"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:hash_digests]=(cmd =~/N/ \
- || mod.inspect =~/"--hash-digests"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:sample_search_form]=(cmd =~/F/ \
- || mod.inspect =~/"--sample-search-form"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:webrick]=(cmd =~/W/ \
- || mod.inspect =~/"--webrick"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:share_source]=(cmd =~/s/ \
- || mod.inspect =~/"--source"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:sisupod]=(cmd =~/S/ \
- || mod.inspect =~/"--sisupod"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:scp]=(cmd =~/r/ \
- || mod.inspect =~/"--scp"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:rsync]=(cmd =~/R/ \
- || mod.inspect =~/"--rsync"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:delete_output]=(cmd =~/z/ \
- || mod.inspect =~/"--delete"|"--zap"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:urls_all]=(cmd =~/U/ \
- || mod.inspect =~/"--urls-all"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:urls_seleted]=(cmd =~/u/ \
- || mod.inspect =~/"--urls"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:sitemap]=(cmd =~/Y/ \
- || mod.inspect =~/"--sitemap"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:qrcode]=(cmd =~/Q/ \
- || mod.inspect =~/"--qrcode"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:manifest]=(cmd =~/y/ \
- || mod.inspect =~/"--manifest"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- act[:help]=(mod.inspect =~/"--help/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
- @act=act
- end
- def cmd
- @cmd
- end
- def mod
- @mod
- end
- def act
- @act
- end
- def f_pth
- @f_pth
- end
- def pth
- @pth
- end
- def sub_location
- pth.gsub(/#{base_path}/,'')
- end
- def lng
- @lng
- end
- def lng_base
- @lng_base
- end
- def fns
- @fns
- end
- def what
- @what
- end
- def fnb
- unless fns.empty?
- fns[/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/,1]
- end
- end
- def fnc
- @fnc=if @fns =~/\.(?:ssm\.sst|ssm)$/; fnb + '.ssm.sst'
- else @fns
- end
- end
- def fncb
- @fncb=if @fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; fnb + '.ssm.sst'
- else @fns.gsub(/(?:\~\S{2,3})?(\.sst)$/,'\1')
- end
- end
- end
-end
-__END__
-note usually named @opt
-is carried in Param usually as @md
-@opt is a subset of @md
-where @md is passed, contents of @opt are available
-passing @opt as well is duplication
-check for fns & fnb
diff --git a/lib/sisu/v3dv/param.rb b/lib/sisu/v3dv/param.rb
deleted file mode 100644
index 5563f780..00000000
--- a/lib/sisu/v3dv/param.rb
+++ /dev/null
@@ -1,1623 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: parameters extracted from input file(s) for program use
-
-=end
-module SiSU_Param
- require 'uri'
- require 'pstore'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'param_identify_markup' # param_identify_markup.rb
- require_relative 'help' # help.rb
- include SiSU_Help
- @@date=SiSU_Env::InfoDate.new
- @@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=nil
- @doc={ initialise: nil, markup: '', lnks: '', stmp: '', req: {} }
- @@yaml=@@yamladdr=nil
- @@trigger=nil
- @@lv,@@flag={},{}
- @@tex_backslash="\\\\"
- class Parameters
- @@publisher='SiSU scribe'
- @@md=@@fns=@@pth=nil
- def initialize(opt)
- @opt=opt
- @cX||=SiSU_Screen::Ansi.new(opt.cmd)
- @cmd,@mod=opt.cmd,opt.mod
- @fns=if @opt.cmd =~/P/ #revisit CHECK
- opt.fns
- else opt.fns.gsub(/\.ssm$/,'.ssm.sst')
- end
- SiSU_Param::Instantiate.new.param_instantiate
- @env=SiSU_Env::InfoEnv.new(@fns)
- @pstorefile="#{@env.processing_path.dal}/#{@fns}.pstore"
- end
- def get
- if @opt.f_pth \
- and @opt.f_pth[:pth] != Dir.pwd #BUG check
- # you may need to change Dir.pwd to @opt.f_pth[:pth] where the latter
- # has a path value that is different, however, f_pth is not always set!
- p '-- bug alert -- '
- p __FILE__ + ':' + __LINE__.to_s
- p 'f_pth ' + @opt.f_pth[:pth]
- p 'pwd ' + Dir.pwd
- end
- if @@fns !=@fns \
- or @@pth !=Dir.pwd #@opt.f_pth[:pth]
- @@fns,@@pth=@fns,Dir.pwd #@opt.f_pth[:pth]
- @@md=nil
- end
- if @@md.nil? \
- or @opt.cmd =~/M/ #not particularly helpful, as current cycle is through output types, with files changing, only helpful if deal with a file all output types before going to next file
- if File.exist?(@pstorefile)
- param_msg='Parameters from pstore'
- store=PStore.new(@pstorefile)
- store.transaction do
- @md=store['md']
- end
- @md
- else
- param_msg='Parameters extracted'
- fns_array=@env.read_source_file(@opt.fns)
- md=SiSU_Param::Parameters::Instructions.new(fns_array,@opt)
- @md=SiSU_Param::Parameters::Instructions.new(fns_array,@opt).extract
- @md
- end
- if defined? @md.title.main # on removal check problems with -U
- SiSU_Screen::Ansi.new(@opt.cmd,param_msg,@md.title.main).txt_grey if @opt.cmd =~/[MVv]/
- end
- @@md=@md
- else @@md
- end
- @@md.opt=@opt
- @@md
- end
- class MdDefault
- def rights(author,date)
- @author,@date=author,date
- def all
- s=nil
- if @author
- s ||=((@date =~/((?:1[4-9]|2[01])\d{2})/ ) \
- ? ("Copyright (C) #{$1} #{@author}")
- : ('Copyright (C)' + @author)) #matches years 1400 through 21\d\d
- end
- s
- end
- def text
- all
- end
- def copyright
- def all
- s=nil
- if @author
- s ||=((@date =~/((?:1[4-9]|2[01])\d{2})/ ) \
- ? ("Copyright (C) #{$1} #{@author}")
- : ('Copyright (C)' + @author)) #matches years 1400 through 21\d\d
- end
- s
- end
- def text
- all
- end
- self
- end
- self
- end
- end
- class Md
- def initialize(str,opt,env)
- @s,@opt,@env=str,opt,env
- end
- def validate_length(s,l,n)
- #s=(s.length <= l) ? s : nil
- s=if s.class==String \
- and s.length <= l
- s
- elsif s.class==NilClass; nil
- elsif s.class !=String
- puts "#{n} is #{s.class}: programming error, String expected #{__FILE__}:#{__LINE__}"
- s
- else
- SiSU_Screen::Ansi.new('v',"#{n} length #{s.length} exceeds set db field length #{l}, metadata dropped",@opt.fns).warn unless @opt.cmd =~/q/
- nil
- end
- end
- def name_format(name)
- if name
- name=name.strip
- @name_a_h=[]
- authors=name.scan(/[^;]+/)
- authors.each_with_index do |a,i|
- b=((a =~/\s*\|\s*/) ? (a.split(/\|/)) : [a])
- if b[0] =~/"(.+?)"/
- @name_a_h << { the: $1 }
- else
- x=b[0].scan(/[^,]+/)
- if x.length==1
- @name_a_h << { the: x[0].strip }
- elsif x.length==2
- @name_a_h << { the: x[0].strip, others: x[1].strip }
- else #p x.length
- end
- end
- b.delete_at(0)
- b.each do |d|
- k,c=nil
- k,c=/^(\S+)\s+(.*)/.match(d)[1,2] if d
- @name_a_h[i][:hon]=c.strip if k=='hon'
- @name_a_h[i][:affiliation]=c.strip if k=='affiliation'
- @name_a_h[i][:nationality]=c.strip if k=='nationality'
- end
- end
- l=@name_a_h.length
- name_str=''
- @name_a_h.each_with_index do |a,i|
- name_str += if a[:others]
- z=(((l - i) > 1) ? ', ' : '')
- "#{a[:others].strip} #{a[:the].strip}" + z
- else
- z=(((l - i) > 2) ? ', ' : '')
- "#{a[:the].strip}" + z
- end
- end
- { name_a_h: @name_a_h, name_str: name_str }
- else nil
- end
- end
- def build_hash(arr)
- @h={}
- arr.each_with_index do |x,i|
- a,b=nil,nil
- if x =~/^%\s/ #ignore comment
- elsif x =~/:(\S+?):\s+(.+)/
- a,b=/:(\S+?):\s+(.+)\Z/m.match(x)[1,2]
- elsif i == 0
- a='main'
- b=x
- else
- end
- @h[a]=b
- end
- @h
- end
- def title
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def main
- s=@h['main']
- l,n=Db[:col_title_part],'title.main'
- validate_length(s,l,n)
- end
- def sub
- s=@h['subtitle']
- l,n=Db[:col_title_part],'title.subtitle'
- validate_length(s,l,n)
- end
- def edition
- s=@h['edition']
- l,n=Db[:col_title_edition],'title.edition'
- validate_length(s,l,n)
- end
- def note
- s=@h['note']
- l,n=Db[:col_info_note],'title.note'
- validate_length(s,l,n)
- end
- def short
- s=@h['short'] \
- ? @h['short']
- : @h['main']
- l,n=Db[:col_title_part],'title.short'
- validate_length(s,l,n)
- end
- def full
- s=@h['subtitle'] \
- ? (@h['main'] + ' - ' + @h['subtitle'])
- : @h['main']
- l,n=Db[:col_title],'title.full'
- validate_length(s,l,n)
- end
- def language
- s=@h['language']
- l,n=Db[:col_language],'title.language'
- validate_length(s,l,n)
- end
- def language_char # look into, this must be set, from 1 directory stub (.fi), 2 filename (~fi), [3 (not used) document header (@title:\n :language_char: fi)]
- s=@h['language_char']
- l,n=Db[:col_language_char],'title.language_char'
- validate_length(s,l,n)
- end
- self
- end
- def creator #there are sub categories that need to be catered for and sometimes more than one author etc.; implement array.to_s.length validation test later, current test on string approximate as string is not used
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def author
- @h['author']=(@h['author'] \
- ? @h['author']
- : @h['main'])
- names=name_format(@h['author'])
- s=names[:name_str]
- l,n=Db[:col_name],'creator.author'
- validate_length(s,l,n)
- end
- def author_detail
- s=@h['author'] \
- ? @h['author']
- : @h['main']
- names=name_format(s)
- names[:name_a_h]
- end
- def editor
- names=@h['editor'] \
- ? name_format(@h['editor'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.editor'
- validate_length(s,l,n)
- else nil
- end
- end
- def editor_detail
- names=@h['editor'] \
- ? name_format(@h['editor'])
- : nil
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- def contributor
- names=@h['contributor'] \
- ? name_format(@h['contributor'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.author'
- validate_length(s,l,n)
- else nil
- end
- end
- def contributor_detail
- names=@h['contributor'] \
- ? name_format(@h['contributor'])
- : nil
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- def illustrator
- names=@h['illustrator'] \
- ? name_format(@h['illustrator'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.illustrator'
- validate_length(s,l,n)
- else nil
- end
- end
- def illustrator_detail
- names=@h['illustrator'] \
- ? name_format(@h['illustrator'])
- : nil
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- def photographer
- names=@h['photographer'] \
- ? name_format(@h['photographer'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.photographer'
- validate_length(s,l,n)
- else nil
- end
- end
- def photographer_detail
- names=@h['photographer'] \
- ? name_format(@h['photographer'])
- : nil
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- def translator
- names=@h['translator'] \
- ? name_format(@h['translator'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.translator'
- validate_length(s,l,n)
- else nil
- end
- end
- def translator_detail
- names=@h['translator'] \
- ? name_format(@h['translator'])
- : nil
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- def audio
- names=@h['audio'] \
- ? name_format(@h['audio'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.audio'
- validate_length(s,l,n)
- else nil
- end
- end
- def audio_detail
- names=@h['audio'] \
- ? name_format(@h['audio'])
- : nil
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- def digitized_by
- names=@h['digitized_by'] \
- ? name_format(@h['digitized_by'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.digitized_by'
- validate_length(s,l,n)
- else nil
- end
- end
- def digitized_by_detail
- names=@h['digitized_by'] \
- ? name_format(@h['digitized_by'])
- : nil
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- def prepared_by
- names=@h['prepared_by'] \
- ? name_format(@h['prepared_by'])
- : nil
- s=(names.class==Hash) \
- ? names[:name_str]
- : nil
- s=if s
- l,n=Db[:col_name],'creator.prepared_by'
- validate_length(s,l,n)
- else nil
- end
- end
- def prepared_by_detail
- names=@h['prepared_by'] \
- ? name_format(@h['prepared_by'])
- : nil
- names=name_format(@h['prepared_by'])
- (names.class==Hash) \
- ? names[:name_a_h]
- : nil
- end
- self
- end
- def rights
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def copyright
- def text #you may wish to expand to take from all
- s=if @h['copyright']
- @h['copyright']
- elsif @h['text']
- @h['text']
- elsif @h['main']
- @h['main']
- else
- SiSU_Screen::Ansi.new(@opt.cmd,'WARNING Document Copyright missing; provide @rights: :copyright:').warn unless @opt.cmd =~/q/
- ''
- end
- l,n=Db[:col_info_note],'rights.copyright.text'
- validate_length(s,l,n)
- end
- def translation
- s=@h['translation'] \
- ? @h['translation']
- : nil
- l,n=Db[:col_info_note],'rights.copyright.translation'
- validate_length(s,l,n)
- end
- def illustrations
- s=@h['illustrations'] \
- ? @h['illustrations']
- : nil
- l,n=Db[:col_info_note],'rights.copyright.illustrations'
- validate_length(s,l,n)
- end
- def photographs
- s=@h['photographs'] \
- ? @h['photographs']
- : nil
- l,n=Db[:col_info_note],'rights.copyright.photographs'
- validate_length(s,l,n)
- end
- def digitization
- s=@h['digitization'] \
- ? @h['digitization']
- : nil
- l,n=Db[:col_info_note],'rights.copyright.digitization'
- validate_length(s,l,n)
- end
- def audio
- s=@h['audio'] \
- ? @h['audio']
- : nil
- l,n=Db[:col_info_note],'rights.copyright.audio'
- validate_length(s,l,n)
- end
- self
- end
- def license
- s=@h['license'] \
- ? @h['license']
- : nil
- l,n=Db[:col_info_note],'rights.license'
- validate_length(s,l,n)
- end
- def sep(str)
- (str =~/https?:\/\/\S+$/) ? ' ;' : ';'
- end
- def all
- s=if @h['all']; @h['all']
- else
- s=''
- if defined? copyright.text \
- and copyright.text \
- and not copyright.text.empty?
- v=sep(copyright.text)
- s +=copyright.text + v
- end
- if defined? copyright.translation \
- and copyright.translation \
- and not copyright.translation.empty?
- v=sep(copyright.translation)
- s +='<br> translation ' + copyright.translation + v
- end
- if defined? copyright.illustrations \
- and copyright.illustrations \
- and not copyright.illustrations.empty?
- v=sep(copyright.illustrations)
- s +='<br> illustrations ' + copyright.illustrations + v
- end
- if defined? copyright.photographs \
- and copyright.photographs \
- and not copyright.photographs.empty?
- v=sep(copyright.photographs)
- s +='<br> photographs ' + copyright.photographs + v
- end
- if defined? copyright.digitization \
- and copyright.digitization \
- and not copyright.digitization.empty?
- v=sep(copyright.digitization)
- s +='<br> digitization ' + copyright.digitization + v
- end
- if defined? copyright.audio \
- and copyright.audio \
- and not copyright.audio.empty?
- v=sep(copyright.audio)
- s +='<br> audio ' + copyright.audio + v
- end
- if defined? copyright.license \
- and copyright.license \
- and not copyright.license.empty?
- s +='<br> License: ' + copyright.license
- end
- if s.empty?
- SiSU_Screen::Ansi.new(@opt.cmd,'WARNING Document Rights information missing; provide @rights: :copyright:').warn unless @opt.cmd =~/q/
- else
- l,n=Db[:col_info_note],'rights.all'
- validate_length(s,l,n)
- end
- s
- end
- s
- end
- self
- end
- def classify
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def coverage
- s=@h['coverage']
- l,n=Db[:col_classify_short],'classify.coverage'
- validate_length(s,l,n)
- end
- def relation
- s=@h['relation']
- l,n=Db[:col_classify_short],'classify.short'
- validate_length(s,l,n)
- end
- def subject
- s=@h['subject']
- l,n=Db[:col_classify_txt_short],'classify.subject'
- validate_length(s,l,n)
- end
- def topic_register
- s=@h['topic_register']
- l,n=Db[:col_info_note],'classify.topic_register'
- validate_length(s,l,n)
- end
- def type
- s=@h['type']
- l,n=Db[:col_classify_txt_short],'classify.type'
- validate_length(s,l,n)
- end
- def identifier
- s=@h['identifier']
- l,n=Db[:col_classify_identify],'classify.identifier'
- validate_length(s,l,n)
- end
- def loc
- s=@h['loc']
- l,n=Db[:col_classify_library],'classify.loc'
- validate_length(s,l,n)
- end
- def dewey
- s=@h['dewey']
- l,n=Db[:col_classify_library],'classify.dewey'
- validate_length(s,l,n)
- end
- def oclc
- s=@h['oclc']
- l,n=Db[:col_classify_library],'classify.oclc'
- validate_length(s,l,n)
- end
- def pg
- s=@h['pg']
- l,n=Db[:col_classify_small],'classify.pg'
- validate_length(s,l,n)
- end
- def isbn
- s=@h['isbn']
- l,n=Db[:col_classify_small],'classify.isbn'
- validate_length(s,l,n)
- end
- self
- end
- def publisher
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- s=@h['main']
- l,n=Db[:col_name],'publisher'
- validate_length(s,l,n)
- end
- def date
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def added_to_site
- s=@h['added_to_site']
- l,n=Db[:col_date_text],'date.added_to_site'
- validate_length(s,l,n)
- end
- def available
- s=@h['available']
- l,n=Db[:col_date_text],'date.available'
- validate_length(s,l,n)
- end
- def created
- s=@h['created']
- l,n=Db[:col_date_text],'date.created'
- validate_length(s,l,n)
- end
- def issued
- s=@h['issued']
- l,n=Db[:col_date_text],'date.issued'
- validate_length(s,l,n)
- end
- def modified
- s=@h['modified']
- l,n=Db[:col_date_text],'date.modified'
- validate_length(s,l,n)
- end
- def published
- s=@h['published']=(@h['published'] ? @h['published'] : @h['main'])
- l,n=Db[:col_date_text],'date.published'
- validate_length(s,l,n)
- end
- def valid
- s=@h['valid']
- l,n=Db[:col_date_text],'date.valid'
- validate_length(s,l,n)
- end
- self
- end
- #def language # as things stand this should really be populated from title.language and original.language, resolve
- # a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- # @h=build_hash(a)
- # def document
- # s=@h['document']=(@h['document'] ? @h['document'] : @h['main'])
- # l,n=Db[:col_language],'language.document'
- # validate_length(s,l,n)
- # end
- # def document_char
- # s=@h['document_char']=(@h['document_char'] ? @h['document_char'] : nil)
- # l,n=Db[:col_language_char],'language.document_char'
- # validate_length(s,l,n)
- # end
- # def original
- # s=@h['original']
- # l,n=Db[:col_language],'language.original'
- # validate_length(s,l,n)
- # end
- # def original_char
- # s=@h['original_char']
- # l,n=Db[:col_language_char],'language.original_char'
- # validate_length(s,l,n)
- # end
- # self
- #end
- def make
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def headings
- lv=[]
- x=@h['headings']
- x=((x =~/;/) ? (x.split(/;\s*/)) : [ x ])
- lv[0]=x
- lv1=x[0] ||='1~ ' #some arbitrary changes made
- lv[1]=/^#{lv1}/
- lv2=x[1] ||='2~ '
- lv[2]=/^#{lv2}/
- lv3=x[2] ||='3~ '
- lv[3]=/^#{lv3}/
- lv4=x[3] ||='4~ '
- lv[4]=/^#{lv4}/
- lv5=x[4] ||='5~ '
- lv[5]=/^#{lv5}/
- lv6=x[5] ||='6~ '
- lv[6]=/^#{lv6}/
- lv
- end
- def num_top
- @h['num_top']
- end
- def breaks
- pagebreaks=((@h['breaks'] =~/;/) \
- ? (@h['breaks'].split(/;\s*/))
- : [ @h['breaks'] ])
- page_new,page_break=nil,nil
- pagebreaks.each do |x|
- page_new=x[/(:?[\dA-C],?)+/] if x=~/new|clear/
- page_break=x[/(:?[\dA-C],?)+/] if x =~/break/
- end
- { page_new: page_new, page_break: page_break }
- end
- def language
- l=if @h['language'] && (@h['language']=~/\S{2,}/)
- ((@h['language'] =~/,/) \
- ? (@h['language'].split(/,\s*/))
- : [ @h['language'] ])
- else [ 'en' ]
- end
- end
- def bold
- m=@h['bold']
- i=(m=~/\/i$/)? 'i' : ''
- z=if m
- x=m.gsub(/^\/(.+?)\/i?/,'\1').
- gsub(/\((?:\?:)?/,'(?:') # avoid need to escape use of brackets within regex provided
- rgx='\b(' + x + ')\b'
- y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
- { str: '\b(?:' + x + ')\b', regx: y, i: i }
- else nil
- end
- end
- def italics
- m=@h['italics']
- i=((m=~/\/i$/) ? 'i' : '')
- z=if m
- x=m.gsub(/^\/(.+?)\/i?/,'\1').
- gsub(/\((?:\?:)?/,'(?:') # avoid need to escape use of brackets within regex provided
- rgx='\b(' + x + ')\b'
- y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
- { str: '\b(?:' + x + ')\b', regx: y, i: i }
- else nil
- end
- end
- def emphasis
- if @h['emphasis'] =~/bold/; 'bold'
- elsif @h['emphasis'] =~/italics?/; 'italics'
- elsif @h['emphasis'] =~/under(?:line|score)/; 'underscore'
- else nil
- end
- end
- def plaintext_wrap
- if @h['plaintext_wrap'].to_s =~/\d\d+/ \
- and @h['plaintext_wrap'].to_i > 19 \
- and @h['plaintext_wrap'].to_i < 201
- @h['plaintext_wrap'].to_i
- else nil
- end
- end
- def omit
- m=@h['omit']
- @m=m ? (m.split(/,\s+/)) : nil
- def list
- @m
- end
- self
- end
- def ocn?
- (omit.list.inspect =~/"ocn"/) \
- ? :off
- : :na
- end
- def toc?
- (omit.list.inspect =~/"toc"/) \
- ? :off
- : :na
- end
- def manifest?
- (omit.list.inspect =~/"manifest"/) \
- ? :off
- : :na
- end
- def links_to_manifest?
- (omit.list.inspect =~/"manifest_links"|"links_to_manifest"/) \
- ? :off
- : :na
- end
- def metadata?
- (omit.list.inspect =~/"metadata"/) \
- ? :off
- : :na
- end
- def minitoc?
- (omit.list.inspect =~/"minitoc"/) \
- ? :off
- : :na
- end
- def html_minitoc?
- (omit.list.inspect =~/"html_minitoc"/) \
- ? :off
- : :na
- end
- def html_top_band?
- (omit.list.inspect =~/"html_top_band"/) \
- ? :off
- : :na
- end
- def html_navigation?
- (omit.list.inspect =~/"html_navigation"/) \
- ? :off
- : :na
- end
- def html_navigation_bar?
- (omit.list.inspect =~/"html_navigation_bar"/) \
- ? :off
- : :na
- end
- def segsubtoc?
- (omit.list.inspect =~/"segsubtoc"/) \
- ? :off
- : :na
- end
- def search_form?
- (omit.list.inspect =~/"search_form"/) \
- ? :off
- : :na
- end
- def html_search_form?
- (omit.list.inspect =~/"html_search_form"/) \
- ? :off
- : :na
- end
- def html_right_pane?
- (omit.list.inspect =~/"html_right_column"|"html_right_pane"/) \
- ? :off
- : :na
- end
- def manifest_minitoc?
- (omit.list.inspect =~/"manifest_minitoc"/) \
- ? :off
- : :na
- end
- def texpdf_font
- def main
- @h['texpdf_font'] \
- && (@h['texpdf_font']=~/\S{3,}/) \
- ? @h['texpdf_font']
- : @env.font.texpdf.main
- end
- def sans # not used
- @h['texpdf_font_sans'] \
- && (@h['texpdf_font_sans']=~/\S{3,}/) \
- ? @h['texpdf_font_sans']
- : @env.font.texpdf.sans
- end
- def serif # not used
- @h['texpdf_font_serif'] \
- && (@h['texpdf_font_serif']=~/\S{3,}/) \
- ? @h['texpdf_font_serif']
- : @env.font.texpdf.serif
- end
- def mono
- @h['texpdf_font_mono'] \
- && (@h['texpdf_font_mono']=~/\S{3,}/) \
- ? @h['texpdf_font_mono']
- : @env.font.texpdf.mono
- end
- self
- end
- def skin
- @h['skin']
- end
- def promo
- @h['promo']
- end
- def ad
- @h['ad']
- end
- def manpage
- manpage={}
- if @h['manpage']
- if @h['manpage'] =~/;/m
- man=@h['manpage'].split(/;/m)
- man.each do |x|
- m=(x=~/=/m) ? x.split(/=/m) : nil
- if m
- manpage[m[0].strip] = m[1].split(/ \. /)
- end
- end
- end
- end
- if manpage['name']
- manpage['name']=manpage['name'].join("\n.br\n").
- gsub(/(-)/m,"\\\\\\1").
- gsub(/\A/,"\n.br\n.SH NAME\n.br\n")
- else
- manpage['name']='man page "name/whatis" information not provided, set in header @man: name=[whatis information]'
- end
- if manpage['synopsis']
- manpage['synopsis']=manpage['synopsis'].join("\n\n.br\n").
- gsub(/(-)/m,"\\\\\\1").
- gsub(/\A/,"\n.br\n.SH SYNOPSIS\n.br\n")
- else
- manpage['synopsis']=''
- end
- unless manpage['section']
- manpage['section']=1
- end
- manpage
- end
- self
- end
- def current_publisher
- @s
- end
- def original
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def publisher
- s=@h['publisher']
- l,n=Db[:col_name],'original.publisher'
- validate_length(s,l,n)
- end
- def language
- s=@h['language']
- l,n=Db[:col_language],'original.language'
- validate_length(s,l,n)
- end
- def language_char
- s=@h['language_char']
- l,n=Db[:col_language_char],'original.language_char'
- validate_length(s,l,n)
- end
- def source
- s=@h['source']
- l,n=Db[:col_name],'original.source'
- validate_length(s,l,n)
- end
- def institution
- s=@h['institution']
- l,n=Db[:col_name],'original.institution'
- validate_length(s,l,n)
- end
- def nationality
- s=@h['nationality']
- l,n=Db[:col_language],'original.nationality'
- validate_length(s,l,n)
- end
- self
- end
- def links
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- a
- end
- def notes
- a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
- @h=build_hash(a)
- def abstract
- @h['abstract']
- end
- def comment
- @h['comment']
- end
- def description
- @h['description']
- end
- def history
- @h['history']
- end
- def prefix
- @h['prefix']
- end
- self
- end
- end
- class Instructions
- @doc={ lv: [] }
- @doc[:fns],@doc[:fnb],@doc[:scr_suffix]='','',''
- @@publisher='SiSU scribe'
- attr_accessor :make,:env,:path,:file,:fn,:fns,:fnb,:fnn,:fnt,:fnl,:flv,:fnz,:fnstex,:ocn,:sfx_src,:pdf,:file_type,:dir_out,:dir_tex,:dir_lout,:txt_path,:site_skin,:sisu,:sisu_version,:ruby_version,:title,:subtitle,:full_title,:html_title,:subtitle_tex,:creator,:classify,:author_home,:author,:author_title,:author_nationality,:authors,:authorship,:translator,:illustrator,:prepared_by,:digitized_by,:subject,:description,:publisher,:current_publisher,:contributor,:date,:date_created,:date_issued,:date_available,:date_valid,:date_modified,:date_translated,:date_added_to_site,:date_scheme,:date_created_scheme,:date_issued_scheme,:date_available_scheme,:date_valid_scheme,:date_modified_scheme,:type,:format,:identifier,:source,:language,:language_original,:relation,:coverage,:rights,:keywords,:comments,:abstract,:cls_loc,:cls_dewey,:cls_pg,:cls_isbn,:papersize,:papersize_array,:toc,:lv1,:lv2,:lv3,:lv4,:lv5,:lv6,:lvs,:pagenew,:pagebreak,:num_top,:toc_lev_limit,:flag_endnotes,:flag_auto_endnotes,:flag_separate_endnotes,:flag_separate_endnotes_make,:markup,:markup_instruction,:markup_version,:markup_declared,:flag_tables,:vocabulary,:doc_skin,:doc_css,:yaml,:lnk,:links,:prefix_a,:prefix_b,:suffix,:information,:contact,:icon,:image,:ad_url,:ad_png,:ad_alt,:ad_began,:flag_promo,:promo,:ad_home,:stmp,:stmpd,:sc_filename,:sc_number,:sc_date,:sc_time,:sc_info,:yamladdr,:locale,:wc_lines,:wc_words,:wc_bytes,:file_encoding,:filesize,:user,:home,:hostname,:pwd,:firstseg,:programs,:author_copymark,:i18n,:lang,:lang_code_insert,:en,:notes,:dgst,:dgst_skin,:generated,:tags,:tag_array,:concord_make,:seg_names,:seg_autoname_safe,:set_header_title,:set_heading_top,:set_heading_seg,:heading_seg_first,:heading_seg_first_flag,:base_program,:ec,:opt,:sem_tag,:book_idx,:topic_register,:topic_register_array,:original,:writing_focus,:audio,:daisy
- def initialize(fns_array,opt)
- @env=@path,@file=@fn=@fns=@fnb=@fnn=@fnt=@fnl=@flv=@fnz=@fnstex=@ocn=@sfx_src=@pdf=@file_type=@dir_out=@dir_tex=@dir_lout=@txt_path=@make=@flag_endnotes=@flag_auto_endnotes=@flag_separate_endnotes=@flag_separate_endnotes_make=@site_skin=@sisu=@sisu_version=@ruby_version=@title=@subtitle=@full_title=@html_title=@subtitle_tex=@creator=@classify=@author_home=@author=@author_title=@author_nationality=@translator=@illustrator=@prepared_by=@digitized_by=@subject=@description=@publisher=@current_publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@date_translated=@date_added_to_site=@date_scheme=@date_created_scheme=@date_issued_scheme=@date_available_scheme=@date_valid_scheme=@date_modified_scheme=@type=@format=@identifier=@source=@language=@language_original=@relation=@coverage=@rights=@keywords=@comments=@abstract=@cls_loc=@cls_dewey=@cls_pg=@cls_isbn=@papersize=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@pagenew=@pagebreak=@num_top=@toc_lev_limit=@flag_tables=@vocabulary=@doc_skin=@doc_css=@yaml=@lnk=@links=@prefix_a=@prefix_b=@suffix=@information=@contact=@icon=@ad_url=@ad_png=@ad_alt=@ad_began=@promo=@ad_home=@stmp=@stmpd=@sc_filename=@sc_number=@sc_date=@sc_time=@sc_info=@yamladdr=@locale=@wc_lines=@wc_words=@wc_bytes=@file_encoding=@filesize=@firstseg=@programs=@author_copymark=@i18n=@lang=@lang_code_insert=@en=@notes=@dgst=@dgst_skin=@generated=@heading_seg_first=@base_program=@topic_register=@original=@writing_focus=@audio=nil
- @data,@path,@fns,@opt=fns_array,opt.pth,opt.fns,opt #@data used as data
- @flag_tables,@set_header_title,@set_heading_top,@set_heading_seg,@heading_seg_first_flag,@flag_promo,@book_idx=false,false,false,false,false,false,false
- @seg_autoname_safe=true
- @daisy,@sem_tag=false,false
- @authorship,@markup_instruction,@markup_declared,@image='','','','' #check which other values should be set to empty rather than nil
- @markup=@markup_instruction #use @markup_instruction
- @doc,@fn,@make_italic,@tag_hash,@ec={},{},{},{},{},{}
- @flv,@lang,@seg_names,@tags,@tag_array,@tag_a,@ec[:image],@ec[:audio],@ec[:multimedia]=Array.new(9){[]}
- @authors,@topic_register_array,@papersize_array=[],[],[]
- @lvs=[nil,0,0,0,0,0,0]
- @lang_code_insert=(@opt.dir_structure_by ==:language) \
- ? ''
- : ".#{@opt.lng}"
- @rgx_image=/(?:^|[^_\\])\{(?:\s*|\~\^\s+)(\S+?\.(?:png|jpg|gif)\b)/m
- @rgx_audio=/\{\s*(\S+?\.(?:mp3|ogg))/
- @rgx_mm=/\{\s*(\S+?\.(?:ogg|mpeg))/ #expand and distinguish ogg
- begin
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@fns).error
- ensure
- end
- end
- #protected
- def determine_papersize(l)
- l=case l
- when /eu|europe|uk/i; 'A4' #European default, SiSU default
- when /(?:us-)?legal|legal/i; 'US_legal' #U.S. alternative
- when /(?:us-)?letter|u.s.|us/i; 'US_letter' #U.S. default
- when /book_a5|a5/i; 'book_a5'
- when /book_b5|b5|book/i; 'book_b5' #book default - larger
- else 'A4'
- end
- end
- def extract
- @user,@home,@hostname,@pwd=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD']
- @programs,@wc,@language,@language_original={},{},{},{}
- @en={ sum: 0, mark: 0, note: 0, mismatch: 0 }
- @prog=SiSU_Env::InfoSettings.new
- @sys=SiSU_Env::SystemCall.new
- @env=SiSU_Env::InfoEnv.new(@fns) #watch
- puts 'system locale: ' + @sys.locale if @opt.cmd =~/[MV]/
- if @prog.wc \
- and @sys.wc
- wc=%x{wc #{fns}}
- wca=wc.scan(/\d+/)
- @wc_lines,@wc_words,@wc_bytes=wca[0].to_i,wca[1].to_i,wca[2].to_i
- else
- fns_a=@data.dup
- tmp=fns_a.join
- fns_a=tmp.scan(/\S+/)
- @wc_words=fns_a.length
- fns_a=tmp=nil
- end
- @concord_make=(@wc_words > @env.concord_max) ? false : true
- @locale=@sys.locale
- @file_encoding=@sys.file_encoding(fns,@opt.cmd)
- # programs set here for things that affect output appearance only
- @programs[:pdf]=SiSU_Env::SystemCall.new.program_found?('pdflatex')
- if @opt.cmd =~/P/ #if @env.multilingual?
- m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss
- @fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3]
- @flv=@env.document_language_versions_found[:f]
- else
- m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm)$/ #watch added match for sss
- @fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3]
- @flv=@env.document_language_versions_found[:f]
- @fnz=(@fns =~/\.(?:ssm\.sst|ssm)$/) ? (@fnn + '.ssm.txz') : (@fnn + '.sst.txz')
- end
- @papersize=@env.papersize #'A4' #default size #get first from SiSU_Env:: # @env is probably no longer most appropriate name! as default info is more general
- @sfx_src=@fns[m,2]
- if @fns =~ /(?:-|ssm\.)?sst$/ \
- and not @opt.cmd =~/P/ #watch
- @env_out_root=@env.path.output
- @dir_out="#{@env.path.output}/#{@fnb}"
- @dir_tex=@env.processing_path.tex
- @dir_lout=@env.processing_path.lout
- @@publisher='SiSU http://www.jus.uio.no/sisu'
- end
- @txt_path=@txt_path ||= @env.path.output
- @stmp=%{#{@fns}}[/^(.+?)\..*/m,1]
- @fnstex=@fns.gsub(/_/,'\_\-').gsub(/\./,'.\-')
- @flag_endnotes,@flag_auto_endnotes,@flag_separate_endnotes=false,false,false
- @flag_separate_endnotes_make=true
- regx_date=/^\d{4}(?:-(?:[0][0-9]|1[0-2])(-(?:[0-2][0-9]|3[01]))?)?$/
- ver=SiSU_Env::InfoVersion.instance
- @sisu_version=ver.get_version
- @ruby_version=ver.rbversion
- @generated=Time.now
- fns_array=@data.dup
- skip unless fns_array # consider
- @markup_version=SiSU_MarkupType::MarkupIdentify.new(fns_array,@opt).markup_version? #% determine markup version
- if fns_array[0] =~ /^(?:%\s+)?(?:SiSU\s+(?:master\s+)?[\d.]*|sisu-[\d.]+)$/ #check markup and markup version
- if fns_array[0] =~ /^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)(?:(?:[0-9]+?)(?:\.[0-9]+?)(?:\.[0-9]+))?$/ #check markup and markup version
- @markup_version_declared=fns_array[0].match(/^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)([\d.]+)$/)[1]
- sm_a,sm_b,sm_c=fns_array[0].match(/^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)([0-9]+)?(?:\.([0-9]+))?(?:\.([0-9]+))?$/)[1..3]
- sm_c ||=0
- sv=(@opt.cmd =~/[VMv]/) ? ("SiSU version (#{@sisu_version[:version]})") : ''
- s_a,s_b,s_c=@sisu_version[:version].match(/^([0-9]+)?(?:\.([0-9]+))?(?:\.([0-9]+))?(?:\-\S+)?$/)[1..3]
- tell=(@markup_version_declared.to_f==@markup_version.determined) \
- ? SiSU_Screen::Ansi.new(@opt.cmd,"Markup version (#{@markup_version.series} version #{@markup_version.determined})",sv)
- : SiSU_Screen::Ansi.new(@opt.cmd,"Markup version declared (#{@markup_version_declared}), determined (#{@markup_version.series} version #{@markup_version.determined})",sv)
- ok=if s_a.to_i > sm_a.to_i
- true
- elsif s_a.to_i == sm_a.to_i \
- and s_b.to_i >= sm_b.to_i
- true
- elsif s_a.to_i == sm_a.to_i \
- and s_b.to_i == sm_b.to_i \
- and s_c.to_i >= sm_c.to_i
- true
- else false
- end
- if ok
- tell.txt_green if @opt.cmd =~/[vVM]/
- else
- SiSU_Screen::Ansi.new(@opt.cmd,"Warning: markup version determined (#{@markup_version.determined}) or markup version declared (#{@markup_version_declared}) is newer than SiSU version (#{@sisu_version[:version]})").warn unless @opt.cmd =~/q/
- end
- else
- SiSU_Screen::Ansi.new(@opt.cmd,'No SiSU markup version provided').warn if @opt.cmd =~/[VM]/
- end
- else
- mv=if defined? @markup_version.determined and not @markup_version.determined.nil?
- x=@markup_version.determined
- "markup version determined #{x}"
- else ''
- end
- SiSU_Screen::Ansi.new(@opt.cmd,'SiSU filetype indicator not provided',mv).warn unless @opt.cmd =~/q/
- end
- @code_flag=false
- fns_array.each do |para| #% scan document
- if para !~/^%+\s/ \
- and para =~/<![abcdeghijklmnopqrstuvwxyz]/i # <!f not included
- raise "Old markup style in file #{@fns}, current version #{@sisu_version[:project]} #{@sisu_version[:version]} #{@sisu_version[:date_stamp]} #{@sisu_version[:date]}:\n\t\t#{para}\n\n"
- end
- @code_flag=case para
- when /^code\{\s*$/; true
- when /^\}code\s*$/; false
- else @code_flag
- end
- regx_header=/^@\S+?:[+-]?\s/
- if para =~regx_header \
- and not @code_flag #or para=~/^(?:1|:?A)~/
- case para
- when /^@title:(.+)/m #% * header metadata - title
- @title=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).title
- when /^@creator:(.+)/m #% * header metadata - creator
- @creator=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).creator
- @authorship=@author=@creator.author
- @authors=@creator.author_detail
- when /^@date:(.+)/m #% * header metadata - date
- @date=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).date
- when /^@publisher:\s+(.+)/m #% * header metadata - publisher
- @publisher=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).current_publisher
- @current_publisher=@publisher
- when /^@rights:(.+)/m; #% * header metadata - rights
- @rights=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).rights
- when /^@classify:(.+)/m; classify=$1 #% * header metadata - classify
- @classify=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).classify
- when /^@original:(.+)/m #% * header metadata - original (document)
- @original=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).original
- @source=@original.source
- when /^@notes?:\s(.+)\Z/m #% * header metadata - notes
- @notes=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).notes
- when /^@links:\s+(.+?)\Z/m #% * header metadata - links
- doc_links=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).links
- count=1
- @links=[]
- doc_links.each do |doc_link|
- if doc_link=~/\{.+?\}(?:(?:https?|file|ftp):\/|\.\.)\/\S+(?:\s|$)/
- @links[count]={}
- @links[count][:say],@links[count][:url]=/\{\s*(.+?)\s*\}((?:(?:https?|file|ftp):\/|\.\.)\/\S+)/im.match(doc_link)[1,2]
- count +=1
- end
- end
- @lnk=@links
- when /^@make:(.+)/m #% * header processing - make
- @make=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).make
- if defined? @make.breaks \
- and @make.breaks[:page_new] #clearpage
- @pagenew=@make.breaks[:page_new]
- end
- if defined? @make.breaks \
- and @make.breaks[:page_break] #newpage
- @pagebreak=@make.breaks[:page_break]
- end
- if defined? @make.headings \
- and @make.headings
- @toc=@make.headings[0]
- @lv1=@make.headings[1]
- @lv2=@make.headings[2]
- @lv3=@make.headings[3]
- @lv4=@make.headings[4]
- @lv5=@make.headings[5]
- @lv6=@make.headings[6]
- end
- if defined? @make.num_top \
- and @make.num_top
- @num_top=@make.num_top # remove @num_top
- end
- if defined? @make.language \
- and @make.language[0]
- @i18n=@make.language
- end
- if defined? @make.skin \
- and @make.skin
- @doc_skin=@make.skin
- end
- if defined? @make.manpage \
- and @make.manpage
- @man_section=(defined? @make.manpage.section) \
- ? @make.manpage.section
- : 1
- end
- end
- @lv1 ||=/^1~/
- @lv2 ||=/^2~/
- @lv3 ||=/^3~/
- @lv4 ||=/^4~/
- @lv5 ||=/^5~/
- @lv6 ||=/^6~/
- else #% *
- l_0=l_1=l_2=l_3=l_4=l_5=''
- if defined? @make.headings[0]
- l_0=if defined? @make.headings[0][0] \
- and @make.headings[0][0] =~/\S+/
- "|^#{@make.headings[0][0]}"
- end
- l_1=if defined? @make.headings[0][1] \
- and @make.headings[0][1] =~/\S+/
- "|^#{@make.headings[0][1]}"
- end
- l_2=if defined? @make.headings[0][2] \
- and @make.headings[0][2] =~/\S+/
- "|^#{@make.headings[0][2]}"
- end
- l_3=if defined? @make.headings[0][3] \
- and @make.headings[0][3] =~/\S+/
- "|^#{@make.headings[0][3]}"
- end
- l_4=if defined? @make.headings[0][4] \
- and @make.headings[0][4] =~/\S+/
- "|^#{@make.headings[0][4]}"
- end
- l_5=if defined? @make.headings[0][5] \
- and @make.headings[0][5] =~/\S+/
- "|^#{@make.headings[0][5]}"
- end
- end
- case para
- when /^:?A~#{l_0}/
- @lvs[1]=1
- when /^:?B~#{l_1}/
- @lvs[2]=1
- when /^:?C~#{l_2}/
- @lvs[3]=1
- when /^1~#{l_3}/
- @lvs[4]=1
- when /^2~#{l_4}/
- @lvs[5]=1
- when /^3~#{l_5}/
- @lvs[6]=1
- end
- if para =~ /^:A~/ #% processing
- if @markup.nil? \
- or @markup.empty?
- @markup=@markup_version.determined.to_s
- elsif @markup !~/0\.38/; @markup=@markup.strip + "; #{@markup_version.determined}"
- end
- if not defined? @title.full.nil?
- tf=para[/^:A~\S*(.+)$/m,1]
- tf="@title: #{tf}"
- @title=SiSU_Param::Parameters::Md.new(tf.strip,@opt,@env).title
- end
- @html_title=@title.full.gsub(/(<p>|<p \/>|<br>|<br \/>)/,'')
- SiSU_Screen::Ansi.new(@opt.cmd,'Parameters',@html_title).txt_grey if @opt.cmd =~/v/
- end
- if not @book_idx \
- and para =~/^=\{(.+?)\}\s*$/
- @book_idx=true
- end
- unless @code_flag
- case para
- when /~\{\s+.+?\}~/m #% processing
- en=para.scan(/~\{.+?\}~/m)
- en.each { |e| @en[:sum] +=1 }
- when /~\^(?:\s|$)/m #% processing
- mk=para.scan(/~\^(?:\s|$)/)
- mk.each { |e| @en[:mark] +=1 }
- when /^\^~\s+\S/; @en[:note] +=1 #% processing
- end
- end
- if para =~/~\{|\^~ |~\^|\{.+?\[[1-6]\]\}\S+?\.ss[tm]/m
- @flag_auto_endnotes,@flag_endnotes=true,true
- end
- if para =~/^(?:table\{|\{table)/i; @flag_tables=true
- end
- end
- if para =~/^:?A~/
- @set_heading_top=true
- end
- if para =~/^1~/
- m=nil
- if para =~/^1~(\S+)\s+(.+)$/
- m,t=$1,$2
- elsif para =~/^1~\s+(.+)$/
- t=$1
- end
- unless @heading_seg_first_flag # extract first segment name
- @heading_seg_first=t
- @heading_seg_first_flag=true
- end
- if m # list all segment names
- @seg_names << m
- @set_heading_seg=true
- if m=~/^\d{1,3}/ \
- and m !~/^0/
- @seg_autoname_safe=false
- end
- end
- end
- para=para.gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image)
- if para !~/^%+\s/ \
- and para =~@rgx_image
- @ec[:image] << para.scan(@rgx_image).uniq
- end
- @ec[:audio] << para.scan(@rgx_audio).uniq if para =~@rgx_audio #embedded content
- @ec[:multimedia] << para.scan(@rgx_mm).uniq if para =~@rgx_mm #embedded content
- unless @sem_tag
- @sem_tag=true if para=~/[:;]\{.+?\}[:;][a-z+]/ #refix later
- end
- end #% here endeth the document loop
- if @ec[:image].length > 0
- @ec[:image]=@ec[:image].flatten.uniq
- @ec[:image].delete_if {|x| x =~/https?:\/\// }
- @ec[:image]=@ec[:image].sort
- end
- @ec[:audio]=@ec[:audio].uniq.flatten.sort
- @ec[:multimedia]=@ec[:multimedia].uniq.flatten.sort
- unless @rights
- if defined? @creator.author \
- and @creator.author \
- and defined? @date.published \
- and @date.published
- @rights=SiSU_Param::Parameters::MdDefault.new.rights(@creator.author,@date.published)
- elsif defined? @creator.author \
- and @creator.author
- @rights=SiSU_Param::Parameters::MdDefault.new.rights("[#{@creator.author}]",'')
- end
- end
- if defined? @classify.topic_register \
- and not @classify.topic_register.nil? \
- and @classify.topic_register.length >3
- topic_register=@classify.topic_register
- u=topic_register.scan(/[^;]+/)
- v=[]
- u.each do |l|
- v << l.scan(/[^:]+/)
- end
- v.each do |m|
- m[-1]=m[-1].scan(/[^|]+/) if m[-1] =~/[|]/
- @topic_register_array << m
- end
- @topic_register_array=@topic_register_array.sort
- end
- if @i18n
- @i18n=@i18n.uniq
- @i18n << 'en' unless @i18n.find_index("en")
- else
- @i18n=[ 'en' ]
- end
- if @markup_version.determined >= 0.38 #convert values in headers to internal representation
- translated=[]
- translate_list=[@pagenew,@pagebreak,@num_top,@toc_lev_limit]
- translate_list.each do |t|
- translate=t.to_s if t
- translated << if translate
- translate.gsub!(/3/,'6')
- translate.gsub!(/2/,'5')
- translate.gsub!(/1/,'4')
- translate.gsub!(/:?C/,'3')
- translate.gsub!(/:?B/,'2')
- translate.gsub!(/:?A/,'1')
- # looks like an ok substituion for the above but is not, causes problems, check why
- #translate=translate.gsub(/3/,'6').
- # gsub(/2/,'5').
- # gsub(/1/,'4').
- # gsub(/:?C/,'3').
- # gsub(/:?B/,'2').
- # gsub(/:?A/,'1')
- translate=if translate =~/^\d+$/; translate.to_i
- else translate
- end
- else nil
- end
- end
- @pagenew,@pagebreak,@num_top,@toc_lev_limit=translated
- @markup=@markup.gsub(/page_new\s*=\s*([\dA-C])/,"page_new=#{@pagenew}").
- gsub(/page_break\s*=\s*([\dA-C])/,"page_break=#{@pagebreak}").
- gsub(/num_top\s*=\s*([\dA-C])/,"num_top=#{@num_top}").
- gsub(/toc_lev_limit\s*=\s*([\dA-C])/,"toc_lev_limit=#{@toc_lev_limit}")
- end
- if @opt.mod.inspect =~/--papersize[=-]\S+|--pdf[=-]\S+/ \
- or @opt.mod.inspect =~/--(?:a4|letter|legal|book|a5|b5)\b/i #command line config/header override
- @papersize=determine_papersize(@opt.mod.inspect)
- end
- @papersize_array=@papersize.scan(/(?:a4|letter|legal|book|a5|b5)/i)
- fn=@fns=~/\.ssm\.sst$/ ? @fns.gsub(/.sst/,'') : @fns #decide what to do a filesize on .ssm tells very little about actual document size
- @filesize=(File.size(fn)).to_s
- if @sys.openssl !=false
- skin=@doc_skin \
- ? (SiSU_Env::InfoSkin.new(@opt,@doc_skin).select)
- : SiSU_Env::InfoSkin.new(@opt).select
- @dgst,@dgst_skin=[],[]
- if @env.digest.type =~/sha256/
- dgst=@sys.sha256(@env.source_file_with_path)
- @dgst=dgst[1].length==64 ? dgst : nil
- puts 'check document (sha256) digest' if not @dgst
- @dgst_skin=skin ? (@sys.sha256(skin)) : nil
- else
- dgst=@sys.md5(@env.source_file_with_path)
- @dgst=dgst[1].length==32 ? dgst : nil
- puts 'check document (md5) digest' if not @dgst
- @dgst_skin=skin ? (@sys.md5(skin)) : nil
- end
- end
- @publisher ||= "#@@publisher (this copy)"
- fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
- unless @language[:code] \
- and @language[:name]
- lang=@env.i18n.language #default language settings for directory by name, or in sysrc.yml
- @language[:code] ||= lang.code
- @language[:name] ||= lang.title
- end
- unless fn_set_lang[:d]==true #decide, naming convention overrides other settings, within document, etc.
- @language[:code]=fn_set_lang[:c]
- @language[:name]=fn_set_lang[:n]
- end
- @fnl=@env.i18n.lang_filename(fn_set_lang[:c])
-#fix
-# @flv.each do |l|
-# lang=SiSU_Env::StandardiseLanguage.new.file_to_language(l)
-# c={ a: '', b: '', c: '' }
-# if @fnl[:pre] =~/\S/; c[:a]="#{lang[:c]}."
-# elsif @fnl[:mid] =~/\S/; c[:b]=".#{lang[:c]}"
-# elsif @fnl[:post] =~/\S/; c[:c]=".#{lang[:c]}"
-# end
-# @lang << [lang[:n],"#{c[:a]}sisu_manifest#{c[:b]}.html#{c[:c]}"]
-# end if @flv
- @lang=@lang.uniq
- @fn=SiSU_Env::EnvCall.new(@fns).lang(fn_set_lang[:c])
- @identifier="#{@env.url.root}/#{@fnb}/#{@fn[:toc]}" #DC note constructed dc identifier
- if @en[:note] > 0 \
- and @en[:sum] > 0
- if @en[:sum] > 0
- else SiSU_Screen::Ansi.new(@opt.cmd,'both endnote styles used',"~{ #{@en[:sum]} }~ and ^~ #{@en[:mark]}").warn if @opt.cmd !~/q/
- end
- end
- if @en[:mark] != @en[:note] \
- and @en[:note] > 0
- @en[:mismatch]=@en[:note] - @en[:mark]
- SiSU_Screen::Ansi.new(@opt.cmd,'endnote number mismatch',"endnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} (difference = #{@en[:mismatch]})").warn if @opt.cmd !~/q/
- footnote_conversion_errors=File.new("#{Dir.pwd}/footnote_conversion_errors.txt",'a')
- footnote_conversion_errors << "#{@fns}:\n\tendnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} (difference = #{@en[:mismatch]})\n"
- end
- if not @title \
- or not defined? @title.main \
- or @title.main !~/[\S]/
- if @fns =~/\.ssm$/ \
- and @opt.inspect =~/P/
- #@title=Md.new('Text Insert',@opt,@env).title
- else
- SiSU_Screen::Ansi.new(@opt.cmd,'WARNING Document Title missing','please provide @title:').warn unless @opt.cmd =~/q/
- end
- end
- if @author !~/[\S]/
- if @fns =~/\.ssm$/ \
- and @opt.inspect =~/P/
- #@creator=SiSU_Param::Md.new('Text Insert',@opt,@env).creator
- else
- SiSU_Screen::Ansi.new(@opt.cmd,'Warning Document Author missing','please provide @creator: :author:').warn unless @opt.cmd =~/q/
- end
- end
- @struct={}
- doc_struct=Hash.new(0)
- if @lv1.nil?
- fns_array.each do |para|
- if para =~/^(Part|Chapter|Section|Article)\b/i
- case para
- when /^(Part|PART)\b/
- @struct[:part]=doc_struct[:part]
- doc_struct[:part]=doc_struct[:part] + 1
- when /^(Chapter|CHAPTER)\b/
- @struct[:chapter]=doc_struct[:chapter]
- doc_struct[:chapter]=doc_struct[:chapter] + 1
- when /^(Section|SECTION)\b/
- @struct[:section]=doc_struct[:section]
- doc_struct[:section]=doc_struct[:section] + 1
- when /^(Article|ARTICLE)\b/
- @struct[:article]=doc_struct[:article]
- doc_struct[:article]=doc_struct[:article] + 1
- when /^(Clause|CLAUSE)\b/
- @struct[:clause]=doc_struct[:clause]
- doc_struct[:clause]=doc_struct[:clause] + 1
- when /^\d\..*[^\.]$/
- @struct[:number]=doc_struct[:number]
- doc_struct[:number]=doc_struct[:number] + 1
- end
- end
- end
- if doc_struct[:article] > 2 #%~level 4
- @lv4=/^(?:Article|ARTICLE)\b/
- elsif doc_struct[:chapter] > 2 \
- and doc_struct[:article] \
- and doc_struct[:article] < 3
- @lv4=/^(?:Chapter|CHAPTER)\b/
- elsif doc_struct[:clause] > 2
- @lv4=/^(?:Clause|CLAUSE)\b/
- elsif doc_struct[:number] > 2
- @lv4="^\d\..*[^\.]$"
- end
- if doc_struct[:section] > 2 #%~level 3
- @lv3=/^(?:Section|SECTION)\b/
- end
- if doc_struct[:chapter] > 2 \
- and doc_struct[:article] \
- and doc_struct[:article] > 2
- @lv2=/^(?:Chapter|CHAPTER)\b/
- end
- if doc_struct[:part] > 2 \
- and @lv[2].nil?
- @lv2=/^(?:Part|PART)\b/
- end
- if doc_struct[:part] > 2 \
- and @lv[2].inspect !~/Part/ \
- and @lv[1].nil?
- @lv1=/^(Part|PART)\b/
- end
- end
- @lnk=@lnk.compact if @lnk
- @lv1 ||=/^1~/
- @lv2 ||=/^2~/
- @lv3 ||=/^3~/
- @lv4 ||=/^4~/
- @lv5 ||=/^5~/
- @lv6 ||=/^6~/
- if @doc_skin
- SiSU_Screen::Ansi.new(@opt.cmd,"doc_skin <- #{@doc_skin}").txt_grey if @opt.cmd =~/v/
- end
- @data=nil #else whole file's contents are stored in md pstore & is not required to be... big waste actually
- @file=SiSU_Env::FileOp.new(self) #watch
- Store.new(self,@env).store #% pstore
- self
- end
- private
- class Store
- def initialize(md,env)
- @md=md
- @pstorefile="#{env.processing_path.dal}/#{md.fns}.pstore"
- end
- def store
- File.unlink(@pstorefile) if FileTest.file?(@pstorefile)
- SiSU_Screen::Ansi.new(@md.opt.cmd,"PStore -> #{@pstorefile}").txt_grey if @md.opt.cmd =~/[MV]/
- store=PStore.new(@pstorefile)
- store.transaction do
- store['md']=@md
- store.commit
- end
- @@md=@md=nil
- end
- end
- end
- end
- class Instantiate
- def param_instantiate
- @@date=SiSU_Env::InfoDate.new
- @@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=nil
- @doc={
- initialise: nil,
- markup: '', lnks: '', stmp: '', prefix_a: '', prefix_b: '',
- req: {}
- }
- @@yaml=@@yamladdr=nil
- @@flag={}
- @@publisher='SiSU scribe'
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/param_identify_markup.rb b/lib/sisu/v3dv/param_identify_markup.rb
deleted file mode 100644
index c8c1fe8b..00000000
--- a/lib/sisu/v3dv/param_identify_markup.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: A conversion script for canned substitutions, a fairly generic
- simple tool that can be used to store other canned conversions, used here for
- altering SiSU markup
-
-=end
-module SiSU_MarkupType
- class MarkupIdentify
- @@version={}
- @@fns,@@version[:determined],@@version[:declared],@@declared_doc_type='','','','[text?]'
- attr_accessor :version,:declared_doc_type
- def initialize(content,opt)
- @cont,@opt=content,opt
- end
- def identify
- @version,@declared_doc_type=@@version,@@declared_doc_type
- if @opt.fns != @@fns
- if @cont[0] =~ /^(?:%\s+)?SiSU\s+(text|master|insert)\s+([0-9](?:\.[0-9]+){1,2})/ \
- or @cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
- @declared_doc_type,@version[:declared]=$1,$2
- elsif @cont[0] =~ /^(?:%\s+)?SiSU\s+([0-9](?:\.[0-9]+){1,2})/ \
- or @cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
- @version[:declared]=$1
- end
- @flag_2_0,@flag_66,@flag_57,@flag_38=false,false,false,false
- @cont.each_with_index do |y,i|
- if y =~/^(?:0\{?~links?|@links?:)\s/
- links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)'
- else ' (post 0.20.4 header links)'
- end
- end
- if y =~/^@make:|^@classify|^\s\s?:\S+?:\s+\S/
- version=2.0.to_f
- @version[:determined]=version
- @flag_2_0=true
- break
- end
- unless @flag_38
- if y =~/^:?A~/
- version=0.38.to_f
- @version[:determined]=version
- @flag_38=true
- end
- end
- if @flag_38
- if @flag_69 \
- or y =~/^=\{.+?\}\s*$/
- version=0.69.to_f
- @flag_69=true
- @version[:determined]=version
- break
- end
- if @flag_66 \
- or y =~/[:;]\{.+?\}[:;][a-z+]/
- version=0.66.to_f
- @flag_66=true
- @version[:determined]=version
- break
- end
- end
- end
- @flag_57,@flag_38=false,false
- unless @flag_2_0 \
- or @flag_66 \
- or @flag_69
- @cont.each_with_index do |y,i|
- if @flag_57 \
- or y =~/^:?A~\?? @title/
- @version[:determined]=0.57.to_f
- @flag_57=true
- break
- end
- if @flag_38 \
- or y =~/^:?A~/
- @version[:determined]=0.38.to_f
- @flag_38=true
- break if i >= 200
- if y =~ /(?:~{\*+|~\[\*|~\[\+)\s/
- @version[:determined]=0.42 #0.38 can safely be treated as 0.42
- break
- end
- end
- if y =~/^0~/ \
- and not @flag_38
- @version[:determined]=0.16.to_f
- break
- end
- end
- end
- @@fns=@opt.fns
- @@version,@@declared_doc_type=@version,@declared_doc_type
- end
- self
- end
- def markup_version?
- def determined
- identify.version[:determined].to_f
- end
- def series
- s=case identify.version[:determined].to_s
- when /^[01]\./; '1.0'
- when /^[2]\./; '2.0'
- else '2.0'
- end
- "series #{s}"
- end
- def declared
- identify.version[:declared].to_f
- end
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/particulars.rb b/lib/sisu/v3dv/particulars.rb
deleted file mode 100644
index 7c599624..00000000
--- a/lib/sisu/v3dv/particulars.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
- particulars, composite information about document being processed
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_Particulars
- require 'singleton'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'dal' # dal.rb
- class CombinedSingleton
- include Singleton
- def get_all(opt)
- @opt=opt
- set_env
- set_file
- set_md
- set_dal #needs @md
- end
- def get_env(opt)
- @opt=opt
- set_env
- end
- def get_file(opt)
- @opt=opt
- set_file
- end
- def get_md(opt)
- @opt=opt
- set_md
- end
- def get_dal_array(opt)
- @opt=opt
- set_dal #needs @md
- end
- def get_env_md(opt)
- @opt=opt
- set_env
- set_md
- end
- def get_idx_sst(opt)
- @opt=opt
- set_sst_idx
- end
- def get_idx_tex(opt)
- @opt=opt
- set_tex_idx
- end
- def get_idx_html(opt)
- @opt=opt
- set_html_idx
- end
- def get_idx_xhtml(opt)
- @opt=opt
- set_xhtml_idx
- end
- def get_name_tags(opt)
- @opt=opt
- set_name_tags
- end
- def get_maps(opt)
- @opt=opt
- set_nametags_map
- set_ocn_htmlseg_map
- end
- def get_map_nametags(opt)
- @opt=opt
- set_nametags_map
- end
- def get_map_ocn_htmlseg(opt)
- @opt=opt
- set_ocn_htmlseg_map
- end
- attr_accessor :opt,:md,:sst_idx,:tex_idx,:html_idx,:xhtml_idx
- def set_md
- begin
- @md=SiSU_Param::Parameters.new(@opt).get
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- attr_accessor :opt,:env,:file
- def set_env
- begin
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- def set_file
- begin
- set_md unless @md
- @file=SiSU_Env::FileOp.new(@md)
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- attr_accessor :opt,:dal_array
- def set_dal
- begin
- @dal_array=@dal_array=SiSU_DAL::Source.new(@md).get
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- def set_sst_idx
- begin
- @sst_idx=SiSU_DAL::Source.new(@md).get_idx_sst
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- def set_tex_idx
- begin
- @tex_idx=SiSU_DAL::Source.new(@md).get_idx_tex
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- def set_html_idx
- begin
- @html_idx=SiSU_DAL::Source.new(@md).get_idx_html
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- def set_xhtml_idx
- begin
- @xhtml_idx=SiSU_DAL::Source.new(@md).get_idx_xhtml
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- attr_accessor :nametags_map
- def set_nametags_map
- begin
- opt=@md ? @md : @opt
- @nametags_map=SiSU_DAL::Source.new(opt).get_map_nametags
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- attr_accessor :ocn_htmlseg_map
- def set_ocn_htmlseg_map
- begin
- @ocn_htmlseg_map=SiSU_DAL::Source.new(@md).get_map_ocn_htmlseg
- self
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- end
- end
- end
-end
-__END__
-consider running as separate objects
diff --git a/lib/sisu/v3dv/plaintext.rb b/lib/sisu/v3dv/plaintext.rb
deleted file mode 100644
index 557c5f1b..00000000
--- a/lib/sisu/v3dv/plaintext.rb
+++ /dev/null
@@ -1,432 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: plaintext text generation, stripped plaintext output (unix,
- linefeed)
-
-=end
-module SiSU_Plaintext
- require_relative 'dal' # dal.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'plaintext_format' # plaintext_format.rb
- include SiSU_PlaintextFormat
- require_relative 'shared_metadata' # shared_metadata.rb
- require_relative 'shared_txt' # shared_txt.rb
- include SiSU_Param
- include SiSU_Viz
- pwd=Dir.pwd
- @@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.cmd =~/q/
- path=env.path.output_tell
- tool=(@opt.cmd =~/[MVv]/) \
- ? "#{env.program.text_editor} #{md.file.output_path.txt.dir}/#{md.file.base_filename.txt}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Plaintext',tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Plaintext',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{md.file.output_path.txt.dir}/#{md.file.base_filename.txt}").flow if @opt.cmd =~/[MV]/
- end
- dal_array=SiSU_DAL::Source.new(@opt).get # dal 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_Plaintext::Source::Scroll.new(dal_array,md,wrap_width).songsheet
- SiSU_Env::InfoSkin.new(md).select #watch
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Scroll <Source
- require_relative 'defaults' # defaults.rb
- require_relative 'shared_txt' # shared_txt.rb
- include SiSU_TextUtils
- @@endnotes={ para: [], end: [] }
- def initialize(data,md,wrap_width)
- @data,@md,@wrap_width=data,md,wrap_width
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @tab="\t"
- @@endnotes_=case md.opt.mod.inspect
- when /--footnote/; false
- when /--endnote/; true
- else true
- end
- @br=case md.opt.mod.inspect
- when /--dos/; "\r\n"
- when /--unix/; "\n"
- else "\n"
- end
- @plaintext={ body: [], open: [], close: [], head: [], metadata: [], tail: [] }
- end
- def songsheet
- plaintext=markup(@data)
- publish(plaintext)
- 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
- SiSU_Env::InfoSkin.new(@md).select
-# env=SiSU_Env::InfoEnv.new(@md.fns)
- vz=SiSU_Env::GetInit.instance.skin
- base_url="#{@env.url.root}/#{@md.fnb}"
- 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}#{@br}Version number: #{@md.sc_number}#{@br}Version date: #{@md.sc_date}#{@br}"
- else ''
- end
- @plaintext[:tail] <<<<WOK
-#{@br}
-plaintext (plain text):
- #{@md.file.output_path.txt.url}/#{@md.file.base_filename.txt}#{@br}
-Other versions of this document: #{@br}
-manifest:
- #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{@br}
-at:
- #{@md.file.output_path.base.url}#{@br}
-
-#{sc}
-* #{generator}
-* #{rubyv}
-* #{lastdone}
-* SiSU #{vz.url_sisu}
-WOK
- end
- def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document
- lv=n=n3=nil
- if dob.is==:heading
- lv=dob.ln
- n=lv - 1
- n3=lv + 2
- end
- util=nil
- wrapped=if dob.is ==:para \
- or dob.is==:heading
- if 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
- util.line_wrap
- end
- if lv
- times=wrapped.length
- times=@wrap_width if times > @wrap_width
- @plaintext[:body] << case lv
- when 1; wrapped.upcase << @br << Px[:lv1]*times + p_num << @br
- when 2; wrapped.upcase << @br << Px[:lv2]*times + p_num << @br
- when 3; wrapped.upcase << @br << Px[:lv3]*times + p_num << @br
- when 4; wrapped.upcase << @br << Px[:lv4]*times + p_num << @br
- when 5; wrapped.upcase << @br << Px[:lv5]*times + p_num << @br
- when 6; wrapped.upcase << @br << Px[:lv6]*times + p_num << @br
- end
- else
- @plaintext[:body] << wrapped + p_num << @br # main text, contents, body KEEP
- end
- if @@endnotes[:para] \
- and not @@endnotes_
- @plaintext[:body] << @br
- @@endnotes[:para].each {|e| @plaintext[:body] << e << @br}
- elsif @@endnotes[:para] \
- and @@endnotes_
- @plaintext[:body] << @br*2
- end
- @@endnotes[:para]=[]
- end
- def markup(data) # Used for major markup instructions
- dir=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 omitted, see other document formats]'
- fix=[]
- data.each do |dob|
- dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{@br}#{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]}/,
- "#{Px[:bold_o]}\\1#{Px[:bold_c]}").
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
- "#{Px[:italics_o]}\\1#{Px[:italics_c]}").
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
- "#{Px[:underscore_o]}\\1#{Px[:underscore_c]}").
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
- "#{Px[:subscript_o]}\\1#{Px[:subscript_c]}").
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
- "#{Px[:superscript_o]}\\1#{Px[:superscript_c]}").
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
- "#{Px[:insert_o]}\\1#{Px[:insert_c]}").
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
- "#{Px[:cite_o]}\\1#{Px[:cite_c]}").
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
- "#{Px[:strike_o]}\\1#{Px[:strike_c]}").
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
- "#{Px[:monospace_o]}\\1#{Px[:monospace_c]}")
- 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]}/,"* ").
- gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n")
- else dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n")
- 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(/&nbsp;|#{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"]')
- wordlist=dob.obj.scan(/\S+/)
- if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- #if defined? dob.ocn and dob.ocn.to_s =~/\d+/
- # paranum=dob.ocn.to_s
- # @p_num=SiSU_PlaintextFormat::ParagraphNumber.new(paranum)
- #end
- p_num=''
- if @env.plaintext_ocn?
- if defined? dob.ocn \
- and not dob.ocn.nil?
- p_num=SiSU_PlaintextFormat::ParagraphNumber.new(dob.ocn).display
- end
- end
- 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 << @br
- elsif dob.is==:break
- sp=' '
- ln='-'
- @plaintext[:body] <<=if dob.obj==Mx[:br_page] \
- or dob.obj==Mx[:br_page_new]
- "#{@br}#{ln*40}#{@br*2}"
- elsif dob.obj ==Mx[:br_obj]
- "#{@br}#{sp*20}* * *#{@br*2}"
- end # following empty line (@br) 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 << "#{@br}#{divider*@wrap_width}#{@br}"
- content << plaintext[:metadata]
- content << "#{@br}#{divider*@wrap_width}#{@br}" if @md.stmp =~/\w+/ #not used?
- content << plaintext[:tail]
- Output.new(content,@md).plaintext
- @@endnotes={ para: [], end: [] }
- end
- end
- class Output <Source
- include SiSU_Param
- include SiSU_Env
- def initialize(content,md)
- @content,@md=content,md
- end
- def plaintext #%plaintext output
- file_plaintext=SiSU_Env::FileOp.new(@md).write_file.txt
- @sisu=[]
- emptyline=0
- @content.each do |para| # this is a hack
- if para.class==Array \
- and para.length > 0
- para.each do |line|
- if line
- line.gsub!(/\s+$/m,'')
- line.gsub!(/^\A[ ]*\Z/m,'')
- if line=~/^\A[ ]*\Z/m
- emptyline+=1
- else emptyline=0
- end
- file_plaintext.puts line if emptyline < 2 #remove extra line spaces (fix upstream)
- end
- end
- else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/
- end
- end
- file_plaintext.close
- end
- end
- end
-end
-__END__
-&#033;\|&#035;\|&&#042;\|&#045;\|&#047;\|&#095;\|&#123;\|&#125;\|&#126;\|&#
diff --git a/lib/sisu/v3dv/plaintext_format.rb b/lib/sisu/v3dv/plaintext_format.rb
deleted file mode 100644
index f7956070..00000000
--- a/lib/sisu/v3dv/plaintext_format.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: plaintext formatting template
-
-=end
-module SiSU_PlaintextFormat
- 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[\\1]")
- 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.class==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_Env::GetInit.instance.skin
- end
- def scr_endnote_body
- "<endnote>#{@txt}</endnote> "
- end
- def heading_body1
- end
- def heading_body2
- end
- def heading_body3
- end
- def heading_body4
- end
- def heading_body5
- end
- def heading_body6
- end
- end
- class XML
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/po4a.rb b/lib/sisu/v3dv/po4a.rb
deleted file mode 100644
index adb977c2..00000000
--- a/lib/sisu/v3dv/po4a.rb
+++ /dev/null
@@ -1,984 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: pot file generation
- linefeed)
-
-=end
-module SiSU_Po4a
- require_relative 'dal' # dal.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'shared_metadata' # shared_metadata.rb
- require_relative 'po4a_set' # po4a_set.rb
- include SiSU_Param
- include SiSU_Viz
- pwd=Dir.pwd
- class Source
- @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn=nil,nil,nil,nil,nil,nil
- def initialize(opt,fn=nil)
- @opt,@fn=opt,fn
- #unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/
- # puts "#{@opt.fns} not a processed file type"
- #end
- r=Px[:lng_lst].join('|')
- r=r.gsub(/\|en\|/,'|')
- @lang_regx=%r{(?:#{r})}
- if opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \
- and opt.f_pth[:lng]!=opt.lng_base
- @@opt_src_=false
- @@opt_trn=opt
- @@md_trn=SiSU_Param::Parameters.new(opt).get
- else
- @@opt_src_=true
- @@opt_src=opt
- @@md_src=SiSU_Param::Parameters.new(opt).get
- end
- end
- def read
- begin
- src={}
- src[:pth]=@opt.f_pth[:pth]
- src[:files]=if @opt.fns =~ /\.(?:(?:-|ssm\.)sst|ssm)$/
- @opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm')
- SiSU_Assemble::CompositeFileList.new(@opt).read
- else
- [@opt.fns]
- end
- md=SiSU_Param::Parameters.new(@opt).get
- src[:files].each do |fn|
- SiSU_DAL::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]
- unless @opt.cmd =~/q/
- path=env.path.output_tell
- tool=(@opt.cmd =~/[MVv]/) \
- ? "#{env.program.text_editor} #{path}/#{md.fnb}/#{md.fn[:plain]}"
- : @opt.fns
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Pot po4a',tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Pot po4a',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{path}/#{md.fnb}/#{md.fn[:plain]}").flow if @opt.cmd =~/[MV]/
- end
- 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
- 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
- end
- transdir,srcdir=Dir.pwd,Dir.pwd
- if Dir.pwd.to_s =~/\/#{@lang_regx}$/
- transdir=Dir.pwd
- srcdir=transdir.gsub(/\/#{@lang_regx}$/,"/#{opt.lng_base}")
- if FileTest.directory?(srcdir)
- Dir.chdir(srcdir)
- end
- else nil
- end
- x=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
- 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
- end
- 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
- SiSU_Po4a::Source::Scroll.new(fn,@dal_array_lang_src,@dal_array_lang_translation,@@md_src,@@md_trn,wrap_width).songsheet
- SiSU_Env::InfoSkin.new(md).select #watch
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Scroll <Source
- require_relative 'defaults' # defaults.rb
- require_relative 'po4a_set' # po4a_set.rb
- include SiSU_Po4aUtils
- @@endnotes={ para: [], end: [] }
- def initialize(fn,data_src,data_trn,md_src,md_trn,wrap_width)
- @fn,@data_src,@data_trn,@md_src,@md_trn,@wrap_width=fn,data_src,data_trn,md_src,md_trn,wrap_width
- @md=(md_trn.nil?) \
- ? md_src
- : md_trn
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @vz=SiSU_Env::GetInit.instance.skin
- @tab="\t"
- @@endnotes_=(@md.opt.mod.inspect =~/--endnote/) ? true : false # --footnote
- @br=(@md.opt.mod.inspect =~/--dos/) ? "\r\n" : "\n" # --unix
- @pot={ body: [], open: [], close: [], head: [], metadata: [], tail: [] }
- end
- def songsheet
-############## BUG @fn changes value
- fn=@fn
- pot=pot_markup(@data_src,@data_trn)
- publish(fn,pot)
- end
- def extract_endnotes(dob='') #% Used for extraction of endnotes from paragraphs
- notes_a=dob.obj.scan(/#{Mx[:en_a_o]}([\d]+\s+.+?)#{Mx[:en_a_c]}/)
- ##notes_a=dob.obj.scan(/#{Mx[:en_a_o]}([\d*+]+\s+.+?)#{Mx[:en_a_c]}/)
- #notes_b=dob.obj.scan(/#{Mx[:en_b_o]}([\d*+]+\s+.+?)#{Mx[:en_b_c]}/)
- @n=[]
- notes_a.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider
- n=n.dup.to_s
- n=n.gsub(/^([\d]+)\s+/,'^~\1 ').
- #gsub(/^([\d*+]+)\s+/,'^~\1 ').
- gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br>')
- @n << n
- end
- notes_a=@n.flatten
- end
- def wrap_endnotes(orig_notes='',trn_notes='')
- nt=@@endnotes_ ? 'endnote' : 'footnote'
- @fn=0
- a_l=orig_notes.length
- 0.upto(a_l-1) do |i|
- @fn=if orig_notes[i].to_s =~/^\^~([\d*+]+)/ # provides endnote number within paragraph
- @fn += 1
- else @fn
- end
- d="#{nt} #{@fn}"
- mark="^~ "
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct=%{\n# footnotes, the preferred sisu markup for a footnote is~{this is a footnote}~ however, for translation a footnote reference marker in the text~^ with a set of notes following the paragraph starting on a newline with "^~ this is a footnote", is easier to deal with, if possible these should be converted back to~{inline notes}~}
- s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) ? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) : orig_notes[i].to_s
- trans=if trn_notes.class==Array \
- and trn_notes.length==orig_notes.length
- (trn_notes[i].to_s =~/^\^~[\d*+]+/) ? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) : trn_notes[i].to_s
- else ''
- end
- util=pot_structure(desc,orig,trans)
- wrap=util.line_wrap
- wrap=if wrap =~ /^\s*\^~[\d*+]+\s+.+?\s*\Z/m
- wrap.gsub(/^\s*(\^~[\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
-\\1 \\2
-GSUB
- )
- else
- wrap.gsub(/^(.+)\Z/m, <<GSUB
-\\1
-GSUB
- )
- end
- @@endnotes[:para] << wrap
- @@endnotes[:end] << '' << wrap
- end
- @@endnotes[:para].each {|e| @pot[:body] << e << @br}
- @@endnotes[:para]=[]
- @@endnotes
- end
- def pot_metadata_src
- @po4a_identify_type='type: SiSU doc' #'type: Plain text'
- meta_src=SiSU_Metadata::Summary.new(@md_src)
- w=[]
- w << [
- "#. #{@po4a_identify_type} - metadata: title",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.title.main,
- meta_src.metadata_tags.title.sub,
- meta_src.metadata_tags.title.edition,
- meta_src.metadata_tags.title.note,
- meta_src.metadata_tags.title.short,
- meta_src.metadata_tags.title.language,
- meta_src.metadata_tags.title.language_char,
- 'msgstr ""',
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: creator",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.creator.head,
- meta_src.metadata_tags.creator.author,
- meta_src.metadata_tags.creator.contributor,
- meta_src.metadata_tags.creator.illustrator,
- meta_src.metadata_tags.creator.photographer,
- meta_src.metadata_tags.creator.translator,
- meta_src.metadata_tags.creator.audio,
- meta_src.metadata_tags.creator.digitized_by,
- meta_src.metadata_tags.creator.prepared_by,
- 'msgstr ""',
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: rights",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.rights.head,
- meta_src.metadata_tags.rights.copyright.text,
- meta_src.metadata_tags.rights.copyright.translation,
- meta_src.metadata_tags.rights.copyright.illustrations,
- meta_src.metadata_tags.rights.copyright.photographs,
- meta_src.metadata_tags.rights.copyright.digitization,
- meta_src.metadata_tags.rights.copyright.audio,
- meta_src.metadata_tags.rights.license,
- 'msgstr ""',
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: classify",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.classify.head,
- meta_src.metadata_tags.classify.relation,
- meta_src.metadata_tags.classify.subject,
- meta_src.metadata_tags.classify.topic_register,
- meta_src.metadata_tags.classify.type,
- meta_src.metadata_tags.classify.identifier,
- meta_src.metadata_tags.classify.loc,
- meta_src.metadata_tags.classify.dewey,
- meta_src.metadata_tags.classify.oclc,
- meta_src.metadata_tags.classify.isbn,
- 'msgstr ""',
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: date",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.date.head,
- meta_src.metadata_tags.date.added_to_site,
- meta_src.metadata_tags.date.available,
- meta_src.metadata_tags.date.created,
- meta_src.metadata_tags.date.issued,
- meta_src.metadata_tags.date.modified,
- meta_src.metadata_tags.date.published,
- meta_src.metadata_tags.date.valid,
- 'msgstr ""',
- ]
- w << [
- "#. #{@po4a_identify_type} - processing, make instruction",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.processing_tags.make.language,
- meta_src.processing_tags.make.headings,
- meta_src.processing_tags.make.num_top,
- meta_src.processing_tags.make.breaks,
- meta_src.processing_tags.make.emphasis,
- meta_src.processing_tags.make.bold,
- meta_src.processing_tags.make.italics,
- meta_src.processing_tags.make.texpdf_font,
- meta_src.processing_tags.make.skin,
- 'msgstr ""',
- ]
- w.each do |y|
- z=''
- y.each do |x|
- if x
- z += x + "\n" if x =~/^#|^msg(?:id|str)/
- z += %{"#{x}"\n} if x =~/^@\S+?:(?: |$)/
- z += %{"#{x}"\n} if x =~/^\s+:\S+?: /
- end
- end
- @pot[:metadata] << z << @br
- #puts z unless z.empty?
- end
- end
- def pot_metadata_src_trn
- @po4a_identify_type='type: SiSU doc'
- #@po4a_identify_type='type: Plain text'
- meta_src=SiSU_Metadata::Summary.new(@md_src)
- meta_trn=SiSU_Metadata::Summary.new(@md_trn)
- w=[]
- w << [
- "#. #{@po4a_identify_type} - metadata: title",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.title.main,
- meta_src.metadata_tags.title.sub,
- meta_src.metadata_tags.title.edition,
- meta_src.metadata_tags.title.note,
- meta_src.metadata_tags.title.short,
- meta_src.metadata_tags.title.language,
- meta_src.metadata_tags.title.language_char,
- 'msgstr ""',
- meta_trn.metadata_tags.title.main,
- meta_trn.metadata_tags.title.sub,
- meta_trn.metadata_tags.title.edition,
- meta_trn.metadata_tags.title.note,
- meta_trn.metadata_tags.title.short,
- meta_trn.metadata_tags.title.language,
- meta_trn.metadata_tags.title.language_char,
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: creator",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.creator.head,
- meta_src.metadata_tags.creator.author,
- meta_src.metadata_tags.creator.contributor,
- meta_src.metadata_tags.creator.illustrator,
- meta_src.metadata_tags.creator.photographer,
- meta_src.metadata_tags.creator.translator,
- meta_src.metadata_tags.creator.audio,
- meta_src.metadata_tags.creator.digitized_by,
- meta_src.metadata_tags.creator.prepared_by,
- 'msgstr ""',
- meta_trn.metadata_tags.creator.head,
- meta_trn.metadata_tags.creator.author,
- meta_trn.metadata_tags.creator.contributor,
- meta_trn.metadata_tags.creator.illustrator,
- meta_trn.metadata_tags.creator.photographer,
- meta_trn.metadata_tags.creator.translator,
- meta_trn.metadata_tags.creator.audio,
- meta_trn.metadata_tags.creator.digitized_by,
- meta_trn.metadata_tags.creator.prepared_by,
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: rights",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.rights.head,
- meta_src.metadata_tags.rights.copyright.text,
- meta_src.metadata_tags.rights.copyright.translation,
- meta_src.metadata_tags.rights.copyright.illustrations,
- meta_src.metadata_tags.rights.copyright.photographs,
- meta_src.metadata_tags.rights.copyright.digitization,
- meta_src.metadata_tags.rights.copyright.audio,
- meta_src.metadata_tags.rights.license,
- 'msgstr ""',
- meta_trn.metadata_tags.rights.head,
- meta_trn.metadata_tags.rights.copyright.text,
- meta_trn.metadata_tags.rights.copyright.translation,
- meta_trn.metadata_tags.rights.copyright.illustrations,
- meta_trn.metadata_tags.rights.copyright.photographs,
- meta_trn.metadata_tags.rights.copyright.digitization,
- meta_trn.metadata_tags.rights.copyright.audio,
- meta_trn.metadata_tags.rights.license,
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: classify",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.classify.head,
- meta_src.metadata_tags.classify.relation,
- meta_src.metadata_tags.classify.subject,
- meta_src.metadata_tags.classify.topic_register,
- meta_src.metadata_tags.classify.type,
- meta_src.metadata_tags.classify.identifier,
- meta_src.metadata_tags.classify.loc,
- meta_src.metadata_tags.classify.dewey,
- meta_src.metadata_tags.classify.oclc,
- meta_src.metadata_tags.classify.isbn,
- 'msgstr ""',
- meta_trn.metadata_tags.classify.head,
- meta_trn.metadata_tags.classify.relation,
- meta_trn.metadata_tags.classify.subject,
- meta_trn.metadata_tags.classify.topic_register,
- meta_trn.metadata_tags.classify.type,
- meta_trn.metadata_tags.classify.identifier,
- meta_trn.metadata_tags.classify.loc,
- meta_trn.metadata_tags.classify.dewey,
- meta_trn.metadata_tags.classify.oclc,
- meta_trn.metadata_tags.classify.isbn,
- ]
- w << [
- "#. #{@po4a_identify_type} - metadata: date",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.metadata_tags.date.head,
- meta_src.metadata_tags.date.added_to_site,
- meta_src.metadata_tags.date.available,
- meta_src.metadata_tags.date.created,
- meta_src.metadata_tags.date.issued,
- meta_src.metadata_tags.date.modified,
- meta_src.metadata_tags.date.published,
- meta_src.metadata_tags.date.valid,
- 'msgstr ""',
- meta_trn.metadata_tags.date.head,
- meta_trn.metadata_tags.date.added_to_site,
- meta_trn.metadata_tags.date.available,
- meta_trn.metadata_tags.date.created,
- meta_trn.metadata_tags.date.issued,
- meta_trn.metadata_tags.date.modified,
- meta_trn.metadata_tags.date.published,
- meta_trn.metadata_tags.date.valid,
- ]
- w << [
- "#. #{@po4a_identify_type} - processing, make instruction",
- "#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
- 'msgid ""',
- meta_src.processing_tags.make.language,
- meta_src.processing_tags.make.headings,
- meta_src.processing_tags.make.num_top,
- meta_src.processing_tags.make.breaks,
- meta_src.processing_tags.make.emphasis,
- meta_src.processing_tags.make.bold,
- meta_src.processing_tags.make.italics,
- meta_src.processing_tags.make.texpdf_font,
- meta_src.processing_tags.make.skin,
- 'msgstr ""',
- meta_trn.processing_tags.make.language,
- meta_trn.processing_tags.make.headings,
- meta_trn.processing_tags.make.num_top,
- meta_trn.processing_tags.make.breaks,
- meta_trn.processing_tags.make.emphasis,
- meta_trn.processing_tags.make.bold,
- meta_trn.processing_tags.make.italics,
- meta_trn.processing_tags.make.texpdf_font,
- meta_trn.processing_tags.make.skin,
- ]
- w.each do |y|
- z=''
- y.each do |x|
- if x
- z += x + "\n" if x =~/^#|^msg(?:id|str)/
- z += %{"#{x}"\n} if x =~/^@\S+?:(?: |$)/
- z += %{"#{x}"\n} if x =~/^\s+:\S+?: /
- end
- end
- @pot[:metadata] << z << @br
- #puts z unless z.empty?
- end
- end
- def pot_structure(desc,orig,trans,indent=0,hang=0)
- SiSU_Po4aUtils::Wrap.new(@md,orig,trans,desc,@wrap_width,indent,hang)
- end
- def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
- lv=n=n3=nil
- lv=dob_src.ln
- n=lv - 1
- n3=lv + 2
- util=nil
- fn=(dob_src.name=~/[a-z\d]/i) ? dob_src.name : ''
- mark="#{dob_src.lv}~#{fn} "
- d="#{dob_src.is.to_s} (level #{dob_src.lv})"
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct=%{\n# markup for headings is marker at the start of the line/object, indicating the heading level, and if provided an associated name tag, this heading is "#{mark}"}
- s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig="#{s_mark}#{dob_src.obj}"
- trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
- util=pot_structure(desc,orig,trans)
- wrapped=util.line_wrap
- @pot[:body] << wrapped << @br # main text, contents, body KEEP
- if @@endnotes[:para] \
- and notes_s.length > 0 \
- and not @@endnotes_
- @pot[:body] << @br
- wrap_endnotes(notes_s,notes_t)
- elsif @@endnotes[:para] \
- and @@endnotes_
- @pot[:body] << @br*2
- end
- end
- def pot_structure_para(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
- util=nil
- wrapped=if dob_src.indent =~/[1-9]/ \
- and dob_src.indent == dob_src.hang
- s_mark=desc=orig=trans=''
- if dob_src.bullet_
- mark="_#{dob_src.indent}* "
- d="#{dob_src.is.to_s}: indent #{dob_src.indent}, bullet"
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct=%{\n# markup for indented bullet text is at the start of the line/object, an underscore followed by the indent level and an asterisk "#{mark}"}
- s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- else
- mark="_#{dob_src.indent} "
- d="#{dob_src.is.to_s}: indent #{dob_src.indent}"
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by the indent level "#{mark}"}
- s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- end
- orig="#{s_mark}#{dob_src.obj}"
- trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
- util=pot_structure(desc,orig,trans)
- elsif dob_src.hang =~/[0-9]/ \
- and dob_src.indent != dob_src.hang
- s_mark=desc=orig=trans=''
- mark="_#{dob_src.hang}_#{dob_src.indent} "
- d="#{dob_src.is.to_s}: hang #{dob_src.hang} indent #{dob_src.indent}"
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct=%{\n# markup for indented text with a first line indented to a different level from the rest of the paragraph, is at the start of the line/object, an underscore and the first indent level a second underscore and the indent level for the rest of the paragraph, "#{mark1}"}
- s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig="#{s_mark}#{dob_src.obj}"
- trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
- util=pot_structure(desc,orig,trans)
- else
- s_mark=desc=orig=trans=''
- if dob_src.bullet_
- mark='_* '
- d="#{dob_src.is.to_s}: bullet"
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by an asterisk "#{mark}"}
- s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig="#{s_mark}#{dob_src.obj}"
- trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"
- else
- mark=''
- d=dob_src.is.to_s
- instruct=%{\n# regular paragraph, no special markup}
- if @md.opt.cmd=~/M/
- instruct="\n# "
- s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig=dob_src.obj
- trans=(dob_trn=='') ? '' : dob_trn.obj
- end
- util=pot_structure(desc,orig,trans)
- end
- wrapped=util.line_wrap
- @pot[:body] << wrapped << @br # main text, contents, body KEEP
- if @@endnotes[:para] \
- and notes_s.length > 0 \
- and not @@endnotes_
- @pot[:body] << @br
- wrap_endnotes(notes_s,notes_t)
- elsif @@endnotes[:para] \
- and @@endnotes_
- @pot[:body] << @br*2
- end
- end
- def pot_structure_block(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
- mark="block{\\n\\n...\\n\\n}block"
- d=dob_src.is.to_s
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct="\n# block text is a text block with an opening and closing marker, the content of which may be wrapped"
- s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig=dob_src.obj
- trans=(dob_trn=='') ? '' : dob_trn.obj
- util=pot_structure(desc,orig,trans)
- unwrapped=util.no_line_wrap_block
- @pot[:body] << unwrapped << @br
- end
- def pot_structure_group(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
- mark="group{\\n\\n...\\n\\n}group"
- d=dob_src.is.to_s
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct="\n# group text is a text block with an opening and closing marker, the content of which may be wrapped"
- s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig=dob_src.obj
- trans=(dob_trn=='') ? '' : dob_trn.obj
- util=pot_structure(desc,orig,trans)
- unwrapped=util.no_line_wrap_block
- @pot[:body] << unwrapped << @br
- end
- def pot_structure_verse(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
- mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem"
- d=dob_src.is.to_s
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct="\n# verse are part of the text block described as a poem, the first verse is preceeded by an opening marker, and the last verse by a closing marker, the content of which should remain unwrapped"
- s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig=dob_src.obj
- trans=(dob_trn=='') ? '' : dob_trn.obj
- util=pot_structure(desc,orig,trans)
- unwrapped=util.no_line_wrap_block
- @pot[:body] << unwrapped << @br
- end
- def pot_structure_code(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
- mark="code{\\n\\n...\\n\\n}code"
- d=dob_src.is.to_s
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct="\n# codeblocks are a text block with an opening and closing marker, the content of which should remain unwrapped"
- s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig=dob_src.obj
- trans=(dob_trn=='') ? '' : dob_trn.obj
- util=pot_structure(desc,orig,trans)
- unwrapped=util.no_line_wrap_block
- @pot[:body] << unwrapped << @br
- end
- def pot_structure_table(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document
- mark="table{\\n\\n...\\n\\n}table"
- d=dob_src.is.to_s
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct="\n# tables are a text block with an opening and closing marker, the content of which should remain unwrapped"
- s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
- end
- desc="#{d}#{s_mark}#{instruct}"
- orig=dob_src.obj
- orig=orig.gsub(/#{Mx[:tc_c]}/,"\n")
- trans=(dob_trn=='') ? '' : dob_trn.obj
- trans=trans.gsub(/#{Mx[:tc_c]}/,"\n")
- util=pot_structure(desc,orig,trans)
- unwrapped=util.no_line_wrap_block
- @pot[:body] << unwrapped << @br
- end
- def pot_structure_idx(dob_src='',dob_trn='') #% Used to extract the structure of a document
- mark="={ ... }"
- instruct=s_mark=''
- if @md.opt.cmd=~/M/
- instruct="\n# the book index should be attached unwrapped to the preceding text block (there should be a new line, but no empty line)"
- s_mark="\n# " + %{"\\n#{mark}\\n\\n"}
- end
- d='book-idx'
- desc="#{d}#{s_mark}#{instruct}"
- orig='={' + dob_src.idx + '}'
- trans=if defined? dob_trn.idx \
- and not dob_trn.idx.nil? \
- and not dob_trn.idx.empty?
- '={' + dob_trn.idx + '}'
- else ''
- end
- util=pot_structure(desc,orig,trans)
- unwrapped=util.no_line_wrap_block
- @pot[:body] << unwrapped << @br
- end
- def pot_markup(data_src,data_trn)
- #@endnotes,@copen,@pot_contents_close=Array.new(3){[]}
- a_l=if data_trn
- a_l=(data_src.length >= data_trn.length) \
- ? data_src.length
- : data_trn.length
- else
- data_src.length
- end
- s,t=0,0
- if @md.fns =~ /\.(?:(?:-|ssm\.)?sst|ssm)$/
- (data_trn.nil?) \
- ? pot_metadata_src
- : pot_metadata_src_trn
- end
- 0.upto(a_l-1) do |i|
- if data_trn
- unless data_src[s] \
- and data_trn[t]
- break
- end
- if data_src[s].of == :comment \
- and data_trn[t].of == :comment \
- and (data_src[s].is == data_trn[t].is)
- s+=1;t+=1
- next
- end
- if (data_src[s].is == :comment or data_trn[t].is == :comment) \
- and (data_src[s].is != data_trn[t].is)
- if data_src[s].is == :comment
- puts "src (comment):\n\t" + data_src[s].obj if @md.opt.cmd =~/M/
- s+=1
- #next if data_src[s].is == :comment
- elsif data_trn[t].is == :comment
- puts "trans (comment):\n\t" + data_trn[t].obj if @md.opt.cmd =~/M/
- t+=1
- #next if data_trn[t].is == :comment
- end
- end
- if (defined? data_src[s].ocn and data_src[s].ocn.class == Fixnum) \
- and (defined? data_trn[t].ocn and data_trn[t].ocn.class == Fixnum) \
- and (data_src[s].ocn == data_trn[t].ocn)
- @m_s,@m_t=s,t
- elsif (defined? data_src[s].ocn and data_src[s].ocn.class == Fixnum) \
- and (defined? data_trn[t].ocn and data_trn[t].ocn.class == Fixnum) \
- and (data_src[s].ocn != data_trn[t].ocn)
- p '--- OCN ---'
- p 'mis-match'
- p data_src[s].ocn
- p data_src[s].obj
- p data_trn[t].ocn
- p data_trn[t].obj
- p '---'
- p 'previous match'
- p data_src[@m_s].ocn
- p data_src[@m_s].obj
- p data_trn[@m_t].ocn
- p data_trn[@m_t].obj
- exit
- elsif (defined? data_src[s].ocn and defined? data_trn[t].ocn \
- and data_src[s].ocn.class != data_trn[t].ocn.class)
- p '--- OCN class ---'
- p 'mis-match'
- p data_src[s].ocn if defined? data_src[s].ocn
- p data_src[s].obj
- p data_trn[t].ocn if defined? data_trn[t].ocn
- p data_trn[t].obj
- #p '---'
- #p 'previous match'
- #p data_src[@m_s].ocn
- #p data_src[@m_s].obj
- #p data_trn[@m_t].ocn
- #p data_trn[@m_t].obj
- #elsif (defined? data_src[s].ocn != defined? data_trn[t].ocn) \
- #and (data_src[s].ocn.nil? != data_trn[t].ocn.nil?)
- # p '--- missing OCN? ---'
- # p 'mis-match'
- # p data_src[s].ocn if defined? data_src[s].ocn
- # p data_src[s].obj
- # p data_trn[t].ocn if defined? data_trn[t].ocn
- # p data_trn[t].obj
- else
- end
- end
- notes_s,notes_t='',''
- data_src[s],notes_s=markup(data_src[s])
- if data_trn
- data_trn[t],notes_t=markup(data_trn[t])
- #data_src[s],data_trn[t]=pot_data(data_src[s],notes_s,data_trn[t],notes_t)
- pot_data(data_src[s],notes_s,data_trn[t],notes_t)
- else
- #data_src[s],nul=pot_data(data_src[s],notes_s)
- pot_data(data_src[s],notes_s)
- end
- s+=1;t+=1
- end
- @pot #watch
- end
- def pot_data(dob_src='',notes_s='',dob_trn='',notes_t='')
- if dob_src.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- if defined? dob_src.ocn \
- and dob_src.ocn.to_s =~/\d+/
- paranum=dob_src.ocn.to_s
- @p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum)
- end
- case dob_src.is
- when :heading; pot_structure_heading(dob_src,notes_s,dob_trn,notes_t)
- when :para; pot_structure_para(dob_src,notes_s,dob_trn,notes_t)
- when :group; pot_structure_group(dob_src,notes_s,dob_trn,notes_t)
- when :block; pot_structure_block(dob_src,notes_s,dob_trn,notes_t)
- when :verse; pot_structure_verse(dob_src,notes_s,dob_trn,notes_t)
- when :code; pot_structure_code(dob_src,notes_s,dob_trn,notes_t)
- when :table; pot_structure_table(dob_src,notes_s,dob_trn,notes_t)
- end
- if defined? dob_src.idx \
- and not dob_src.idx.nil? \
- and not dob_src.idx.empty?
- pot_structure_idx(dob_src,dob_trn)
- end
- dob_src='' if (dob_src.obj =~/<a name="n\d+">/ \
- and dob_src.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
- if dob_src ## Clean Prepared Text
- dob_src.obj=dob_src.obj.gsub(/<!.+!>/,' ').
- gsub(/<:\S+>/,' ') if dob_src ## Clean Prepared Text
- end
- end
- #[dob_src,dob_trn]
- end
- def markup(dob) # Used for major markup instructions
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- fix=[]
- dob.obj=dob.obj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
- "#{Px[:po_bold_o]}\\1#{Px[:po_bold_c]}").
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
- "#{Px[:po_italics_o]}\\1#{Px[:po_italics_c]}").
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
- "#{Px[:po_underscore_o]}\\1#{Px[:po_underscore_c]}").
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
- "#{Px[:po_subscript_o]}\\1#{Px[:po_subscript_c]}").
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
- "#{Px[:po_superscript_o]}\\1#{Px[:po_superscript_c]}").
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
- "#{Px[:po_insert_o]}\\1#{Px[:po_insert_c]}").
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
- "#{Px[:po_cite_o]}\\1#{Px[:po_cite_c]}").
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
- "#{Px[:po_strike_o]}\\1#{Px[:po_strike_c]}").
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
- "#{Px[:po_monospace_o]}\\1#{Px[:po_monospace_c]}")
- notes=''
- 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]}/,'\1')
- #dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{@brace_url.txt_open}\\1#{@brace_url.txt_close}")
- notes=extract_endnotes(dob)
- #% ### footnotes current state - extracted
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^'). # endnote marker marked up
- #% ### footnotes current state - keep inline
- #dob.obj.gsub!(/#{Mx[:en_a_o]}[\d]+\s+(.+?)#{Mx[:en_a_c]}/,'~{ \1 }~') # inline endnote with marker marked up
- gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/,'~[ \1 ]~'). # inline endnote with marker marked up
- gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,'~{\1 \2 }~'). # inline endnote with marker marked up
- gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/,'~[\1 \2 ]~'). # inline endnote with 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]}/,'©')
- end
- dob.obj=if dob.of==:block # watch
- dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/,"* ").
- gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n")
- else dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n")
- end
- if dob.is==:code
- dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
- gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_<
- end
- dob.obj=dob.obj.gsub(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,''). # remove page breaks
- 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(/&nbsp;|#{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 ]'). #"[ #{dir.url.images_local}\/\\1 ]")
- gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
- [dob,notes]
- end
- def publish(fn,pot)
- divider='='
- content=[]
- content << pot[:open]
- content << pot[:head]
- content << pot[:metadata]
- content << pot[:body]
- content << @@endnotes[:end] if @@endnotes_
- Output.new(fn,content,@md).po4a
- @@endnotes={ para: [], end: [] }
- end
- end
- class Output <Source
- include SiSU_Param
- include SiSU_Env
- def initialize(fn,content,md)
- @fn,@content,@md=fn,content,md
- @file=SiSU_Env::FileOp.new(md,fn)
- end
- def po4a #%pot output
- file_pot=(@md.opt.f_pth[:lng] ==opt.lng_base) \
- ? @file.write_file.pot
- : @file.write_file.po
- @sisu=[]
- emptyline=0
- @content.each do |para| # this is a hack
- if para.class==Array \
- and para.length > 0
- para.each do |line|
- if line
- line=line.gsub(/\s+$/m,'').
- gsub(/^\A[ ]*\Z/m,'')
- if line=~/^\A[ ]*\Z/m
- emptyline+=1
- else emptyline=0
- end
- file_pot.puts line if emptyline < 2 #remove extra line spaces (fix upstream)
- end
- end
- else file_pot.puts para #unix plaintext # /^([*=-]|\.){5}/
- end
- end
- file_pot.close
- SiSU_Po4aUtils::PotNumber.new.reset
- po4a_git
- end
- def po4a_git
- unless @md.opt.cmd =~/M/
- require_relative 'git' # git.rb
- git=SiSU_Git::Source.new(@md.opt)
- git.create_file_structure_git unless FileTest.directory?(@file.output_path.pot_git.dir)
- if @md.opt.f_pth[:lng] ==opt.lng_base
- FileUtils::cp(@file.place_file.pot.dir, @file.output_path.pot_git.dir)
- else # naive, work on -->
- FileUtils::cp(@file.place_file.po.dir, @file.output_path.po_git.dir) #unless FileTest.file?(@file.place_file.po_git.dir)
- end
- git.read
- end
- end
- end
- end
-end
-__END__
-&#033;\|&#035;\|&&#042;\|&#045;\|&#047;\|&#095;\|&#123;\|&#125;\|&#126;\|&#
-
-tables are problematic, difficult to reconstitute instruction, check
-
-metadata, move to top? and work on
-
-footnotes, different types, asterisk, also do you want to have separate
-paragraphs, or breaks within one block?
-
-where no ocn appropriately use ~# or -# or indeed 1~name-
-
-comments in document, what to do about them, not sure they are currently
-retained in dal, could be quite valuable to keep
diff --git a/lib/sisu/v3dv/po4a_set.rb b/lib/sisu/v3dv/po4a_set.rb
deleted file mode 100644
index 6335fb8c..00000000
--- a/lib/sisu/v3dv/po4a_set.rb
+++ /dev/null
@@ -1,300 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by flatfile output generators
-
-=end
-module SiSU_Po4aUtils
- class Wrap
- def initialize(md,orig='',trans='',is_desc='',n_char_max=76,n_indent=0,n_hang=nil)
- @md,@orig,@trans,@is_desc,@n_char_max,@n_indent=md,orig,trans,is_desc,n_char_max,n_indent
- @n_char_max_extend = n_char_max
- @br="\n"
- @n_hang=n_hang ? n_hang : @n_indent
- @po4a_identify_type='type: SiSU doc'
- #@po4a_identify_type='type: Plain text'
- end
- def line_wrap
- space=' '
- spaces_indent,spaces_hang="#{@br}#{space*@n_indent}",space*@n_hang
- pot,i=[],0
- pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans]
- pot_array.each do |pa|
- line=0
- out=[]
- out[line]=''
- @oldword='' #REMOVE @oldword
- pa=pa.gsub(/<br>/,' <br> ').
- gsub(/#{Mx[:br_nl]}/,"\n\n")
- words=pa.scan(/\n\n|<br>|\S+/m)
- while words != ''
- word=words.shift
- if not word
- out[line] unless out[line].empty? #check
- break
- elsif word =~/\n\n/
- word="\n"
- @n_char_max_extend = @n_char_max + out[line].length
- line=line
- elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \
- and out[line] =~/\S+/
- @n_char_max_extend = @n_char_max
- out[line].squeeze!(' ')
- line += 1
- end
- if word
- out[line]=if out[line] \
- and out[line] !~/\S+$/m
- "#{out[line]}#{word}"
- elsif out[line] \
- and out[line] =~/\S+/
- "#{out[line]} #{word}"
- else "#{word.strip}"
- end
- end
- @oldword=word if word =~/\S+/
- end
- x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang)
- z=[]
- x.split(/\n/).each do |y|
- y=y.gsub(/"/,'\"')
- y=%{"#{y}"}
- z << y
- end
- pot[i]=z.join("\n")
- i +=1
- pot
- end
- trans=(pot.length == 2) ? pot[1] : ''
- po_str=<<WOK
-#. #{@po4a_identify_type} - #{@is_desc}
-#: en/#{@md.fns}:#{PotNumber.new.num}
-msgid ""
-#{pot[0]}
-msgstr ""
-#{trans}
-WOK
- po_str
- end
- def no_line_wrap_block
- pot,i=[],0
- pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans]
- pot_array.each do |pa|
- z=[]
- pa.split(/\n\n/).each do |y|
- y=y.gsub(/"/,'\"')
- y=%{"#{y}"}
- z << y if not y.empty?
- end
- pot[i]=z.join("\n")
- i +=1
- pot
- end
- trans=(pot.length == 2) ? pot[1] : ''
- po_str=<<WOK
-#. #{@po4a_identify_type} - #{@is_desc}
-#: en/#{@md.fns}:#{PotNumber.new.num}
-#, no-wrap
-msgid ""
-#{pot[0]}
-msgstr ""
-#{trans}
-WOK
- po_str
- end
- def line_wrap_indent1
- @n_indent,@n_hang=2,2
- line_wrap
- end
- def line_wrap_endnote
- @n_indent,@n_hang=4,2
- line_wrap
- end
- def array_wrap
- if @orig.class==Array
- @arr=[]
- @orig.each do |line|
- @arr << SiSU_TextUtils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
- end
- end
- @arr
- end
- end
- class HeaderScan
- def initialize(md,para)
- @md,@p=md,para
- end
- def extract(tag,tag_content,type,attrib)
- dc=if dc_tag \
- and dc_content
- [dc_tag,dc_content,{dc_tag=>dc_content}]
- else nil
- end
- end
- def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825
- @tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib
- def label #element
- @tag
- end
- def type
- @type
- end
- def text
- @tag_content
- end
- def info #element text
- @tag_content
- end
- def attribute
- @attrib
- end
- def element
- @tag
- end
- def attrib
- @attrib
- end
- def el
- @tag
- end
- self
- end
- def start_is_match
- meta=case @p
- when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/; header($1,@md.title.full,'meta','dc') #dc 1
- when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/; header('creator',$2,'meta','dc') #dc 2
- when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 3
- when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 4
- when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 5
- when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 6
- when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 7
- when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 8
- when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 9
- when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 10
- when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 11
- when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 12
- when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 13
- when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 14
- when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 15
- when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/; header('translator',$2)
- when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/; header('illustrator',$2)
- when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_loc',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_dewey',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_pg',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_isbn',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/; header('structure',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/; header('markup',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/; header('italicize',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/; header('vocabulary',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(skin)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/; header('css',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct') #add a & b
- when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/; header('version',$2,'process','instruct')
- else nil
- end
- end
- def dublin
- out=if @p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/
- start_is_match
- else nil
- end
- end
- def meta
- out=if @p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/
- start_is_match
- else nil
- end
- end
- end
- class ParagraphNumber
- def initialize(paranum)
- @paranum=/(\d+)/m.match(paranum)[1]
- end
- def display
- @paranum.gsub(/(\d+)/,'#\1')
- end
- end
- class PotNumber
- @@n=0
- def initialize
- @@n +=2
- end
- def num
- @@n
- end
- def reset
- @@n=0
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/prog_text_translation.rb b/lib/sisu/v3dv/prog_text_translation.rb
deleted file mode 100644
index 015077d2..00000000
--- a/lib/sisu/v3dv/prog_text_translation.rb
+++ /dev/null
@@ -1,1704 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: internationalisation
-
-=end
-module SiSU_Translate
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Param
- class Source
- def initialize(md,doc_lang,trans_str='')
- @md,@doc_lang,@trans_str=md,doc_lang,trans_str
- @lang_class=case @doc_lang
- when /American/i; English.new(md,doc_lang,trans_str) # tag depreciated, see iso 639-2
- when /English/i; English.new(md,doc_lang,trans_str)
- when /French/i; French.new(md,doc_lang,trans_str)
- when /German/i; German.new(md,doc_lang,trans_str)
- when /Italian/i; Italian.new(md,doc_lang,trans_str)
- when /Spanish/i; Spanish.new(md,doc_lang,trans_str)
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- Portuguese.new(md,doc_lang,trans_str) # tag depreciated, see iso 639-2
- when /Portuguese/i; Portuguese.new(md,doc_lang,trans_str)
- when /Swedish/i; Swedish.new(md,doc_lang,trans_str)
- when /Danish/i; Danish.new(md,doc_lang,trans_str)
- when /Finnish/i; Finnish.new(md,doc_lang,trans_str)
- when /Norwegian/i; Norwegian.new(md,doc_lang,trans_str)
- when /Icelandic/i; Icelandic.new(md,doc_lang,trans_str)
- when /Dutch/i; Dutch.new(md,doc_lang,trans_str)
- when /Estonian/i; Estonian.new(md,doc_lang,trans_str)
- when /Hungarian/i; Hungarian.new(md,doc_lang,trans_str)
- when /Polish/i; Polish.new(md,doc_lang,trans_str)
- when /Romanian/i; Romanian.new(md,doc_lang,trans_str)
- when /Russian/i; Russian.new(md,doc_lang,trans_str)
- when /Greek/i; Greek.new(md,doc_lang,trans_str)
- when /Ukranian/i; Ukranian.new(md,doc_lang,trans_str)
- when /Turkish/i; Turkish.new(md,doc_lang,trans_str)
- when /Slovenian/i; Slovenian.new(md,doc_lang,trans_str)
- when /Croatian/i; Croatian.new(md,doc_lang,trans_str)
- when /Slovak(?:ian)?/i; Slovak.new(md,doc_lang,trans_str)
- when /Czech/i; Czech.new(md,doc_lang,trans_str)
- when /Bulgarian/i; Bulgarian.new(md,doc_lang,trans_str)
- else English.new(md,doc_lang,trans_str)
- end
- end
- def filename
- @lang_class.filename
- end
- def metadata
- @lang_class.metadata
- end
- def filetype_description
- @lang_class.filetype_description
- end
- def file_size
- @lang_class.file_size
- end
- def sourcefile
- @lang_class.sourcefile
- end
- def sourcefile_digest
- @lang_class.sourcefile_digest
- end
- def full_title #dc
- @lang_class.full_title
- end
- def title
- @lang_class.title
- end
- def subtitle
- @lang_class.subtitle
- end
- def author
- @lang_class.author
- end
- def contributor
- @lang_class.contributor
- end
- def translator
- @lang_class.translator
- end
- def illustrator
- @lang_class.illustrator
- end
- def publisher
- @lang_class.publisher
- end
- def prepared_by
- @lang_class.prepared_by
- end
- def digitized_by
- @lang_class.digitized_by
- end
- def contents
- @lang_class.contents
- end
- def subject
- @lang_class.subject
- end
- def description #dc (watch)
- @lang_class.description
- end
- def abstract
- @lang_class.abstract
- end
- def type
- @lang_class.type
- end
- def rights
- @lang_class.rights
- end
- def date
- @lang_class.date
- end
- def date_created
- @lang_class.date_created
- end
- def date_available
- @lang_class.date_available
- end
- def date_valid
- @lang_class.date_valid
- end
- def date_modified
- @lang_class.date_modified
- end
- def date_issued
- @lang_class.date_issued
- end
- def language
- @lang_class.language
- end
- def language_original
- @lang_class.language_original
- end
- def format
- @lang_class.format
- end
- def identifier
- @lang_class.identifier
- end
- def source
- @lang_class.source
- end
- def relation
- @lang_class.relation
- end
- def coverage
- @lang_class.coverage
- end
- def keywords
- @lang_class.keywords
- end
- def comments
- @lang_class.comments
- end
- def cls_loc
- @lang_class.cls_loc
- end
- def cls_dewey
- @lang_class.cls_dewey
- end
- def cls_oclc
- @lang_class.cls_oclc
- end
- def cls_gutenberg
- @lang_class.cls_gutenberg
- end
- def cls_isbn
- @lang_class.cls_isbn
- end
- def prefix_a
- @lang_class.prefix_a
- end
- def prefix_b
- @lang_class.prefix_b
- end
- def topic_register
- @lang_class.topic_register
- end
- def fns
- @lang_class.fns
- end
- def word_count
- @lang_class.word_count
- end
- def dgst
- @lang_class.dgst
- end
- def sc_number
- @lang_class.sc_number
- end
- def sc_date
- @lang_class.sc_date
- end
- def last_generated
- @lang_class.last_generated
- end
- def sisu_version
- @lang_class.sisu_version
- end
- def ruby_version
- @lang_class.ruby_version
- end
- def suggested_links
- @lang_class.suggested_links
- end
- def language_version_list
- @lang_class.language_version_list
- end
- def language
- @lang_class.language
- end
- def manifest_description
- @lang_class.manifest_description
- end
- def manifest_description_output
- @lang_class.manifest_description_output
- end
- def manifest_description_metadata
- @lang_class.manifest_description_metadata
- end
- def language_list_translated
- @lang_class.language_list
- end
- def language_list
- lang=case @trans_str
- when /American/i; 'American English' # tag depreciated, see iso 639-2
- when /English/i; 'English'
- when /French/i; 'français'
- when /German/i; 'Deutsch'
- when /Italian/i; 'Italiano'
- when /Spanish/i; 'español'
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- 'Brazilian Português' # tag depreciated, see iso 639-2
- when /Portuguese/i; 'Português'
- when /Swedish/i; 'svenska'
- when /Danish/i; 'dansk'
- when /Finnish/i; 'suomi'
- when /Norwegian/i; 'norsk'
- when /Icelandic/i; 'Icelandic'
- when /Dutch/i; 'Nederlands'
- when /Estonian/i; 'Estonian'
- when /Hungarian/i; 'Hungarian'
- when /Polish/i; 'polski'
- when /Romanian/i; 'română'
- when /Russian/i; 'Русский (Russkij)'
- when /Greek/i; 'Ελληνικά (Ellinika)'
- when /Ukranian/i; 'українська (ukrajins\'ka)'
- when /Turkish/i; 'Türkçe'
- when /Slovenian/i; 'Slovenian'
- when /Croatian/i; 'Croatian'
- when /Slovak(?:ian)?/i; 'slovensky' #slovensky ?
- when /Czech/i; 'česky'
- when /Bulgarian/i; 'Български (Bəlgarski)'
- when /Japanese/i; '日本語 (Nihongo)'
- when /Korean/i; '한국어 (Hangul)'
- #when /Catalan/i; 'català'
- else 'English'
- end
- #check on 中文 and عربي
- end
- end
- class English
- def initialize(md,doc_lang,trans_str)
- @md,@doc_lang,@trans_str=md,doc_lang,trans_str
- end
- def filename
- 'filename'
- end
- def filetype_description
- 'filetype description'
- end
- def metadata
- 'metadata'
- end
- def file_size
- 'file size'
- end
- def full_title #dc
- 'Title'
- end
- def title
- 'Title'
- end
- def subtitle
- 'Subtitle'
- end
- def author
- 'Author'
- end
- def author #dc
- 'Creator'
- end
- def contributor #dc
- 'Contributor'
- end
- def translator
- 'Translator'
- end
- def illustrator
- 'Illustrator'
- end
- def publisher #dc
- 'Publisher'
- end
- def prepared_by
- 'Prepared by'
- end
- def digitized_by
- 'Digitized by'
- end
- def contents
- 'Contents'
- end
- def subject #dc
- 'Subject'
- end
- def description #dc (watch)
- 'Description'
- end
- def abstract #dc
- 'Abstract'
- end
- def type #dc
- 'Type'
- end
- def rights #dc
- 'Rights'
- end
- def date #dc
- 'Date'
- end
- def date_created #dc
- 'Date created'
- end
- def date_issued #dc
- 'Date issued'
- end
- def date_available #dc
- 'Date available'
- end
- def date_modified #dc
- 'Date modified'
- end
- def date_valid #dc
- 'Date valid'
- end
- def language #dc
- 'Language'
- end
- def language_original
- 'Original Language'
- end
- def format #dc
- 'Format'
- end
- def identifier #dc
- 'Identifier'
- end
- def source #dc
- 'Source'
- end
- def relation #dc
- 'Relation'
- end
- def coverage #dc
- 'Coverage'
- end
- def keywords
- 'Keywords'
- end
- def comments
- 'Comments'
- end
- def cls_loc
- 'Classify Library of Congress'
- end
- def cls_dewey
- 'Classify Dewey'
- end
- def cls_oclc
- 'Classify OCLC number'
- end
- def cls_gutenberg
- 'Classify Project Gutenberg'
- end
- def cls_isbn
- 'Classify ISBN'
- end
- def prefix_a
- 'Prefix (a)'
- end
- def prefix_b
- 'Prefix (b)'
- end
- def topic_register
- 'Topics Registered'
- end
- def sourcefile
- 'Sourcefile'
- end
- def word_count
- 'Word Count approximate'
- end
- def sourcefile_digest
- 'Sourcefile Digest'
- end
- def digest_md5
- 'Sourcefile Digest (md5)'
- end
- def digest_sha256
- 'Sourcefile Digest (sha256)'
- end
- def sc_number
- 'Document (RCS/CVS) number'
- end
- def sc_date
- 'Document (RCS/CVS) number'
- end
- def last_generated
- 'Document (dal) last generated'
- end
- def sisu_version
- 'Generated by'
- end
- def ruby_version
- 'Ruby version'
- end
- def suggested_links
- 'metadata suggested links'
- end
- def language_version_list
- 'Document Language Versions, manifests'
- end
- def manifest_description
- 'SiSU manifest of document filetypes and metadata'
- end
- def manifest_description_output
- 'Available document filetypes'
- end
- def manifest_description_metadata
- 'Document Metadata'
- end
- def language_list_translated
- lang=case @trans_str
- when /American/i; 'American English' # tag depreciated, see iso 639-2
- when /English/i; 'English'
- when /French/i; 'French'
- when /German/i; 'German'
- when /Italian/i; 'Italian'
- when /Spanish/i; 'Spanish'
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- 'Brazilian Portuguese' # tag depreciated, see iso 639-2
- when /Portuguese/i; 'Portuguese'
- when /Swedish/i; 'Swedish'
- when /Danish/i; 'Danish'
- when /Finnish/i; 'Finnish'
- when /Norwegian/i; 'Norwegian'
- when /Icelandic/i; 'Icelandic'
- when /Dutch/i; 'Dutch'
- when /Estonian/i; 'Estonian'
- when /Hungarian/i; 'Hungarian'
- when /Polish/i; 'Polish'
- when /Romanian/i; 'Romanian'
- when /Russian/i; 'Russian'
- when /Greek/i; 'Greek'
- when /Ukranian/i; 'Ukranian'
- when /Turkish/i; 'Turkish'
- when /Slovenian/i; 'Slovenian'
- when /Croatian/i; 'Croatian'
- when /Slovak(?:ian)?/i; 'Slovakian'
- when /Czech/i; 'Czech'
- when /Bulgarian/i; 'Bulgarian'
- else @trans_str
- end
- end
- end
- class French
- def initialize(md,doc_lang,trans_str)
- @md,@doc_lang,@trans_str=md,doc_lang,trans_str
- end
- def filename
- 'nom de fichier'
- end
- def filetype_description
- description
- end
- def metadata
- 'metadonnées'
- end
- def file_size
- 'taille'
- end
- def full_title #dc
- 'Titre'
- end
- def title
- 'Titre'
- end
- def subtitle
- 'Sous titre'
- end
- def author
- 'Auteur'
- end
- def author #dc
- 'Auteur'
- end
- def contributor #dc
- 'Contributeur'
- end
- def translator
- 'Traducteur'
- end
- def illustrator
- 'Illustrateur'
- end
- def publisher #dc
- 'Éditeur'
- end
- def prepared_by
- 'Préparé par'
- end
- def digitized_by
- 'Numérisé par'
- end
- def contents
- 'Contents' #translate
- end
- def subject #dc
- 'Sujet'
- end
- def description #dc (watch)
- 'Description'
- end
- def abstract #dc
- 'Résumé'
- end
- def type #dc
- 'Type'
- end
- def rights #dc
- 'Droits relatifs à la ressource'
- end
- def date #dc
- 'Date'
- end
- def date_created #dc
- 'Date de création'
- end
- def date_issued #dc
- 'Date de publication'
- end
- def date_available #dc
- 'Date de mise à disposition'
- end
- def date_modified #dc
- 'Date de modification'
- end
- def date_valid #dc
- 'Date de validité'
- end
- def language #dc
- 'Langue'
- end
- def language_original
- 'Langue originale'
- end
- def format #dc
- 'Format'
- end
- def identifier #dc
- 'Identifiant'
- end
- def source #dc
- 'Source'
- end
- def relation #dc
- 'Lien'
- end
- def coverage #dc
- 'Portée du document'
- end
- def keywords
- 'Mots clef'
- end
- def comments
- 'Commentaires'
- end
- def cls_loc
- 'Classification de la bibliothèque du congres'
- end
- def cls_dewey
- 'Classification Dewey'
- end
- def cls_oclc # fix
- 'Classify OCLC number'
- end
- def cls_gutenberg
- 'Classification du project Gutenberg'
- end
- def cls_isbn
- 'Classification ISBN'
- end
- def prefix_a
- 'Préfixe (a)'
- end
- def prefix_b
- 'Préfixe (b)'
- end
- def topic_register
- 'Topics Registered'
- end
- def sourcefile
- 'Fichier source'
- end
- def word_count
- 'Nombre approximatif de mots'
- end
- def sourcefile_digest
- 'Condensé du fichier source'
- end
- def digest_md5
- 'Condensé du fichier source (md5)'
- end
- def digest_sha256
- 'Condensé du fichier source (sha256)'
- end
- def sc_number
- 'Numéro (RCS/CVS) du document'
- end
- def sc_date
- 'Numéro (RCS/CVS) du document'
- end
- def last_generated
- 'Dernière production du document (metaverse)'
- end
- def sisu_version
- 'Généré par'
- end
- def ruby_version
- 'Version de Ruby'
- end
- def suggested_links
- 'Liens suggérés'
- end
- def language_version_list
- 'Versions des langues du document, manifestes'
- end
- def manifest_description
- 'SiSU manifest of document filetypes and metadata'
- end
- def manifest_description_output
- 'Manifeste SiSU du document généré'
- end
- def manifest_description_metadata
- 'Manifeste SiSU des métadonnées du document'
- end
- def language_list_translated
- lang=case @trans_str
- when /American/i; 'Anglais americain' # tag depreciated, see iso 639-2
- when /English/i; 'Anglais'
- when /French/i; 'Français'
- when /German/i; 'Allemand'
- when /Italian/i; 'Italien'
- when /Spanish/i; 'Espagnol'
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- 'Portugais brésilien' # tag depreciated, see iso 639-2
- when /Portuguese/i; 'Portugais'
- when /Swedish/i; 'Suédois'
- when /Danish/i; 'Danois'
- when /Finnish/i; 'Finnois'
- when /Norwegian/i; 'Norvégien'
- when /Icelandic/i; 'Islandais'
- when /Dutch/i; 'Néerlandais'
- when /Estonian/i; 'Estonien'
- when /Hungarian/i; 'Hongrois'
- when /Polish/i; 'Polonais'
- when /Romanian/i; 'Roumain'
- when /Russian/i; 'Russe'
- when /Greek/i; 'Grec'
- when /Ukranian/i; 'Ukrainien'
- when /Turkish/i; 'Turc'
- when /Slovenian/i; 'Slovène'
- when /Croatian/i; 'Croate'
- when /Slovak(?:ian)?/i; 'Slovaque'
- when /Czech/i; 'Tcheque'
- when /Bulgarian/i; 'Bulgare'
- else @trans_str
- end
- end
- end
- class German
- def initialize(md,doc_lang,trans_str)
- @md,@doc_lang,@trans_str=md,doc_lang,trans_str
- end
- def filename
- 'Dateiname'
- end
- def filetype_description
- description
- end
- def metadata
- 'Metadata'
- end
- def file_size
- 'Dateigrösse'
- end
- def full_title #dc
- 'Titel'
- end
- def title
- 'Titel'
- end
- def subtitle
- 'Untertitel'
- end
- def author
- 'Autor'
- end
- def contributor #dc
- 'Mitautor'
- end
- def translator
- 'Übersetzung'
- end
- def illustrator
- 'Illustrator'
- end
- def publisher
- 'Herausgeber'
- end
- def prepared_by
- 'gesetzt von'
- end
- def digitized_by
- 'digitalisiert von'
- end
- def contents
- 'Contents' #translate
- end
- def subject
- 'Titel'
- end
- def description #dc (watch)
- 'Beschreibung'
- end
- def abstract #dc
- 'Abstract'
- end
- def type
- 'Typ'
- end
- def rights
- 'Rechte'
- end
- def date
- 'Datum'
- end
- def date_created
- 'Erstellung'
- end
- def date_issued
- 'Herausgabe'
- end
- def date_available
- 'Veröffentlichung'
- end
- def date_modified
- 'Modifikation'
- end
- def date_valid
- 'Gültigkeit'
- end
- def language
- 'Sprache'
- end
- def language_original
- 'Ursprungssprache'
- end
- def format #dc
- 'Format'
- end
- def identifier #dc
- 'Bezeichnung'
- end
- def source #dc
- 'Quelle'
- end
- def relation #dc
- 'Beziehung'
- end
- def coverage #dc
- 'Eingrenzung'
- end
- def keywords
- 'Schlüsselwörter'
- end
- def comments
- 'Kommentare'
- end
- def cls_loc
- 'Klassifikation nach Library of Congress'
- end
- def cls_dewey
- 'Klassifikation nach Dewey'
- end
- def cls_oclc # fix
- 'Classify OCLC number'
- end
- def cls_gutenberg
- 'Klassifikation nach Projekt Gutenberg'
- end
- def cls_isbn
- 'Klassifikation nach ISBN'
- end
- def prefix_a
- 'Präfix (a)'
- end
- def prefix_b
- 'Präfix (b)'
- end
- def topic_register
- 'Topics Registered'
- end
- def sourcefile
- 'Quelldatei'
- end
- def word_count
- 'Anzahl Wörter'
- end
- def sourcefile_digest
- 'Quelldatei Digest'
- end
- def digest_md5
- 'Prüfsumme der Quelldatei (MD5)'
- end
- def digest_sha256
- 'Prüfsumme der Quelldatei (SHA256)'
- end
- def sc_number
- 'Dokumentversion (RCS/CVS)'
- end
- def sc_date
- 'Dokumentdatum (RCS/CVS)'
- end
- def last_generated
- 'Letzte Erstellung (metaverse)'
- end
- def sisu_version
- 'erstellt bei'
- end
- def ruby_version
- 'Ruby Version'
- end
- def suggested_links
- 'empfohlene Links'
- end
- def language_version_list
- 'verfügbare Sprachen'
- end
- def manifest_description
- 'SiSU manifest of document filetypes and metadata'
- end
- def manifest_description_output
- 'SiSU Zusammenfassung des Dokumentes'
- end
- def manifest_description_metadata
- 'SiSU Zusammenfassung der Metadaten'
- end
- def language_list_translated
- lang=case @trans_str
- when /American/i; 'Amerikanisch-Englisch' # tag depreciated, see iso 639-2
- when /English/i; 'Englisch'
- when /French/i; 'Französisch'
- when /German/i; 'Deutsch'
- when /Italian/i; 'Italienisch'
- when /Spanish/i; 'Spanisch'
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- 'Brasilianisch-Portugiesisch' # tag depreciated, see iso 639-2
- when /Portuguese/i; 'Portugiesisch'
- when /Swedish/i; 'Schwedisch'
- when /Danish/i; 'Dänisch'
- when /Finnish/i; 'Finnisch'
- when /Norwegian/i; 'Norwegisch'
- when /Icelandic/i; 'Isländisch'
- when /Dutch/i; 'Niederländisch'
- when /Estonian/i; 'Estnisch'
- when /Hungarian/i; 'Ungarisch'
- when /Polish/i; 'Polnisch'
- when /Romanian/i; 'Rumänisch'
- when /Russian/i; 'Russisch'
- when /Greek/i; 'Griechisch'
- when /Ukranian/i; 'Ukrainisch'
- when /Turkish/i; 'Türkisch'
- when /Slovenian/i; 'Slovenisch'
- when /Croatian/i; 'Kroatisch'
- when /Slovak(?:ian)?/i; 'Slovakisch'
- when /Czech/i; 'Tschechisch'
- when /Bulgarian/i; 'Bulgarisch'
- else @trans_str
- end
- end
- end
- class Spanish
- def initialize(md,doc_lang,trans_str)
- @md,@doc_lang,@trans_str=md,doc_lang,trans_str
- end
- def filename
- 'nombre del fichero'
- end
- def filetype_description
- description
- end
- def metadata
- 'metadatos'
- end
- def file_size
- 'tamaño del fichero'
- end
- def full_title #dc
- 'Título'
- end
- def title
- 'Título'
- end
- def subtitle
- 'Subtítulo'
- end
- def author #dc
- 'Creador'
- end
- def contributor #dc
- 'Contribuidor'
- end
- def translator
- 'Traductor'
- end
- def illustrator
- 'Ilustrador'
- end
- def publisher #dc
- 'Editor'
- end
- def prepared_by
- 'Preparado por'
- end
- def digitized_by
- 'Digitalizado por'
- end
- def contents
- 'Contents' #translate
- end
- def subject #dc
- 'Asunto'
- end
- def description #dc (watch)
- 'Descripción'
- end
- def abstract #dc
- 'Resumen'
- end
- def type #dc
- 'Tipo'
- end
- def rights #dc
- 'Derechos'
- end
- def date #dc
- 'Fecha'
- end
- def date_created #dc
- 'Fecha de creación'
- end
- def date_issued #dc
- 'Fecha de publicación'
- end
- def date_available #dc
- 'Fecha de disponibilidad'
- end
- def date_modified #dc
- 'Fecha de modificación'
- end
- def date_valid #dc
- 'Fecha de valided'
- end
- def language #dc
- 'Idioma'
- end
- def language_original
- 'Lenguaje original'
- end
- def format #dc
- 'Formato'
- end
- def identifier #dc
- 'Identificador'
- end
- def source #dc
- 'Fuente'
- end
- def relation #dc
- 'Relación'
- end
- def coverage #dc
- 'Cobertura'
- end
- def keywords
- 'Palabras claves'
- end
- def comments
- 'Comentarios'
- end
- def cls_loc
- 'Clasificación Biblioteca del Congreso'
- end
- def cls_dewey
- 'Clasificación Dewey'
- end
- def cls_oclc # fix
- 'Classify OCLC number'
- end
- def cls_gutenberg
- 'Clasificación Proyecto Gutenberg'
- end
- def cls_isbn
- 'Clasificación ISBN'
- end
- def prefix_a
- 'Prefijo (a)'
- end
- def prefix_b
- 'Prefijo (b)'
- end
- def topic_register
- 'Topics Registered'
- end
- def sourcefile
- 'Fichero fuente'
- end
- def word_count
- 'Número de palabras apróximado'
- end
- def sourcefile_digest
- 'Resumen del fichero fuente'
- end
- def digest_md5
- 'Resumen del fichero fuente (md5)'
- end
- def digest_sha256
- 'Resumen del fichero fuente (sha256)'
- end
- def sc_number
- 'Versión (RCS/CVS) del documento'
- end
- def sc_date
- 'Versión (RCS/CVS) del documento'
- end
- def last_generated
- 'Última generación (metaverse) del documento'
- end
- def sisu_version
- 'Generado por'
- end
- def ruby_version
- 'Versión de Ruby'
- end
- def suggested_links
- 'enlaces sugeridos de metadatos'
- end
- def language_version_list
- 'Document Language Versions, manifests'
- end
- def manifest_description
- 'SiSU manifest of document filetypes and metadata'
- end
- def manifest_description_output
- 'Manifiesto SiSU de salida generada'
- end
- def manifest_description_metadata
- 'Manifiesto SiSU de metadatos de documento'
- end
- def language_list_translated
- lang=case @trans_str
- when /American/i; 'Inglés Americano' # tag depreciated, see iso 639-2
- when /English/i; 'Inglés'
- when /French/i; 'Francés'
- when /German/i; 'Alemán'
- when /Italian/i; 'Italiano'
- when /Spanish/i; 'Español'
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- 'Portugués de Brasil' # tag depreciated, see iso 639-2
- when /Portuguese/i; 'Portugués'
- when /Swedish/i; 'Sueco'
- when /Danish/i; 'Danés'
- when /Finnish/i; 'Finés'
- when /Norwegian/i; 'Noruego'
- when /Icelandic/i; 'Islandés'
- when /Dutch/i; 'Holandés'
- when /Estonian/i; 'Estonio'
- when /Hungarian/i; 'Húngaro'
- when /Polish/i; 'Polaco'
- when /Romanian/i; 'Rumano'
- when /Russian/i; 'Ruso'
- when /Greek/i; 'Griego'
- when /Ukranian/i; 'Ucraniano'
- when /Turkish/i; 'Turco'
- when /Slovenian/i; 'Eslovaco'
- when /Croatian/i; 'Croata'
- when /Slovak(?:ian)?/i; 'Eslovaco'
- when /Czech/i; 'Checo'
- when /Bulgarian/i; 'Búlgaro'
- else @trans_str
- end
- end
- end
- class Italian
- def initialize(md,doc_lang,trans_str)
- @md,@doc_lang,@trans_str=md,doc_lang,trans_str
- end
- def filename
- 'nome del file'
- end
- def filetype_description
- description
- end
- def metadata
- 'metadati'
- end
- def file_size
- 'dimensione'
- end
- def full_title #dc
- 'Titolo'
- end
- def title
- 'Titolo'
- end
- def subtitle
- 'Sottotitolo'
- end
- def author #dc
- 'Autore'
- end
- def contributor #dc
- 'Contributore'
- end
- def translator
- 'Traduttore'
- end
- def illustrator
- 'Illustratore'
- end
- def publisher #dc
- 'Casa editrice'
- end
- def prepared_by
- 'Preparato da'
- end
- def digitized_by
- 'Convertito in digitale da'
- end
- def contents
- 'Contents' #translate
- end
- def subject #dc
- 'Oggetto'
- end
- def description #dc (watch)
- 'Descrizione'
- end
- def abstract #dc
- 'Abstract'
- end
- def type #dc
- 'Tipo'
- end
- def rights #dc
- 'Diritti del lettore'
- end
- def date #dc
- 'Data'
- end
- def date_created #dc
- 'Data di creazione'
- end
- def date_issued #dc
- 'Data di pubblicazione'
- end
- def date_available #dc
- 'Data di effettiva disponibilità'
- end
- def date_modified #dc
- 'Data di ultima modifica'
- end
- def date_valid #dc
- 'Data di inizo validità'
- end
- def language #dc
- 'Lingua'
- end
- def language_original
- 'Lingua originale'
- end
- def format #dc
- 'Formato'
- end
- def identifier #dc
- 'Indentificatore'
- end
- def source #dc
- 'Fonte'
- end
- def relation #dc
- 'Collegamento'
- end
- def coverage #dc
- 'Ambito'
- end
- def keywords
- 'Parole chiave'
- end
- def comments
- 'Commenti'
- end
- def cls_loc
- 'Classificazione della Library of Congress'
- end
- def cls_dewey
- 'Classificazione Dewey'
- end
- def cls_oclc # fix
- 'Classify OCLC number'
- end
- def cls_gutenberg
- 'Classificazione del Progetto Gutenberg'
- end
- def cls_isbn
- 'Numero ISBN'
- end
- def prefix_a
- 'Premessa (a)'
- end
- def prefix_b
- 'Premessa (b)'
- end
- def topic_register
- 'Topics Registered'
- end
- def sourcefile
- 'Sorgente'
- end
- def word_count
- 'Numero approssimativo di parole'
- end
- def sourcefile_digest
- 'Checksum file sorgente'
- end
- def digest_md5
- 'Checksum file sorgente (md5)'
- end
- def digest_sha256
- 'Checksum file sorgente (sha256)'
- end
- def sc_number
- 'Numero di revisione (RCS/CVS)'
- end
- def sc_date
- 'Numero di revisione (RCS/CVS)'
- end
- def last_generated
- 'Data di ultima generazione (dal metaverse)'
- end
- def sisu_version
- 'Generato da'
- end
- def ruby_version
- 'Ruby versione'
- end
- def suggested_links
- 'Link suggeriti'
- end
- def language_version_list
- 'Traduzioni disponibili'
- end
- def manifest_description
- 'SiSU manifest of document filetypes and metadata'
- end
- def manifest_description_output
- 'Inventario SiSU dell\'output generato'
- end
- def manifest_description_metadata
- 'Inventario SiSU dei metadati'
- end
- def language_list_translated
- lang=case @trans_str
- when /American/i; 'Inglese USA' # tag depreciated, see iso 639-2
- when /English/i; 'Inglese'
- when /French/i; 'Francese'
- when /German/i; 'Tedesco'
- when /Italian/i; 'Italiano'
- when /Spanish/i; 'Spagnolo'
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- 'Portoguese (Brasile)' # tag depreciated, see iso 639-2
- when /Portuguese/i; 'Portoguese'
- when /Swedish/i; 'Svedese'
- when /Danish/i; 'Danese'
- when /Finnish/i; 'Finlandese'
- when /Norwegian/i; 'Norvegese'
- when /Icelandic/i; 'Islandese'
- when /Dutch/i; 'Olandese'
- when /Estonian/i; 'Estone'
- when /Hungarian/i; 'Ungherese'
- when /Polish/i; 'Polacco'
- when /Romanian/i; 'Romeno'
- when /Russian/i; 'Russo'
- when /Greek/i; 'Greco'
- when /Ukranian/i; 'Ucraino'
- when /Turkish/i; 'Turco'
- when /Slovenian/i; 'Sloveno'
- when /Croatian/i; 'Croato'
- when /Slovak(?:ian)?/i; 'Slovacco'
- when /Czech/i; 'Ceco'
- when /Bulgarian/i; 'Bulgaro'
- else @trans_str
- end
- end
- end
- class Finnish
- def initialize(md,doc_lang,trans_str)
- @md,@doc_lang,@trans_str=md,doc_lang,trans_str
- end
- def filename
- 'tiedostonimi'
- end
- def filetype_description
- description
- end
- def metadata
- 'metadata'
- end
- def file_size
- 'tiedoston koko'
- end
- def full_title #dc
- 'otsikko'
- end
- def title
- 'Otsikko'
- end
- def subtitle
- 'Alaotsikko'
- end
- def author #dc
- 'tekijä'
- end
- def contributor #dc
- 'osallistuja'
- end
- def translator
- 'Kääntäjä'
- end
- def illustrator
- 'Kuvittaja'
- end
- def publisher #dc
- 'julkaisija'
- end
- def prepared_by
- 'Valmistaja'
- end
- def digitized_by
- 'Digitalisoinut'
- end
- def contents
- 'Contents' #translate
- end
- def subject #dc
- 'aihe'
- end
- def description #dc (watch)
- 'kuvaus'
- end
- def abstract #dc
- 'tiivistelmä'
- end
- def type #dc
- 'tyyppi'
- end
- def rights #dc
- 'oikeudet'
- end
- def date #dc
- 'päiväys'
- end
- def date_created #dc
- 'luontipäivä'
- end
- def date_issued #dc
- 'julkaisupäivä'
- end
- def date_available #dc
- 'saantipäivä'
- end
- def date_modified #dc
- 'muokkauspäivä'
- end
- def date_valid #dc
- 'kelpoisuuspäivä'
- end
- def language #dc
- 'kieli'
- end
- def language_original
- 'Alkuperäiskieli'
- end
- def format #dc
- 'muoto'
- end
- def identifier #dc
- 'tunnus'
- end
- def source #dc
- 'lähde'
- end
- def relation #dc
- 'suhde'
- end
- def coverage #dc
- 'kattavuus'
- end
- def keywords
- 'Avainsanat'
- end
- def comments
- 'Kommentit'
- end
- def cls_loc
- 'Classify Library of Congress'
- end
- def cls_dewey
- 'Classify Dewey'
- end
- def cls_oclc # fix
- 'Classify OCLC number'
- end
- def cls_gutenberg
- 'Classify Project Gutenberg'
- end
- def cls_isbn
- 'Classify ISBN'
- end
- def prefix_a
- 'Prefix (a)'
- end
- def prefix_b
- 'Prefix (b)'
- end
- def topic_register
- 'Topics Registered'
- end
- def sourcefile
- 'Lähdetiedosto'
- end
- def word_count
- 'Arvioitu sanamäärä'
- end
- def sourcefile_digest
- 'Lähdetiedoston tiiviste'
- end
- def digest_md5
- 'Lähdetiedoston tiiviste (md5)'
- end
- def digest_sha256
- 'Lähdetiedoston tiiviste (sha256)'
- end
- def sc_number
- 'Dokumentin RCS/CVS-numero'
- end
- def sc_date
- 'Dokumentin RCS/CVS-päiväys'
- end
- def last_generated
- 'Viimeksi tuotettu dokumentti (metaverse)'
- end
- def sisu_version
- 'Generoinut'
- end
- def ruby_version
- 'Ruby-versio'
- end
- def suggested_links
- 'metadatan ehdottamat linkit'
- end
- def language_version_list
- 'Dokumentin kieliversiot, manifestit'
- end
- def manifest_description
- 'SiSU manifest of document filetypes and metadata'
- end
- def manifest_description_output
- 'Tuotetun tuloksen SISU-manifesti'
- end
- def manifest_description_metadata
- 'Dokumenttimetadatan SISU-manifesti'
- end
- def language_list_translated
- lang=case @trans_str
- when /American/i; 'Amerikanenglanti' # tag depreciated, see iso 639-2
- when /English/i; 'Englanti'
- when /French/i; 'Ranska'
- when /German/i; 'Saksa'
- when /Italian/i; 'Italia'
- when /Spanish/i; 'Espanja'
- when /Portuguese Brazil|Brazilian(?: Portuguese)?/i;
- 'Brasilian portugali' # tag depreciated, see iso 639-2
- when /Portuguese/i; 'Portugali'
- when /Swedish/i; 'Ruotsi'
- when /Danish/i; 'Tanska'
- when /Finnish/i; 'Suomi'
- when /Norwegian/i; 'Norja'
- when /Icelandic/i; 'Islanti'
- when /Dutch/i; 'Hollanti'
- when /Estonian/i; 'Viro'
- when /Hungarian/i; 'Unkari'
- when /Polish/i; 'Puola'
- when /Romanian/i; 'Romania'
- when /Russian/i; 'Venäjä'
- when /Greek/i; 'Kreikka'
- when /Ukranian/i; 'Ukraina'
- when /Turkish/i; 'Turkki'
- when /Slovenian/i; 'Slovenia'
- when /Croatian/i; 'Kroatia'
- when /Slovak(?:ian)?/i; 'Slovakki'
- when /Czech/i; 'Tsekki'
- when /Bulgarian/i; 'Bulgaria'
- else @trans_str
- end
- end
- end
- class Portuguese < English
- end
- class Swedish < English
- def contents
- 'Innehåll'
- end
- end
- class Danish < English
- end
- class Norwegian < English
- end
- class Icelandic < English
- end
- class Dutch < English
- end
- class Estonian < English
- end
- class Hungarian < English
- end
- class Polish < English
- end
- class Romanian < English
- end
- class Russian < English
- end
- class Greek < English
- end
- class Ukranian < English
- end
- class Turkish < English
- end
- class Croatian < English
- end
- class Slovakian < English
- end
- class Czech < English
- end
- class Bulgarian < English
- end
-end
-__END__
-http://www.debian.org/international/l10n/po/
-http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
-http://www.loc.gov/standards/iso639-2/php/code_list.php
-albanian sq
-amharic am
-arabic ar
-armenian hy
-asturian
-bahasai
-bahasam
-basque eu
-bengali bn
-brazil[ian] pt_BR
-breton br
-bulgarian bg
-catalan ca
-coptic
-croatian hr
-czech cs
-danish da
-divehi
-dutch nl
-english en
-esperanto eo
-estonian et
-galician gl
-german de
-greek el
-hebrew he
-hindi hi
-icelandic is
-interlingua ia
-irish ga
-italian it
-farsi
-finnish fi
-french fr
-lao lo
-latin la
-latvian lv
-lithuanian lt
-lsorbian
-magyar
-malayalam ml
-marathi mr
-norsk no
-nynorsk nn
-occitan oc
-polish pl
-portuges pt
-romanian ro
-russian ru
-samin se (check sami?)
-sanskrit sa
-scottish # (gd (Gaelic (Scots)))
-serbian sr
-slovak sk
-slovenian sl
-spanish es
-swedish sv
-syriac # (ar_SY (Arabic, as spoken in Syrian Arab Republic))
-tamil ta
-telugu te
-thai th
-turkish tr
-turkmen tk
-ukrainian uk
-urdu ur
-usorbian
-vietnamese vi
-welsh cy
diff --git a/lib/sisu/v3dv/qrcode.rb b/lib/sisu/v3dv/qrcode.rb
deleted file mode 100644
index d2b16753..00000000
--- a/lib/sisu/v3dv/qrcode.rb
+++ /dev/null
@@ -1,738 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: summary of generated outputs and metadata
-
-=end
-module SiSU_QRcode
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'prog_text_translation' # prog_text_translation.rb
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'html' # html.rb
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'i18n' # i18n.rb
- include SiSU_Viz
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- l=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
- @doc_language=l[:n]
- end
- def read
- begin
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @md=SiSU_Param::Parameters.new(@opt).get
- SiSU_Env::InfoSkin.new(@md).select
- xbrowser=@env.program.web_browser
- browser=@env.program.console_web_browser
- unless @opt.cmd =~/q/
- url_html="file://#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}"
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'QR code',"#{xbrowser} #{url_html}").green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'QR code',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}").green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,"#{browser} #{url_html}").grey_tab if @opt.cmd =~/v/i
- end
- data=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
- OutputInfo.new(@md).check_output(data)
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class OutputInfo <Source
- def initialize(md)
- @manifest={ txt: [], txt_title: [] }
- @md,@fns=md,md.fns
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @fnb=@md.fnb
- @base_url="#{@env.url.root}/#{@fnb}"
- @f=SiSU_Env::FileOp.new(@md)
- @base_path=@f.output_path.manifest.dir
- @@dg ||=SiSU_Env::InfoEnv.new.digest.type
- @dg=@@dg
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- @language=l[:n]
- @translate=SiSU_Translate::Source.new(@md,@language)
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @f.make_path(@f.output_path.qrcode.dir)
- end
- def output_metadata
- fn=@f.base_filename.manifest_txt
- mn=''
- if @md.opt =~/M/
- pt=@f.output_path.manifest.dir
- fn=@f.base_filename.manifest_txt
- manifest=@f.write_file.manifest_txt
- end
- @manifest[:txt].each do |x|
- manifest << x if @md.opt =~/M/
- mn += x
- end
- manifest.close if @md.opt =~/M/
- #system(%{
- # cat #{pt}/#{fn} | qrencode -s 3 -o qrcm.autonomy_markup0.png
- #})
- cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_md.dir,@md.opt.cmd)
- cmd.qrencode
- #system(%{
- # echo "#{mn}" | qrencode -s 3 -o #{@dest}/qrc_md.#{fn}.png
- #})
- end
- def output_metadata_short
- fn=@f.base_filename.manifest_txt
- mn=''
- @manifest[:txt_title].each do |x|
- mn += x
- end
- cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_title.dir,@md.opt.cmd)
- cmd.qrencode
- #system(%{
- # echo "#{mn}" | qrencode -s 3 -o #{@dest}/qrc_title.#{fn}.png
- #})
- end
- def summarize(id,file,pth='',rel='',url='',img='● ')
- size=(File.size("#{pth}/#{file}")/1024.00).to_s
- kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
- @manifest[:txt] <<<<WOK
-#{id} #{kb}
- #{@brace_url.txt_open}#{url}/#{file}#{@brace_url.txt_close}
-WOK
- end
- def summarize_html_seg(id,file,pth='',rel='',url='',img='● ')
- size=(File.size("#{pth}/#{file}")/1024.00).to_s
- kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
- @manifest[:txt] <<<<WOK
-#{id} #{kb}
- #{@brace_url.txt_open}#{url}/#{file}#{@brace_url.txt_close}
-WOK
- end
- def summarize_sources(id,file,pth,rel,url)
- sys=SiSU_Env::SystemCall.new
- dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{pth}/#{file}")
- else sys.md5("#{pth}/#{file}")
- end
- SiSU_Screen::Ansi.new(@md.opt.cmd,"#{dgst[1]} #{file}").warn if @md.opt.cmd =~/[vVM]/
- size=(File.size("#{pth}/#{file}")/1024.00).to_s
- kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
- @manifest[:txt] <<<<WOK
-#{id} #{dgst[1]} #{kb}
- #{@brace_url.txt_open}#{url}/#{file}#{@brace_url.txt_close}
-WOK
- end
- def published_manifests?
- @f=SiSU_Env::FileOp.new(@md) #.base_filename
- @m=[]
- url=@f.output_path.base.url
- manifests={}
- mp,mn,mt=nil,nil,nil
- ln=SiSU_i18n::Languages.new.language.list
- Px[:lng_lst].each do |lc|
- if @env.output_dir_structure.by_language_code?
- mp="#{@f.output_path.base.dir}/#{lc}/manifest"
- mn="#{@md.fnb}.html"
- mt="#{mp}/#{mn}"
- mu="#{url}/#{lc}/manifest/#{mn}"
- elsif @env.output_dir_structure.by_filetype?
- mp="#{@f.output_path.base.dir}/manifest"
- mn="#{@md.fnb}.#{lc}.html"
- mt="#{mp}/#{mn}"
- mu="#{url}/manifest/#{mn}"
- else
- mp="#{@f.output_path.base.dir}/#{@md.fnb}"
- mn="sisu_manifest.#{lc}.html"
- mt="#{mp}/#{mn}"
- mu="#{url}/#{mn}"
- end
- if FileTest.directory?(mp) \
- && FileTest.file?(mt)
- lng=ln[lc][:t]
- manifests[lc]={ ln: lng, fn: mn }
- @m << { mu: mu, l: lng }
- end
- end
- #url=@f.output_path.base.url
- #@en_manifest=if @env.output_dir_structure.by_language_code?
- # "#{url}/en/manifest/#{@md.fnb}.html"
- #elsif @env.output_dir_structure.by_filetype?
- # "#{url}/manifest/#{@md.fnb}.#{lc}.html"
- #else
- # "#{url}/sisu_manifest.#{lc}.html"
- #end
- manifests
- @m=@m.uniq
- @m
- end
- def languages(id,file)
- flv=published_manifests?
- flv.each do |l|
- lang=SiSU_Translate::Source.new(@md,@language,l[:n]).language_list
- @manifest[:txt] << "#{l[:mu]} #{l[:l]}\n"
- end
- end
- def published_languages(id,file)
- flv=published_manifests?
- flv.each do |l|
- @manifest[:txt] << "#{l[:l]} #{@brace_url.txt_open}#{l[:mu]}#{@brace_url.txt_close}\n"
- end
- end
- def metadata(id,info)
- info=info.to_s.gsub(/#{Mx[:br_line]}/,"\n")
- @manifest[:txt] << %{#{id}: #{info}\n}
- end
- def md_title_info(id,info)
- info=info.to_s.gsub(/#{Mx[:br_line]}/,"\n")
- @manifest[:txt_title] << %{#{info}\n}
- end
- def links(url,lnk,target)
- static=if url =~/^\.\//; url.gsub(/^\.(\.)?/,@base_url)
- elsif url =~/^\.\.\//; url.gsub(/^\.(\.)?/,@env.url.root)
- else url
- end
- @manifest[:txt] << %{#{url} #{lnk} #{@brace_url.txt_open}#{static}#{@brace_url.txt_close}\n}
- end
- def output_tests
- if FileTest.file?(@f.place_file.html_segtoc.dir)==true
- pth=@f.output_path.html_seg.dir
- rel=@f.output_path.html_seg.rel_sm
- url=@f.output_path.html_seg.url
- id,file='HTML, table of contents (for segmented text)',@f.base_filename.html_segtoc
- summarize_html_seg(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.html_scroll.dir)==true
- pth=@f.output_path.html_scroll.dir
- rel=@f.output_path.html_scroll.rel_sm
- url=@f.output_path.html_scroll.url
- id,file='HTML, full length document',@f.base_filename.html_scroll
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.html_book_index.dir)==true
- pth=@f.output_path.html_seg.dir
- rel=@f.output_path.html_seg.rel_sm
- url=@f.output_path.html_seg.url
- id,file='HTML, (book type) index',@f.base_filename.html_book_index
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.html_concordance.dir)==true
- pth=@f.output_path.html_seg.dir
- rel=@f.output_path.html_seg.rel_sm
- url=@f.output_path.html_seg.url
- id,file='HTML, concordance file',@f.base_filename.html_concordance
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.epub.dir)==true
- id,file='EPUB (Electronic Publication, e-book standard)',@f.base_filename.epub
- pth=@f.output_path.epub.dir
- rel=@f.output_path.epub.rel_sm
- url=@f.output_path.epub.url
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_letter}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. letter size, portrait/vertical","#{@f.base_filename.pdf_p_letter}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_letter}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. letter size, landscape/horizontal","#{@f.base_filename.pdf_l_letter}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a4}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A4 size, portrait/vertical","#{@f.base_filename.pdf_p_a4}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a4}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A4 size, landscape/horizontal","#{@f.base_filename.pdf_l_a4}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a5}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A5 (book) size, portrait/vertical","#{@f.base_filename.pdf_p_a5}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a5}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, A5 (book) size, landscape/horizontal","#{@f.base_filename.pdf_l_a5}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_b5}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, B5 (book) size, portrait/vertical","#{@f.base_filename.pdf_p_b5}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_b5}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, B5 (book) size, landscape/horizontal","#{@f.base_filename.pdf_l_b5}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_legal}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. legal size, portrait/vertical","#{@f.base_filename.pdf_p_legal}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_legal}")==true
- pth=@f.output_path.pdf.dir
- rel=@f.output_path.pdf.rel_sm
- url=@f.output_path.pdf.url
- id,file="PDF, U.S. legal size, landscape/horizontal","#{@f.base_filename.pdf_l_legal}"
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.odt.dir)==true
- pth=@f.output_path.odt.dir
- rel=@f.output_path.odt.rel_sm
- url=@f.output_path.odf.url
- id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.xhtml.dir)==true
- pth=@f.output_path.xhtml.dir
- rel=@f.output_path.xhtml.rel_sm
- url=@f.output_path.xhtml.url
- id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt
- id,file='XHTML',@f.base_filename.xhtml
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.xml_sax.dir)==true
- pth=@f.output_path.xml_sax.dir
- rel=@f.output_path.xml_sax.rel_sm
- url=@f.output_path.xml_sax.url
- id,file='XML SAX',@f.base_filename.xml_sax
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.xml_dom.dir)==true
- pth=@f.output_path.xml_dom.dir
- rel=@f.output_path.xml_dom.rel_sm
- url=@f.output_path.xml_dom.url
- id,file='XML DOM',@f.base_filename.xml_dom
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.txt.dir)==true
- if @md.opt.cmd =~/a/; id='Plaintext (Unix (UTF-8) with footnotes)'
- elsif @md.opt.cmd =~/e/; id='Plaintext (Unix (UTF-8) with endnotes)'
- elsif @md.opt.cmd =~/A/; id='Plaintext (dos (UTF-8) with footnotes)'
- elsif @md.opt.cmd =~/E/; id='Plaintext (dos (UTF-8) with endnotes)'
- else id='Plaintext (UTF-8)'
- end
- pth=@f.output_path.txt.dir
- rel=@f.output_path.txt.rel_sm
- url=@f.output_path.txt.url
- file=@f.base_filename.txt
- 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='','',''
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true
- id,file='LaTeX (landscape)',"#{@md.fns}.landscape.tex"
- pth,rel,url='','',''
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.manpage.dir)==true
- pth=@f.output_path.manpage.dir
- rel=@f.output_path.manpage.rel_sm
- url=@f.output_path.manpage.url
- id,file='Manpage',@f.base_filename.manpage
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.texinfo.dir)==true
- pth=@f.output_path.texinfo.dir
- rel=@f.output_path.texinfo.rel_sm
- url=@f.output_path.texinfo.url
- id,file='Texinfo',@f.base_filename.texinfo
- summarize(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.hash_digest.dir)==true
- pth=@f.output_path.hash_digest.dir
- rel=@f.output_path.hash_digest.rel_sm
- url=@f.output_path.hash_digest.url
- id,file="Digest/DCC - Document Content Certificate (#{@dg})",@f.base_filename.hash_digest
- summarize(id,file,pth,rel,url)
- end
- end
- def published_versions
- id,file='Markup (SiSU source)',@md.fns
- #languages(id,file)
- published_languages(id,file)
- end
- def language_versions
- if FileTest.file?(@f.place_file.manifest.dir)==true
- id,file='Markup (SiSU source)',@md.fns
- published_languages(id,file)
- end
- end
- def source_tests
- if @md.fns =~/\.ssm\.sst$/ #% decide whether to extract and include requested/required documents
- req=@md.fns
- if FileTest.file?(@f.place_file.src.dir)==true
- pth=@f.output_path.src.dir
- rel=@f.output_path.src.rel
- url=@f.output_path.src.url
- id,file='Markup Composite File (SiSU source)',@f.base_filename.src
- summarize_sources(id,file,pth,rel,url)
- end
- else
- if FileTest.file?(@f.place_file.src.dir)==true
- pth=@f.output_path.src.dir
- rel=@f.output_path.src.rel
- url=@f.output_path.src.url
- id,file='Markup (SiSU source)',@f.base_filename.src
- summarize_sources(id,file,pth,rel,url)
- end
- end
- if FileTest.file?(@f.place_file.sisupod.dir)==true
- pth=@f.output_path.sisupod.dir
- rel=@f.output_path.sisupod.rel
- url=@f.output_path.sisupod.url
- id,file='SiSU doc (zip)',@f.base_filename.sisupod
- summarize_sources(id,file,pth,rel,url)
- end
- if FileTest.file?(@f.place_file.pot.dir)==true
- pth=@f.output_path.pot.dir
- rel=@f.output_path.pot.rel_sm
- url=@f.output_path.pot.url
- id,file='SiSU pot',@f.base_filename.pot
- summarize_sources(id,file,pth,rel,url)
- end
- end
- def metadata_tests
- if defined? @md.title.full \
- and @md.title.full=~/\S+/
- id,info=@translate.full_title,@md.title.full
- #id,info=@translate.full_title,%{"#{@md.title.full}"}
- metadata(id,info)
- md_title_info(id,info)
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- id,info=@translate.author,@md.creator.author
- metadata(id,info)
- md_title_info(id,info)
- end
- if defined? @md.creator.editor \
- and @md.creator.editor=~/\S+/
- id,info=@translate.editor,@md.creator.editor
- metadata(id,info)
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/
- id,info=@translate.contributor,@md.creator.contributor
- metadata(id,info)
- end
- if defined? @md.creator.translator \
- and @md.creator.translator=~/\S+/
- id,info=@translate.translator,%{(#{@md.creator.translator})}
- metadata(id,info)
- md_title_info(id,info)
- end
- if defined? @md.creator.illustrator \
- and @md.creator.illustrator=~/\S+/
- id,info=@translate.illustrator,@md.creator.illustrator
- metadata(id,info)
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/ #dc
- id,info=@translate.publisher,@md.publisher
- metadata(id,info)
- end
- if defined? @md.creator.prepared_by \
- and @md.creator.prepared_by=~/\S+/
- id,info=@translate.prepared_by,@md.creator.prepared_by
- metadata(id,info)
- end
- if defined? @md.creator.digitized_by \
- and @md.creator.digitized_by=~/\S+/
- id,info=@translate.digitized_by,@md.creator.digitized_by
- metadata(id,info)
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- id,info=@translate.subject,@md.classify.subject
- metadata(id,info)
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- id,info=@translate.description,@md.notes.description
- metadata(id,info)
- end
- if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- id,info=@translate.abstract,@md.notes.abstract
- metadata(id,info)
- end
- if defined? @md.type \
- and @md.type=~/\S+/ #dc
- id,info=@translate.type,@md.type
- metadata(id,info)
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/ #dc
- id,info=@translate.rights,@md.rights.all
- metadata(id,info)
- end
- if defined? @md.date.published
- if defined? @md.date.published \
- and @md.date.published=~/\S+/ #dc
- id,info=@translate.date,@md.date.published
- metadata(id,info)
- md_title_info(id,info)
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/ #dc
- id,info=@translate.date_created,@md.date.created
- metadata(id,info)
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/ #dc
- id,info=@translate.date_issued,@md.date.issued
- metadata(id,info)
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/ #dc
- id,info=@translate.date_available,@md.date.available
- metadata(id,info)
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/ #dc
- id,info=@translate.date_modified,@md.date.modified
- metadata(id,info)
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/ #dc
- id,info=@translate.date_valid,@md.date.valid
- metadata(id,info)
- end
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/
- id,info=@translate.language,@md.title.language
- metadata(id,info)
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- id,info=@translate.language_original,@md.original.language
- metadata(id,info)
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- id,info=@transate.format,@md.classify.format
- metadata(id,info)
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- id,info=@translate.identifier,@md.classify.identifier
- metadata(id,info)
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/
- id,info=@translate.source,@md.original.source
- metadata(id,info)
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- id,info=@translate.relation,@md.classify.relation
- metadata(id,info)
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- id,info=@translate.coverage,@md.classify.coverage
- metadata(id,info)
- end
- if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- id,info=@translate.keywords,@md.classify.keywords
- metadata(id,info)
- end
- if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- id,info=@translate.comments,@md.notes.comment
- metadata(id,info)
- end
- if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- id,info=@translate.cls_loc,@md.classify.loc
- metadata(id,info)
- end
- if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- id,info=@translate.cls_dewey,@md.classify.dewey
- metadata(id,info)
- end
- if defined? @md.classify.oclc \
- and @md.classify.oclc=~/\S+/
- id,info=@translate.cls_oclc,@md.classify.oclc
- @manifest[:txt] << %{#{id}:\n}
- @manifest[:txt] << %{#{info}\n}
- end
- if defined? @md.classify.pg \
- and @md.classify.pg=~/\S+/
- id,info=@translate.cls_gutenberg,@md.classify.pg
- metadata(id,info)
- end
- if defined? @md.classify.isbn \
- and @md.classify.isbn=~/\S+/
- id,info=@translate.cls_isbn,@md.classify.isbn
- metadata(id,info)
- end
- if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- id,info=@translate.prefix_a,@md.notes.prefix_a
- metadata(id,info)
- end
- if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- id,info=@translate.prefix_b,@md.notes.prefix_b
- metadata(id,info)
- end
- if defined? @md.topic_register_array \
- and @md.topic_register_array.length > 0
- @manifest[:txt] << %{#{@translate.topic_register}:\n}
-@sp=' '
- @md.topic_register_array.each do |t|
- t.each_with_index do |st,i|
- if st.class==Array
- st.each do |v|
- @manifest[:txt] << %{#{@sp*i}#{v}\n}
- end
- else @manifest[:txt] << %{#{@sp*i}#{st}\n}
- end
- end
- end
- end
- if @md.fns
- id,info=@translate.sourcefile,@md.fns
- metadata(id,info)
- end
- if @md.en[:mismatch] > 0
- id,info='WARNING document error in endnote markup, number mismatch',"endnotes: #{@md.en[:note]} != endnote reference marks: #{@md.en[:mark]} (difference = #{@md.en[:mismatch]})"
- metadata(id,info)
- end
- if @md.wc_words
- id,info=@translate.word_count,@md.wc_words
- metadata(id,info)
- end
- if @md.dgst
- id,info="#{@translate.sourcefile_digest} (#{@dg})",@md.dgst[1]
- metadata(id,info)
- end
- if @md.sc_number
- id,info=@translate.sc_number,@md.sc_number
- metadata(id,info)
- end
- if @md.sc_date
- id,info=@translate.sc_date,"#{@md.sc_date} at #{@md.sc_time}"
- metadata(id,info)
- end
- end
- def check_output(data)
- begin
- id,file='',''
- vz=SiSU_Env::GetInit.instance.skin
- @f=SiSU_Env::FileOp.new(@md) #.base_filename
- url=@f.output_path.base.url
- @en_manifest=if @env.output_dir_structure.by_language_code?
- "#{url}/en/manifest/#{@md.fnb}.html"
- elsif @env.output_dir_structure.by_filetype?
- "#{url}/manifest/#{@md.fnb}.#{@md.opt.lng}.html"
- else
- "#{url}/sisu_manifest.#{@md.opt.lng}.html"
- end
- @manifest[:txt] <<<<WOK
-#{@translate.manifest_description_metadata}
- #{@brace_url.txt_open}#{@en_manifest}#{@brace_url.txt_close}
-WOK
- metadata_tests
- @manifest[:txt_title] <<<<WOK
- #{@brace_url.txt_open}#{@en_manifest}#{@brace_url.txt_close}
-WOK
- source_tests
- @manifest[:txt] <<<<WOK
-#{@translate.language_version_list}
-WOK
- language_versions
- output_metadata
- output_metadata_short
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/relaxng.rb b/lib/sisu/v3dv/relaxng.rb
deleted file mode 100644
index 77aa36cc..00000000
--- a/lib/sisu/v3dv/relaxng.rb
+++ /dev/null
@@ -1,1161 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: relaxng flow/logic
-
-=end
-module SiSU_Relaxng
- require_relative 'sysenv' # sysenv.rb
- class RelaxNG
- def gpl3_or_later
- @gpl3_or_later =<<RELAXNG
-=begin
-
- * Name: SiSU generated relaxng
-
- * Description: generated relaxng for SiSU
- (SiSU is a framework for document structuring, publishing and search)
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012 Ralph Amissah All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright: (C) 1997 - 2012 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/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
- <http://www.jus.uio.no/sisu/gpl.fsf>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-=end
-RELAXNG
- end
- def rnc_name
- def output_sax
- 'sisu_sax.rnc'
- end
- def output_dom
- 'sisu_dom.rnc'
- end
- def output_xhtml
- 'sisu_xhtml.rnc'
- end
- def input_sax
- 'sisu_sax.rnc'
- end
- def input_dom
- 'sisu_dom.rnc'
- end
- def input_node
- 'sisu_node.rnc'
- end
- self
- end
- def rng_name
- def output_sax
- 'sisu_sax.rng'
- end
- def output_dom
- 'sisu_dom.rng'
- end
- def output_xhtml
- 'sisu_xhtml.rng'
- end
- def input_sax
- 'sisu_sax.rng'
- end
- def input_dom
- 'sisu_dom.rng'
- end
- def input_node
- 'sisu_node.rng'
- end
- self
- end
- def xsd_name
- def output_sax
- 'sisu_sax.xsd'
- end
- def output_dom
- 'sisu_dom.xsd'
- end
- def output_xhtml
- 'sisu_xhtml.xsd'
- end
- def input_sax
- 'sisu_sax.xsd'
- end
- def input_dom
- 'sisu_dom.xsd'
- end
- def input_node
- 'sisu_node.xsd'
- end
- self
- end
- def rnc_sisu_object_input
- @relaxng =<<RELAXNG
-#%% sisu object model: input
-#{gpl3_or_later}
-#%% definitions
-# dublin core:
-element-semantic =
- element semantic {
- # dublin core:
- element title { text }
- & element creator { text }?
- & element subject { text }?
- & element description { text }?
- & element publisher { text }?
- & element contributor { text }?
- & element date { text }?
- & element date.created { text }?
- & element date.issued { text }?
- & element date.available { text }?
- & element date.valid { text }?
- & element date.modified { text }?
- & element type { text }?
- & element format { text }?
- & element identifier { text }?
- & element source { text }?
- & element relation { text }?
- & element coverage { text }?
- & element rights { text }?
- & element keywords { text }?
- # extended semantic metadata:
- & attribute subtitle { text }?
- & attribute illustrator { text }?
- & attribute translator { text }?
- & attribute prepared_by { text }?
- & attribute digitized_by { text }?
- & attribute language { text }?
- & attribute language.original { text }?
- & attribute classify.pg { text }?
- & attribute classify.isbn { text }?
- & attribute classify.dewey { text }?
- & attribute classify.loc { text }?
- & attribute prefix.a { text }?
- & attribute prefix.b { text }?
- & attribute suffix { text }?
- & attribute comments { text }?
- & attribute abstract { text }?
- # & attribute information { text }?
- & attribute contact { text }?
- & attribute links { text }?
- }
-element-processing =
- element processing {
- attribute structure { text }?
- & attribute level { text }?
- & attribute markup { text }?
- & attribute bold { text }?
- & attribute italics { text }?
- & attribute papersize { text }?
- & attribute vocabulary { text }?
- & element date_scheme { text }?
- & element date.issued.scheme { text }?
- & element date.available.scheme { text }?
- & element date.valid.scheme { text }?
- & element date.modified.scheme { text }?
- }?
-element-head =
- element head {
- # processing instructions, and semantic data, distinguish?:
- element metadata {
- element title { text },
- element file { text },
- element generator { text },
- element-semantic,
- element-processing
- }+
- }
-# body text/contents
-# includes <b> <i> <u> <del> <ins> <indent1> <bullet> etc.
-element-txt =
- element txt {
- text*
- & element b { text }*
- & element i { text }*
- & element u { text }*
- & element ins { text }*
- & element del { text }*
- }
-element-endnote =
- element endnote {
- element number { text },
- element note { element-txt }+
- }+
-element-para =
- element para {
- # attribute paragraph_format { text },
- element-txt+
- & element-endnote?
- }
-element-external_space =
- element external_space {
- # ignored by sisu, provide program needs
- element program {
- # e.g. kdissert
- element name { text },
- element xpos { text },
- element ypos { text },
- element font { text },
- element outline_color { text },
- element text_color { text },
- element comment { text }
- }*
- }*,
-#%% structure
- element document {
- # document head:
- element-head,
- # document body:
- element body {
- # object, a unit of text, usually a paragraph with any associated endnotes
- element node {
- element structure {
- # structure document using either node:heading levels or node:heading relationships:
- # (i) sisu default uses node:heading levels (1-6 or A-C,1-3) to build document structure
- element level { text }?,
- # (ii) sisu alternatively could use node:heading relationship information to build document structure
- element node.id { text },
- element node.parent { text },
- element node.child { text }*
- },
- element node.objects {
- element object.heading {
- # nametag used only in headings, especially important for segmented html
- element nametag { text },
- element-para
- },
- element object.para {
- element-para
- }*
- }+,
- element-external_space
- }+
- }
- }
-RELAXNG
- end
- def rnc_sisu_object_dal
- @relaxng =<<RELAXNG
-#%% sisu object model: dal
-#{gpl3_or_later}
-#%% definitions
-# dublin core:
-element-semantic =
- element semantic {
- # dublin core:
- element title { text }
- & element creator { text }?
- & element subject { text }?
- & element description { text }?
- & element publisher { text }?
- & element contributor { text }?
- & element date { text }?
- & element date.created { text }?
- & element date.issued { text }?
- & element date.available { text }?
- & element date.valid { text }?
- & element date.modified { text }?
- & element type { text }?
- & element format { text }?
- & element identifier { text }?
- & element source { text }?
- & element relation { text }?
- & element coverage { text }?
- & element rights { text }?
- & element keywords { text }?
- # extended semantic metadata:
- & attribute subtitle { text }?
- & attribute illustrator { text }?
- & attribute translator { text }?
- & attribute prepared_by { text }?
- & attribute digitized_by { text }?
- & attribute language { text }?
- & attribute language.original { text }?
- & attribute classify.pg { text }?
- & attribute classify.isbn { text }?
- & attribute classify.dewey { text }?
- & attribute classify.loc { text }?
- & attribute prefix.a { text }?
- & attribute prefix.b { text }?
- & attribute suffix { text }?
- & attribute comments { text }?
- & attribute abstract { text }?
- # & attribute information { text }?
- & attribute contact { text }?
- & attribute links { text }?
- }
-element-processing =
- element processing {
- attribute structure { text }?
- & attribute level { text }?
- & attribute markup { text }?
- & attribute bold { text }?
- & attribute italics { text }?
- & attribute papersize { text }?
- & attribute vocabulary { text }?
- & element date_scheme { text }?
- & element date.issued.scheme { text }?
- & element date.available.scheme { text }?
- & element date.valid.scheme { text }?
- & element date.modified.scheme { text }?
- }?
-element-head =
- element head {
- # processing instructions, and semantic data, distinguish?:
- element metadata {
- element title { text },
- element file { text },
- element generator { text },
- element-semantic,
- element-processing
- }+
- }
-# body text/contents
-# includes <b> <i> <u> <del> <ins> <indent1> <bullet> etc.
-element-txt =
- element txt {
- text*
- & element b { text }*
- & element i { text }*
- & element u { text }*
- & element ins { text }*
- & element del { text }*
- }
-element-checksum.endnote = element checksum.clean { text }
-element-endnote =
- element endnote {
- element number { text },
- element note { element-txt }+,
- element-checksum.endnote
- }+
-element-checksum.para =
- element checksum.para {
- element checksum.clean { text },
- element checksum.marked { text }
- }
-element-para =
- element para {
- # attribute paragraph_format { text },
- element-txt+
- & element-endnote?
- }
-element-object =
- element object {
- element-para,
- element-checksum.para
- }
-# object citation number, unique sequential number for objects:
-element-ocn = element ocn { text }
-element-object_structure_summary =
- element-ocn,
- # type: heading level value 1 -6, or normal text
- element type { text },
- # type number: sequential number for designated type
- element type_number { text },
- # type category: sequential number for designated category, e.g. sequentially counting all headers
- element category_number { text }
-element-external_space =
- element external_space {
- # ignored by sisu, provide program needs
- element program {
- # e.g. kdissert
- element name { text },
- element xpos { text },
- element ypos { text },
- element font { text },
- element outline_color { text },
- element text_color { text },
- element comment { text }
- }*
- }*,
-#%% structure
- element document {
- # document head:
- element-head,
- # document body:
- element body {
- # object, a unit of text, usually a paragraph with any associated endnotes
- element node {
- element structure {
- # structure document using either node:heading levels or node:heading relationships:
- # (i) sisu default uses node:heading levels (1-6 or A-C,1-3) to build document structure
- element level { text }?,
- # (ii) sisu alternatively could use node:heading relationship information to build document structure
- element node.id { text },
- element node.parent { text },
- element node.child { text }*
- },
- element node.objects {
- element object.heading {
- element-object_structure_summary,
- # nametag used only in headings, especially important for segmented html
- element nametag { text },
- element-object
- },
- element object.para {
- element-object_structure_summary,
- element-object
- }*
- }+,
- element-external_space
- }+
- }
- }
-RELAXNG
- end
- def rnc_model_output_sax
- @relaxng =<<RELAXNG
-#% sax output model, part of SiSU and distributed under the same license
-default namespace = ""
-namespace xlink = "http://www.w3.org/1999/xlink"
-start =
- element document {
- element head {
- (br
- | meta
- | element creator {
- attribute class { xsd:NCName },
- (text
- | element link {
- attribute xlink:href { xsd:anyURI },
- attribute xlink:type { xsd:NCName },
- xsd:anyURI
- })+
- }
- | element date {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_available {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_created {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_issued {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_modified {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_valid {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element keywords {
- attribute class { xsd:NCName },
- text
- }
- | element language {
- attribute class { xsd:NCName },
- xsd:NCName
- }
- | element meta { xsd:NMTOKEN }
- | element rights {
- attribute class { xsd:NCName },
- (text | link)+
- }
- | element source {
- attribute class { xsd:NCName },
- text
- }
- | element structure {
- attribute class { xsd:NCName },
- text
- }
- | element subject {
- attribute class { xsd:NCName },
- text
- }
- | element title {
- attribute class { xsd:NCName },
- text
- }
- | element type {
- attribute class { xsd:NCName },
- text
- }
- | element source_control {
- (br
- | meta
- | element sc {
- attribute class { xsd:NCName },
- text
- })+
- })+
- },
- element body {
- element object {
- attribute id { text },
- element ocn {
- text
- },
- element text {
- attribute class { xsd:NCName },
- (text
- | b
- | br
- | del
- | en
- | i
- | link
- | sub
- | sup
- | u
- | element image {
- 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 }
- })+
- }?,
- element table {
- attribute align { xsd:NCName },
- attribute bgcolor { xsd:NCName },
- attribute border { xsd:integer },
- attribute cellpadding { xsd:integer },
- attribute summary { text },
- attribute width { text },
- element tr {
- element td {
- attribute valign { xsd:NCName },
- attribute width { text },
- (text | b | i)+
- }+
- }+
- }?,
- element endnote {
- attribute notenumber { xsd:integer }?,
- attribute symbol { text }?,
- (element number { xsd:integer }
- | element symbol { text }),
- element note {
- (text
- | b
- | br
- | del
- | i
- | link
- | sup
- | u
- | element em { xsd:NCName }
- | element sub { xsd:NCName })+
- }
- }*
- }+
- }
- }
-meta = element meta { text }
-br = element br { empty }
-b = element b { (text | en | i | link | sup)+ }
-i = element i { (text | b | br | sup)+ }
-en = element en { text }
-sub = element sub { xsd:NCName }
-sup = element sup { xsd:NCName }
-link =
- element link {
- attribute xlink:href { xsd:anyURI },
- attribute xlink:type { xsd:NCName },
- (xsd:anyURI | text | b | i | sup)+
- }
-u = element u { (text | b | i)+ }
-del = element del { (text | b | i | link)+ }
-RELAXNG
- end
- def rnc_model_output_dom
- @relaxng =<<RELAXNG
-#% dom output model, part of SiSU and distributed under the same license
-default namespace = ""
-namespace xlink = "http://www.w3.org/1999/xlink"
-start =
- element document {
- element head {
- element header {
- meta,
- (element creator { text }
- | element date { xsd:NMTOKEN }
- | element date_available { xsd:NMTOKEN }
- | element date_created { xsd:NMTOKEN }
- | element date_issued { xsd:NMTOKEN }
- | element date_modified { xsd:NMTOKEN }
- | element date_valid { xsd:NMTOKEN }
- | element keywords { text }
- | element language { xsd:NCName }
- | element rights { (text | link)+ }
- | element source { text }
- | element structure { text }
- | element subject { text }
- | element title { text }
- | element type { text }
- | element source_control {
- (br
- | meta
- | element sc {
- attribute class { xsd:NCName },
- text
- })+
- })
- }+
- },
- element body {
- element heading1 {
- heading,
- contents1*,
- element heading2 {
- heading,
- contents1*,
- element heading3 {
- heading,
- element contents1 {
- heading,
- content,
- element contents2 {
- heading,
- content,
- element contents3 { heading, content }*
- }*
- }+
- }*
- }*
- }+
- }
- }
-meta = element meta { text }
-br = element br { empty }
-heading = element heading { object }
-contents1 =
- element contents1 {
- heading,
- content,
- element contents2 {
- heading,
- content,
- element contents3 { heading, content }*
- }*
- }
-content = element content { object* }
-object =
- element object {
- attribute id { xsd:integer },
- element ocn { text },
- element nametag { text }?,
- (element table {
- attribute align { xsd:NCName },
- attribute bgcolor { xsd:NCName },
- attribute border { xsd:integer },
- attribute cellpadding { xsd:integer },
- attribute summary { text },
- attribute width { text },
- element tr {
- element td {
- attribute valign { xsd:NCName },
- attribute width { text },
- (text | b | i)+
- }+
- }+
- }
- | element text {
- attribute class { xsd:NCName }?,
- (text
- | b
- | del
- | endnote
- | i
- | link
- | element br { empty }
- | element endnote {
- element number { xsd:integer },
- element note { (text | i | link)+ }
- }
- | 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 }
- }
- | element sub { text })+
- })
- }
-i = element i { text }
-b = element i { text }
-u = element u { (text | b | i)+ }
-sub = element sub { xsd:NCName }
-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 },
- xsd:anyURI
- }
-endnote =
- element endnote {
- (element number { xsd:integer }
- | element symbol { text }),
- element note {
- (text
- | b
- | br
- | del
- | i
- | link
- | sub
- | sup
- | u
- | element em { xsd:NCName }
- | element sub { xsd:NCName })+
- }
- }
-RELAXNG
- end
- def rnc_model_output_xhtml #not done
- @relaxng =<<RELAXNG
-#% xhtml output model, part of SiSU and distributed under the same license
-default namespace = ""
-namespace xlink = "http://www.w3.org/1999/xlink"
-start =
- element document {
- element head {
- (br
- | element creator {
- attribute class { xsd:NCName },
- (text
- | element link {
- attribute xlink:href { xsd:anyURI },
- attribute xlink:type { xsd:NCName },
- xsd:anyURI
- })+
- }
- | element date {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_available {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_created {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_issued {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_modified {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element date_valid {
- attribute class { xsd:NCName },
- xsd:NMTOKEN
- }
- | element language {
- attribute class { xsd:NCName },
- xsd:NCName
- }
- | element keywords {
- attribute class { xsd:NCName },
- text
- }
- | element meta {
- attribute content { text }?,
- attribute http-equiv { xsd:NCName }?,
- text
- }
- | element rights {
- attribute class { xsd:NCName },
- (text | link)+
- }
- | element source {
- attribute class { xsd:NCName },
- text
- }
- | element structure {
- attribute class { xsd:NCName },
- text
- }
- | element subject {
- attribute class { xsd:NCName },
- text
- }
- | element title {
- attribute class { xsd:NCName },
- text
- }
- | element type {
- attribute class { xsd:NCName },
- xsd:NCName
- })+
- },
- element body {
- element object {
- attribute id { xsd:integer },
- (element endnote {
- attribute notenumber { xsd:integer }?,
- attribute symbol { text }?,
- (text
- | b
- | br
- | del
- | i
- | link
- | sup
- | u
- | element em { xsd:NCName }
- | element sub { xsd:NCName })+
- }
- | element ocn { text }
- | element text {
- attribute class { xsd:NCName },
- (text
- | b
- | br
- | del
- | en
- | i
- | link
- | sup
- | u
- | element image {
- 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 }
- }
- | element sub { text })+
- })+,
- element table {
- attribute align { xsd:NCName },
- attribute bgcolor { xsd:NCName },
- attribute border { xsd:integer },
- attribute cellpadding { xsd:integer },
- attribute summary { text },
- attribute width { text },
- element tr {
- element td {
- attribute valign { xsd:NCName },
- attribute width { text },
- (text | b | i)+
- }+
- }+
- }?
- }+
- }
- }
-br = element br { empty }
-en = element en { text }
-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 },
- (text | b | i | sup)+
- }
-b = element b { (text | en | i | link | sup)+ }
-u = element u { (text | b | i)+ }
-del = element del { (text | b | i | link)+ }
-RELAXNG
- end
- def rnc_model_input_sax
- @relaxng =<<RELAXNG
-#% sax input model, part of SiSU and distributed under the same license
-default namespace = ""
-start =
- element document {
- element head {
- element header {
- attribute class { xsd:NCName },
- (element creator { text }
- | element date { xsd:NMTOKEN }
- | element date.available { xsd:NMTOKEN }
- | element date.created { xsd:NMTOKEN }
- | element date.issued { xsd:NMTOKEN }
- | element date.modified { xsd:NMTOKEN }
- | element date.valid { xsd:NMTOKEN }
- | element italicize { text }
- | element language { xsd:NCName }
- | element links { text }
- | element markup { text }
- | element rights { text }
- | element skin { xsd:NCName }
- | element subject { text }
- | element title { text }
- | element type { xsd:NCName }
- | element vocabulary { xsd:NCName })
- }+
- },
- element body {
- element object {
- element text {
- attribute class { xsd:NCName },
- (text
- | b
- | i
- | element endnote {
- attribute symbol { xsd:NCName },
- (text
- | i
- | element br { empty })+
- }
- | element u { i }
- | element image.path { text })+
- }?
- }+
- }
- }
-i = element i { text }
-b = element b { text }
-RELAXNG
- end
- def rnc_model_input_dom
- @relaxng =<<RELAXNG
-#% dom input model, part of SiSU and distributed under the same license
-default namespace = ""
-start =
- element document {
- element head {
- element header {
- attribute class { xsd:NCName },
- (element creator { text }
- | element date { xsd:NMTOKEN }
- | element date.available { xsd:NMTOKEN }
- | element date.created { xsd:NMTOKEN }
- | element date.issued { xsd:NMTOKEN }
- | element date.modified { xsd:NMTOKEN }
- | element date.valid { xsd:NMTOKEN }
- | element italicize { text }
- | element language { xsd:NCName }
- | element links { text }
- | element markup { text }
- | element rights { text }
- | element skin { xsd:NCName }
- | element subject { text }
- | element title { text }
- | element type { xsd:NCName }
- | element vocabulary { xsd:NCName })
- }+
- },
- element body {
- element heading1 {
- heading,
- element heading2 {
- heading,
- contents1+,
- element heading3 { heading, contents1+ }+
- }
- }
- }
- }
-heading = element heading { object }
-contents1 =
- element contents1 {
- heading,
- content,
- element contents2 {
- heading,
- content,
- element contents3 { heading, content }*
- }*
- }
-object =
- element object {
- element text {
- (text
- | italic
- | element bold { xsd:NMTOKEN }
- | element endnote {
- element symbol { text }?,
- element note {
- (text
- | italic
- | element br { empty })+
- }
- }
- | element underscore { italic }
- | element image.path { text }
- | element italic { text })+
- }
- }
-italic = element italic { text }
-content = element content { object+ }
-RELAXNG
- end
- def rnc_model_input_node
- @relaxng =<<RELAXNG
-#% node input model, part of SiSU and distributed under the same license
-default namespace = ""
-start =
- element document {
- element head {
- element header {
- attribute class { xsd:NCName },
- (element creator { text }
- | element date { xsd:NMTOKEN }
- | element date.available { xsd:NMTOKEN }
- | element date.created { xsd:NMTOKEN }
- | element date.issued { xsd:NMTOKEN }
- | element date.modified { xsd:NMTOKEN }
- | element date.valid { xsd:NMTOKEN }
- | element italicize { (text | i)+ }
- | element language { xsd:NCName }
- | element links { text }
- | element markup { text }
- | element rights { text }
- | element skin { xsd:NCName }
- | element subject { text }
- | element title { text }
- | element type { xsd:NCName }
- | element vocabulary { xsd:NCName })
- }+
- },
- element body {
- element object {
- (element text {
- attribute class { xsd:NCName },
- (text
- | b
- | i
- | element br { empty }
- | element endnote {
- attribute symbol { xsd:NCName },
- (text | i)+
- }
- | element image.path { text }
- | element sub { text })+
- }
- | (element ocn { empty },
- element table {
- attribute align { xsd:NCName },
- attribute bgcolor { xsd:NCName },
- attribute border { xsd:integer },
- attribute cellpadding { xsd:integer },
- attribute summary { text },
- attribute width { text },
- element tr {
- element td {
- attribute valign { xsd:NCName },
- attribute width { text },
- (text | b)+
- }+
- }+
- })),
- element node {
- element id { xsd:integer },
- element parent { xsd:integer },
- element offspring { text }?
- }
- }+
- }
- }
-b = element b { text }
-i = element i { text }
-RELAXNG
- end
- end
-end
-__END__
-needs updating
diff --git a/lib/sisu/v3dv/remote.rb b/lib/sisu/v3dv/remote.rb
deleted file mode 100644
index 4004e5f8..00000000
--- a/lib/sisu/v3dv/remote.rb
+++ /dev/null
@@ -1,211 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: remote operations, get source from or copy output to remote server
-
-=end
-module SiSU_Remote
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- pwd=Dir.pwd
- class Put
- def initialize(opt)
- @opt=opt
- @dir=SiSU_Env::InfoEnv.new(@opt.fns)
- @put=(@opt.fns =~/\.ssm\.sst$/) \
- ? @opt.fns.gsub(/(.+)?\.ssm\.sst$/,'\1.ssm')
- : @opt.fns
- @remote=SiSU_Env::InfoRemote.new(@opt)
- end
- def rsync
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->',@put).dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.rsync.document
- end
- def rsync_base
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','rsync').dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.rsync.site_base
- end
- def rsync_base_sync
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','rsync and sync').dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.rsync.site_base_sync
- end
- def rsync_sitemaps
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement sitemaps ->','rsync').dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.rsync_sitemaps
- end
- def rsync_harvest
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement metadata harvest ->','rsync_harvest').dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.rsync_harvest
- end
- def scp
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->',@put).dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.scp.document
- end
- def scp_base
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement of base site ->','excluding images').dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.scp.site_base
- end
- def scp_base_all
- SiSU_Screen::Ansi.new(@opt.cmd,'Remote placement ->','complete').dark_grey_title_hi unless @opt.cmd =~/q/
- @remote.scp.site_base_all
- end
- end
- class Get
- def initialize(opt,get_s)
- @opt,@get_s=opt,get_s
- @msg,@msgs='',nil
- @tell=lambda { SiSU_Screen::Ansi.new(@opt.cmd,@msg,"#{@msgs.inspect if @msgs}") }
- end
- def fns
- require 'open-uri'
- require 'pp'
- require_relative 'composite' # composite.rb
- @rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
- @rgx_skin=/@skin:\s+(\S+)/
- threads=[]
- for requested_page in @get_s
- re_fnb=/((?:https?|file):\/\/[^\/ ]+?\/[^\/ ]+?)\/\S+?\/([^\/]+?)\.ss(t)/ #revisit and remove DO
- threads << Thread.new(requested_page) do |url|
- open(url) do |f|
- raise "#{url} not found" unless f
- base_uri,fnb,instr=re_fnb.match(url)[1..3] if re_fnb
- imagedir=base_uri + '/_sisu/image' #check on
- doc_skin_dir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.sst$/.match(url).captures.join + '/_sisu/skin/doc'
- downloaded_file=File.new("#{fnb}.-sst",'w+')
- image_download_url=SiSU_Assemble::RemoteImage.new.image(imagedir)
- images=[]
- skin=SiSU_Assemble::RemoteImage.new.image(doc_skin_dir)
- f.collect.each do |r| # work area
- unless r =~/^%+\s/
- skin << r.scan(@rgx_skin).uniq if r =~@rgx_skin
- if r !~/^%+\s/ \
- and r =~@rgx_image
- images << r.scan(@rgx_image).uniq
- end
- end
- downloaded_file << r
- end
- if skin \
- and skin.length > 0
- SiSU_Assemble::RemoteImage.new.download_doc_skin(skin)
- end
- if images \
- and images.length > 1
- images=images.flatten.uniq
- images.delete_if {|x| x =~/https?:\/\// }
- images=images.sort
- @msg,@msgs='downloading images:', [ images.join(',') ]
- @tell.call.warn unless @opt.cmd =~/q/
- image_info=image_download_url + images
- SiSU_Assemble::RemoteImage.new.download_images(image_info)
- #SiSU_Assemble::RemoteImage.new.download_images(image_download_url,images)
- @msg,@msgs='downloading done',nil
- @tell.call.warn unless @opt.cmd =~/q/
- end
- downloaded_file.close
- end
- end
- end
- threads.each {|thr| thr.join} if threads #and threads.length > 0
- end
- def sisupod
- get_p=@get_s
- if get_p.length > 0 #% remote sisupod
- require 'net/http'
- for requested_pod in get_p
- pod_info=RemoteDownload.new(requested_pod)
- Net::HTTP.start(pod_info.pod.site) do |http|
- resp=http.get("#{pod_info.pod.path}/#{pod_info.pod.name_source}")
- open(pod_info.pod.name,'wb') do |file|
- file.write(resp.body)
- end
- end
- end
- end
- end
- end
- class RemoteDownload
- def initialize(requested_file)
- @requested_file=requested_file
- end
- def pod
- re_p_div=/https?:\/\/([^\/]+)(\/\S+)\/(sisupod\.(?:txz|zip)|\S+?(?:\.ss[mt]\.(?:txz|zip))?|[^\/]+?\.ssp)$/
- re_p=/(sisupod\.(?:txz|zip)|\S+?\.ss[mt]\.(?:txz|zip)?|[^\/]+?\.ssp)$/
- if @requested_file =~ re_p_div
- @site,@pth,@pod= re_p_div.match(@requested_file).captures
- elsif @requested_file =~ re_p
- @pod=re_p.match(@requested_file).captures.join
- end
- def site
- @site
- end
- def path
- @pth
- end
- def dir_stub
- re_p_stub=/.+?([^\/]+)$/
- pod_stub= re_p_stub.match(path).captures.join if path
- end
- def name_source
- @pod
- end
- def name
- name_source
- end
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/response.rb b/lib/sisu/v3dv/response.rb
deleted file mode 100644
index 5df13755..00000000
--- a/lib/sisu/v3dv/response.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: Request response
-
-=end
-module SiSU_Response
- class Response
- def response?(ask) #move to more appropriate directory later
- response='redo'
- print ask + " ['yes', 'no' or 'quit']: "
- response=File.new('/dev/tty').gets.strip
- ans=if response=='yes'; true
- elsif response=='no'; false
- elsif response =~/^quit|exit$/; exit
- else puts "[please type: 'yes', 'no' or 'quit']"
- response?(ask)
- end
- ans
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/rexml.rb b/lib/sisu/v3dv/rexml.rb
deleted file mode 100644
index d4692b76..00000000
--- a/lib/sisu/v3dv/rexml.rb
+++ /dev/null
@@ -1,121 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: rexml testing of xml
-
-=end
-module SiSU_Rexml
- # load XML file for REXML parsing
- require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- include SiSU_Viz
- class Rexml
- require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
- def initialize(md,fno)
- @md,@fno=md,fno
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @prog=SiSU_Env::InfoProgram.new #(md.fns) #if md
- if File.file?(@fno)
- @fnap=@fno #index.xml causes problems with index.html in server config
- end
- @e_head='/document/head'
- @e_title='/document/head/title'
- @e_object='/document/body/object'
- @e_ocn='/document/body/object/ocn'
- @e_text='/document/body/object/text'
- @e_endnote='/document/body/object/endnote'
- end
- def xml
- begin
- if FileTest.file?(@fnap)
- if @prog.rexml !=false \
- and FileTest.directory?('/usr/lib/ruby/1.8/rexml/') #note values can be other than true
- xmlfile=IO.readlines(@fnap,'').join
- begin
- @xmldoc=REXML::Document.new xmlfile
- SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','REXML',"XML document #{@fnap} loaded").colorize unless @md.opt.cmd =~/q/ #% tell
- if @md.opt.cmd =~ /v/i #% substantive text
- @xmldoc.elements.each(@e_head) do |e|
- SiSU_Screen::Ansi.new(@md.opt.cmd,'brown',e).colorize unless @md.opt.cmd =~/q/
- end
- end
- rescue REXML::ParseException
- puts 'broken XML'
- end
- end
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,'fuschia',"File Not Found #{xmlfile}",'requested XML processing skipped').colorize unless @md.opt.cmd =~/q/
- exit
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- end
-end
-__END__
- misc
-e.each do |element|
- element.each do |child|
- if child.is_a?(REXML::Text)
- puts "Text: #{child.to_s.inspect}"
- else
- puts "SubElement: #{child.name}"
- end
- end
-end
diff --git a/lib/sisu/v3dv/screen_text_color.rb b/lib/sisu/v3dv/screen_text_color.rb
deleted file mode 100644
index c3fd0b29..00000000
--- a/lib/sisu/v3dv/screen_text_color.rb
+++ /dev/null
@@ -1,487 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, screen colors text
-
-=end
-module SiSU_Screen
- class Color
- attr_accessor :off,:marker,:bold,:underline,:invert,:darkgrey_hi,:grey_hi,:pink_hi,:fuschia_hi,:red_hi,:orange_hi,:yellow_hi,:brown_hi,:lightgreen_hi,:green_hi,:cyan_hi,:blue_hi,:navy_hi,:white,:white_bold,:grey,:pink,:fuschia,:ruby,:red,:orange,:yellow,:brown,:green,:darkgreen,:cyan,:blue,:navy,:black
- def initialize(&block)
- instance_eval &block
- end
- end
- class Ansi < Color
- attr_reader :cX
- def initialize(cmd,*txt)
- @cmd,@txt=cmd,txt
- @color_instruct=txt[0]
- flag=SiSU_Env::InfoProcessingFlag.new
- if @cmd
- if flag.color #set default colors on or off -c acts as toggle against this default, if default is off -c turns on, if default is on -c turns off
- @use_color=if @cmd =~/c/; false
- else true
- end
- else
- @use_color=if @cmd =~/c/; true
- else false
- end
- end
- if @cmd =~/k/; @use_color=false
- end
- else @use_color=false
- end
- @cX=@@cX= unless @use_color
- Color.new do
- self.off=self.white=self.white_bold=self.marker=self.bold=self.underline=self.invert=self.darkgrey_hi=self.grey_hi=self.pink_hi=self.fuschia_hi=self.red_hi=self.orange_hi=self.yellow_hi=self.brown_hi=self.lightgreen_hi=self.green_hi=self.cyan_hi=self.blue_hi=self.navy_hi=self.grey=self.pink=self.fuschia=self.ruby=self.red=self.orange=self.yellow=self.brown=self.green=self.darkgreen=self.cyan=self.blue=self.navy=self.black=''
- end
- else #default set to colors on
- Color.new do
- self.off = "\033[0m"
- self.white = "\033[37m"
- self.white_bold = "\033[1m"
- self.marker = "\033[42m"
- self.bold = "\033[1m"
- self.underline = "\033[4m"
- self.invert = "\033[7m"
- self.darkgrey_hi = "\033[100m"
- self.grey_hi = "\033[47m"
- self.pink_hi = "\033[105m"
- self.fuschia_hi = "\033[45m"
- self.red_hi = "\033[41m"
- self.orange_hi = "\033[101m"
- self.yellow_hi = "\033[103m"
- self.brown_hi = "\033[43m"
- self.lightgreen_hi = "\033[102m"
- self.green_hi = "\033[42m"
- self.cyan_hi = "\033[106m"
- self.blue_hi = "\033[104m"
- self.navy_hi = "\033[44m"
- self.grey = "\033[90m"
- self.pink = "\033[95m"
- self.fuschia = "\033[35m"
- self.ruby = "\033[31m"
- self.red = "\033[91m" #check
- self.orange = "\033[91m"
- self.yellow = "\033[93m"
- self.brown = "\033[33m"
- self.green = "\033[92m"
- self.darkgreen = "\033[32m"
- self.cyan = "\033[36m"
- self.blue = "\033[94m"
- self.navy = "\033[34m"
- self.black = "\033[30m"
- end
- end
- end
- def colors
- 0.upto(109) {|i| print "\033[#{i}m 33[#{i}m \033[m"}
- puts ''
- end
- def color
- case @color_instruct
- when /invert/; @cX.invert
- when /darkgrey_hi/; @cX.darkgrey_hi
- when /grey_hi/; @cX.grey_hi
- when /pink_hi/; @cX.pink_hi
- when /fuschia_hi/; @cX.fuschia_hi
- when /red_hi/; @cX.red_hi
- when /orange_hi/; @cX.orange_hi
- when /yellow_hi/; @cX.yellow_hi
- when /brown_hi/; @cX.brown_hi
- when /lightgreen_hi/; @cX.lightgreen_hi
- when /green_hi/; @cX.green_hi
- when /cyan_hi/; @cX.cyan_hi
- when /blue_hi/; @cX.blue_hi
- when /navy_hi/; @cX.navy_hi
- when /white/; @cX.white
- when /grey/; @cX.grey
- when /pink/; @cX.pink
- when /fuschia/; @cX.fuschia
- when /ruby/; @cX.ruby
- when /red/; @cX.red
- when /orange/; @cX.orange
- when /yellow/; @cX.yellow
- when /brown/; @cX.brown
- when /green/; @cX.green
- when /darkgreen/; @cX.darkgreen
- when /cyan/; @cX.cyan
- when /blue/; @cX.blue
- when /navy/; @cX.navy
- when /close/; @cX.off
- when /off/; @cX.off
- end
- end
- def colorize
- case @color_instruct
- when /invert/; puts "#{@cX.invert}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /darkgrey_hi/; puts "#{@cX.darkgrey_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /grey_hi/; puts "#{@cX.grey_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /pink_hi/; puts "#{@cX.pink_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /fuschia_hi/; puts "#{@cX.fuschia_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /red_hi/; puts "#{@cX.red_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /orange_hi/; puts "#{@cX.orange_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /yellow_hi/; puts "#{@cX.yellow_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /brown_hi/; puts "#{@cX.brown_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /lightgreen_hi/; puts "#{@cX.lightgreen_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /green_hi/; puts "#{@cX.green_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /cyan_hi/; puts "#{@cX.cyan_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /blue_hi/; puts "#{@cX.blue_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /navy_hi/; puts "#{@cX.navy_hi}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off} #{@cX.grey}#{@txt[3]}#{@cX.off}"
- when /bold/; puts "#{@cX.bold}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /white/; puts "#{@cX.off}#{@txt[1]} #{@txt[2]}"
- when /grey/; puts "#{@cX.grey}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /pink/; puts "#{@cX.pink}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /fuschia/; puts "#{@cX.fuschia}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /ruby/; puts "#{@cX.ruby}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /red/; puts "#{@cX.red}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /orange/; puts "#{@cX.orange}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /yellow/; puts "#{@cX.yellow}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /brown/; puts "#{@cX.brown}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /green/; puts "#{@cX.green}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /darkgreen/; puts "#{@cX.darkgreen}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /cyan/; puts "#{@cX.cyan}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /blue/; puts "#{@cX.blue}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- when /navy/; puts "#{@cX.navy}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- end
- end
- def sourcename(sourcefilename)
- @sourcefilename=sourcefilename
- end
- def basename(sourcefilename)
- @basename=sourcefilename.sub(/\.(?:(?:-|ssm\.)?sst|ssm)$/,'')
- end
- def sisu
- end
- def rescue
- %{\t #{@cX.orange}Rescued#{@cX.off} #{@cX.grey}An#{@cX.off} #{@cX.fuschia}ERROR#{@cX.off} #{@cX.grey}occurred, message:"#{@cX.off} #{@cX.fuschia}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off} #{@cX.brown}#{@txt[2]}#{@cX.off}}
- end
- def warn
- puts "\t #{@cX.brown}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}"
- end
- def error
- puts "\t #{@cX.fuschia}#{@txt[0]}#{@cX.off} #{@cX.brown}#{@txt[1]}#{@cX.off}"
- end
- def error2
- puts "\t #{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.fuschia}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- end
- def version
- puts "#{@cX.blue_hi}#{@txt[0]} #{@txt[1]}#{@cX.off} #{@cX.grey} (#{@txt[3]} [#{@txt[2]}]) &#{@cX.off} #{@cX.ruby}Ruby#{@cX.off} #{@cX.grey}(#{@txt[4]})#{@cX.off}\n"
- end
- def html3numbers
- puts %{\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.cyan}files processed#{@cX.off}. } +
- %{#{@cX.grey}} +
- %{scroll only: #{@txt[1]}, seg only: #{@txt[2]},} +
- %{#{@cX.off} } +
- %{#{@cX.cyan}joint scroll & seg: #{@txt[3]},#{@cX.off}} +
- %{#{@cX.grey} } +
- %{nav only: #{@txt[4]}} +
- %{#{@cX.off}}
- end
- def html2numbers
- puts %{\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.cyan}files processed#{@cX.off}. } +
- %{#{@cX.grey}} +
- %{scroll only: #{@txt[1]},} +
- %{#{@cX.off} } +
- %{#{@cX.cyan}seg only: #{@txt[2]},#{@cX.off}} +
- %{#{@cX.grey} } +
- %{joint scroll & seg: #{@txt[3]}, nav only: #{@n_files_nav}} +
- %{#{@cX.off}}
- end
- def html1numbers
- puts %{\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.cyan}files processed#{@cX.off}. } +
- %{#{@cX.cyan}scroll only: #{@txt[1]},#{@cX.off}} +
- %{#{@cX.grey} } +
- %{seg only: #{@txt[2]}, } +
- %{joint scroll & seg: #{@txt[3]}, nav only: #{@n_files_nav}} +
- %{#{@cX.off}}
- end
- def html0_numbers
- puts %{\t#{@cX.ruby}#{@txt[0]} files processed#{@cX.off}. } +
- %{#{@cX.grey}} +
- %{scroll only: #{@txt[1]}, seg only: #{@txt[2]}, joint scroll & seg: #{@txt[3]},} +
- %{#{@cX.off} } +
- %{#{@cX.cyan}nav only: #{@txt[4]}#{@cX.off}.}
- end
- def php_numbers
- puts %{ #{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.cyan}files processed#{@cX.off}. } +
- %{php_scr only: #{@txt[1]}, } +
- %{#{@cX.cyan}php_seg only: #{@txt[2]}#{@cX.off}, } +
- %{joint php scroll & seg: #{@txt[3]}, } +
- %{php_nav only: #{@txt[4]}}
- end
- def txt_white
- puts "\t#{@cX.white}#{@txt[0]}#{@cX.off} #{@cX.white}#{@txt[1]}#{@cX.off}"
- end
- def txt_grey
- puts "\t#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.cyan}#{@txt[1]}#{@cX.off}"
- end
- def txt_cyan
- puts "\t#{@cX.cyan}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}"
- end
- def txt_blue
- puts "\t#{@cX.blue}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}"
- end
- def txt_red
- puts "\t#{@cX.red}#{@txt[0]}#{@cX.off} #{@cX.cyan}#{@txt[1]}#{@cX.off}"
- end
- def txt_green
- puts "\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}"
- end
- def url #clean
- blue
- end
- def result
- puts "\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.blue}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- end
- def maintenance
- puts "\t#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.brown}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}"
- end
- def instruct
- puts %{\t #{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.cyan}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off} #{@cX.cyan}#{@txt[3]}#{@cX.off} #{@cX.grey}#{@txt[4]}#{@cX.off} "#{@cX.brown}#{@f}#{@cX.off}"}
- end
- def grey_open
- print @cX.grey
- end
- def p_off
- print @cX.off
- end
- def p_close
- print @cX.off
- end
- def flow
- puts %{\t#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.ruby}->#{@cX.off}\n\t #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def output
- puts %{\t#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.ruby}->#{@cX.off}\n\t #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def generic
- puts %{\t#{@cX.navy}#{@txt[0]} #{@txt[1]}#{@cX.off}. }
- end
- def files_processed
- puts %{\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}}
- end
- def print_blue
- print "#{@cX.blue}#{@txt[0]} #{@txt[1]}#{@cX.off}"
- end
- def puts_blue
- puts "#{@cX.blue}#{@txt[0]} #{@txt[1]}#{@cX.off}"
- end
- def print_brown
- print "#{@cX.brown}#{@txt[0]}#{@cX.off}"
- end
- def blue_tab
- print "\t#{@cX.blue}#{@txt[0]}#{@cX.off}\n"
- end
- def print_grey
- print "#{@cX.grey}#{@txt[0]} #{@txt[1]}#{@cX.off}"
- end
- def puts_grey
- puts "#{@cX.grey}#{@txt[0]} #{@txt[1]}#{@cX.off}"
- end
- def puts_brown
- puts "#{@cX.brown}#{@txt[0]} #{@txt[1]}#{@cX.off}"
- end
- def grey_tab
- print "\t#{@cX.grey}#{@txt[0]}#{@cX.off}\n"
- end
- def green_title
- puts %{#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}}
- end
- def green_title_hi
- puts %{#{@cX.green_hi}#{@cX.black}#{@txt[0]}#{@cX.off*2} #{@cX.grey}#{@txt[1]}#{@cX.off}}
- end
- def green_hi_blue
- puts %{#{@cX.green_hi}#{@cX.black}#{@txt[0]}#{@cX.off*2} #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def grey_title_hi
- puts %{#{@cX.grey_hi}#{@cX.black}#{@txt[0]}#{@cX.off*2} #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def dark_grey_title_hi
- puts %{#{@cX.darkgrey_hi}#{@cX.black}#{@txt[0]}#{@cX.off*2} #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def cyan_title_hi
- puts %{#{@cX.cyan_hi}#{@cX.black}#{@txt[0]}#{@cX.off*2} #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def dbi_title
- puts %{#{@cX.blue_hi}#{@cX.black}#{@txt[0]}#{@cX.off*2} #{@cX.cyan}#{@cX.grey}#{@txt[1]}#{@cX.off*2} #{@cX.green}#{@txt[2]}#{@cX.off}}
- end
- def yellow_title_hi
- puts %{#{@cX.yellow_hi}#{@cX.black}#{@txt[0]}#{@cX.off*2} #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def term_sheet_title
- puts %{\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.red_hi}#{@cX.black}#{@txt[1]}.#{@cX.off*2} }
- end
- def generic_number
- puts "#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}"
- end
- def tex_numbers
- puts %{ #{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.cyan}tex/pdf files processed#{@cX.off}.}
- end
- def tex_info_numbers
- puts %{ #{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.cyan}texinfo files processed#{@cX.off}.}
- end
- def lout_numbers
- puts %{ #{@cX.green}#{@n_lout}#{@cX.off} #{@cX.cyan}lout/pdf files processed#{@cX.off}.}
- end
- def parameters
- end
- def reserved
- puts %{ #{@cX.grey_hi}#{@cX.black}reserved#{@cX.off*2}}
- end
- def meta_verse_title
- puts %{#{@cX.green_hi}#{@cX.black}MetaVerse#{@cX.off*2} }
- end
- def meta_verse_title_v
- b=sourcename(@txt[0])
- puts %{#{@cX.green_hi}#{@cX.black}MetaVerse#{@cX.off*2} } +
- %{#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.ruby}->#{@cX.off}\n\t #{@cX.blue}~meta/#{b}.meta#{@cX.off}}
- end
- def meta_verse
- puts "\t#{@cX.grey}MetaVerse#{@cX.off}"
- end
- def meta_verse_skipped
- puts %{\t#{@cX.grey}MetaVerse: MarshalLoad (creation of metaVerse skipped)#{@cX.off}}
- end
- def meta_verse_load
- puts %{\t<<MetaVerse: MarshalLoad>>}
- end
- def html_title
- puts %{#{@cX.green_hi}#{@cX.black}HTML#{@cX.off*2}}
- end
- def html_output
- puts %{\t#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.ruby}->#{@cX.off}\n\t #{@cX.blue}#{@txt[1]}#{@cX.off}}
- end
- def php_title
- puts %{\n#{@cX.green_hi}#{@cX.black}PHP#{@cX.off*2}}
- end
- def segmented
- puts "\t#{@cX.grey}Seg#{@cX.off} #{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.grey}segments#{@cX.off}"
- end
- end
-end
-__END__
- Color.new do
- self.off = "\033[0m"
- self.white = "\033[37m"
- self.white_bold = "\033[1m"
- self.marker = "\033[42m"
- self.bold = "\033[1m"
- self.underline = "\033[4m"
- self.invert = "\033[7m"
- self.darkgrey_hi = "\033[100m"
- self.grey_hi = "\033[47m"
- self.pink_hi = "\033[105m"
- self.fuschia_hi = "\033[45m"
- self.red_hi = "\033[41m"
- self.orange_hi = "\033[101m"
- self.yellow_hi = "\033[103m"
- self.brown_hi = "\033[43m"
- self.lightgreen_hi = "\033[102m"
- self.green_hi = "\033[42m"
- self.cyan_hi = "\033[106m"
- self.blue_hi = "\033[104m"
- self.navy_hi = "\033[44m"
- self.grey = "\033[90m"
- self.pink = "\033[95m"
- self.fuschia = "\033[35m"
- self.ruby = "\033[31m"
- self.red = "\033[91m" #check
- self.orange = "\033[91m"
- self.yellow = "\033[93m"
- self.brown = "\033[33m"
- self.green = "\033[92m"
- self.darkgreen = "\033[32m"
- self.cyan = "\033[36m"
- self.blue = "\033[94m"
- self.navy = "\033[34m"
- self.black = "\033[30m"
- end
-# fewer colors
- Color.new do
- self.off = "\033[0m"
- self.white = "\033[0m"
- self.marker = "\033[42m"
- self.bold = "\033[1m"
- self.underline = "\033[4m"
- self.invert = "\033[7m"
- self.darkgrey_hi = "\033[100m"
- self.grey_hi = "\033[47m"
- self.pink_hi = "\033[105m"
- self.fuschia_hi = "\033[45m"
- self.red_hi = "\033[41m"
- self.orange_hi = "\033[101m"
- self.yellow_hi = "\033[103m"
- self.brown_hi = "\033[43m"
- self.lightgreen_hi = "\033[102m"
- self.green_hi = "\033[42m"
- self.cyan_hi = "\033[106m"
- self.blue_hi = "\033[104m"
- self.navy_hi = "\033[44m"
- self.grey = "\033[90m"
- self.pink = "\033[95m"
- self.fuschia = "\033[35m"
- self.ruby = "\033[31m"
- self.red = "\033[31m" #check
- self.orange = "\033[91m"
- self.yellow = "\033[33m"
- self.brown = "\033[33m"
- self.green = "\033[32m"
- self.darkgreen = "\033[32m"
- self.cyan = "\033[36m"
- self.blue = "\033[34m"
- self.navy = "\033[34m"
- self.black = "\033[30m"
- end
diff --git a/lib/sisu/v3dv/share_src.rb b/lib/sisu/v3dv/share_src.rb
deleted file mode 100644
index 93552b49..00000000
--- a/lib/sisu/v3dv/share_src.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: share sisu source markup file, copy it to output directory!
-
-=end
-module SiSU_Markup
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- pwd=Dir.pwd
- class Source
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- md=SiSU_Param::Parameters.new(@opt).get
- @file=SiSU_Env::FileOp.new(md)
- stub=@opt.fnb.gsub(/~[a-z]+$/,'')
- end
- def read
- unless @opt.cmd =~/q/
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Share Document Source!',@opt.fns).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Share Document Source!',@opt.fns).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,"Copy sisu markup file to output directory","#{@opt.fns} -> #{@file.output_path.src.dir}").warn if @opt.cmd =~/[MVv]/
- end
- FileUtils::mkdir_p(@file.output_path.src.dir) unless FileTest.directory?(@file.output_path.src.dir)
- if FileTest.directory?(@file.output_path.src.dir)
- unless @opt.fns =~/\.ssm$/; FileUtils::cp(@opt.fns,@file.output_path.src.dir)
- else
- req=@opt.fns.gsub(/(.+?\.ssm)$/,'\1.sst')
- file="#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst"
- if FileTest.file?(file); FileUtils::cp(file,"#{@file.output_path.src.dir}/#{req}")
- else print "did not find #{file} to copy"
- end
- end
- else
- SiSU_Screen::Ansi.new(@opt.cmd,"Output directory does not exist","#{@opt.fns} -> #{@file.output_path.src.dir}").warn if @opt.cmd =~/[MVv]/
- exit
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/share_src_kdissert.rb b/lib/sisu/v3dv/share_src_kdissert.rb
deleted file mode 100644
index 336d421c..00000000
--- a/lib/sisu/v3dv/share_src_kdissert.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: share sisu source markup file, copy it to output directory!
-
-=end
-module SiSU_KdiSource
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- pwd=Dir.pwd
- class Source
- require 'fileutils'
- include FileUtils
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @output_path="#{@env.path.output}/#{@opt.fnb}"
- end
- def read
- SiSU_Screen::Ansi.new(@opt.cmd,'Share Kdissert Source Document!',@opt.fnb).green_hi_blue unless @opt.cmd =~/q/
- SiSU_Screen::Ansi.new(@opt.cmd,"Copy kdissert file to output directory","#{@opt.fnb} -> #{@output_path}").warn unless @opt.cmd =~/q/
- FileUtils::mkdir_p(@env.path.output) unless FileTest.directory?(@env.path.output)
- FileUtils::mkdir_p(@output_path) unless FileTest.directory?(@output_path)
- if FileTest.directory?(@output_path)
- if @opt.fns =~/\.kdi\._sst$/ \
- and FileTest.file?(@opt.fnb)
- FileUtils::cp(@opt.fnb,@output_path)
- end
- else
- SiSU_Screen::Ansi.new(@opt.cmd,"Output directory does not exist","#{@opt.fnb} -> #{@output_path}").warn unless @opt.cmd =~/q/
- exit
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/shared_html.rb b/lib/sisu/v3dv/shared_html.rb
deleted file mode 100644
index 0b17ba21..00000000
--- a/lib/sisu/v3dv/shared_html.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: shared html parts
-
-=end
-module SiSU_HTML_Shared
- require_relative 'defaults' # defaults.rb
- require_relative 'html_table' # html_table.rb
- class TableHTML < SiSU_HTML_Table::TableHTML
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/shared_html_lite.rb b/lib/sisu/v3dv/shared_html_lite.rb
deleted file mode 100644
index 27a228eb..00000000
--- a/lib/sisu/v3dv/shared_html_lite.rb
+++ /dev/null
@@ -1,321 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by db and flatfile output generators, mostly
- xml/xhtml/html formatting
-
-=end
-module SiSU_FormatShared
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- class CSS_Format
- require_relative 'defaults' # defaults.rb
- require_relative 'particulars' # particulars.rb
- @@fns=nil
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- @txt=@t_o.obj
- @id=@ocn=@t_o.ocn if defined? @t_o.ocn
- @lv=@t_o.lv.to_s if @t_o.is==:heading
- if @md.fns != @@fns
- @@fns,@@hname=@md.fns,''
- end
- @hname=if defined? @t_o.name \
- and not @t_o.name.to_s.empty?
- @@hname=@t_o.name
- else @@hname
- end
- @tab="\t"
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @@tablehead,@@tablefoot=[],[]
- @vz=SiSU_Env::GetInit.instance.skin
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- end
- def urls(data)
- @words=[]
- map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map
- data.each do |word|
- @words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
- if word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/.match(word).captures
- elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]}/.match(word).captures
- elsif word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image/
- m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(image)/.match(word).captures
- end
- word=case m
- when /\.png|\.jpg|\.gif|c=|\d+x\d+/
- w,h=/(\d+)x(\d+)/.match(m).captures if m =~/\d+x\d+/
- w=%{width="#{w}"} if w
- h=%{height="#{h}"} if h
- c=m[/"(.+?)"/m,1]
- caption=%{<br /><p class="caption">#{c}</p>} if c
- png=m.scan(/\S+/)[0]
- ins=if u \
- and u.strip !~/^image$/
- %{<a href="#{u}">[#{png}]</a>#{caption}}
- else %{[#{png}] #{caption}}
- end
- word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,ins)
- else
- u=case u
- when /^https?:\/\//
- u
- when /^:/
- u=u.gsub(/^:/,'')
- "#{@env.url.root}/#{u}"
- when /^\.\.\// # can remove
- u=u.gsub(/^\.\.\//,'')
- "#{@env.url.root}/#{u}"
- else
- "#{@env.url.root}/#{@md.fnb}/#{map_nametags[u][:segname]}#{Sfx[:html]}##{u}"
- end
- link=m[/(.+)/m]
- png=m.scan(/\S+/)[0].strip
- link=link.strip
- ins=%{<a href="#{u}">#{link}</a>}
- word=word.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,ins).
- gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,ins)
- word
- end
- word
- else word
- end
- word
- end
- @words=@words.join(' ')
- end
- def markup_generic(s)
- s=s.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_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-').
- 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_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>'). # tt, kbd
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
- end
- def markup_object(t_o)
- s=t_o.obj
- s=if t_o.is !=:code
- s=markup_generic(s)
- if s =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
- wm=s.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)|\S+/)
- words=urls(wm)
- s=s.gsub(/.+/m,words)
- end
- s.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;').
- gsub(/#{Mx[:url_o]}[_\\](\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>'). #http ftp matches escaped, no decoration
- gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>'). #special case \{ e.g. \}http://url
- gsub(/(^|#{Mx[:gl_c]}|\s)#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{\\1#{@brace_url.xml_open}<a href="\\2" target="_top">\\2</a>#{@brace_url.xml_close}\\3}) #http ftp matches with decoration
- else
- s.gsub(/</m,'&lt;'); s.gsub!(/>/m,'&gt;')
- end
- s
- end
- def markup_note(s)
- s=markup_generic(s)
- if s =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/
- wm=s.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)|\S+/)
- words=urls(wm)
- s=s.gsub(/.+/m,words)
- end
- s=s.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;').
- gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>\2'). #http ftp matches escaped, no decoration
- gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>'). #special case \{ e.g. \}http://url
- gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@brace_url.xml_open}<a href="\\1" target="_top">\\1</a>#{@brace_url.xml_close}}) #http ftp matches with decoration
- end
- def paragraph
- %{<p class="h#{@lv}" type="substantive" header="#{@hname}">#{@txt}</p>\n} # << "\n"
- end
- def endnote(nr,en) #used only by db
- txt=markup_note(en)
- <<GSUB
-<p class="endnote" name="note_#{nr}" from="#{@t_o.ocn}">
-<a href="#{@base_url}#-#{nr}" name="_#{nr}">#{nr}.</a> <note>#{txt}</note>
-</p>
-GSUB
- end
- def tag_header(h)
- %{<p class="#{h[:class]}" type="#{h[:type]}" header="#{h[:header]}">#{h[:txt]}</a></p>\n} # << "\n"
- end
- def tag_para(h)
- %{<p class="#{h[:class]}" type="#{h[:type]}">#{h[:txt]}</a></p>\n} << "\n"
- end
- def lev_toc_hname
- %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn}">#{@txt}</a></p>\n} #<< "\n"
- end
- def lev_toc
- h={ txt: txt, class: "toc#{@lv}", type: 'toc' }
- tag_para(h)
- end
- def lev4_plus
- txt=markup_object(@t_o)
- h={ txt: txt, class: "h#{@lv}", type: 'substantive', id: @ocn, header: @hname }
- tag_header(h)
- end
- def lev4_minus
- txt=markup_object(@t_o)
- h={ txt: txt, class: "h#{@t_o.ln}", type: 'substantive', id: @ocn }
- tag_para(h)
- end
- def norm_comment
- h={ txt: @t_o.obj, class: 'norm', type: 'comment' }
- tag_para(h)
- end
- def norm
- txt=markup_object(@t_o)
- h={ txt: txt, class: 'norm', type: 'substantive', id: @ocn }
- tag_para(h)
- end
- def code
- txt=markup_object(@t_o)
- h={ txt: "<tt>#{txt}</tt>", class: 'code', type: 'substantive', id: @ocn }
- tag_para(h)
- end
- def indent(t)
- txt=markup_object(@t_o)
- h={ txt: txt, class: "indent#{t}", type: 'substantive', id: @ocn }
- tag_para(h)
- end
- def hang_indent(f,t)
- txt=markup_object(@t_o)
- h={ txt: txt, class: "hang#{f}indent#{t}", type: 'substantive', id: @ocn }
- #h={ txt: txt, class: "h#{f}i#{t}", type: 'substantive', id: @ocn }
- tag_para(h)
- end
- def para_table
- %{<p class="norm" align="left"><font #{@vz.font_small} #{@vz.font_color} #{@vz.font_face}>}
- end
- def ocn
- %{<label class="ocn">#{@ocn}</label>} << "\n"
- end
- def html_table # get rid of use html_table
- @new_content=[]
- @txt.split(/\n/).each do |parablock|
- m=parablock[/<!f(.+?)!>/,1]
- @@tablefoot << m if m
- parablock=parablock.gsub(/<!f.+?!>/,'')
- @@tablehead=1 if parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
- parablock=parablock.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+)#{Mx[:gr_c]}/,
- %{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">})
- if parablock =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/
- tablefoot=[]
- @@tablefoot.each {|x| tablefoot << %{<p align="center"><font size=2><i>#{x}</i></font></p>\n}}
- @@tablefoot=[]
- parablock=parablock.gsub(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,
- %{#{@vz.table_close}\n}) # +
- end
- if @@tablehead==1
- if parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
- parablock=parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{\n<tr>} +
- %{\n<td width="\\1%" valign="top">} +
- %{#{para_table}<b>}).
- gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</b></td><td width="\\1%" valign="top">} +
- %{#{para_table}<b>}).
- gsub(/#{Mx[:tc_c]}/, '</b></td></tr>')
- @@tablehead=0
- end
- parablock
- else
- parablock=parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{\n<tr>} +
- %{\n<td width="\\1%" valign="top">} +
- %{#{para_table}}).
- gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</td><td width="\\1%" valign="top">} +
- %{#{para_table}}).
- gsub(/#{Mx[:tc_c]}/, '</td></tr>')
- parablock
- end
- @new_content << parablock
- end
- @new_content.join
- end
- end
- class CSS_FormatGeneric #does CSS_Format in one definition, needs to be told about attrib, despite brevity of generic, easier to see structure with CSS_Format
- def initialize(attrib='',txt='',id=nil,ocnd=nil,ocns=nil,lv='',hname=nil)
- @tab="\t"
- @attrib=attrib
- @txt=txt
- @lv=lv.to_s
- @hname=hname.to_s
- @id=@ocn=id
- end
- def paragraph
- attrib=%{class="#{@attrib}" }
- if @ocn
- id=%{id="#{@ocn}" }
- type=%{type="substantive" }
- else
- id=%{id="none" }
- type=%{type="comment" }
- end
- header=%{header="#{@hname}" } if @hname
- %{<p #{attrib}#{type}#{header}>#{@txt}</p>\n} #<< "\n"
- end
- def para
- paragraph
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/shared_markup_alt.rb b/lib/sisu/v3dv/shared_markup_alt.rb
deleted file mode 100644
index dabb765e..00000000
--- a/lib/sisu/v3dv/shared_markup_alt.rb
+++ /dev/null
@@ -1,322 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_TextRepresentation
- class Alter
- def initialize(x)
- if x.class==String
- @t_o,@s=nil,x
- else
- @t_o,@s=x,x.obj.dup
- end
- end
- def strip_clean_of_extra_spaces # dal output tuned
- @s=@s.dup
- @s=@s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1') unless @s =~/#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/
- @s=@s.gsub(/ [ ]+/,' ').
- gsub(/^ [ ]+/,'').
- gsub(/ [ ]+$/,'').
- gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2').
- gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2')
- end
- def strip_clean_of_markup # text form used in sql db search, used for digest, define rules, make same as in db clean
- @s=@s.dup #% same as db clean -->
- @s=@s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1').
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'\1').
- gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]').
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1').
- gsub(/#{Mx[:fa_hilite_o]}(.+?)#{Mx[:fa_hilite_c]}/,'\1').
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~').
- gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,''). # endnote removed
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,''). # endnote removed
- gsub(/(?:#{Mx[:nbsp]})+/,' ').
- gsub(/(?:#{Mx[:br_nl]})+/,"\n").
- gsub(/(?:#{Mx[:br_paragraph]})+/,"\n").
- gsub(/(?:#{Mx[:br_line]})+/,"\n").
- 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(/\s\s+/,' ').
- gsub(/\s\s+/,' ').
- strip
- end
- def semi_revert_markup # used for digest, define rules, make same as in db clean
- if @t_o
- @s=@s.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*{\1}*').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/{\1}/').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_{\1}_').
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"{\1}"').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-').
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^{\1}^').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,',{\1},').
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~').
- 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
- if @t_o.is==:heading \
- || @t_o.is==:para
- @s=@s.gsub(/ [ ]+/,' ')
- @s=@s.gsub(/(?:#{Mx[:nbsp]})+/,' ')
- if @t_o.is==:heading
- @s=@t_o.lv + '~ ' + @s
- end
- if @t_o.is==:para
- if @t_o.bullet_
- @s='_* ' + @s
- end
- if @t_o.indent.to_i > 0
- @s="_#{@t_o.indent} " + @s
- @s=@s.gsub(/^(_[1-9])\s_\*\s/,'\1* ')
- end
- end
- end
- if @t_o.is==:block \
- || @t_o.is==:group \
- || @t_o.is==:code
- @s=@s.gsub(/#{Mx[:nbsp]}/,' ')
- @s="#{@t_o.is.to_s}{\n\n#{@s}\n\n}#{@t_o.is.to_s}"
- @s=@s.gsub(/(?:#{Mx[:br_nl]}|\n)+/m,"\n\n")
- end
- #dealing with poem and verse calls for change in dal, where start and end verse of poem are marked as such
- @s=@s.strip
- end
- @s
- end
- def html_lite #test whether eventually can be used in db_import replacing shared_html_lite (search for SiSU_FormatShared)
- if @t_o
- @s=@s.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_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'-{\1}-').
- 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[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~')
- if @t_o.is !=:code
- if @s =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- wm=@s.scan(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)|\S+/)
- words=urls(wm)
- @s=@s.gsub(/.+/m,words)
- end
- @s=@s.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;').
- gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'<a href="\1" target="_top">\1</a>'). #http ftp matches escaped, no decoration
- gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1<a href="\2" target="_top">\2</a>\3'). #special case \{ e.g. \}http://url
- gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,%{#{@url_brace.xml_open}<a href="\\1" target="_top">\\1</a>#{@url_brace.xml_close}}) #http ftp matches with decoration
- else
- @s=@s.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
- end
- if @t_o.is==:paragraph
- if @t_o.bullet_
- @s=@s
- end
- if @t_o.indent > 0
- @s=@s
- end
- end
- if @t_o.is==:heading
- @s=@s
- end
- else
- p __FILE__ +':'+ __LINE__.to_s
- end
- @s
- end
- end
- class ModifiedTextPlusHashDigest
- def initialize(md,x)
- @md=md
- if x.class==String
- @t_o,@s=nil,x
- else
- @t_o,@s=x,x.obj.dup
- end
- @env ||=SiSU_Env::InfoEnv.new(@md.fns)
- @sha_ =((@env.digest.type =='sha256') ? true : false)
- @sha_ ? (require 'digest/sha2') : (require 'digest/md5')
- end
- def digest(txt)
- d=nil
- if @sha_
- for hash_class in [ Digest::SHA256 ]
- d=hash_class.hexdigest(txt)
- end
- else
- for hash_class in [ Digest::MD5 ]
- d=hash_class.hexdigest(txt)
- end
- end
- d
- end
- def strip_clean_of_markup
- def txt
- SiSU_TextRepresentation::Alter.new(@s).strip_clean_of_markup
- end
- def dgst
- en_dgst,img_dgst={},{}
- txt_dgst=digest(txt)
- { txt: txt, dgst_txt: txt_dgst }
- end
- self
- end
- def semi_revert_markup
- def txt
- SiSU_TextRepresentation::Alter.new(@s).semi_revert_markup
- end
- def dgst
- txt_dgst=digest(txt)
- { txt: txt, dgst_txt: txt_dgst }
- end
- self
- end
- def composite
- def stripped_clean(txt)
- SiSU_TextRepresentation::Alter.new(txt).strip_clean_of_markup
- end
- def markup_reverted(txt)
- SiSU_TextRepresentation::Alter.new(txt).semi_revert_markup
- end
- def images(imgs)
- sys=SiSU_Env::SystemCall.new
- line_image=[]
- img_dgst={}
- if imgs and imgs.length > 0
- @image_name,@image_dgst,@img=[],[],[]
- imgs.each do |i|
- image_source=if FileTest.file?("#{@env.path.image_source_include_local}/#{i}")
- @env.path.image_source_include_local
- elsif FileTest.file?("#{@env.path.image_source_include_remote}/#{i}")
- @env.path.image_source_include_remote
- elsif FileTest.file?("#{@env.path.image_source_include}/#{i}")
- @env.path.image_source_include
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"ERROR - image:", %{"#{i}" missing}, "search locations: #{@env.path.image_source_include_local}, #{@env.path.image_source_include_remote} and #{@env.path.image_source_include}").error2 unless @md.opt.cmd =~/q/
- nil
- end
- img_type = /\S+\.(png|jpg|gif)/.match(i)[1]
- not_found_msg='image not found'
- if image_source
- para_image = image_source + '/' + i
- image_name = i
- image_dgst =(@sha_ ? sys.sha256(para_image) : sys.md5(para_image))
- else
- image_name = i + ' [image missing]'
- image_dgst = ''
- end
- line_image << { img_dgst: image_dgst[1], img_name: image_name, img_type: img_type }
- end
- end
- line_image
- end
- def endnotes(en)
- en_dgst=[]
- if en and en.length > 0
- en.flatten.each do |e|
- note_no=e.gsub(/^([\d*+]+)\s+.+/,'\1')
- e=digest(stripped_clean(e))
- note_dgst=digest(e)
- en_dgst << { note_number: note_no, note_dgst: note_dgst }
- end
- end
- en_dgst
- end
- def dgst
- if @t_o.of !=:comment \
- && @t_o.of !=:structure \
- && @t_o.of !=:layout
- en_dgst,img_dgst={},{}
- txt_stripped_dgst=digest(stripped_clean(@t_o))
- txt_markup_reverted_dgst=digest(markup_reverted(@t_o))
- endnotes_dgst=[]
- rgx_notes=/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/
- notes=@t_o.obj.scan(rgx_notes)
- endnotes_dgst=endnotes(notes)
- rgx_image=/#{Mx[:lnk_o]}(\S+\.(?:png|jpg|gif))\s.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- imgs=if (@t_o.is==:para \
- || @t_o.is==:image) \
- and @t_o.obj =~rgx_image
- imgs=@t_o.obj.scan(rgx_image).flatten
- line_image=images(imgs)
- end
- dgst={ is: @t_o.is, ocn: @t_o.ocn, dgst_stripped_txt: txt_stripped_dgst, dgst_markedup_txt: txt_markup_reverted_dgst }
- dgst[:endnotes]=endnotes_dgst if endnotes_dgst and endnotes_dgst.length > 0
- dgst[:images]=line_image if line_image and line_image.length > 0
- end
- dgst
- end
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/shared_metadata.rb b/lib/sisu/v3dv/shared_metadata.rb
deleted file mode 100644
index 14cc885a..00000000
--- a/lib/sisu/v3dv/shared_metadata.rb
+++ /dev/null
@@ -1,1361 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_Metadata
- class Summary
- attr_accessor :tag,:inf,:class,:attrib
- def initialize(md,display_heading=false)
- @md,@display_heading=md,display_heading
- @tag,@inf,@class,@attrib=nil
- end
- def metadata_base
- meta,tag=[],[]
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- base_html="#{dir.url.root}/#{@md.fnb}"
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- language=l[:n]
- tr=SiSU_Translate::Source.new(@md,language)
- @attrib='md'
- if @display_heading
- @tag,@inf=%{<b><u>Document Metadata</u></b>},''
- meta << self.meta_para
- end
- if defined? @md.title.full \
- and @md.title.full=~/\S+/
- @tag,@inf,@class=tr.full_title,@md.title.full,'dc' #1
- meta << self.meta_para
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- @tag,@inf,@class=tr.author,@md.creator.author,'dc' #2
- meta << self.meta_para
- end
- if defined? @md.creator.translator \
- and @md.creator.translator=~/\S+/
- @tag,@inf,@class=tr.translator,@md.creator.translator,'ext'
- meta << self.meta_para
- end
- if defined? @md.creator.illustrator \
- and @md.creator.illustrator=~/\S+/
- @tag,@inf,@class=tr.illustrator,@md.creator.illustrator,'ext'
- meta << self.meta_para
- end
- if defined? @md.creator.prepared_by \
- and @md.creator.prepared_by=~/\S+/
- @tag,@inf,@class=tr.prepared_by,@md.creator.prepared_by,'ext'
- meta << self.meta_para
- end
- if defined? @md.creator.digitized_by \
- and @md.creator.digitized_by=~/\S+/
- @tag,@inf,@class=tr.digitized_by,@md.creator.digitized_by,'ext'
- meta << self.meta_para
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/
- @tag,@inf,@class=tr.rights,@md.rights.all,'dc' #15
- meta << self.meta_para
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- @tag,@inf,@class=tr.subject,@md.classify.subject,'dc' #3
- meta << self.meta_para
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- @tag,@inf,@class=tr.description,@md.notes.description,'dc' #4
- meta << self.meta_para
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/
- @tag,@inf,@class=tr.publisher,@md.publisher,'dc' #5
- meta << self.meta_para
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/
- @tag,@inf,@class=tr.contributor,@md.creator.contributor,'dc' #6
- meta << self.meta_para
- end
- if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- @tag,@inf,@class=tr.abstract,@md.notes.abstract,'ext'
- meta << self.meta_para
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/
- @tag,@inf,@class=tr.date_created,@md.date.created,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/
- @tag,@inf,@class=tr.date_issued,@md.date.issued,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/
- @tag,@inf,@class=tr.date_available,@md.date.available,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/
- @tag,@inf,@class=tr.date_modified,@md.date.modified,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/
- @tag,@inf,@class=tr.date_valid,@md.date.valid,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.published \
- and @md.date.published=~/\S+/
- @tag,@inf,@class=tr.date,@md.date.published,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.type \
- and @md.date=~/\S+/
- @tag,@inf,@class=tr.type,@md.type,'dc' #8
- meta << self.meta_para
- end
- if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- @tag,@inf,@class=tr.cls_loc,@md.classify.loc,'id'
- meta << self.meta_para
- end
- if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- @tag,@inf,@class=tr.cls_dewey,@md.classify.dewey,'id'
- meta << self.meta_para
- end
- if defined? @md.classify.pg \
- and @md.classify.pg=~/\S+/
- @tag,@inf,@class=tr.cls_gutenberg,@md.classify.pg,'id'
- meta << self.meta_para
- end
- if defined? @md.classify.isbn \
- and @md.classify.isbn=~/\S+/
- @tag,@inf,@class=tr.cls_isbn,@md.classify.isbn,'id'
- meta << self.meta_para
- end
- if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- @tag,@inf,@class=tr.comments,@md.notes.comment,'ext'
- meta << self.meta_para
- end
- if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- @tag,@inf,@class=tr.prefix_a,@md.notes.prefix_a,'inf'
- meta << self.meta_para
- end
- if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- @tag,@inf,@class=tr.prefix_b,@md.notes.prefix_b,'inf'
- meta << self.meta_para
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- @tag,@inf,@class=tr.identifier,@md.classify.identifier,'dc' #10
- meta << self.meta_para
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/
- @tag,@inf,@class=tr.source,@md.original.source,'dc' #11
- meta << self.meta_para
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/
- @tag,@inf,@class=tr.language,@md.title.language,'dc' #12
- meta << self.meta_para
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- @tag,@inf,@class=tr.language_original,@md.original.language,'ext'
- meta << self.meta_para
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- @tag,@inf,@class=tr.format,@md.classify.format,'dc' #9
- meta << self.meta_para
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- @tag,@inf,@class=tr.relation,@md.classify.relation,'dc' #13
- meta << self.meta_para
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- @tag,@inf,@class=tr.coverage,@md.classify.coverage,'dc' #14
- meta << self.meta_para
- end
- if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- @tag,@inf,@class=tr.keywords,@md.classify.keywords,'ext'
- meta << self.meta_para
- end
- if @display_heading
- @tag,@inf=%{<b><u>Version Information</u></b>},''
- meta << self.meta_para
- end
- if defined? @md.fns \
- and @md.fns=~/\S+/
- @tag,@inf,@class=tr.sourcefile,@md.fns,'src'
- meta << self.meta_para
- end
- if defined? @md.file_encoding \
- and @md.file_encoding=~/\S+/
- @tag,@inf,@class='Filetype',@md.file_encoding,'src'
- meta << self.meta_para
- end
- if defined? @md.dgst \
- and @md.dgst.class==Array
- @tag,@inf,@class='Source Digest',"#{@md.dgst[0]} #{@md.dgst[1]}",'src'
- meta << self.meta_para
- end
- if defined? @md.dgst_skin \
- and @md.dgst_skin.class==Array
- @tag,@inf,@class='Skin Digest',"#{@md.dgst_skin[0]} #{@md.dgst_skin[1]}",'src'
- meta << self.meta_para
- end
- if @display_heading
- @tag,@inf=%{<b><u>Generated</u></b>},''
- meta << self.meta_para
- end
- if defined? @md.sisu_version \
- and @md.sisu_version[:version]=~/\S+/
- v="#{tr.sisu_version}: " +
- "#{@md.sisu_version[:project]} " +
- "#{@md.sisu_version[:version]} " +
- "of #{@md.sisu_version[:date_stamp]} " +
- "(#{@md.sisu_version[:date]})"
- @tag,@inf,@class='Generated by',v,'ver'
- meta << self.meta_para
- end
- if defined? @md.ruby_version \
- and @md.ruby_version=~/\S+/
- @tag,@inf,@class=tr.ruby_version,@md.ruby_version,'ver'
- meta << self.meta_para
- end
- if defined? @md.generated \
- and @md.generated.class==Time
- @tag,@inf,@class=tr.last_generated,@md.generated,'date'
- meta << self.meta_para
- end
- meta
- end
- def processing_tags
- def make
- def language
- if defined? @md.make.language \
- and @md.make.language
- ' :language: ' + @md.make.language.join(', ')
- else nil
- end
- end
- def headings
- if defined? @md.make.headings \
- and @md.make.headings
- ' :headings: ' + @md.make.headings[0].join('; ')
- else nil
- end
- end
- def num_top
- if defined? @md.make.num_top \
- and @md.make.num_top
- ' :num_top: ' + @md.make.num_top
- else nil
- end
- end
- def breaks
- x=if defined? @md.make.breaks \
- and @md.make.breaks
- x=' :breaks:'
- if @md.make.breaks[:page_break]
- x +=' break=' + @md.make.breaks[:page_break] + ';'
- end
- if @md.make.breaks[:page_new]
- x +=' new=' + @md.make.breaks[:page_new] + ';'
- end
- else nil
- end
- end
- def emphasis
- if defined? @md.make.emphasis \
- and @md.make.emphasis
- ' :emphasis: ' + @md.make.emphasis[:regx].inspect
- else nil
- end
- end
- def bold
- if defined? @md.make.bold \
- and @md.make.bold
- ' :bold: ' + @md.make.bold[:regx].inspect
- else nil
- end
- end
- def italics
- if defined? @md.make.italics \
- and @md.make.italics
- ' :italics: ' + @md.make.italics[:regx].inspect
- else nil
- end
- end
- def texpdf_font
- if defined? @md.make.texpdf_font \
- and @md.make.texpdf_font
- ' :texpdf_font: ' + @md.make.texpdf_font
- else nil
- end
- end
- def skin
- if defined? @md.make.skin \
- and @md.make.skin
- ' :skin: ' + @md.make.skin
- else nil
- end
- end
- self
- end
- self
- end
- def metadata_tags
- def title
- def main
- if defined? @md.title.main \
- and @md.title.main
- '@title: ' + @md.title.main
- else '@title:'
- end
- end
- def sub
- if defined? @md.title.sub \
- and @md.title.sub
- ' :subtitle: ' + @md.title.sub
- else nil
- end
- end
- def edition
- if defined? @md.title.edition \
- and @md.title.edition
- ' :edition: ' + @md.title.edition
- else nil
- end
- end
- def note
- if defined? @md.title.note \
- and @md.title.note
- ' :note: ' + @md.title.note
- else nil
- end
- end
- def short
- if defined? @md.title.short \
- and @md.title.short
- ' :short: ' + @md.title.short
- else nil
- end
- end
- def language
- if defined? @md.title.language \
- and @md.title.language
- ' :language: ' + @md.title.language.join(', ')
- else nil
- end
- end
- def language_char
- if defined? @md.title.language_char \
- and @md.title.language_char
- ' :language_char: ' + @md.title.language_char
- else nil
- end
- end
- self
- end
- def creator
- def head
- '@creator:'
- end
- def author
- x=if defined? @md.creator.author_detail \
- and @md.creator.author_detail
- x=''
- @md.creator.author_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :author: ' + x
- else nil
- end
- end
- def contributor
- x=if defined? @md.creator.contributor_detail \
- and @md.creator.contributor_detail
- x=''
- @md.creator.contributor_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :contributor: ' + x
- else nil
- end
- end
- def illustrator
- x=if defined? @md.creator.illustrator_detail \
- and @md.creator.illustrator_detail
- x=''
- @md.creator.illustrator_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :illustrator: ' + x
- else nil
- end
- end
- def photographer
- x=if defined? @md.creator.photographer_detail \
- and @md.creator.photographer_detail
- x=''
- @md.creator.photographer_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :photographer: ' + x
- else nil
- end
- end
- def translator
- x=if defined? @md.creator.translator_detail \
- and @md.creator.translator_detail
- x=''
- @md.creator.translator_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :translator: ' + x
- else nil
- end
- end
- def audio
- x=if defined? @md.creator.audio_detail \
- and @md.creator.audio_detail
- x=''
- @md.creator.audio_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :audio: ' + x
- else nil
- end
- end
- def digitized_by
- x=if defined? @md.creator.digitized_by_detail \
- and @md.creator.digitized_by_detail
- x=''
- @md.creator.digitized_by_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :digitized_by: ' + x
- else nil
- end
- end
- def prepared_by
- x=if defined? @md.creator.prepared_by_detail \
- and @md.creator.prepared_by_detail
- x=''
- @md.creator.prepared_by_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :prepared_by: ' + x
- else nil
- end
- end
- self
- end
- def rights
- def head
- '@rights:'
- end
- def copyright
- def text
- if defined? @md.rights.copyright.text \
- and @md.rights.copyright.text
- ' :copyright: ' + @md.rights.copyright.text
- else nil
- end
- end
- def translation
- if defined? @md.rights.copyright.translation \
- and @md.rights.copyright.translation
- ' :translation: ' + @md.rights.copyright.translation
- else nil
- end
- end
- def illustrations
- if defined? @md.rights.copyright.illustrations \
- and @md.rights.copyright.illustrations
- ' :illustrations: ' + @md.rights.copyright.illustrations
- else nil
- end
- end
- def photographs
- if defined? @md.rights.copyright.photographs \
- and @md.rights.copyright.photographs
- ' :photographs: ' + @md.rights.copyright.photographs
- else nil
- end
- end
- def digitization
- if defined? @md.rights.copyright.digitization \
- and @md.rights.copyright.digitization
- ' :digitization: ' + @md.rights.copyright.digitization
- else nil
- end
- end
- def audio
- if defined? @md.rights.copyright.audio \
- and @md.rights.copyright.audio
- ' :audio: ' + @md.rights.copyright.audio
- else nil
- end
- end
- self
- end
- def license
- if defined? @md.rights.license \
- and @md.rights.license
- ' :license: ' + @md.rights.license
- else nil
- end
- end
- self
- end
- def classify
- def head
- '@classify:'
- end
- def coverage
- if defined? @md.classify.coverage \
- and @md.classify.coverage
- ' :coverage: ' + @md.classify.coverage
- else nil
- end
- end
- def relation
- if defined? @md.classify.relation \
- and @md.classify.relation
- ' :relation: ' + @md.classify.relation
- else nil
- end
- end
- def subject
- if defined? @md.classify.subject \
- and @md.classify.subject
- ' :subject: ' + @md.classify.subject
- else nil
- end
- end
- def topic_register
- if defined? @md.classify.topic_register \
- and @md.classify.topic_register
- ' :topic_register: ' + @md.classify.topic_register
- else nil
- end
- end
- def type
-# if defined? @md.classify.type \
-# and @md.classify.type
-# ' :type: ' + @md.classify.type
-# else nil
-# end
- nil
- end
- def identifier
- if defined? @md.classify.identifier \
- and @md.classify.identifier
- ' :identifier: ' + @md.classify.identifier
- else nil
- end
- end
- def loc
- if defined? @md.classify.loc \
- and @md.classify.loc
- ' :loc: ' + @md.classify.loc
- else nil
- end
- end
- def dewey
- if defined? @md.classify.dewey \
- and @md.classify.dewey
- ' :dewey: ' + @md.classify.dewey
- else nil
- end
- end
- def oclc
- if defined? @md.classify.oclc \
- and @md.classify.oclc
- ' :oclc: ' + @md.classify.oclc
- else nil
- end
- end
- def pg
- if defined? @md.classify.pg \
- and @md.classify.pg
- ' :pg: ' + @md.classify.pg
- else nil
- end
- end
- def isbn
- if defined? @md.classify.isbn \
- and @md.classify.isbn
- ' :isbn: ' + @md.classify.isbn
- else nil
- end
- end
- self
- end
- def date
- def head
- '@date:'
- end
- def added_to_site
- if defined? @md.date.added_to_site \
- and @md.date.added_to_site
- ' :added_to_site: ' + @md.date.added_to_site
- else nil
- end
- end
- def available
- if defined? @md.date.available \
- and @md.date.available
- ' :available: ' + @md.date.available
- else nil
- end
- end
- def created
- if defined? @md.date.created \
- and @md.date.created
- ' :created: ' + @md.date.created
- else nil
- end
- end
- def issued
- if defined? @md.date.issued \
- and @md.date.issued
- ' :issued: ' + @md.date.issued
- else nil
- end
- end
- def modified
- if defined? @md.date.modified \
- and @md.date.modified
- ' :modified: ' + @md.date.modified
- else nil
- end
- end
- def published
- if defined? @md.date.published \
- and @md.date.published
- ' :published: ' + @md.date.published
- else nil
- end
- end
- def valid
- if defined? @md.date.valid \
- and @md.date.valid
- ' :valid: ' + @md.date.valid
- else nil
- end
- end
- self
- end
- #def make
- # def headings
- # @md.make.headings \
- # ? (' :headings: ' + @md.make.headings) \
- # : nil
- # end
- #end
- self
- end
- def char_enc(str)
- @s=str
- def utf8
- if @s \
- and @s.class==String
- @s=@s.gsub(/<br(?: \/)?>/u,Mx[:br_paragraph]).
- gsub(/</um,'&#60;'). # '&lt;' # &#060;
- gsub(/</um,'&#60;'). # '&lt;' # &#060;
- gsub(/>/um,'&#62;'). # '&gt;' # &#062;
- gsub(/¢/um,'&#162;'). # '&cent;' # &#162;
- gsub(/£/um,'&#163;'). # '&pound;' # &#163;
- gsub(/¥/um,'&#165;'). # '&yen;' # &#165;
- gsub(/§/um,'&#167;'). # '&sect;' # &#167;
- gsub(/©/um,'&#169;'). # '&copy;' # &#169;
- gsub(/ª/um,'&#170;'). # '&ordf;' # &#170;
- gsub(/«/um,'&#171;'). # '&laquo;' # &#171;
- gsub(/®/um,'&#174;'). # '&reg;' # &#174;
- gsub(/°/um,'&#176;'). # '&deg;' # &#176;
- gsub(/±/um,'&#177;'). # '&plusmn;' # &#177;
- gsub(/²/um,'&#178;'). # '&sup2;' # &#178;
- gsub(/³/um,'&#179;'). # '&sup3;' # &#179;
- gsub(/µ/um,'&#181;'). # '&micro;' # &#181;
- gsub(/¶/um,'&#182;'). # '&para;' # &#182;
- gsub(/¹/um,'&#185;'). # '&sup1;' # &#185;
- gsub(/º/um,'&#186;'). # '&ordm;' # &#186;
- gsub(/»/um,'&#187;'). # '&raquo;' # &#187;
- gsub(/¼/um,'&#188;'). # '&frac14;' # &#188;
- gsub(/½/um,'&#189;'). # '&frac12;' # &#189;
- gsub(/¾/um,'&#190;'). # '&frac34;' # &#190;
- gsub(/×/um,'&#215;'). # '&times;' # &#215;
- gsub(/÷/um,'&#247;'). # '&divide;' # &#247;
- gsub(/¿/um,'&#191;'). # '&iquest;' # &#191;
- gsub(/À/um,'&#192;'). # '&Agrave;' # &#192;
- gsub(/Á/um,'&#193;'). # '&Aacute;' # &#193;
- gsub(/Â/um,'&#194;'). # '&Acirc;' # &#194;
- gsub(/Ã/um,'&#195;'). # '&Atilde;' # &#195;
- gsub(/Ä/um,'&#196;'). # '&Auml;' # &#196;
- gsub(/Å/um,'&#197;'). # '&Aring;' # &#197;
- gsub(/Æ/um,'&#198;'). # '&AElig;' # &#198;
- gsub(/Ç/um,'&#199;'). # '&Ccedil;' # &#199;
- gsub(/È/um,'&#200;'). # '&Egrave;' # &#200;
- gsub(/É/um,'&#201;'). # '&Eacute;' # &#201;
- gsub(/Ê/um,'&#202;'). # '&Ecirc;' # &#202;
- gsub(/Ë/um,'&#203;'). # '&Euml;' # &#203;
- gsub(/Ì/um,'&#204;'). # '&Igrave;' # &#204;
- gsub(/Í/um,'&#205;'). # '&Iacute;' # &#205;
- gsub(/Î/um,'&#206;'). # '&Icirc;' # &#206;
- gsub(/Ï/um,'&#207;'). # '&Iuml;' # &#207;
- gsub(/Ð/um,'&#208;'). # '&ETH;' # &#208;
- gsub(/Ñ/um,'&#209;'). # '&Ntilde;' # &#209;
- gsub(/Ò/um,'&#210;'). # '&Ograve;' # &#210;
- gsub(/Ó/um,'&#211;'). # '&Oacute;' # &#211;
- gsub(/Ô/um,'&#212;'). # '&Ocirc;' # &#212;
- gsub(/Õ/um,'&#213;'). # '&Otilde;' # &#213;
- gsub(/Ö/um,'&#214;'). # '&Ouml;' # &#214;
- gsub(/Ø/um,'&#216;'). # '&Oslash;' # &#216;
- gsub(/Ù/um,'&#217;'). # '&Ugrave;' # &#217;
- gsub(/Ú/um,'&#218;'). # '&Uacute;' # &#218;
- gsub(/Û/um,'&#219;'). # '&Ucirc;' # &#219;
- gsub(/Ü/um,'&#220;'). # '&Uuml;' # &#220;
- gsub(/Ý/um,'&#221;'). # '&Yacute;' # &#221;
- gsub(/Þ/um,'&#222;'). # '&THORN;' # &#222;
- gsub(/ß/um,'&#223;'). # '&szlig;' # &#223;
- gsub(/à/um,'&#224;'). # '&agrave;' # &#224;
- gsub(/á/um,'&#225;'). # '&aacute;' # &#225;
- gsub(/â/um,'&#226;'). # '&acirc;' # &#226;
- gsub(/ã/um,'&#227;'). # '&atilde;' # &#227;
- gsub(/ä/um,'&#228;'). # '&auml;' # &#228;
- gsub(/å/um,'&#229;'). # '&aring;' # &#229;
- gsub(/æ/um,'&#230;'). # '&aelig;' # &#230;
- gsub(/ç/um,'&#231;'). # '&ccedil;' # &#231;
- gsub(/è/um,'&#232;'). # '&egrave;' # &#232;
- gsub(/é/um,'&#233;'). # '&acute;' # &#233;
- gsub(/ê/um,'&#234;'). # '&circ;' # &#234;
- gsub(/ë/um,'&#235;'). # '&euml;' # &#235;
- gsub(/ì/um,'&#236;'). # '&igrave;' # &#236;
- gsub(/í/um,'&#237;'). # '&acute;' # &#237;
- gsub(/î/um,'&#238;'). # '&icirc;' # &#238;
- gsub(/ï/um,'&#239;'). # '&iuml;' # &#239;
- gsub(/ð/um,'&#240;'). # '&eth;' # &#240;
- gsub(/ñ/um,'&#241;'). # '&ntilde;' # &#241;
- gsub(/ò/um,'&#242;'). # '&ograve;' # &#242;
- gsub(/ó/um,'&#243;'). # '&oacute;' # &#243;
- gsub(/ô/um,'&#244;'). # '&ocirc;' # &#244;
- gsub(/õ/um,'&#245;'). # '&otilde;' # &#245;
- gsub(/ö/um,'&#246;'). # '&ouml;' # &#246;
- gsub(/ø/um,'&#248;'). # '&oslash;' # &#248;
- gsub(/ù/um,'&#250;'). # '&ugrave;' # &#250;
- gsub(/ú/um,'&#251;'). # '&uacute;' # &#251;
- gsub(/û/um,'&#252;'). # '&ucirc;' # &#252;
- gsub(/ü/um,'&#253;'). # '&uuml;' # &#253;
- gsub(/þ/um,'&#254;'). # '&thorn;' # &#254;
- gsub(/ÿ/um,'&#255;'). # '&yuml;' # &#255;
- gsub(/‘/um,'&#8216;'). # '&lsquo;' # &#8216;
- gsub(/’/um,'&#8217;'). # '&rsquo;' # &#8217;
- gsub(/“/um,'&#8220;'). # &ldquo; # &#8220;
- gsub(/”/um,'&#8221;'). # &rdquo; # &#8221;
- gsub(/–/um,'&#8211;'). # &ndash; # &#8211;
- gsub(/—/um,'&#8212;'). # &mdash; # &#8212;
- gsub(/∝/um,'&#8733;'). # &prop; # &#8733;
- gsub(/∞/um,'&#8734;'). # &infin; # &#8734;
- gsub(/™/um,'&#8482;'). # &trade; # &#8482;
- gsub(/✠/um,'&#10016;'). # &cross; # &#10016;
- gsub(/ /um,' '). # space identify
- gsub(/ /um,' '). # space identify
- gsub(/#{Mx[:br_paragraph]}/u,'<br />')
- end
- @s
- end
- self
- end
- def xml_sax
- def meta_para
- inf_xml=char_enc(@inf).utf8
- <<WOK
-<metadata>
-#{Ax[:tab]}<meta>#{@tag.capitalize}:</meta>
-#{Ax[:tab]}<data class="#{@attrib}">
-#{Ax[:tab]*2}#{inf_xml}
-#{Ax[:tab]}</data>
-</metadata>
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def xml_dom
- def meta_para
- inf_xml=char_enc(@inf).utf8
- <<WOK
-#{Ax[:tab]}<header>
-#{Ax[:tab]*2}<meta>#{@tag.capitalize}:</meta>
-#{Ax[:tab]*2}<#{@attrib}>
-#{Ax[:tab]*3}#{inf_xml}
-#{Ax[:tab]*2}</#{@attrib}>
-#{Ax[:tab]}</header>
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def xhtml_scroll
- def meta_para
- inf_xml=char_enc(@inf).utf8
- <<WOK
-#{Ax[:tab]}<metadata>
-#{Ax[:tab]}<meta>#{@tag.capitalize}:</meta>
-#{Ax[:tab]}<#{@attrib} class="#{@class}">
-#{Ax[:tab]*2}#{inf_xml}
-#{Ax[:tab]}</#{@attrib}>
-#{Ax[:tab]}</metadata>
- <br />
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def xhtml_display
- def meta_para
- inf_xml=char_enc(@inf).utf8
- %{<p class="norm">
- <b>#{@tag}</b>: #{inf_xml}
-</p>}
- end
- def metadata
- SiSU_Metadata::Summary.new(@md,true).metadata_base
- end
- self
- end
- def odf
- def meta_para
- url_brace=SiSU_Viz::Skin.new.url_decoration
- if @inf.class==String
- @inf=@inf.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- if @inf =~/&/
- inf_array=[]
- word=@inf.scan(/\S+|\n/)
- word.each do |w| # _ - / # | : ! ^ ~
- w=w.gsub(/&nbsp;/,'&#160;')
- if w !~/&\S{2,7}?;/
- w=w.gsub(/&/,'&amp;')
- end
- inf_array << w
- end
- @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
- 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
- @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
- 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
- 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
- end
- <<WOK
-<text:p text:style-name="P1">#{@tag.capitalize}: #{@inf}</text:p>
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def plaintext
- def meta_para
- <<WOK
-
-#{@tag.capitalize}: #{@inf}
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def manpage
- def meta_para
- <<WOK
-
-.TP
-#{@tag.capitalize}:
-.I #{@inf}
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- end
- class TeX_Metadata
- def initialize(md)
- @md=md
- @br="\\\\\n"
- end
- def meta_para(tag,inf,sc=true)
- inf=((inf.class==String && sc) ? spec_char(inf) : inf)
- %{\\begin\{bfseries\}#{tag}:\\end\{bfseries\} #{inf}
-}
- end
- def spec_char(inf)
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_characters
- end
- def word_break_points(inf)
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_word_break_points
- end
- def number_break_points(inf)
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_number_break_points
- end
- def metadata_tex
- meta=[]
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- base_html="#{dir.url.root}/#{@md.fnb}"
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- language=l[:n]
- tr=SiSU_Translate::Source.new(@md,language)
- tag="Document Manifest @"
- inf="#{@br}#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}"
- meta << meta_para(tag,inf)
- if defined? @md.title.full \
- and @md.title.full=~/\S+/
- tag,inf=tr.full_title,@md.title.full
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- tag,inf=tr.author,@md.creator.author
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.translator \
- and @md.creator.translator=~/\S+/
- tag,inf=tr.translator,@md.creator.translator
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.illustrator \
- and @md.creator.illustrator=~/\S+/
- tag,inf=tr.illustrator,@md.creator.illustrator
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.prepared_by \
- and @md.creator.prepared_by=~/\S+/
- tag,inf=tr.prepared_by,@md.creator.prepared_by
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.digitized_by \
- and @md.creator.digitized_by=~/\S+/
- tag,inf=tr.digitized_by,@md.creator.digitized_by
- meta << meta_para(tag,inf)
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/
- tag,inf=tr.rights,@md.rights.all
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- tag,inf=tr.description,@md.notes.description
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- tag,inf=tr.subject,@md.classify.subject
- meta << meta_para(tag,inf)
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/
- tag,inf=tr.publisher,@md.publisher
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/
- tag,inf=tr.contributor,@md.creator.contributor
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- tag,inf=tr.abstract,@md.notes.abstract
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/
- tag,inf=tr.date_created,@md.date.created
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/
- tag,inf=tr.date_issued,@md.date.issued
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/
- tag,inf=tr.date_available,@md.date.available
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/
- tag,inf=tr.date_modified,@md.date.modified
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/
- tag,inf=tr.date_valid,@md.date.valid
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.published \
- and @md.date.published=~/\S+/
- tag,inf=tr.date,@md.date.published
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.topic_register \
- and @md.classify.topic_register=~/\S+/
- tag,inf=tr.topic_register,@md.classify.topic_register
- inf=word_break_points(inf)
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- tag,inf=tr.cls_loc,@md.classify.loc
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- tag,inf=tr.cls_dewey,@md.classify.dewey
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.oclc \
- and @md.classify.oclc=~/\S+/
- tag,inf=tr.cls_oclc,@md.classify.oclc
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.pg \
- and @md.classify.pg=~/\S+/
- tag,inf=tr.cls_gutenberg,@md.classify.pg
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.isbn \
- and @md.classify.isbn=~/\S+/
- tag,inf=tr.cls_isbn,@md.classify.isbn
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- tag,inf=tr.comments,@md.notes.comment
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- tag,inf=tr.prefix_a,@md.notes.prefix_a
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- tag,inf=tr.prefix_b,@md.notes.prefix_b
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- tag,inf=tr.identifier,@md.classify.identifier
- meta << meta_para(tag,inf)
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/
- tag,inf=tr.source,@md.original.source
- meta << meta_para(tag,inf)
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/
- tag,inf=tr.language,@md.title.language
- meta << meta_para(tag,inf)
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- tag,inf=tr.language_original,@md.original.language
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- tag,inf=tr.format,@md.classify.format
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- tag,inf=tr.relation,@md.classify.relation
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- tag,inf=tr.coverage,@md.classify.coverage
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- tag,inf=tr.keywords,@md.classify.keywords
- meta << meta_para(tag,inf)
- end
- meta << %{#{@br}\\begin\{bfseries\}Version Information \\end\{bfseries\}}
- if defined? @md.fns \
- and @md.fns=~/\S+/
- fn=spec_char(@md.fns)
- fn=word_break_points(fn)
- fn="\\begin\{footnotesize\}#{fn}\\end\{footnotesize\}"
- tag,inf=tr.sourcefile,fn
- meta << meta_para(tag,inf,false)
- end
- if defined? @md.file_encoding \
- and @md.file_encoding=~/\S+/
- tag,inf='Filetype',@md.file_encoding
- meta << meta_para(tag,inf)
- end
- if defined? @md.dgst \
- and @md.dgst.class==Array
- hash_of=spec_char(@md.dgst[0])
- hash_of=word_break_points(hash_of)
- dgst=number_break_points(@md.dgst[1])
- tag,inf='Source Digest',"\\begin\{footnotesize\}#{hash_of}\\end\{footnotesize\}\\-\\begin\{scriptsize\}#{dgst}\\end\{scriptsize\}"
- meta << meta_para(tag,inf,false)
- end
- if defined? @md.dgst_skin \
- and @md.dgst_skin.class==Array
- hash_of=spec_char(@md.dgst_skin[0])
- hash_of=word_break_points(hash_of)
- dgst=number_break_points(@md.dgst_skin[1])
- tag,inf='Skin Digest',"\\begin\{footnotesize\}#{hash_of}\\end\{footnotesize\}\\-\\begin\{scriptsize\}#{dgst}\\end\{scriptsize\}"
- meta << meta_para(tag,inf,false)
- end
- meta << %{#{@br}\\begin\{bfseries\}Generated \\end\{bfseries\}}
- if defined? @md.generated \
- and @md.generated.class==Time
- tag,inf=tr.last_generated,@md.generated
- meta << meta_para(tag,inf)
- end
- if defined? @md.sisu_version \
- and @md.sisu_version[:version]=~/\S+/
- tag=tr.sisu_version
- inf="#{@md.sisu_version[:project]} " +
- "#{@md.sisu_version[:version]} " +
- "of #{@md.sisu_version[:date_stamp]} " +
- "(#{@md.sisu_version[:date]})"
- meta << meta_para(tag,inf)
- end
- if defined? @md.ruby_version \
- and @md.ruby_version=~/\S+/
- tag,inf=tr.ruby_version,@md.ruby_version
- meta << meta_para(tag,inf)
- end
- meta
- end
- end
-end
-__END__
-if @md.title
- x=[
- @md.title.main,
- @md.title.sub,
- @md.title.edition,
- @md.title.note,
- @md.title.short,
- @md.title.full,
- @md.title.language,
- @md.title.language_char
- ]
- x.each {|y| p y if y}
-end
-if @md.creator
- x=[
- @md.creator.author,
- @md.creator.author_detail,
- @md.creator.contributor,
- @md.creator.contributor_detail,
- @md.creator.illustrator,
- @md.creator.illustrator_detail,
- @md.creator.photographer,
- @md.creator.photographer_detail,
- @md.creator.translator,
- @md.creator.translator_detail,
- @md.creator.audio,
- @md.creator.audio_detail,
- @md.creator.digitized_by,
- @md.creator.digitized_by_detail,
- @md.creator.prepared_by,
- @md.creator.prepared_by_detail
- ]
- x.each {|y| p y if y}
-end
-if @md.rights
- x=[
- @md.rights.copyright.text,
- @md.rights.copyright.translation,
- @md.rights.copyright.illustrations,
- @md.rights.copyright.photographs,
- @md.rights.copyright.digitization,
- @md.rights.copyright.audio,
- @md.rights.license,
- @md.rights.all
- ]
- x.each {|y| p y if y}
-end
-if @md.classify
- x=[
- @md.classify.coverage,
- @md.classify.relation,
- @md.classify.subject,
- @md.classify.topic_register,
- @md.classify.type,
- @md.classify.identifier,
- @md.classify.loc,
- @md.classify.dewey,
- @md.classify.oclc,
- @md.classify.pg,
- @md.classify.isbn,
- ]
- x.each {|y| p y if y}
-end
-if @md.date
- x=[
- @md.date.added_to_site,
- @md.date.available,
- @md.date.created,
- @md.date.issued,
- @md.date.modified,
- @md.date.published,
- @md.date.valid
- ]
- x.each {|y| p y if y}
-end
-#if @md.language
-# p @md.language.document
-# p @md.language.document_char
-# p @md.language.original
-# p @md.language.original_char
-#end
-if @md.make
- x=[
- @md.make.headings,
- @md.make.num_top,
- @md.make.breaks,
- @md.make.bold,
- @md.make.italics,
- @md.make.emphasis,
- @md.make.plaintext_wrap,
- @md.make.texpdf_font,
- @md.make.skin,
- @md.make.promo,
- @md.make.ad,
- @md.make.manpage
- ]
- x.each {|y| p y if y}
-end
-if @md.current_publisher # @md.publisher
- x=[
- @md.current_publisher
- ]
- x.each {|y| p y if y}
-end
-if @md.original
- x=[
- @md.original.publisher,
- @md.original.language,
- @md.original.language_char,
- @md.original.source,
- @md.original.institution,
- @md.original.nationality
- ]
- x.each {|y| p y if y}
-end
-if @md.notes
- x=[
- @md.notes.abstract,
- @md.notes.comment,
- @md.notes.description,
- @md.notes.history,
- @md.notes.prefix
- ]
- x.each {|y| p y if y}
-end
diff --git a/lib/sisu/v3dv/shared_sem.rb b/lib/sisu/v3dv/shared_sem.rb
deleted file mode 100644
index 5a6adb20..00000000
--- a/lib/sisu/v3dv/shared_sem.rb
+++ /dev/null
@@ -1,156 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
- Sematic tags
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/copyleft/gpl.html>
-
- <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_Sem
- require_relative 'param' # param.rb
- class Tags
- def initialize(para,md)
- @para,@md=para,md
- end
- def rgx
- def exclude
- /^(?:<:code>|%+ )/
- end
- def each_csc
- /(?:;|(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]*):)\{|\}[:;][a-z]+(?:[_:.][a-z]+)*/m
- end
- def each_c
- /(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]*):\{|\}:[a-z]+(?:[_:.][a-z]+)*/m
- end
- def each_sc
- /(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]*);\{|\};[a-z]+(?:[_:.][a-z]+)*/m
- end
- def pair_csc
- /(([a-z]+(?:[_:.][a-z]+)+|[a-z]+)(?::\{(.+?)\}:\2)|([:;])\{(.+?)\}\4[a-z]+(?:[_:.][a-z]+)*)/m
- end
- def pair_c
- /(([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\2)|:\{(.+?)\}:[a-z]+(?:[_:.][a-z]+)*)/m
- end
- def pair_sc
- /(;\{.+?\};[a-z]+(?:[_:.][a-z]+)*)/m
- end
- def whole_csc_ae
- /(([a-z]+(?:[_.][a-z]+)+|[a-z]*)(?::\[(.+?)\]:\2)|;\{(.+?)\};(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]+)\b)/m
- end
- def each_csc_ae
- /(?:;|(?:[a-z]+(?:[_:.][a-z]+)+)*:|[a-z]*:)\[|\][:;](?:[a-z]+(?:[_:.][a-z]+)+|[a-z]+)/m
- end
- self
- end
- def print
- def scan_pair_c
- if @para =~ rgx.pair_c
- matched=@para.scan(rgx.pair_c).flatten
- puts matched[0] unless matched[0].nil?
- end
- end
- def scan_pair_sc
- matched=@para.scan(rgx.pair_sc).flatten
- puts matched[0] unless matched[0].nil?
- end
- def if_pair_c
- if @para=~/([a-z](?:[a-z_:.]+?[a-z])?)+(?::\{(.+?)\}:\1)/m; puts "#{$1}:{ #{$2} }:#{$1}"
- end
- end
- def if_pair_sc
- if @para=~/;\{\s*(.+?)\s*\};([a-z]+(?:[_:.][a-z]+)*)/; puts ";{ #{$1} };#{$2}"
- end
- end
- def match_pair_c
- matched=[]
- matched=rgx.pair_c.match(@para)[1] if @para =~ rgx.pair_c
- puts matched unless matched.nil?
- end
- def match_pair_sc
- matched=[]
- matched=rgx.pair_sc.match(@para)[1] if @para =~ rgx.pair_sc
- puts matched unless matched.nil?
- end
- def matching
- scan_pair_c
- end
- self
- end
- def rm
- def sem_marker_parts
- unless @para =~ rgx.exclude
- @para.gsub!(rgx.each_csc,'')
- end
- @para
- end
- def sem_marker_added_extra_parts
- unless @para =~ rgx.exclude
- @para.gsub!(rgx.whole_csc_ae,'')
- if @para =~rgx.each_csc_ae; puts "WARNING semantic taggin error: #{@para}"
- end
- end
- @para
- end
- def all
- if @md.sem_tag
- sem_marker_parts
- sem_marker_added_extra_parts
- end
- @para
- end
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/shared_txt.rb b/lib/sisu/v3dv/shared_txt.rb
deleted file mode 100644
index 4afddc05..00000000
--- a/lib/sisu/v3dv/shared_txt.rb
+++ /dev/null
@@ -1,232 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: modules shared by flatfile output generators
-
-=end
-module SiSU_TextUtils
- class Wrap
- 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 line_wrap
- space=' '
- spaces_indent,spaces_hang="#{@br}#{space*@n_indent}",space*@n_hang
- line=0
- out=[]
- out[line]=''
- @para=@para.gsub(/<br>/,' <br> ').
- gsub(/#{Mx[:br_nl]}/,"\n\n")
- words=@para.scan(/\n\n|<br>|\S+/m)
- while words != ''
- word=words.shift
- if not word
- out[line] unless out[line].empty? #check
- break
- elsif word =~/<br>/
- word=nil
- out[line]=out[line].gsub(/<br>/,'')
- line=line
- elsif word =~/\n\n/
- word="\n"
- @n_char_max_extend = @n_char_max
- line += 1
- elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \
- and out[line] =~/\S+/
- @n_char_max_extend = @n_char_max
- out[line].squeeze!(' ')
- line += 1
- end
- if word
- out[line]=if out[line] \
- and out[line] !~/\S+$/m
- "#{out[line]}#{word}"
- elsif out[line] \
- and out[line] =~/\S+/
- "#{out[line]} #{word}"
- else "#{word.strip}"
- end
- end
- @oldword=word if word =~/\S+/
- end
- spaces_hang + out.join(spaces_indent)
- end
- def line_wrap_indent1
- @n_indent,@n_hang=2,2
- line_wrap
- end
- def line_wrap_endnote
- @n_indent,@n_hang=4,2
- line_wrap
- end
- def array_wrap
- if @para.class==Array
- @arr=[]
- @para.each do |line|
- @arr << SiSU_TextUtils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
- end
- end
- @arr
- end
- end
- class HeaderScan
- def initialize(md,para)
- @md,@p=md,para
- end
- def extract(tag,tag_content,type,attrib)
- dc=if dc_tag \
- and dc_content
- [dc_tag,dc_content,{dc_tag=>dc_content}]
- else nil
- end
- end
- def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825
- @tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib
- def label #element
- @tag
- end
- def type
- @type
- end
- def text
- @tag_content
- end
- def info #element text
- @tag_content
- end
- def attribute
- @attrib
- end
- def element
- @tag
- end
- def attrib
- @attrib
- end
- def el
- @tag
- end
- self
- end
- def start_is_match
- meta=case @p
- when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/; header($1,@md.title.full,'meta','dc') #dc 1
- when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/; header('creator',$2,'meta','dc') #dc 2
- when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 3
- when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 4
- when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 5
- when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 6
- when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 7
- when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 8
- when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 9
- when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 10
- when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 11
- when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 12
- when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 13
- when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 14
- when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','dc') #dc 15
- when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/; header('translator',$2)
- when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/; header('illustrator',$2)
- when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_loc',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_dewey',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_pg',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/; header('classify_isbn',$2,'meta','extra')
- when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/; header('structure',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/; header('markup',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/; header('italicize',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/; header('vocabulary',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(skin)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/; header('css',$2,'process','instruct')
- when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct') #add a & b
- when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/; header($1,$2,'process','instruct')
- when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/; header('version',$2,'process','instruct')
- else nil
- end
- end
- def dublin
- out=if @p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/
- start_is_match
- else nil
- end
- end
- def meta
- out=if @p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/
- start_is_match
- else nil
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/shared_xhtml.rb b/lib/sisu/v3dv/shared_xhtml.rb
deleted file mode 100644
index f135aa6a..00000000
--- a/lib/sisu/v3dv/shared_xhtml.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: shared html parts
-
-=end
-module SiSU_XHTML_Shared
- require_relative 'defaults' # defaults.rb
- require_relative 'xhtml_table' # xhtml_table.rb
- class TableXHTML < SiSU_XHTML_Table::TableXHTML
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/shared_xml.rb b/lib/sisu/v3dv/shared_xml.rb
deleted file mode 100644
index 6b85d756..00000000
--- a/lib/sisu/v3dv/shared_xml.rb
+++ /dev/null
@@ -1,718 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: common file for xml generation
-=end
-module SiSU_XML_Munge
- class Trans
- require_relative 'defaults' # defaults.rb
- def initialize(md)
- @md=md
- @sys=SiSU_Env::SystemCall.new
- @dir=SiSU_Env::InfoEnv.new(@md.fns)
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- if @md.sem_tag
- @ab ||=semantic_tags.default
- end
- end
- def semantic_tags
- def default
- {
- pub: 'publication',
- conv: 'convention',
- vol: 'volume',
- pg: 'page',
- cty: 'city',
- org: 'organization',
- uni: 'university',
- dept: 'department',
- fac: 'faculty',
- inst: 'institute',
- co: 'company',
- com: 'company',
- conv: 'convention',
- dt: 'date',
- y: 'year',
- m: 'month',
- d: 'day',
- ti: 'title',
- au: 'author',
- ed: 'editor', #editor?
- v: 'version', #edition
- n: 'name',
- fn: 'firstname',
- mn: 'middlename',
- ln: 'lastname',
- in: 'initials',
- qt: 'quote',
- ct: 'cite',
- ref: 'reference',
- ab: 'abreviation',
- def: 'define',
- desc: 'description',
- trans: 'translate',
- }
- end
- self
- end
- def char_enc #character encode
- def utf8(dob='')
- if @sys.locale =~/utf-?8/i # instead ucs for utf8 # String#encode Iñtërnâtiônàlizætiøn
- str=if defined? dob.obj; dob.obj
- elsif dob.class==String; dob
- end
- if str
- #¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûü
- #¢£¥§©ª«®°±²³µ¶¹º»¼½¾×÷
- str=str.gsub(/</um,'&#60;'). # '&lt;' # &#060;
- gsub(/>/um,'&#62;'). # '&gt;' # &#062;
- gsub(/¢/um,'&#162;'). # '&cent;' # &#162;
- gsub(/£/um,'&#163;'). # '&pound;' # &#163;
- gsub(/¥/um,'&#165;'). # '&yen;' # &#165;
- gsub(/§/um,'&#167;'). # '&sect;' # &#167;
- gsub(/©/um,'&#169;'). # '&copy;' # &#169;
- gsub(/ª/um,'&#170;'). # '&ordf;' # &#170;
- gsub(/«/um,'&#171;'). # '&laquo;' # &#171;
- gsub(/®/um,'&#174;'). # '&reg;' # &#174;
- gsub(/°/um,'&#176;'). # '&deg;' # &#176;
- gsub(/±/um,'&#177;'). # '&plusmn;' # &#177;
- gsub(/²/um,'&#178;'). # '&sup2;' # &#178;
- gsub(/³/um,'&#179;'). # '&sup3;' # &#179;
- gsub(/µ/um,'&#181;'). # '&micro;' # &#181;
- gsub(/¶/um,'&#182;'). # '&para;' # &#182;
- gsub(/¹/um,'&#185;'). # '&sup1;' # &#185;
- gsub(/º/um,'&#186;'). # '&ordm;' # &#186;
- gsub(/»/um,'&#187;'). # '&raquo;' # &#187;
- gsub(/¼/um,'&#188;'). # '&frac14;' # &#188;
- gsub(/½/um,'&#189;'). # '&frac12;' # &#189;
- gsub(/¾/um,'&#190;'). # '&frac34;' # &#190;
- gsub(/×/um,'&#215;'). # '&times;' # &#215;
- gsub(/÷/um,'&#247;'). # '&divide;' # &#247;
- gsub(/¿/um,'&#191;'). # '&iquest;' # &#191;
- gsub(/À/um,'&#192;'). # '&Agrave;' # &#192;
- gsub(/Á/um,'&#193;'). # '&Aacute;' # &#193;
- gsub(/Â/um,'&#194;'). # '&Acirc;' # &#194;
- gsub(/Ã/um,'&#195;'). # '&Atilde;' # &#195;
- gsub(/Ä/um,'&#196;'). # '&Auml;' # &#196;
- gsub(/Å/um,'&#197;'). # '&Aring;' # &#197;
- gsub(/Æ/um,'&#198;'). # '&AElig;' # &#198;
- gsub(/Ç/um,'&#199;'). # '&Ccedil;' # &#199;
- gsub(/È/um,'&#200;'). # '&Egrave;' # &#200;
- gsub(/É/um,'&#201;'). # '&Eacute;' # &#201;
- gsub(/Ê/um,'&#202;'). # '&Ecirc;' # &#202;
- gsub(/Ë/um,'&#203;'). # '&Euml;' # &#203;
- gsub(/Ì/um,'&#204;'). # '&Igrave;' # &#204;
- gsub(/Í/um,'&#205;'). # '&Iacute;' # &#205;
- gsub(/Î/um,'&#206;'). # '&Icirc;' # &#206;
- gsub(/Ï/um,'&#207;'). # '&Iuml;' # &#207;
- gsub(/Ð/um,'&#208;'). # '&ETH;' # &#208;
- gsub(/Ñ/um,'&#209;'). # '&Ntilde;' # &#209;
- gsub(/Ò/um,'&#210;'). # '&Ograve;' # &#210;
- gsub(/Ó/um,'&#211;'). # '&Oacute;' # &#211;
- gsub(/Ô/um,'&#212;'). # '&Ocirc;' # &#212;
- gsub(/Õ/um,'&#213;'). # '&Otilde;' # &#213;
- gsub(/Ö/um,'&#214;'). # '&Ouml;' # &#214;
- gsub(/Ø/um,'&#216;'). # '&Oslash;' # &#216;
- gsub(/Ù/um,'&#217;'). # '&Ugrave;' # &#217;
- gsub(/Ú/um,'&#218;'). # '&Uacute;' # &#218;
- gsub(/Û/um,'&#219;'). # '&Ucirc;' # &#219;
- gsub(/Ü/um,'&#220;'). # '&Uuml;' # &#220;
- gsub(/Ý/um,'&#221;'). # '&Yacute;' # &#221;
- gsub(/Þ/um,'&#222;'). # '&THORN;' # &#222;
- gsub(/ß/um,'&#223;'). # '&szlig;' # &#223;
- gsub(/à/um,'&#224;'). # '&agrave;' # &#224;
- gsub(/á/um,'&#225;'). # '&aacute;' # &#225;
- gsub(/â/um,'&#226;'). # '&acirc;' # &#226;
- gsub(/ã/um,'&#227;'). # '&atilde;' # &#227;
- gsub(/ä/um,'&#228;'). # '&auml;' # &#228;
- gsub(/å/um,'&#229;'). # '&aring;' # &#229;
- gsub(/æ/um,'&#230;'). # '&aelig;' # &#230;
- gsub(/ç/um,'&#231;'). # '&ccedil;' # &#231;
- gsub(/è/um,'&#232;'). # '&egrave;' # &#232;
- gsub(/é/um,'&#233;'). # '&acute;' # &#233;
- gsub(/ê/um,'&#234;'). # '&circ;' # &#234;
- gsub(/ë/um,'&#235;'). # '&euml;' # &#235;
- gsub(/ì/um,'&#236;'). # '&igrave;' # &#236;
- gsub(/í/um,'&#237;'). # '&acute;' # &#237;
- gsub(/î/um,'&#238;'). # '&icirc;' # &#238;
- gsub(/ï/um,'&#239;'). # '&iuml;' # &#239;
- gsub(/ð/um,'&#240;'). # '&eth;' # &#240;
- gsub(/ñ/um,'&#241;'). # '&ntilde;' # &#241;
- gsub(/ò/um,'&#242;'). # '&ograve;' # &#242;
- gsub(/ó/um,'&#243;'). # '&oacute;' # &#243;
- gsub(/ô/um,'&#244;'). # '&ocirc;' # &#244;
- gsub(/õ/um,'&#245;'). # '&otilde;' # &#245;
- gsub(/ö/um,'&#246;'). # '&ouml;' # &#246;
- gsub(/ø/um,'&#248;'). # '&oslash;' # &#248;
- gsub(/ù/um,'&#250;'). # '&ugrave;' # &#250;
- gsub(/ú/um,'&#251;'). # '&uacute;' # &#251;
- gsub(/û/um,'&#252;'). # '&ucirc;' # &#252;
- gsub(/ü/um,'&#253;'). # '&uuml;' # &#253;
- gsub(/þ/um,'&#254;'). # '&thorn;' # &#254;
- gsub(/ÿ/um,'&#255;'). # '&yuml;' # &#255;
- gsub(/‘/um,'&#8216;'). # '&lsquo;' # &#8216;
- gsub(/’/um,'&#8217;'). # '&rsquo;' # &#8217;
- gsub(/“/um,'&#8220;'). # &ldquo; # &#8220;
- gsub(/”/um,'&#8221;'). # &rdquo; # &#8221;
- gsub(/–/um,'&#8211;'). # &ndash; # &#8211;
- gsub(/—/um,'&#8212;'). # &mdash; # &#8212;
- gsub(/∝/um,'&#8733;'). # &prop; # &#8733;
- gsub(/∞/um,'&#8734;'). # &infin; # &#8734;
- gsub(/™/um,'&#8482;'). # &trade; # &#8482;
- gsub(/✠/um,'&#10016;'). # &cross; # &#10016;
- gsub(/ /um,' '). # space identify
- gsub(/ /um,' ') # space identify
- end
- dob=if defined? dob.obj
- dob.obj=str
- dob
- elsif dob.class==String
- str
- end
- dob
- end
- end
- def html(dob='')
- if @sys.locale =~/utf-?8/i # instead ucs for utf8 # String#encode Iñtërnâtiônàlizætiøn
- dob.obj=dob.obj.gsub(/ /u,' '). # space identify
- gsub(/ /u,' ') # space identify
- else
- dob.obj=dob.obj.gsub(/¢/u,'&cent;'). # &#162;
- gsub(/£/u,'&pound;'). # &#163;
- gsub(/¥/u,'&yen;'). # &#165;
- gsub(/§/u,'&sect;'). # &#167;
- gsub(/©/u,'&copy;'). # &#169;
- gsub(/ª/u,'&ordf;'). # &#170;
- gsub(/«/u,'&laquo;'). # &#171;
- gsub(/®/u,'&reg;'). # &#174;
- gsub(/°/u,'&deg;'). # &#176;
- gsub(/±/u,'&plusmn;'). # &#177;
- gsub(/²/u,'&sup2;'). # &#178;
- gsub(/³/u,'&sup3;'). # &#179;
- gsub(/µ/u,'&micro;'). # &#181;
- gsub(/¶/u,'&para;'). # &#182;
- gsub(/¹/u,'&sup1;'). # &#185;
- gsub(/º/u,'&ordm;'). # &#186;
- gsub(/»/u,'&raquo;'). # &#187;
- gsub(/¼/u,'&frac14;'). # &#188;
- gsub(/½/u,'&frac12;'). # &#189;
- gsub(/¾/u,'&frac34;'). # &#190;
- gsub(/×/u,'&times;'). # &#215;
- gsub(/÷/u,'&divide;'). # &#247;
- gsub(/¿/u,'&iquest;'). # &#191;
- gsub(/À/u,'&Agrave;'). # &#192;
- gsub(/Á/u,'&Aacute;'). # &#193;
- gsub(/Â/u,'&Acirc;'). # &#194;
- gsub(/Ã/u,'&Atilde;'). # &#195;
- gsub(/Ä/u,'&Auml;'). # &#196;
- gsub(/Å/u,'&Aring;'). # &#197;
- gsub(/Æ/u,'&AElig;'). # &#198;
- gsub(/Ç/u,'&Ccedil;'). # &#199;
- gsub(/È/u,'&Egrave;'). # &#200;
- gsub(/É/u,'&Eacute;'). # &#201;
- gsub(/Ê/u,'&Ecirc;'). # &#202;
- gsub(/Ë/u,'&Euml;'). # &#203;
- gsub(/Ì/u,'&Igrave;'). # &#204;
- gsub(/Í/u,'&Iacute;'). # &#205;
- gsub(/Î/u,'&Icirc;'). # &#206;
- gsub(/Ï/u,'&Iuml;'). # &#207;
- gsub(/Ð/u,'&ETH;'). # &#208;
- gsub(/Ñ/u,'&Ntilde;'). # &#209;
- gsub(/Ò/u,'&Ograve;'). # &#210;
- gsub(/Ó/u,'&Oacute;'). # &#211;
- gsub(/Ô/u,'&Ocirc;'). # &#212;
- gsub(/Õ/u,'&Otilde;'). # &#213;
- gsub(/Ö/u,'&Ouml;'). # &#214;
- gsub(/Ø/u,'&Oslash;'). # &#216;
- gsub(/Ù/u,'&Ugrave;'). # &#217;
- gsub(/Ú/u,'&Uacute;'). # &#218;
- gsub(/Û/u,'&Ucirc;'). # &#219;
- gsub(/Ü/u,'&Uuml;'). # &#220;
- gsub(/Ý/u,'&Yacute;'). # &#221;
- gsub(/Þ/u,'&THORN;'). # &#222;
- gsub(/ß/u,'&szlig;'). # &#223;
- gsub(/à/u,'&agrave;'). # &#224;
- gsub(/á/u,'&aacute;'). # &#225;
- gsub(/â/u,'&acirc;'). # &#226;
- gsub(/ã/u,'&atilde;'). # &#227;
- gsub(/ä/u,'&auml;'). # &#228;
- gsub(/å/u,'&aring;'). # &#229;
- gsub(/æ/u,'&aelig;'). # &#230;
- gsub(/ç/u,'&ccedil;'). # &#231;
- gsub(/è/u,'&egrave;'). # &#232;
- gsub(/é/u,'&acute;'). # &#233;
- gsub(/ê/u,'&circ;'). # &#234;
- gsub(/ë/u,'&euml;'). # &#235;
- gsub(/ì/u,'&igrave;'). # &#236;
- gsub(/í/u,'&acute;'). # &#237;
- gsub(/î/u,'&icirc;'). # &#238;
- gsub(/ï/u,'&iuml;'). # &#239;
- gsub(/ð/u,'&eth;'). # &#240;
- gsub(/ñ/u,'&ntilde;'). # &#241;
- gsub(/ò/u,'&ograve;'). # &#242;
- gsub(/ó/u,'&oacute;'). # &#243;
- gsub(/ô/u,'&ocirc;'). # &#244;
- gsub(/õ/u,'&otilde;'). # &#245;
- gsub(/ö/u,'&ouml;'). # &#246;
- gsub(/ø/u,'&oslash;'). # &#248;
- gsub(/ù/u,'&ugrave;'). # &#250;
- gsub(/ú/u,'&uacute;'). # &#251;
- gsub(/û/u,'&ucirc;'). # &#252;
- gsub(/ü/u,'&uuml;'). # &#253;
- gsub(/þ/u,'&thorn;'). # &#254;
- gsub(/ÿ/u,'&yuml;'). # &#255;
- gsub(/‘/u,'&#lsquo;'). # &lsquo; # &#8216;
- gsub(/’/u,'&#rsquo;'). # &rsquo; # &#8217;
- gsub(/“/u,'&ldquo;'). # &ldquo; # &#8220;
- gsub(/”/u,'&rdquo;'). # &rdquo; # &#8221;
- gsub(/–/u,'&ndash;'). # &ndash; # &#8211;
- gsub(/—/u,'&mdash;'). # &mdash; # &#8212;
- gsub(/∝/u,'&prop;'). # &prop; # &#8733;
- gsub(/∞/u,'&infin;'). # &infin; # &#8734;
- gsub(/™/u,'&trade;'). # &trade; # &#8482;
- gsub(/✠/u,'&#10016;'). # &#10016;
- #gsub(/✠/u '&dagger;'). # &dagger; # &#8224; incorrect replacement †
- gsub(/ /u,' '). # space identify
- gsub(/ /u,' ') # space identify
- end
- end
- self
- end
- def tidywords(wordlist)
- wordlist_new=[]
- wordlist.each do |x|
- #imperfect solution will not catch all possible cases
- x=x.gsub(/&/,'&amp;') unless x =~/&\S+;/
- x=x.gsub(/&([A-Z])/,'&amp;\1')
- wordlist_new << x
- end
- wordlist_new
- end
- def markup(dob='')
- wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
- dob.obj=tidywords(wordlist).join(' ').strip
- unless dob.is==:table
- dob.obj=dob.obj.gsub(/#{Mx[:br_line]}/u,'<br />').
- gsub(/#{Mx[:br_paragraph]}/u,'<br />').
- gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />')
- end
- dob.obj=dob.obj.gsub(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'').
- gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
- gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').
- gsub(/(^|#{Mx[:gl_c]}|\s+)<\s+/,'\1&lt; ').gsub(/\s+>(\s+|$)/,' &gt;\1').
- #gsub(/#{Mx[:fa_emphasis_o]}(.+?)#{Mx[:fa_emphasis_c]}/,'<em>\1</em>'). #reinstate
- gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/m,'<b>\1</b>').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/m,'<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>').
- gsub(/<:pb>\s*/,''). #Fix
- gsub(/<+[-~]#>+/,'')
- if dob.is !=:code
- #embeds a red-bullet image -->
- 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_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
- dob.obj=dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is==:table
- dob.obj=dob.obj.gsub(/#{Mx[:br_page]}\s*/,'').
- gsub(/#{Mx[:br_page_new]}\s*/,'').
- gsub(/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/,'').
- 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>').
- 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>').
- 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>').
- 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}).
- 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}).
- 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}).
- 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}).
- 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
- 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}}).
- 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
- else
- dob.obj=dob.obj.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
- end
- if dob.of==:block
- dob.obj=dob.obj.gsub(/#{Mx[:gl_bullet]}/,'● ')
- end
- dob.obj=dob.obj.gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
- %{#{@brace_url.xml_open}\\1#{@brace_url.xml_close}}).
- gsub(/#{Dx[:url_o]}/,"#{Dx[:url_o_xml]}").
- gsub(/#{Dx[:url_c]}/,"#{Dx[:url_c_xml]}").
- gsub(/&nbsp;|#{Mx[:nbsp]}/m,'&#160;')
- dob
- end
- def markup_light(dob='')
- dob.obj=dob.obj.gsub(/\/\{(.+?)\}\//,'<i>\1</i>').
- gsub(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>').
- gsub(/_\{(.+?)\}_/,'<u>\1</u>').
- gsub(/-\{(.+?)\}-/,'<del>\1</del>').
- gsub(/<br(\s*\/)?>/,'<br />').
- gsub(/<:pb>\s*/,'').
- gsub(/<[-~]#>/,'').
- gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; '). #sort
- gsub(/&([^;]{1,5})/,'&amp;\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(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
- wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
- 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(/<[-~]#>/,'').
- gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; '). #sort
- gsub(/&([^;]{1,5})/,'&amp;\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(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
- wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
- dob.obj=tidywords(wordlist).join(' ').strip
- dob
- end
- def markup_group(dob='')
- dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;:?br(?:\s+\/)?&gt;/,'<br />').
- gsub(/&lt;(link xmlns:xlink=".+?")&gt;/,'<\1>').
- gsub(/&lt;(\/link)&gt;/,'<\1>').
- gsub(/&lt;(\/?en)&gt;/,'<\1>')
- dob
- end
- def markup_block(dob='')
- dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;:?br(?:\s+\/)?&gt;/,'<br />').
- gsub(/&lt;(link xmlns:xlink=".+?")&gt;/,'<\1>').
- gsub(/&lt;(\/link)&gt;/,'<\1>').
- gsub(/&lt;(\/?en)&gt;/,'<\1>')
- dob
- end
- def xml_sem_block_paired(matched) # colon depth: many, recurs
- matched=matched.gsub(/\b(au):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:au]} depth="many">\\2</sem:#{@ab[:au]}>}).
- gsub(/\b(vol):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:vol]} depth="many">\\2</sem:#{@ab[:vol]}>}).
- gsub(/\b(pub):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:pub]} depth="many">\\2</sem:#{@ab[:pub]}>}).
- gsub(/\b(ref):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ref]} depth="many">\\2</sem:#{@ab[:ref]}>}).
- gsub(/\b(desc):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:desc]} depth="many">\\2</sem:#{@ab[:desc]}>}).
- gsub(/\b(conv):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:conv]} depth="many">\\2</sem:#{@ab[:conv]}>}).
- gsub(/\b(ct):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ct]} depth="many">\\2</sem:#{@ab[:ct]}>}).
- gsub(/\b(cty):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:cty]} depth="many">\\2</sem:#{@ab[:cty]}>}).
- gsub(/\b(org):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:org]} depth="many">\\2</sem:#{@ab[:org]}>}).
- gsub(/\b(dt):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:dt]} depth="many">\\2</sem:#{@ab[:dt]}>}).
- gsub(/\b(n):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:n]} depth="many">\\2</sem:#{@ab[:n]}>}).
- gsub(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m,'<sem:\1 depth="many">\2</sem:\1>')
- end
- def xml_semantic_tags(dob)
- if @md.sem_tag
- dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
- dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
- dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
- dob.obj=dob.obj.gsub(/:\{(.+?)\}:au\b/m, %{<sem:#{@ab[:au]} depth="one">\\1</sem:#{@ab[:au]}>}).
- gsub(/:\{(.+?)\}:n\b/m, %{<sem:#{@ab[:n]} depth="one">\\1</sem:#{@ab[:n]}>}).
- gsub(/:\{(.+?)\}:ti\b/m, %{<sem:#{@ab[:ti]} depth="one">\\1</sem:#{@ab[:ti]}>}).
- gsub(/:\{(.+?)\}:ref\b/m, %{<sem:#{@ab[:ref]} depth="one">\\1</sem:#{@ab[:ref]}>}).
- gsub(/:\{(.+?)\}:desc\b/m, %{<sem:#{@ab[:desc]} depth="one">\\1</sem:#{@ab[:desc]}>}).
- gsub(/:\{(.+?)\}:cty\b/m, %{<sem:#{@ab[:cty]} depth="one">\\1</sem:#{@ab[:cty]}>}).
- gsub(/:\{(.+?)\}:org\b/m, %{<sem:#{@ab[:org]} depth="one">\\1</sem:#{@ab[:org]}>}).
- gsub(/:\{(.+?)\}:([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="one">\1</sem:\2>').
- gsub(/;\{([^}]+(?![;]))\};ti\b/m, %{<sem:#{@ab[:ti]} depth="zero">\\1</sem:#{@ab[:ti]}>}).
- gsub(/;\{([^}]+(?![;]))\};qt\b/m, %{<sem:#{@ab[:qt]} depth="zero">\\1</sem:#{@ab[:qt]}>}).
- gsub(/;\{([^}]+(?![;]))\};ref\b/m, %{<sem:#{@ab[:ref]} depth="zero">\\1</sem:#{@ab[:ref]}>}).
- gsub(/;\{([^}]+(?![;]))\};ed\b/m, %{<sem:#{@ab[:ed]} depth="zero">\\1</sem:#{@ab[:ed]}>}).
- gsub(/;\{([^}]+(?![;]))\};v\b/m, %{<sem:#{@ab[:v]} depth="zero">\\1</sem:#{@ab[:v]}>}).
- gsub(/;\{([^}]+(?![;]))\};desc\b/m, %{<sem:#{@ab[:desc]} depth="zero">\\1</sem:#{@ab[:desc]}>}).
- gsub(/;\{([^}]+(?![;]))\};def\b/m, %{<sem:#{@ab[:def]} depth="zero">\\1</sem:#{@ab[:def]}>}).
- gsub(/;\{([^}]+(?![;]))\};trans\b/m, %{<sem:#{@ab[:trans]} depth="zero">\\1</sem:#{@ab[:trans]}>}).
- gsub(/;\{([^}]+(?![;]))\};y\b/m, %{<sem:#{@ab[:y]} depth="zero">\\1</sem:#{@ab[:y]}>}).
- gsub(/;\{([^}]+(?![;]))\};ab\b/m, %{<sem:#{@ab[:ab]} depth="zero">\\1</sem:#{@ab[:ab]}>}).
- gsub(/;\{([^}]+(?![;]))\};pg\b/m, %{<sem:#{@ab[:pg]} depth="zero">\\1</sem:#{@ab[:pg]}>}).
- gsub(/;\{([^}]+(?![;]))\};fn?\b/m, %{<sem:#{@ab[:fn]} depth="zero">\\1</sem:#{@ab[:fn]}>}).
- gsub(/;\{([^}]+(?![;]))\};mn?\b/m, %{<sem:#{@ab[:mn]} depth="zero">\\1</sem:#{@ab[:mn]}>}).
- gsub(/;\{([^}]+(?![;]))\};ln?\b/m, %{<sem:#{@ab[:ln]} depth="zero">\\1</sem:#{@ab[:ln]}>}).
- gsub(/;\{([^}]+(?![;]))\};in\b/m, %{<sem:#{@ab[:in]} depth="zero">\\1</sem:#{@ab[:in]}>}).
- gsub(/;\{([^}]+(?![;]))\};uni\b/m, %{<sem:#{@ab[:uni]} depth="zero">\\1</sem:#{@ab[:uni]}>}).
- gsub(/;\{([^}]+(?![;]))\};fac\b/m, %{<sem:#{@ab[:fac]} depth="zero">\\1</sem:#{@ab[:fac]}>}).
- gsub(/;\{([^}]+(?![;]))\};inst\b/m, %{<sem:#{@ab[:inst]} depth="zero">\\1</sem:#{@ab[:inst]}>}).
- gsub(/;\{([^}]+(?![;]))\};dept\b/m, %{<sem:#{@ab[:dpt]} depth="zero">\\1</sem:#{@ab[:dept]}>}).
- gsub(/;\{([^}]+(?![;]))\};org\b/m, %{<sem:#{@ab[:org]} depth="zero">\\1</sem:#{@ab[:org]}>}).
- gsub(/;\{([^}]+(?![;]))\};com?\b/m, %{<sem:#{@ab[:com]} depth="zero">\\1</sem:#{@ab[:com]}>}).
- gsub(/;\{([^}]+(?![;]))\};cty\b/m, %{<sem:#{@ab[:cty]} depth="zero">\\1</sem:#{@ab[:cty]}>}).
- gsub(/;\{([^}]+(?![;]))\};([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="zero">\1</sem:\2>')
- end
- dob
- end
- end
-end
-module SiSU_XML_Tags #Format
- require_relative 'param' # param.rb
- include SiSU_Param
- include SiSU_Viz
- class RDF
- def initialize(md='',seg_name=[],tracker=0)
- @full_title=@subtitle=@author=@subject=@description=@publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@copyright=@owner=@keywords=''
- @md=md
- @rdfurl=%{ rdf:about="http://www.jus.uio.no/lm/toc"\n}
- if defined? @md.title.full \
- and @md.title.full # DublinCore 1 - title
- @rdf_title=%{ dc.title="#{seg_name}#{@md.title.full}"\n}
- @full_title=%{ <meta name="dc.title" content="#{@md.title.full}" />\n}
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/ # DublinCore 2 - creator/author (author)
- @rdf_author=%{ dc.author="#{@md.creator.author}"\n}
- content=meta_content_clean(@md.creator.author)
- @author=%{ <meta name="dc.author" content="#{content}" />\n}
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/ # DublinCore 3 - subject (us library of congress, eric or udc, or schema???)
- @rdf_subject=%{ dc.subject="#{@md.classify.subject}"\n}
- content=meta_content_clean(@md.classify.subject)
- @subject=%{ <meta name="dc.subject" content="#{content}" />\n}
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/ # DublinCore 4 - description
- @rdf_description=%{ dc.description="#{@md.notes.description}"\n}
- content=meta_content_clean(@md.notes.description)
- @description=%{ <meta name="dc.description" content="#{content}" />\n}
- end
- if defined? @md.publisher \
- and @md.publisher # DublinCore 5 - publisher (current copy published by)
- @rdf_publisher=%{ dc.publisher="#{@md.publisher}"\n}
- content=meta_content_clean(@md.publisher)
- @publisher=%{ <meta name="dc.publisher" content="#{content}" />\n}
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/ # DublinCore 6 - contributor
- @rdf_contributor=%{ dc.contributor="#{@md.creator.contributor}"\n}
- content=meta_content_clean(@md.creator.contributor)
- @contributor=%{ <meta name="dc.contributor" content="#{content}" />\n}
- end
- if defined? @md.date.published \
- and @md.date.published=~/\S+/ # DublinCore 7 - date year-mm-dd
- @rdf_date=%{ dc.date="#{@md.date.published}"\n}
- @date=%{ <meta name="dc.date" content="#{@md.date.published}" #{@md.date_scheme} />\n} # fix @md.date_scheme
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/ # DublinCore 7 - date.created year-mm-dd
- @rdf_date_created=%{ dc.date.created="#{@md.date.created}"\n}
- @date_created=%{ <meta name="dc.date.created" content="#{@md.date.created}" #{@md.date_scheme} />\n}
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/ # DublinCore 7 - date.issued year-mm-dd
- @rdf_date_issued=%{ dc.date.issued="#{@md.date.issued}"\n}
- @date_issued=%{ <meta name="dc.date.issued" content="#{@md.date.issued}" #{@md.date_scheme} />\n}
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/ # DublinCore 7 - date.available year-mm-dd
- @rdf_date_available=%{ dc.date.available="#{@md.date.available}"\n}
- @date_available=%{ <meta name="dc.date.available" content="#{@md.date.available}" #{@md.date_scheme} />\n}
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/ # DublinCore 7 - date.valid year-mm-dd
- @rdf_date_valid=%{ dc.date.valid="#{@md.date.valid}"\n}
- @date_valid=%{ <meta name="dc.date.valid" content="#{@md.date.valid}" #{@md.date_scheme} />\n}
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/ # DublinCore 7 - date.modified year-mm-dd
- @rdf_date_modified=%{ dc.date.modified="#{@md.date.modified}"\n}
- @date_modified=%{ <meta name="dc.date.modified" content="#{@md.date.modified}" #{@md.date_scheme} />\n}
- end
- if defined? @md.type \
- and @md.type # DublinCore 8 - type (genre eg. report, convention etc)
- @rdf_type=%{ dc.type="#{@md.type}"\n}
- content=meta_content_clean(@md.type)
- @type=%{ <meta name="dc.type" content="#{content}" />\n}
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/ # DublinCore 9 - format (use your mime type)
- @rdf_format=%{ dc.format="#{@md.classify.format}"\n}
- content=meta_content_clean(@md.classify.format)
- @format=%{ <meta name="dc.format" content="#{content}" />\n}
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/ # DublinCore 10 - identifier (your identifier, could use urn which is free)
- @rdf_identifier=%{ dc.identifier="#{@md.classify.identifier}"\n}
- content=meta_content_clean(@md.classify.identifier)
- @identifier=%{ <meta name="dc.identifier" content="#{content}" />\n}
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/ # DublinCore 11 - source (document source)
- @rdf_source=%{ dc.source="#{@md.original.source}"\n}
- content=meta_content_clean(@md.original.source)
- @source=%{ <meta name="dc.source" content="#{content}" />\n}
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/ # DublinCore 12 - language (English)
- @rdf_language=%{ dc.language="#{@md.title.language}"\n}
- @language=%{ <meta name="dc.language" content="#{@md.title.language}" />\n}
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- @rdf_language_original=%{ dc.language="#{@md.original.language}"\n}
- @language_original=%{ <meta name="dc.language" content="#{@md.original.language}" />\n}
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/ # DublinCore 13 - relation
- @rdf_relation=%{ dc.relation="#{@md.classify.relation}"\n}
- content=meta_content_clean(@md.classify.relation)
- @relation=%{ <meta name="dc.relation" content="#{content}" />\n}
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/ # DublinCore 14 - coverage
- @rdf_coverage=%{ dc.coverage="#{@md.classify.coverage}"\n}
- content=meta_content_clean(@md.classify.coverage)
- @coverage=%{ <meta name="dc.coverage" content="#{content}" />\n}
- end
- if defined? @md.rights.all \
- and @md.rights.all # DublinCore 15 - rights
- @rdf_rights=%{ dc.rights="#{@md.rights.all}"\n}
- content=meta_content_clean(@md.rights.all)
- @rights=%{ <meta name="dc.rights" content="#{content}" />\n}
- end
- content=meta_content_clean(@md.keywords)
- @keywords=%{ <meta name="keywords" content="#{content}" />\n} if @md.keywords
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def meta_content_clean(content='')
- content
- unless content.nil?
- content=content.tr('"',"'")
- content=SiSU_XML_Munge::Trans.new(@md).char_enc.utf8(content)
- end
- content
- end
- def rdfseg #segHead
- rdftoc
- end
- def comment_xml(extra='')
- 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} version: #{@md.sc_number} of: #{@md.sc_date}"
- else ''
- end
- if extra.empty?
-<<WOK
-<!-- Document processing information:
- * #{generator}
- * #{rubyv}
- * #{sc}
- * #{lastdone}
- * SiSU http://www.jus.uio.no/sisu
--->
-WOK
- else
-<<WOK
-<!-- Document processing information:
- * #{extra}
- * #{generator}
- * #{rubyv}
- * #{sc}
- * #{lastdone}
- * SiSU http://www.jus.uio.no/sisu
--->
-WOK
- end
- end
- def comment_xml_sax
- desc='SiSU XML, SAX type representation'
- comment_xml(desc)
- end
- def comment_xml_node
- desc='SiSU XML, Node type representation'
- comment_xml(desc)
- end
- def comment_xml_dom
- desc='SiSU XML, DOM type representation'
- comment_xml(desc)
- end
- def metatag_html #values strung together, because some empty, and resulting output (line breaks) is much better
-<<WOK
-#{@full_title}#{@subtitle}#{@author}#{@subject}#{@description}#{@publisher}#{@contributor}#{@date}#{@date_created}#{@date_issued}#{@date_available}#{@date_valid}#{@date_modified}#{@type}#{@format}#{@identifier}#{@source}#{@language}#{@relation}#{@coverage}#{@rights}#{@copyright}#{@owner}
-#{@vz.txt_generator}
-#{@vz.png_ico}
-WOK
- end
- end
-end
-module SiSU_Tables
- require_relative 'xml_tables' # xml_tables.rb
-end
-__END__
diff --git a/lib/sisu/v3dv/sisupod_make.rb b/lib/sisu/v3dv/sisupod_make.rb
deleted file mode 100644
index ac584925..00000000
--- a/lib/sisu/v3dv/sisupod_make.rb
+++ /dev/null
@@ -1,368 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: create sisupod filetype and copy it to output directory!
-
-=end
-module SiSU_Doc
- include SiSU_Env
- class Source
- require_relative 'sysenv' # sysenv.rb
- require_relative 'response' # response.rb
- require_relative 'particulars' # particulars.rb
- def initialize(opt)
- @opt=opt
- m=/.+\/(?:src\/)?(\S+)/im
- @date=SiSU_Env::InfoDate.new.dt
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @ver=SiSU_Env::InfoVersion.instance.get_version
- @ans=SiSU_Response::Response.new
- pod_path="#{@env.processing_path.processing}/sisupod"
- @v=(@opt.cmd =~/[VM]/) ? 'v' : ''
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- @file=@particulars.file
- @local_path="#{@file.output_path.sisupod.dir}"
- @zipfile=(@opt.fns =~/\.ssm\.sst$/) \
- ? @opt.fns.gsub(/(?:\~\S{2,3})?\.ssm\.sst$/,'.ssm')
- : @opt.fns.gsub(/(?:\~\S{2,3})?(\.sst)$/,'\1')
- FileUtils::mkdir_p(pod_path) unless FileTest.directory?(pod_path)
- FileUtils::rm_rf("#{@env.processing_path.processing}sisupod/*") if FileTest.directory?("#{@env.processing_path.processing}sisupod")
- end
- def read
- unless @opt.cmd =~/q/
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'Share SiSU Document (txz)',@opt.fns).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'Share SiSU Document (txz)',@opt.fns).green_title_hi
- end
- unless @opt.fns.empty?
- unless @opt.cmd =~/q/
- SiSU_Screen::Ansi.new(@opt.cmd,'Make sisu document (txz) and place in output directory',"#{@opt.fns} -> file://#{@file.output_path.sisupod.dir}/#{@zipfile}.txz").warn if @opt.cmd =~/[MVv]/
- end
- directories
- sisupod_build
- sisupod_xz
- else
- if @opt.cmd =~/[MVv]/
- SiSU_Screen::Ansi.new(@opt.cmd,'Make (zip (txz)) of sisu work directory',"#{@env.stub_pwd}\_#{@date}.txz").warn
- SiSU_Screen::Ansi.new(@opt.cmd,'').blue_tab
- end
- ans=@ans.response?('make sisupod of entire directory?')
- if ans; sisupod_zip_directory
- end
- end
- end
- def sisupod_zip_directory
- sisupod_directory="sisupod-#{@env.stub_pwd}-#{@date}.ssp"
- unless File.symlink?('sisupod'); File.symlink(Dir.pwd,'sisupod')
- end
- re_base_dir='^sisupod/([^.][^/]*\.(ssm|ssi|sst)$|_sisu/)'
- re_files='/[a-zA-Z0-9.~_-]+\.(ssm|ssi|sst|rb|css|png|jpg|gif|yaml)$'
- re_ignore='/[.~_-][^/]+$'
- if File.symlink?('sisupod')
- info="SiSU sisupod #{@ver[:version]} directory contents #{sisupod_directory}"
- system(%{
- echo "#{info}"
- echo "#{info}" > sisu_zip.txt
- zip -qz #{sisupod_directory} sisu_zip.txt < sisu_zip.txt
- for I in `find -H sisupod -print | \
- egrep "#{re_base_dir}" | \
- egrep "#{re_files}" | \
- egrep -v "#{re_ignore}" `
- do zip #{sisupod_directory} $I
- done
- })
- else puts "the required systemlink 'sisupod' could not be created on the current directory: remove the file or directory named 'sisupod' within #{Dir.pwd}"
- end
- if @opt.cmd =~/[MVv]/
- SiSU_Screen::Ansi.new(@opt.cmd,'Share SiSU Document (tar xz)',@opt.fns).green_hi_blue
- SiSU_Screen::Ansi.new(@opt.cmd,'Zipped directory (tgz)',sisupod_directory).warn
- SiSU_Screen::Ansi.new('',sisupod_directory).blue_tab
- end
- end
- def directories
- SiSU_Env::InfoEnv.new.sisupod_v3(@opt)
- end
- def select_skin(skin='') #skin loading logic here
- load "#{SiSU_lib}/defaults.rb"
- @skin={}
- skin_path = [
- "#{@env.path.pwd}/_sisu/skin",
- "#{@env.path.home}/.sisu/skin",
- '/etc/sisu/skin',
- "#{@env.processing_path.processing}/external_document/skin"
- ]
- sk_doc,sk_dir="doc/#{skin}.rb","dir/skin_#{@env.stub_pwd}.rb"
- skin_path.each do |v| #document skin priority 1
- if FileTest.file?("#{v}/#{sk_doc}")
- @skin[:name],@skin[:type]="#{v}/#{sk_doc}",'doc'
- break
- end
- end
- unless @skin.length > 0
- skin_path.each do |v| #directory skin priority 2
- if FileTest.file?("#{v}/#{sk_dir}")
- @skin[:name],@skin[:type]="#{v}/#{sk_dir}",'dir'
- break
- end
- end
- end
- @skin
- end
- def images_extract(f,images) # consider using param info
- rgx_image=/(?:^|[^_\\])\{(?:\s*|\~\^\s+)(\S+?\.(?:png|jpg|gif)\b)/m
- if f !~/^%+\s/ \
- and f =~rgx_image
- images << f.scan(rgx_image).uniq
- end
- images.flatten
- end
- def sisupod_build #see also sisupod in sysenv
- @pwd=Dir.pwd
- @rgx_rb_image=/["'](\S+?\.(?:png|jpg|gif))["']/
- @rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
- @rgx_skin=/^\s+:skin:\s+(\S+)/
- @rgx_doc_import=/^<<\s*(\S+?\.ss[ti])/
- use_file=@opt.fns =~/(?:\.ssm|\.ssm\.sst)$/ \
- ? @opt.fns.gsub(/\.ssm\.sst$/,'.ssm')
- : @opt.fns
- file_array=IO.readlines(use_file,'')
- skin,images,doc_import=[],[],[]
- doc_import_dir=@opt.sub_location
- file_array.each do |f| #% work area
- if f !~/^%+\s/
- skin << f.scan(@rgx_skin).uniq.flatten if f =~@rgx_skin
- f=f.gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image)
- if f !~/^%+\s/ \
- and f =~@rgx_image
- images=images_extract(f,images)
- end
- if use_file =~/\.ssm$/
- doc_import << f.scan(@rgx_doc_import) if f =~@rgx_doc_import
- end
- end
- end
- if doc_import.length > 0
- doc_import=doc_import.uniq.flatten
- doc_import.each do |fn|
- file_array=IO.readlines(fn,'')
- file_array.each do |f| #% work area
- if f !~/^%+\s/ \
- and f =~@rgx_image
- images=images_extract(f,images)
- end
- end
- end
- end
- docskin=nil
- if skin \
- and skin.length > 0
- docskin=skin.pop.flatten.join
- skin_source=select_skin(docskin)
- else
- skin_source=select_skin
- end
- docskin_place="#{@env.processing_path.processing}/sisupod/doc/_sisu/skin/#{skin_source[:type]}"
- if skin_source[:type] =~/dir/
- docskin_with_path="#{docskin_place}/skin_#{@env.stub_pwd}.rb"
- docskin=[docskin_with_path.gsub(/.+?\/(skin_\S+?)\.rb/,'\1')]
- docskin='skin_sisupod'
- end
- if skin_source \
- and docskin #imperfect, revisit
- unless skin_source[:name].nil? \
- or skin_source[:name].empty?
- FileUtils::cp_r(skin_source[:name],"#{docskin_place}/#{docskin}.rb")
- skinfile_array=IO.readlines(skin_source[:name],'')
- para_images=[]
- skinfile_array.each do |f| #% work area
- unless f =~/^%+ / #hmmm
- images << f.scan(@rgx_rb_image).uniq if f =~@rgx_rb_image
- #does not really discriminate, may duplicate images in sisu file, and may take images from default image pool
- end
- end
- end
- end
- #1. mapping in doc dir?
- #2. need images used by skin, scan skin??
- if images \
- and images.length > 1
- images=images.flatten.uniq
- images.delete_if {|x| x =~/https?:\/\// }
- #images=images.sort
- path_pod="#{@env.processing_path.processing}/sisupod"
- path_pod_conf="#{@env.processing_path.processing}/sisupod/_sisu"
- images_path_pod="#{path_pod}/image"
- #unattractive hard coding ... !
- image_path='_sisu/image'
- images_pwd="#{@env.path.pwd}/#{image_path}"
- ##sequence copies base images, defaults used in all html outputs
- #image_source_base='/usr/share/sisu/image'
- #dir_pwd=Dir.pwd
- #Dir.chdir(image_source_base)
- #base_images=Dir.glob('*')
- #base_images.each do |i|
- # FileUtils::cp_r(i,"#{images_path_pod}/#{i}")
- #end
- #Dir.chdir(dir_pwd)
- if FileTest.directory?(images_pwd)
- images=images.uniq
- images.each do |i|
- FileUtils::cp_r("#{images_pwd}/#{i}","#{images_path_pod}/#{i}") if FileTest.file?("#{images_pwd}/#{i}")
- end
- else puts "\tWARN, did not find - #{images_pwd} #{images_path_pod}"
- end
- end
- if doc_import.length > 0 \
- and use_file =~/\.ssm$/
- doc_import.each do |f|
- FileUtils::cp_r("#{@env.path.pwd}#{doc_import_dir}/#{f}","#{@env.processing_path.processing}/sisupod/doc/#{@opt.lng}/#{f}")
- end
- end
- x=@env.document_language_versions_found #check multiple document language versions (param not used)
- if x[:f] \
- and x[:f].length > 0 #store multiple document language versions, sisupod
- x[:f].each do |f|
- (use_file =~/\.ssm$/) \
- ? FileUtils::cp_r("#{@env.path.pwd}#{doc_import_dir}/#{f[:f]}","#{@env.processing_path.processing}/sisupod/doc/#{f[:l]}/#{f[:n]}")
- : FileUtils::cp_r("#{@env.path.pwd}/#{f[:f]}","#{@env.processing_path.processing}/sisupod/doc/#{f[:l]}/#{f[:n]}")
- end
- end #NB not all possibilies met, revisit, also in case of composite file may wish to add README
- end
- def sisupod_xz
- FileUtils::mkdir_p(@file.output_path.sisupod.dir) unless FileTest.directory?(@file.output_path.sisupod.dir)
- tree=(@opt.cmd =~/[vVM]/ \
- && SiSU_Env::SystemCall.new.program_found?('tree')) \
- ? 'tree sisupod'
- : ''
- if FileTest.directory?(@env.processing_path.processing)
- Dir.chdir(@env.processing_path.processing)
- system(%{
- #{tree}
- tar -cJf #{@zipfile}.txz sisupod
- #echo "#{@file.place_file.sisupod.dir}"
- })
- FileUtils::mv("#{@zipfile}.txz",@file.place_file.sisupod.dir)
- FileUtils::rm_r(Dir.glob("sisupod/*"))
- Dir.chdir(@env.path.pwd)
- SiSU_Screen::Ansi.new('',"#{@opt.fns}.txz").blue_tab unless @opt.cmd =~/q/
- else
- SiSU_Screen::Ansi.new('',"#{@opt.fns}.txz not built").blue_tab
- end
- end
- end
-end
-__END__
-question?: should you permit the packing of multiple files in single .gz ?
-
- open @opt.fns, parse file
- extract from file content:
- images and copy each image from whatever image source to _sisu/sisupod/sisu/_sisu/image
- skin and copy active skin from whatever source to _sisu/sisupod/sisu/_sisu/skin/doc
- extract from skin images required by skin
-
- remove previously existing contents of _/sisu/sisupod &
- make directory structure:
-
-v3 -->
- _sisu
- sisupod
- doc
- manifest.txt
- en/content.sst [file content]
- fr/content.sst
- _sisu
- conf
- skin/
- doc [relevant skin if any other than default]
- image (ln -s ../../image)
- audio (ln -s ../../audio)
- video (ln -s ../../video)
- image [all images for specific document gathered here]
- audio
- video
-
-v2 -->
- _sisu
- sisupod
- content.sst [file content]
- filename.sst [link to content.sst]
- _sisu/
- skin/
- doc [relevant skin if any other than default]
- image/ [all images for specific document gathered here]
-
-sisu
- _sisu
- sisurc.yml
- skin/
- dir/
- doc/
- misc/
- site/
- yaml/
- convert/
- standard_terms/
- image
- processing
- dal/
- tex/
- texinfo/
- tune/
- sisupod
-
-special case
-
-composite file (master), e.g.
-SiSU.ssm
diff --git a/lib/sisu/v3dv/sitemaps.rb b/lib/sisu/v3dv/sitemaps.rb
deleted file mode 100644
index cefdba8e..00000000
--- a/lib/sisu/v3dv/sitemaps.rb
+++ /dev/null
@@ -1,215 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: sitemap created from parameters extracted from input file(s)
-
-=end
-module SiSU_Sitemaps
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_Munge
- class Source
- def initialize(opt)
- @opt=opt
- end
- def read
- songsheet
- end
- def songsheet
- begin
- @sys=SiSU_Env::SystemCall.new
- fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
- @fn=SiSU_Env::EnvCall.new(@opt.fns).lang(fn_set_lang[:c])
- if @opt.cmd =~/Y/
- @md=SiSU_Param::Parameters.new(@opt).get
- @trans=SiSU_XML_Munge::Trans.new(@md) #check @md is required
- @env=SiSU_Env::InfoEnv.new(@md.fns)
-# @file=SiSU_Env::FileOp.new(@md)
- @rdf=SiSU_XML_Tags::RDF.new(@md)
- @fnb_utf8_xml=@md.fnb.dup
- @trans.char_enc.utf8(@fnb_utf8_xml) if @sys.locale =~/utf-?8/i #% utf8
- output_map(sitemap)
- elsif @opt.mod.inspect =~/--sitemaps/
- @sitemap_idx_fn='sitemapindex.xml'
- @env=SiSU_Env::InfoEnv.new
- output_idx(sitemap_index)
- SiSU_Screen::Ansi.new(@opt.cmd,"sitemap index:","#{@env.path.output}/#{@sitemap_idx_fn}").result unless @opt.cmd =~/q/
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- def make_file(path,filename)
- if File.writable?("#{path}/."); File.new("#{path}/#{filename}",'w+')
- else
- SiSU_Screen::Ansi.new('',"is the file or directory writable?, could not create #{filename}").warn
- end
- end
- def output_map(sitemap)
- path=@md.file.output_path.sitemaps.dir
- filename=@fn[:sitemap]
- touch_path=@md.file.output_path.sitemaps.dir
- touch_filename=@fn[:sitemap_touch]
- SiSU_Env::FileOp.new(@md).make_path(path)
- file=SiSU_Env::FileOp.new(@md).make_file(path,filename)
- file << sitemap
- if FileTest.file?("#{touch_path}/#{touch_filename}")
- FileUtils::rm("#{touch_path}/#{touch_filename}")
- end
- end
- def output_idx(sitemap)
- path=@env.path.output
- filename=@sitemap_idx_fn
- make_path(path)
- file=make_file(path,filename)
- file << sitemap
- end
- def sitemap_index
- sitemap_files=Dir.glob("#{@env.path.sitemaps}/sitemap_*.xml")
- sitemap_idx=[]
- sitemap_idx <<<<WOK
-<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemaps/0.9
- http://www.sitemaps.org/schemas/sitemaps/sitemap.xsd"
- xmlns="http://www.sitemaps.org/schemas/sitemapindex/0.9">
-WOK
- sitemap_files.each do |s|
- f=s.gsub(/.+?\/sitemap_([^\/]+?)\.xml$/,'\1')
- @trans.char_enc.utf8(f) if @sys.locale =~/utf-?8/i #% utf8
-sitemap_idx <<<<WOK
- <sitemap>
- <loc>#{@env.path.url.remote}/#{f}/sitemap.xml</loc>
- </sitemap>
-WOK
- end
- sitemap_idx <<<<WOK
-</sitemapindex>
-WOK
- idx=sitemap_idx.join
- end
- def sitemap
- map=if defined? @md.date.modified \
- and @md.date.modified=~/\d{4}-\d{2}-\d{2}/
- sitemap_date_modified
- else sitemap_no_date
- end
- end
- def sitemap_date_modified
-<<WOK
-<?xml version='1.0' encoding='UTF-8'?>
-<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemaps/0.9
- http://www.sitemaps.org/schemas/sitemaps/sitemap.xsd"
- xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-#{@rdf.comment_xml}
- <url>
- <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:toc]}</loc>
- <lastmod>#{@md.date.modified}</lastmod>
- <changefreq>monthly</changefreq>
- <priority>0.7</priority>
- </url>
- <url>
- <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:doc]}</loc>
- <lastmod>#{@md.date.modified}</lastmod>
- <priority>0.5</priority>
- </url>
- <url>
- <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:manifest]}</loc>
- <lastmod>#{@md.date.modified}</lastmod>
- <priority>0.5</priority>
- </url>
-</urlset>
-WOK
- end
- def sitemap_no_date
-<<WOK
-<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-#{@rdf.comment_xml}
- <url>
- <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:toc]}</loc>
- <changefreq>monthly</changefreq>
- <priority>0.7</priority>
- </url>
- <url>
- <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:doc]}</loc>
- <priority>0.5</priority>
- </url>
- <url>
- <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:manifest]}</loc>
- <priority>0.5</priority>
- </url>
-</urlset>
-WOK
- end
- end
-end
-__END__
-* sanitize xml, pass through filter to ensure is valid - done but needs testing
-* remote placement of sitemaps --sitemaps -R (probably makes more sense than doing against -Y [filename/wildcard]) - done but needs testing
-* gzip sitemaps - not before testing / after testing
-* issue with master documnts, naming and mapping, check multilingual
-
-<!-- Document processing information:
- * Generated by: SiSU 0.48.6 of 2006w45/6 (20061111)
- * Ruby version: ruby 1.8.5 (2006-08-25) [i486-linux]
- *
- * Last Generated on: Sat Nov 18 15:28:08 +0000 2006
- * SiSU http://www.jus.uio.no/sisu
--->
diff --git a/lib/sisu/v3dv/spell.rb b/lib/sisu/v3dv/spell.rb
deleted file mode 100644
index 58b86af3..00000000
--- a/lib/sisu/v3dv/spell.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: spellchecking
-
-=end
-module SiSU_SpellUtility
- class Spell
- def initialize(input,filesrc,flg)
- @flg=flg
- @filename, @filetype = /(.+?)(\.\w\w\w0$)/.match(filesrc)[1,2] #.gsub(/\.\w\w\w0$/, "")
- @input=input
- @allwords=[]
- puts @filename
- @speller='aspell' # 'ispell'
- @dictionary='british'
- @lang='en_GB'
- end
- def check
- @input.each do |data|
- data=data.gsub(/(https?|www|ftp|gopher|png|jpg|gif|html|htm)\S+/i,' ').
- gsub(/(&nbsp;|#{Mx[:nbsp]})/i,' ').
- gsub(/<\/?(table|tr|td|b|p|href).*?>/i,' ').
- gsub(/(<==.+|<:\S+>|<!.+?!>|^@\S+?:.+|\{\{\{|~)/,' ').
- gsub(/(["|<>)(\n'`'.;&_-]|\=)/,' ').
- gsub(/\b(altExternal|
- target|externalimg|
- srcimagebext|
- img|src|toc|pdf|
- cd|org|
- helvetica|roman
- )\b/i,' ').
- gsub(/EOF/,'')
- @words=data.scan(/\S+/)
- @words.each { |y| @allwords << y }
- end
- @allwords=@allwords.uniq
- if @flg =~ /S/
- File.open('/home/ralph/spell_error','a+') do |file| #fix
- file.puts %{\n\n<<#{@filename}>>}
- end
- @allwords.each { |y| puts y.inspect; system(%{cat #{y} | /usr/bin/#{@speller} -l -d #{@dictionary} >> ~/spell_error })}
- else
- @allwords.each { |y| sp=%x{echo #{y}|#{@speller} -l }; puts sp unless sp.empty?}
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/sst_convert_markup.rb b/lib/sisu/v3dv/sst_convert_markup.rb
deleted file mode 100644
index 29aca8dd..00000000
--- a/lib/sisu/v3dv/sst_convert_markup.rb
+++ /dev/null
@@ -1,312 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: A conversion script for canned substitutions, a fairly generic
- simple tool that can be used to store other canned conversions, used here for
- altering SiSU markup
-
-=end
-module SiSU_Modify
- require_relative 'sst_identify_markup' # sst_identify_markup.rb
- require_relative 'sst_from_xml' # sst_from_xml.rb
- require_relative 'response' # response.rb
- class ConvertMarkup
- def initialize(opt)
- @opt=opt
- @description='This is a script that contains canned text conversions for reuse'
- @response=SiSU_Response::Response.new
- @ask=SiSU_Response::Response.new
- @warn='WARNING, PROCEED AT YOUR OWN RISK, will make file changes.'
- end
- def current_match_and_replace
- convert_37_to_38
- end
- def message(text)
- response=''
- unless @opt.cmd=~/QQ/ \
- or @opt.cmd=~/q/
- response=@ask.response?(%{#{ text}\nProceed? })
- end
- end
- def help
- print <<WOK
-
-#{@description}
-
-sisu --convert --to38 [filename/wildcard]
- converts pre 0.37 sisu markup to 0.38 experimental
- [--37to38]
-
-sisu --convert --to37 [filename/wildcard]
- converts pre 0.37 sisu markup to 0.38 experimental
- [--38to37]
-
-sisu --convert --36to37 [filename/wildcard]
- converts pre 0.36 file-name, to 0.37 file-name
- [--36to37]
-
-sisu --identify [filename]
- attempts to identify markup version used in file
-
-sisu --query [version number]
- gives short summary of distinguishing characteristic
- of that version of markup
-
-WOK
- exit
- end
- #%% substitutions to be made
- def convert_37_to_38
- message("#{@warn}\nConvert sisu markup from 0.37 to 0.38")
- [
- [/^0~(\S+?)([+-])\s+/, '@\1:\2 ', //],
- [/^0~(\S+)\s+/, '@\1: ', //],
- [/^@toc:\s+/, '@structure: ', //],
- [/^1~/, ':A~', //],
- [/^2~/, ':B~', //],
- [/^3~/, ':C~', //],
- [/^4~/, '1~', //],
- [/^5~/, '2~', //],
- [/^6~/, '3~', //],
- [/^7~/, '4~', //],
- [/^8~/, '5~', //],
- [/^9~/, '6~', //],
- [/1/, ':A', /^@(?:level|markup):\s/],
- [/2/, ':B', /^@(?:level|markup):\s/],
- [/3/, ':C', /^@(?:level|markup):\s/],
- [/4/, '1', /^@(?:level|markup):\s/],
- [/5/, '2', /^@(?:level|markup):\s/],
- [/6/, '3', /^@(?:level|markup):\s/]
- ]
- end
- def convert_38_to_37
- message("#{@warn}\nConvert sisu markup from 0.38 to 0.37")
- [
- [/^@(\S+?):([+-])\s+/, '0~\1\2 ', //],
- [/^@(\S+?):\s+/, '0~\1 ', //],
- [/^0~structure\s+/, '0~toc ', //],
- [/^1~/, '4~', //],
- [/^2~/, '5~', //],
- [/^3~/, '6~', //],
- [/^4~/, '7~', //],
- [/^5~/, '8~', //],
- [/^6~/, '9~', //],
- [/^:?A~/, '1~', //],
- [/^:?B~/, '2~', //],
- [/^:?C~/, '3~', //],
- [/1/, '4', /^0~(?:level|markup)\s/],
- [/2/, '5', /^0~(?:level|markup)\s/],
- [/3/, '6', /^0~(?:level|markup)\s/],
- [/:?A/, '1', /^0~(?:level|markup)\s/],
- [/:?B/, '2', /^0~(?:level|markup)\s/],
- [/:?C/, '3', /^0~(?:level|markup)\s/]
- ]
- end
- def convert_filename_36_to_37
- @opt.files.each do |f|
- s=case f
- when /(\.s[1-3])$/; f.sub($1,'.sst')
- when /(\.r[1-3])$/; f.sub($1,'.ssm')
- when /(\.ri)$/; f.sub($1,'.ssi')
- else f
- end
- pwd=Dir.pwd
- unless f==s
- unless File.exist?("#{pwd}/#{s}")
- puts "./#{f} -> ./#{s}"
- FileUtils::cp("#{pwd}/#{f}","#{pwd}/#{s}")
- else "File already exists, < #{s} > will not overwrite"
- end
- end
- end
- end
- def convert_to_simple_xml_model_sax
- SiSU_SimpleXML_ModelSax::Convert.new(@opt).read
- end
- def convert_to_simple_xml_model_dom
- SiSU_simple_xml_model_dom::Convert.new(@opt).read
- end
- def convert_to_simple_xml_model_node
- SiSU_simple_xml_model_node::Convert.new(@opt).read
- end
- def convert_kdi_to_sst
- SiSU_Kdissert::Convert.new(@opt).read
- end
- def convert_s_xml_to_sst
- SiSU_sstFromXML::Convert.new(@opt).read
- end
- def convert_footnotes
- require_relative 'sst_do_inline_footnotes'
- SiSU_ConvertFootnotes::Source.new(@opt).read
- end
- def conversion
- #%% do it -------------------------->
- if @opt.files \
- and @opt.files.length > 0
- mr=nil
- #%% changes to make m match, r replace -------------------------->
- if @opt.mod.inspect =~/--help/; help
- elsif @opt.mod.inspect =~/(?:convert|to)[=-](?:xml |sxs|sax|sxd|dom|sxn|node)/
- ext=case @opt.mod.inspect
- when /(?:convert|to)[=-](?:xml|sxs|sax)/; '.sxs.xml'
- when /(?:convert|to)[=-](?:sxd|dom)/; '.sxd.xml'
- when /(?:convert|to)[=-](?:sxn|node)/; '.sxn.xml'
- end
- message("#{@opt.files.inspect}\n\nWARNING, PROCEED AT YOUR OWN RISK,\noverwriting any equivalent file with the extension #{ext}")
- mr=case @opt.mod.inspect
- when /(?:convert|to)[=-](?:sxs|sax|xml )/; convert_to_simple_xml_model_sax
- when /(?:convert|to)[=-](?:sxd|dom)/; convert_to_simple_xml_model_dom
- when /(?:convert|to)[=-](?:sxn|node)/; convert_to_simple_xml_model_node
- else help
- end
- else
- mr=case @opt.mod.inspect
- when /(?:(?:37)?to-?38|--(?:convert|to)[=-](?:current|0.38))/; convert_37_to_38
- when /(?:(?:38)?to-?37|--(?:convert|to)[=-](?:0.37))/; convert_38_to_37
- when /(?:36to37)/; convert_filename_36_to_37
- when /(?:convert|from)[=-]kdi/; convert_kdi_to_sst
- when /(?:(?:convert|from)[=-])?(?:xml_to_sst|xml2sst|sxml|sxs|sxd|sxd)/; convert_s_xml_to_sst
- when /(?:convert|to)[=-]footnotes/; convert_footnotes
- when /convert|default/; current_match_and_replace
- else help
- end
- end
- unless @opt.mod.inspect =~/kdi/
- match_and_replace=mr
- #start_processing =/not used in this example/i
- end_processing =/END\s+OF\s+FILE/
- i=@opt.fns
- if i =~/(?:\.sst|\.ssm|\.ssi)$/
- @new,@matched,@flag_start,@flag_end,@empty1,@empty2=true,false,false,false,false,false
- o="#{i}.bk" #o is for old
- markup_version=SiSU_Markup::MarkupIdentify.new(@opt).markup_version?
- if (@opt.mod.inspect=~/37/ and markup_version=~/0.38/) \
- or (@opt.mod.inspect=~/current|38/ and markup_version=~/0.37/)
- puts "#{i} #{markup_version}"
- file=File.open(i,'r')
- cont=file.readlines
- file.close
- cont.each do |y|
- match_and_replace.each do |m,r,w|
- if y =~m \
- and y =~w
- if @new
- @new=false
- File.unlink(o) if File.exist?(o)
- File.rename(i,o)
- File.unlink(i) if File.exist?(i)
- @file=File.new(i,'w')
- @matched=true
- break
- end
- end
- end
- end
- if @matched
- puts "conversion match in #{i}" unless @opt.cmd=~/q/
- @flag_start=true
- cont.each do |y|
- if y =~end_processing
- @flag_end=true
- end
- if @flag_start \
- and not @flag_end
- match_and_replace.each do |m,r,w|
- if y =~m \
- and y =~w
- puts m.inspect + ' -> ' + r unless @opt.cmd=~/q/
- puts "in: #{y}" if @opt.cmd=~/[vVM]/
- y.gsub!(m,r) if m and r
- puts "out: #{y}" if @opt.cmd=~/[vVM]/
- end
- end
- end
- if y=~/^\s*$/; @empty1=true
- else @empty1=false
- end
- @file.puts y unless (@empty1==true and @empty2==true)
- if y=~/^\s*$/; @empty2=true
- else @empty2=false
- end
- end
- @file.close
- else puts "NO conversion match in #{i}" unless @opt.cmd=~/q/
- end
- else puts "Requested conversion #{@opt.mod.inspect} markup #{markup_version} identified in #{i}" if @opt.cmd=~/[vVM]/
- end
- end
- end
- else puts 'this routine makes permanent changes to the contents of the files matched, as instructed within [no matches]'
- end
- end
- end
-end
-#%% files to match for this conversion set ------------------------->
-require_relative 'options' # options.rb
-argv=$*
-@opt=SiSU_Commandline::Options.new(argv)
-case @opt.mod.inspect
-when /=kdi/
- SiSU_Modify::ConvertMarkup.new(@opt).conversion
-when /(?:36|37|38)?to-?(?:37|38)|--convert|--to|--from|default/
-@opt.files.each do |fns|
- @opt.fns=fns
- SiSU_Modify::ConvertMarkup.new(@opt).conversion
-end
-else
- @opt.mod='--help'
- SiSU_Modify::ConvertMarkup.new(@opt).help
-end
-__END__
diff --git a/lib/sisu/v3dv/sst_do_inline_footnotes.rb b/lib/sisu/v3dv/sst_do_inline_footnotes.rb
deleted file mode 100644
index d1e1bef6..00000000
--- a/lib/sisu/v3dv/sst_do_inline_footnotes.rb
+++ /dev/null
@@ -1,472 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: preprocessing, convert bi-footnotemarker-footnote to inline
- footnotes, invoked using: sisu --to-footnotes filename.sst
-
-=end
-module SiSU_ConvertFootnotes
- 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_syntax' # dal_syntax.rb
- include SiSU_DAL_Syntax
- require_relative 'i18n' # i18n.rb
- class Instantiate < SiSU_Param::Parameters::Instructions
- @@flag={} #Beware!!
- def initialize
- @@flag['table_to']=false
- @@counter=@@column=@@columns=@@flag_vocab=0
- @@endnote={}
- @@endnote_array=@@word_mode=[]
- @@endnote_call_counter=1
- @@line_mode=''
- end
- end
- class Source <Instantiate
- @@dal_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
- SiSU_Env::CreateSystemLink.new.images
- end
- def read #creates dal
- begin
- dal=[]
- @@dal_array=[]
- @@fns=@opt.fns
- create_dal
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- Instantiate.new
- end
- end
- def get #reads dal, unless does not exist then creates first
- begin
- dal=[]
- unless @@fns==@opt.fns
- @@fns=@opt.fns
- @@dal_array=[]
- end
- dal=if @@dal_array.empty?; read_fnm
- else @@dal_array.dup #check
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- Instantiate.new
- end
- end
- protected
- def create_dal
- dal_array=[]
- SiSU_Screen::Ansi.new(@opt.cmd,'convert footnotes').green_title_hi unless @opt.cmd =~/q/
- file_array=IO.readlines(@opt.fns,'')
- file_array.each do |l|
- if l =~/\r\n/; l.gsub!(/\r\n/,"\n")
- end
- end
- meta=file_array.dup
- meta=meta.join.split("\n\n") #check whether can be eliminated, some of these are large objects to have twice
- @md=SiSU_Param::Parameters::Instructions.new(meta,@opt).extract
- if @md.en[:mismatch]==0 \
- or @md.opt.mod.inspect =~/=footnotes-force/
- meta=nil
- dal=SiSU_ConvertFootnotes::Make.new(@md,file_array).song
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@md.fns}.fn").output if @md.opt.cmd =~/v/
- SiSU_Screen::Ansi.new(@opt.cmd,"#{@md.fns}.fn -> #{@md.fns}.fn").txt_red unless @md.opt.cmd =~/q/
- dal.each {|s| dal_array << "#{s.strip}\n\n" unless s.strip.empty?}
- dal_array
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,'no footnote conversion done, problem with source file','to override use --convert=footnote-force (this is not advised)').warn if @cmd !~/q/
- ''
- end
- end
- def read_fnm
- dal=[]
- dal=if FileTest.file?(@fnm); File.open(@fnm){ |f| dal=Marshal.load(f)}
- else SiSU_ConvertFootnotes::Source.new(@opt).create_dal #watch
- end
- end
- end
- class Output
- def initialize(md,data)
- @md,@data=md,data
- @my_make=SiSU_Env::CreateFile.new(@md.fns)
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- @hard="#{Dir.pwd}/#{@md.fns}.fn"
- end
- def hard_output
- filename_note=@my_make.file_note
- @data.each {|s| filename_note.puts s.strip + "\n\n" unless s.strip.empty?}
- end
- end
- class Make
- @@endnote={}
- @@endnote_array=@@word_mode=[]
- @@endnote_call_counter=1
- @@comment='%'
- @@flag={ ['table_to']=>false }
- def initialize(md,data)
- @md,@data=md,data
- @@word_mode=[]
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @skin=SiSU_Env::InfoSkin.new(@md)
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- @language=l[:n]
- @translate=SiSU_Translate::Source.new(@md,@language)
- end
- def reset
- @@counter=@@column=@@columns=@@flag_vocab=0
- @@endnote={}
- @@endnote_array=@@word_mode=[]
- @@endnote_call_counter=1
- @@line_mode=''
- end
- def song
- reset
- data=@data
- @metafile="#{@env.processing_path.dal}/#{@md.fns}.meta"
- my_make_source_file=SiSU_Env::CreateFile.new(@md.fns)
- data=data.join.split("\n\n")
- data_new=[]
- data.each do |x|
- data_new << if x =~ /\n\n/m; x.split(/\n\n+/)
- else x
- end
- end
- data=data_new.flatten
- data=SiSU_ConvertFootnotes::Make.new(@md,data).substitutions_and_insertions?
- data=SiSU_ConvertFootnotes::Make.new(@md,data).character_check
- data=SiSU_ConvertFootnotes::Make.new(@md,data).endnotes
- SiSU_ConvertFootnotes::Output.new(@md,data).hard_output
- reset
- data
- end
- protected
- def vocabulary
- data=@data
- tuned_file,vocab_insert=[],[]
- data.each do |para|
- if para =~/^1~/ \
- and @@flag_vocab==0
- vocab_insert << '@vocabulary: lex' << "\n\n" << para
- tuned_file << vocab_insert unless para.nil?
- @@flag_vocab=1
- else tuned_file << para unless para.nil?
- end
- end
- tuned_file
- end
- def character_check
- reset
- data=@data
- @tuned_file=[]
- endnote_no=1
- data.each do |para|
- para.strip!
- para.gsub!(/^[{~}]\s*$/,'')
- para.gsub!(/^#{@@comment}.*/,'') #remove comment and divider #%
- para.gsub!(/<~#>|~#\s*/,'~#')
- para.gsub!(/-#\s*/,'-#')
- para.gsub!(/(~\{ )\s+/,'\1')
- para.gsub!(/ \/\//,'<br />') #added 2004w29
- para.gsub!(/<br>/,'<br />') #needed by xml, xhtml etc.
- para.gsub!(/`/,"'")
- para.gsub!(/\342\200\231/,"'") #if para =~/’/ #Avoid #&lsquo; &rsquo; #&ldquo; &rdquo;
- para.gsub!(/\t/,' ')
- para.gsub!(/�/,' ') #watch, replace with char code
- para.gsub!(/[“”]/,'""')
- para.gsub!(/[­–—]/,'-') #— – chk
- para.gsub!(/·/,'*')
- para.gsub!(/\\copy(?:right)?\b/,'&#169;')
- para.gsub!(/\\trademark\b|\\tm\b/,'&#174;')
- para.gsub!(/\44/,'&#36;') #$ watch
- para=para + "\n"
- case para
- when /\^~/ # endnotes
- #% Note must do this first (earlier loop) and then enter gathered data into ~^\d+
- sub_para=para.dup
- @@endnote_array << sub_para.gsub!(/\n/,'').gsub!(/\^~\s+(.+)\s*/,'~{ \1 }~').strip
- endnote_no+=1
- para=nil if para =~/\^~ .+/ #removes 'binary' endnote now in endnote array for later insertion
- end
- @tuned_file << para unless para.nil?
- end
- @tuned_file
- end
- def substitutions_and_insertions?
- data=@data
- tuned_file=[]
- data.each do |para|
- if @md.markup =~/0\.16|0\.37/ #parameters not extracted/available
- para.gsub!(/^0~\S+\s+/,'@\1: ')
- para.gsub!(/^1~/,':A~')
- para.gsub!(/^2~/,':B~')
- para.gsub!(/^3~/,':C~')
- para.gsub!(/^4~/,'1~')
- para.gsub!(/^5~/,'2~')
- para.gsub!(/^6~/,'3~')
- para.gsub!(/^7~/,'4~')
- para.gsub!(/^8~/,'5~')
- para.gsub!(/^9~/,'6~')
- end
- if para =~/<:insert\d+!?>/ \
- and para !~/^%\s+/
- @skin.select
- ins=SiSU_Viz::Inserts.new
- case para
- when /^\s*<:insert1>\s*$/
- para=[]
- ins.insert1.split(/\n\n/).each {|x| para << x }
- when /^\s*<:insert2>\s*$/
- para=[]
- ins.insert2.split(/\n\n/).each {|x| para << x }
- when /^\s*<:insert3>\s*$/
- para=[]
- ins.insert3.split(/\n\n/).each {|x| para << x << "\n"}
- para=ins.insert3
- when /^\s*<:insert4>\s*$/
- para=[]
- ins.insert4.split(/\n\n/).each {|x| para << x << "\n"}
- para=ins.insert4
- when /^\s*<:insert5>\s*$/
- para=[]
- ins.insert5.split(/\n\n/).each {|x| para << x << "\n"}
- when /^\s*<:insert6>\s*$/
- para=[]
- ins.insert6.split(/\n\n/).each {|x| para << x << "\n"}
- when /^\s*<:insert7>\s*$/
- para=[]
- ins.insert7.split(/\n\n/).each {|x| para << x << "\n"}
- end
- para.each {|x| tuned_file << x }
- else tuned_file << para
- end
- tuned_file.compact!
- end
- tuned_file
- end
- def name_endnote_seg
- data=@data
- @tuned_file=[]
- data.each do |para|
- para.gsub!(/<:3>\s*<:ee>/,
- "#{@@endnote['special_align']} <p /><br />\r " +
- "#{@@endnote['seg_name_3']} <p /> " +
- "#{@@endnote['special_align_close']}")
- para.gsub!(/<:2>\s*<:ee>/,
- "#{@@endnote['special_align']} <p /><br />\r " +
- "#{@@endnote['seg_name_2']} <p />" +
- "#{@@endnote['special_align_close']}")
- para.gsub!(/<:1>\s*<:ee>/,
- "#{@@endnote['special_align']} <p /><br />\r " +
- "#{@@endnote['seg_name_1']} <p /> " +
- "#{@@endnote['special_align_close']}")
- @tuned_file << para
- end
- if @md.flag_auto_endnotes \
- and @md.flag_separate_endnotes_make
- @tuned_file << "\n1~endnotes Endnotes" #prob numbering, revisit
- end
- @tuned_file << "\n<ENDNOTES>"
- @tuned_file
- end
- def owner_details_seg
- data << '1~owner.details Owner Details'
- end
- def number_sub_heading(para,num,title_no)
- case para
- when /#{num}~- /; para.gsub!(/#{num}~- /,"#{title_no} ")
- when /^#{num}~#\s*/; para.gsub!(/^#{num}~#\s*/,"#{title_no} ")
- when /^#{num}~[a-z_\.]+ /
- para.gsub!(/^#{num}~([a-z_\.]+)\s+(.+)/i,%{#{num}~\\1 #{title_no} \\2 <:name##{title_no}>})
- else para.gsub!(/^#{num}~ /,"#{num}~#{title_no} #{title_no} ") #main
- end
- if @md.toc_lev_limit \
- and @md.toc_lev_limit < num
- para.gsub!(/^[2-6]~(?:~\S+)?\s*/,'!_ ')
- end
- para
- end
- def set_heading_top #% make sure no false positives
- unless @md.set_heading_top
- puts "\tdocument contains no top level heading, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- data=@data
- @tuned_file=[]
- data.each do |para|
- unless @md.set_heading_top
- if para !~/^(?:@\S+:|0~\S+)\s/m \
- and para !~/\A\s*\Z/m
- @md.set_heading_top=true
- head=if @md.title.full ; ":A~ #{@md.title.full}"
- else ':A~ [no title provided]'
- end
- @tuned_file << head
- end
- end
- @tuned_file << para
- end
- @tuned_file
- end
- end
- def set_heading_seg #% make sure no false positives
- unless @md.set_heading_seg
- puts "\tdocument contains no segment level, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- data=@data
- @tuned_file=[]
- data.each do |para|
- unless @md.set_heading_seg
- if para !~/^(?:@\S+:|0~\S+|:[ABC]~)/m \
- and para !~/\A\s*\Z/m \
- and para !~/<:p[bn]>/
- @md.set_heading_seg=true
- head=if @md.title.full ; "1~seg [#{@md.title.full}]"
- else '1~seg [segment]'
- end
- @tuned_file << head
- end
- end
- @tuned_file << para
- end
- @tuned_file
- end
- end
- def set_header_title #% make sure no false positives
- unless @md.set_header_title
- puts "\t no document title provided, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- data=@data
- @tuned_file=[]
- data.each do |para|
- unless @md.set_header_title
- if para !~/^%{1,2}\s/m \
- and para !~/\A\s*\Z/m
- @tuned_file << "0~title #{@md.heading_seg_first}"
- @md.title.full=@md.heading_seg_first
- @md.set_header_title=true
- end
- end
- @tuned_file << para
- end
- @tuned_file
- end
- end
- def endnotes #% endnote work zone
- data=@data
- @tuned_file=[]
- endnote_no,endnote_ref=1,1
-
- data.each do |para|
- case para # manually numbered endnotes <!e(\d)!> <!e_(\d)!> -->
- when /~\{\s+.+?\}~/ # auto-numbered endnotes <!e!> <!e_!> -->
- para.gsub!(/\s*\}~/,' }~') # required 2003w31
- @word_mode=para.scan(/\S+/)
- word_mode=SiSU_ConvertFootnotes::Make.new(@md,@word_mode).endnote_call_number
- para=word_mode.join(' ')
- endnote_ref+=1
- when /~\^(?:\s|$)|<:e>/ #%Note inserts endnotes previously gathered from /^(<!e[:_]!>|[-~]\{{3})/ (in earlier loop)
- word_mode=para.scan(/\S+/)
- word_mode=SiSU_ConvertFootnotes::Make.new(@md,word_mode).endnote_call_number
- para=word_mode.join(' ')
- endnote_ref+=1
- end
- @tuned_file << para
- end
- @tuned_file
- end
- def endnote_call_number
- data=@data
- data.each do |word|
- case word
- when /~\{/
- unless word =~/~\{\*+/
- @@endnote_call_counter+=1
- end
- when /~\^|<:e>/
- word.gsub!(/~\^|<:e>/,"#{@@endnote_array[@@endnote_call_counter-1]}")
- @@endnote_call_counter+=1
- end
- end
- end
- def strip_clean_extra_spaces(s) # dal output tuned
- s=s.dup
- s=s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1')
- s=s.gsub(/ [ ]+/,' ')
- s=s.gsub(/^ [ ]+/,'')
- s=s.gsub(/ [ ]+$/,'')
- s=s.gsub(/(<\/[bi]>')[ ]+(s )/,'\1\2')
- end
- def strip_clean_of_markup(s) # used for digest, define rules, make same as in db clean
- s=s.dup
- s=s.gsub(/(?:<\/?[ib]>|^:[A-C]~\S+|^[1-6]~\S+|~\{\d+\s.+?\}~)/,'') # markup and endnotes removed
- #% same as db clean -->
- s=s.gsub(/<del>(.+?)<\/del>/,'DELETED(\1)') # deletions
- s=s.gsub(/<sup>(\d+)<\/sup>/,'[\1]')
- s=s.gsub(/(?:&nbsp\\;|#{Mx[:nbsp]})+/,' ') #checking source Mx not necessary
- s=s.gsub(/\{.+?\.(?:png|jpg|gif).+?\}(?:https?|file|ftp)\\\:\S+ /,' [image] ') # else image names found in search
- s=s.gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [image] ') # else image names found in search, re-check
- s=s.gsub(/\s\s+/,' ')
- s=s.strip
- end
- end
-end
-__END__
-@particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
-dal_array=@particulars.dal_array # dal file drawn here
diff --git a/lib/sisu/v3dv/sst_from_xml.rb b/lib/sisu/v3dv/sst_from_xml.rb
deleted file mode 100644
index 59495e5a..00000000
--- a/lib/sisu/v3dv/sst_from_xml.rb
+++ /dev/null
@@ -1,169 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: Conversion script from kdissert .kdi to sisu markup .ssm
- (master document)
-
-=end
-module SiSU_sstFromXML
- require_relative 'sysenv' # sysenv.rb
- class Convert
- require 'rexml/document'
- include REXML
- def initialize(opt)
- @opt=opt
- @sisu,@sisu_base=[],[]
- @ver=SiSU_Env::InfoVersion.instance.get_version
- end
- def tell(filename,type)
- SiSU_Screen::Ansi.new(@opt.cmd,"XML #{type} to SiSU sst","#{filename} --> #{filename}.sst").green_hi_blue
- end
- def read
- xml_to_sisu
- end
- def markup_head(text)
- text.strip!
- text.gsub!(/(?:\s*\n|\s\s+)/,' ')
- text.gsub!(/<header class=['"]\S+?['"]>(.+?)<\/header>/,'\1')
- text.gsub!(/<(\w+)>(.+?)<\/\w+>/,'@\1: \2')
- text.gsub!(/<header class=['"]\S+?['"]><(\w+)>(.+?)<\/\w+><\/header>/,'@\1: \2')
- text.gsub!(/\s +/,' ')
- text.strip!
- text + "\n\n"
- end
- def markup(text)
- text.strip!
- text.gsub!(/(?:\s*\n|\s\s+)/,' ')
- text.gsub!(/<text class='h1'>(.+?)<\/text>/,':A~ \1')
- text.gsub!(/<text class='h2'>(.+?)<\/text>/,':B~ \1')
- text.gsub!(/<text class='h3'>(.+?)<\/text>/,':C~ \1')
- text.gsub!(/<text class='h4'>(.+?)<\/text>/,'1~ \1')
- text.gsub!(/<text class='h5'>(.+?)<\/text>/,'2~ \1')
- text.gsub!(/<text class='h6'>(.+?)<\/text>/,'3~ \1')
- text.gsub!(/<text class='norm'>(.+?)<\/text>/,'\1')
- text.gsub!(/<endnote symbol='norm'>(.+?)<\/endnote>/,'~{ \1 }~')
- text.gsub!(/<br ?\/>/,'<br>')
- text.gsub!(/<i>(.+?)<\/i>/,'/{\1}/')
- text.gsub!(/<b>(.+?)<\/b>/,'*{\1}*')
- text.gsub!(/<u>(.+?)<\/u>/,'_{\1}_')
- text.gsub!(/<sem:([a-z_]+)\s+depth=['"]zero['"]>(\s*.+?\s*)<\/sem:\1>/,';{ \2 };\1')
- text.gsub!(/<sem:([a-z_]+)\s+depth=['"]one['"]>(\s*.+?\s*)<\/sem:\1>/,':{ \2 }:\1')
- text.gsub!(/<sem:([a-z_]+)\s+depth=['"]many['"]>(\s*.+?\s*)<\/sem:\1>/,'\1:{ \2 }:\1')
- text.gsub!(/<sem:([a-z_]+)>(\s*.+?\s*)<\/sem:\1>/,'\1:{ \2 }:\1')
- text.gsub!(/\s +/,' ')
- text.strip!
- text + "\n\n"
- end
- def sax
- out_file=File.new(@output_file_name,'w')
- head=@doc.root.get_elements('//head/header')
- body=@doc.root.get_elements('//object/text')
- out_file.puts "% SiSU text #{@ver[:version]} (generated from a SiSU XML markup representation)\n\n"
- head.each do |x|
- if x.name=='header'
- head=markup_head(x.to_s)
- out_file.puts head
- end
- end
- body.each do |x|
- if x.name=='text'
- body=markup(x.to_s)
- out_file.puts body
- end
- end
- end
- def node
- sax
- end
- def dom
- raise "#{__FILE__}::#{__LINE__} xml dom representation to sst not yet implemented (experimental simple xml representations sax and node to sst are in place)."
- end
- def xml_to_sisu
- unless @opt.files.empty?
- @opt.files.each do |xml|
- @sisu_base=[]
- if xml =~/\.sx[sdn]\.xml$/
- begin
- @doc_str=IO.readlines(xml,'').join("\n")
- @output=File.new("#{xml}.sst",'w')
- @doc=REXML::Document.new(@doc_str)
- @output_file_name="#{Dir.pwd}/#{xml}.sst"
- @el=[]
- rescue REXML::ParseException
- end
- end
- if xml =~/\.sxs\.xml$/
- unless @opt.cmd =~/q/; tell(xml,'sax')
- end
- sax
- elsif xml =~/\.sxd\.xml$/
- unless @opt.cmd =~/q/; tell(xml,'dom')
- end
- dom
- elsif xml =~/\.sxn\.xml$/
- unless @opt.cmd =~/q/; tell(xml,'node')
- end
- node
- else puts "filename not recognised: << #{xml} >>"
- end
- @output << @sisu_base
- end
- else puts '.xml file for conversion to sisu expected'
- end
- puts @opt.files.inspect
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/sst_identify_markup.rb b/lib/sisu/v3dv/sst_identify_markup.rb
deleted file mode 100644
index af30f19b..00000000
--- a/lib/sisu/v3dv/sst_identify_markup.rb
+++ /dev/null
@@ -1,474 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: A conversion script for canned substitutions, a fairly generic
- simple tool that can be used to store other canned conversions, used here for
- altering SiSU markup
-
-=end
-module SiSU_Markup
- class MarkupInform
- attr_accessor :version
- def initialize(version,message,declared_markup='',declared_type='')
- @version,@message,@declared_markup,@declared_type=version,message,declared_markup,declared_type
- end
- def version
- @version
- end
- def message
- @message
- end
- def declared_version
- @declared_markup
- end
- def declared_type
- @declared_type
- end
- def history
- MarkupHistory.new(@version).query
- end
- end
- class MarkupIdentify
- def initialize(opt)
- @opt=opt
- @description='This is a script attempts to identify the version of markup used in SiSU (and provides information on changes in markup)'
- end
- def help
- print <<WOK
-
-#{@description}
-
-WOK
- exit
- end
- def identify
- f=@opt.fns
- if f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])$/ \
- and File.exist?(f)
- file=File.open(f,'r')
- cont=file.readlines
- file.close
- links,oldlinks='',''
- markup=nil
- @declared_type,@declared_markup='[text?]',''
- if cont[0] =~ /^(?:%\s+)?SiSU\s+(text|master|insert)\s+([0-9](?:\.[0-9]+){1,2})/ \
- or cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
- @declared_type,@declared_markup=$1,$2
- elsif cont[0] =~ /^(?:%\s+)?SiSU\s+([0-9](?:\.[0-9]+){1,2})/ \
- or cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
- @declared_markup=$1
- end
- @flag_2_0,@flag_1_0,@flag_69,@flag_66,@flag_57,@flag_38=false,false,false,false,false,false
- cont.each_with_index do |y,i|
- if y =~/^(?:0\{?~links?|@links?:)\s/ \
- and f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])/
- links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)'
- else ' (post 0.20.4 header links)'
- end
- end
- if @flag_2_0 \
- or y =~/^@make:|^@classify|^\s\s?:[a-z_-]+?:\s+\S/
- version=2.0.to_f
- markup=MarkupInform.new(version,'2.0' + oldlinks,@declared_markup,@declared_type)
- @flag_2_0=true
- break
- end
- unless @flag_38
- if (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
- version='0.38'
- markup=MarkupInform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
- @flag_38=true
- end
- end
- if @flag_38
- if @flag_1_0 \
- or y =~/^=\{.+?\}\s*$/
- version='0.69'
- markup=MarkupInform.new(version,'0.69' + oldlinks,@declared_markup,@declared_type)
- @flag_1_0=true
- break
- end
- if @flag_66 \
- or y =~/[a-z+][:;]\{.+?\}[:;][a-z+]/
- version='0.66'
- markup=MarkupInform.new(version,'0.66' + oldlinks,@declared_markup,@declared_type)
- @flag_66=true
- break
- end
- end
- end
- unless @flag_2_0 \
- or @flag_1_0 \
- or @flag_66
- cont.each_with_index do |y,i|
- if y =~/^(?:0\{?~links?|@links?:)\s/ \
- and f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])/
- links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)'
- else ' (post 0.20.4 header links)'
- end
- end
- if @flag_57 \
- or (y =~/^:?A~\?? @title/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
- version='0.57'
- markup=MarkupInform.new(version,'0.57' + oldlinks,@declared_markup,@declared_type)
- @flag_57=true
- break
- end
- if @flag_38 \
- or (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
- version='0.38'
- markup=MarkupInform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
- @flag_38=true
- break if i >= 200
- if y =~ /(?:~{\*+|~\[\*|~\[\+)\s/
- version='0.42'
- markup=MarkupInform.new(version,'0.42' + oldlinks,@declared_markup,@declared_type)
- break
- end
- end
- if (y =~/^1~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) \
- and not @flag_38
- version='0.37'
- markup=MarkupInform.new(version,'0.37 is substantially 0.16 - 0.36 markup with new file-extension' + oldlinks,@declared_markup,@declared_type)
- break
- end
- if y =~/^1~/ \
- and f =~/\.([rs])([123])/ \
- and not @flag_38
- t,n=$1,$2
- version='0.16'
- instruct=if t =~/r/
- " (change file extension from .#{t}#{n} to .ssm)"
- else " (change file extension from .#{t}#{n} to .sst)"
- end
- markup=MarkupInform.new(version,'0.16 - 0.36' + instruct + links,@declared_markup,@declared_type)
- break
- end
- if y =~/^0\{~/ \
- and not @flag_38
- version='0.1'
- markup=MarkupInform.new(version,'0.1 - 0.15',@declared_markup,@declared_type)
- break
- end
- if y =~/^0\{{3}/ \
- and not @flag_38
- markup=MarkupInform.new('circa. 1997','old, check date',@declared_markup,@declared_type)
- break
- end
- markup='Not a recognised file type '
- end
- end
- markup
- else MarkupHistory.new(@opt).help_query
- end
- end
- def determine_markup_version
- if @opt.fns.nil? \
- or @opt.fns.empty?
- MarkupHistory.new(@opt).help_identify
- end
- if File.exist?(@opt.fns)
- if @opt.fns =~/\.(?:sst|ssm|ssi|s[123i]|r[123])/
- markup=identify #(@opt.fns)
- if defined? markup.version
- unless @opt.cmd =~/q/
- message=unless markup.declared_version.empty?
- "#{@opt.fns}\n markup Type Declared as SiSU #{markup.declared_version} #{markup.declared_type}\n appears to be SiSU #{markup.version}"
- else
- "Markup Type Appears to be SiSU #{markup.version}\n in file #{@opt.fns}"
- end
- puts message
- puts %{"sisu --query-#{markup.version}" for a brief description of markup type}
- end
- end
- else puts 'file-type not recognised: ' + @opt.fns
- end
- else puts 'file not found: ' + @opt.fns
- end
- if defined? markup.version; markup.version
- else 'markup type/version not determined'
- end
- end
- def markup_version?
- if @opt.fns.empty?
- @opt.files.each do |fns|
- @opt.fns=fns
- determine_markup_version
- end
- else determine_markup_version
- end
- end
- end
- class MarkupHistory
- def initialize(opt)
- @opt=opt
- end
- def sisu_2_0
- <<WOK
- SiSU 2.0 same as 1.0, apart from the changing of headers and the addition of a monospace tag
- related headers now grouped, e.g.
-
- @title:
- :subtitle:
-
- @creator:
- :author:
- :translator:
- :illustrator:
-
- see document markup samples, and sisu --help headers
-
- the monospace tag takes the form of a has '#' \#{ this enclosed text would be monospaced }#
-
-WOK
- end
- def sisu_1_0
- <<WOK
- SiSU 1.0 same as 0.69
-
-WOK
- end
- def sisu_0_69
- <<WOK
- SiSU 0.69 (same as 1.0) as previous (0.57) with the addition of book index tags
- /^=\{.+?\}$/
- e.g. appended to a paragraph, on a new-line (without a blank line in between)
- logical structure produced assuming this is the first text "object"
- ={GNU/Linux community distribution:Debian+2|Fedora|Gentoo;Free Software Foundation+5}
-
- Free Software Foundation, 1-6
- GNU/Linux community distribution, 1
- Debian, 1-3
- Fedora, 1
- Gentoo,
-
-WOK
- end
- def sisu_0_66
- <<WOK
- SiSU 0.66 same as previous, adds semantic tags
- /[:;]\{.+?\}[:;][a-z+]/
- e.g. :{ Ralph last;{Amissah};last }:author
-
-WOK
- end
- def sisu_0_65
- <<WOK
- SiSU 0.65 same as previous, adds semantic tags
- /[a-z+][:;]\{.+?\}[:;][a-z+]/
- e.g. author:{ Ralph last;{Amissah};last }:author
-
-WOK
- end
- def sisu_0_57
- <<WOK
-
- SiSU 0.57 (a subset of 1.0) is the same as 0.42 with the introduction of some
- a shortcut to use the headers @title and @creator in the first heading
- [expanded using the contents of the headers @title: and @author:]
-
- :A~ @title by @author
-
-WOK
- end
- def sisu_0_42
- <<WOK
- SiSU 0.42 (a subset of 1.0) is the same as 0.38 with the introduction of some additional endnote types,
-
- Introduces some varations on endnotes, in particular the use of the asterisk
- ~{* for example for describing an author }~ and ~{** for describing a second author }~
-
- * for example for describing an author
-
- ** for describing a second author
-
- and ~[* my note ]~ or ~[+ another note ]~ which numerically increments an
- asterisk and plus respectively
-
- *1 my note
- +1 another note
-
-WOK
- end
- def sisu_0_38
- <<WOK
-
- SiSU 0.38 (a subset of 1.0) introduced alternative experimental header and heading/structure markers,
-
- @headername: and headers :A~ :B~ :C~ 1~ 2~ 3~
-
- as the equivalent of (the superceded)
-
- 0~headername and headers 1~ 2~ 3~ 4~ 5~ 6~
-
- The internal document markup of SiSU 0.16 remains valid and standard
- Though note that SiSU 0.37 introduced a new file naming convention
-
- SiSU has in effect two sets of levels to be considered, using 0.38 notation
- A-C headings/levels, pre-ordinary paragraphs /pre-substantive text, and
- 1-3 headings/levels, levels which are followed by ordinary text.
- This may be conceptualised as levels A,B,C, 1,2,3, and using such letter
- number notation, in effect:
- A must exist, optional B and C may follow in sequence (not strict)
- 1 must exist, optional 2 and 3 may follow in sequence
- i.e. there are two independent heading level sequences A,B,C and 1,2,3
- (using the 0.16 standard notation 1,2,3 and 4,5,6)
- on the positive side:
- * the 0.38 A,B,C,1,2,3 alternative makes explicit an aspect of structuring
- documents in SiSU that is not otherwise obvious to the newcomer (though
- it appears more complicated, is more in your face and likely to be
- understood fairly quickly)
- * the substantive text follows levels 1,2,3 and it is 'nice' to do
- most work in those levels
-WOK
- end
- def sisu_0_37
- <<WOK
-
- SiSU 0.37 introduced the file naming convention, that remains in use in SiSU
- v1 and v2, using the file extensions .sst .ssm and .ssi
- to replace .s1 .s2 .s3 .r1 .r2 .r3 and .si
-
- this is captured by the following file 'rename' instruction:
-
- rename 's/\.s[123]$/\.sst/' *.s{1,2,3}
- rename 's/\.r[123]$/\.ssm/' *.r{1,2,3}
- rename 's/\.si$/\.ssi/' *.si
-
- The internal document markup remains unchanged, from SiSU 0.16
-WOK
- end
- def sisu_0_16
- <<WOK
-
- SiSU 0.16 (0.15 development branch) introduced the use of
-
- the header 0~ and headings/structure 1~ 2~ 3~ 4~ 5~ 6~
-
- in place of the 0.1 header, heading/structure notation
-WOK
- end
- def sisu_0_1
- <<WOK
-
- SiSU 0.1 headers and headings structure represented by
- header 0{~ and headings/structure 1{ 2{ 3{ 4{~ 5{ 6{
-WOK
- end
- def help_query
- <<WOK
-
- sisu --query=[sisu version [0.38] or 'history]
- provides a short history of changes to SiSU markup
-
-WOK
- end
- def help_identify
- <<WOK
-
- sisu --identify [filename]
- attempts to identify the SiSU markup used in a file
-
-WOK
- end
- def query
- tell=if @opt.mod.inspect =~/--query/
- tell=case @opt.mod.inspect
- when /history/
- "#{sisu_2_0}#{sisu_1_0}#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}\n#{sisu_0_37}\n#{sisu_0_16}\n#{sisu_0_1}"
- when /2.0/
- "#{sisu_2_0}#{sisu_1_0}#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
- when /1.0/
- "#{sisu_1_0}#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
- when /0.69/
- "#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
- when /0.66/
- "#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
- when /0.65/
- "#{sisu_0_65}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
- when /0.57/
- "#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
- when /0.42/
- "#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
- when /0.38/
- "#{sisu_0_38}#{sisu_0_16}"
- when /0.37/
- "#{sisu_0_37}\n#{sisu_0_16}"
- when /0.1[6-9]|0.2[0-9]|0.3[0-6]/
- "#{sisu_0_16}\n#{sisu_0_1}"
- when /0.[1-9]|0.1[1-4]/
- sisu_0_1
- else puts "NOT RECOGNISED: #{@opt.mod.inspect}"
- help_query
- end
- tell
- else help_query
- end
- end
- end
-end
-__END__
-#%% to use as independent program ------------------------->
-f=$*
-cf=f[0].to_s
-f.shift
-match_and_replace=[]
-unless f.length > 0; f=Dir.glob("[a-z]*.ss?") #restricted to sisu type files, it need not be
-end
-puts "SiSU files:"
-puts f
-f.each do |x|
- SiSU_Markup::MarkupIdentify.new(x).markup_version?
-end
diff --git a/lib/sisu/v3dv/sst_to_s_xml_sax.rb b/lib/sisu/v3dv/sst_to_s_xml_sax.rb
deleted file mode 100644
index e3e219e0..00000000
--- a/lib/sisu/v3dv/sst_to_s_xml_sax.rb
+++ /dev/null
@@ -1,453 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: simple xml representation (sax style)
-
-=end
-module SiSU_SimpleXML_ModelSax
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'param' # param.rb
- 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
- include SiSU_XML_Munge
- require_relative 'shared_sem' # shared_sem.rb
- require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_Format
- require_relative 'rexml' # rexml.rb
- include SiSU_Rexml
- @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0
- @@tablefoot=''
- class Convert
- @@fns=nil
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_env_md(opt)
- end
- def read
- begin
- @md=@particulars.md #bug, relies on info persistence, assumes -m has previously been run
- @env=@particulars.env
- path=@env.path.output_tell
- loc=@env.url.output_tell
- tool=if @opt.cmd =~/[MV]/; "#{Dir.pwd}/#{@md.fn[:sxs]}\n\t#{@env.program.xml_viewer} #{path}/#{@md.fnb}/#{@md.fn[:sxs]}"
- elsif @opt.cmd =~/v/; "#{@env.program.web_browser} #{Dir.pwd}/#{@md.fn[:sxs]}"
- else ''
- end
- SiSU_Screen::Ansi.new(@opt.cmd,'invert','XML SAX',"#{@md.fns} -> #{@md.fn[:sxs]}").colorize unless @opt.cmd =~/q/
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{Dir.pwd}/#{@md.fn[:sxs]}").flow if @opt.cmd =~/[MV]/
- unless @@fns==@opt.fns
- @@fns=@opt.fns
- @@fns_array=[]
- end
- @fns_array=if @@fns_array.empty?; read_fnm
- else @@fns_array.dup #check
- end
- SiSU_SimpleXML_ModelSax::Convert::Songsheet.new(@fns_array,@particulars).songsheet
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure #file closed in songsheet
- end
- end
- def read_fnm
- dal=[]
- if FileTest.file?("#{Dir.pwd}/#{@opt.fns}")
- dal=IO.readlines("#{Dir.pwd}/#{@opt.fns}","\n\n")
- else puts 'Error'
- end
- end
- private
- class Songsheet
- def initialize(data,particulars)
- @data,@particulars,@env,@md=data,particulars,particulars.env,particulars.md
- end
- def songsheet
- begin
- SiSU_SimpleXML_ModelSax::Convert::Scroll.new(@data,@particulars).songsheet
- SiSU_SimpleXML_ModelSax::Convert::Tidy.new(@md,@env).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
- SiSU_Rexml::Rexml.new(@md,@md.fn[:sxs]).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- end
- class Scroll
- require_relative 'shared_txt' # shared_txt.rb
- require_relative 'css' # css.rb
- include SiSU_TextUtils
- @@xml={ body: [], open: [], close: [], head: [] }
- def initialize(data='',particulars='')
- @data,@env,@md=data,particulars.env,particulars.md
- @vz=SiSU_Env::GetInit.instance.skin
- @regx=/^(?:#{Mx[:mk_o]}:p[bn]#{Mx[:mk_c]}\s*)?(?:#{Mx[:lv_o]}[1-9]:(\S*)#{Mx[:lv_c]})?(.+)/
- @tab="\t"
- if @md
- @trans=SiSU_XML_Munge::Trans.new(@md)
- end
- @sys=SiSU_Env::SystemCall.new
- end
- def songsheet
- pre
- markup
- post
- publish
- end
- protected
- def embedded_endnotes(para='')
- para.gsub!(/~\{(.+?)\}~/,'<endnote symbol="norm">\1</endnote> ')
- para.gsub!(/~\[([*+])\s+(.+?)\]~/,'<endnote symbol="\1">\2</endnote> ')
- end
- def xml_head(meta)
- txt=meta.text
- txt.gsub!(/\/{(.+?)}\//,'<i>\1</i>')
- txt.gsub!(/[*!]{(.+?)}[*!]/,'<b>\1</b>')
- txt.gsub!(/_{(.+?)}_/,'<u>\1</u>')
- txt.gsub!(/-{(.+?)}-/,'<del>\1</del>')
- txt.gsub!(/<br(?: \/)?>/,'<br />')
- txt.gsub!(/ & /,' and ')
- @@xml[:head] <<<<WOK
-#{@tab}<header class="#{meta.attrib}">
-#{@tab*2}<#{meta.el}>
-#{@tab*3}#{txt}
-#{@tab*2}</#{meta.el}>
-#{@tab}</header>
-WOK
- end
- def xml_sc(md='')
- sc=if @md.sc_info
- <<WOK
- <source_control>
- <sc class="sourcefile">
- #{@md.sc_filename}
- </sc>
- <sc class="number">
- #{@md.sc_number}
- </sc>
- <sc class="date">
- #{@md.sc_date}
- </sc>
- </source_control>
-WOK
- else ''
- end
- @@xml[:sc]=sc
- end
- def xml_structure(para='',lv='',hname='') #extracted endnotes
- lv=lv.to_i
- n=lv - 1
- n3=lv + 2
- lv=nil if lv==0
- embedded_endnotes(para)
- if para[@regx]
- paragraph="#{para[@regx,2]}"
- util=SiSU_TextUtils::Wrap.new(paragraph,70)
- wrapped=util.line_wrap
- end
- @@xml[:body] << "#{@tab*0}<object>" if para[@regx]
- @@xml[:body] << "#{@tab*1}" << "\n" if para[@regx]
- @@xml[:body] << if lv; %{#{@tab*1}<text class="h#{lv}">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n} << "\n"
- elsif wrapped =~/\A%%?\s+/; %{<!--\n#{@tab*1}<text class="comment">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n-->\n} # comments
- else %{#{@tab*1}<text class="norm">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n} # main text, contents, body KEEP
- end
- @@xml[:body] << "#{@endnotes}" if @endnotes # main text, endnotes KEEP
- @@xml[:body] << "#{@tab*0}</object>" << "\n" if para[@regx]
- @endnotes=[]
- end
- def block_structure(para='')
- para.gsub!(/<:block(?:-end)?>/,'')
- para.strip!
- @@xml[:body] << %{#{@tab*0}<object>}
- @@xml[:body] << %{#{@tab*1}<text class="block">#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*1}</text>\n}
- @@xml[:body] << "#{@tab*0}</object>"
- end
- def group_structure(para='')
- para.gsub!(/<:group(?:-end)?>/,'')
- para.strip!
- @@xml[:body] << %{#{@tab*0}<object>}
- @@xml[:body] << %{#{@tab*1}<text class="group">#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*1}</text>\n}
- @@xml[:body] << "#{@tab*0}</object>"
- end
- def poem_structure(para='')
- para.gsub!(/<:verse(?:-end)?>/,'')
- para.strip!
- @@xml[:body] << %{#{@tab*0}<object>}
- @@xml[:body] << %{#{@tab*1}<text class="verse">#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*1}</text>\n}
- @@xml[:body] << "#{@tab*0}</object>" << "\n"
- end
- def code_structure(para='')
- para.gsub!(/<:code(?:-end)?>/,'')
- para.strip!
- @@xml[:body] << %{#{@tab*0}<object>}
- @@xml[:body] << %{#{@tab*1}<text class="code">#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
- @@xml[:body] << %{#{@tab*1}</text>\n}
- @@xml[:body] << "#{@tab*0}</object>" << "\n"
- end
- def table_structure(table='') #tables
- @@xml[:body] << %{#{@tab*0}<object>}
- @@xml[:body] << %{#{@tab*1}#{table}\n#{@tab*1}\n} # unless lv # main text, contents, body KEEP
- @@xml[:body] << "#{@tab*0}</object>" << "\n" #if para[@regx]
- @endnotes=[]
- end
- def tidywords(wordlist)
- wordlist.each do |x|
- x.gsub!(/&/,'&amp;') unless x =~/&\S+;/
- end
- end
- def xml_clean(para)
- para.gsub!(/#{Mx[:gl_o]}[1-9]:\S*?#{Mx[:gl_c]}/,'') #Danger, watch
- para
- end
- def markup
- data=[]
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- xml_sc(@md)
- @endnotes,@level,@cont,@copen,@xml_contents_close=[],[],[],[],[]
- @rcdc=false
- (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
- end
- data.each do |para|
- if para !~/^\s*(?:%+ |<:code>)/
- if @md.sem_tag and para =~/[:;]\{|\}[:;]/
- para=@trans.xml_semantic_tags(para)
- end
- if para =~/[:;]\{|\}[:;]/
- para=SiSU_Sem::Tags.new(para,@md).rm.all
- end
- end
- para=@trans.markup_light(para)
- @trans.char_enc.utf8(para) if @sys.locale =~/utf-?8/i #% utf8
- para.gsub!(/^@(\S+?):/,"#{Mx[:lv_o]}@\\1#{Mx[:lv_c]}")
- if para =~/\A#{Mx[:lv_o]}@(\S+?)#{Mx[:lv_c]}\s*(.+?)\Z/m # for headers
- d_meta=SiSU_TextUtils::HeaderScan.new(@md,para).meta
- if d_meta; xml_head(d_meta)
- end
- end
- para='' if para=~/#{Mx[:lv_o]}@\S+?#{Mx[:lv_c]}/
- if @rcdc==false \
- and (para =~/~metadata/ or para =~/^1~meta\s+Document Information/)
- @rcdc=true
- end
- if para !~/(^@\S+?:|^\s*$|<ENDNOTES>|<EOF>)/
- @sto=SiSU_text_parts::SplitTextObject.new(@md,para).lev_segname_para
- unless @rcdc
- format_scroll=SiSU_XML_Format::FormatScroll.new(@md,@sto.text) if @sto.format =~/i[1-9]|ordinary/
- case @sto.format
- when /^(1):(\S*)/
- xml_clean(para)
- xml_structure(para,$1,$2)
- para=@sto.lev_para_ocn.heading_body1
- when /^(2):(\S*)/
- xml_clean(para)
- xml_structure(para,$1,$2)
- para=@sto.lev_para_ocn.heading_body2
- when /^(3):(\S*)/
- xml_clean(para)
- xml_structure(para,$1,$2)
- para=@sto.lev_para_ocn.heading_body3
- when /^(4):(\S*)/ # work on see SplitTextObject
- xml_clean(para)
- xml_structure(para,$1,$2)
- para=@sto.lev_para_ocn.heading_body4
- when /^(5):(\S*)/
- xml_clean(para)
- xml_structure(para,$1,$2)
- para=@sto.lev_para_ocn.heading_body5
- when /^(6):(\S*)/
- xml_clean(para)
- xml_structure(para,$1,$2)
- para=@sto.lev_para_ocn.heading_body6
- else
- if para =~ /<:verse>/
- para=poem_structure(para)
- elsif para =~ /<:group>/
- para=group_structure(para)
- elsif para =~ /<:code>/
- para.gsub!(/</,'&lt;')
- para.gsub!(/>/,'&gt;')
- para=code_structure(para)
- elsif para =~/<!Th?.+/ # tables come as single block #work area 2005w13
- table=SiSU_Tables::TableXML.new(para)
- para=table.table_split
- para=table_structure(para)
- else xml_structure(para,nil,nil)
- end
- end
- if para =~/<a name="n\d+">/ \
- and para =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/ # -endnote
- para=''
- end
- if para =~/.*<:#>.*$/
- para=case para
- when /<:i1>/
- format_text=FormatTextObject.new(para,'')
- format_text.scr_inden_ocn_e_no_paranum
- when /<:i2>/
- format_text=FormatTextObject.new(para,'')
- format_text.scr_inden_ocn_e_no_paranum
- end
- end
- if para =~/<:center>/
- one,two=/(.*)<:center>(.*)/.match(para)[1,2]
- format_text=FormatTextObject.new(one,two)
- para=format_text.center
- end
- end
- para.gsub!(/<:\S+?>/,'')
- para.gsub!(/<!.+!>/,'') ## Clean Prepared Text #bugwatch reinstate
- para
- end
- para
- end
- 6.downto(4) do |x|
- y=x - 1; v=x - 3
- @@xml[:body] << "#{@tab*5}</content>\n#{@tab*y}</contents#{v}>\n" if @level[x]==true
- end
- 3.downto(1) do |x|
- y=x - 1
- @@xml[:body] << "#{@tab*y}</heading#{x}>\n" if @level[x]==true
- end
- end
- def pre
- rdf=SiSU_XML_Tags::RDF.new(@md)
- dir=SiSU_Env::InfoEnv.new
- @@xml[:head],@@xml[:body]=[],[]
- css=SiSU_Env::CSS_Select.new(@md).xml_sax
- encoding=if @sys.locale =~/utf-?8/i; '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
- else '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
- end
- @@xml[:open] =<<WOK
-#{encoding}
-<?xml-stylesheet type="text/css" href="../#{dir.path.style}/#{css}"?>
-#{rdf.comment_xml_sax}
-<document>
-WOK
- @@xml[:head] << "<head>\n"
- @@xml[:body] << "<body>\n"
- end
- def post
- @@xml[:head] << @@xml[:sc]
- @@xml[:head] << "</head>\n"
- @@xml[:body] << "</body>\n"
- @@xml[:close] = "</document>\n"
- end
- def publish
- content=[]
- data=@data
- content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
- content << @@xml[:owner_details] if @md.stmp =~/\w\w/
- content << @@xml[:tail] << @@xml[:close]
- Output.new(content.join,@md).xml
- @@xml={}
- end
- end
- class Output
- def initialize(data,md)
- @data,@md=data,md
- end
- def xml
- @sisu=[]
- @data.each do |para|
- para.gsub!(/<:\S+?>/,'')
- para.gsub!(/<!.+?!>/,'')
- para="#{para}\n" unless para.empty?
- @sisu << para
- end
- new_file_data=@sisu.join
- @sisu=new_file_data.scan(/.+/)
- SiSU_Env::FileOp.new(@md).mkdir
- filename_sxm=SiSU_Env::FileOp.new(@md,@md.fn[:sxs]).mkfile_pwd
- if filename_sxm.class==File
- @sisu.each {|para| filename_sxm.puts para}
- filename_sxm.close
- else puts 'file not created, is directory writable?'
- end
- end
- end
- class Tidy
- def initialize(md,dir)
- @md,@env=md,dir
- @prog=SiSU_Env::InfoProgram.new
- end
- def xml
- if @prog.tidy !=false #note values can be other than true
- if @md.opt.cmd =~/[VM]/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','Using XML Tidy','check document structure').colorize unless @md.opt.cmd =~/q/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'','','check document structure')
- tell.grey_open unless @md.opt.cmd =~/q/
- tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy =SiSU_Env::SystemCall.new("#{Dir.pwd}/#{@md.fn[:sxs]}",tidyfile)
- tidy.well_formed?
- tell.p_off unless @md.opt.cmd =~/q/
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/sysenv.rb b/lib/sisu/v3dv/sysenv.rb
deleted file mode 100644
index 4383a893..00000000
--- a/lib/sisu/v3dv/sysenv.rb
+++ /dev/null
@@ -1,5853 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: system environment, resource control and configuration details
-
-=end
-@@cX=nil
-@@current_document=Dir.pwd #nil #''
-@@lang_info=nil
-module SiSU_Env
- require_relative 'constants' # constants.rb
- require 'fileutils'
- include FileUtils::Verbose
- require 'singleton'
- @@noyaml=false
- class InfoDate
- require 'date'
- attr_accessor :dt,:t
- def initialize
- @dt,@t=Date.today.to_s,Time.now
- end
- def week
- w=@t.strftime('%W')
- "#{@t.year}w#{w}"
- end
- def month
- "#{@t.year}#{@t.month}"
- end
- def year
- @t.year
- end
- def weekonly
- @t.strftime('%W')
- end
- def monthonly
- @t.month
- end
- def year_static
- '2012'
- end
- end
- class InfoSystem
- require 'rbconfig'
- include Singleton
- @@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@rc,@@sisurc_path,@@ad=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'],Config::CONFIG['sysconfdir'] + '/sisu',Config::CONFIG['host'],Config::CONFIG['arch'],%x{ruby -v}.strip,Config::CONFIG['archdir'],Config::CONFIG['sitearchdir'],Config::CONFIG['bindir'],%x{locale charmap}.strip,nil,nil,{} # %x{ruby -v}.strip # Config::CONFIG['rb_ver']
- out=Config::CONFIG['localstatedir']
- etc=Config::CONFIG['sysconfdir'] + '/sisu'
- share=Config::CONFIG['datadir'] + '/sisu'
- data=Config::CONFIG['datadir'] + '/doc/sisu'
- m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @stub_pwd ||=@@pwd[m,1]
- prcss_dir='_sisu_processing_'
- prcss_dir_tmp_root="/tmp/#{prcss_dir}"
- prcss_dir_stub="#{prcss_dir}/#{@stub_pwd}"
- if @@user
- tmp_processing="#{prcss_dir_tmp_root}/#{@@user}/#{@stub_pwd}"
- tmp_processing_individual="#{prcss_dir_tmp_root}/#{@@user}/#{@stub_pwd}"
- else #error
- tmp_processing=tmp_processing_individual="/tmp/#{prcss_dir_stub}"
- end
- tmp_processing_home=if @@home \
- and File.writable?("#{@@home}/.")
- "#{@@home}/#{prcss_dir_stub}"
- else prcss_dir_stub
- end
- processing_pth=tmp_processing_individual
- processing_dir=prcss_dir
- processing_git="#{Dir.pwd}/#{Gt[:grotto]}"
- user=ENV['USER']
- port_pgsql=if defined? ENV['PGPORT'] \
- and not (ENV['PGPORT'].nil? \
- or ENV['PGPORT'].empty?) \
- and ENV['PGPORT']=~/^\d+$/
- ENV['PGPORT']
- else '5432'
- end
- IMAGES=:images
- SISU_ETC=:sisu_etc
- SISU_SHARE=:sisu_share
- SAMPLE_DATA_PATH=:sample_data_path
- IMAGE_STUB=:image_stub
- STYLESHEET_STUB=:stylesheet_stub
- IMAGE_LOCAL=:image_local
- WEBSERV_PATH=:webserv_path
- WEBSERV_MAN=:webserv_man
- WEBSERV_PHP=:webserv_php
- WEBSERV_CGI=:webserv_cgi
- WEBSERV_RSS=:webserv_rss
- WEBSERV_SQLITE=:webserv_sqlite
- OUTPUT_LOCAL=:output_local
- PROCESSING_DIR=:processing_dir
- 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_TUNE=:processing_tune
- PROCESSING_LATEX=:processing_latex
- PROCESSING_TEXINFO=:processing_texinfo
- PROCESSING_LOUT=:processing_lout
- PROCESSING_SQLITE=:processing_sqlite
- PROCESSING_POSTGRESQL=:processing_postgresql
- PROCESSING_ENCODING=:processing_encoding
- PROCESSING_GIT=:processing_git
- PAPERSIZE=:papersize
- #LANGUAGE=:language
- #LANGUAGE_CODE=:language_code
- MULTILINGUAL=:multilingual
- BUNDLE=:bundle
- CONCORD_MAX=:concord_max
- DIGEST=:digest
- WEBSERV_HOST_CGI=:webserv_host_cgi
- WEBSERV_PORT_CGI=:webserv_port_cgi
- POSTGRESQL_USER=:postgresql_user
- POSTGRESQL_PORT=:postgresql_port
- SQLITE_USER=:sqlite_user
- SQLITE_PATH=:sqlite_path
- SQLITE_PORT=:sqlite_port
- DEFAULT_DIR={
- IMAGES => '_sisu/image',
- SISU_ETC => etc,
- SISU_SHARE => share,
- SAMPLE_DATA_PATH => data,
- IMAGE_STUB => '_sisu/image',
- STYLESHEET_STUB => '_sisu/css',
- IMAGE_LOCAL => @@pwd + '/_sisu/image',
- WEBSERV_PATH => out + '/www',
- #WEBSERV_DIR => www, # uncomment for urls...
- #WEBSERV_IMAGE => out + '/www/_sisu/image',
- WEBSERV_MAN => out + '/www/man', #alter
- WEBSERV_PHP => out + '/www/php',
- WEBSERV_CGI => '/usr/lib/cgi-bin',
- WEBSERV_RSS => out + '/www/feed',
- WEBSERV_SQLITE => out + '/www/sqlite',
- OUTPUT_LOCAL => @@home + '/sisu_www',
- PROCESSING_DIR => processing_dir,
- PROCESSING_PATH => processing_pth,
- PROCESSING_DIR_TMP_ROOT => prcss_dir_tmp_root,
- PROCESSING_PATH_TMP_BASE => processing_pth,
- PROCESSING_DAL => 'dal',
- PROCESSING_TUNE => 'tune',
- PROCESSING_LATEX => 'tex',
- PROCESSING_TEXINFO => 'texinfo',
- PROCESSING_SQLITE => 'sqlite',
- PROCESSING_POSTGRESQL=> 'postgresql',
- PROCESSING_ENCODING => 'encoding',
- PROCESSING_GIT => processing_git,
- #TEXINFO_STUB => 'texinfo',
- PAPERSIZE => 'A4', #A4, US_letter, book_b5, book_a5, US_legal
- #LANGUAGE => 'English',
- #LANGUAGE_CODE => 'en', #change, unecessary duplication though currently used
- MULTILINGUAL => false,
- BUNDLE => false,
- CONCORD_MAX => 260000,
- DIGEST => 'sha256',
- WEBSERV_HOST_CGI => ' http://localhost',
- WEBSERV_PORT_CGI => 8081, #8111,8123,8081
- POSTGRESQL_USER => @@user, #'ralph', # change user !!!
- POSTGRESQL_PORT => port_pgsql,
- #POSGRESQL_LINKS_PATH => '',
- SQLITE_USER => @@user,
- SQLITE_PATH => @@user, #??
- SQLITE_PORT => '**',
- }
- @@default_dir=DEFAULT_DIR
- m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- stub_pwd=@@pwd[m,1]
- @@rc_path=[
- "#{@@pwd}/.sisu/#{SiSU_version_dir}",
- "#{@@pwd}/.sisu",
- "#{@@pwd}/_sisu/#{SiSU_version_dir}",
- "#{@@pwd}/_sisu",
- "#{@@home}/.sisu/#{SiSU_version_dir}",
- "#{@@home}/.sisu",
- "#{@@sisu_etc}/#{SiSU_version_dir}",
- ]
- @@yamlrc_path=@@rc_path
- #@@yamlrc_path=(stub_pwd !~/^sisupod$/) \
- #? (["#{@@pwd}/_sisu/#{SiSU_version_dir}","#{@@pwd}/_sisu","#{@@home}/.sisu/#{SiSU_version_dir}","#{@@home}/.sisu","#{@@sisu_etc}/#{SiSU_version_dir}"])
- #: ["#{@@home}/.sisu/#{SiSU_version_dir}","#{@@home}/.sisu","#{@@sisu_etc}/#{SiSU_version_dir}"] #security policy: prevent reading of sisurc.yml in sisupod
- @@ad_path=(stub_pwd !~/^sisupod$/) \
- ? ([
- "#{@@pwd}/.sisu/skin/yml",
- "#{@@pwd}/_sisu/skin/yml",
- "#{@@home}/.sisu/skin/yml",
- "#{@@sisu_etc}/skin/yml",
- ])
- : ["#{@@home}/.sisu",@@sisu_etc]
- attr_accessor :user,:home,:hostname,:pwd,:host,:arch,:rbver,:dir_arch,:dir_sitearch,:dir_bin,:locale,:webserv_path,:webserv_host_cgi,:webserv_port_cgi,:default_dir,:rc_path,:yamlrc_path,:ad_path
- def initialize
- @user,@home,@hostname,@pwd,@sisu_etc,@host,@arch,@rbver,@dir_arch,@dir_sitearch,@dir_bin,@locale,@default_dir,@rc_path,@yamlrc_path,@ad_path=\
- @@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@default_dir,@@rc_path,@@yamlrc_path,@@ad_path
- #note rbver is duplicated in InfoVersion
- end
- end
- class Load
- def initialize(prog,mandatory=false)
- @prog,@mandatory=prog,mandatory
- end
- def prog
- load_prog=false
- pp=''
- $:.each do |reqpath|
- if FileTest.exist?("#{reqpath}/#{@prog}.rb")
- load_prog=true
- break
- end
- end
- if load_prog \
- and @prog=~/dbi/
- require 'dbi' #revisit
- end
- if load_prog
- require @prog
- else
- @mandatory \
- ? (SiSU_Screen::Ansi.new(@cmd,"module required: #{@prog}").warn)
- : (SiSU_Screen::Ansi.new(@cmd,"#{@prog} load requested").warn)
- end
- load_prog
- end
- def prog?
- load_prog=false
- $:.each do |reqpath|
- if FileTest.exist?("#{reqpath}/#{@prog}.rb"); load_prog=true
- break
- end
- end
- load_prog
- end
- end
- class GetInit < InfoSystem
- include Singleton
- @@noyaml=false
- @@rc,@@sisurc_path,@@vz,@@tx=nil,nil,nil,nil
- @@ad={ promo: nil, promo_list: nil, flag_promo: false }
- attr_accessor :yaml
- def initialize
- super()
- end
- def skin
- @@vz ||=SiSU_Viz::Skin.new
- end
- def tex
- @@tx ||=SiSU_Viz::TeX.new
- end
- def sisu_yaml
- def rc
- unless @@rc
- @yamlrc_path.each do |v|
- if @@noyaml \
- or FileTest.exist?("#{v}/noyaml")
- puts "WARNING - YAML loading switched off, to enable delete the file:\n\t#{v}/noyaml\n\n" unless @@noyaml
- @@noyaml=true
- break
- else
- f='sisurc.yml'
- if FileTest.exist?("#{v}/#{f}")
- require 'yaml'
- @@sisurc_path="#{v}/#{f}"
- @@rc=YAML::load(File::open(@@sisurc_path))
- break
- end
- unless @@rc
- f='sisurc.yaml'
- if FileTest.exist?("#{v}/#{f}")
- require 'yaml'
- @@sisurc_path="#{v}/#{f}"
- @@rc=YAML::load(File::open(@@sisurc_path))
- break
- end
- end
- end
- end
- end
- @@rc
- end
- def rc_path
- rc
- @@sisurc_path
- end
- self
- end
- def ads #WORK AREA
- tell_no_yaml='WARNING - YAML loading switched off, to enable delete the file:'
- @ad_path.each do |v|
- if @@noyaml \
- or FileTest.exist?("#{v}/noyaml")
- puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml
- @@noyaml=true
- break
- else
- if FileTest.exist?("#{v}/list.yml")
- unless @@ad[:promo_list]
- require 'yaml'
- @@ad[:promo_list] ||= YAML::load(File::open("#{v}/list.yml"))
- end
- @@ad[:flag_promo]=true
- break
- end
- @@ad[:flag_promo]=false
- end
- end
- @ad_path.each do |v|
- if @@noyaml \
- or FileTest.exist?("#{v}/noyaml")
- puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml
- @@noyaml=true
- break
- else
- if FileTest.exist?("#{v}/promo.yml")
- unless @@ad[:promo]
- require 'yaml'
- @@ad[:promo] ||= YAML::load(File::open("#{v}/promo.yml"))
- end
- @@ad[:flag_promo]=true
- break
- end
- @@ad[:flag_promo]=false
- end
- end
- @@ad
- end
- end
- class EnvCall
- @@rc,@@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=nil,nil,nil,nil,nil,nil,nil
- @@ad={}
- attr_accessor :rc,:fnn,:fnb,:fnt,:fnv,:fnz,:ad
- def initialize(fns='')
- super()
- @fns=fns
- @sys=InfoSystem.instance
- @rc=GetInit.instance.sisu_yaml.rc
- @ad=GetInit.instance.ads
- if @fns \
- and @fns != '' \
- and @fns !=@@fns
- @@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=@fns,nil,nil,nil,nil,nil
- end
- if @fns \
- and @fns != '' #watch
- m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/
- @@fnn ||=@fns[m,1]
- @@fnb ||=@fns[m,2]
- @@fnt ||=@fns[m,3]
- @@flv ||=document_language_versions_found[:f]
- unless @@fns =~/\S+?\.txz/
- @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; @@fnb + '.ssm.txz'
- elsif @@fnb; @@fnb + '.sst.txz'
- else '' # e.g. termsheet
- end
- end
- end
- @fnn,@fnb,@fnt,@flv,@fnz=@@fnn,@@fnb,@@fnt,@@flv,@@fnz
- end
- def output_dir_structure
- def by?
- output_structure=:filename #set default output structure
- output_structure=if defined? @rc['output_dir_structure_by']
- output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
- or ((defined? @rc['output_structure']['dump']) \
- && @rc['output_structure']['dump'] ==true)
- :dump
- elsif (@rc['output_dir_structure_by'] =~/redirect/) \
- or ((defined? @rc['output_structure']['redirect']) \
- && @rc['output_structure']['redirect'] ==true)
- :redirect
- elsif (@rc['output_dir_structure_by'] =~/language/) \
- or ((defined? @rc['output_structure']['by_language']) \
- && @rc['output_structure']['by_language'] ==true)
- :language
- elsif (@rc['output_dir_structure_by'] =~/filetype/) \
- or ((defined? @rc['output_structure']['by_filetype']) \
- && @rc['output_structure']['by_filetype'] ==true)
- :filetype
- elsif (@rc['output_dir_structure_by'] =~/filename/) \
- or ((defined? @rc['output_structure']['by_filename']) \
- && @rc['output_structure']['by_filename'] ==true)
- :filename
- else #recheck current default
- :language
- end
- end
- end
- def dump?
- ((by?) ==:dump) \
- ? true
- : false
- end
- def redirect?
- ((by?) ==:redirect) \
- ? true
- : false
- end
- def by_language_code?
- ((by?) ==:language) \
- ? true
- : false
- end
- def by_filetype?
- ((by?) ==:filetype) \
- ? true
- : false
- end
- def by_filename?
- ((by?) ==:filename) \
- ? true
- : false
- end
- def multilingual?
- by_language_code?
- end
- self
- end
- def document_language_versions_found #REVISIT
- @fn={}
- filename=(@fns =~/\.ssm\.sst$/) \
- ? @fns.gsub(/\.ssm\.sst$/,'.ssm')
- : @fns
- unless (filename.nil? \
- or filename.empty?)
- if output_dir_structure.by_language_code?
- m=/((.+?)(?:\~\w{2,3})?)\.(sst|ssm)$/
- @fn[:b],@fn[:m],@fn[:t]=filename[m,1],filename[m,2],filename[m,3]
- else m=/(.+?)\.(sst|ssm)$/
- @fn[:b]=@fn[:m]=filename[m,1]
- @fn[:t]=filename[m,2]
- end
- end
- lng_base=SiSU_Env::InfoEnv.new.language_default_set
- lang=SiSU_Env::StandardiseLanguage.new
- langs=lang.codes
- x=[]
- if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}")
- n=@fn[:m].gsub(/^.+?\//,'')
- n =n + '.' + @fn[:t]
- x << { f: "#{@fn[:m]}.#{@fn[:t]}", l: lng_base, n: n }
- end
- #x << { f: "#{@fns}", l: lng_base }
- langs.each do |l|
- lng=SiSU_Env::StandardiseLanguage.new(l)
- if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
- x << { f: "#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
- elsif FileTest.file?("#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
- x << { f: "#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
- end
- if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
- if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
- elsif FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
- end
- end
- if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
- if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
- elsif FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
- end
- end
- end
- @fn[:f]=x
- @fn
- end
- def published_manifests?(output_base)
- ob=output_base
- @fn={}
- @m=[]
- unless (@fns.nil? \
- or @fns.empty?)
- if output_dir_structure.by_language_code?
- m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst$)/
- @fn[:b],@fn[:m],@fn[:t]=@fns[m,1],@fns[m,2],@fns[m,3]
- else m=/(.+?)\.((?:-|ssm\.)?sst$)/
- @fn[:b]=@fn[:m]=@fns[m,1]
- @fn[:t]=@fns[m,2]
- end
- end
- lang=SiSU_Env::StandardiseLanguage.new
- langs=lang.codes
- x=[]
- if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}"); x << "#{@fn[:m]}.#{@fn[:t]}"
- end
- dir=SiSU_Env::InfoEnv.new(@fns)
- @m << { m: 'sisu_manifest.html', l: 'English' } #fix later, default language
- langs.each do |l|
- lng=SiSU_Env::StandardiseLanguage.new(l)
- fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"
- fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
- if FileTest.file?(fns_c)
- fn_set_lang=SiSU_Env::StandardiseLanguage.new.file_to_language(fns_c) #reconsider file_to_language
- lng=fn_set_lang[:n]
- fn=SiSU_Env::EnvCall.new(fns_c).lang(fn_set_lang[:c])
- @m << { m: fn[:manifest], l: lng }
- elsif FileTest.file?(fns_l)
- fn_set_lang=SiSU_Env::StandardiseLanguage.new.file_to_language(fns_l) #reconsider file_to_language
- @fnl=dir.i18n.lang_filename(fn_set_lang[:c])
- fn=SiSU_Env::EnvCall.new(fns_l).lang(fn_set_lang[:c])
- @m << { m: fn[:manifest], l: lng }
- end
- end
- @m=@m.uniq
- end
- def filename(code,name,suffix)
- #d=SiSU_Env::InfoEnv.new(@fns)
- #fnl=d.i18n.lang_filename(code)
- "#{name}#{suffix}"
- #if code
- # "#{fnl[:pre]}#{name}#{fnl[:mid]}#{suffix}#{fnl[:post]}"
- #else "#{name}#{suffix}"
- #end
- end
- def lang(code)
- @fn={
- html: filename(code,'','.html'),
- book_index: filename(code,'book_index','.html'),
- concordance: filename(code,'concordance','.html'),
- sax: filename(code,'sax','.xml'),
- dom: filename(code,'dom','.xml'),
- docbook: filename(code,'docbook','.xml'),
- xhtml: filename(code,'scroll','.xhtml'),
- pdf_l: filename(code,'','.pdf'),
- pdf_p: filename(code,'','.pdf'),
- pdf_l_a4: filename(code,"a4",'.pdf'),
- pdf_p_a4: filename(code,"a4",'.pdf'),
- pdf_l_a5: filename(code,"a5",'.pdf'),
- pdf_p_a5: filename(code,"a5",'.pdf'),
- pdf_l_b5: filename(code,"b5",'.pdf'),
- pdf_p_b5: filename(code,"b5",'.pdf'),
- pdf_l_letter: filename(code,"letter",'.pdf'),
- pdf_p_letter: filename(code,"letter",'.pdf'),
- pdf_l_legal: filename(code,"legal",'.pdf'),
- pdf_p_legal: filename(code,"legal",'.pdf'),
- toc: filename(code,'toc','.html'),
- doc: filename(code,fnb,'.html'),
- index: filename(code,'index','.html'),
- po: filename(code,@fns,'.po'),
- pot: filename(code,@fns,'.pot'),
- odf: filename(code,'','.odt'),
- epub: filename(code,'','.epub'),
- plain: filename(code,'','.txt'),
- manpage: filename(code,'','.1'), #fix, section number
- wiki: filename(code,'wiki','.txt'),
- digest: filename(code,'digest','.txt'),
- metadata: filename(code,'metadata','.html'), #chk
- manifest: filename(code,'manifest','.html'),
- oai_pmh: filename(code,'oai_pmh','.xml'),
- sitemap: filename(code,'sitemap','.xml'),
- sitemap_touch: filename(code,"sitemap_#{fnb}",'.xml'),
- sxs: filename(code,fnb,'.sxs.xml'),
- sxd: filename(code,fnb,'.sxd.xml'),
- sxn: filename(code,fnb,'.sxn.xml'),
- sisupod: filename(nil,@fnz,''),
- book_idx_html: filename(code,'book_index','.html'),
- book_idx_epub: filename(code,'book_index','.xhtml'),
- epub_concord: filename(code,'concordance','.xhtml'),
- }
- @fn
- end
- end
- class SystemCall
- @@locale_flag=false
- def initialize(input='',output='',cmd='')
- @input,@output,@cmd=input,output,cmd
- @prog=SiSU_Env::InfoProgram.new
- @sys=InfoSystem.instance
- end
- def program_found?(program)
- found=`which #{program}` #`whereis #{program}`
- (found =~/bin\/#{program}\b/) ? true : false
- end
- def locale #locales utf8 or other
- unless @@locale_flag
- @@locale_flag=true
- end
- @sys.locale
- end
- def file_encoding(filename,cmd='') #file encoding
- program='file'
- fnsp=SiSU_Env::InfoEnv.new(filename).source_file_with_path
- if program_found?(program)
- encoding=%x{file -L #{fnsp}}.strip
- encoding=encoding.gsub(/#{fnsp}:(\s+|$)/,'')
- encoding=if encoding \
- and not encoding.empty?
- encoding
- else 'UTF-8 assumed, encoding undetermined'
- end
- puts encoding if cmd =~/[VM]/
- encoding
- else encoding='UTF-8 assumed, file encoding check program unavailable'
- end
- end
- def wc #word count
- program='wc'
- if program_found?(program) \
- and locale !~/utf-?8/i
- true
- else
- program_ref="(not available)" unless program_found?(program)
- program_ref="(UTF-8)" if locale =~/utf-?8/i
- false
- end
- end
- def rcs #rcs for document markup data
- program='rcs'
- program_ref="\n\t\tdocument version information requested"
- if program_found?(program); true
- else puts "\tWARN: #{program} is not installed #{program_ref}" #if @cmd =~/v/
- false
- end
- end
- def cvs #cvs for document markup data
- program='cvs'
- program_ref="\n\t\tdocument version information requested"
- if program_found?(program); true
- else puts "\tWARN: #{program} is not installed #{program_ref}" #if @cmd =~/v/
- false
- end
- end
- def openssl #openssl for digests
- program='openssl'
- program_ref="\n\t\tused to generate requested source document identification digest"
- if program_found?(program); true
- else puts "\tWARN: #{program} is not installed #{program_ref}" #if @cmd =~/v/
- false
- end
- end
- def md5(filename) #md5 dgst
- program='openssl'
- program_ref="\n\t\tmd5 digest requested"
- if program_found?(program)
- pwd=Dir.pwd
- Dir.chdir(File.dirname(filename))
- dgst=%x{openssl dgst -md5 #{File.basename(filename)}}.strip #use file name without file path
- Dir.chdir(pwd)
- dgst.scan(/\S+/)
- else puts "\tWARN: #{program} is not installed #{program_ref}" #if @cmd =~/v/
- false
- end
- end
- def sha256(filename) #sha dgst
- program='openssl'
- program_ref="\n\t\tsha digest requested"
- if program_found?(program)
- pwd=Dir.pwd
- Dir.chdir(File.dirname(filename))
- dgst=%x{openssl dgst -sha256 #{File.basename(filename)}}.strip #use file name without file path
- Dir.chdir(pwd)
- dgst.scan(/\S+/)
- else puts "\tWARN: #{program} is not installed #{program_ref}" #if @cmd =~/v/
- false
- end
- end
- def psql #psql
- program='psql'
- program_ref="\n\t\tpsql requested"
- if program_found?(program); true
- else puts "\tWARN: #{program} is not installed #{program_ref}" #if @cmd =~/v/
- false
- end
- end
- def create_pg_db(dbname_stub=nil) #createdb
- unless dbname_stub
- @pwd ||=Dir.pwd
- m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- dbname_stub=@pwd[m,1]
- end
- program='createdb'
- db_name="#{Db[:name_prefix]}#{dbname_stub}"
- program_ref="\n\t\tcreatedb dbname #{db_name} #for postgresql database creation"
- (program_found?(program)) \
- ? system("#{program} #{dbname_name}")
- : (puts "\tWARN: #{program} is not available #{program_ref}")
- end
- def relaxng(cmd='') #trang - convert between different schema languages for XML
- program='trang'
- program_ref="\n\t\tsee <http://www.thaiopensource.com/relaxng/trang.html>"
- (program_found?(program)) \
- ? system("#{program} #{@input} #{@output}")
- : (puts "\tWARN: #{program} is not installed #{program_ref}" if cmd =~/V/)
- end
- def qrencode #qrcode - for generating QR code
- program='qrencode'
- program_ref="\n\t\tsee <http://megaui.net/fukuchi/works/qrencode/index.en.html>"
- found=(program_found?(program)) ? true : false
- found \
- ? (system(%{
- echo "#{@input}" | #{program} -s 3 -o #{@output}
- }))
- : (puts "\tWARN: #{program} is not installed #{program_ref}" if cmd =~/V/)
- #found
- end
- def imagemagick #imagemagick is a image manipulation program
- program='identify'
- program_ref="\n\t\tsee <http://www.imagemagick.org/>"
- found=(program_found?(program)) ? true : false
- puts "\tWARN: #{program} is not installed #{program_ref}" unless found
- found
- end
- def graphicksmagick #graphicsmagick is a image manipulation program
- program='gm'
- program_ref="\n\t\tsee <http://www.graphicsmagick.org/>"
- found=(program_found?(program)) ? true : false
- puts "\tWARN: #{program} is not installed #{program_ref}" unless found
- found
- end
- def well_formed? #tidy - check for well formed xml xhtml etc.
- program=@prog.tidy
- program_ref="\n\t\tsee <http://tidy.sourceforge.net/>"
- (program_found?(program)) \
- ? system("#{@prog.tidy} -xml #{@input} > #{@output}")
- : (puts "\tWARN: #{program} is not installed #{program_ref}")
- end
- def tex2pdf_engine
- prog=['xetex','xelatex','pdflatex','pdfetex','pdftex']
- @pdfetex_flag=false
- @cmd ||=''
- @texpdf=nil
- prog.each do |program|
- if program_found?(program)
- @texpdf=program if program =~/xetex|xelatex|pdftex|pdflatex/
- @pdfetex_flag=true
- break
- end
- end
- if @pdfetex_flag==false
- @texpdf=prog.join(', ')
- end
- @texpdf
- end
- def latex2pdf(md,papersize='a4') #convert from latex to pdf
- tell=((@cmd =~/[MVv]/) ? '' : '> /dev/null' )
- mode='batchmode' #mode='nonstopmode'
- program_ref="\n\t\tSee http://www.tug.org/applications/pdftex/\n\t\tOn Debian this is is included in tetex-extra"
- texpdf=tex2pdf_engine
- if @pdfetex_flag;
- texpdf_cmd=case texpdf
- when /xetex/
- @input =~/landscape\.tex$/ \
- ? %{#{texpdf} -interaction=#{mode} -fmt=xelatex -papersize="#{papersize} -l" #{@input} #{tell}\n}
- : %{#{texpdf} -interaction=#{mode} -fmt=xelatex -papersize="#{papersize}" #{@input} #{tell}\n}
- when /xelatex/
- @input =~/landscape\.tex$/ \
- ? %{#{texpdf} -interaction=#{mode} -papersize="#{papersize} -l" #{@input} #{tell}\n}
- : %{#{texpdf} -interaction=#{mode} -papersize="#{papersize}" #{@input} #{tell}\n}
- when /pdftex/; "#{texpdf} -interaction=#{mode} -fmt=pdflatex #{@input} #{tell}\n"
- when /pdflatex/; "#{texpdf} -interaction=#{mode} #{@input} #{tell}\n"
- end
- system(texpdf_cmd)
- else puts "\tWARN: none of the following programs are installed: #{program[0]}, #{program[1]}, #{program[2]} is installed. #{program_ref}"
- end
- end
- def makeinfo #texinfo
- program='makeinfo'
- options='' #'--force' #''
- program_ref="\n\t\tsee http://www.gnu.org/software/texinfo/"
- (program_found?(program)) \
- ? system("#{program} #{options} #{@input}\n")
- : (puts "\tWARN: #{program} is not installed #{program_ref}")
- end
- def scp
- program='scp'
- puts "scp -Cr #{@input} #{@output}" if @cmd =~/[vVM]/
- puts "scp disabled"
- #(program_found?(program)) \
- #? system("scp -Cr #{@input} #{@output}") \
- #: (puts "\tWARN: #{program} not found" )
- end
- def rsync(action='',chdir=nil)
- program='rsync'
- if program_found?(program)
- vb=if @cmd =~/q/; 'q'
- elsif @cmd =~/v/; 'v'
- else ''
- end
- msg=''
- msg=" && echo 'OK: #{@input} -> #{@output}'" unless @cmd =~/q/
- rsync_cmd="rsync -az#{vb} #{action} #{@input} #{@output}"
- puts rsync_cmd if @cmd =~/[vVM]/
- dir_change,dir_return='',''
- if chdir \
- && chdir != Dir.pwd
- dir_change=Dir.chdir(chdir)
- dir_return=Dir.pwd
- end
- dir_change
- system("
- #{rsync_cmd} #{msg}
- ")
- dir_return
- else puts "\tWARN: #{program} not found"
- end
- end
- def rm
- if @cmd =~/^-Z[mMvVq]*$/; FileUtils::rm_rf(@input)
- elsif @cmd =~/V/; FileUtils::rm(@input)
- elsif @cmd !~/q/; FileUtils::rm(@input)
- elsif @cmd =~/q/; FileUtils::rm(@input)
- else puts "\tWARN: operation ignored"
- end
- end
- end
- class StandardiseLanguage
- require_relative 'i18n' # i18n.rb
- def initialize(l='')
- @language=(l.nil? || l.empty?) \
- ? SiSU_Env::InfoEnv.new.language_default_set
- : l
- @r=%{(?:#{Px[:lng_lst].join('|')})}
- @lang_info=SiSU_i18n::Languages.new
- end
- def lang_lst # from i18n
- @@lang_info ||=@lang_info.language.list
- end
- def lang(l='') # from i18n
- x=if l =~/^#{@r}$/
- @lang_info.language.list[l]
- elsif @language =~/^#{@r}$/
- @lang_info.language.list[@language]
- else nil
- end
- end
- def language
- lng={}
- case @language
- when /^am$|Amharic/i; d,c,l=false,lang_lst['am'][:c], lang_lst['am'][:n]
- when /^bg$|Bulgarian/i; d,c,l=false,lang_lst['bg'][:c], lang_lst['bg'][:n]
- when /^bn$|Bengali/i; d,c,l=false,lang_lst['bn'][:c], lang_lst['bn'][:n]
- when /^br$|Breton/i; d,c,l=false,lang_lst['br'][:c], lang_lst['br'][:n]
- when /^ca$|Catalan/i; d,c,l=false,lang_lst['ca'][:c], lang_lst['ca'][:n]
- when /^cs$|Czech/i; d,c,l=false,lang_lst['cs'][:c], lang_lst['cs'][:n]
- when /^cy$|Welsh/i; d,c,l=false,lang_lst['cy'][:c], lang_lst['cy'][:n]
- when /^da$|Danish|Dansk/i; d,c,l=false,lang_lst['da'][:c], lang_lst['da'][:n]
- when /^de$|German/i; d,c,l=false,lang_lst['de'][:c], lang_lst['de'][:n]
- when /^el$|Greek/i; d,c,l=false,lang_lst['el'][:c], lang_lst['el'][:n]
- when /^en$|English/i; d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
- when /^eo$|Esperanto/i; d,c,l=false,lang_lst['eo'][:c], lang_lst['eo'][:n]
- when /^es$|Spanish|Espanol/i; d,c,l=false,lang_lst['es'][:c], lang_lst['es'][:n]
- when /^et$|Estonian/i; d,c,l=false,lang_lst['et'][:c], lang_lst['et'][:n]
- when /^eu$|Basque/i; d,c,l=false,lang_lst['eu'][:c], lang_lst['eu'][:n]
- when /^fi$|Finnish|Finsk|Suomi/i; d,c,l=false,lang_lst['fi'][:c], lang_lst['fi'][:n]
- when /^fr$|French|Francais/i; d,c,l=false,lang_lst['fr'][:c], lang_lst['fr'][:n]
- when /^ga$|Irish/i; d,c,l=false,lang_lst['ga'][:c], lang_lst['ga'][:n]
- when /^gl$|Galician/i; d,c,l=false,lang_lst['gl'][:c], lang_lst['gl'][:n]
- when /^he$|Hebrew/i; d,c,l=false,lang_lst['he'][:c], lang_lst['he'][:n]
- when /^hi$|Hindi/i; d,c,l=false,lang_lst['hi'][:c], lang_lst['hi'][:n]
- when /^hr$|Croatian/i; d,c,l=false,lang_lst['hr'][:c], lang_lst['hr'][:n]
- when /^hy$|Armenian/i; d,c,l=false,lang_lst['hy'][:c], lang_lst['hy'][:n]
- when /^ia$|Interlingua/i; d,c,l=false,lang_lst['ia'][:c], lang_lst['ia'][:n]
- when /^is$|Icelandic/i; d,c,l=false,lang_lst['is'][:c], lang_lst['is'][:n]
- when /^it$|Italian/i; d,c,l=false,lang_lst['it'][:c], lang_lst['it'][:n]
- when /^la$|Latin/i; d,c,l=false,lang_lst['la'][:c], lang_lst['la'][:n]
- when /^lo$|Lao/i; d,c,l=false,lang_lst['lo'][:c], lang_lst['lo'][:n]
- when /^lt$|Lithuanian/i; d,c,l=false,lang_lst['lt'][:c], lang_lst['lt'][:n]
- when /^lv$|Latvian/i; d,c,l=false,lang_lst['lv'][:c], lang_lst['lv'][:n]
- when /^ml$|Malayalam/i; d,c,l=false,lang_lst['ml'][:c], lang_lst['ml'][:n]
- when /^mr$|Marathi/i; d,c,l=false,lang_lst['mr'][:c], lang_lst['mr'][:n]
- when /^nl$|Dutch/i; d,c,l=false,lang_lst['nl'][:c], lang_lst['nl'][:n]
- when /^no$|Norwegian|Norsk/i; d,c,l=false,lang_lst['no'][:c], lang_lst['no'][:n]
- when /^nn$|Norwegian Nynorsk/i; d,c,l=false,lang_lst['nn'][:c], lang_lst['nn'][:n]
- when /^oc$|Occitan/i; d,c,l=false,lang_lst['oc'][:c], lang_lst['oc'][:n]
- when /^pl$|Polish/i; d,c,l=false,lang_lst['pl'][:c], lang_lst['pl'][:n]
- when /^pt$|Portuguese/i; d,c,l=false,lang_lst['pt'][:c], lang_lst['pt'][:n]
- when /^pt_BR$|Portuguese Brazil/i; d,c,l=false,lang_lst['pt_BR'][:c], lang_lst['pt_BR'][:n]
- when /^ro$|Romanian/i; d,c,l=false,lang_lst['ro'][:c], lang_lst['ro'][:n]
- when /^ru$|Russian/i; d,c,l=false,lang_lst['ru'][:c], lang_lst['ru'][:n]
- when /^sa$|Sanskrit/i; d,c,l=false,lang_lst['sa'][:c], lang_lst['sa'][:n]
- when /^se$|Sami/i; d,c,l=false,lang_lst['se'][:c], lang_lst['se'][:n]
- when /^sk$|Slovak/i; d,c,l=false,lang_lst['sk'][:c], lang_lst['sk'][:n]
- when /^sl$|Slovenian/i; d,c,l=false,lang_lst['sl'][:c], lang_lst['sl'][:n]
- when /^sq$|Albanian/i; d,c,l=false,lang_lst['sq'][:c], lang_lst['sq'][:n]
- when /^sr$|Serbian/i; d,c,l=false,lang_lst['sr'][:c], lang_lst['sr'][:n]
- when /^sv$|Swedish|Svensk/i; d,c,l=false,lang_lst['sv'][:c], lang_lst['sv'][:n]
- when /^ta$|Tamil/i; d,c,l=false,lang_lst['ta'][:c], lang_lst['ta'][:n]
- when /^te$|Telugu/i; d,c,l=false,lang_lst['te'][:c], lang_lst['te'][:n]
- when /^th$|Thai/i; d,c,l=false,lang_lst['th'][:c], lang_lst['th'][:n]
- when /^tk$|Turkmen/i; d,c,l=false,lang_lst['tk'][:c], lang_lst['tk'][:n]
- when /^tr$|Turkish/i; d,c,l=false,lang_lst['tr'][:c], lang_lst['tr'][:n]
- when /^uk$|Ukranian/i; d,c,l=false,lang_lst['uk'][:c], lang_lst['uk'][:n]
- when /^ur$|Urdu/i; d,c,l=false,lang_lst['ur'][:c], lang_lst['ur'][:n]
- when /^us|American$|/i; d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
- when /^vi$|Vietnamese/i; d,c,l=false,lang_lst['vi'][:c], lang_lst['vi'][:n]
- else d,c,l=true, lang_lst['en'][:c], lang_lst['en'][:n] #default
- end
- lng[:d],lng[:c],lng[:n]=d,c,l
- lng
- end
- def name
- language[:n].downcase
- end
- def title
- language[:n]
- end
- def code
- language[:c]
- end
- def tex_name
- language[:xlp]
- end
- def file_to_language(file) # used, fix and remove
- m=/.+?\~(\w{2,3})\.(?:-|ssm\.)?sst$/
- @language=if file =~m ; file[m,1]
- else ''
- end
- language
- end
- def codes
- # Language List po4a
- # <http://www.debian.org/international/l10n/po/>
- # Px[:lng_lst]=%w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi]
- # see polyglossia for subset
- # <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf>
- # also note ISO_639-2
- # <http://en.wikipedia.org/wiki/ISO_639-2>
- # <http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes>
- Px[:lng_lst] # constants.rb
- end
- end
- class InfoEnv < EnvCall
- require 'pathname'
- require 'fileutils'
- include FileUtils
- attr_accessor :filename,:sys,:home,:hostname,:user,:env,:rc,:www,:fnb,:fnn,:fnt,:flv,:webserv_path,:stub_pwd,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir
- @@image_flag,@@local_image=true,true #warning on @@image_flag
- @@fb=@@man_path=nil,nil
- def initialize(fns='',md=nil)
- super() #you may not want to re-execute this static info so frequently!
- @fns,@md=fns,md
- @env=SiSU_Env::EnvCall.new(fns) if fns
- fnb=if @md \
- and defined? @md.fnb
- @md.fnb
- elsif defined? @env.fnb \
- and @env.fnb
- @env.fnb
- elsif not @fns.nil? \
- and not @fns.empty?
- m=/(.+)?\.(?:(?:-|ssm\.)?sst|ssm)$/m
- @fns[m,1] if not @fns.empty?
- end
- if fnb; @@fb ||=fnb
- end
- @sys=InfoSystem.instance
- @fnb ||=@@fb #clean up this... used primarily for zap which is not passed normal parameters
- @fixed_websev_root='' # @home
- @pwd=@@pwd=Dir.pwd
- m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @stub_pwd=@@pwd[m,1]
- @stub_txt= @stub_pwd + '/txt'
- @stub_html= @stub_pwd + '/html'
- @stub_epub= @stub_pwd + '/epub'
- @stub_odt= @stub_pwd + '/odt'
- @stub_pdf= @stub_pwd + '/pdf'
- @stub_manifest=@stub_pwd + '/manifest'
- @stub_odt= @stub_pwd + '/odt'
- @stub_src= @stub_pwd + '/src'
- @stub_pod= @stub_pwd + '/pod'
- @stub_md= @stub_pwd + '/sisu_site_metadata'
- pt=Pathname.new(Dir.pwd)
- stub=if output_dir_structure.by_language_code?
- r=Px[:lng_lst].join('|')
- stub=if Dir.pwd =~/.+?\/([^\/]+)(?:\/(#{r})$)/
- lng=pt.split[-1].to_s
- lng_part='/' + lng
- base=pt.split[0].split[-1].to_s
- else
- lng_part='/' + language_default_set
- base=pt.split[-1].to_s
- end
- base + lng_part
- elsif output_dir_structure.by_filetype?
- pt.split[-1].to_s
- elsif output_dir_structure.by_filename?
- ''
- end
- @stub_set_manifest=stub + '/manifest'
- end
- def user
- @sys.user
- end
- def hostname
- @sys.hostname
- end
- def host
- @sys.host
- end
- def arch
- @sys.arch
- end
- def rbver
- @sys.rbver
- end
- def locale
- @sys.locale
- end
- def concord_max
- ((defined? @rc['processing']['concord_max']) \
- && @rc['processing']['concord_max']) \
- ? @rc['processing']['concord_max']
- : (defaults[:concord_max])
- end
- def language_default_set #set directory (default) language
- ((defined? @rc['default']['language']) \
- && @rc['default']['language'] =~/\S+/) \
- ? @rc['default']['language']
- : 'en'
- end
- def markup_emphasis
- if defined? @rc['default']['emphasis'] \
- and @rc['default']['emphasis'] \
- and @rc['default']['emphasis']=~/bold/
- 'bold'
- elsif defined? @rc['default']['emphasis'] \
- and @rc['default']['emphasis'] \
- and @rc['default']['emphasis']=~/italic/
- 'italics'
- elsif defined? @rc['default']['emphasis'] \
- and @rc['default']['emphasis'] \
- and @rc['default']['emphasis']=~/underscore/
- 'underscore'
- else 'bold'
- end
- end
- def plaintext_wrap
- ((defined? @rc['default']['text_wrap']) \
- && (@rc['default']['text_wrap']) \
- && (@rc['default']['text_wrap'].to_s=~/\d\d+/) \
- && (@rc['default']['text_wrap'].to_i > 19) \
- && (@rc['default']['text_wrap'].to_i < 201)) \
- ? @rc['default']['text_wrap'].to_i
- : 78
- end
- def current_document
- @@current_document||=Dir.pwd
- @@current_document
- end
- def stub_pwd #200412
- @stub_pwd
- end
- def stub_md_harvest #watch
- @stub_set_manifest
- end
- def stub_src
- @stub_src
- end
- def stub_pod
- @stub_pod
- end
- def sisupod_v3(opt)
- #processing_path.processing
- # sisupod
- # doc/
- # manifest.txt
- # en/content.sst [file content]
- # fr/content.sst
- # _sisu
- # skin/
- # doc [relevant skin if any other than default]
- # image@ (ln -s ../../image)
- # audio@ (ln -s ../../audio)
- # video@ (ln -s ../../video)
- # image/ [all images for specific document gathered here]
- # audio/
- # video/
- spp="#{processing_path.processing}/sisupod"
- sppc="#{spp}/doc/_sisu"
- lng_dirs=[]
- if FileTest.directory?(spp) \
- or FileTest.file?(spp)
- FileUtils::rm_rf(spp)
- end
- paths=[]
- flv=SiSU_Env::EnvCall.new(opt.fns).document_language_versions_found
- flv[:f].each {|l| lng_dirs << l[:l] }
- lng_dirs.uniq.each do |lng|
- paths << "#{spp}/doc/#{lng}"
- end
- paths \
- << "#{spp}/image" \
- << "#{sppc}/skin/doc" \
- << "#{sppc}/skin/dir" \
- << "#{sppc}/skin/site"
- #<< "#{spp}/audio" \
- #<< "#{spp}/video" \
- paths.each do |x|
- unless FileTest.directory?(x)
- FileUtils::mkdir_p(x)
- end
- end
- if FileTest.directory?(sppc)
- pwd=Dir.pwd
- Dir.chdir(sppc)
- FileUtils::ln_s('../../image', 'image')
- #FileUtils::ln_s('../../audio', 'audio')
- #FileUtils::ln_s('../../video', 'video')
- Dir.chdir(pwd)
- end
- end
- def sisupod_v2
- #processing_path.processing
- # sisupod
- # content.sst [file content]
- # filename.sst [link to content.sst]
- # _sisu
- # skin/
- # doc [relevant skin if any other than default]
- # image [all images for specific document gathered here]
- sisupod_processing_path="#{processing_path.processing}/sisupod"
- if FileTest.directory?(sisupod_processing_path) \
- or FileTest.file?(sisupod_processing_path)
- FileUtils::rm_rf(sisupod_processing_path)
- end
- paths=[]
- paths=[
- "#{processing_path.processing}/sisupod/_sisu/skin/doc",
- "#{processing_path.processing}/sisupod/_sisu/skin/dir",
- "#{processing_path.processing}/sisupod/_sisu/skin/site",
- "#{processing_path.processing}/sisupod/_sisu/image"
- ]
- paths.each {|x| FileUtils::mkdir_p(x) unless FileTest.directory?(x) }
- end
- def defaults #multiple default directories
- @default_dir ||=@sys.default_dir #DEFAULT_DIR
- end
- def html_seg_title_banner?
- ((defined? @rc['html']['seg_title_banner']) \
- && @rc['html']['seg_title_banner']==true) \
- ? @rc['html']['seg_title_banner']
- : false
- end
- def html_quick_ref?
- ((defined? @rc['html']['quick_ref']) \
- && @rc['html']['quick_ref']==true) \
- ? @rc['html']['quick_ref']
- : false
- end
- def html_minitoc?
- flag=if defined? @rc['html']['minitoc'] \
- and not @rc['html']['minitoc'].nil?
- @rc['html']['minitoc']
- else false
- end
- end
- def manifest_minitoc?
- flag=if (defined? @rc['manifest']['minitoc'] \
- and not @rc['manifest']['minitoc'].nil?)
- @rc['manifest']['minitoc']
- else false
- end
- end
- def build
- def omit_list
- @off_list ||=if (defined? @rc['omit_list'] \
- and not @rc['omit_list'].nil?)
- @rc['omit_list']
- elsif (defined? @rc['omit']['list'] \
- and not @rc['omit']['list'].nil?)
- @rc['omit']['list']
- else
- nil
- end
- end
- def listed?(test) #fix
- listed=if omit_list
- x=(omit_list.scan(/\b#{test}\b/)).join
- test==x \
- ? true
- : false
- else
- false
- end
- listed
- end
- def ocn?
- if (defined? @rc['omit']['ocn'] \
- and not @rc['omit']['ocn'].nil?) \
- or listed?('ocn')
- :off
- else
- :na
- end
- end
- def toc?
- if (defined? @rc['omit']['toc'] \
- and not @rc['omit']['toc'].nil?) \
- or listed?('toc')
- :off
- else
- :na
- end
- end
- def manifest?
- if (defined? @rc['omit']['manifest'] \
- and not @rc['omit']['manifest'].nil?) \
- or listed?('manifest')
- :off
- else
- :na
- end
- end
- def links_to_manifest?
- flag=if (defined? @rc['omit']['links_to_manifest'] \
- and not @rc['omit']['links_to_manifest'].nil?) \
- or (listed?('links_to_manifest') \
- || listed?('manifest_links'))
- :off
- else
- :na
- end
- end
- def metadata?
- if (defined? @rc['omit']['metadata'] \
- and not @rc['omit']['metadata'].nil?) \
- or listed?('metadata')
- :off
- else
- :na
- end
- end
- def minitoc?
- flag=if (defined? @rc['omit']['minitoc'] \
- and not @rc['omit']['minitoc'].nil?) \
- or (listed?('minitoc'))
- :off
- else
- :na
- end
- end
- def manifest_minitoc?
- flag=if (defined? @rc['omit']['manifest_minitoc'] \
- and not @rc['omit']['manifest_minitoc'].nil?) \
- or listed?('manifest_minitoc')
- :off
- else
- :na
- end
- end
- def html_minitoc?
- flag=if (defined? @rc['omit']['html_minitoc'] \
- and not @rc['omit']['html_minitoc'].nil?) \
- or (listed?('html_minitoc') \
- || listed?('minitoc'))
- :off
- else
- :na
- end
- end
- def html_navigation?
- flag=if (defined? @rc['omit']['html_navigation'] \
- and not @rc['omit']['html_navigation'].nil?) \
- or listed?('html_navigation')
- :off
- else
- :na
- end
- end
- def html_navigation_bar?
- flag=if (defined? @rc['omit']['html_navigation_bar'] \
- and not @rc['omit']['html_navigation_bar'].nil?) \
- or listed?('html_navigation_bar')
- :off
- else
- :na
- end
- end
- def segsubtoc?
- flag=if (defined? @rc['omit']['segsubtoc'] \
- and not @rc['omit']['segsubtoc'].nil?) \
- or listed?('segsubtoc')
- :off
- else
- :na
- end
- end
- def html_right_pane?
- flag=if (defined? @rc['omit']['html_right_pane'] \
- and not @rc['omit']['html_right_pane'].nil?) \
- or listed?('html_right_pane')
- :off
- else
- :na
- end
- end
- def html_top_band?
- flag=if (defined? @rc['omit']['html_top_band'] \
- and not @rc['omit']['html_top_band'].nil?) \
- or listed?('html_top_band')
- :off
- else
- :na
- end
- end
- def search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
- flag=if (defined? @rc['omit']['search_form'] \
- and not @rc['omit']['search_form'].nil?) \
- or listed?('search_form')
- :off
- else
- :na
- end
- end
- def html_search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
- flag=if (defined? @rc['omit']['html_search_form'] \
- and not @rc['omit']['html_search_form'].nil?) \
- or listed?('html_search_form')
- :off
- else
- :na
- end
- end
- self
- end
- def odt_ocn?
- ((defined? @rc['odt']['ocn']) \
- && @rc['odt']['ocn']==true) \
- ? @rc['odt']['ocn']
- : false
- end
- def plaintext_ocn?
- ((defined? @rc['plaintext']['ocn']) \
- && @rc['plaintext']['ocn']==true) \
- ? @rc['plaintext']['ocn']
- : false
- end
- def widget #needs (md) #move
- @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- @ad=SiSU_Env::GetInit.instance.ads
- @vz=SiSU_Env::GetInit.instance.skin
- @flag={ ad: false, md: false, sk: false, rc: false }
- def promo?
- @flag[:ad]=if @md.flag_promo && @ad[:flag_promo]
- @flag[:md]=true
- true
- elsif defined? @vz.widget_promo \
- and not @vz.widget_promo.nil? \
- and @vz.widget_promo.class==Array \
- and @vz.widget_promo.length > 0
- @flag[:sk]=true
- true
- elsif defined? @rc['html']['promo'] \
- and not @rc['html']['promo'].nil? \
- and @rc['html']['promo'].length > 0
- @flag[:rc]=true
- true
- else false
- end
- @flag
- end
- def search?
- searches=['sisu']
- flag=false
- if defined? @rc['search']
- searches.each do |type|
- flag=if defined? @rc['search'][type] \
- and defined? @rc['search'][type]['action'] \
- and @rc['search'][type]['flag']==true \
- and @rc['search'][type]['action'] =~/https?:\/\//
- flag=if promo?[:ad]
- false
- elsif defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search'][type]['flag'] \
- and @rc['search'][type]['flag']==true
- true
- else false
- end
- else false
- end
- end
- else false
- end
- flag
- end
- def search_fixed?
- searches=['sisu','hyperestraier']
- flag=if defined? @rc['search']
- searches.each do |type|
- if defined? @rc['search'][type] \
- and defined? @rc['search'][type]['action'] \
- and @rc['search'][type]['action'] =~/https?:\/\// \
- and defined? @rc['search'][type]['db'] \
- and @rc['search'][type]['db'] =~/\S+/
- flag=if promo?[:ad]
- false
- elsif defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search'][type]['flag'] \
- and @rc['search'][type]['flag']==true
- true
- else false
- end
- else false
- end
- end
- else false
- end
- end
- def search_form(type='sisusearch',action=nil,db=nil,table=false)
- rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- create_form_sisu=if action \
- and db \
- and action =~/https?:\/\// \
- and db =~/\S+/
- true
- elsif widget.search?
- db=if rc['search']['sisu']['flag']==true \
- and rc['search']['sisu']['db']=~/\S+/
- (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
- ? rc['search']['sisu']['db']
- : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
- else nil
- end
- action=rc['search']['sisu']['action']
- true
- elsif defined? rc['search']['sisu']['flag'] \
- and defined? rc['search']['sisu']['action'] \
- and rc['search']['sisu']['flag']==true \
- and rc['search']['sisu']['action'] =~/https?:\/\//
- true
- else false
- end
- if table
- table_open='<td align="center" bgcolor="#ffffff">'
- table_close='</td>'
- else
- table_open=''
- table_close='<br />'
- end
- form=if create_form_sisu \
- and type=~/sisusearch/ \
- and defined? rc['search']['sisu'] \
- and defined? rc['search']['sisu']['action']
- <<WOK
-<!-- SiSU Search -->
-#{table_open}
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<input type="hidden" name="db" value="#{db}" />
-<input type="hidden" name="ltd" value="1000" />
-<input type="hidden" name="off" value="0" />
-<input type="hidden" name="doc" value="#{@md.fnb}" /><br />
-<input type="submit" name="search" value="search doc" />
-<input type="submit" name="search" value="search db" />
-</font></form>
-#{table_close}
-<!-- SiSU Search -->
-WOK
- else ''
- end
- form
- end
- def search_form_static(action=nil,db=nil)
- rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- create_form=if rc['search']['sisu']['flag']==true \
- and action \
- and db \
- and action =~/https?:\/\// \
- and db =~/\S+/
- true
- elsif widget.search_fixed?
- db=if rc['search']['sisu']['flag']==true \
- and rc['search']['sisu']['db']=~/\S+/
- (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
- ? rc['search']['sisu']['db']
- : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
- else nil
- end
- action=rc['search']['sisu']['action']
- true
- else false
- end
- if create_form
- %{<td align="center" bgcolor="#ffffff">
-<!-- SiSU Search -->
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<br />
-<input type="hidden" name="db" value="#{db}" />
-<input type="hidden" name="ltd" value="1000" />
-<input type="hidden" name="off" value="0" />
-<input type="hidden" name="doc" value="#{@md.fnb}" />
-<input type="submit" name="search" value="search doc" />
-<input type="submit" name="search" value="search db" />
-</font>
-</form>
-<!-- SiSU Search -->
-</td> }
- else ''
- end
- end
- def search_action #check
- action=if search?
- else ''
- end
- end
- self
- end
- def widget_static
- @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- @vz=SiSU_Env::GetInit.instance.skin
- @flag={ ad: false, md: false, sk: false, rc: false }
- def search?
- flag=if defined? @rc['search'] \
- and defined? @rc['search']['sisu'] \
- and defined? @rc['search']['sisu']['action'] \
- and @rc['search']['sisu']['action'] =~/https?:\/\// \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/ \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/
- flag=if defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search']['sisu']['flag'] \
- and @rc['search']['sisu']['flag']==true
- true
- else
- false
- end
- else
- false
- end
- end
- def search_fixed?
- flag=if defined? @rc['search'] \
- and defined? @rc['search']['sisu'] \
- and defined? @rc['search']['sisu']['action'] \
- and @rc['search']['sisu']['action'] =~/https?:\/\// \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/ \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/
- flag=if defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search']['sisu']['flag'] \
- and @rc['search']['sisu']['flag']==true
- true
- else
- false
- end
- else
- false
- end
- end
- def search_form(action=nil,db=nil)
- rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- create_form=if defined? rc['search']['sisu']['flag'] \
- and rc['search']['sisu']['flag']==true \
- and action \
- and db \
- and action =~/https?:\/\// \
- and db =~/\S+/
- true
- elsif widget_static.search? \
- and rc['search']['sisu']['flag']==true
- db=if rc['search']['sisu']['db']=~/\S+/
- (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
- ? rc['search']['sisu']['db']
- : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
- else nil
- end
- action=rc['search']['sisu']['action']
- true
- else false
- end
- if create_form \
- and @fnb \
- and @fnb=~/\S+/
- %{<!-- SiSU Search -->
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<br />
-<input type="hidden" name="db" value="#{db}" />
-<input type="hidden" name="doc" value="#{@fnb}" />
-<input type="submit" name="search" value="search doc" />
-<input type="submit" name="search" value="search db" />
-</font>
-</form>
-<!-- SiSU Search --> }
- elsif create_form
- %{<!-- SiSU Search -->
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<br />
-<input type="hidden" name="db" value="#{db}" />
-<input type="submit" name="search" value="search db" />
-</font>
-</form>
-<!-- SiSU Search --> }
- else ''
- end
- end
- def search_action #check
- action=if search?
- else ''
- end
- end
- self
- end
- def source_file_path
- file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
- pth=unless file =~/\.ssm\.sst$/; "#{Dir.pwd}"
- else "#{processing_path.composite_file}"
- end
- end
- def source_file_with_path
- file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
- "#{source_file_path}/#{file}"
- end
- def read_source_file(fns)
- fns_array=if RUBY_VERSION < '1.9'
- x=unless fns =~/\.ssm.sst$/
- IO.readlines(fns,'')
- else IO.readlines("#{processing_path.composite_file}/#{fns}",'')
- end
- else #ruby version >= '1.9'
- x=unless fns =~/\.ssm.sst$/
- IO.readlines(fns,'r:utf-8')
- else IO.readlines("#{processing_path.composite_file}/#{fns}",'r:utf-8')
- end
- end
- end
- def font
- def texpdf
- def main
- (defined? @rc['default']['texpdf_font']) \
- && (@rc['default']['texpdf_font']=~/\S{3,}/) \
- ? @rc['default']['texpdf_font']
- : 'Liberation Sans'
- end
- def sans # not used
- (defined? @rc['default']['texpdf_font_sans']) \
- && (@rc['default']['texpdf_font_sans']=~/\S{3,}/) \
- ? @rc['default']['texpdf_font_sans']
- : 'Liberation Sans'
- end
- def serif # not used
- (defined? @rc['default']['texpdf_font_serif']) \
- && (@rc['default']['texpdf_font_serif']=~/\S{3,}/) \
- ? @rc['default']['texpdf_font_serif']
- : 'Liberation Serif'
- end
- def mono
- (defined? @rc['default']['texpdf_font_mono']) \
- && (@rc['default']['texpdf_font_mono']=~/\S{3,}/) \
- ? @rc['default']['texpdf_font_mono']
- : 'Liberation Mono'
- end
- self
- end
- self
- end
- def path_rel_links
- def html_scroll_2
- if @env.output_dir_structure.by_language_code?
- '../../'
- elsif @env.output_dir_structure.by_filetype?
- '../'
- else
- '../'
- end
- end
- def html_seg_2
- if @env.output_dir_structure.by_language_code?
- '../../../'
- elsif @env.output_dir_structure.by_filetype?
- '../../'
- else
- '../'
- end
- end
- def html_scroll_1
- if @env.output_dir_structure.by_language_code?
- '../'
- elsif @env.output_dir_structure.by_filetype?
- '../'
- else
- './'
- end
- end
- def html_seg_1
- if @env.output_dir_structure.by_language_code?
- '../../'
- elsif @env.output_dir_structure.by_filetype?
- '../../'
- else
- './'
- end
- end
- def default_output_css
- if (@md.opt.opt_act[:dump][:bool] \
- && @md.opt.opt_act[:dump][:inst]) \
- || (@md.opt.opt_act[:redirect][:bool] \
- && @md.opt.opt_act[:redirect][:inst])
- './'
- elsif @env.output_dir_structure.by_language_code?
- '../../'
- elsif @env.output_dir_structure.by_filetype?
- '../'
- else
- '../'
- end
- end
- def html_scroll_css
- default_output_css
- end
- def xhtml_css
- default_output_css
- end
- def xml_css
- default_output_css
- end
- def html_seg_css
- if @env.output_dir_structure.by_language_code?
- '../../../'
- elsif @env.output_dir_structure.by_filetype?
- '../../'
- else
- '../'
- end
- end
- def manifest_css
- if @env.output_dir_structure.by_language_code?
- '../../_sisu/css'
- elsif @env.output_dir_structure.by_filetype?
- ''
- else
- '../'
- end
- end
- self
- end
- def path #dir
- def home
- @sys.home
- end
- def sisurc_path
- GetInit.instance.sisu_yaml.rc_path
- end
- def pwd
- @sys.pwd
- end
- def stub_pwd
- @stub_pwd
- end
- def stub_txt
- @stub_txt
- end
- def stub_html
- @stub_html
- end
- def stub_epub
- @stub_epub
- end
- def stub_odt
- @stub_odt
- end
- def stub_pdf
- @stub_pdf
- end
- def stub_manifest
- @stub_manifest
- end
- def stub_set_manifest
- @stub_set_manifest
- end
- def stub_src
- @stub_src
- end
- def stub_pod
- @stub_pod
- end
- def stub_md_harvest
- @stub_set_manifest
- end
- def etc
- defaults[:sisu_etc] #live/dynamic
- end
- def arch
- @sys.dir_arch
- end
- def sitearch
- @sys.dir_sitearch
- end
- def bin
- @sys.dir_bin
- end
- def share #shared data repository source directory
- defaults[:sisu_share]
- end
- def style
- if (@md.opt.opt_act[:dump][:bool] \
- && @md.opt.opt_act[:dump][:inst]) \
- || (@md.opt.opt_act[:redirect][:bool] \
- && @md.opt.opt_act[:redirect][:inst])
- 'css'
- else
- defaults[:stylesheet_stub]
- end
- end
- def sample_data #sample data repository source directory
- defaults[:sample_data_path]
- end
- def rc
- @sys.rc_path
- end
- def yamlrc
- GetInit.instance.sisu_yaml.rc_path
- end
- def man #check use
- (defined? @rc['webserv']['man']) \
- ? "#{webserv}/#{@rc['webserv']['man']}"
- : defaults[:webserv_man]
- end
- def webserv_path #testing, check need, remove
- webserv
- end
- def webserv #separation required for webrick which cannot use path.output (different requirements as no file is passed)
- man_path=if @@man_path.nil?
- man_path=if defined? @rc['webserv']['path'] \
- and @rc['webserv']['path'] =~/\S\S+/
- man_path=@@man_path=File.expand_path(@rc['webserv']['path'])
- else defaults[:webserv_path]
- end
- else @@man_path
- end
- man_path_head=man_path.gsub(/(\S+)\/[^\/\s]+$/,'\1')
- unless FileTest.directory?(man_path)
- FileUtils::mkdir_p(man_path) if File.writable?("#{man_path_head}/.")
- end
- @webserv_path=if defined? man_path \
- and File.writable?("#{man_path}/.")
- man_path #web server path as configured in rc file
- elsif FileTest.directory?(defaults[:webserv_path]) \
- and File.writable?("#{defaults[:webserv_path]}/.") #web server path default
- defaults[:webserv_path]
- else #create default directory under home and place output there
- unless FileTest.directory?(defaults[:output_local])
- FileUtils::mkdir_p(defaults[:output_local])
- end
- defaults[:output_local]
- end
- end
- def webserv_stub_ensure
- FileUtils::mkdir_p(path.webserv) unless FileTest.directory?(path.webserv)
- FileUtils::mkdir_p("#{path.webserv}/#{@stub_pwd}") unless FileTest.directory?("#{path.webserv}/#{@stub_pwd}")
- end
- def webserv_map_pwd #dir
- "#{path.webserv}/#{stub_pwd}"
- end
- def webserv_dir #fixed/hard path to /www web/presentation directory, on Debian /var/www subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
- defaults[:webserv_dir]
- end
- def webserv_image #web/presentation directory, subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
- images=if defined? @rc['webserv']['images']
- @rc['webserv']['images']
- else defaults[:images]
- end
- "#{path.webserv}/#{images}"
- end
- def output #web/webserv output directory... subdirectory into which further subdirectories are made based on file names
- r=Px[:lng_lst].join('|')
- u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
- base_stub=@sys.pwd.gsub(u,'\1')
- "#{path.webserv}/#{base_stub}"
- end
- def feed
- (defined? @rc['webserv']['feed']) \
- ? ("#{public_output}/#{@rc['webserv']['feed']}")
- : (defaults[:webserv_feed])
- end
- def feed_home
- "#{public_output}/#{@rc['webserv']['feed_home']}"
- end
- def scripts #used previously only to include tla version info
- if defined? @rc['project']['path']; "#{home}/#{@rc['project']['path']}"
- end
- end
- def cgi
- (defined? @rc['webserv']['cgi']) \
- ? "#{@rc['webserv']['cgi']}"
- : (defaults[:webserv_cgi])
- end
- def php
- (defined? @rc['webserv']['php']) \
- ? "#{public_output}/#{@rc['webserv']['php']}"
- : (defaults[:webserv_php])
- end
- # programs
- def output_tell
- url.webserv_map_pwd
- end
- def image_source #image repository source directory
- image_path=if defined? @rc['image']['path'] \
- and defined? @rc['image']['public']
- pth="#{@rc['image']['path']}"
- "#{pth}/#{@rc['image']['public']}"
- else "#{share}/image"
- end
- end
- def image_source_sisu_includes
- "#{share}/image"
- end
- def image_source_include #image repository source directory
- image_path=if defined? @rc['image']['path'] \
- and defined? @rc['image']['public'] \
- and FileTest.directory?("#{@rc['image']['path']}/#{@rc['image']['public']}")==true
- "#{@rc['image']['path']}/#{@rc['image']['public']}"
- elsif FileTest.directory?("#{@@pwd}/#{defaults[:image_stub]}")==true
- "#{@@pwd}/#{defaults[:image_stub]}"
- else
- "#{share}/image"
- end
- end
- def image_external
- "#{processing}/external_document/image"
- end
- def image_source_include_local
- if FileTest.directory?(defaults[:image_local]); defaults[:image_local]
- end
- end
- def image_source_include_remote
- if FileTest.directory?(image_external); image_external
- end
- end
- self
- end
- def processing_path
- def encoding
- pth="#{processing}/#{defaults[:processing_encoding]}"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def processing_base_tmp
- defaults[:processing_path_tmp_base]
- end
- def tmp_root_dir
- defaults[:processing_dir_tmp_root]
- end
- def root_dir
- proposed_path_base=if defined? @rc['processing']['path'] \
- and not @rc['processing']['path'].nil? \
- and not @rc['processing']['path'].empty?
- x=if @rc['processing']['path'] =~/^(?:~|home)$/
- home #fix
- else @rc['processing']['path']
- end
- else nil
- end
- proposed_dir=if defined? @rc['processing']['dir'] \
- and not @rc['processing']['dir'].nil? \
- and not @rc['processing']['dir'].empty?
- @rc['processing']['dir']
- else defaults[:processing_dir]
- end
- path=if proposed_path_base \
- and FileTest.directory?(proposed_path_base) \
- and File.writable?("#{proposed_path_base}/.")
- x=if proposed_dir
- "#{proposed_path_base}/#{proposed_dir}"
- else
- "#{proposed_path_base}/#{defaults[:processing_dir]}"
- end
- else defaults[:processing_dir_tmp_root]
- end
- end
- def usr_dir?
- case root_dir
- when /^\/home/; false
- else true
- end
- end
- def stub_dir
- (usr_dir?) \
- ? ("#{root_dir}/#{user}/#{stub_pwd}")
- : ("#{root_dir}/#{stub_pwd}") # see defaults[:processing_path]
- end
- def processing #processing directory, used/needed for sisu work files, has sub-directories (dal,tex etc)
- unless FileTest.directory?(root_dir)
- FileUtils::mkdir_p(root_dir)
- File.chmod(0777,root_dir)
- end
- if usr_dir?
- processing_path_usr="#{root_dir}/#{user}"
- FileUtils::mkdir_p(processing_path_usr) unless FileTest.directory?(processing_path_usr)
- File.chmod(0700,processing_path_usr)
- end
- FileUtils::mkdir_p(stub_dir) unless FileTest.directory?(stub_dir)
- File.chmod(0700,stub_dir)
- path_processing=[stub_dir,defaults[:processing_path],defaults[:processing_path_home]]
- processing=nil
- path_processing.each do |v| #
- processing=v
- unless FileTest.directory?(processing)
- puts "a processing directory (#{processing}) is being created for use by sisu"
- FileUtils::mkdir_p(processing)
- File.chmod(0700,processing)
- end
- break
- end
- processing
- end
- def dal
- pth=if defined? @rc['processing']['dal'] \
- and not @rc['processing']['dal'].nil? \
- and not @rc['processing']['dal'].empty?
- "#{processing}/#{@rc['processing']['dal']}"
- else "#{processing}/#{defaults[:processing_dal]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def tune
- pth=if defined? @rc['processing']['tune'] \
- and not @rc['processing']['tune'].nil? \
- and not @rc['processing']['tune'].empty?
- "#{processing}/#{@rc['processing']['tune']}"
- else "#{processing}/#{defaults[:processing_tune]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def composite_file
- pth=processing_path.dal #"#{processing}/composite"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def git
- pth=if defined? @rc['git']['dir'] \
- and not @rc['git']['dir'].nil? \
- and not @rc['git']['dir'].empty?
- x=(@rc['git']['dir'] =~/^(?:~|home)$/) \
- ? home + '/' + 'sisu:'
- : @rc['git']['dir'] + '/' + 'sisu:'
- else defaults[:processing_git]
- end
- unless FileTest.directory?(pth)
- FileUtils::mkdir_p(pth)
- File.chmod(0700,pth)
- end
- pth
- end
- def odf_pth
- pth="#{processing}/odf/#{@fns}"
- pth
- end
- def odf
- odt
- end
- def odt
- pth=odf_pth + '/odt'
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def odf
- pth="#{processing}/odf"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def odt_bld
- FileUtils::rm_rf(processing_path.odt)
- FileUtils::mkdir_p(processing_path.odt) unless FileTest.directory?(processing_path.odt)
- FileUtils::mkdir_p("#{processing_path.odt}/Configurations2") unless FileTest.directory?("#{processing_path.odt}/Configurations2")
- FileUtils::mkdir_p("#{processing_path.odt}/META-INF") unless FileTest.directory?("#{processing_path.odt}/META-INF")
- FileUtils::mkdir_p("#{processing_path.odt}/Pictures") unless FileTest.directory?("#{processing_path.odt}/Pictures")
- FileUtils::mkdir_p("#{processing_path.odt}/Thumbnails") unless FileTest.directory?("#{processing_path.odt}/Thumbnails")
- processing_path.odt
- end
- def epub
- "#{processing}/epub/#{@fnb}"
- end
- def epub_bld #(md)
- FileUtils::rm_rf(processing_path.epub) if FileTest.directory?(processing_path.epub)
- FileUtils::mkdir_p(processing_path.epub) unless FileTest.directory?(processing_path.epub)
- FileUtils::mkdir_p("#{processing_path.epub}/META-INF") unless FileTest.directory?("#{processing_path.epub}/META-INF")
- FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/image") unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/image")
- FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/css") unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/css")
- images=%W[bullet_09.png arrow_next_red.png arrow_prev_red.png arrow_up_red.png]
- processing_path.epub
- end
- def epub_cp_images(md)
- pth="#{processing_path.epub}/#{Ep[:d_oebps]}/image"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- src="#{path.share}/image"
- images=%W[bullet_09.png arrow_next_red.png arrow_prev_red.png arrow_up_red.png]
- images.each do |i| #move to avoid repeated tests
- FileUtils::cp("#{src}/#{i}","#{pth}/#{i}") unless FileTest.file?("#{pth}/#{i}")
- end
- pth
- end
- def tex
- pth=if defined? @rc['processing']['latex'] \
- and not @rc['processing']['latex'].nil? \
- and not @rc['processing']['latex'].empty?
- "#{processing}/#{@rc['processing']['latex']}"
- else "#{processing}/#{defaults[:processing_latex]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def texi
- pth=if defined? @rc['processing']['texinfo'] \
- and not @rc['processing']['texinfo'].nil? \
- and not @rc['processing']['texinfo'].empty?
- "#{processing}/#{@rc['processing']['texinfo']}"
- else "#{processing}/#{defaults[:processing_texinfo]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def texinfo #texinfo webserv, check
- "#{processing}/#{defaults[:processing_texinfo]}"
- end
- def manpage
- "#{path.output}/man"
- end
- def lout
- pth=if defined? @rc['processing']['lout'] \
- and not @rc['processing']['lout'].nil? \
- and not @rc['processing']['lout'].empty?
- "#{processing}/#{@rc['processing']['lout']}"
- else "#{processing}/#{defaults[:processing_lout]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def sql
- pth="#{processing}/sql"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def sqlite
- pth=if defined? @rc['processing']['sqlite'] \
- and not @rc['processing']['sqlite'].nil? \
- and not @rc['processing']['sqlite'].empty?
- "#{processing}/#{@rc['processing']['sqlite']}"
- else "#{processing}/#{defaults[:processing_sqlite]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def postgresql
- pth=if defined? @rc['processing']['postgresql'] \
- and not @rc['processing']['postgresql'].nil? \
- and not @rc['processing']['postgresql'].empty?
- "#{processing}/#{@rc['processing']['postgresql']}"
- else "#{processing}/#{defaults[:processing_postgresql]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- self
- end
- def url
- def hostname
- "http://#{@sys.hostname}"
- end
- def dir_url
- "file://#{path.webserv}/#{stub_pwd}"
- end
- def localhost
- "http://localhost/#{stub_pwd}"
- end
- def local
- "http://#{hostname}/#{@stub_pwd}"
- end
- def root
- if defined? @rc['webserv']['url_root'] \
- and @rc['webserv']['url_root'] =~/https?:\/\//
- "#{@rc['webserv']['url_root']}/#{@stub_pwd}"
- elsif defined? @rc['webserv']['url_root'] \
- and @rc['webserv']['url_root'] =~/localhost/
- "http://localhost/#{@stub_pwd}"
- else "file://#{path.output}"
- end
- end
- def remote
- root
- end
- def txt
- "#{root}/txt"
- end
- def html
- "#{root}/html"
- end
- def epub
- "#{root}/epub"
- end
- def odt
- "#{root}/odt"
- end
- def pdf
- "#{root}/pdf"
- end
- def src_txt
- "#{root}/src"
- end
- def src_pod
- "#{root}/pod"
- end
- def pot
- "#{root}/po4a/pot"
- end
- def po
- "#{root}/po4a/po"
- end
- def webserv_host_base
- if defined? @rc['webserv']['host']
- case @rc['webserv']['host']
- when /https?:\/\//; @rc['webserv']['host']
- when /\S+/; "http://#{@rc['webserv']['host']}"
- else defaults[:webserv_host_cgi]
- end
- else defaults[:webserv_host_cgi]
- end
- end
- def webrick_port
- if @md \
- and @md.opt.cmd.inspect=~/-F/ \
- and @md.opt.mod.inspect=~/port=(\d+)/
- $1
- else
- if defined? @rc['webserv_cgi']['port']
- if @rc['webserv_cgi']['port'].nil? \
- and (defined? @md.opt.mod \
- and not @md.opt.mod.nil? \
- and @md.opt.mod.inspect=~/webrick/)
- defaults[:webserv_port_cgi]
- elsif not @rc['webserv_cgi']['port'].nil?
- @rc['webserv_cgi']['port']
- else defaults[:webserv_port_cgi]
- end
- else defaults[:webserv_port_cgi]
- end
- end
- end
- def webserv_port_cgi
- if @md \
- and defined? @md.opt \
- and @md.opt.cmd.inspect=~/-F/ \
- and @md.opt.mod.inspect=~/port=(\d+)/
- $1
- else
- if defined? @rc['webserv_cgi']['port']
- if @rc['webserv_cgi']['port'].nil? \
- and (defined? @md.opt.mod \
- and not @md.opt.mod.nil? \
- and @md.opt.mod.inspect=~/webrick/)
- defaults[:webserv_port_cgi]
- elsif not @rc['webserv_cgi']['port'].nil?
- @rc['webserv_cgi']['port']
- else nil
- end
- else nil
- end
- end
- end
- def webserv_cgi #web url for local webserv (localhost, or hostname)
- if defined? @rc['webserv_cgi']['host'] \
- and not @rc['webserv_cgi']['host'].nil?
- http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://') #check https? missing
- if webserv_port_cgi
- "#{http}#{@rc['webserv_cgi']['host']}:#{webserv_port_cgi}/#{@stub_pwd}"
- else "#{http}#{@rc['webserv_cgi']['host']}/#{@stub_pwd}"
- end
- else
- http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
- if webserv_port_cgi
- "#{http}#{webserv_host_base}:#{webserv_port_cgi}/#{@stub_pwd}"
- else "#{http}#{webserv_host_base}/#{@stub_pwd}"
- end
- end
- end
- def webserv_base_cgi #web url for local webserv (localhost, or hostname)
- if defined? @rc['webserv_cgi']['host'] \
- and not @rc['webserv_cgi']['host'].nil?
- http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://')
- if webserv_port_cgi
- "#{http}#{@rc['webserv_cgi']['host']}:#{webserv_port_cgi}"
- else "#{http}#{@rc['webserv_cgi']['host']}"
- end
- else
- http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
- if webserv_port_cgi
- "#{http}#{webserv_host_base}:#{webserv_port_cgi}"
- else "#{http}#{webserv_host_base}"
- end
- end
- end
- def webrick #must have a port #REMOVE
- if defined? @rc['webserv_cgi']['host'] \
- and not @rc['webserv_cgi']['host'].nil?
- http=if @rc['webserv_cgi']['host'] =~/http:\/\//
- 'http://'
- elsif @rc['webserv_cgi']['host'] =~/https:\/\//
- 'https://'
- else defaults
- end
- "#{http}#{@rc['webserv_cgi']['host']}"
- elsif webserv_host_base \
- and not webserv_host_base.nil?
- "#{http}#{webserv_host_base}"
- else "#{http}localhost" end
- end
- def webserv #web url for local webserv (localhost, or hostname)
- if defined? @rc['webserv']['url_root'] \
- and @rc['webserv']['url_root'] =~/http/
- # needed for alternative output dir structures, fixes manifest url links, check may cause problems elsewhere
- @rc['webserv']['url_root']
- elsif path.webserv_dir \
- and path.webserv =~ /#{path.webserv_dir}/ #revisit
- "#{path.webserv}/#{@stub_pwd}".gsub(/#{path.webserv_dir}/,"#{url.hostname}/#{@stub_pwd}")
- elsif defined? @rc['webserv']['webrick_url'] \
- and @rc['webserv']['webrick_url']==false
- "file://#{path.webserv}"
- elsif webserv_port_cgi =~/\S+/
- "#{url.hostname}:#{webserv_port_cgi}"
- else
- url.hostname
- end
- end
- def webserv_base #web url for local webserv (localhost, or hostname)
- if path.webserv_dir \
- and path.webserv =~ /#{path.webserv_dir}/ #revisit
- "#{path.webserv}/#{@stub_pwd}".gsub(/#{path.webserv_dir}/,"#{url.hostname}")
- elsif defined? @rc['webserv']['webrick_url'] \
- and @rc['webserv']['webrick_url']==false
- "file://#{path.webserv}"
- else "#{url.webrick_base}"
- end
- end
- def webserv_files_from_db #sort this out, messy
- if defined? @rc['webserv_cgi']['file_links']
- case @rc['webserv_cgi']['file_links']
- when /webserv_cgi/; url.webserv_base_cgi
- when /webserv/; @rc['webserv']['url_root']
- when /https?:\/\//; @rc['webserv_cgi']['file_links']
- when /\S+/; "http://#{@rc['webserv_cgi']['file_links']}"
- else webserv_base_cgi
- end
- else webserv_base_cgi
- end
- end
- def sample_search_form_title
- if defined? @rc['search']['sisu']['title'] \
- and @rc['search']['sisu']['title'] =~/\S+/
- @rc['search']['sisu']['title']
- else %{(SiSU (generated sample) search form}
- end
- end
- def output_tell #BROKEN Revisit 2011-02
- output_type=if defined? @rc['show_output_on'] \
- and @rc['show_output_on'] =~/^(?:filesystem|webserv|(?:local|remote)(?:_webserv)?|webrick)/
- @rc['show_output_on']
- else 'filesystem'
- end
- output=case output_type
- when /^filesystem(?:_url)?/; url.dir_url
- when /^remote(?:_webserv)?/; url.remote
- when /^(?:webserv|local_webserv)/; url.local
- when /^local(:\d+)/; url.hostname + $1 + '/' + stub_pwd
- when /^localhost(:\d+)/; url.localhost + $1 + '/' + stub_pwd
- when /^localhost/; url.localhost
- when /^webrick/; url.webrick
- when /^path/; url.webserv_map_pwd
- else url.webserv_map_pwd
- end
- end
- def images
- "#{Xx[:html_relative2]}/_sisu/image"
- end
- #def images
- # '../_sisu/image'
- #end
- def images_local
- if FileTest.directory?(path.image_source_include)
- path.image_source_include
- else
- if @@local_image==true
- cmd=@cmd ? @cmd : ''
- SiSU_Screen::Ansi.new(cmd,"WARNING - no local image directory or images:", defaults[:image_local] ).warn unless cmd =~/q/
- @@local_image=false
- end
- url.images
- end
- end
- def images_external
- if FileTest.directory?(image_external)
- if @@image_flag
- images=Dir.glob("#{image_external}/*.{png,jpg,gif}")
- pth="#{path.webserv}/#{@stub_pwd}"
- FileUtils::mkdir_p("#{pth}/_sisu/image_external") unless FileTest.directory?("#{pth}/_sisu/image_external")
- images.each { |i| File.install(i,"#{pth}/#{i}") } unless images.length > 0
- @@image_flag=false
- end
- "#{Xx[:html_relative2]}/_sisu/image_external"
- else
- if @@local_image==true
- SiSU_Screen::Ansi.new(@cmd,"WARNING - image directory for external images or no such images:", :image_external ).warn unless @cmd =~/q/
- @@local_image=false
- end
- url.images_external
- end
- end
- def images_epub
- './image'
- end
- self
- end
- def digest
- def type
- if defined? @rc['default']['digest'] \
- and @rc['default']['digest'] != nil
- case @rc['default']['digest']
- when /^sha(?:2|256)?$/; 'sha256'
- when /^md5$/; 'md5'
- else 'sha256'
- end
- else 'sha256'
- end
- end
- def length
- case digest.type
- when /sha256/; 64
- when /md5/; 32
- else 64
- end
- end
- def pattern
- "[0-9a-f]{#{digest.length}}" #/[0-9a-f]{#{digest.length}}/
- end
- self
- end
- def program
- def text_editor
- if defined? @rc['program_select']['editor'] \
- and @rc['program_select']['editor'] =~/\S\S+/
- @rc['program_select']['editor']
- elsif defined? @rc['program_select']['text_editor'] \
- and @rc['program_select']['text_editor'] =~/\S\S+/
- @rc['program_select']['text_editor']
- else 'editor' #'gvim -c :R -c :S'
- end
- end
- def pdf_viewer
- ((defined? @rc['program_select']['pdf_viewer']) \
- && @rc['program_select']['pdf_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['pdf_viewer']
- : 'pdf-viewer' #'evince'
- end
- def web_browser
- if defined? @rc['program_select']['www_browser'] \
- and @rc['program_select']['www_browser'] =~/\S\S+/
- @rc['program_select']['www_browser']
- elsif defined? @rc['program_select']['web_browser'] \
- and @rc['program_select']['web_browser'] =~/\S\S+/
- @rc['program_select']['web_browser']
- else 'x-www-browser' #'firefox' 'iceweasel' 'kazehakase' 'galeon'
- end
- end
- def www_browser
- web_browser
- end
- def console_web_browser
- if defined? @rc['program_select']['console_www_browser'] \
- and @rc['program_select']['console_www_browser'] =~/\S\S+/
- @rc['program_select']['console_www_browser']
- elsif defined? @rc['program_select']['console_web_browser'] \
- and @rc['program_select']['console_web_browser'] =~/\S\S+/
- @rc['program_select']['console_web_browser']
- else 'console-www-browser' #'lynx' 'links' 'links2' 'elinks' 'w3m'
- end
- end
- def console_www_browser
- web_browser
- end
- def epub_viewer
- ((defined? @rc['program_select']['epub_viewer']) \
- && @rc['program_select']['epub_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['epub_viewer']
- : 'ebook-viewer' #'calibre' 'fbreader'
- end
- def xml_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
- def odf_viewer
- ((defined? @rc['program_select']['odf_viewer']) \
- && @rc['program_select']['odf_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['odf_viewer']
- : 'lowriter' #'odf-viewer','oowriter'
- end
- def manpage_viewer
- 'man'
- end
- def manpage_generator
- ((defined? @rc['program_select']['man']) \
- && @rc['program_select']['man'] =~/\S\S+/) \
- ? @rc['program_select']['man']
- : 'nroff -man' #'nroff -man' #'groff -man -Tascii'
- end
- def texinfo
- ((defined? @rc['program_select']['info_viewer']) \
- && @rc['program_select']['info_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['info_viewer']
- : 'pinfo -f' #'pinfo -f' 'info' 'tkinfo'
- end
- def file_encoding
- is=(defined? @rc['program_set']['file_encoding']) ? @rc['program_set']['encoding'] : ''
- (is.nil? || is==true) ? 'encoding' : is
- end
- def wc #wordcount
- is=(defined? @rc['program_set']['wc']) ? @rc['program_set']['wc'] : ''
- (is.nil? || is==true) ? 'wc' : is
- end
- def tidy
- is=(defined? @rc['program_set']['tidy']) ? @rc['program_set']['tidy'] : nil
- (is.nil? || is==true) ? 'tidy' : is
- end
- def rmagick
- is=(defined? @rc['program_set']['rmagick']) ? @rc['program_set']['rmagick'] : nil
- (is.nil? || is==true) ? 'rmagick' : is
- end
- def rexml #should be part of ruby 1.8 but apparently not always
- is=(defined? @rc['program_set']['rexml']) ? @rc['program_set']['rexml'] : ''
- (is.nil? || is==true) ? 'rexml' : is
- end
- def pdflatex
- is=(defined? @rc['program_set']['pdflatex']) ? @rc['program_set']['pdflatex'] : ''
- (is.nil? || is==true) ? 'pdflatex' : is
- end
- def postgresql
- is=(defined? @rc['program_set']['postgresql']) ? @rc['program_set']['postgresql'] : ''
- (is.nil? || is==true) ? 'postgresql' : is
- end
- def sqlite
- is=(defined? @rc['program_set']['sqlite']) ? @rc['program_set']['sqlite'] : ''
- (is.nil? || is==true) ? 'sqlite' : is
- end
- self
- end
- def i18n
- def language # language settings
- m=/.+\/\S+?\~(\S+)/
- pwd=Dir.pwd
- conf=(defined? @rc['default']['language']) ? @rc['default']['language'] : nil
- l=if pwd=~ m; pwd[m,1] #2 directory: by visible directory name
- elsif conf; @rc['default']['language'] #3 config: from sisurc.yaml
- else defaults[:language] #4 sisu: program default
- end #1 document: param gets
- SiSU_Env::StandardiseLanguage.new(l)
- end
- #def multilingual
- # x=(defined? @rc['output_structure']['multilingual'] \
- # && @rc['output_structure']['multilingual'] ==true) \
- # ? true : false
- #end
- #def bundle
- # x=(defined? @rc['output_structure']['bundle'] \
- # && @rc['output_structure']['bundle'] ==true) \
- # ? true : false
- #end
- def lang_filename(l)
- @lang={}
- x=if output_dir_structure.by_language_code?
- (( defined? @rc['default']['language_file']) \
- && @rc['default']['language_file'] != nil) \
- ? @rc['default']['language_file']
- : 1
- else 0
- end
- if (l != defaults[:language_code]) \
- or (language.code != defaults[:language_code]) #watch
- if x==1; @lang[:pre],@lang[:mid],@lang[:post]="#{l}.",'',''
- elsif x==2; @lang[:pre],@lang[:mid],@lang[:post]='',".#{l}",''
- elsif x==3; @lang[:pre],@lang[:mid],@lang[:post]='','',".#{l}"
- else @lang[:pre],@lang[:mid],@lang[:post]='','',''
- end
- else @lang[:pre],@lang[:mid],@lang[:post]='','',''
- end
- @lang
- end
- self
- end
- def file_encoding
- is=''
- if defined? @rc['program_set']['file_encoding']; is=@rc['program_set']['encoding']
- end
- if is.nil? \
- or is==true
- is='encoding'
- end
- is
- end
- def papersize # paper settings, default overidden in param if set within document
- (defined? @rc['default']['papersize']) \
- ? @rc['default']['papersize'].downcase
- : (defaults[:papersize].downcase)
- end
- def odf_structure
- FileUtils::rm_rf(processing_path.processing_path.odf_pth)
- FileUtils::mkdir_p(processing_path.processing_path.odf_pth)
- system("unzip -q #{path.share}/#{SiSU_version_dir}/odf/odt.zip -d #{processing_path.odf_pth}")
- end
- def sisupod_gen(fns_pod)
- sisupod_gen_v3(fns_pod)
- end
- def sisupod_gen_v3(fns_pod)
- pwd=Dir.pwd
- sisupod_processing_path="#{processing_path.processing}/sisupod"
- if FileTest.directory?(sisupod_processing_path) \
- or FileTest.file?(sisupod_processing_path)
- FileUtils::rm_rf(sisupod_processing_path)
- end
- unless FileTest.directory?(sisupod_processing_path)
- FileUtils::mkdir_p(sisupod_processing_path)
- end
- f_pod=if FileTest.file?("#{Dir.pwd}/#{fns_pod}")
- "#{Dir.pwd}/#{fns_pod}"
- elsif FileTest.file?(fns_pod)
- fns_pod
- end
- if f_pod \
- && FileTest.file?(f_pod)
- tree=(SiSU_Env::SystemCall.new.program_found?('tree')) \
- ? "tree #{processing_path.processing}/sisupod"
- : ''
- if FileTest.directory?(processing_path.processing)
- Dir.chdir(processing_path.processing)
- system(%{tar xJf #{f_pod}})
- Dir.chdir(pwd)
- end
- #system(tree) #enable if (/[vVM]/)
- else
- SiSU_Screen::Ansi.new('',"file not found: #{fns_pod}").warn unless @cmd=~/q/
- end
- sisupod_processing_path
- end
- def sisupod_gen_v2(fns_pod)
- pwd=Dir.pwd
- sisupod_processing_path="#{processing_path.processing}/sisupod"
- if FileTest.directory?(sisupod_processing_path) \
- or FileTest.file?(sisupod_processing_path)
- FileUtils::rm_rf(sisupod_processing_path)
- end
- unless FileTest.directory?(sisupod_processing_path)
- FileUtils::mkdir_p(sisupod_processing_path)
- end
- (FileTest.file?(fns_pod)) \
- ? system("unzip -q #{fns_pod} -d #{processing_path.processing}")
- : (SiSU_Screen::Ansi.new('',"file not found: #{fns_pod}").warn unless @cmd=~/q/)
- sisupod_processing_path
- end
- end
- class InfoProcessingFlag
- attr_accessor :color,:cf_0,:cf_1,:cf_2,:cf_3,:cf_4,:cf_5
- def initialize
- @rc=GetInit.instance.sisu_yaml.rc
- end
- def color #processing flag shortcuts
- (defined? @rc['flag']['color']) ? @rc['flag']['color'] : false
- end
- def cf_0 #processing flag shortcuts
- if defined? @rc['flag']['default'] \
- and not (@rc['flag']['default'].nil? \
- or @rc['flag']['default'].empty?)
- @rc['flag']['default']
- else '-NQhewpotbxXdyYv'
- end
- end
- def cf_1 #processing flag shortcuts
- if defined? @rc['flag']['i'] \
- and not (@rc['flag']['i'].nil? \
- or @rc['flag']['i'].empty?)
- @rc['flag']['i']
- else '-Qhewpoty'
- end
- end
- def cf_2 #processing flag shortcuts
- if defined? @rc['flag']['ii'] \
- and not (@rc['flag']['ii'].nil? \
- or @rc['flag']['ii'].empty?)
- @rc['flag']['ii']
- else '-NQhewpotbxXdy'
- end
- end
- def cf_3 #processing flag shortcuts
- if defined? @rc['flag']['iii'] \
- and not (@rc['flag']['iii'].nil? \
- or @rc['flag']['iii'].empty?)
- @rc['flag']['iii']
- else '-NQhewpotbxXdyY'
- end
- end
- def cf_4 #processing flag shortcuts
- if defined? @rc['flag']['iv'] \
- and not (@rc['flag']['iv'].nil? \
- or @rc['flag']['iv'].empty?)
- @rc['flag']['iv']
- else '-NQhewpotbxXdDyY --update'
- end
- end
- def cf_5 #processing flag shortcuts
- if defined? @rc['flag']['v'] \
- and not (@rc['flag']['v'].nil? \
- or @rc['flag']['v'].empty?)
- @rc['flag']['v']
- else '-NQhewpotbxXdDyYv --update'
- end
- end
- end
- class InfoSettings < InfoEnv
- def permission?(prog) #program defaults
- (defined? @rc['permission_set'][prog]) \
- ? @rc['permission_set'][prog]
- : false
- end
- def program?(prog) #program defaults
- (defined? @rc['program_set'][prog]) \
- ? @rc['program_set'][prog]
- : false
- end
- end
- class FileMap < InfoEnv
- attr_accessor :local_sisu_source
- def initialize(opt='') #watch / REVIEW
- super()
- @opt=opt #,opt.fns,opt.cmd
- @env=(@opt.fns && !(@opt.fns.empty?) \
- ? (SiSU_Env::InfoEnv.new(@opt.fns))
- : (SiSU_Env::InfoEnv.new('dummy.sst')))
- if @opt.cmd =~/m/; @md=SiSU_Param::Parameters.new(@opt).get
- end
- ft=[]
- if @md \
- and defined? @md.fn \
- and @md.fn # used for by_language_code?
- if @md.opt.cmd =~ /[hH]/
- ft << @md.fn[:html]
- end
- if @md.opt.cmd =~ /w/ \
- and @md.opt.cmd !~ /[hH]/
- ft << @md.fn[:concordance]
- end
- if @md.opt.cmd =~ /y/ \
- and @md.opt.cmd !~ /[hH]/
- ft << @md.fn[:manifest]
- end
- if @md.opt.cmd =~ /[at]/; ft << @md.fn[:plain]
- end
- if @md.opt.cmd =~ /b/; ft << @md.fn[:xhtml]
- end
- if @md.opt.cmd =~ /e/; ft << @md.fn[:epub]
- end
- if @md.opt.cmd =~ /g/; ft << @md.fn[:wiki]
- end
- if @md.opt.cmd =~ /i/; ft << @md.fn[:manpage]
- end
- if @md.opt.cmd =~ /N/; ft << @md.fn[:digest]
- end
- if @md.opt.cmd =~ /o/; ft << @md.fn[:odf]
- end
- if @md.opt.cmd =~ /O/; ft << @md.fn[:oai_pmh]
- end
- if @md.opt.cmd =~ /p/; ft << @md.fn[:pdf_l] << @md.fn[:pdf_p]
- end
- if @md.opt.cmd =~ /s/; ft << @md.fns
- end
- if @md.opt.cmd =~ /S/; ft << @md.fn[:sisupod] << '.kdi'
- end
- if @md.opt.cmd =~ /x/; ft << @md.fn[:sax]
- end
- if @md.opt.cmd =~ /X/; ft << @md.fn[:dom]
- end
- if @md.opt.cmd =~ /G/; ft << @md.fn[:pot]
- end
- @fnb=@md.fnb
- else # still needed where/when param is not parsed
- if @opt.cmd =~ /[hH]/; ft << '.html' << '.html.??'
- end
- if @opt.cmd =~ /w/ \
- and @opt.cmd !~ /[hH]/
- ft << 'concordance.html' << '??.concordance.html' << 'concordance.??.html'
- end
- if @opt.cmd =~ /y/ \
- and @opt.cmd !~ /[hH]/
- ft << 'sisu_manifest.html' << '??.sisu_manifest.html' << 'sisu_manifest.??.html'
- end
- if @opt.cmd =~ /a/; ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
- end
- if @opt.cmd =~ /b/; ft << 'scroll.xhtml' << '??.scroll.xhtml' << 'scroll.??.xhtml'
- end
- if @opt.cmd =~ /e/; ft << @fnb << '.epub'
- end
- if @opt.cmd =~ /g/; ft << 'wiki.txt' << '??.wiki.txt' << 'wiki.??.txt'
- end
- if @opt.cmd =~ /i/; ft << '.1' << '??.man.1' << 'man.??.1'
- end
- if @opt.cmd =~ /N/; ft << 'digest.txt' << '??.digest.txt' << 'digest.??.txt'
- end
- if @opt.cmd =~ /o/; ft << 'opendocument.odt' << '??.opendocument.odt' << 'opendocument.??.odt'
- end
- if @opt.cmd =~ /O/; ft << 'oai_pmh.xml'
- end
- if @opt.cmd =~ /p/; ft << 'landscape.pdf' << 'portrait.pdf' << '.pdf'
- end
- if @opt.cmd =~ /s/; ft << '.sst' << '.ssi' << '.ssm'
- end
- if @opt.cmd =~ /S/; ft << '.zip' << '.kdi'
- end
- if @opt.cmd =~ /x/; ft << 'sax.xml' << '??.sax.xml' << 'sax.??.xml'
- end
- if @opt.cmd =~ /X/; ft << 'dom.xml' << '??.dom.xml' << 'dom.??.xml'
- end
- if @opt.mod.inspect =~ /sxm|sxs|xml/; ft << @fnb << '.sxs.xml'
- end
- if @opt.mod.inspect =~ /sxd/; ft << @fnb << '.sxd.xml'
- end
- if @opt.mod.inspect =~ /sxn/; ft << @fnb << '.sxn.xml'
- end
- end
- ft=ft.uniq
- filetypes=ft.join(',')
- @filetypes=if filetypes !~/..+/; '' # -r called alone, copy all
- elsif @opt.cmd =~/u/; '' # -u added, copy all, (used to create remote directory tree see output path), not the usual function of -u
- elsif filetypes =~/\S+?,\S+/; '*{' + filetypes + '}' # more than one relevant file type
- else '*' + filetypes # one relevant file type
- end
- @source_path=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/#{@fnb}"
- : @env.path.output)
- @source_path_epub=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/epub"
- : @env.path.output_epub)
- @source_path_src=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/src"
- : @env.path.output_src)
- @source_path_pod=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/pod"
- : @env.path.output_pod)
- @source_path_harvest=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/manifest"
- : @env.path.output_harvest)
- @local_sisu_source=(@filetypes =~/\S/) \
- ? "#{@source_path}/#{@filetypes}"
- : @source_path
- end
- end
- class CleanOutput
- require 'fileutils'
- include FileUtils::Verbose
- def initialize(opt)
- @opt=opt
- z=SiSU_Env::FileMap.new(@opt)
- @zap=z.local_sisu_source
- if @opt.cmd =~ /[hH]/
- @zap=Dir.glob(@zap).join(' ')
- @zap=if @opt.cmd !~ /w/
- @zap.gsub(/#{@source_path}\/concordance.html/,'')
- else @zap
- end
- end
- @env=SiSU_Env::InfoEnv.new
- end
- def zap
- def main_output
- (@zap !~/\/\//) \
- ? (FileUtils::rm_rf(@zap) if FileTest.directory?(@zap))
- : (puts 'suspect zap request, ignored')
- end
- def site_map
- if @opt.fnb \
- and not @opt.fnb.empty?
- sm="#{@env.path.output}/sitemaps/sitemap_#{@opt.fnb}.xml"
- FileUtils::rm(sm) if FileTest.file?(sm)
- end
- end
- def epub
- if @opt.fnb \
- and not @opt.fnb.empty?
- sm="#{@env.path.output}/epub/#{@opt.fnb}.epub"
- FileUtils::rm(sm) if FileTest.file?(sm)
- end
- end
- def src # consider
- if @opt.fnb \
- and not @opt.fnb.empty?
- sm="#{@env.path.output}/src/pod/#{@opt.fns}.txz"
- FileUtils::rm(sm) if FileTest.file?(sm)
- sm="#{@env.path.output}/src/#{@opt.fns}"
- FileUtils::rm(sm) if FileTest.file?(sm)
- end
- end
- self
- end
- end
- class InfoRemoteHost
- def initialize
- @rc=GetInit.instance.sisu_yaml.rc
- end
- def remote_host #see InfoRemote remote_host_base_general
- r=[]
- r=if (defined? @rc['remote'] \
- and @rc['remote'].class==Array)
- r_array=@rc['remote']
- r_array.each_with_index do |renv,i|
- r[i]={}
- if defined? renv['user'] \
- and defined? renv['host']
- end
- r[i][:user]=renv['user']
- r[i][:host]=renv['host']
- r[i][:path]=if defined? renv['path']
- renv['path']
- else ''
- end
- r[i][:name]="#{r[i][:user]}@#{r[i][:host]}:#{r[i][:path]}"
- end
- r
- elsif (defined? @rc['remote'] \
- and @rc['remote'].class==Hash \
- and defined? @rc['remote']['user'] \
- and defined? @rc['remote']['host'])
- r[0]={}
- r[0][:user]=@rc['remote']['user']
- r[0][:host]=@rc['remote']['host']
- r[0][:path]=if defined? @rc['remote']['path']
- @rc['remote']['path']
- else ''
- end
- r[0][:name]="#{r[0][:user]}@#{r[0][:host]}:#{r[0][:path]}"
- r
- else
- r[0]={}
- r[0][:name]='.'
- r[0][:user]=''
- r[0][:host]=''
- r[0][:path]=''
- #puts "no remote host or user"
- r
- end
- end
- def rhost
- def r1
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[0][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[0][:name])
- : nil
- end
- def r2
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[1][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[1][:name])
- : nil
- end
- def r3
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[2][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[2][:name])
- : nil
- end
- def r4
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[3][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[3][:name])
- : nil
- end
- def r5
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[4][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[4][:name])
- : nil
- end
- def r6
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[5][:name]) \
- ? (@ls + SiSU_Env::InfoRemoteHost.new.remote_host[5][:name])
- : nil
- end
- self
- end
- end
- class InfoRemote < FileMap
- @@flag_remote=false
- require 'socket'
- def initialize(opt)
- super(opt) #
- @opt=opt
- @rc=GetInit.instance.sisu_yaml.rc
- end
- def remote_host_base_general
- SiSU_Env::InfoRemoteHost.new.remote_host
- end
- def remote_host_base
- remote_host_base_general.each do |remote_conn|
- @@flag_remote=true if remote_conn[:name] =~/\S+?@\S+/
- end
- remote_host_base_general
- end
- def scp #sort out later using ruby libraries #not ideal, first time each file is sent, -r must be called separately for subdir to be built
- def document
- self.remote_host_base.each do |remote_conn|
- local_gen=@source_path
- remote_gen=case @opt.cmd
- when /u/; "#{remote_conn[:name]}/#{@env.path.stub_pwd}/." #creates remote directory tree, this is not the usual function of u
- when /[abhHNopwxXy]/; "#{remote_conn[:name]}/#{@env.path.stub_pwd}/#{@fnb}/."
- else "#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- end
- local_epub=@source_path_epub
- local_src=@source_path_src
- local_pod=@source_path_pod
- remote_epub="#{remote_conn[:name]}/#{@env.path.stub_epub}/."
- remote_src="#{remote_conn[:name]}/#{@env.path.stub_src}/."
- remote_pod="#{remote_conn[:name]}/#{@env.path.stub_pod}/."
- src_txt=@opt.fnc
- src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.txz')
- if (local_gen =~/\S/ \
- and local_gen !~/\/\//) \
- and (remote_gen =~/\S/ \
- and remote_gen !~/\/\//) \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- SiSU_Env::SystemCall.new(local_gen,remote_gen).scp
- if FileTest.file?("#{local_src}/#{src_txt}")
- SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src).scp
- end
- if FileTest.file?("#{local_pod}/#{src_pod}")
- SiSU_Env::SystemCall.new("#{local_src}/#{src_pod}",remote_pod).scp
- end
- if FileTest.file?("#{local_epub}/#{@opt.fnb}.epub")
- SiSU_Env::SystemCall.new("#{local_epub}/#{@opt.fnb}.epub",remote_epub,@opt.cmd).scp
- end
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "#{local_gen} -> #{remote_gen}"
- if FileTest.file?("#{local_src}/#{src_doc}")
- puts "#{local_src}/#{src_doc}* -> #{remote_src}"
- end
- if FileTest.file?("#{local_pod}/#{src_doc}.txz")
- puts "#{local_pod}/#{src_doc}* -> #{remote_pod}"
- end
- else
- puts 'suspect scp request, ignored'
- puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}"
- puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- def site_base #base site
- self.remote_host_base.each do |remote_conn|
- local=@source_path
- remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- if defined? @rc['permission_set']['remote_base_site'] \
- and @rc['permission_set']['remote_base_site'] \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- puts "begin scp_base: #{local} -> #{remote}"
- SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "begin scp_base: #{local} -> #{remote}"
- puts "#{local}/#{@env.path.style}/ -> #{remote}"
- else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- def site_base_all #base site
- self.remote_host_base.each do |remote_conn|
- local=@source_path
- remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- if defined? @rc['permission_set']['remote_base_site'] \
- and @rc['permission_set']['remote_base_site'] \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- puts "begin scp_base_all: #{local} -> #{remote}"
- SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).scp
- SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).scp
- SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "scp_base_all: #{local} -> #{remote}"
- puts "#{local}/_sisu/image_sys/ -> #{remote}"
- puts "#{local}/_sisu/image/ -> #{remote}"
- puts "#{local}/#{@env.path.style}/ -> #{remote}"
- else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- self
- end
- def images_from_skin
- skin=SiSU_Env::InfoSkin.new(@md).select
- skin_array=nil
- skin_images_array=[]
- if skin
- skin_array=IO.readlines(skin,"\n")
- skin_array.each do |l|
- if l !~/^#/
- if l =~/([a-z0-9._-]+\.(?:png|jpg|gif))/i
- skin_images_array << $1
- end
- end
- end
- end
- skin_images_array
- end
- def rsync
- @f=SiSU_Env::FileOp.new(@md)
- def document
- self.remote_host_base.each do |remote_conn|
- local_gen=@source_path
- #local_gen_image="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image"
- #local_gen_image_external="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external"
- remote_gen="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- remote_rel=remote_conn[:name] + '/' + @f.output_path.stub.rcp
- src_txt=@opt.fnc
- if (local_gen =~/\S/ \
- and local_gen !~/\/\//) \
- and (remote_gen =~/\S/ \
- and remote_gen !~/\/\//) \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
-# SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src,@opt.cmd).rsync
- delete_extra_files='--delete' # '--delete-after'
- inp=[]
- if (@opt.cmd =~/h/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.html_scroll.dir)
- inp << @f.output_path.html_seg.rel << @f.place_file.html_scroll.rel
- end
- if (@opt.cmd =~/w/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.html_concordance.dir)
- inp << @f.place_file.html_concordance.rel
- end
- if (@opt.cmd =~/e/ \
- || @opt.cmd =~/^-R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.epub.dir)
- inp << @f.place_file.epub.rel
- end
- if (@opt.cmd =~/o/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.odt.dir)
- inp << @f.place_file.odt.rel
- end
- if (@opt.cmd =~/b/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.xhtml.dir)
- inp << @f.place_file.xhtml.rel
- end
- if (@opt.cmd =~/x/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.xml_sax.dir)
- inp << @f.place_file.xml_sax.rel
- end
- if (@opt.cmd =~/X/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.xml_dom.dir)
- inp << @f.place_file.xml_dom.rel
- end
- if (@opt.cmd =~/[at]/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.txt.dir)
- inp << @f.place_file.txt.rel
- end
- if (@opt.cmd =~/i/ \
- || @opt.cmd =~/^-[mqvVM]*i[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.manpage.dir)
- inp << @f.place_file.manpage.rel
- end
- if (@opt.cmd =~/I/ \
- || @opt.cmd =~/^-[mqvVM]*I[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.info.dir)
- inp << @f.place_file.info.rel
- end
- if (@opt.cmd =~/N/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.hash_digest.dir)
- inp << @f.place_file.hash_digest.rel
- end
- if (@opt.cmd =~/s/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.src.dir)
- inp << @f.place_file.src.rel
- end
- if (@opt.cmd =~/S/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.sisupod.dir)
- inp << @f.place_file.sisupod.rel
- end
- if (@opt.cmd =~/p/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/)
- inp << @f.output_path.pdf.rel + '/' + @opt.fnb + '*'
- end
- if (@opt.cmd =~/Q/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.qrcode_md.dir)
- inp << @f.place_file.qrcode_md.rel << @f.place_file.qrcode_title.rel
- end
- if (@opt.cmd =~/y/ \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(@f.place_file.manifest.dir)
- inp << @f.place_file.manifest.rel
- end
- local_gen=if inp.length > 0
- inp.join(' ')
- else ''
- end
- local_css,images,images_external,images_system='','','',''
- images_gen=images=images_skin=images_system=local_css=''
- if @opt.cmd =~/[hwbxX]/ \
- && (defined? @md.ec[:image]) \
- && (@md.ec[:image].length > 0)
- images=@f.place_file.images.rel + '/' + @md.ec[:image].join(" #{@f.output_path.images.rel}/")
- end
- if @opt.cmd =~/[yhwbxX]/ \
- && (defined? @md.ec[:image]) \
- && (@md.ec[:image].length > 0)
- local_css=@f.output_path.css.rel
- images_system='_sisu/image_sys'
- if @f.output_path.images.rel.length > 0 \
- && images_from_skin.length > 0
- images_skin=@f.place_file.images.rel + '/' + images_from_skin.join(" #{@f.output_path.images.rel}/")
- end
- end
- begin
- ##create file structure without copying files?:
- ##rsync -av -f"+ */" -f"- *" @f.output_path.base.dir remote:./path/.
- #local_dirs=%{-f"+ */" -f"- *" #{@f.output_path.base.dir}/*}
- #SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
- local=local_gen + ' ' + images + ' ' + images_skin + ' ' + images_system + ' ' + local_css
- SiSU_Env::SystemCall.new(local,remote_rel,@opt.cmd).rsync('--relative',@f.output_path.base.dir)
- rescue
- p __LINE__.to_s + ':' + __FILE__
- local_dirs=%{--include='*/' --exclude='*' #{@f.output_path.base.dir}}
- SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
- end
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "#{local_gen} -> #{remote_gen}"
- if FileTest.file?("#{local_src}/#{src_doc}") \
- or FileTest.file?("#{local_src}/#{src_doc}.txz")
- puts "#{local_src}/#{src_doc}* -> #{remote_src}"
- end
- else
- puts 'suspect rsync request, ignored'
- puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}"
- puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- def site_base #base site
- ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu"
- image_sys="#{@env.path.webserv}/_sisu/image_sys"
- images="#{@env.path.webserv}/_sisu/image"
- self.remote_host_base.each do |remote_conn|
- remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- remote_conf="#{remote_conn[:name]}/_sisu"
- if defined? @rc['permission_set']['remote_base_site'] \
- and @rc['permission_set']['remote_base_site'] \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- SiSU_Env::SystemCall.new("#{image_sys}","#{remote_conf}").rsync
- SiSU_Env::SystemCall.new("#{images}","#{remote_conf}").rsync
- SiSU_Env::SystemCall.new("#{ldest}","#{remote}").rsync
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "rsync_base: #{local} -> #{remote}"
- puts "#{local}/_sisu/image -> #{remote}"
- puts "#{local}/_sisu/image_sys/ -> #{remote}"
- puts "#{local}/#{@env.path.style}/ -> #{remote}"
- else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- def site_base_sync
- self.remote_host_base.each do |remote_conn|
- local=@source_path
- remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- if defined? @rc['permission_set']['remote_base_site'] \
- and @rc['permission_set']['remote_base_site'] \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- delete_extra_files='--delete' # '--delete-after'
- puts "begin rsync_base_sync: #{local} -> #{remote}"
- SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).rsync(delete_extra_files)
- SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).rsync(delete_extra_files)
- SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).rsync(delete_extra_files)
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "rsync_base_sync: #{local} -> #{remote}"
- puts "#{local}/_sisu/image_sys/ -> #{remote}"
- puts "#{local}/_sisu/image/ -> #{remote}"
- puts "#{local}/#{@env.path.style}/ -> #{remote}"
- else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- self
- end
- def rsync_sitemaps #sitemap directory
- self.remote_host_base.each do |remote_conn|
- local="#{@source_path}/sitemapindex.xml"
- remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- if @@flag_remote
- delete_extra_files='--delete' # '--delete-after'
- SiSU_Env::SystemCall.new(local,remote).rsync(delete_extra_files)
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "rsync_sitemaps: #{local} -> #{remote}"
- else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- def rsync_harvest
- self.remote_host_base.each do |remote_conn|
- local=@source_path_harvest
- remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/."
- if @@flag_remote
- delete_extra_files='--delete' # '--delete-after'
- SiSU_Env::SystemCall.new(local,remote).rsync(delete_extra_files)
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "rsync_sitemaps: #{local} -> #{remote}"
- else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- end
- class InfoVersion <InfoEnv
- include Singleton
- require 'rbconfig'
- @@lib_path=nil
- def get_version
- @version={}
- @pwd=ENV['PWD']
- yst_ver="#{defaults[:sisu_share]}/#{SiSU_version_dir}/v/version.yml"
- lib_path=@@lib_path ? @@lib_path : `echo $RUBYLIB`.split(':')
- @@lib_path ||=lib_path
- if File.exist?(yst_ver); @version=YAML::load(File::open(yst_ver)) #unless @@noyaml
- end
- @version
- end
- def rbversion
- %x{ruby -v}.strip
- end
- end
- class CreateSystemLink #revisit problems created 2004w41
- require 'fileutils'
- include FileUtils::Verbose
- def initialize
- @env=SiSU_Env::InfoEnv.new
- end
- def images
- unless FileTest.directory?("#{@env.path.output}/_sisu")
- FileUtils::mkdir_p("#{@env.path.output}/_sisu")
- end
- unless File.exist?("#{@env.path.output}/_sisu/image_sys") \
- or File.symlink?("#{@env.path.output}/_sisu/image_sys")
- File.symlink("../../_sisu/image_sys", "#{@env.path.output}/_sisu/image_sys")
- end
- end
- def man_forms
- #File.symlink("../../man/form", "#{@env.path.output}/man/form") unless File.symlink?("#{@env.path.output}/man/form")==true
- end
- def man_pdf
- #File.symlink("../../man/form", "#{@env.path.output}/man/pdf") unless File.symlink?("#{@env.path.output}/man/pdf")==true
- end
- end
- class InfoFile <InfoEnv #todo unify with FileOp
- def initialize(fns)
- begin
- super(fns)
- @fns=fns
- @env=SiSU_Env::InfoEnv.new(@fns)
- m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm)$/ #watch added match for sss
- @fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3]
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@fns,$!,$@).rescue
- ensure
- end
- end
- def basefilename #Remove if possible
- m=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/m
- fnb=@fns[m,1]
- end
- def make_file(path,filename)
- (File.writable?("#{path}/.")) \
- ? File.new("#{path}/#{filename}",'w+')
- : (SiSU_Screen::Ansi.new('',"is the file or directory writable?, could not create #{filename}").warn)
- end
- def touch_file(path,filename)
- if File.writable?("#{path}/.");
- FileUtils::touch("#{path}/#{filename}")
- else SiSU_Screen::Ansi.new('',"is the file or directory writable?, could not create #{filename}").warn
- end
- end
- def make_path(path)
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- end
- def marshal
- def dal_content
- "#{@env.processing_path.dal}/#{@fns}.content.rbm"
- end
- def dal_idx_sst_rel_html_seg
- "#{@env.processing_path.dal}/#{@fns}.idx_sst.rbm"
- end
- def dal_idx_sst_rel
- "#{@env.processing_path.dal}/#{@fns}.idx_tex.rbm"
- end
- def dal_idx_html
- "#{@env.processing_path.dal}/#{@fns}.idx_html.rbm"
- end
- def dal_idx_xhtml
- "#{@env.processing_path.dal}/#{@fns}.idx_xhtml.rbm"
- end
- def dal_metadata
- "#{@env.processing_path.dal}/#{@fns}.metadata.rbm"
- end
- def dal_map_nametags
- "#{@env.processing_path.dal}/#{@fns}.map_name_tags.rbm"
- end
- def dal_map_ocn_htmlseg
- "#{@env.processing_path.dal}/#{@fns}.map_ocn_htmlseg.rbm"
- end
- def html_tune
- "#{@env.processing_path.tune}/#{@fns}.marshal_tune"
- end
- self
- end
- def write_file_processing
- def html_tune
- File.new("#{@env.processing_path.tune}/#{@fns}.tune",'w+')
- end
- self
- 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)
- end
- def tune
- FileUtils::mkdir_p(@env.processing_path.tune) unless FileTest.directory?(@env.processing_path.tune)
- end
- self
- end
- end
- end
- class ProcessingSettings
- def initialize(md)
- @md=md
- end
- def cnf_rc #sisurc.yml
- @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc
- end
- def env_rc #env rc (including sisurc.yml)
- @env_rc ||=SiSU_Env::InfoEnv.new(@md.fns)
- end
- def doc_rc #document rc, make instructions
- @md.make
- end
- def cmd_rc #command-line rc
- @cmd_rc=@md.opt.opt_act
- end
- def build
- def ocn?
- if cmd_rc[:ocn][:set]==:on
- true
- elsif cmd_rc[:ocn][:set]==:off
- false
- elsif @md.make.ocn? ==:off
- false
- elsif env_rc.build.ocn? ==:off
- false
- else
- true
- end
- end
- def toc?
- if cmd_rc[:toc][:set]==:on
- true
- elsif cmd_rc[:toc][:set]==:off
- false
- elsif @md.make.toc? ==:off
- false
- elsif env_rc.build.toc? ==:off
- false
- else
- true
- end
- end
- def manifest?
- if cmd_rc[:manifest][:set]==:on
- true
- elsif cmd_rc[:manifest][:set]==:off
- false
- elsif @md.make.manifest? ==:off
- false
- elsif env_rc.build.manifest? ==:off
- false
- else
- true
- end
- end
- def links_to_manifest?
- if cmd_rc[:links_to_manifest][:set]==:on
- true
- elsif cmd_rc[:links_to_manifest][:set]==:off
- false
- elsif @md.make.links_to_manifest? ==:off
- false
- elsif env_rc.build.links_to_manifest? ==:off
- false
- else
- true
- end
- end
- def metadata?
- if cmd_rc[:metadata][:set]==:on
- true
- elsif cmd_rc[:metadata][:set]==:off
- false
- elsif @md.make.metadata? ==:off
- false
- elsif env_rc.build.metadata? ==:off
- false
- else
- true
- end
- end
- def minitoc?
- if html_top_band? == false #one form of navigation necessary
- true
- elsif cmd_rc[:minitoc][:set]==:on
- true
- elsif cmd_rc[:minitoc][:set]==:off
- false
- elsif @md.make.minitoc? ==:off
- false
- elsif env_rc.build.minitoc? ==:off
- false
- else
- true
- end
- end
- def manifest_minitoc?
- if html_top_band? == false #one form of navigation necessary
- true
- elsif cmd_rc[:manifest_minitoc][:set]==:on \
- || cmd_rc[:minitoc][:set]==:on
- true
- elsif cmd_rc[:manifest_minitoc][:set]==:off \
- || cmd_rc[:minitoc][:set]==:off
- false
- elsif @md.make.manifest_minitoc? ==:off \
- || @md.make.minitoc? ==:off
- false
- elsif env_rc.build.manifest_minitoc? ==:off \
- || env_rc.build.minitoc? ==:off
- false
- elsif minitoc? == false
- false
- else
- true
- end
- end
- def html_minitoc?
- if html_top_band? == false #one form of navigation necessary
- true
- elsif cmd_rc[:html_minitoc][:set]==:on \
- || cmd_rc[:minitoc][:set]==:on
- true
- elsif cmd_rc[:html_minitoc][:set]==:off \
- || cmd_rc[:minitoc][:set]==:off
- false
- elsif @md.make.html_minitoc? ==:off \
- || @md.make.minitoc? ==:off
- false
- elsif env_rc.build.html_minitoc? ==:off \
- || env_rc.build.minitoc? ==:off
- false
- elsif minitoc? == false
- false
- else
- true
- end
- end
- def html_top_band?
- if cmd_rc[:html_top_band][:set]==:on
- true
- elsif cmd_rc[:html_top_band][:set]==:off
- false
- elsif @md.make.html_top_band? ==:off
- false
- elsif env_rc.build.html_top_band? ==:off
- false
- else
- true
- end
- end
- def html_navigation?
- if cmd_rc[:html_navigation][:set]==:on
- true
- elsif cmd_rc[:html_navigation][:set]==:off
- false
- elsif @md.make.html_navigation? ==:off
- false
- elsif env_rc.build.html_navigation? ==:off
- false
- else
- true
- end
- end
- def html_navigation_bar?
- if cmd_rc[:html_navigation_bar][:set]==:on
- true
- elsif cmd_rc[:html_navigation_bar][:set]==:off
- false
- elsif @md.make.html_navigation_bar? ==:off
- false
- elsif env_rc.build.html_navigation_bar? ==:off
- false
- else
- true
- end
- end
- def search_form?
- if cmd_rc[:search_form][:set]==:on
- true
- elsif cmd_rc[:search_form][:set]==:off
- false
- elsif @md.make.search_form? ==:off
- false
- elsif env_rc.build.search_form? ==:off
- false
- else
- true
- end
- end
- def html_search_form?
- if cmd_rc[:html_search_form][:set]==:on \
- || cmd_rc[:search_form][:set]==:on
- true
- elsif cmd_rc[:html_search_form][:set]==:off \
- || cmd_rc[:search_form][:set]==:off
- false
- elsif @md.make.html_search_form? ==:off \
- || @md.make.search_form? ==:off
- false
- elsif env_rc.build.html_search_form? ==:off \
- || env_rc.build.search_form? ==:off
- false
- elsif search_form? == false
- false
- else
- true
- end
- end
- def html_right_pane?
- if cmd_rc[:html_right_pane][:set]==:on
- true
- elsif cmd_rc[:html_right_pane][:set]==:off
- false
- elsif @md.make.html_right_pane? ==:off
- false
- elsif env_rc.build.html_right_pane? ==:off
- false
- else
- true
- end
- end
- def segsubtoc?
- if cmd_rc[:segsubtoc][:set]==:on
- true
- elsif cmd_rc[:segsubtoc][:set]==:off
- false
- elsif @md.make.segsubtoc? ==:off
- false
- elsif env_rc.build.segsubtoc? ==:off
- false
- else
- true
- end
- end
- self
- end
- def output_dir_structure
- def by_language_code?
- env_rc.output_dir_structure.by_language_code?
- end
- def by_filetype?
- env_rc.output_dir_structure.by_filetype?
- end
- def by_filename?
- env_rc.output_dir_structure.by_filename?
- end
- def multilingual?
- by_language_code?
- end
- def dump?
- ((cmd_rc[:dump][:bool] \
- && cmd_rc[:dump][:inst]) \
- || (env_rc.output_dir_structure.dump?)) \
- ? true
- : false
- end
- def redirect?
- ((cmd_rc[:redirect][:bool] \
- && cmd_rc[:redirect][:inst]) \
- || (env_rc.output_dir_structure.redirect?)) \
- ? true
- : false
- end
- def dump_or_redirect?
- ((dump?) || (redirect?)) \
- ? true
- : false
- end
- def by?
- if dump?
- :dump
- elsif redirect?
- :redirect
- elsif by_language_code?
- :language
- elsif by_filetype?
- :filetype
- elsif by_filename?
- :filename
- else #recheck current default
- :language
- end
- end
- self
- end
- end
- class InfoDb < InfoEnv
- @@rc=nil
- def initialize
- @@pwd ||=Dir.pwd
- @pwd=Dir.pwd
- @env=SiSU_Env::InfoEnv.new
- pt=Pathname.new(@pwd)
- r=Px[:lng_lst].join('|')
- u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
- @pwd_stub=pt.realpath.to_s[u,1]
- @rc=@@rc ||=GetInit.instance.sisu_yaml.rc
- @defaults=SiSU_Env::InfoEnv.new.defaults
- end
- def share_source?
- ((defined? @rc['db']['share_source']) \
- && @rc['db']['share_source']==true) \
- ? @rc['db']['share_source']
- : false
- end
- def engine
- def default
- ((defined? @rc['db']['engine']['default']) \
- && @rc['db']['engine']['default']=~/postgresql|sqlite/) \
- ? @rc['db']['engine']['default']
- : 'sqlite'
- end
- self
- end
- def psql
- def user
- ((defined? @rc['db']['postgresql']['user']) \
- && @rc['db']['postgresql']['user']=~/\S+/) \
- ? @rc['db']['postgresql']['user']
- : @env.user
- end
- def db #db_name
- "#{Db[:name_prefix]}#{@pwd_stub}"
- end
- def port #PGPORT
- ((defined? @rc['db']['postgresql']['port']) \
- && ( @rc['db']['postgresql']['port'] =~/\d+/ \
- || @rc['db']['postgresql']['port'].class==Fixnum)) \
- ? @rc['db']['postgresql']['port']
- : (@defaults[:postgresql_port])
- end
- def password
- ((defined? @rc['db']['postgresql']['password']) \
- && @rc['db']['postgresql']['password']=~/\S+/) \
- ? @rc['db']['postgresql']['password']
- : ''
- end
- def host
- ((defined? @rc['db']['postgresql']['host']) \
- && @rc['db']['postgresql']['host']=~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
- ? @rc['db']['postgresql']['host']
- : ''
- end
- def dbi
- (psql.host =~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
- ? "DBI:Pg:database=#{psql.db};host=#{psql.host};port=#{psql.port}"
- : "DBI:Pg:database=#{psql.db};port=#{psql.port}"
- end
- def conn_dbi
- DBI.connect(psql.dbi,psql.user,psql.db)
- end
- self
- end
- def mysql
- def db
- #"#{Db[:name_prefix]}#{@pwd_stub}"
- end
- def port
- '**'
- end
- def dbi
- "dbi:Mysql:database=#{mysql.db};port=#{mysql.port}"
- end
- self
- end
- def sqlite
- def db
- "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
- end
- def db_discreet(md)
- # "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
- end
- def dbi
- "DBI:SQLite3:#{sqlite.db}" #sqlite3 ?
- end
- def sqlite3
- sqlite.db #sqlite3 ?
- end
- def conn_dbi
- DBI.connect(sqlite.dbi)
- end
- def conn_sqlite3
- SQLite3::Database.new(sqlite.sqlite3)
- end
- self
- end
- end
- class DbOp <InfoDb
- def initialize(md)
- begin
- @md=md
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue
- ensure
- end
- end
- def sqlite_discreet
- def db
- "#{@md.file.output_path.sqlite_discreet.dir}/#{@md.file.base_filename.sqlite_discreet}"
- end
- def dbi
- "DBI:SQLite3:#{sqlite_discreet.db}"
- end
- def sqlite3
- sqlite_discreet.db
- end
- def conn_dbi
- DBI.connect(sqlite_discreet.dbi)
- end
- def conn_sqlite3
- SQLite3::Database.new(sqlite_discreet.sqlite3)
- end
- self
- end
- end
- class FileOp <InfoFile #todo unify with CreateFile
- def initialize(md,fno='')
- begin
- @md,@fno=md,fno
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue
- ensure
- end
- end
- def output_dir_structure
- ProcessingSettings.new(@md).output_dir_structure
- end
- def mkdir_initialize # not used but consider using
- 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.tune) unless FileTest.directory?(@env.processing_path.tune)
- end
- def mkdir
- txt_path="#{output_path.base.dir}/#{@md.fnb}"
- def output
- def base
- FileUtils::mkdir_p(output_path.base.dir) unless FileTest.directory?(output_path.base.dir)
- end
- def css
- FileUtils::mkdir_p("#{output_path.base.dir}/#{@env.path.style}") unless FileTest.directory?("#{output_path.base.dir}/#{@env.path.style}")
- end
- def epub
- path=output_path.epub.dir
- make_path(path)
- end
- self
- end
- self
- end
- def mkfile #consider using more
- path="#{output_path.base.dir}/#{@md.fnb}"
- make_path(path)
- filename=@fno
- file=make_file(path,filename)
- end
- def mkfile_pwd
- path=Dir.pwd
- filename=@fno
- file=make_file(path,filename)
- end
- def write_file
- def txt
- path=output_path.txt.dir
- make_path(path)
- fn=base_filename.txt
- make_file(path,fn)
- end
- def html_scroll
- pth=output_path.html.dir
- make_path(pth)
- p_fn=place_file.html_scroll.dir
- @@filename_html_scroll=File.new(p_fn,'w+')
- end
- def html_seg_index
- pth=((by_filename?) \
- || (output_dir_structure.dump?)) \
- ? "#{output_path.html.dir}"
- : "#{output_path.html.dir}/#{@md.fnb}"
- fn=base_filename.html_seg_index
- make_path(pth)
- p_fn=place_file.html_seg_index.dir
- @@filename_html_index=File.new(p_fn,'w+')
- end
- def html_segtoc
- pth=((by_filename?) \
- || (output_dir_structure.dump?)) \
- ? "#{output_path.html.dir}"
- : "#{output_path.html.dir}/#{@md.fnb}"
- fn=base_filename.html_segtoc
- make_path(pth)
- p_fn=place_file.html_segtoc.dir
- @@filename_html_index=File.new(p_fn,'w+')
- end
- def xhtml
- path=output_path.xhtml.dir
- make_path(path)
- fn=base_filename.xhtml
- file=make_file(path,fn)
- end
- def xml_sax
- path=output_path.xml.dir
- make_path(path)
- fn=base_filename.xml_sax
- file=make_file(path,fn)
- end
- def xml_dom
- path=output_path.xml.dir
- make_path(path)
- fn=base_filename.xml_dom
- file=make_file(path,fn)
- end
- def manpage
- path=output_path.manpage.dir
- make_path(path)
- fn=base_filename.manpage
- file=make_file(path,fn)
- end
- def texinfo
- path=output_path.texinfo.dir
- make_path(path)
- fn=base_filename.texinfo
- file=make_file(path,fn)
- end
- def info
- path=output_path.texinfo.dir
- make_path(path)
- fn=base_filename.info
- file=make_file(path,fn)
- end
- def hash_digest
- path=output_path.hash_digest.dir
- make_path(path)
- fn=base_filename.hash_digest
- file=make_file(path,fn)
- end
- def qrcode
- path=output_path.qrcode.dir
- make_path(path)
- fn=base_filename.qrcode
- make_file(path,fn)
- end
- def manifest
- path=output_path.manifest.dir
- make_path(path)
- fn=base_filename.manifest
- make_file(path,fn)
- end
- def manifest_txt
- path=output_path.manifest.dir
- make_path(path)
- fn=base_filename.manifest_txt
- make_file(path,fn)
- end
- def pot
- path=output_path.pot.dir
- make_path(path)
- fn=base_filename.pot
- make_file(path,fn)
- end
- def po
- path=output_path.po.dir
- make_path(path)
- fn=base_filename.po
- make_file(path,fn)
- end
- self
- end
- def place_file
- def txt
- def dir
- output_path.txt.dir + '/' + base_filename.txt
- end
- def rel
- output_path.txt.rel + '/' + base_filename.txt
- end
- self
- end
- def html_scroll
- def dir
- output_path.html_scroll.dir + '/' + base_filename.html_scroll
- end
- def rel
- output_path.html_scroll.rel + '/' + base_filename.html_scroll
- end
- self
- end
- def html_seg_index
- def dir
- output_path.html_seg.dir + '/' + base_filename.html_seg_index
- end
- def rel
- output_path.html_seg.rel + '/' + base_filename.html_seg_index
- end
- self
- end
- def html_segtoc
- def dir
- output_path.html_seg.dir + '/' + base_filename.html_segtoc
- end
- def rel
- output_path.html_seg.rel + '/' + base_filename.html_segtoc
- end
- self
- end
- def html_book_index
- def dir
- output_path.html_seg.dir + '/' + base_filename.html_book_index
- end
- def rel
- output_path.html_seg.rel + '/' + base_filename.html_book_index
- end
- self
- end
- def html_concordance
- def dir
- output_path.html_seg.dir + '/' + base_filename.html_concordance
- end
- def rel
- output_path.html_seg.rel + '/' + base_filename.html_concordance
- end
- self
- end
- def odt
- def dir
- output_path.odt.dir + '/' + base_filename.odt
- end
- def rel
- output_path.odt.rel + '/' + base_filename.odt
- end
- self
- end
- def epub
- def dir
- output_path.epub.dir + '/' + base_filename.epub
- end
- def rel
- output_path.epub.rel + '/' + base_filename.epub
- end
- self
- end
- def pdf_p
- puts 'ERROR not available due to multiple page format sizes'
- end
- def pdf_l
- puts 'ERROR not available due to multiple page format sizes'
- end
- def xhtml
- def dir
- output_path.xhtml.dir + '/' + base_filename.xhtml
- end
- def rel
- output_path.xhtml.rel + '/' + base_filename.xhtml
- end
- self
- end
- def xml_sax
- def dir
- output_path.xml.dir + '/' + base_filename.xml_sax
- end
- def rel
- output_path.xml.rel + '/' + base_filename.xml_sax
- end
- self
- end
- def xml_dom
- def dir
- output_path.xml.dir + '/' + base_filename.xml_dom
- end
- def rel
- output_path.xml.rel + '/' + base_filename.xml_dom
- end
- self
- end
- def sqlite_discreet
- def dir
- output_path.sqlite_discreet.dir + '/' + base_filename.sqlite_discreet
- end
- def rel
- output_path.sqlite_discreet.rel + '/' + base_filename.sqlite_discreet
- end
- self
- end
- def hash_digest
- def dir
- output_path.hash_digest.dir + '/' + base_filename.hash_digest
- end
- def rel
- output_path.hash_digest.rel + '/' + base_filename.hash_digest
- end
- self
- end
- def src
- def dir
- output_path.src.dir + '/' + base_filename.src
- end
- def rel
- output_path.src.rel + '/' + base_filename.src
- end
- self
- end
- def sisupod
- def dir
- output_path.sisupod.dir + '/' + base_filename.sisupod
- end
- def rel
- output_path.sisupod.rel + '/' + base_filename.sisupod
- end
- self
- end
- def po
- def dir
- output_path.po.dir + '/' + base_filename.po
- end
- def rel
- output_path.po.rel + '/' + base_filename.po
- end
- self
- end
- def pot
- def dir
- output_path.pot.dir + '/' + base_filename.pot
- end
- def rel
- output_path.pot.rel + '/' + base_filename.pot
- end
- self
- end
- def po_git
- def dir
- output_path.po_git + '/' + base_filename.po
- end
- def rel
- #output_path.po_git + '/' + base_filename.po
- end
- self
- end
- def pot_git
- def dir
- output_path.pot_git + '/' + base_filename.pot
- end
- def rel
- #output_path.pot_git + '/' + base_filename.pot
- end
- self
- end
- def manpage
- def dir
- output_path.manpage.dir + '/' + base_filename.manpage
- end
- def rel
- output_path.manpage.rel + '/' + base_filename.manpage
- end
- self
- end
- def texinfo
- def dir
- output_path.texinfo.dir + '/' + base_filename.texinfo
- end
- def rel
- output_path.texinfo.rel + '/' + base_filename.texinfo
- end
- self
- end
- def info
- def dir
- output_path.texinfo.dir + '/' + base_filename.info
- end
- def rel
- output_path.texinfo.rel + '/' + base_filename.info
- end
- self
- end
- def qrcode_title
- def dir
- output_path.qrcode.dir + '/' + base_filename.qrcode_title
- end
- def rel
- output_path.qrcode.rel + '/' + base_filename.qrcode_title
- end
- self
- end
- def qrcode_md
- def dir
- output_path.qrcode.dir + '/' + base_filename.qrcode_md
- end
- def rel
- output_path.qrcode.rel + '/' + base_filename.qrcode_md
- end
- self
- end
- def manifest
- def dir
- output_path.manifest.dir + '/' + base_filename.manifest
- end
- def rel
- output_path.manifest.rel + '/' + base_filename.manifest
- end
- self
- end
- self
- end
- def base_filename
- def txt
- ft='.txt'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'plain' + @md.lang_code_insert + ft
- end
- end
- def html_scroll
- ft='.html'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'scroll' + @md.lang_code_insert + ft
- end
- end
- def html_seg_index
- ft='.html'
- if output_dir_structure.by_language_code?
- 'index' + ft
- else
- 'index' + @md.lang_code_insert + ft
- end
- end
- def html_segtoc
- ft='.html'
- if output_dir_structure.dump_or_redirect?
- @md.fnb + '.toc' + ft
- elsif output_dir_structure.by_language_code?
- 'toc' + ft
- else
- 'toc' + @md.lang_code_insert + ft
- end
- end
- def html_book_index
- ft='.html'
- if output_dir_structure.by_language_code?
- 'book_index' + ft
- else
- 'book_index' + @md.lang_code_insert + ft
- end
- end
- def html_concordance
- ft='.html'
- if output_dir_structure.dump_or_redirect?
- @md.fnb + '.concordance' + ft
- elsif output_dir_structure.by_language_code?
- 'concordance' + ft
- else
- 'concordance' + @md.lang_code_insert + ft
- end
- end
- def xhtml
- ft= '.xhtml'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'scroll' + @md.lang_code_insert + ft
- end
- end
- def epub
- ft='.epub'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- else
- @md.fnb + @md.lang_code_insert + ft
- end
- end
- def odt
- ft='.odt'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'opendocument' + @md.lang_code_insert + ft
- end
- end
- def xml_sax
- ft='.sax.xml'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'scroll' + @md.lang_code_insert + ft
- end
- end
- def xml_dom
- ft='.dom.xml'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'scroll' + @md.lang_code_insert + ft
- end
- end
- def pdf_p
- if output_dir_structure.by_language_code?
- @md.fnb + '.portrait.'
- else 'portrait' + @md.lang_code_insert + '.'
- end
- end
- def pdf_l
- if output_dir_structure.by_language_code?
- @md.fnb + '.landscape.'
- else 'landscape' + @md.lang_code_insert + '.'
- end
- end
- def pdf_p_a4
- pdf_p + @md.fn[:pdf_p_a4]
- end
- def pdf_p_a5
- pdf_p + @md.fn[:pdf_p_a5]
- end
- def pdf_p_b5
- pdf_p + @md.fn[:pdf_p_b5]
- end
- def pdf_p_letter
- pdf_p + @md.fn[:pdf_p_letter]
- end
- def pdf_p_legal
- pdf_p + @md.fn[:pdf_p_legal]
- end
- def pdf_l_a4
- pdf_l + @md.fn[:pdf_l_a4]
- end
- def pdf_l_a5
- pdf_l + @md.fn[:pdf_l_a5]
- end
- def pdf_l_b5
- pdf_l + @md.fn[:pdf_l_b5]
- end
- def pdf_l_letter
- pdf_l + @md.fn[:pdf_l_letter]
- end
- def pdf_l_legal
- pdf_l + @md.fn[:pdf_l_legal]
- end
- def manpage
- ft='1'
- if output_dir_structure.by_language_code?
- @md.fnb + '.' + ft
- else
- @md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
- end
- end
- def info
- ft='info'
- if output_dir_structure.by_language_code?
- @md.fnb + '.' + ft
- else
- @md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
- end
- end
- def texinfo
- ft='texinfo'
- if output_dir_structure.by_language_code?
- @md.fnb + '.' + ft
- else
- @md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
- end
- end
- def sqlite_discreet
- ft='.sql.db'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- else
- @md.fnb + @md.lang_code_insert + ft
- end
- end
- def hash_digest
- ft='.txt'
- if output_dir_structure.by_language_code?
- @md.fnb + '.hash_digest' + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'digest' + @md.lang_code_insert + ft
- end
- end
- def sitemap
- ft='.xml'
- if output_dir_structure.by_language_code?
- @md.fnb + '.sitemap' + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'sitemap' + @md.lang_code_insert + ft
- end
- end
- def qrcode_title
- ft='.title.png'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
- end
- end
- def qrcode_md
- ft='.md.png'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
- end
- end
- def manifest_txt
- ft='.txt'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
- end
- end
- def manifest
- ft='.html'
- if output_dir_structure.dump_or_redirect?
- @md.fnb + '.manifest' + ft
- elsif output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
- end
- end
- def src
- @md.fns
- end
- def po #check
- (@fno.empty?) \
- ? (@md.fn[:po])
- : (@fno + '.po')
- end
- def pot
- (@fno.empty?) \
- ? (@md.fn[:pot])
- : (@fno + '.pot')
- end
- def sisupod
- (@md.fns =~/\.ssm\.sst$/) \
- ? @md.fns.gsub(/(?:\~\S{2,3})?\.ssm\.sst$/,'.ssm.txz')
- : @md.fns.gsub(/(?:\~\S{2,3})?(\.sst)$/,'\1.txz')
- end
- self
- end
- def set_path(ft)
- @ft=ft
- def dir
- def abc
- if output_dir_structure.redirect?
- "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
- elsif output_dir_structure.dump?
- @md.opt.opt_act[:dump][:inst]
- elsif output_dir_structure.by_language_code?
- "#{output_path.base.dir}/#{@md.opt.lng}/#{@ft}"
- elsif output_dir_structure.by_filetype?
- "#{output_path.base.dir}/#{@ft}"
- else
- "#{output_path.base.dir}/#{@md.fnb}"
- end
- end
- def ab
- if output_dir_structure.redirect?
- "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
- elsif output_dir_structure.dump?
- @md.opt.opt_act[:dump][:inst]
- elsif output_dir_structure.by_language_code?
- "#{output_path.base.dir}/#{@md.opt.lng}/#{@ft}"
- else
- "#{output_path.base.dir}/#{@ft}"
- end
- end
- def ab_src
- if output_dir_structure.redirect?
- "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
- elsif output_dir_structure.dump?
- @md.opt.opt_act[:dump][:inst]
- elsif output_dir_structure.by_language_code?
- "#{output_path.base.dir}/#{@ft}/#{@md.opt.lng}"
- else
- "#{output_path.base.dir}/#{@ft}"
- end
- end
- def ab_pod
- if output_dir_structure.redirect?
- "#{@md.opt.opt_act[:redirect][:inst]}/#{@md.fnb}"
- elsif output_dir_structure.dump?
- @md.opt.opt_act[:dump][:inst]
- else
- "#{output_path.base.dir}/#{@ft}"
- end
- end
- self
- end
- def url
- def abc
- if output_dir_structure.by_language_code?
- "#{output_path.base.url}/#{@md.opt.lng}/#{@ft}"
- elsif output_dir_structure.by_filetype?
- "#{output_path.base.url}/#{@ft}"
- else
- "#{output_path.base.url}/#{@md.fnb}"
- end
- end
- def ab
- if output_dir_structure.by_language_code?
- "#{output_path.base.url}/#{@md.opt.lng}/#{@ft}"
- else
- "#{output_path.base.url}/#{@ft}"
- end
- end
- def ab_src
- if output_dir_structure.by_language_code?
- "#{output_path.base.url}/#{@ft}/#{@md.opt.lng}"
- else
- "#{output_path.base.url}/#{@ft}"
- end
- end
- def ab_pod
- "#{output_path.base.url}/#{@ft}"
- end
- self
- end
- def rel
- def abc
- if output_dir_structure.by_language_code?
- "#{@md.opt.lng}/#{@ft}"
- elsif output_dir_structure.by_filetype?
- "#{@ft}"
- else
- "#{@md.fnb}"
- end
- end
- def ab
- if output_dir_structure.by_language_code?
- "#{@md.opt.lng}/#{@ft}"
- else
- "#{@ft}"
- end
- end
- def ab_src
- if output_dir_structure.dump_or_redirect?
- "."
- elsif output_dir_structure.by_language_code?
- "#{@ft}/#{@md.opt.lng}"
- else
- "#{@ft}"
- end
- end
- def ab_pod
- if output_dir_structure.by_language_code?
- "#{@ft}"
- else
- "#{@ft}"
- end
- end
- self
- end
- def rel_sm
- def abc
- if output_dir_structure.by_language_code?
- "#{@md.opt.lng}/#{@ft}"
- elsif output_dir_structure.by_filetype?
- "#{@ft}"
- else
- "#{@md.fnb}"
- end
- end
- def ab
- if output_dir_structure.dump_or_redirect?
- '.'
- elsif output_dir_structure.by_language_code? \
- or output_dir_structure.by_filetype?
- '../' + @ft
- else '.'
- end
- end
- def ab_src
- if output_dir_structure.dump_or_redirect?
- '.'
- elsif output_dir_structure.by_language_code?
- "#{@ft}/#{@md.opt.lng}"
- else
- "#{@ft}"
- end
- end
- def ab_pod
- if output_dir_structure.dump_or_redirect?
- '.'
- elsif output_dir_structure.by_language_code?
- "../../#{@ft}/#{@md.opt.lng}"
- else
- "../#{@ft}"
- end
- end
- self
- end
- def rcp
- def abc
- if output_dir_structure.by_language_code?
- "#{output_path.stub.rcp}/#{@md.opt.lng}/#{@ft}"
- elsif output_dir_structure.by_filetype?
- "#{output_path.stub.rcp}/#{@ft}"
- else
- "#{output_path.stub.rcp}/#{@md.fnb}"
- end
- end
- def ab
- if output_dir_structure.by_language_code?
- "#{output_path.stub.rcp}/#{@md.opt.lng}/#{@ft}"
- else
- "#{output_path.stub.rcp}/#{@ft}"
- end
- end
- self
- end
- self
- end
- def output_path
- def web_base
- def dir
- @env.path.webserv
- end
- def url
- #"#{@env.url.root}"
- end
- def rel
- '.'
- end
- def rcp
- '.'
- end
- self
- end
- def stub
- def dir
- "#{@md.opt.f_pth[:pth_stub]}"
- end
- #def url
- # "#{@env.url.root}"
- #end
- def rel
- "./#{@md.opt.f_pth[:pth_stub]}"
- end
- def rcp
- "#{@md.opt.f_pth[:pth_stub]}"
- end
- self
- end
- def webserver_path
- if output_dir_structure.dump?
- @md.opt.opt_act[:dump][:inst]
- elsif output_dir_structure.redirect?
- @md.opt.opt_act[:redirect][:inst]
- else
- "#{@env.path.webserv}"
- end
- end
- def base
- def dir
- "#{webserver_path}/#{@md.opt.f_pth[:pth_stub]}"
- end
- def url
- "#{@env.url.webserv}/#{@md.opt.f_pth[:pth_stub]}"
- end
- def rel
- "./#{@md.opt.f_pth[:pth_stub]}"
- end
- def rcp
- "./#{@md.opt.f_pth[:pth_stub]}"
- end
- self
- end
- def sisugit
- def dir
- "#{output_path.base.dir}/git"
- end
- def url
- "#{output_path.base.url}/git"
- end
- def rel
- "#{output_path.base.rel}/git"
- end
- def rcp
- "#{output_path.base.rcp}/git"
- end
- self
- end
- #def pod
- # ft='pod'
- # path=set_path(ft).dir.ab
- #end
- def src
- def ft
- Gt[:src]
- end
- def dir
- set_path(ft).dir.ab_src
- end
- def url
- set_path(ft).url.ab_src
- end
- def rel
- set_path(ft).rel.ab_src
- end
- def rcp
- set_path(ft).rcp.ab_src
- end
- def rel_sm
- set_path(ft).rel_sm.ab_src
- end
- self
- end
- def sisupod
- def ft
- Gt[:src] + '/' + Gt[:pod]
- end
- def dir
- set_path(ft).dir.ab_pod
- end
- def url
- set_path(ft).url.ab_pod
- end
- def rel
- set_path(ft).rel.ab_pod
- end
- def rcp
- set_path(ft).rcp.ab_pod
- end
- def rel_sm
- set_path(ft).rel_sm.ab_pod
- end
- self
- end
- def po
- def dir
- "#{output_path.base.dir}/po4a/#{@md.fnb}/po/#{@md.opt.lng}"
- end
- def url
- "#{output_path.base.url}/po4a/#{@md.fnb}/po/#{@md.opt.lng}"
- end
- self
- end
- def pot
- def dir
- "#{output_path.base.dir}/po4a/#{@md.fnb}/pot"
- end
- def url
- "#{output_path.base.url}/po4a/#{@md.fnb}/pot"
- end
- def rcp
- #p "#{output_path.base.dir}/po4a/#{@md.fnb}/pot"
- end
- self
- end
- def po_git # consider !!!
- def ft
- Gt[:po]
- end
- def dir
- pth=@env.processing_path.git + '/' + @md.fnb + '/' + ft + '/' + @md.opt.lng
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- self
- end
- def pot_git # consider !!!
- def ft
- Gt[:pot]
- end
- def dir
- @env.processing_path.git + '/' + @md.fnb + '/' + ft
- end
- self
- end
- def md_harvest
- manifest
- self
- end
- def txt
- def ft
- 'txt'
- 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'
- 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
- if output_dir_structure.dump_or_redirect?
- './image'
- elsif output_dir_structure.by_language_code?
- '../../_sisu/image'
- elsif output_dir_structure.by_filetype?
- '../_sisu/image'
- else
- '../_sisu/image'
- end
- end
- self
- end
- def html_seg
- def ft
- "html/#{@md.fnb}"
- 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
- if output_dir_structure.dump_or_redirect?
- './image'
- elsif output_dir_structure.by_language_code?
- '../../../_sisu/image'
- elsif output_dir_structure.by_filetype?
- '../../_sisu/image'
- else
- '../_sisu/image'
- end
- end
- self
- end
- def html_concordance
- html_seg
- self
- end
- def html
- def ft
- 'html'
- end
- def dir
- set_path(ft).dir.abc
- end
- def url
- set_path(ft).url.abc
- end
- def rel
- set_path(ft).url.abc
- end
- def rcp
- set_path(ft).rcp.abc
- end
- def rel_sm
- set_path(ft).rel_sm.ab
- end
- def rel_image
- if output_dir_structure.by_language_code?
- '../../_sisu/image'
- elsif output_dir_structure.by_filetype?
- '../_sisu/image'
- else
- '../_sisu/image'
- end
- end
- self
- end
- def xhtml
- def ft
- 'xhtml'
- 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 epub
- def ft
- 'epub'
- end
- def dir
- set_path(ft).dir.ab
- end
- def url
- set_path(ft).url.ab
- end
- def rel
- set_path(ft).rel.ab
- end
- def rcp
- set_path(ft).rcp.ab
- end
- def rel_sm
- set_path(ft).rel_sm.ab
- end
- def rel_image
- './image'
- end
- self
- end
- def odt
- def ft
- 'odt'
- 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 xml
- def ft
- 'xml'
- 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_sax
- xml
- self
- end
- def xml_dom
- xml
- self
- end
- def pdf
- def ft
- 'pdf'
- 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 sqlite_discreet
- def ft
- 'sql'
- end
- def dir
- set_path(ft).dir.ab
- end
- def url
- set_path(ft).url.ab
- end
- def rel
- set_path(ft).rel.ab
- end
- def rcp
- set_path(ft).rcp.ab
- end
- def rel_sm
- set_path(ft).rel_sm.ab
- end
- self
- end
- def hash_digest
- def ft
- 'hashes'
- 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 manifest
- def ft
- 'manifest'
- 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
- self
- end
- def qrcode
- def ft
- 'manifest/qrcode'
- 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 harvest
- def ft
- 'site_metadata'
- end
- def dir
- set_path(ft).dir.ab
- end
- def url
- set_path(ft).url.ab
- end
- def rel
- set_path(ft).rel.ab
- end
- def rcp
- set_path(ft).rcp.ab
- end
- def rel_sm
- if output_dir_structure.by_language_code?
- ''
- elsif output_dir_structure.by_filetype?
- ''
- else
- ''
- end
- end
- self
- end
- def manpage
- def ft
- 'man'
- end
- def dir
- set_path(ft).dir.ab
- end
- def url
- set_path(ft).url.ab
- end
- def rel
- set_path(ft).rel.ab
- end
- def rcp
- set_path(ft).rcp.ab
- end
- def rel_sm
- set_path(ft).rel_sm.ab
- end
- self
- end
- def texinfo
- def ft
- 'texinfo'
- end
- def dir
- set_path(ft).dir.ab
- end
- def url
- set_path(ft).url.ab
- end
- def rel
- set_path(ft).rel.ab
- end
- def rcp
- set_path(ft).rcp.ab
- end
- def rel_sm
- set_path(ft).rel_sm.ab
- end
- self
- end
- def sitemaps
- def ft
- 'sitemaps'
- end
- def dir
- set_path(ft).dir.ab
- end
- def url
- set_path(ft).url.ab
- end
- def rel
- set_path(ft).rel.ab
- end
- def rcp
- set_path(ft).rcp.ab
- end
- self
- end
- def sqlite #check url
- def dir
- output_path.base.dir
- end
- def url
- output_path.base.url
- end
- def rel
- output_path.base.rel
- end
- def rcp
- output_path.base.rcp
- end
- self
- end
- #def cgi
- #end
- def css
- @d='_sisu/css'
- def dir
- output_path.base.dir + '/' + @d
- end
- def url
- output_path.base.url + '/' + @d
- end
- def rel
- @d
- #output_path.base.rel + '/' + @d
- end
- def rcp
- output_path.stub.rcp + '/' + @d
- end
- self
- end
- def images
- @d='_sisu/image'
- def dir
- output_path.base.dir + '/' + @d
- end
- def url
- output_path.base.url + '/' + @d
- end
- def rel
- @d
- #output_path.base.rel + '/' + @d
- end
- def rcp
- output_path.stub.rcp + '/' + @d
- end
- self
- end
- def images_external
- @d='_sisu/image_external'
- def dir
- output_path.base.dir + '/' + @d
- end
- def url
- output_path.base.url + '/' + @d
- end
- def rel
- output_path.base.rel + '/' + @d
- end
- def rcp
- output_path.base.rcp + '/' + @d
- end
- self
- end
- #def css
- # #"#{@env.path.output}/#{@env.path.style}"
- #end
- self
- end
- end
- class CreateFile <InfoEnv #todo unify with FileOp
- def initialize(fns)
- begin
- super(fns)
- @env=SiSU_Env::InfoEnv.new(fns)
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@fns,$!,$@).rescue
- ensure
- end
- end
- def html_root
- #@env.path.output
- end
- def mkdir_pdf
- Dir.mkdir(@env.processing_path.tex) unless FileTest.directory?(@env.processing_path.tex)
- end
- def file_generic(output_file='')
- filename="#{@env.path.output}/#{@fnb}/#{output_file}"
- File.new(filename,'w+')
- end
- def file_error
- File.new('/tmp/errorlog.sisu','w+')
- end
- def file_txt
- File.new("#{@env.processing_path.dal}/#{@fns}.txt",'w+')
- end
- def file_debug
- File.new("#{@env.processing_path.dal}/#{@fns}.debug.txt",'w+')
- end
- def metaverse
- def file_meta
- File.new("#{@env.processing_path.dal}/#{@fns}.meta",'w+')
- end
- def file_meta_idx_html
- File.new("#{@env.processing_path.dal}/#{@fns}.idx.html",'w+')
- end
- self
- end
- def file_note
- File.new("#{Dir.pwd}/#{@fns}.fn",'w+')
- end
- def meta
- "#{@env.processing_path.dal}/#{@fns}.meta"
- end
- def file_semantic
- filename_semantic="./semantic.yaml"
- @@filename_semantic=File.new(filename_semantic,'w+')
- end
- def file_rss
- filename_rss="./semantic.xml"
- @@filename_rss=File.new(filename_rss,'w+')
- end
- def epub
- @pth=@env.processing_path.epub
- def xhtml_index
- filename_index="#{@pth}/#{Ep[:d_oebps]}/index.xhtml"
- File.new(filename_index,'w+')
- end
- def xhtml_segtoc
- filename_segtoc="#{@pth}/#{Ep[:d_oebps]}/toc.xhtml"
- File.new(filename_segtoc,'w+')
- end
- def mimetype #fixed application/epub+zip ~/grotto/theatre/dbld/builds/epub_sample/mimetype
- File.new("#{@pth}/mimetype",'w')
- end
- def metadata #variable matadata ~/grotto/theatre/dbld/builds/epub_sample/metadata.opf
- File.new("#{@pth}/#{Ep[:d_oebps]}/#{Ep[:f_opf]}",'w')
- end
- def toc_ncx #variable toc ~/grotto/theatre/dbld/builds/epub_sample/toc.ncx
- File.new("#{@pth}/#{Ep[:d_oebps]}/#{Ep[:f_ncx]}",'w')
- end
- def metainf_cont #variable content ~/grotto/theatre/dbld/builds/epub_sample/META-INF/container.xml
- File.new("#{@pth}/META-INF/container.xml",'w')
- end
- def xhtml_css #fixed epub xhtml css
- File.new("#{@pth}/#{Ep[:d_oebps]}/css/xhtml.css",'w')
- end
- self
- end
- def file_texinfo
- File.new("#{@env.processing_path.texinfo}/#{@fnb}.texinfo",'w+')
- end
- end
- class Clear <InfoEnv #todo unify with FileOp
- def initialize(cmd,fns,operation='')
- @cmd=cmd
- begin
- super(fns)
- @env=SiSU_Env::InfoEnv.new(fns)
- ver=InfoVersion.instance
- if operation.class.inspect =~/SiSU_Param/
- @md=operation
- end
- case operation #watch
- when /pdf/; @env_out=''
- when /sql/
- when /xml|plaintext|ascii/; @env_out="#{@env.path.output}/#{@fnb}" #check change of name to plaintext from ascii
- else
- if defined? @md.sfx_src \
- and @md.sfx_src =~/ss[ftsumc]/
- @env_suf='lm'
- @env_out_root=@env.path.output
- @env_out="#{@env.path.output}/#{@fnb}"
- @@publisher='SiSU http://www.jus.uio.no/sisu'
- @env_pdf="#{@env_out_root}/pdf"
- end
- end
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue
- ensure
- end
- end
- def param_instantiate
- @cX||=SiSU_Screen::Ansi.new(@cmd)
- @@date=SiSU_Env::InfoDate.new
- @@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=@@yaml=@@yamladdr=nil
- @@publisher='SiSU scribe'
- end
- end
- class InfoPort < InfoEnv
- def initialize
- @env=SiSU_Env::InfoEnv.new
- end
- def webrick
- @env.url.webrick_port
- end
- end
- class InfoProgram < InfoEnv #revisit
- attr_accessor :editor,:wc,:tidy,:rexml,:pdflatex,:postgresql,:sqlite
- def initialize
- prog=SiSU_Env::InfoEnv.new.program
- @editor,@wc,@tidy,@rexml,@pdflatex,@postgresql,@sqlite=prog.text_editor,prog.wc,prog.tidy,prog.rexml,prog.pdflatex,prog.postgresql,prog.sqlite
- end
- end
- class InfoSkin
- def initialize(md=nil,skin=nil)
- @md=md
- @d_sk=if skin.class==String ; skin
- elsif defined? md.doc_skin \
- and md.doc_skin
- md.doc_skin
- else nil
- end
- @home,@pwd=ENV['HOME'],ENV['PWD']
- m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @pwd_stub=@pwd[m,1]
- @env=SiSU_Env::InfoEnv.new
- end
- def select # skin loading logic here
- load "#{SiSU_lib}/defaults.rb"
- skin_path=[]
- @env.sys.rc_path.each {|x| skin_path << "#{x}/skin"}
- skin_path << "#{@env.processing_path.processing}/external_document/skin"
- skin=if @pwd_stub =~/^(?:doc|sisupod)$/ \
- and ((! @md.nil?) \
- && (defined? @md.opt) \
- && (defined? @md.opt.mod) \
- && @md.opt.mod.inspect !~/--trust/)
- true # security only run skins on sisupod if --trust flag is provided
- elsif @pwd_stub =~/^(?:doc|sisupod)$/ # consider/reconsider doc
- false
- else true
- end
- doc_skin,dir_skin=nil,nil
- if skin
- unless @d_sk.nil?
- sk_doc="doc/#{@d_sk}.rb"
- skin_path.each do |v| # document skin priority 1
- if FileTest.file?("#{v}/#{sk_doc}")
- doc_skin="#{v}/#{sk_doc}"
- load doc_skin
- break
- end
- end
- end
- unless doc_skin
- sk_dir="dir/skin_#{@pwd_stub}.rb"
- skin_path.each do |v| # directory skin priority 2
- if FileTest.file?("#{v}/#{sk_dir}")
- dir_skin="#{v}/#{sk_dir}"
- load dir_skin
- break
- end
- end
- end
- end
- sk=if doc_skin; doc_skin
- elsif dir_skin; dir_skin
- else nil
- end
- end
- end
- class CSS_Default
- def html
- 'html.css'
- end
- def html_tables
- 'html_tables.css'
- end
- def xhtml
- 'xhtml.css'
- end
- def xml_sax
- 'sax.css'
- end
- def xml_dom
- 'dom.css'
- end
- def docbook_xml
- 'docbook.css'
- end
- def homepage
- 'homepage.css'
- end
- def harvest
- 'harvest.css'
- end
- end
- class CSS_Select < InfoEnv
- def initialize(md)
- @md=md
- @env=SiSU_Env::InfoEnv.new('',@md)
- end
- def html
- css=if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html.css")
- "#{@md.doc_css}_html.css"
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_html.css")
- "#{@env.path.stub_pwd}_html.css"
- else SiSU_Env::CSS_Default.new.html
- end
- end
- def html_tables
- css=if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html_tables.css")
- "#{@md.doc_css}_html_tables.css"
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_html_tables.css")
- "#{@env.path.stub_pwd}_html_tables.css"
- else SiSU_Env::CSS_Default.new.html_tables
- end
- end
- def xhtml
- css=if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xhtml.css")
- "#{@md.doc_css}_xhtml.css"
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_xhtml.css")
- "#{@env.path.stub_pwd}_xhtml.css"
- else SiSU_Env::CSS_Default.new.xhtml
- end
- end
- def xml_sax
- css=if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_sax.css")
- "#{@md.doc_css}_xml_sax.css"
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_xml_sax.css")
- "#{@env.path.stub_pwd}_xml_sax.css"
- else SiSU_Env::CSS_Default.new.xml_sax
- end
- end
- def xml_dom
- css=if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_dom.css")
- "#{@md.doc_css}_xml_dom.css"
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_xml_dom.css")
- "#{@env.path.stub_pwd}_xml_dom.css"
- else SiSU_Env::CSS_Default.new.xml_dom
- end
- end
- def docbook_xml
- css=if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_docbook.css")
- "#{@md.doc_css}_xml_dom.css"
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_docbook.css")
- "#{@env.path.stub_pwd}_docbook.css"
- else SiSU_Env::CSS_Default.new.docbook_xml
- end
- end
- def homepage
- css=if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_homepage.css")
- "#{@md.doc_css}_homepage.css"
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.stub_pwd}_homepage.css")
- "#{@env.path.stub_pwd}_homepage.css"
- else SiSU_Env::CSS_Default.new.homepage
- end
- end
- end
- class CSS_Stylesheet
- def initialize(md)
- @md=md
- @css=SiSU_Env::CSS_Select.new(@md)
- @env=SiSU_Env::InfoEnv.new('',@md)
- @file=SiSU_Env::FileOp.new(@md)
- end
- def html
- %{ <link rel="stylesheet" href="#{@file.path_rel_links.html_scroll_css}#{@env.path.style}/#{@css.html}" type="text/css" />}
- end
- def html_seg
- %{ <link rel="stylesheet" href="#{@file.path_rel_links.html_seg_css}#{@env.path.style}/#{@css.html}" type="text/css" />}
- end
- def html_tables
- %{ <link rel="stylesheet" href="#{@file.path_rel_links.html_seg_css}#{@env.path.style}/#{@css.html}" type="text/css" />}
- end
- def xhtml_epub
- %{ <link rel="stylesheet" href="css/xhtml.css" type="text/css" />}
- end
- def epub
- xhtml_epub
- end
- def xhtml
- %{<?xml-stylesheet type="text/css" href="#{@file.path_rel_links.xhtml_css}#{@env.path.style}/#{@css.xhtml}"?>}
- end
- def xml_sax
- %{<?xml-stylesheet type="text/css" href="#{@file.path_rel_links.xml_css}#{@env.path.style}/#{@css.xml_sax}"?>}
- end
- def xml_dom
- %{<?xml-stylesheet type="text/css" href="#{@file.path_rel_links.xml_css}#{@env.path.style}/#{@css.xml_dom}"?>}
- end
- end
- class CreateSite < InfoEnv
- require_relative 'css' # css.rb
- include SiSU_Style
- def initialize(cmd)
- @cmd=cmd
- @env=SiSU_Env::InfoEnv.new
- @home,@pwd=ENV['HOME'],ENV['PWD'] #@pwd=Dir.pwd
- @rc=GetInit.instance.sisu_yaml.rc
- @vz=SiSU_Env::GetInit.instance.skin
- @vz_home=SiSU_Viz::Home.new
- end
- def homepage
- home_pages_manually_created=nil
- @env.sys.rc_path.each do |v|
- home_pages_manually_created=Dir.glob("#{v}/home/*.html")
- if home_pages_manually_created.length > 0
- break
- end
- end
- FileUtils::mkdir_p("#{@env.path.webserv}/#{@env.path.stub_pwd}") unless FileTest.directory?("#{@env.path.webserv}/#{@env.path.stub_pwd}")
- if home_pages_manually_created
- FileUtils.cp(home_pages_manually_created,"#{@env.path.webserv}/#{@env.path.stub_pwd}")
- else
- doc_skin=nil
- sk_doc='doc/skin_sisu.rb'
- @env.sys.rc_path.each do |v| #document skin priority 1
- if FileTest.file?("#{v}/skin/#{sk_doc}")
- doc_skin="#{v}/skin/#{sk_doc}"
- load doc_skin
- break
- end
- end
- filename_homepage=File.new("#{@env.path.webserv}/#{@env.path.stub_pwd}/index.html",'w')
- filename_homepage_toc=File.new("#{@env.path.webserv}/#{@env.path.stub_pwd}/toc.html",'w')
- filename_homepage << @vz_home.homepage
- filename_homepage_toc << @vz_home.homepage
- end
- end
- def cp_images(src_path,dest_path)
- if FileTest.directory?(src_path)
- FileUtils::cd(src_path)
- source=Dir.glob("*.{png,jpg,gif,ico}")
- FileUtils::mkdir_p(dest_path) unless FileTest.directory?(dest_path)
- FileUtils::chmod(0755,dest_path)
- source.each do |i|
- FileUtils::cp_r(i,"#{dest_path}/#{i}")
- FileUtils::chmod(0644,"#{dest_path}/#{i}")
- end
- FileUtils::cd(@pwd)
- else puts "\tWARN, did not find - #{src_path}"
- end
- end
- def cp_local_images
- src="#{@pwd}/_sisu/image"
- dest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image"
- cp_images(src,dest)
- end
- def cp_external_images
- src="#{@env.processing_path.processing}/external_document/image"
- dest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external"
- if FileTest.directory?(src)
- cp_images(src,dest)
- end
- end
- def cp_webserver_images
- src=@env.path.image_source
- dest="#{@env.path.webserv}/_sisu/image"
- cp_images(src,dest)
- end
- def cp_webserver_images_local #this should not have been necessary
- src=@env.path.image_source
- dest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image"
- cp_images(src,dest)
- end
- def cp_base_images #fix images
- src="#{@env.path.share}/image"
- dest="#{@env.path.webserv}/_sisu/image_sys"
- cp_images(src,dest)
- end
- def cp_css
- FileUtils::mkdir_p("#{@env.path.output}/#{@env.path.style}") unless FileTest.directory?("#{@env.path.output}/#{@env.path.style}")
- css_path=['/etc/sisu/css',"#{@home}/.sisu/css","#{@pwd}/_sisu/css"] #BROKEN
- if defined? @rc['permission_set']['css_modify'] \
- and @rc['permission_set']['css_modify']
- SiSU_Screen::Ansi.new(@cmd,"modify is css set to: #{@rc['permission_set']['css_modify']}").warn if @cmd=~/[MV]/
- css_path.each do |x|
- if FileTest.directory?(x)
- FileUtils::cd(x)
- source=Dir.glob("*.{css}")
- source.each do |i|
- FileUtils::cp(i,"#{@env.path.output}/#{@env.path.style}")
- end
- FileUtils::cd(@pwd)
- end
- end
- else SiSU_Screen::Ansi.new(@cmd,"modify css is not set or is set to: false").warn if @cmd=~/[MV]/
- end
- fn_css=SiSU_Env::CSS_Default.new
- css=SiSU_Style::CSS.new
- path_style="#{@env.path.output}/#{@env.path.style}"
- FileUtils::mkdir_p(path_style) unless FileTest.directory?(path_style)
- style=File.new("#{path_style}/#{fn_css.homepage}",'w')
- style << css.homepage
- style.close
- style=File.new("#{path_style}/#{fn_css.html_tables}",'w')
- style << css.html_tables
- style.close
- style=File.new("#{path_style}/#{fn_css.html}",'w')
- style << css.html
- style.close
- style=File.new("#{path_style}/#{fn_css.xml_sax}",'w')
- style << css.xml_sax
- style.close
- style=File.new("#{path_style}/#{fn_css.xml_dom}",'w')
- style << css.xml_dom
- style=File.new("#{path_style}/#{fn_css.docbook_xml}",'w')
- style << css.docbook_xml
- style.close
- style=File.new("#{path_style}/#{fn_css.xhtml}",'w')
- style << css.xhtml
- style=File.new("#{path_style}/#{fn_css.harvest}",'w')
- style << css.harvest
- style.close
- end
- end
-end
-module SiSU_Screen
- require_relative 'screen_text_color' # screen_text_color.rb
-end
-module SiSU_Errors
- require_relative 'errors' # errors.rb
-end
-__END__
-https? intro check 2007-09-22
-
-fns_array=unless fns =~/\.ssm.sst$/
- if RUBY_VERSION < '1.9'
- IO.readlines(fns,'')
- else IO.readlines(fns,'r:utf-8')
- end
-else
- if RUBY_VERSION < '1.9'
- IO.readlines("#{processing_path.composite_file}/#{fns}",'')
- else IO.readlines("#{processing_path.composite_file}/#{fns}",'r:utf-8')
- end
-end
diff --git a/lib/sisu/v3dv/termsheet.rb b/lib/sisu/v3dv/termsheet.rb
deleted file mode 100644
index 3ac2515b..00000000
--- a/lib/sisu/v3dv/termsheet.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: SiSU information Structuring Universe, specialised pre-processing wrapper
- ** NOTE wrapper makes little sense without additional components, additional
- sample files must be provided - (saved till later as may confuse)
-
-=end
-require_relative 'sysenv' # sysenv.rb
-require_relative 'param' # param.rb
- include SiSU_Param
-@do,@done,@used,@html_output,@txt_input,@txt_output,@@report=Array.new(7){[]}
-@@info=nil
-@c=0
-@cX=SiSU_Screen::Ansi.new('yes').cX
-@done << "\n#{@cX.blue_hi}#{@cX.black}Summary#{@cX.off*2}"
-def talent(termsheet,flag)
- no_ocn='0' if flag =~/0/ #flag to request switch off of text object numbering
- @@info=nil
- @@info=termsheet.gsub(/(.+?)\.termsheet\.rb/,'../facility_data/\1.html')
- @env=SiSU_Env::InfoEnv.new
- @dir_fd="#{@env.path.output}/facility_data"
- FileUtils::mkdir_p(@dir_fd) unless FileTest.directory?(@dir_fd)==true
- html_output=[]
- case termsheet
- when /.+?\.(termsheet)\.rb$/
- @basename=termsheet[/(.+?)\.termsheet\.rb/, 1]
- @standard_form={}
- require termsheet
- include Termsheet
- @standard_form=Termsheet::StandardForms.new.standardforms
- puts %{\n#{@@cX.yellow_hi}#{@@cX.black}From#{@@cX.off*2}: #{@@cX.grey_hi}#{@@cX.black}#{@basename}.termsheet.rb#{@@cX.off*3}\n\n}
- @standard_form.each do |k,v|
- @c+=1
- require v
- puts %{\n#{@@cX.blue_hi}#{@@cX.black}Producing the following#{@@cX.off*2}: #{@@cX.green}#{@basename}.#{k}#{@@cX.off}\n\n}
- @done << %{\n\t#{@@cX.grey}Documents generated#{@@cX.off}: #{@@cX.cyan}#{@basename}.#{k}#{@@cX.off}\n}
- @used << %{\n\t#{@@cX.grey}Using#{@@cX.off}: #{@@cX.ruby}#{v}#{@@cX.off}\n}
- html_output=<<WOK
-<br /><a href="../#{@basename}.#{k}/landscape.pdf">
-<img border="0" width="18" height="15" src="../_sisu/image/b_pdf.png" alt="pdf landscape"></a>&nbsp;
-<a href="../#{@basename}.#{k}/portrait.pdf">
-<img border="0" width="15" height="18" src="../_sisu/image/b_pdf.png" alt="pdf portrait"></a>&nbsp;
-<a href="../#{@basename}.#{k}/sisu_manifest.html">#{@basename}.#{k}.sisu_manifest.html</a>
-WOK
- @html_output << html_output
- @txt_input << %{\n\tForm #{@c}: <url:#{Dir.pwd}/#{v}>\n\t |#{Dir.pwd}/#{v}|@|^|\n}
- @txt_output << %{\n\t#{k}: |../#{@basename}.#{k}/sisu_manifest.html|@|^|\n}
- @report_file_i=File.new("#{@dir_fd}/#{@basename}.txt",'w+')
- @report_file_o=File.new("#{@dir_fd}/#{@basename}.html",'w+')
- @filename_new=File.new("#{@basename}.#{k}.sst",'w+')
- file_array=IO.readlines(v,"\n")
- @do << %{#{k}}
- @filename_new << @document
- # "require v" pulls in the composite @document
- # "termsheet" having all the variables required to complete the standard form @document
- @filename_new.close
- end
- @do.each do |x|
- system %{sisu -Nhwpo #{@basename}.#{x}.sst\n}
- end
- else print "not processed --> ", termsheet, "\n"
- end
- @done << %{\n\t#{@@cX.green}Summary:#{@@cX.off} #{@@cX.blue}#{@env.path.output}/facility_data/#{@basename}.html#{@@cX.off}\n}
- @done << %{\n\t#{@@cX.grey}From details provided in#{@@cX.off}: #{@@cX.green}#{termsheet}#{@@cX.off}\n}
- terms=%{\nTermsheet: <url:#{Dir.pwd}/#{termsheet}>\n |#{Dir.pwd}/#{termsheet}|@|^|\n}
- @report_file_i << "<url:all.txt>\n|all.txt|@|^|\n" << terms << "\nForms:\n" << @txt_input << "\nOutput Files\n" << @txt_output
- @report_file_o << %{<a href="toc.html">^</a><br />\n} << @html_output
- @@report << @done << @used << "\n"
- @done,@used=[],[]
-end
-require_relative 'param' # param.rb
-@argv=$*
-@proc="#{@argv[0].to_s}"
-if @proc =~ /^-?[wft]/
- @argv.shift
- @argv.each do |termsheet|
- talent(termsheet,@proc)
- end
-end
-@env=SiSU_Env::InfoEnv.new
-@dir_fd="#{@env.path.output}/facility_data"
-@url="#{@env.url.webserv}/facility_data"
-@@report << %{\n#{@@cX.grey}See#{@@cX.off}: #{@@cX.blue}#{@dir_fd}/all.txt\t#{@dir_fd}/toc.html\t#{@dir_fd}/#{@@cX.off}\n\n#{@@cX.grey}See#{@@cX.off}: #{@@cX.blue}#{@url}/all.txt\t#{@url}/toc.html\t#{@url}/#{@@cX.off}\n\n}
-puts @@report
-File.unlink("#{@dir_fd}/all.txt") if FileTest.file?("#{@dir_fd}/all.txt")
-File.unlink("#{@dir_fd}/toc.html") if FileTest.file?("#{@dir_fd}/toc.html")
-summary_file=File.new("#{@dir_fd}/all.txt",'w+')
-summary_html=File.new("#{@dir_fd}/toc.html",'w+')
-ls_txt=%x{ls #{@dir_fd}/*.txt}
-report_thlnk=[]
-ls_txt.scan(/.+/)
-ls_txt.each {|x| report_thlnk << x.gsub!(/#{@dir_fd}\/(.+)/,"<url:\\1>\n|\\1|@|^|")}
-report_thlnk.join("\n")
-ls_html=%x{ls #{@dir_fd}/*.html}
-report_html=[]
-ls_html.split(/.+/)
-ls_html.each {|x| report_html << x.gsub!(/#{@dir_fd}\/(.+)/,'<a href="\1">\1</a><br />')}
-report_html.join("\n")
-summary_file << "#{report_thlnk}"
-summary_html << "#{report_html}"
-__END__
-sisu -t x_bank.and.*
-e.g. sisu -t x_bank.and.*.termsheet.rb
-e.g. sisu_termsheet.rb -t x_bank.and.c*.termsheet.rb
-program calls upon termsheet file with extension termsheet.rb
-termsheet.rb calls upon relevant standard form files (to be used) with extension .sForm.rb
-there is also a standard_terms.rb file - with terms/details that are constant
-the file produced is named after the termsheet.rb with that extension replaced with .er30
-from there scribbler.rb is called upon its usual metaVerse html and pdf creation
-! :-)
-to test run
-termsheet.rb -f dev.export.import.trade.facility.termsheet.rb
-the term sheet calls the standard form or template that is to be run against it.
diff --git a/lib/sisu/v3dv/texinfo.rb b/lib/sisu/v3dv/texinfo.rb
deleted file mode 100644
index 2496ce7a..00000000
--- a/lib/sisu/v3dv/texinfo.rb
+++ /dev/null
@@ -1,415 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: texinfo processing
-
-=end
-module SiSU_TexInfo
- require_relative 'html' # html.rb
- require_relative 'param' # param.rb
- include SiSU_Param
- include SiSU_Viz
- #include Stamp ... needed removed arbitrarily 2005w05/1 (warnings about undefined flags)
- require_relative 'texinfo_format' # texinfo_format.rb
- include SiSU_TexInfoFormat
- @tex_file=[]
- @@tabular="{tabular}"
- @@table_pagebreak_counter,@@tex_endnote_call_counter,@@tex_table_flag,@@tex_counter,@@tex_column,@@tex_columns,@@counting=0,0,0,0,0,0,0
- @@column_instruct,@@tex_line_mode,@@tex_word_mode,@@start_table,@@line_mode='','','','',''
- @@n,@@copyright,@@tableheader=nil,nil,nil
- @@tex_col_w=[]
- @@tex_pattern_margin_number="\\\\marginpar.+?\s+"
- class Source
- include SiSU_Param
- include SiSU_Viz
- include SiSU_TexInfo
- def initialize(opt)
- @opt=opt
- @md=SiSU_Param::Parameters.new(@opt).get
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def directories
- begin
- case @opt.fns
- when /\.(?:-|ssm\.)?sst$/
- Dir.mkdir(@env.path.output) unless FileTest.directory?("#{@env.path.output}")
- Dir.mkdir(@env.processing_path.texi) unless FileTest.directory?(@env.processing_path.texi)
- end
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@opt.cmd,$!,$@).rescue
- ensure
- end
- end
- def read
- song
- end
- def song
- begin
- tool=(@opt.cmd =~/[MVv]/) \
- ? "#{@env.program.texinfo} #{@md.file.output_path.texinfo.dir}/#{@md.file.base_filename.info}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- tell=@opt.cmd=~/[MVvz]/ \
- && @opt.cmd !~/q/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'TexInfo',tool).green_hi_blue
- : SiSU_Screen::Ansi.new(@opt.cmd,'TexInfo',tool).green_title_hi
- tell
- @md=SiSU_Param::Parameters.new(@opt).get
- directories
- @marshalfile=SiSU_Env::InfoFile.new(@opt.fns).marshal.dal_content
- if FileTest.file?(@marshalfile)==true
- File.open(@marshalfile) { |f| @@tuned_file=Marshal.load(f)}
- #tell.meta_verse_skipped if @opt.cmd =~/[vVM]/
- else
- tex_array=IO.readlines(@opt.fns,'')
- SiSU_Metaverse.songsheet(tex_array)
- end
- tex_array=@@tuned_file
- TeXinfoMake.new(@md,tex_array).songsheet
- tex_array=''
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@opt.cmd,$!,$@).rescue
- ensure
- end
- end
- end
- class TeXinfoMake
- include SiSU_Param
- include SiSU_TexInfoFormat
- @@tex_1='(?:.+?)+~' #?? debug
- @@tabular="{tabular}"
- @@tex_pattern_margin_number="\\\\marginpar.+?\s+"
- def initialize(md,data)
- @md,@data=md,data
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @vz=SiSU_Env::GetInit.instance.skin
- @f=SiSU_Env::FileOp.new(@md)
- end
- def songsheet
- begin
- data=@data
- data=pre(data)
- data=endnote(data)
- data,head=markup(data)
- objs_txt=tail(data)
- doc_txt=[head,objs_txt]
- output(doc_txt)
- makeinfo #KEEP reinstate when fixed #%
- place_info
- rescue; STDERR.puts SiSU_Screen::Ansi.new(@md.opt.cmd,$!,$@).rescue
- ensure
- end
- end
- def pre(data)
- data_new=[]
- data.each do |dob|
- # DEBUG 2003w16 this is a kludge, because i could not get parameters
- # from param, Sort out ... revert to more elegant solution
- if dob.is =='table'
- @@flag['tables']='y' # KLUDGE get from param
- end
- dob.obj=dob.obj.gsub(/<:p[bn]>/,'').
- gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1(\2 [linked to:] \3)').
- gsub(/(^|#{Mx[:gl_c]}|\s)\{(.+?)\}((?:https?|file):\/\/\S+)/,'\1(\2 [linked to:] \3)')
- do_mono=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
- dob.obj=do_mono.spec_char(dob.obj)
- data_new << dob
- end
- data_new
- end
- def endnote(data)
- data_new=[]
- data.each do |dob|
- if dob.of==:para \
- || dob.of==:block
- dob.obj=dob.obj.gsub(/\s*#{Mx[:en_a_o]}(?:\d+)\s+(.+?)#{Mx[:en_a_c]}/m,' @footnote{ \1} ').
- gsub(/\s*#{Mx[:en_a_o]}(\*+)\s+(.+?)#{Mx[:en_a_c]}/m,' @footnote{ \1} ')
- end
- data_new << dob
- end
- data_new
- end
- def poem
- data,data_new=@data,[]
- @tex_file=[]
- @@counting=0
- data.each do |dob|
- if dob.is ==:code
- @@flag['code']=true
- @@counting=1
- end
- if dob.is ==:verse
- @@flag['poem']=1
- end
- if @@flag['code']
- if @@flag['code'] \
- && (dob.obj =~ /#{Mx[:gr_o]}code[-_](?:end|close)#{Mx[:gr_c]}/) #watch change not tested 200501 #fix
- @@flag['code']=false
- end
- if @@flag['code'] \
- && (dob.obj =~ /\S/)
- sub_array=dob.obj.dup
- @@line_mode=sub_array.scan(/.+/)
- Tune.code_lines(@@line_mode)
- dob.obj=@@line_mode.join
- end
- elsif @@flag['poem']==1
- if @@flag['poem']==1 \
- && (dob.obj =~ /#{Mx[:gr_o]}verse[-_](?:end|close)#{Mx[:gr_c]}/) #watch change not tested 200501 #fix
- @@flag['poem']=0
- end
- if @@flag['poem']==1 \
- && (dob.obj =~ /\S/)
- sub_array=dob.obj.dup
- @@line_mode=sub_array.scan(/.+/)
- Tune.code_lines(@@line_mode)
- dob.obj=@@line_mode.join
- end
- end
- @tex_file << dob.obj
- data_new << dob
- end
- data_new
- end
- def code_lines
- data,data_new=@data,[]
- data.each do |line|
- if (line =~ /\S/) \
- && (line !~ /#{Mx[:gr_o]}(code|verse).+/) #fix
- line=if @@flag['code']
- line.gsub(/^\s*(.+)/m,"\\noindent \\marginpar\[left-text\]{\\begin{tiny}#{@@counting}\\end{tiny}}\\1\\")
- @@counting+=1 if @@flag['code']
- else line.gsub(/(.+)/m,'\noindent\1')
- end
- end
- data_new << line
- end
- end
- def tables
- data,data_new=@data,[]
- @tex_file=[]
- @@tableheader=0
- data.each do |dob|
- if dob.obj =~ /#{Mx[:tc_p]}|#{Mx[:gr_o]}T/ui #fix
- do_mono=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
- dob.obj=do_mono.longtable # using longtable latex package
- end
- @tex_file << dob.obj
- data_new << dob
- end
- data_new
- end
- def markup(data)
- data_new=[]
- @tex_file=[]
- @row_break='\\\\\\'
- @break_page="#{@row_break}\n#{@row_break} \n"
- md={}
- @tex_file << SiSU_TexInfoFormat::Texinfo.new(@md).head
- mono=SiSU_TexInfoFormat::Texinfo.new(@md)
- @tex_file << mono.topnode(@md.title.full)
- texinfo_menu=[]
- n_menu,n_submenu=0,0
- @submenu,@subsubmenu={},{}
- data.each do |dob|
- if dob.is ==:heading \
- && (dob.ln.to_s =~ /^[1-3]$/)
- toc=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
- texinfo_menu << toc.menu
- elsif dob.is ==:heading \
- && (dob.ln.to_s =~ /^[4-6]$/)
- toc=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
- texinfo_menu << toc.menu
- case dob.ln
- when 4
- n_menu+=1
- @submenu[n_menu]=[]
- when 5
- n_submenu+=1
- @subsubmenu[n_menu]=[]
- @submenu[n_menu] << toc.menu
- when 6
- n_submenu+=1
- @subsubmenu[n_submenu]=[]
- @subsubmenu[n_submenu] << toc.menu
- end
- else
- dob.obj=dob.obj.gsub(/\s*(?:<:?br>|<br \/>)\s*/,"\n\n")
- end
- data_new << dob
- end
- data=data_new
- texinfo_menu=texinfo_menu.compact
- texinfo_menu << "* Dublin Core::"
- @tex_file << texinfo_menu
- @tex_file << "* Index::\n" +
- "@end menu\n\n" +
- "@c %% 5\n\n"
- n_menu,n_submenu=0,0
- @@do_submenu,@@do_subsubmenu=1,1
- data_new=[]
- data.each do |dob|
- mono=SiSU_TexInfoFormat::Texinfo.new(@md,dob)
- if dob.is==:heading
- case dob.ln
- when 1; dob=mono.level1
- when 2; dob=mono.level2
- when 3; dob=mono.level3
- when 4;
- dob=mono.level4
- n_menu+=1
- @@do_submenu,@@do_subsubmenu=1,1
- when 5;
- n_submenu+=1
- @@do_subsubmenu=1
- if @@do_submenu==1
- menu=SiSU_TexInfoFormat::TeXinfoTxt.new(@md,dob,@submenu[n_menu])
- dob.obj="#{menu.submenu}#{mono.level5.obj}"
- @@do_submenu=0
- else dob=mono.level5
- end
- when 6;
- if @@do_submenu==1
- menu=SiSU_TexInfoFormat::TeXinfoTxt.new(@md,dob,@submenu[n_menu])
- dob.obj="#{menu.subsubmenu}#{mono.level6.obj}"
- @@do_subsubmenu=0
- else
- dob=mono.level6
- end
- end
- else
- if dob.obj !~/\S/
- dob.obj=nil
- else
- if dob.is==:para \
- && (dob.obj !~/##{dob.ocn}/)
- dob.obj="#{dob.obj} ##{dob.ocn}"
- end
- end
- end
- #%case with endnotes
- dob.obj=dob.obj.gsub(/\s*[0-8]\\+(\S+)?\s+/,' ') if dob.obj
- data_new << dob
- end
- [data_new, @tex_file]
- end
- def number_titles
- data,data_new=@data,[]
- @tex_file=[]
- input=%{#{@md.markup}}[/(num_top\s*=\s*(\d?))?/m,2] # else default usually 4 # this was a bit of a trick required to pass nil to input if nothing matched... #puts input
- num_top=input.to_i
- t_no1=0; t_no2=0; t_no3=0; t_no4=0;
- no1=num_top; no2=(num_top + 1); no3=(num_top + 2); no4=(num_top + 3);
- data.each do |dob|
- if (@md.markup =~ /num_top/i) \
- && (dob.obj !~ /#{Rx[:meta]}/)
- if (dob.obj =~ /^[1-6]\\+(?:~\S+)?\s*<!h-.+?-!>/) \
- && (dob.obj !~ /<:\d-endnotes>/)
- header=dob.obj[/<!h-(.+?)-!>/m, 1].gsub(/-/m,'.')
- dob.obj=dob.obj.gsub(/^(?:[1-6]\\+(?:~\S+)|<:([12356]|4-.+?-)>)\s*<!h-.+?-!>/,
- "\\1 #{header} ")
- end
- elsif dob.obj=~ /<!h!>|<!h\d!>|<!h.+?!>|<!!h.+?!>/
- if dob.obj=~ /<!h-.+?-!>/
- dob.obj=dob.obj.gsub(/<!h-(.+?)-!>/,'\1 ')
- end
- end
- @tex_file << dob.obj
- end
- data_new << dob
- end
- def tail(data)
- tex=SiSU_TexInfoFormat::Texinfo.new(@md)
- objs_txt=[]
- data.each do |dob|
- if dob.obj \
- && (dob.is !=:structure \
- && dob.is !=:comment)
- objs_txt << dob.obj if dob.obj
- end
- end
- objs_txt << tex.dublincore << tex.tail
- objs_txt
- end
- def output(data)
- filename_texinfo=%{#{@env.processing_path.texi}/#{@md.fnb}.texinfo}
- file_texinfo=File.new(filename_texinfo,'w+')
- puts filename_texinfo if @md.opt.cmd =~/M/
- data.each {|s| (file_texinfo.puts s,"\n") if s}
- file_texinfo.close
- end
- def makeinfo
- if @md.fns =~/\.(?:-|ssm\.)?sst$/
- m=/(.+?)\.((?:-|ssm\.)?sst)$/.match(@md.fns)
- fnb,sfx=m[1],m[2]
- pwd=Dir.pwd
- case sfx
- when /(?:-|ssm\.)?sst$/
- @env=SiSU_Env::InfoEnv.new(@md.fns,@md.opt.cmd)
- Dir.chdir(@env.processing_path.texi)
- texinfo=SiSU_Env::SystemCall.new("#{fnb}.texinfo")
- texinfo.makeinfo
- end
- Dir.chdir(pwd)
- end
- def place_info
- unless FileTest.directory?(@f.output_path.texinfo.dir)
- FileUtils::mkdir_p(@f.output_path.texinfo.dir)
- end
- info_src=%{#{@env.processing_path.texi}/#{@md.fnb}.info}
- FileUtils::cp(info_src, @f.place_file.info.dir)
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/texinfo_format.rb b/lib/sisu/v3dv/texinfo_format.rb
deleted file mode 100644
index fa5390b6..00000000
--- a/lib/sisu/v3dv/texinfo_format.rb
+++ /dev/null
@@ -1,573 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: texinfo formatting template
-
-=end
-module SiSU_TexInfoFormat
- @@table_pg_break_counter=1
- require_relative 'param' # param.rb
- include SiSU_Param
- include SiSU_Viz
- class Texinfo
- @@tex_1='\\\\~' #?? debug
- @@tabular="{tabular}"
- @@tex_pattern_margin_number="\\\\marginpar.+?\s+"
- def initialize(md,dob=nil)
- @md,@dob=md,dob
- if dob.class==Hash
- p dob.class
- p caller
- elsif dob.class==String
- p dob.class
- p caller
- end
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def head
- t=Time.now
- year=t.year
- filename=%{#{@md.fns}}[/(.+?)\.\w\w\d\d$/,1]
- title=spec_char(@md.title.full)
- title=title.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ").
- gsub(/\$/,"\\$").
- gsub(/[,]\s*/,' - ')
- if @md.title.sub
- subtitle=spec_char(@md.title.sub)
- subtitle=subtitle.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ").
- gsub(/\$/,"\\$").
- gsub(/[,]\s*/,' - ')
- subtitle="@subtitle @value{VERSION}, @value{UPDATED}\n" #bugwatch
- end
- subtitle ||=''
- author=@md.author if @md.author
- author ||=''
- author=author.gsub(/[\*]/,'') #if author
- v=SiSU_Env::InfoVersion.instance.get_version
- head =<<WOK
-\\input texinfo @c -*-texinfo-*-
-@comment %**start of header
-@setfilename #{@md.fnb}.info
-@settitle #{title} @value{VERSION}
-@syncodeindex pg cp
-@comment %**end of header
-@c %% 2
-@copying
-SiSU texinfo of #{title}
-
-Copyright @copyright{} #{year} #{author}.
-
-@quotation
-Copyright #{author}, generated by ``SiSU''
-@end quotation
-@end copying
-
-@dircategory SiSU Texinfo
-@direntry
-* sisu: SiSU texinfo file.
-@end direntry
-WOK
- if @md.title.sub
- titlepage=<<WOK
-@c %% 3
-@titlepage
-@title #{title} #{subtitle}
-@author #{author}
-@page
-@vskip 0pt plus 1filll
-@insertcopying
-@end titlepage
-@contents
-WOK
- else
- titlepage=<<WOK
-@c %% 3
-@titlepage
-@title #{title}
-@value{VERSION}, @value{UPDATED}
-@author #{author}
-@page
-@vskip 0pt plus 1filll
-@insertcopying
-@end titlepage
-
-@contents
-WOK
- end
- "#{head}#{titlepage}"
- end
- def topnode(txt)
- txt=spec_char(txt)
- txt=txt.gsub(/<(br|p|i)>|<\/\s*(br|p|i)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} ").
- gsub(/\$/,"\\$").
- gsub(/[,]\s*/,' - ')
- "@c %% 4\n" +
- "@ifnottex\n" +
- "@node Top\n" +
- "@top #{txt}\n\n" +
- "@insertcopying\n" +
- "@end ifnottex\n\n" +
- "@menu\n"
- end
- def dublincore
- title=spec_char(@md.title.main) if @md.title.main
- subtitle=spec_char(@md.title.sub) if @md.title.sub
- if defined? @md.title.full \
- and @md.title.full=~/\S+/
- full_title=spec_char(@md.title.full)
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- author=spec_char(@md.creator.author)
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- subject=spec_char(@md.classify.subject)
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- description=spec_char(@md.description)
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/
- publisher=spec_char(@md.publisher)
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/
- contributor=spec_char(@md.contributor)
- end
- if defined? @md.date.published \
- and @md.date.published=~/\S+/
- date=spec_char(@md.date.published)
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/
- date_created=spec_char(@md.date.created)
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/
- date_issued=spec_char(@md.date.issued)
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/
- date_available=spec_char(@md.date.available)
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/
- date_valid=spec_char(@md.date.valid)
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/
- date_modified=spec_char(@md.date.modified)
- end
- type=spec_char(@md.type) if @md.type #dc
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- format=spec_char(@md.classify.format)
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- identifier=spec_char(@md.classify.identifier)
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/
- source=spec_char(@md.original.source)
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/
- language=spec_char(@md.title.language)
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- relation=spec_char(@md.classify.relation)
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- coverage=spec_char(@md.classify.coverage)
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/
- rights=spec_char(@md.rights.all)
- end
- rights=spec_char(@md.rights.all)
- full_title="Title: #{full_title}\n\n" if full_title #dc
- author="Author: #{author}\n\n" if author #dc
- subject="Subject: #{subject}\n\n" if subject #dc
- description="Description: #{description}\n\n" if description #dc
- publisher="Publisher: #{publisher}\n\n" if publisher #dc
- contributor="Contributor: #{contributor}\n\n" if contributor #dc
- date="Date: #{date}\n\n" if date #dc
- date_created="Date Created: #{date_created}\n\n" if date_created #dc
- date_issued="Date Issued: #{date_issued}\n\n" if date_issued #dc
- date_available="Date Available: #{date_available}\n\n" if date_available #dc
- date_valid="Date Valid: #{date_valid}\n\n" if date_valid #dc
- date_modified="Date Modified: #{date_modified}\n\n" if date_modified #dc
- format="Format: #{format}\n\n" if format #dc
- identifier="Identifier: #{identifier}\n\n" if identifier #watch #dc
- source="Source: #{source}\n\n" if source #dc
- language="Language: #{language}\n\n" if language #dc
- relation="Relation: #{relation}\n\n" if relation #dc
- coverage="Coverage: #{coverage}\n\n" if coverage #dc
- rights="Rights: #{rights}\n\n" if rights #dc
- <<WOK
-@node Dublin Core
-@unnumbered Dublin Core
-@cindex chapter, Dublin Core
-
-#{full_title}#{author}#{subject}#{description}#{publisher}#{contributor}#{date}#{date_created}#{date_issued}#{date_available}#{date_valid}#{date_modified}#{format}#{identifier}#{source}#{language}#{relation}#{coverage}#{rights}
-
-WOK
- end
- def tail
- <<WOK
-@c %% 6
-@node Index
-@unnumbered Index
-@printindex cp
-
-@bye
-WOK
- end
- def clean(dob)
- if dob.is==:heading \
- and dob.obj !~/##{dob.ocn}/
- dob.obj="#{dob.obj} ##{dob.ocn}"
- end
- dob.obj=dob.obj.gsub(/\n/m,' ').
- gsub(/<:#>/,'').
- gsub(/,\s+/,' - ').
- strip
- dob
- end
- def menu
- dob=clean(@dob)
- m=dob.obj
- m=m.gsub(/[:,]\s*/,' - ').
- gsub(/@footnote\{.+?\}\s+/,'')
- m="* #{m}::"
- end
- def level1
- dob=clean(@dob)
- nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
- dob
- end
- def level2
- dob=clean(@dob)
- nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
- dob
- end
- def level3
- dob=clean(@dob)
- nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
- dob
- end
- def level4
- dob=clean(@dob)
- nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
- dob
- end
- def level5
- dob=clean(@dob)
- nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
- dob
- end
- def level6
- dob=clean(@dob)
- nd=dob.obj.gsub(/@footnote\{.+?\}\s+/,'')
- dob.obj="@node #{nd}\n@unnumbered #{nd}\n@cindex chapter, #{nd}\n"
- dob
- end
- def submenu
- @dob.obj=@dob.obj.join("\n")
- @dob.obj=@dob.obj.gsub(/[5]\\+~\S+/,'')
- dob=clean(@dob)
- dob.obj="@menu\n#{dob.obj}\n@end menu\n\n".
- gsub(/.+/m,"#{dob.obj}")
- end
- def subsubmenu
- @dob.obj=@dob.obj.join("\n")
- @dob.obj=@dob.obj.gsub(/[6]\\+~\S+/,'')
- dob=clean(@dob)
- dob.obj="@menu\n#{dob.obj}\n@end menu\n\n".
- gsub(/.+/m,"#{dob.obj}")
- end
- def indent1
- @dob.obj=@dob.obj.gsub(/<:i1>(.*)/,'\1')
- end
- def indent2
- @dob.obj=@dob.obj.gsub(/<:i2>(.*)/,'\1')
- end
- def spec_char(txt) # special characters
- txt=txt.gsub(/#{Mx[:br_eof]}/i,'').
- gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'(c)').
- gsub(/#{Mx[:gl_o]}#(?:lt|060)#{Mx[:gl_c]}/,'<').gsub(/#{Mx[:gl_o]}(gt|#062)#{Mx[:gl_c]}/,'>').
- gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{').gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}').
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~').
- 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]}#047#{Mx[:gl_c]}/,'/').
- gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_').
- gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\').
- gsub(/(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,"\n\n"). # watch
- gsub(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ').
- #gsub(/\\/,'\\backslash ').
- gsub(/<:pb>/,'\\newpage').
- gsub(/\\backslash copyright/,'\\copyright ').
- gsub(/\^/,'\\wedge ').
- gsub(/(\$)/,"\\$").
- gsub(/\~/,'\\~').
- gsub(/#{Mx[:url_o]}(https?:\S+?)#{Mx[:url_c]}/,'<\1>').
- gsub(/#{Mx[:url_o]}_(https?:\S+?)#{Mx[:url_c]}/,'\1').
- gsub(/§/i,'\S').
- gsub(/£/i,'\pounds').
- gsub(/å/,'\aa').gsub(/Å/,'\AA').
- gsub(/æ/,'\ae').gsub(/Æ/,'\AE').
- gsub(/ø/,'\o').gsub(/Ø/,'\O').
- gsub(/<a href=".+?">/i,' ').
- gsub(/<\/a>/i,' ').
- gsub(/<!>/i,' ').
- gsub(/#{Mx[:br_paragrph]}/i,''). #watch
- gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*\1*').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/\1/').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_\1_').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'[\1]').
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^\1^').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+\1+').
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'-\1-').
- gsub(/@/i,'@@').
- gsub(/\{/,'@{').gsub(/\}/,'@}').
- gsub(/(?:&nbsp;|#{Mx[:nbsp]})+/,' '). # ~ character for hardspace
- gsub(/&(\S+?);/,' ').
- gsub(/&/,'<=and>').
- gsub(/(\s+&\s+)/,' and ').
- gsub(/(\&)/,"\\&").
- gsub(/"(.+?)"/,"`\\1'"). # open & close "
- gsub(/\s+"/," `"). # open "
- gsub(/^([1-6-]\\+(?:~\S+)?|<.+?>)?\s*"/,'\1`'). # open "
- gsub(/"(\s|\.|,|:|;)/,"'\\1"). # close "
- gsub(/"([1-6-]\\+(?:~\S+)?|<.+?>)?\s*$/,"'\\1"). # close "
- gsub(/"(\.|,)/,"'"). # close "
- gsub(/\s+'/," `"). # open '
- gsub(/^([1-6-]\\+(?:~\S+)?|<.+?>)?\s*'/,'\1`'). # open '
- gsub(/(<font.*?>|<\/font>)/,'')
- end
- def longtable
- @end_table="\\end{longtable}"
- @row_break='\\\\\\'
- if @dob[/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c(\d+);(.+?)#{Mx[:gr_c]}/ui] #CHECK !> closure #fix
- no_of_cols,cols_width=$1,$2
- @@tableheader=1 if @dob =~ /#{Mx[:gr_o]}Th/i #fix
- @w=cols_width.split(/;\s+/)
- @@number_of_cols=no_of_cols
- @colW=[]
- @colW << '{'
- @w.each do |x|
- col_w=x.gsub(/.+/,'l\|') #unless x.nil?
- @colW << "#{col_w}" if col_w
- end
- @colW << '}'
- @colW=@colW.join
- @@start_table="\\setlength{\\LTleft}{0pt}\n\\setlength{\\LTright}{\\fill}\n" +
- "\\begin{longtable}[hb]#{@colW}\n"
- @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c\d+?;.+#{Mx[:gr_c]}/u,"#{@@start_table}") #fix
- end
- if @dob =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/ #fix
- @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/," #{@end_table}") #fix
- end
- @dob.obj=@dob.obj.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}/u,'')
- if @@tableheader==1
- if @dob =~/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u
- tablefoot=para[/\<!f(.+?)!\>/,1]
- @dob.obj=@dob.obj.gsub(/\<!f(.+?)!\>/,'').
- gsub(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,
- "{\\begin{tiny} {\\bfseries \\1}\\end{tiny}}&").
- gsub(/&>\s*$/,
- " #{@row_break} \\hline\\endhead #{@row_break}")
- @dob="#{@dob} \\multicolumn{#{@@number_of_cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n" if tablefoot
- @@tableheader=0
- @@number_of_cols=0
- end
- else
- if @dob =~/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u
- @dob.obj=@dob.obj.gsub(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,"\\begin{tiny}\\1\\end{tiny}&").
- gsub(/&>\s*$/," #{@row_break}")
- end
- end
- @dob
- end
- def scopedtable
- # some features related to headers have been incorporated in longtable
- # that are not included yet here, so until synced is broken on some
- # input files, work needs to be done if is to work as before
- @end_table="\\end{tabular}"
- @row_break='\\\\\\\\'
- @break_page="#{@row_break}\n#{@row_break} \n"
- if @dob[/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c(\d+);(.+?)#{Mx[:gr_c]}/ui] #fix
- no_of_cols,cols_width=$1,$2
- @w=cols_width.split(/;\s+/)
- @colW=[]
- @w.each do |x|
- col_w=((x.to_i*12)/100.00).to_s #unless x.nil?
- @colW << "p{#{col_w}cm}" if col_w
- end
- @@start_table="\\begin{tabular}{#{@colW}}\n"
- @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}\s+c\d+?;.+#{Mx[:gr_c]}/u,"#{@@start_table}") #fix
- end
- if @dob =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/ #fix
- @dob.obj=@dob.obj.gsub(/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/,"#{@end_table}") #fix
- @@table_pg_break_counter=1
- end
- if @dob =~/#{Mx[:tc_o]}#{Mx[:tc_p]}/u
- if @@table_pg_break_counter==28 # taken from 34 ideal for portrait to 28 which suits landscape
- @dob =
- "\n\n#{@end_table} \n" +
- "#{@break_page}" +
- "#{@@start_table}\n"
- @@table_pg_break_counter=1
- else
- @dob.obj=@dob.obj.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}/u,'')
- @@table_pg_break_counter+=1
- tablefoot=@dob[/\<!f(.+?)!\>/]
- @dob.obj=@dob.obj.gsub(/\<!f(.+?)!\>/,'')
- end
- end
- if @dob =~/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u
- @dob.obj=@dob.obj.gsub(/#{Mx[:tc_p]}\d+?#{Mx[:tc_p]}(.+?)(?:#{Mx[:tc_p]}|!)/u,"\\begin{tiny}\\1\\end{tiny}&").
- gsub(/&>\s*$/,"#{@row_break}")
- end
- @dob
- end
- def graphics
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- @dob.obj=@dob.obj.gsub(/<::\s+(\S+?)\s+>/i, #watch
- "\\includegraphics*[width=11pt]{#{dir.path.image_source_include}/c_\\1.png}")
- end
- def image
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- width="100"
- width=@dob[/<:image.+?width=``(\d+)''.+?>/im,1]
- width=width.to_i*0.4
- @dob.obj=@dob.obj.gsub(/<:image\s+((?:https?|file|ftp)\S+)\s+(\S+)\s+.+\s+?>/i,
- "\\href{\\1}{\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/\\2}}").
- gsub(/<:image\s+(\S+)\s+.+\s+?>/i,
- "\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/\\1}")
- end
- def png
- # very messy clean up ! - work area, testing
- z=@dob[/\\\{(.+?)\}(?:image|png)/,1] # match operator for z \\ fragile !
- image,w,x,y=z.scan(/\S+/)
- image=image.gsub(/\\/,'')
- @dob.obj=@dob.obj.gsub(/\\\{\S+\.(png|jpg|gif).+?\}(image|png)/,"<image #{image} not available>") # fragile match operator\\ fragile !
- end
- def http
- # very messy clean up ! - work area, testing
- z=@dob[/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,1] # match operator for z \\ fragile !
- url=@dob[/((?:https?|file|ftp):\S+)/im,1]
- if @dob =~/\.(png|jpg|gif)/
- image,w,x,y=z.scan(/\S+/)
- image=image.gsub(/\\/,'')
- width=200
- width=z[/w=(\d+)/im,1] if z =~/w=(\d+)/
- width=width.to_i*0.8
- width=400 if width > 400
- c=z[/``(.+?)''/im,1]
- caption="{\\\\\\\ \n\\begin{scriptsize}#{c}\\end{scriptsize}&}" if c
- end
- if image
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- @dob.obj=@dob.obj.gsub(/#{Mx[:lnk_o]}\S+\.(png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/, # fragile match operator\\ fragile !
- "\n\\href{#{url}}{\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_include}/#{image}}}#{caption}")
- else
- link=z[/(.+?)\\/im,1]
- @dob.obj=@dob.obj.gsub(/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+#{Mx[:url_c]}/,"\n\\noindent\\href{#{url}}{#{link}}") # fragile match operator\\ fragile !
- end
- end
- end
- class TeXinfoTxt
- def initialize(md,dob,txt)
- @md,@dob,@txt=md,dob,txt
- end
- def clean(dob,txt)
- if dob.is==:heading \
- and txt !~/##{dob.ocn}/
- txt="#{dob.obj} ##{dob.ocn}"
- end
- txt=txt.gsub(/<:#>/,'').strip
- end
- def submenu
- txt=@txt.join("\n")
- txt=txt.gsub(/[5]\\+~\S+/,'')
- txt=clean(@dob,txt)
- txt="@menu\n#{txt}\n@end menu\n\n"
- txt=txt.gsub(/.+/m,"#{txt}")
- end
- def subsubmenu
- txt=@txt.join("\n")
- txt=txt.gsub(/[6]\\+~\S+/,'')
- txt=clean(@dob,txt)
- txt="@menu\n#{dob.obj}\n@end menu\n\n"
- txt=txt.gsub(/.+/m,"#{txt}")
- end
- end
-end
-__END__
-watch title, might need full_title
diff --git a/lib/sisu/v3dv/texpdf.rb b/lib/sisu/v3dv/texpdf.rb
deleted file mode 100644
index f0fb6b99..00000000
--- a/lib/sisu/v3dv/texpdf.rb
+++ /dev/null
@@ -1,963 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: LaTeX generation
-
-=end
-module SiSU_TeX
- require 'pstore'
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'texpdf_format' # texpdf_format.rb
- include SiSU_TeX_Pdf
- require_relative 'shared_metadata' # shared_metadata.rb
- require_relative 'prog_text_translation' # prog_text_translation.rb
- @tex_file=@@tex_footnote_array=@@tex_col_w=[]
- @@tabular="{tabular}"
- @@column_instruct=@@squigle_close=@@tex_line_mode=@@tex_word_mode=@@line_mode=''
- @@tex_debug_counter=@@table_pagebreak_counter=@@tex_footnote_call_counter=@@tex_table_flag=@@tex_counter=@@tex_column=@@tex_columns=@@tex_columns=@@counting=0
- @@tex_pattern_margin_number=/\\\\begin\\\{tiny\\\}\\\\hspace\\\{0mm\\\}\\\\end\\\{tiny\\\}\\\{\\\\marginpar.+?\s+/
- @@n=@@tableheader=@@rights=nil
- @@date ||=SiSU_Env::InfoDate.new
- class Source
- require 'pstore'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- include SiSU_Viz
- require_relative 'dal' # dal.rb
- include SiSU_DAL
- include SiSU_TeX
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- @md=@particulars.md
- @env=SiSU_Env::InfoEnv.new(@md.fns) #@env=@particulars.env
- end
- def directories
- begin
- case @opt.fns
- when /\.(?:-|ssm\.)?sst$/
- SiSU_Env::FileOp.new(@md).mkdir
- Dir.mkdir(@env.processing_path.tex) unless FileTest.directory?(@env.processing_path.tex)
- end
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- def read
- song
- end
- def song
- begin
- @md=@particulars.md
- SiSU_Screen::Ansi.new(@opt.cmd,'LaTeX/PDF',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}").green_title_hi unless @opt.cmd =~/q/
- if @opt.cmd =~/[MVv]/
- path=@env.url.output_tell
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.program.pdf_viewer} #{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l}pdf").flow
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@opt.fns} #{@env.program.pdf_viewer} #{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p}pdf").flow
- end
- @md=@particulars.md
- $flag=@md.opt.cmd #introduced to pass 0 for no object citation numbers... to texpdf_format
- directories
- #% needed needs to be reprogrammed !!!
- SiSU_Env::InfoSkin.new(@md).select
- dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
- SiSU_TeX::Source::LaTeXcreate.new(@particulars).songsheet
- dal_array=''
- pwd=Dir.pwd
- SiSU_TeX::Source::LaTeXtoPdf.new(@md,@particulars.env).latexrun_selective
- Dir.chdir(pwd)
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- unless @opt.cmd =~/[MV]/ #check maintenance flag
- texfiles=Dir["#{@env.processing_path.tex}/#{@opt.fns}*"]
- texfiles.each do |f|
- if FileTest.file?(f)
- File.unlink(f)
- end
- end
- end
- @tex_file=@@tex_footnote_array=[]
- @@column_instruct=''
- @@squigle_close=@@tex_line_mode=@@tex_word_mode=@@line_mode=''
- @@tex_debug_counter=@@table_pagebreak_counter=@@tex_footnote_call_counter=@@tex_table_flag=@@tex_counter=@@tex_column=@@tex_columns=@@tex_columns=@@counting=0
- @@tex_col_w=[]
- @@n=@@tableheader=@@rights=nil
- @@date=SiSU_Env::InfoDate.new
- @@flag={}
- $flag=1 #remove at some stage
- SiSU_Env::Clear.new(@opt.cmd,@opt.fns).param_instantiate
- end
- end
- private
- class LaTeXtoPdf
- @@n_lpdf||=0 #change
- def initialize(md,env)
- @md,@env=md,env
- @f=SiSU_Env::FileOp.new(@md).base_filename
- end
- def latex_do(texfilename,papersize)
- @texfilename=texfilename
- @@n_lpdf=@@n_lpdf+1
- SiSU_Screen::Ansi.new(@md.opt.cmd,"#{papersize} portrait ->").dark_grey_title_hi if @md.opt.cmd =~/[MVv]/
- tex_fn_base=@texfilename.gsub(/\.tex$/,'')
- cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.tex",'',@md.opt.cmd)
- tell=SiSU_Screen::Ansi.new(@md.opt.cmd)
- tell.grey_open if @md.opt.cmd =~/[MVv]/
- if "#{tex_fn_base}" =~/\w+/ \
- and "#{papersize}" =~/\w+/
- 2.times { |i| cmd.latex2pdf(@md,papersize) } #comment out to skip processing of latex portrait
- end
- tell.p_off if @md.opt.cmd =~/[MVv]/
- SiSU_Screen::Ansi.new(@md.opt.cmd,"#{papersize} landscape ->").dark_grey_title_hi if @md.opt.cmd =~/[MVv]/
- cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.landscape.tex",'',@md.opt.cmd)
- tell.grey_open if @md.opt.cmd =~/[MVv]/
- if "#{tex_fn_base}" =~/\w+/ \
- and "#{papersize}" =~/\w+/
- 2.times { |i| cmd.latex2pdf(@md,papersize) } #comment out to skip processing of latex landscape
- end
- tell.p_off if @md.opt.cmd =~/[MVv]/
- pwd=Dir.pwd
- portrait_pdf="#{pwd}/#{tex_fn_base}.pdf"
- landscape_pdf="#{pwd}/#{tex_fn_base}.landscape.pdf"
- case papersize
- when /a4/; pdf_p=@f.pdf_p_a4; pdf_l=@f.pdf_l_a4
- when /a5/; pdf_p=@f.pdf_p_a5; pdf_l=@f.pdf_l_a5
- when /b5/; pdf_p=@f.pdf_p_b5; pdf_l=@f.pdf_l_b5
- when /letter/; pdf_p=@f.pdf_p_letter; pdf_l=@f.pdf_l_letter
- when /legal/; pdf_p=@f.pdf_p_legal; pdf_l=@f.pdf_l_legal
- else pdf_p=@f.pdf_p_a4; pdf_l=@f.pdf_l_a4
- end
- FileUtils::mkdir_p(@md.file.output_path.pdf.dir) unless FileTest.directory?(@md.file.output_path.pdf.dir)
- if FileTest.file?(portrait_pdf)
- FileUtils::cp(portrait_pdf,"#{@md.file.output_path.pdf.dir}/#{pdf_p}")
- FileUtils::rm(portrait_pdf)
- else p "#{__FILE__}:#{__LINE__} NOT FOUND: #{portrait_pdf}" if @md.opt.cmd.inspect =~/M/
- end
- if FileTest.file?(landscape_pdf)
- FileUtils::cp(landscape_pdf,"#{@md.file.output_path.pdf.dir}/#{pdf_l}")
- FileUtils::rm(landscape_pdf)
- else p "#{__FILE__}:#{__LINE__} NOT FOUND: #{landscape_pdf}" if @md.opt.cmd.inspect =~/M/
- end
- SiSU_Screen::Ansi.new(@md.opt.cmd,@@n_lpdf,'processed (SiSU LaTeX to pdf - using pdfetex aka. pdftex or pdflatex)').generic_number if @md.opt.cmd =~/[MVv]/
- end
- def latexrun_selective
- begin
- pwd=Dir.pwd
- Dir.chdir(pwd) #watch
- @tex_f_no=0
- info={}
- if FileTest.file?(@env.source_file_with_path)
- @md.papersize_array.each do |ps|
- if @md.fns =~/\.(?:-|ssm\.)?sst$/
- case @md.fns
- when /\.(?:-|ssm\.)?sst$/
- if FileTest.directory?(@env.processing_path.tex)==true
- Dir.chdir(@env.processing_path.tex)
- texfile=@md.fns.gsub(/$/,".#{ps}.tex").
- gsub(/~/,'-')
- if File.exist?(texfile) \
- and File.size(texfile) > 0
- @tex_f_no+=1
- #p "#{__FILE__}:#{__LINE__} texpdf generation disabled" if @md.opt.cmd.inspect =~/M/ #%% disable temporarily, re-enable
- latex_do(texfile,ps)
- else
- puts "\tzero file size #{@env.processing_path.tex}/#{texfile}"
- end
- end
- end
- end
- end
- case @md.papersize_array[0] #default pdf
- when /a4/; pdf_p=@f.pdf_p_a4; pdf_l=@f.pdf_l_a4
- when /a5/; pdf_p=@f.pdf_p_a5; pdf_l=@f.pdf_l_a5
- when /b5/; pdf_p=@f.pdf_p_b5; pdf_l=@f.pdf_l_b5
- when /letter/; pdf_p=@f.pdf_p_letter; pdf_l=@f.pdf_l_letter
- when /legal/; pdf_p=@f.pdf_p_legal; pdf_l=@f.pdf_l_legal
- else pdf_p=@f.pdf_p_a4; pdf_l=@f.pdf_l_a4
- end
- if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{pdf_p}")
- mklnk=if @md.file.output_dir_structure.by_language_code? \
- or @md.file.output_dir_structure.by_filetype?
- "#{@md.fnb}.portrait.pdf"
- else 'portrait.pdf'
- end
- if FileTest.directory?(@md.file.output_path.pdf.dir)
- pwd=Dir.pwd
- Dir.chdir(@md.file.output_path.pdf.dir)
- FileUtils::rm_f(mklnk)
- FileUtils::ln_s(pdf_p, mklnk)
- Dir.chdir(pwd)
- end
- end
- if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{pdf_l}")
- mklnk=if @md.file.output_dir_structure.by_language_code? \
- or @md.file.output_dir_structure.by_filetype?
- "#{@md.fnb}.landscape.pdf"
- else 'landscape.pdf'
- end
- pwd_set=Dir.pwd
- Dir.chdir(@md.file.output_path.pdf.dir)
- FileUtils::rm_f(mklnk)
- FileUtils::ln_s(pdf_l, mklnk)
- Dir.chdir(pwd_set)
- end
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"FILE NOT FOUND: << #{@md.fns} >> - requested latex system processing skipped").warn
- end
- lst=Dir["*.{aux,log,out}"]
- lst.each {|file| File.unlink(file)} if lst
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- end
- end
- end
- class LaTeXcreate
- @@tex_head={
- 'a4'=> { p: nil, l: nil },
- 'a5'=> { p: nil, l: nil },
- 'b5'=> { p: nil, l: nil },
- 'letter'=>{ p: nil, l: nil },
- 'legal'=> { p: nil, l: nil },
- 'book'=> { p: nil, l: nil }
- }
- @@prefix_b=nil
- def initialize(particulars)
- @particulars=particulars
- @md=@particulars.md
- @env=SiSU_Env::InfoEnv.new(@md.fns) #@env=@particulars.env
- @data=@particulars.dal_array # dal file drawn here
- @st={ tex: {} }
- @tex_ml=SiSU_TeX_Pdf::UseTeX.new(@md)
- @vz=SiSU_Env::GetInit.instance.skin
- @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- @language=l[:n]
- @translate=SiSU_Translate::Source.new(@md,@language)
- @codeblock_box='listings' #alternative 'boites'
- @make ||=SiSU_Env::ProcessingSettings.new(@md)
- end
- def songsheet
- begin
- data=@data
- @@tex_footnote_array=[]
- @@rights=nil
- SiSU_Screen::Ansi.new(@md.opt.cmd,"pdfTex portrait & landscape").txt_grey if @md.opt.cmd=~/[MVvz]/
- if defined? @md.rights.all \
- and not @md.rights.all.empty?
- rght=@md.rights #.author.dup #dup is necessary, else contents of :rights changed
- sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,rght.copyright.all)
- copymark=@md.author_copymark \
- ? '{\begin{small}\copyright\end{small}} '
- : ''
- copymark='Copyright {\begin{small}\copyright\end{small}} '
- copyright=sp_char.special_characters_safe.gsub(/^\s*Copyright \(C\)/, copymark)
- @@rights||="\n #{Tex[:backslash]*2}[3]\\ \\linebreak #{copyright}"
- end
- if defined? @md.notes.prefix_b \
- and not @md.notes.prefix_b.empty?
- sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.notes.prefix_b)
- prefix_b=sp_char.special_characters_safe
- @@prefix_b="\n #{Tex[:backslash]*2}[3]\\ \\linebreak \\ #{prefix_b}\n" unless @@prefix_b
- end
- data=pre(data)
- data=footnote(data)
- if @md.flag_tables #WORK ON 2009
- data=tables(data) #uncomment to start experimenting with tables
- end
- data=number_paras(data)
- data=markup(data)
- output(data)
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- protected
- def pre(data)
- @tex_file=[]
- data.each do |dob|
- # DEBUG 2003w16 this is a kludge, because i could not get parameters
- # from param, Sort out ... revert to more elegant solution
- # even more of a kludge as had to insert newlines where code is used not satisfactory, think about
- dob.tmp=dob.obj #.dup
- if dob.is==:para \
- || dob.is==:heading
- dob.tmp=dob.tmp.gsub(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'')
- dob.tmp=SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp).special_characters
- if dob.tmp =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
- dob.tmp=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob.tmp).url_str_internal(dob.tmp)
- end
- elsif dob.is ==:code
- dob.tmp=if @codeblock_box=='listings'
- dob.tmp
- else
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp).special_characters_code
- end
- elsif dob.is ==:break
- if dob.obj==Mx[:br_page]; dob.tmp='\newpage'
- elsif dob.obj==Mx[:br_page_new]; dob.tmp='\clearpage'
- elsif dob.obj==Mx[:br_obj]; dob.tmp='\parasep'
- end
- elsif dob.is==:comment \
- || dob.is==:meta
- dob.tmp='' #dob.tmp=nil
- end
- end
- data
- end
- def footnote(data)
- data.each do |dob|
- # EMBEDDED FOOTNOTES / ENDNOTES should be straightforward but not quite a synch.
- if dob.tmp =~/#{Mx[:en_a_o]}[\d*+]+\s|#{Mx[:en_b_o]}([*+]\d+)\s/
- dob.tmp=dob.tmp.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,"\\footnote[\\1]{%\n \\2} ").
- gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/m,"\\FootnoteA{\\1}{%\n \\2} ").
- gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/m,"\\FootnoteA{\\1}{%\n \\2} ")
- end
- end
- data
- end
- def tables_hash(md,dob)
- @block={}
- @dob=dob
- @md.papersize_array.each do |ps|
- @@tableheader={ ps => { p: 0, l: 0 } }
- dob.tmp={ tmp: dob.tmp, paper_size: ps }
- format_l=SiSU_TeX_Pdf::FormatTextObject.new(md,dob)
- dob.tmp={ tmp: dob.tmp, paper_size: ps }
- format_p=SiSU_TeX_Pdf::FormatTextObject.new(md,dob)
- @block[ps]={
- l: format_l.longtable_landscape,
- p: format_p.longtable_portrait
- }
- end
- @dob.tmp=@block
- @dob
- end
- def tables(data)
- @tex_file=[]
- data.each do |dob|
- @tex_file << if dob.class==String \
- or dob.class==Hash; dob
- elsif dob.is==:table
- tables_hash(@md,dob) #Hash result
- else dob
- end
- end
- @tex_file
- end
- def enclose(dob)
- dob
- end
- def box_boites(dob,ocn)
- sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp,dob.is)
- dob.tmp=sp_char.special_characters_safe
- dob.tmp=dob.tmp.gsub(/(#{Mx[:nbsp]})/m,'{\color{mywhite}\1}').
- #dob.tmp.gsub(/#{Mx[:nbsp]}/m,'{~}') # dob.tmp.gsub(/#{Mx[:nbsp]}\s*/m,'{~}')
- gsub(/#{Mx[:vline]}/m,'\vline').
- gsub(/ \\( |#{Mx[:br_nl]})/,' {\textbackslash}\1').
- gsub(/#{Mx[:br_nl]}\s*\Z/m,'').
- gsub(/#{Mx[:br_nl]}{2}/,'\newline \\\\\\ ').
- gsub(/#{Mx[:br_nl]}/,' \\\\\\ ').
- gsub(/\n\n\n/m," \\newline\n\n")
- ocn=SiSU_TeX_Pdf::FormatTextObject.new(@md).ocn_display(dob)
- dob.tmp = ocn \
- + @tex_ml.paraskip_small \
- + '\begin{Codeblock}' \
- + '\begin{codeblockboitebox} \hardspace \newline ' \
- + dob.tmp \
- + '\end{codeblockboitebox}' \
- + '\end{Codeblock}' \
- + "\n" \
- + @tex_ml.paraskip_normal
- dob
- end
- def box_listings(dob,ocn)
- sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,dob.tmp,dob.is)
- dob.tmp=sp_char.characters_code_listings
- dob.tmp=dob.tmp.gsub(/^\s+/m,''). #bug, fix earlier, should be made unecessary
- gsub(/#{Mx[:nbsp]}/m,' ').
- gsub(/#{Mx[:vline]}/m,'|').
- gsub(/#{Mx[:br_nl]}(?:\s?\n)?/m,"\n").
- gsub(/\n\n\n/m," \n\n")
- ocn=SiSU_TeX_Pdf::FormatTextObject.new(@md).ocn_display(dob)
- dob.tmp = ocn \
- + @tex_ml.paraskip_small \
- + '\begin{Codeblock}' \
- + "\n" \
- + '\begin{lstlisting} ' \
- + "\n" \
- + dob.tmp \
- + "\n" \
- + '\end{lstlisting} ' \
- + "\n" \
- + '\end{Codeblock}' \
- + "\n" \
- + @tex_ml.paraskip_normal
- dob
- end
- def markup_common(dob)
- tex_f=nil
- txt_obj={ dal: dob }
- if dob.of==:block
- @lineone=if dob.is==:block \
- || dob.is==:group \
- || dob.is==:alt \
- || dob.is==:verse
- dob.tmp=dob.tmp.gsub(/#{Mx[:nbsp]}/m,'{~}').
- gsub(/#{Mx[:gl_bullet]}/m,'$\txtbullet$\hspace{\enspace}'). #Bullet environment not used for grouped text, ∴ no hanging indent here
- gsub(/#{Mx[:br_nl]}+/m,"\n\n") #match not ideal, but currently not inserting extra newlines anyway
- ocn=SiSU_TeX_Pdf::FormatTextObject.new(@md).ocn_display(dob)
- dob.tmp=if dob.is==:group \
- || dob.is==:block \
- || dob.is==:alt
- ocn \
- + @tex_ml.paraskip_small \
- + "\n" \
- + ' \\begin{footnotesize}' \
- + "\n\n" \
- + dob.tmp \
- + '\\end{footnotesize}' \
- + "\n" \
- + @tex_ml.paraskip_normal
- elsif dob.is==:verse
- ocn \
- + @tex_ml.paraskip_tiny \
- + "\n" \
- + ' \\begin{footnotesize}' \
- + "\n\n" \
- + dob.tmp \
- + '\\end{footnotesize}' \
- + "\n" \
- + @tex_ml.paraskip_normal \
- + "\n\\linebreak\n"
- end
- dob
- elsif dob.is ==:code
- dob=if @codeblock_box == 'listings'
- box_listings(dob,ocn)
- elsif @codeblock_box == 'boites'
- box_boites(dob,ocn)
- else
- box_boites(dob,ocn)
- end
- dob
- else 'error' #should never occur
- end
- dob=enclose(dob) unless dob.tmp =~/^$/
- dob
- else
- tst=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob)
- case dob.is
- when :heading
- case dob.ln
- when 1..3
- tst.heading_major
- when 4
- tst.level4
- when 5
- tst.level5
- when 6
- tst.level6
- else dob
- end
- when :heading_insert
- br="\n\\\\\n"
- if dob.name=='book_index'
- h=tst.heading_major
- heading="\\clearpage\n" + h.tmp
- idx_arr=[]
- idx=SiSU_Particulars::CombinedSingleton.instance.get_idx_tex(@md.opt).tex_idx
- idx.each do |x|
- x=if x.class==String
- x=SiSU_TeX_Pdf::SpecialCharacters.new(@md,x).special_characters
- x=SiSU_TeX_Pdf::FormatTextObject.new(@md,x).url_str_internal(x,true)
- else x=nil
- end
- idx_arr << x.sub(/,$/,'') if x.class==String
- end
- idx_str=idx_arr.join(br)
- l=heading + br + idx_str
- p=heading + br +
- '\begin{multicols}{2}' + br +
- idx_str + br +
- '\end{multicols}'
- dob.tmp={ l: l, p: p }
- elsif dob.ln==2 \
- and dob.obj=~/Metadata\b/
- tst.heading_major
- elsif dob.ln==4 \
- and dob.obj=~/Metadata\b/
- h=tst.level4
- metadata=SiSU_Metadata::TeX_Metadata.new(@md).metadata_tex
- dob.tmp=h.tmp + ' ' + '\begin{scriptsize}' + metadata.join(br) + '\end{scriptsize}'
- else dob.tmp='' # dob.tmp={ l: '', p: '' }
- end
- when :para
- if dob.bullet_
- dob.tmp=tst.bullet
- elsif dob.indent \
- and dob.hang \
- and dob.indent =~/[1-9]/ \
- and dob.indent == dob.hang
- dob.tmp=tst.indent
- elsif dob.hang \
- and dob.hang =~/[0-9]/ \
- and (dob.indent != dob.hang or dob.indent =~/[1-9]/)
- dob.tmp=tst.hang
- else
- dob.tmp=dob.tmp.strip
- dob=enclose(dob) unless dob.tmp =~/^$/
- end
- else
- dob.tmp=dob.tmp.strip unless dob.is==:code
- dob=enclose(dob) unless dob.tmp =~/^$/
- end
- if dob.class==String
- dob.tmp=dob.tmp.gsub(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*/,' \newline '). #% tread with care
- gsub(/(\.#{Tex[:tilde]}\S*\s*|<:\S+>|#{Mx[:fa_o]}.*?#{Mx[:fa_c]}|#{Mx[:gr_o]}.*?#{Mx[:gr_c]}|<!.*?!>|<!>)/,' ') #% tread with care
- end
- dob
- end
- if dob.tmp =~/(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image\b)/m \
- && dob.is !=:code
- dob=SiSU_TeX_Pdf::BareUrls.new(@md,dob).bare_urls
- tst=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob)
- dob=tst.urls_txt_and_images
- dob
- elsif dob.tmp =~/https?:\/\/\S+\b/m \
- && dob.is ==:code \
- && @codeblock_box !='listings'
- dob=SiSU_TeX_Pdf::BareUrls.new(@md,dob).bare_urls_in_code
- dob
- end
- if dob.class !=Hash \
- && dob.tmp =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image\b/ \
- && dob.is !=:code
- tst=SiSU_TeX_Pdf::FormatTextObject.new(@md,dob)
- end
- dob
- end
- def tex_box_listings
- <<WOK
-\\definecolor{listinggray}{gray}{0.9}
-\\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
-\\lstset{
- backgroundcolor=\\color{lbcolor},
- tabsize=4,
- rulecolor=,
- language=,
- basicstyle=\\scriptsize,
- upquote=true,
- aboveskip={1.5\\baselineskip},
- columns=fixed,
- showstringspaces=false,
- extendedchars=true,
- breaklines=true,
- prebreak = \\raisebox{0ex}[0ex][0ex]{\\ensuremath{\\hookleftarrow}},
- frame=single,
- showtabs=false,
- showspaces=false,
- showstringspaces=false,
- identifierstyle=\\ttfamily,
- keywordstyle=\\color[rgb]{0,0,1},
- commentstyle=\\color[rgb]{0.133,0.545,0.133},
- stringstyle=\\color[rgb]{0.627,0.126,0.941},
-}
-WOK
- end
- def tex_box_boites
- <<WOK
-\\def\\codeblockboitebox{%
- \\def\\bkvz@before@breakbox{\\ifhmode\\par\\fi\\vskip\\breakboxskip\\relax}%
- \\def\\bkvz@set@linewidth{\\advance\\linewidth -2\\fboxrule
- \\advance\\linewidth -2\\fboxsep} %
- \\def\\bk@line{\\hbox to \\linewidth{%
- \\ifbkcount\\smash{\\llap{\\the\\bk@lcnt\\ }}\\fi
- \\psframebox*[framesep=0pt,linewidth=0pt]{%
- \\vrule\\@width\\fboxrule \\hskip\\fboxsep
- \\box\\bk@bxa
- \\hskip\\fboxsep \\vrule\\@width\\fboxrule
- }%
- }}%
- %\\def\\bkvz@top{\\hrule\\@height\\fboxrule}
- \\def\\bkvz@top{\\hrule height .6pt}%
- \\def\\bkvz@bottom{\\hrule\\@height\\fboxrule}%
- \\breakbox}
-\\def\\endcodeblockboitebox{\\endbreakbox}
-WOK
- end
- def tex_codeblock
- codeblock_box=if @codeblock_box=='listings'
- tex_box_listings
- elsif @codeblock_box=='boites'
- tex_box_boites
- else
- tex_box_boites
- end
- codeblock_box
- end
- def markup(data)
- @tex_file=[]
- md={}
- home=@vz.txt_home.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]}|\\\\/,' - ') #no line splitting in heading neither html nor latex
- title=@md.title.full.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]}|\\\\/,' - ') #no line splitting in heading neither html nor latex
- @md.papersize_array.each do |ps|
- txt_obj={ txt: "#{home}: - #{title}", paper_size: ps, orientation: 'portrait' }
- orient_portrait=SiSU_TeX_Pdf::FormatHead.new(@md,txt_obj)
- txt_obj={ txt: "#{home}: - #{title}", paper_size: ps, orientation: 'landscape' }
- orient_landscape=SiSU_TeX_Pdf::FormatHead.new(@md,txt_obj)
- @@tex_head[ps][:p]=orient_portrait.document_head_with_orientation(@codeblock_box)
- @@tex_head[ps][:l]=orient_landscape.document_head_with_orientation(@codeblock_box)
- end
- @tex_file <<<<WOK
-#{@tex_ml.header}#{@tex_ml.footer}
-\\tolerance=300
-\\clubpenalty=300
-\\widowpenalty=300
-\\makeatother
-\\makeatother
-\\chardef\\txtbullet="2022
-\\chardef\\tilde="7E
-%\\chardef\\asterisk="2A
-\\def\\asterisk{{\\rm \\char42} }
-\\definecolor{Light}{gray}{.92}
-\\newcommand{\\Codeblock}[1]{\\normaltext\\raggedright\\small\\ttfamily\\texbackslash#1}
-\\newcommand{\\monosp}[1]{\\normaltext\\ttfamily\\texbackslash#1}
-\\newcommand{\\parasep}{\\\\ \\begin{center}*\\hspace{2em}*\\hspace{2em}*\\end{center} \\\\}
-\\newcommand{\\hardspace}{{~}}
-%\\newcommand{\\hardspace}{\\hspace{.5em}}
-\\newcommand{\\caret}{{\\^{~}}}
-\\newcommand{\\pipe}{{\\textbar}}
-\\newcommand{\\curlyopen}{\{}
-\\newcommand{\\curlyclose}{\}}
-\\newcommand{\\lt}{{\UseTextSymbol{OML}{<}}}
-\\newcommand{\\gt}{{\UseTextSymbol{OML}{>}}}
-\\newcommand{\\slash}{{/}}
-\\newcommand{\\underscore}{\\_}
-\\newcommand{\\exclaim}{\\Verbatim{!}}
-#{tex_codeblock}
-% (tilde hash amp affected by http)
-% \\sloppy
-\\begin{document}
-WOK
- sisu_rc_footnote=if @md.sc_info; @tex_ml.doc_sc_info_footnote_full
- else @tex_ml.doc_sc_info_footnote_brief
- end
- @copymark='' #check and remove as now is superflous
- x={}
- txt_obj={ title: @md.title.full }
- x[:l]=SiSU_TeX_Pdf::FormatTextObject.new(@md,txt_obj).title_landscape
- x[:p]=SiSU_TeX_Pdf::FormatTextObject.new(@md,txt_obj).title_portrait
- @tex_file << x
- x=nil
- if defined? @md.creator.author \
- and @md.creator.author
- sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.creator.author)
- author=sp_char.special_characters
- @tex_file << if @md.author_home
- <<WOK
-
-\\author{\\href{#{@md.author_home}}{#{@copymark} \\textnormal{#{author}}}}
-WOK
- else "\n\\author{#{@copymark} \\textnormal{#{author}}}"
- end
- end
- @tex_file << unless @md.fnb =~/^mail\s*$/; @tex_ml.site
- else '\date'
- end
- @tex_file <<<<WOK
-\\pagenumbering{roman}\\maketitle
-\\pagestyle{fancy}
-WOK
- if defined? @md.rights.all \
- and @md.rights.all
- @tex_file << "\\newpage\n"
- @tex_file << @@rights
- @tex_file << @@prefix_b if defined? @md.creator.prefix_b and @md.creator.prefix_b
- end
- x={}
- if (@make.build.toc?)
- toc=<<WOK
-\\renewcommand{\\contentsname}{#{@translate.contents}}
-\\tableofcontents
-WOK
- toc_pb={ l: @tex_ml.newpage('landscape'), p: @tex_ml.newpage('portrait') }
- else
- toc=''
- toc_pb={ l: '', p: '' }
- end
- x[:l] =<<WOK
-#{@tex_ml.newpage('landscape')}
-\\pagestyle{fancy}
-#{toc}#{toc_pb[:l]}
-\\pagenumbering{arabic}
-#{@tex_ml.paraskip_normal}
-#{@tex_ml.newpage('landscape')}
-WOK
- x[:p] =<<WOK
-#{@tex_ml.newpage('portrait')}
-\\pagestyle{fancy}
-#{toc}#{toc_pb[:p]}
-#{@tex_ml.newpage('portrait')}
-\\pagenumbering{arabic}
-#{@tex_ml.paraskip_normal}
-#{@tex_ml.newpage('portrait')}
-WOK
- @tex_file << x
- x=nil
- data.each do |dob| #% case follows with levels 1-6 indents & graphics
- if dob.class==Hash
- elsif dob.of==:para \
- || dob.of==:block #GATEWAY FIX FIX stuff
- dob=markup_common(dob)
- elsif dob.is==:table
- if ( dob.tmp['a4'] \
- or dob.tmp['a5'] \
- or dob.tmp['b5'] \
- or dob.tmp['letter'] \
- or dob.tmp['legal'])
- @md.papersize_array.each do |ps|
- if dob.tmp[ps]
- if (dob.tmp[ps][:p] and dob.tmp[ps][:l])
- dob.tmp[ps]={
- p: markup_common(dob.tmp[ps][:p]),
- l: markup_common(dob.tmp[ps][:l])
- }
- else p "#{__FILE__}:#{__LINE__}" if @md.opt.cmd.inspect =~/M/
- end
- end
- end
- elsif dob.tmp.class==Hash \
- and (dob.tmp[:p] and dob.tmp[:l])
- dob = {
- p: markup_common(dob.tmp[:p]),
- l: markup_common(dob.tmp[:l])
- }
- else p "#{__FILE__}:#{__LINE__}" if @md.opt.cmd.inspect =~/M/
- end
- end
- @tex_file << dob
- end
- @st[:tex][:stmp]||=@md.stmpd
- stamp=@st[:tex][:stmp] if @st[:tex][:stmp]
- if stamp
- use=stamp.gsub(/\n/,"#{Tex[:backslash]*2}\n")
- @tex_file << "\n\\newpage\n"
- @tex_file << "\\section*" +
- "{#{@tex_ml.owner_chapter}}\n" +
- "\\addcontentsline{toc}" +
- "{section}{#{@tex_ml.owner_chapter}}\n"
- @tex_file << "#{use}\n"
- @tex_file << @@rights if @@rights
- end
- @tex_file << "\n\\end{document}"
- end
- def number_paras_numbering(dob) # need tables and other types of object
- if dob.of ==:para
- paranum=dob.ocn ? dob.ocn : ''
- paranum = '' if paranum.to_i==0
- paranumber_display=if @make.build.ocn?
- tags=''
- #[keep] code that follows inserts "name tags" as hypertargets, currently using ocn (converting nametags to ocn) for internal linking, related code: |texpdf_format.rb|@|uses nametags directly|
- #if dob.tags.length > 0 # insert tags "hypertargets"
- # dob.tags.each do |t|
- # tags=tags +"\\hspace{0mm}\\hypertarget{#{t}}{\\hspace{0mm}}"
- # end
- #end
- "\\begin{tiny}\\hspace{0mm}\\end{tiny}{\\marginpar{\\begin{tiny}\\hspace{0mm}\\hypertarget{#{dob.ocn}}{#{dob.ocn}}#{tags}\\end{tiny}}}" #ocn object citation numbering
- else ''
- end
- dob.tmp = paranumber_display + dob.tmp
- end
- dob
- end
- def number_paras(data)
- tex_file=[]
- data.each do |dob|
- dob=if dob.class==Hash
- if ( dob['a4'] \
- or dob['a5'] \
- or dob['b5'] \
- or dob['letter'] \
- or dob['legal'])
- para_hash={}
- @md.papersize_array.each do |ps|
- if defined? dob.tmp and dob.tmp[ps]
- if (dob.tmp[ps][:p] and dob.tmp[ps][:l])
- para_hash[ps]={
- p: number_paras_numbering(dob.tmp[ps][:p]),
- l: number_paras_numbering(dob.tmp[ps][:l])
- }
- dob.tmp=para_hash
- else p "#{__FILE__}:#{__LINE__}" if @md.opt.cmd.inspect =~/M/
- end
- end
- end
- elsif (dob.tmp[:p] and dob.tmp[:l])
- dob.tmp = {
- p: number_paras_numbering(dob.tmp[:p]),
- l: number_paras_numbering(dob.tmp[:l])
- }
- else p "#{__FILE__}:#{__LINE__}" if @md.opt.cmd.inspect =~/M/
- end
- else
- dob=if dob.of !=:comment \
- || dob.of !=:meta \
- || dob.of !=:layout
- number_paras_numbering(dob)
- else dob
- end
- end
- end
- data
- end
- def output_morph_hash(o)
- ps,h,fn=o[:ps],o[:h],o[:filename]
- if h[ps] \
- and (h[ps][:p] and h[ps][:l])
- if h[ps][:p]
- h[ps][:p]=h[ps][:p].gsub(/[ ]+$/m,'').
- gsub(/\n\n\n+/m,"\n\n")
- end
- if h[ps][:l]
- h[ps][:l]=h[ps][:l].gsub(/[ ]+$/m,'').
- gsub(/\n\n\n+/m,"\n\n")
- end
- #h[ps][:p].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[ps][:p]
- #h[ps][:l].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[ps][:l]
- if h[ps][:p] !~/\A\s*\Z/
- fn[:portrait].puts h[ps][:p],"\n"
- end
- if h[ps][:l] !~/\A\s*\Z/
- fn[:landscape].puts h[ps][:l],"\n"
- end
- elsif (h[:p] and h[:l])
- if h[:p]
- h[:p]=h[:p].gsub(/[ ]+$/m,'').
- gsub(/\n\n\n+/m,"\n\n")
- end
- if h[:l]
- h[:l]=h[:l].gsub(/[ ]+$/m,'').
- gsub(/\n\n\n+/m,"\n\n")
- end
- #h[:p].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[:p]
- #h[:l].gsub!(/(?:^[ ]+|[ ]+$)/m,'') if h[:l]
- if h[:p] !~/\A\s*\Z/
- fn[:portrait].puts h[:p],"\n"
- end
- if h[:l] !~/\A\s*\Z/
- fn[:landscape].puts h[:l],"\n"
- end
- else p "#{__FILE__}:#{__LINE__}" if @md.opt.cmd.inspect =~/M/
- end
- end
- def output(array)
- @array=array=array.flatten.compact
- fns_l=@md.fns.gsub(/~/,'-') #this is a sorry fix, but necessary as it appears latex programs like not ~
- @md.papersize_array.each do |ps|
- file={
- landscape: File.new("#{@env.processing_path.tex}/#{fns_l}.#{ps}.landscape.tex",'w+'),
- portrait: File.new("#{@env.processing_path.tex}/#{fns_l}.#{ps}.tex",'w+')
- }
- file[:portrait] << @@tex_head[ps][:p]
- file[:landscape] << @@tex_head[ps][:l]
- array.each do |morph|
- if morph.class==String
- #morph.gsub!(/^\s+/,'')
- if morph !~/\A\s*\Z/
- file[:portrait].puts morph,"\n"
- file[:landscape].puts morph,"\n"
- end
- elsif morph.class.inspect =~ /SiSU_DAL_DocumentStructure/ \
- and morph.tmp \
- and morph.tmp.class==String
- if morph.is !=:code \
- && morph.of !=:block
- morph.tmp=morph.tmp.gsub(/^\s+/,'')
- else morph.tmp
- end
- if (morph.tmp !~/\A\s*\Z/) \
- || morph.is==:code
- file[:portrait].puts morph.tmp,"\n"
- file[:landscape].puts morph.tmp,"\n"
- end
- elsif morph.class==Hash #inserted headers and the like, only
- h={ ps: ps, h: morph, filename: file }
- output_morph_hash(h)
- elsif morph.tmp.class==Hash #tables & images?
- h={ ps: ps, h: morph.tmp, filename: file }
- output_morph_hash(h)
- end
- end
- array=@array
- file[:portrait].close
- file[:landscape].close
- end
- @@tex_head={
- 'a4'=> { p: nil, l: nil },
- 'a5'=> { p: nil, l: nil },
- 'b5'=> { p: nil, l: nil },
- 'letter'=>{ p: nil, l: nil },
- 'legal'=> { p: nil, l: nil },
- 'book'=> { p: nil, l: nil }
- }
- array=[]
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/texpdf_format.rb b/lib/sisu/v3dv/texpdf_format.rb
deleted file mode 100644
index ae277ec6..00000000
--- a/lib/sisu/v3dv/texpdf_format.rb
+++ /dev/null
@@ -1,1621 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: LaTeX formatting template, unicode utf-8 version, used for pdf
-
-=end
-module SiSU_TeX_Pdf
- @@table_pg_break_counter=1
- include SiSU_Viz
- class BareUrls
- def initialize(md,dob=nil)
- @md,@dob=md,dob
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- end
- def bare_urls
- @dob.obj=@dob.obj.gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
- "#{@brace_url.tex_open}\\1</a>#{@brace_url.tex_close}")
- @dob.tmp=@dob.tmp.gsub(/(^|[^\\])_/m,'\1\_'). #watch may not work
- gsub(/(^|[^#{Mx[:lnk_c]}])#{Mx[:url_o]}_?(?:\\?_)?(\S+?)#{Mx[:url_c]}/m,
- "\\1#{@brace_url.tex_open}\\begin{scriptsize}\\url{\\2}\\end{scriptsize}#{@brace_url.tex_close}")
- @dob
- end
- def bare_urls_in_code
- @dob.tmp=@dob.tmp.gsub(/(^|[^\\])_/m,'\1\_'). #watch may not work
- gsub(/(https?:\/\/\S+?)([{]|[.,;)\]]?(?: |$))/m,
- '\begin{scriptsize}\url{\1}\end{scriptsize}\2')
- @dob
- end
- end
- class FormatTextObject
- require_relative 'defaults' # defaults.rb
- attr_accessor :string,:string1,:orientation,:url,:dir,:tex
- @@sys=SiSU_Env::SystemCall.new
- @@tex_pattern_margin_number=/\\begin\{tiny\}\\hspace\{0mm\}\\end\{tiny\}\{\\marginpar.+?\}\}\}/
- @@tableheader={
- 'a4' => { p: 0, l: 0 },
- 'a5' => { p: 0, l: 0 },
- 'b5' => { p: 0, l: 0 },
- 'letter' => { p: 0, l: 0 },
- 'legal' => { p: 0, l: 0 }
- }
- @@sys=SiSU_Env::SystemCall.new
- def initialize(md,dob=nil)
- @md,@dob=md,dob
- if defined? @md.image \
- and @md.image =~/center/
- @center_begin,@center_end='\begin{center}','\end{center}'
- else @center_begin,@center_end='',''
- end
- @start_table=''
- @tx=SiSU_Env::GetInit.instance.tex
- @brace_rel=SiSU_Viz::Skin.new.rel_decoration
- @env ||=SiSU_Env::InfoEnv.new(@md.fns)
- @tex2pdf=@@tex3pdf ||=SiSU_Env::SystemCall.new.tex2pdf_engine
- @make ||=SiSU_Env::ProcessingSettings.new(@md)
- end
- def ocn_display(dob)
- show_ocn=(@make.build.ocn?) \
- ? dob.ocn
- : ''
- "\\begin{tiny}\\hspace{0mm}\\end{tiny}{\\marginpar{\\begin{tiny}\\hspace{0mm}\\hypertarget{#{dob.ocn}}{#{show_ocn}}\\end{tiny}}}" #ocn object citation numbering
- end
- def table_special_characters(r)
- r=r.gsub(/#{Mx[:tc_p]}|$/u,'&').
- gsub(/%/,'\%').
- gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\begin{bfseries}\1 \end{bfseries}').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\emph{\1}').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\uline{\1}'). # ulem
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,"``\\1''"). # quote #CHECK
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\uline{\1}'). # ulem
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\sout{\1}'). # ulem
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,"\$^{\\textrm{\\1}}\$").
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,"\$_{\\textrm{\\1}}\$")
- end
- def longtable_landscape
- end_table='\end{longtable}'
- row_break='\\\\\\'
- txt=if @dob.is==:table
- tw=case @dob.tmp[:paper_size]
- when /a4/i; @tx.a4.landscape.w #European default, SiSU default
- when /letter/i; @tx.letter.landscape.w #U.S. default
- when /legal/i; @tx.legal.landscape.w #U.S. alternative
- when /book|b5/i; @tx.b5.landscape.w #book default - larger
- when /a5/i; @tx.a5.landscape.w
- else @tx.a4.landscape.w #default currently A4
- end
- textwidth=(tw.to_i/2) - 24
- colW=[]
- colW << '{'
- @dob.widths.each do |x|
- x=(x.to_i * textwidth)/100
- col_w=x.to_s # x.gsub(/.+/,'l\|') #unless x.nil?
- colW << "p{#{col_w}mm}" if col_w
- end
- colW << '}'
- colW=colW.join
- start_table="\n\\setlength{\\LTleft}{0pt}\n\\setlength{\\LTright}{\\fill}\n" +
- "\\begin{tiny}\n\\begin{longtable}#{colW}\n"
- rows=@dob.obj.split(/#{Mx[:br_nl]}/)
- if @dob.head_ #result imperfect, check on
- rows[0]=rows[0].gsub(/(^|.+?)(?:#{Mx[:tc_p]}|$)/u,'\bfseries \1&').
- gsub(/&\s*$/," #{row_break} \\hline\\endhead #{row_break}")
- end
- rows_new=[]
- rows.each do |r|
- r=table_special_characters(r)
- r=r.gsub(/$/," #{row_break}\n") unless r =~/#{row_break*2}$/
- if r=~/\<!f(.+?)!\>/ # not tested table footer if any
- tablefoot=$1
- r=r.gsub(/\<!f(.+?)!\>/,'')
- r="#{r} \\multicolumn{#{@dob.cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n"
- end
- rows_new << r
- end
- table=rows_new.join #@dob[:dal].obj=rows.join
- ocn_display(@dob) + start_table + table + " #{end_table}\n\\end{tiny}"
- else ''
- end
- end
- def longtable_portrait
- end_table='\end{longtable}'
- row_break='\\\\\\'
- txt=if @dob.is==:table
- tw=case @dob.tmp[:paper_size]
- when /a4/i; @tx.a4.portrait.w #European default, SiSU default
- when /letter/i; @tx.letter.portrait.w #U.S. default
- when /legal/i; @tx.legal.portrait.w #U.S. alternative
- when /book|b5/i; @tx.b5.portrait.w #book default - larger
- when /a5/i; @tx.a5.portrait.w
- else @tx.a4.portrait.w #default currently A4
- end
- textwidth=tw.to_i - 20
- colW=[]
- colW << '{'
- @dob.widths.each do |x|
- x=(x.to_i * textwidth)/100 #x=(x.to_i/100.0 * 160)
- col_w=x.to_s # x.gsub(/.+/,'l\|') #unless x.nil?
- colW << "p{#{col_w}mm}" if col_w
- end
- colW << '}'
- colW=colW.join
- start_table="\n\\setlength{\\LTleft}{0pt}\n\\setlength{\\LTright}{\\fill}\n" +
- "\\begin{tiny}\n\\begin{longtable}#{colW}\n"
- rows=@dob.obj.split(/#{Mx[:br_nl]}/)
- if @dob.head_
- rows[0]=rows[0].gsub(/(^|.+?)(?:#{Mx[:tc_p]}|$)/u,'\bfseries \1&').
- gsub(/&\s*$/," #{row_break} \\hline\\endhead #{row_break}")
- end
- rows_new=[]
- rows.each do |r|
- r=table_special_characters(r)
- r=r.gsub(/$/," #{row_break}\n") unless r =~/#{row_break*2}$/
- if r=~/\<!f(.+?)!\>/ # not tested table footer if any
- tablefoot=$1
- r=r.gsub(/\<!f(.+?)!\>/,'')
- r="#{r} \\multicolumn{#{@dob.cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n"
- end
- rows_new << r
- end
- table=rows_new.join #@dob[:dal].obj=rows.join
- ocn_display(@dob) + start_table + table + " #{end_table}\n\\end{tiny}"
- else ''
- end
- end
- def heading_major
- dob=@dob
- title=@md.title.full
- dob.tmp=dob.tmp.strip if dob.tmp
- dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln=dob.tmp.dup
- cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
- gsub(@@tex_pattern_margin_number,'')
- clearp=(dob.lv =~/B/ && dob.obj =='Metadata') ? "\\clearpage\n" : ''
- if dob.tmp =~/\\[Ff]ootnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
- gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
- end
- dob.tmp=dob.tmp.gsub(/^(.*)\n?$/m,
- "#{clearp}\\part*{\\1}
-\\addcontentsline{toc}{section}{#{cont_ln}}
-\\markboth{#{title}}\n")
- dob
- end
- def level4
- dob=@dob
- dob.tmp=dob.tmp.strip if dob.tmp
- dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln=dob.tmp.dup
- cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
- gsub(@@tex_pattern_margin_number,'').
- gsub(/#{Tex[:backslash]*2}/,"#{Tex[:backslash]*4}"). # added w42
- gsub(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- gsub(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- title=@md.title.full
- if dob.name =~/endnotes/
- dob.tmp=dob.tmp.gsub(/.+/m,'')
- end
- if dob.tmp =~/\\footnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
- gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
- end
- dob.tmp=dob.tmp.gsub(/^(.*)?\n?$/m,"\\subsubsection*{\\1}
-\\addcontentsline{toc}{subsection}{#{cont_ln}}
-\\markright{#{title}}")
- dob
- end
- def level5
- dob=@dob
- # there is a problem here with creation of headers does not do what you would want it to header starts with a * and is not in bold work on \\@txt*, same for next section 2002w46
- dob.tmp=dob.tmp.strip if dob.tmp
- dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln=dob.tmp.dup
- cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
- gsub(@@tex_pattern_margin_number,'').
- gsub(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- gsub(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- gsub(/\\\&/,' and ') #revisit: tmp bugfix 200507, substitutes & with 'and' in toc, needed e.g. for AT&T, see ffa
- if dob.tmp =~/\\footnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
- gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
- end
- dob.tmp=dob.tmp.gsub(/^(.*)?\n?$/m,
- "\\subsubsection*{\\1}
-\\addcontentsline{toc}{subsubsection}{#{cont_ln} \\\\
-}")
- dob
- end
- def level6
- dob=@dob
- # there is a problem here with creation of headers does not do what you would want it to header starts with a * and is not in bold work on \\sub@txt*, same for previous section 2002w46
- dob.tmp=dob.tmp.strip if dob.tmp
- dob.tmp=dob.tmp.gsub(/\\begin\{(bfseries|itshape)\}(.+?)\\end\{\1\}/m,'\2')
- cont_ln=dob.tmp.dup
- cont_ln=cont_ln.gsub(/\\begin\{(monosp)\}(.+?)\\end\{\1\}/m,'\2').
- gsub(@@tex_pattern_margin_number,'').
- gsub(/\\footnote\[\d+\]\{%.+?\\end\{scriptsize\}\s*\}/m,''). #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- gsub(/\\Footnote[A]\{[*+]+\d*\}\{%.+?\\end\{scriptsize\}\s*\}/m,'') #arbitrary bugfix, revisit should not be necessary, eg. wta.1994 2004w22
- if dob.tmp =~/\\footnote/ #and dob =~/^[1-6]#{Tex[:tilde]}/ # removing footnotes from headings!
- cont_ln=cont_ln.gsub(/\s*\\footnote\[\d+\]\{%\n .+? \}\s*/,' ').
- gsub(/\s*\\Footnote[A]\{[*+]+\d*\}\{%\n .+? \}\s*/,' ')
- end
- dob.tmp=dob.tmp.gsub(/^(.*)?\n?$/m,
- "\\subsubsection*{\\1}
-\\addcontentsline{toc}{subsubsection}{~~~~#{cont_ln} \\\\
-}")
- #dob.tmp.gsub(/^(.*)?\n?$/m,
- # '\subsubsection*{\1}')
- dob
- end
- def hang
- case @dob.indent
- when /0/
- case @dob.hang
- when /0/; indent,hang='0mm', '0mm'
- when /1/; indent,hang='0mm','10mm'
- when /2/; indent,hang='0mm','20mm'
- when /3/; indent,hang='0mm','30mm'
- when /4/; indent,hang='0mm','40mm'
- when /5/; indent,hang='0mm','50mm'
- when /6/; indent,hang='0mm','60mm'
- when /7/; indent,hang='0mm','70mm'
- when /8/; indent,hang='0mm','80mm'
- when /9/; indent,hang='0mm','90mm'
- end
- when /1/
- case @dob.hang
- when /0/; indent,hang='10mm','-10mm'
- when /1/; indent,hang='10mm', '0mm'
- when /2/; indent,hang='10mm', '10mm'
- when /3/; indent,hang='10mm', '20mm'
- when /4/; indent,hang='10mm', '30mm'
- when /5/; indent,hang='10mm', '40mm'
- when /6/; indent,hang='10mm', '50mm'
- when /7/; indent,hang='10mm', '60mm'
- when /8/; indent,hang='10mm', '70mm'
- when /9/; indent,hang='10mm', '80mm'
- end
- when /2/
- case @dob.hang
- when /0/; indent,hang='20mm','-20mm'
- when /1/; indent,hang='20mm','-10mm'
- when /2/; indent,hang='20mm', '0mm'
- when /3/; indent,hang='20mm', '10mm'
- when /4/; indent,hang='20mm', '20mm'
- when /5/; indent,hang='20mm', '30mm'
- when /6/; indent,hang='20mm', '40mm'
- when /7/; indent,hang='20mm', '50mm'
- when /8/; indent,hang='20mm', '60mm'
- when /9/; indent,hang='20mm', '70mm'
- end
- when /3/
- case @dob.hang
- when /0/; indent,hang='30mm','-30mm'
- when /1/; indent,hang='30mm','-20mm'
- when /2/; indent,hang='30mm','-10mm'
- when /3/; indent,hang='30mm', '0mm'
- when /4/; indent,hang='30mm', '10mm'
- when /5/; indent,hang='30mm', '20mm'
- when /6/; indent,hang='30mm', '30mm'
- when /7/; indent,hang='30mm', '40mm'
- when /8/; indent,hang='30mm', '50mm'
- when /9/; indent,hang='30mm', '60mm'
- end
- when /4/
- case @dob.hang
- when /0/; indent,hang='40mm','-40mm'
- when /1/; indent,hang='40mm','-30mm'
- when /2/; indent,hang='40mm','-20mm'
- when /3/; indent,hang='40mm','-10mm'
- when /4/; indent,hang='40mm', '0mm'
- when /5/; indent,hang='40mm', '10mm'
- when /6/; indent,hang='40mm', '20mm'
- when /7/; indent,hang='40mm', '30mm'
- when /8/; indent,hang='40mm', '40mm'
- when /9/; indent,hang='40mm', '50mm'
- end
- when /5/
- case @dob.hang
- when /0/; indent,hang='50mm','-50mm'
- when /1/; indent,hang='50mm','-40mm'
- when /2/; indent,hang='50mm','-30mm'
- when /3/; indent,hang='50mm','-20mm'
- when /4/; indent,hang='50mm','-10mm'
- when /5/; indent,hang='50mm', '0mm'
- when /6/; indent,hang='50mm', '10mm'
- when /7/; indent,hang='50mm', '20mm'
- when /8/; indent,hang='50mm', '30mm'
- when /9/; indent,hang='50mm', '40mm'
- end
- when /6/
- case @dob.hang
- when /0/; indent,hang='60mm','-60mm'
- when /1/; indent,hang='60mm','-50mm'
- when /2/; indent,hang='60mm','-40mm'
- when /3/; indent,hang='60mm','-30mm'
- when /4/; indent,hang='60mm','-20mm'
- when /5/; indent,hang='60mm','-10mm'
- when /6/; indent,hang='60mm', '0mm'
- when /7/; indent,hang='60mm', '10mm'
- when /8/; indent,hang='60mm', '20mm'
- when /9/; indent,hang='60mm', '30mm'
- end
- when /7/
- case @dob.hang
- when /0/; indent,hang='70mm','-70mm'
- when /1/; indent,hang='70mm','-60mm'
- when /2/; indent,hang='70mm','-50mm'
- when /3/; indent,hang='70mm','-40mm'
- when /4/; indent,hang='70mm','-30mm'
- when /5/; indent,hang='70mm','-20mm'
- when /6/; indent,hang='70mm','-10mm'
- when /7/; indent,hang='70mm', '0mm'
- when /8/; indent,hang='70mm', '10mm'
- when /9/; indent,hang='70mm', '20mm'
- end
- when /8/
- case @dob.hang
- when /0/; indent,hang='80mm','-80mm'
- when /1/; indent,hang='80mm','-70mm'
- when /2/; indent,hang='80mm','-60mm'
- when /3/; indent,hang='80mm','-50mm'
- when /4/; indent,hang='80mm','-40mm'
- when /5/; indent,hang='80mm','-30mm'
- when /6/; indent,hang='80mm','-20mm'
- when /7/; indent,hang='80mm','-10mm'
- when /8/; indent,hang='80mm', '0mm'
- when /9/; indent,hang='80mm', '10mm'
- end
- when /9/
- case @dob.hang
- when /0/; indent,hang='90mm','-90mm'
- when /1/; indent,hang='90mm','-80mm'
- when /2/; indent,hang='90mm','-70mm'
- when /3/; indent,hang='90mm','-60mm'
- when /4/; indent,hang='90mm','-50mm'
- when /5/; indent,hang='90mm','-40mm'
- when /6/; indent,hang='90mm','-30mm'
- when /7/; indent,hang='90mm','-20mm'
- when /8/; indent,hang='90mm','-10mm'
- when /9/; indent,hang='90mm', '0mm'
- end
- end
- "\\begin{ParagraphHang}{#{indent}}{#{hang}}#{@dob.tmp} \\end{ParagraphHang}}"
- end
- def indent
- indent=case @dob.indent
- when /1/; '0mm'
- when /2/; '10mm'
- when /3/; '20mm'
- when /4/; '30mm'
- when /5/; '40mm'
- when /6/; '50mm'
- when /7/; '60mm'
- when /8/; '70mm'
- when /9/; '80mm'
- end
- "\\begin{ParagraphIndent}{#{indent}}#{@dob.tmp} \\end{ParagraphIndent}}"
- end
- def bullet
- blt=if @dob.indent
- indent=case @dob.indent
- when /1/; '0em'
- when /2/; '1.0em'
- when /3/; '2.0em'
- when /4/; '3.0em'
- when /5/; '4.0em'
- when /6/; '5.0em'
- when /7/; '6.0em'
- when /8/; '7.0em'
- when /9/; '8.0em'
- else '-1.0em'
- end
- "\\begin{Bullet}{#{indent}}$\\txtbullet$\\hspace{\\enspace}#{@dob.tmp}\\end{Bullet}"
- else
- "\\begin{Bullet}{-5mm}$\\txtbullet$\\hspace{\\enspace}#{@dob.tmp}\\end{Bullet}"
- end
- blt
- end
- def symbol_graphic
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- image='c_' + /<:=\s*(\S+?)\s*>/m.match(@txt).captures.join + '.png' #watch
- if FileTest.file?("#{dir.path.image_source_include}/#{image}")
- @txt.gsub!(/<:=\s*(\S+?)\s*>/,
- "\\includegraphics*[width=11pt]{#{dir.path.image_source_include}/c_\\1.png}")
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"ERROR - image:",%{"#{image}" missing},"search path: #{dir.path.image_source_include}").error2 unless @md.opt.cmd =~/q/
- @txt.gsub!(/#{Mx[:lnk_o]}\S+\.(png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'') # fragile match operator\\ fragile !
- end
- end
- def image
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- image,m=/#{Mx[:lnk_o]}\s*(\S+)\s+.+?width=``(\d+)''.+?#{Mx[:lnk_c]}/m.match(@txt).captures
- width=m[1] || '100'
- width=width.to_i*0.4
- image_source=if @md.fns =~/\.(?:ssm\.)?sst$/ \
- and FileTest.file?("#{dir.path.image_source_include_local}/#{image}")
- dir.path.image_source_include_local
- elsif @md.fns =~/\.-ss[tm]$/ \
- and FileTest.file?("#{dir.path.image_source_include_remote}/#{image}")
- dir.path.image_source_include_remote
- elsif FileTest.file?("#{dir.path.image_source_include}/#{image}")
- dir.path.image_source_include
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"ERROR - image:",%{"#{image}" missing},"search locations: #{dir.path.image_source_include_local},#{dir.path.image_source_include_remote} and #{dir.path.image_source_include}").error2 unless @md.opt.cmd =~/q/
- nil
- end
- if image_source #CHECK
- @txt.gsub!(/#{Mx[:lnk_o]}\s*(\S+)\s+.+?#{Mx[:lnk_c]}/,
- @center_begin + "\\includegraphics*[width=#{width}pt]{#{image_source}/\\1}" + @center_end )
- else @txt.gsub!(/#{Mx[:lnk_o]}\s*(\S+)\s+.+?#{Mx[:lnk_c]}/,'\1}')
- end
- end
- def png(ps='') #fc missing image check
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- # messy clean up
- z=@txt[/#{Mx[:lnk_o]}(\S.+?)#{Mx[:lnk_c]}(?:image|png)/,1].strip if @txt =~ /#{Mx[:lnk_o]}\S.+?#{Mx[:lnk_c]}(?:image|png)/ # match operator for z \\ fragile !
- if z #debug 2004w14
- image=z[/(\S+?\.(?:png|jpg|gif)\b)/m]
- image.gsub!(/\\/,'')
- width=if z =~ /\d+x\d*/
- w=(z[/\s(\d+)x\d*/,1]).to_i
- w*0.8
- else '100' #revisit, is bug for small images/icons
- end
- width='380' if width.to_i > 380
- c=z[/``(.+?)''/m]
- end
- hsp="\n{\\color{mywhite} .}&~\n" # ~ character for hardspace
- caption="{\\\\\\\ \n\\begin{scriptsize}#{hsp*3}#{c}\\end{scriptsize}&}" if c
- image_source=if @md.fns =~/\.(?:ssm\.)?sst$/ \
- and FileTest.file?("#{dir.path.image_source_include_local}/#{image}")
- dir.path.image_source_include_local
- elsif @md.fns =~/\.-ss[tm]$/ \
- and FileTest.file?("#{dir.path.image_source_include_remote}/#{image}")
- dir.path.image_source_include_remote
- elsif FileTest.file?("#{dir.path.image_source_include}/#{image}")
- dir.path.image_source_include
- else
- unless image.nil? \
- or image.length < 2
- SiSU_Screen::Ansi.new(@md.opt.cmd,"ERROR - image:",%{"#{image}" missing},"search locations: #{dir.path.image_source_include_local},#{dir.path.image_source_include_remote} and #{dir.path.image_source_include}").error2 unless @md.opt.cmd =~/q/
- end
- nil
- end
- if image_source
- @txt.gsub!(/#{Mx[:lnk_o]}\S+\.(png|jpg|gif).+?#{Mx[:lnk_c]}(image|png)/, # fragile match operator\\ fragile !
- "#{@center_begin}\n\\includegraphics*[width=#{width}pt]{#{image_source}/#{image}}#{caption}#{@center_end}")
- else @txt.gsub!(/#{Mx[:lnk_o]}\S+\.(png|jpg|gif).+?#{Mx[:lnk_c]}(image|png)/,'')
- end
- end
- def url_str_internal(str,idx=nil)
- map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags
- rgx_url_generic=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/m
- rgx_url_relative=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}:\S+?#{Mx[:rel_c]}/m
- rgx_url_internal=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}#?\S+?#{Mx[:rel_c]}/m
- while str =~/#{Mx[:lnk_o]}([^#{Mx[:lnk_o]}#{Mx[:lnk_c]}]+)#{Mx[:lnk_c]}#{Mx[:rel_o]}:(\S+?)#{Mx[:rel_c]}/m
- link,url=$1,$2
- link,url=link.strip,url.strip
- link.gsub!(/&/,"#{Xx[:protect]}&")
- url="#{@env.url.root}/" + url
- str.sub!(/#{Mx[:lnk_o]}[^#{Mx[:lnk_o]}#{Mx[:lnk_c]}]+#{Mx[:lnk_c]}#{Mx[:rel_o]}:\S+?#{Mx[:rel_c]}/m,"#{@brace_rel.tex_open}\\href{#{url}}{#{link}}#{@brace_rel.tex_close}")
- end
- while str =~/#{Mx[:lnk_o]}([^#{Mx[:lnk_o]}#{Mx[:lnk_c]}]+)#{Mx[:lnk_c]}#{Mx[:rel_o]}#?(\S+?)#{Mx[:rel_c]}/m
- link,url=$1,$2
- link,url=link.strip,url.strip
- link.gsub!(/&/,"#{Xx[:protect]}&")
- url.gsub!(/\\_/,'_')
- ocn_lnk=if map_nametags[url] \
- and map_nametags[url][:ocn]
- map_nametags[url][:ocn]
- else nil
- end
- ocn_lnk=(url=~/^\d+$/ ? url : ocn_lnk)
- if ocn_lnk and not ocn_lnk.empty?
- idx \
- ? (str.sub!(rgx_url_internal,"\\hyperlink{#{ocn_lnk}}{#{link}}"))
- : (str.sub!(rgx_url_internal,"#{@brace_rel.tex_open}\\hyperlink{#{ocn_lnk}}{#{link}}#{@brace_rel.tex_close}"))
- else
- puts %{name tag: "#{url}" not found}
- str.sub!(rgx_url_internal,"#{link}")
- end
- #[keep] code that follows uses nametags directly, currently nametags converted to their ocn, related code: |texpdf.rb|@|hypertargets|
- #idx \
- #? (str.sub!(rgx_url_internal,"\\hyperlink{#{url}}{#{link}}")) \
- #: (str.sub!(rgx_url_internal,"#{@brace_rel.tex_open}\\hyperlink{#{url}}{#{link}}#{@brace_rel.tex_close}"))
- end
- str=str.gsub(/#{Xx[:protect]}/,'')
- end
- def url_str(str)
- rgx_url_generic=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
- while str =~rgx_url_generic
- if str=~rgx_url_generic
- regx_url=%r/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/m
- z,url=regx_url.match(str).captures if str =~regx_url
- url=url.strip
- link=z.strip
- link.gsub!(/&/,"#{Xx[:protect]}&")
- str.sub!(rgx_url_generic,"#{@brace_rel.tex_open}\\href{#{url}}{#{link}}#{@brace_rel.tex_close}")
- str=str.gsub(/#{Xx[:protect]}/,'')
- str
- else str
- end
- str
- end
- str
- end
- def url_with_txt(dob)
- rgx_url_generic=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
- while dob.tmp =~rgx_url_generic
- if dob.tmp=~rgx_url_generic
- if dob.tmp =~/#{Mx[:lnk_o]}(?:.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
- regx_url=%r/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/m
- punctuate=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m.match(dob.tmp).captures.join
- else
- regx_url=%r/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/m
- punctuate=''
- end
- z,url=regx_url.match(dob.tmp).captures if dob.tmp =~regx_url
- url=url.strip
- link=z.strip
- link.gsub!(/&/,"#{Xx[:protect]}&")
- dob.tmp.sub!(rgx_url_generic,"#{@brace_rel.tex_open}\\href{#{url}}{#{link}}#{@brace_rel.tex_close}#{punctuate}")
- dob.tmp.gsub!(/#{Xx[:protect]}/,'')
- #dob.tmp=dob.tmp.sub(rgx_url_generic,"#{@brace_rel.tex_open}\\href{#{url}}{#{link}}#{@brace_rel.tex_close}#{punctuate}").
- # gsub(/#{Xx[:protect]}/,'')
- dob
- else dob
- end
- dob
- end
- dob
- end
- def urls_txt_and_images
- dob=@dob
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- @dm={
- 'a4'=> @tx.a4.landscape.img_px,
- 'letter'=> @tx.letter.landscape.img_px,
- 'legal'=> @tx.legal.landscape.img_px,
- 'b5'=> @tx.b5.landscape.img_px,
- 'a5'=> @tx.a5.landscape.img_px
- }
- images_hash={ }
- generic_rgx=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image\b)/m
- rgx_url_generic=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
- url_bare_rgx=/#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
- url_image_rgx=/#{Mx[:lnk_o]}[a-zA-Z0-9_\\-]+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
- image_rgx=/#{Mx[:lnk_o]}[a-zA-Z0-9_\\-]+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}image/m
- @md.papersize_array.each do |ps|
- images_hash[ps] = dob.tmp
- while images_hash[ps] =~generic_rgx
- if dob.tmp =~rgx_url_generic \
- and dob.tmp !~/\.(?:png|jpg|gif)|#{Mx[:lnk_c]}image\b/m
- dob=url_with_txt(dob)
- elsif images_hash[ps]=~generic_rgx
- if dob.tmp=~rgx_url_generic
- if images_hash[ps] =~/#{Mx[:lnk_o]}(?:.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m
- regx_url=%r/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/m
- punctuate=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m.match(images_hash[ps]).captures.join
- else
- regx_url=%r/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/m
- punctuate=''
- end
- z,url=regx_url.match(images_hash[ps]).captures if images_hash[ps] =~regx_url
- url=url.strip
- else
- if images_hash[ps] =~/#{Mx[:lnk_o]}(?:.+?)#{Mx[:lnk_c]}image\.[^'"\s]+?(?:[;.,]?(?:\s|$)|(?:\s|$))/m
- regx_url=%r/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image\.[^'"\s]+?(?:[;.,]?(?:\s|$)|(?:\s|$))/m
- punctuate=/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image\.[^'"\s]+?([;.,]?(?:\s|$))/m.match(images_hash[ps]).captures.join
- else
- regx_url=%r/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/m
- punctuate=''
- end
- z=regx_url.match(images_hash[ps])[1] if images_hash[ps] =~regx_url
- url=''
- end
- if images_hash[ps] =~/#{Mx[:lnk_o]}\s*\S+\.?(?:png|jpg|gif)/m \
- and images_hash[ps]=~/\s+\d+x\d+(\s+|\s*#{Mx[:lnk_c]})/m
- image,x,y=z.scan(/\S+/)
- image.gsub!(/\\/,'')
- w=((z =~/\s(\d+)x\d*/) ? z[/\s(\d+)x\d*/,1] : 200)
- width={}
- width['a4'] = ((w.to_i > @dm['a4']) ? @dm['a4'] : w)
- width['letter'] = ((w.to_i > @dm['letter']) ? @dm['letter'] : w)
- width['legal'] = ((w.to_i > @dm['legal']) ? @dm['legal'] : w)
- width['a5'] = ((w.to_i > @dm['a5']) ? @dm['a5'] : w)
- width['b5'] = ((w.to_i > @dm['b5']) ? @dm['b5'] : w)
- c=z[/``(.+?)''/m,1]
- hsp="\n{\\color{mywhite} .}&~\n" # ~ character for hardspace
- caption=(c ? "{\\\\\ \n\\begin{scriptsize}#{hsp*3}#{c}\\end{scriptsize}&}" : '')
- elsif images_hash[ps] =~/#{Mx[:lnk_o]}\s*(\S+\.?\.(?:png|jpg|gif))/m
- SiSU_Screen::Ansi.new(@md.opt.cmd,%{document built without image: "#{$1}" as image dimensions not provided (either image not found or neither imagemagick nor graphicsmagick is installed)?\n}).print_grey #unless @opt.cmd =~/q/
- images_hash[ps].gsub!(/#{Mx[:lnk_o]}\s*(\S+\.?\.(?:png|jpg|gif))/,'[image]')
- end
- if image #most images fc etc. #% clean up !
- if @md.fns =~/\.(?:ssm\.)?sst$/ \
- and FileTest.file?("#{dir.path.image_source_include_local}/#{image}")
- case images_hash[ps]
- when url_image_rgx
- images_hash[ps].sub!(url_image_rgx,
- "#{@center_begin}\\\n\\href{#{url}}{\\includegraphics*[width=#{width[ps]}pt]{#{dir.path.image_source_include_local}/#{image}}}#{caption} #{@center_end}")
- when image_rgx
- images_hash[ps].sub!(image_rgx,
- "#{@center_begin}\\\n\\includegraphics*[width=#{width[ps]}pt]{#{dir.path.image_source_include_local}/#{image}}#{caption} #{@center_end}")
- end
- images_hash[ps]
- elsif @md.fns =~/\.-ss[tm]$/ \
- and FileTest.file?("#{dir.path.image_source_include_remote}/#{image}")
- case images_hash[ps]
- when url_image_rgx
- images_hash[ps].sub!(url_image_rgx,
- "#{@center_begin}\\\n\\href{#{url}}{\\includegraphics*[width=#{width[ps]}pt]{#{dir.path.image_source_include_remote}/#{image}}}#{caption}#{@center_end}")
- when image_rgx
- images_hash[ps].sub!(image_rgx,
- "#{@center_begin}\\\n\\includegraphics*[width=#{width[ps]}pt]{#{dir.path.image_source_include_remote}/#{image}}#{caption}#{@center_end}")
- end
- images_hash[ps]
- elsif FileTest.file?("#{dir.path.image_source_include}/#{image}")
- case images_hash[ps]
- when url_image_rgx
- images_hash[ps].sub!(url_image_rgx,
- "#{@center_begin}\\\n\\href{#{url}}\n{\\includegraphics*[width=#{width[ps]}pt]{#{dir.path.image_source_include}/#{image}}}#{caption}#{@center_end}")
- when image_rgx
- images_hash[ps].sub!(image_rgx,
- "#{@center_begin}\\\n\\includegraphics*[width=#{width[ps]}pt]{#{dir.path.image_source_include}/#{image}}#{caption}#{@center_end}")
- end
- images_hash[ps]
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"ERROR - image:",%{"#{image}" missing},"search locations: #{dir.path.image_source_include_local},#{dir.path.image_source_include_remote} and #{dir.path.image_source_include}").error2 unless @md.opt.cmd =~/q/
- if images_hash[ps] =~url_image_rgx \
- or images_hash[ps] =~image_rgx
- images_hash[ps]=''
- end
- images_hash[ps]
- end
- else
- link=z.strip #[/(.+?)\\/m,1]
- images_hash[ps]="\\href{#{url}}{#{link}}#{punctuate}" if images_hash[ps] =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
- images_hash[ps]
- end
- else images_hash[ps]
- end
- images_hash[ps] #=ocn_display(dob) + images_hash[ps]
- end #while loop
- images_hash
- end
- images_hash
- use_images_hash={}
- images_hash.each do |k,t|
- use_images_hash[k]={ l: t, p: t}
- end
- dob.tmp=use_images_hash
- dob
- end
- def title
- title=SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.title.full).special_characters_safe
- "\n\\title{#{title}}"
- end
- def title_landscape
- title
- end
- def title_portrait
- title
- end
- end
- class FormatHead
- require_relative 'prog_text_translation' # prog_text_translation.rb
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- if t_o.class==Hash
- @txt =t_o[:txt] || nil
- @subtitle=t_o[:subtitle] || nil
- @ps=t_o[:paper_size] || nil
- @ocn=t_o[:ocn] || nil
- @layout=t_o[:orientation] || nil
- else
- p t_o.class
- p caller
- end
- @tx=SiSU_Env::GetInit.instance.tex
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @tex2pdf=@@tex3pdf ||=SiSU_Env::SystemCall.new.tex2pdf_engine
- @ps=@txt if @txt=~/(?:a4|letter|legal|book|a5|b5)/i
- @lang ||=SiSU_i18n::Languages.new #.list[@md.opt.lng][:xlp]
- @author=if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.creator.author).special_characters_safe
- else ''
- end
- @subject=if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.classify.subject).special_characters_safe
- else ''
- end
- @keywords=if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,@md.classify.keywords).special_characters_safe
- else ''
- end
- end
- def tex_head_lang #babel 18n
- lang_char_arr=@md.i18n
- mainlang_char=if @md.i18n == Array \
- and @md.i18n.length > 0
- lang_char_arr.slice(0)
- else @md.opt.lng
- end
- mainlang=@lang.list[mainlang_char][:xlp]
- otherlang=if mainlang != 'english'
- [ @lang.list['en'][:xlp] ]
- else []
- end
- if lang_char_arr.length > 0
- lang_char_arr.slice(1..9).each { |ch| otherlang << @lang.list[ch][:xlp] }
- otherlang=otherlang.uniq
- end
- otherlang=otherlang.join(',')
- { mainlang: mainlang, otherlang: otherlang }
- end
- def tex_head_encode
- texpdf_font=if defined? @md.make.texpdf_font.main \
- and not @md.make.texpdf_font.main.nil? \
- and @md.make.texpdf_font.main=~/\S{3,}/
- @md.make.texpdf_font.main
- else @env.font.texpdf.main
- end
- texpdf_font_sans=if defined? @md.make.texpdf_font.sans \
- and not @md.make.texpdf_font.sans.nil? \
- and @md.make.texpdf_font.sans=~/\S{3,}/ # not used
- @md.make.texpdf_font.sans
- else @env.font.texpdf.sans
- end
- texpdf_font_serif=if defined? @md.make.texpdf_font.serif \
- and not @md.make.texpdf_font.serif.nil? \
- and @md.make.texpdf_font.serif=~/\S{3,}/ # not used
- @md.make.texpdf_font.serif
- else @env.font.texpdf.serif
- end
- texpdf_font_mono=if defined? @md.make.texpdf_font.mono \
- and not @md.make.texpdf_font.mono.nil? \
- and @md.make.texpdf_font.mono=~/\S{3,}/
- @md.make.texpdf_font.mono
- else @env.font.texpdf.mono
- end
- # you may wish to check selected font against avaiable fonts:
- # fc-list :outline -f "%{family}\n"
- case @tex2pdf
- when /xe/
- <<WOK
-\\usepackage{polyglossia, ucs, fontspec, xltxtra, xunicode}
-\\setmainlanguage{#{tex_head_lang[:mainlang]}}
-\\setotherlanguage{#{tex_head_lang[:otherlang]}}
-\\setmainfont{#{texpdf_font}}
-\\setmonofont[Scale=0.85]{#{texpdf_font_mono}}
-% \\setsansfont{#{texpdf_font_sans}}
-% \\setromanfont{#{texpdf_font_serif}}
-WOK
- when /pdf/
- if @md.file_encoding =~ /iso-?8859/i #% iso8859
- <<WOK
-% \\usepackage[latin1]{inputenc}
-\\usepackage{fontspec}
-WOK
- else #% utf-8 assumed
- <<WOK
-\\usepackage{babel}
-\\usepackage{ucs}
-\\usepackage[utf8x]{inputenc}
-WOK
- end
- end
- end
- def tex_head_info
- 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}"
- <<WOK
-%% SiSU (Linux & Ruby - \"better ways\") LaTeX output
-%% #{generator}
-%% #{rubyv}
-%% LaTeX output
-%% #{lastdone}
-%% SiSU http://www.jus.uio.no/sisu
-WOK
- end
- def tex_head_paper_portrait(d)
- multicol=(@md.book_idx ? '\usepackage{multicol}' : '')
- <<WOK
-#{tex_head_info}
-\\documentclass[#{d[:fontsize]},#{d[:papertype]},titlepage]{scrartcl} %with titlepage
-\\setlength{\\textheight}{#{d[:textheight]}mm} \\setlength{\\textwidth}{#{d[:textwidth]}mm}
-\\setlength{\\oddsidemargin}{#{d[:oddsidemargin]}} \\setlength{\\evensidemargin}{#{d[:evensidemargin]}}
-\\setlength{\\topmargin}{#{d[:topmargin]}} \\setlength{\\headheight}{#{d[:headheight]}}
-\\setlength{\\headsep}{#{d[:headsep]}}
-\\setlength{\\marginparsep}{#{d[:marginparsep]}}
-\\setlength{\\marginparwidth}{#{d[:marginparwidth]}}
-#{multicol}
-WOK
- end
- def tex_head_paper_landscape(d)
- <<WOK
-#{tex_head_info}
-\\documentclass[#{d[:fontsize]},#{d[:papertype]},landscape,titlepage,twocolumn]{scrartcl} %with titlepage
-\\setlength{\\textheight}{#{d[:textheight]}mm} \\setlength{\\textwidth}{#{d[:textwidth]}mm}
-\\setlength{\\oddsidemargin}{#{d[:oddsidemargin]}} \\setlength{\\evensidemargin}{#{d[:evensidemargin]}}
-\\setlength{\\topmargin}{#{d[:topmargin]}} \\setlength{\\headheight}{#{d[:headheight]}}
-\\setlength{\\headsep}{#{d[:headsep]}}
-\\setlength{\\columnsep}{#{d[:columnsep]}}
-\\setlength{\\marginparsep}{#{d[:marginparsep]}}
-\\setlength{\\marginparwidth}{#{d[:marginparwidth]}}
-WOK
- end
- def tex_head_paper_portrait_dvi(d)
- <<WOK
-#{tex_head_info}
-\\documentclass[#{d[:fontsize]},#{d[:papertype]},titlepage]{scrartcl} %with titlepage
-\\setlength{\\textheight}{#{d[:textheight]}mm} \\setlength{\\textwidth}{#{d[:textwidth]}mm}
-\\setlength{\\oddsidemargin}{#{d[:oddsidemargin]}} \\setlength{\\evensidemargin}{#{d[:evensidemargin]}}
-\\setlength{\\topmargin}{#{d[:topmargin]}} \\setlength{\\headheight}{#{d[:headheight]}}
-\\setlength{\\headsep}{#{d[:headsep]}}
-\\setlength{\\marginparsep}{#{d[:marginparsep]}}
-\\setlength{\\marginparwidth}{#{d[:marginparwidth]}}
-WOK
- end
- def tex_head_paper_dimensions
- d={}
- case @layout
- when /portrait/
- d[:papertype],d[:fontsize]='a4paper','11pt'
- d[:oddsidemargin],d[:evensidemargin],d[:topmargin]='0mm','0mm','-12pt'
- d[:headheight],d[:headsep],d[:columnsep]='12pt','35pt',''
- d[:marginparsep],d[:marginparwidth]='4mm','8mm'
- case @ps #@md.papersize
- when /a4/i #European default, SiSU default
- d[:papertype],d[:fontsize]='a4paper','12pt'
- d[:textheight],d[:textwidth]=@tx.a4.portrait.h,@tx.a4.portrait.w
- when /letter/i #U.S. default
- d[:papertype],d[:fontsize]='letterpaper','12pt'
- d[:textheight],d[:textwidth]=@tx.letter.portrait.h,@tx.letter.portrait.w
- when /legal/i #U.S. alternative
- d[:papertype],d[:fontsize]='legalpaper','12pt'
- d[:textheight],d[:textwidth]=@tx.legal.portrait.h,@tx.legal.portrait.w
- when /book|b5/i #book default - larger
- d[:papertype],d[:fontsize]='b5paper','11pt'
- d[:oddsidemargin],d[:evensidemargin],d[:topmargin]='-4mm','-4mm','-36pt'
- d[:headheight],d[:headsep],d[:columnsep]='12pt','20pt',''
- d[:textheight],d[:textwidth]=@tx.b5.portrait.h,@tx.b5.portrait.w
- when /a5/i
- d[:papertype],d[:fontsize]='a5paper','11pt'
- d[:oddsidemargin],d[:evensidemargin],d[:topmargin]='-4mm','-4mm','-36pt'
- d[:headheight],d[:headsep],d[:columnsep]='11pt','12pt',''
- d[:marginparsep],d[:marginparwidth]='4mm','6mm'
- d[:textheight],d[:textwidth]=@tx.a5.portrait.h,@tx.a5.portrait.w
- else #default currently A4
- d[:papertype],d[:fontsize]='a4paper','12pt'
- d[:textheight],d[:textwidth]=@tx.a4.portrait.h,@tx.a4.portrait.w
- end
- when /landscape/
- d[:papertype],d[:fontsize]='a4paper','11pt'
- d[:oddsidemargin],d[:evensidemargin],d[:topmargin]='6mm','6mm','-12mm'
- d[:headheight],d[:headsep],d[:columnsep]='12pt','20pt','40pt'
- d[:marginparsep],d[:marginparwidth]='4mm','8mm'
- case @ps #@md.papersize
- when /a4/i #European default, SiSU default
- d[:papertype],d[:fontsize]='a4paper','11pt'
- d[:textheight],d[:textwidth]=@tx.a4.landscape.h,@tx.a4.landscape.w
- when /letter/i #U.S. default
- d[:papertype],d[:fontsize]='letterpaper','11pt'
- d[:textheight],d[:textwidth]=@tx.letter.landscape.h,@tx.letter.landscape.w
- when /legal/i #U.S. alternative
- d[:papertype],d[:fontsize],d[:columnsep]='legalpaper','11pt','48pt'
- d[:textheight],d[:textwidth]=@tx.legal.landscape.h,@tx.legal.landscape.w
- when /book|b5/i #book default - larger
- d[:papertype],d[:fontsize],d[:columnsep]='b5paper','11pt','35pt'
- d[:textheight],d[:textwidth]=@tx.b5.landscape.h,@tx.b5.landscape.w
- when /a5/i
- d[:papertype],d[:fontsize],d[:columnsep]='a5paper','10pt','32pt'
- d[:textheight],d[:textwidth]=@tx.a5.landscape.h,@tx.a5.landscape.w
- else #default currently A4
- d[:papertype],d[:fontsize]='a4paper','12pt'
- d[:textheight],d[:textwidth]=@tx.a4.landscape.h,@tx.a4.landscape.w
- end
- end
- d
- end
- def tex_head_paper
- case @layout
- when /portrait/
- tex_head_paper_portrait(tex_head_paper_dimensions)
- when /landscape/
- tex_head_paper_landscape(tex_head_paper_dimensions)
- end
- end
- def tex_head_pdftex_dvi
- color=case @layout
- when /portrait/
- <<WOK
- colorlinks=true,
- urlcolor=myblack,
- filecolor=myblack,
- linkcolor=myblack,
-WOK
- when /landscape/
- <<WOK
- colorlinks=true,
- urlcolor=myblue, % \\href{...}{...} external url
- filecolor=mygreen, % \\href{...} local file
- linkcolor=myred, % \\href{...} and \\pageref{...}
-WOK
- end
- if @layout =~/portrait|landscape/
- <<WOK
-\\usepackage{alltt}
-\\usepackage{thumbpdf}
-\\usepackage[#{@tex2pdf},
- #{color.strip}
- pdftitle={#{@txt}},
- pdfauthor={#{@author}},
- pdfsubject={#{@subject}},
- pdfkeywords={#{@keywords}},
- pageanchor=true,
- plainpages=true,
- pdfpagelabels=true,
- pagebackref,
- bookmarks=true,
- bookmarksopen=true,
- pdfmenubar=true,
- pdfpagemode=UseOutline,
- pdffitwindow=true,
- pdfwindowui=true,
- plainpages=false,
-% pdfusetitle=true,
-% pdfpagelayout=SinglePage,
-% pdfpagelayout=TwoColumnRight,
-% pdfpagelayout=TwoColumnLeft,
-% pdfstartpage=3,
- pdfstartview=FitH
-]
-{hyperref}
-%% trace lost characters
-% \\tracinglostchars = 1
-% \\tracingonline = 1
-\\usepackage[usenames]{color}
-\\definecolor{myblack}{rgb}{0,0,0}
-\\definecolor{myred}{rgb}{0.75,0,0}
-\\definecolor{mygreen}{rgb}{0,0.5,0}
-\\definecolor{myblue}{rgb}{0,0,0.5}
-\\definecolor{mywhite}{rgb}{1,1,1}
-\\usepackage{url}
-%\\usepackage{breakurl}
-WOK
- elsif @txt =~/dvi/
- <<WOK
-\\usepackage{alltt}
- #{color.strip}
- pageanchor=true,
- plainpages=true,
- pagebackref,
- bookmarks=true,
- bookmarksopen=true,
- plainpages=false,
-]
-{hyperref}
-\\usepackage[usenames]{color}
-\\definecolor{myblack}{rgb}{0,0,0}
-\\definecolor{myred}{rgb}{0.75,0,0}
-\\definecolor{mygreen}{rgb}{0,0.5,0}
-\\definecolor{myblue}{rgb}{0,0,0.5}
-\\definecolor{mywhite}{rgb}{1,1,1}
-\\usepackage{url}
-%\\usepackage{breakurl}
-WOK
- end
- end
- def tex_head_codeblock(codeblock_box_type)
- codeblock_box=if codeblock_box_type=='listings'
- <<WOK
-\\usepackage{listings}
-\\usepackage{color}
-\\usepackage{textcomp}
-WOK
- elsif codeblock_box_type=='boites'
- "\\usepackage{boites}"
- else
- "\\usepackage{boites}"
- end
- codeblock_box
- end
- def tex_head_misc
- <<WOK
-\\usepackage{textcomp}
-\\usepackage[parfill]{parskip}
-\\usepackage[normalem]{ulem}
-\\usepackage{soul}
-\\usepackage{longtable}
-\\usepackage{graphicx}
-\\makeatletter
-\\parindent0pt
-%\\usepackage{mathptmx}
-\\usepackage{amssymb}
-% amssymb used for backslash
-WOK
- end
- def document_head_with_orientation(codeblock_box_type)
- endnotes=("\\usepackage{endnotes}" if @txt =~/endnotes?/)||'' #not implemented see also def endnotes
- @lang.list[@md.i18n[0]][:xlp]
- <<WOK
-#{tex_head_paper}
-#{tex_head_encode}
-#{tex_head_pdftex_dvi}
-#{tex_head_misc}
-#{tex_head_codeblock(codeblock_box_type)}
-\\setcounter{secnumdepth}{2}
-\\setcounter{tocdepth}{4}
-\\makeatletter
-#{endnotes}
-\\usepackage[multiple,ragged]{footmisc}
-\\setlength\\footnotemargin{12pt}
-\\usepackage[para]{manyfoot}
-\\DeclareNewFootnote{A}
-%\\DeclareNewFootnote[para]{A}
-\\newenvironment{ParagraphIndent}[1]%
-{
-\\begin{list}{}{%
-\\setlength\\topsep{0pt}%
-\\addtolength{\\leftmargin}{#1}
-\\setlength\\parsep{0pt plus 1pt}%
-}
-\\item[]
-}
-{\\end{list}}
-
-\\newenvironment{ParagraphHang}[2]%
-{
-\\begin{list}{}{%
-\\setlength\\topsep{0pt}%
-\\addtolength{\\leftmargin}{#1}
-\\itemindent=#2
-\\setlength\\parsep{0pt plus 1pt}%
-}
-\\item[]
-}
-{\\end{list}}
-
-\\newenvironment{Bullet}[1]%
-{
-\\begin{list}{}{%
-\\setlength\\topsep{0pt}%
-\\addtolength{\\leftmargin}{#1}
-\\itemindent=-1em
-\\setlength\\parsep{0pt plus 1pt}%
-}
-\\item[]
-}
-{\\end{list}}
-\\usepackage{fancyhdr}
-\\lhead{}
-\\renewcommand{\\part}{\\\@startsection
- {part}{1}{-2mm}%
- {-\\baselineskip}{0.5\\baselineskip}%
- {\\bfseries\\large\\upshape\\raggedright}}
-\\renewcommand{\\section}{\\\@startsection
- {section}{2}{-2mm}%
- {-\\baselineskip}{0.5\\baselineskip}%
- {\\bfseries\\large\\upshape\\raggedright}}
-\\renewcommand{\\subsection}{\\\@startsection
- {subsection}{3}{-2mm}%
- {-\\baselineskip}{0.5\\baselineskip}%
- {\\bfseries\\large\\upshape\\raggedright}}
-\\renewcommand{\\subsubsection}{\\\@startsection
- {subsubsection}{4}{-2mm}%
- {-\\baselineskip}{0.5\\baselineskip}%
- {\\normalfont\\normalsize\\bfseries\\raggedright}}
-\\renewcommand{\\paragraph}{\\\@startsection
- {paragraph}{5}{-2mm}%
- {-\\baselineskip}{0.5\\baselineskip}%
- {\\normalfont\\normalsize\\itshape\\raggedright}}
-\\renewcommand{\\subparagraph}{\\\@startsection
- {subparagraph}%{6}%{-2mm}%
- {-\\baselineskip}{0.5\\baselineskip}%
- {\\normalfont\\normalsize\\itshape\\raggedright}}
-% \\makeatother
-\\selectlanguage{#{@lang.list[@md.i18n[0]][:xlp]}}
-WOK
- end
- def a4generic
- end
- end
- class SpecialCharacters
- def initialize(md,str,is=:default)
- @md,@txt,@is=md,str,is
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- @tex2pdf=@@tex3pdf ||=SiSU_Env::SystemCall.new.tex2pdf_engine
- end
- def xetex_code_listings(str,is=:default) # ~ ^ $ & % _ { } #LaTeX special characters - KEEP list
- word=str.scan(/\S+|\n/) #unless line =~/^(?:@\S|%+\s)/
- para_array=[]
- str=if word
- word.each do |w| # _ - / # | : ! ^ ~
- w=w.gsub(/#{Mx[:gl_o]}#lt#{Mx[:gl_c]}/,'<').gsub(/#{Mx[:gl_o]}#gt#{Mx[:gl_c]}/,'>').
- gsub(/[\\]?~/,'~').
- gsub(/[#{Mx[:br_line]}#{Mx[:br_paragraph]}]/,"\n"). #watch
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'~'). #126 usual
- gsub(/\\?\||#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|') #unless is=='code' #unless w=~/<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+>/ # | SiSU not really special sisu character but done, also LaTeX
- para_array << w
- end
- str=para_array.join(' ')
- str=str.strip unless is==:code
- str
- else ''
- end
- str=str.gsub(/\s*#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}\s*/,' ').
- gsub(/.+?<-#>/,'').
- gsub(/#{Mx[:br_eof]}/,'').
- gsub(/#{Mx[:br_endnotes]}/,'').
- #problem sequence ->
- gsub(/&(?:lt|#060);/,'<'). # < SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#(?:gt|062)#{Mx[:gl_c]}/,'>'). # > SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). # { SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). # } SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'~'). # ~ SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). # # SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). # ! SiSU not really special sisu character but done, also LaTeX
- #gsub(/(^|\s)\*\s/,'\1\asterisk '). # * should you wish to escape astrisk e.g. describing \*{bold}*
- gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). # * should you wish to escape astrisk e.g. describing \*{bold}*
- gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). # - SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#043#{Mx[:gl_c]}/,'+'). # + SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#044#{Mx[:gl_c]}/,','). # + SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#038#{Mx[:gl_c]}/,'&'). #unless @txt=~/<:code>/ # / SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). # / SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\'). # \ SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). # _ SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|'). # | SiSU not really special sisu character but done, also LaTeX
- gsub(/#{Mx[:gl_o]}#058#{Mx[:gl_c]}/,':'). # : SiSU not really special sisu character but done, also LaTeX
- gsub(/#{Mx[:gl_o]}#094#{Mx[:gl_c]}|\^/,'^'). # ^ SiSU not really special sisu character but done, also LaTeX
- ##watch placement, problem sequence ^
- gsub(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ').
- gsub(/\\copy(right|mark)?/,'<=copymark>') # ok problem with superscript
- end
- def xetex_special_characters_1(str,is=:default) # ~ ^ $ & % _ { } #LaTeX special characters - KEEP list
- #str=Iconv.conv('ISO-8859-1', 'UTF-8', @txt) # `require': iconv will be deprecated in the future, use String#encode instead.
- word=str.scan(/\S+|\n/) #unless line =~/^(?:@\S|%+\s)/
- para_array=[]
- str=if word
- word.each do |w| # _ - / # | : ! ^ ~
- if w !~/https?:/ \
- and w=~/\/\S+?\// \
- and w.length > 6
- w=w.gsub(/([_.\/])/,'\1\-')
- end
- w=w.gsub(/#{Mx[:gl_o]}#lt#{Mx[:gl_c]}/,'<').gsub(/#{Mx[:gl_o]}#gt#{Mx[:gl_c]}/,'>').
- gsub(/[\\]?~/,'<=tilde>').
- gsub(/[#{Mx[:br_line]}#{Mx[:br_paragraph]}]/,' \newline '). #watch
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'<=tilde>'). #126 usual
- gsub(/\\?\||#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'\pipe') #unless is=='code' #unless w=~/<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+>/ # | SiSU not really special sisu character but done, also LaTeX
- if w !~/#{Mx[:rel_o]}/ \
- and w !~/#{Mx[:gl_o]}#/
- w=w.gsub(/\#/,'<=hash>')
- end
- para_array << w
- end
- str=para_array.join(' ')
- str=str.strip unless is==:code
- str
- else ''
- end
- str=str.gsub(/\s*#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}\s*/,' ').
- gsub(/.+?<-#>/,'').
- gsub(/#{Mx[:br_eof]}/,'').
- gsub(/#{Mx[:br_endnotes]}/,'')
- #problem sequence ->
- str=str.gsub(/&(?:nbsp);|#{Mx[:nbsp]}/,'\hardspace') unless is==:code # < SiSU special character also LaTeX
- str=str.gsub(/&(?:lt|#060);/,'\lt'). # < SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#(?:gt|062)#{Mx[:gl_c]}/,'\gt'). # > SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'\curlyopen'). # { SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'\curlyclose'). # } SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/,'<=tilde>'). # ~ SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'\#'). # # SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). # ! SiSU not really special sisu character but done, also LaTeX
- gsub(/(^|\s)\*\s/,'\1\asterisk '). # * should you wish to escape astrisk e.g. describing \*{bold}*
- gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'\*'). # * should you wish to escape astrisk e.g. describing \*{bold}*
- gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). # - SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#043#{Mx[:gl_c]}/,'+'). # + SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#044#{Mx[:gl_c]}/,','). # + SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#038#{Mx[:gl_c]}/,'<=amp>'). #unless @txt=~/<:code>/ # / SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'\slash'). # / SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\textbackslash'). # \ SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'<=underscore>'). # _ SiSU special character also LaTeX
- gsub(/#{Mx[:gl_o]}#124#{Mx[:gl_c]}/,'|'). # | SiSU not really special sisu character but done, also LaTeX
- gsub(/#{Mx[:gl_o]}#058#{Mx[:gl_c]}/,':'). # : SiSU not really special sisu character but done, also LaTeX
- gsub(/#{Mx[:gl_o]}#094#{Mx[:gl_c]}|\^/,'\caret'). # ^ SiSU not really special sisu character but done, also LaTeX
- ##watch placement, problem sequence ^
- gsub(/<sup><font face=symbol>&atild;<\/font><\/sup>/,' ').
- gsub(/\\copy(right|mark)?/,'<=copymark>') # ok problem with superscript
- end
- def xetex_special_characters_2(str,is=:default)
- str=str.gsub(/#{Mx[:gl_o]}#156#{Mx[:gl_c]}/,'\oe ').
- gsub(/\$/,'\$').
- gsub(/\#/,'\#').
- gsub(/\%/,'\%').
- gsub(/\~/,'\~') #revist, should not be necessary to mark remaining tildes
- if str !~/^\s*#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}image\s/
- str=str.gsub(/_/,'\_')
- end
- str=str.gsub(/\{/,'\{').
- gsub(/\}/,'\}')
- str=if is==:code
- str.gsub(/&/,'{\\\&}').
- gsub(/\\~(\\\{)/,'{$\tilde$}\1').
- gsub(/(\\\})\\~/,'\1{$\tilde$}').
- gsub(/\\~(\[)/,'{$\tilde$}\1').
- gsub(/(\])\\~/,'\1{$\tilde$}').
- gsub(/<=tilde>/,'{$\tilde$}').
- gsub(/<=hash>/,'{\#}')
- else
- str.gsub(/&nbsp;|#{Mx[:nbsp]}/,'~'). # ~ character for hardspace
- gsub(/&/,'<=amp>')
- end
- str=str.gsub(/&\S+?;/,' ').
- gsub(/§/u,'\S'). #latex: space between next character not preserved? #str.gsub(/§ /,'\S ')
- gsub(/£/u,'\pounds').
- gsub(/<a href=".+?">/,' ').
- gsub(/<\/a>/,' ').
- gsub(/((?:^|\s)#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- '\1\begin{scriptsize}\url{\2}\end{scriptsize}\3'). #special case \{ e.g. \}http://url
- gsub(/#{Mx[:url_o]}\\_(\S+?)#{Mx[:url_c]}/,
- '\begin{scriptsize}\url{\1}\end{scriptsize}'). #special case \{ e.g. \}http://url
- gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
- '\begin{scriptsize}\\url{\1}\end{scriptsize}') #specially escaped url no decoration
- unless is==:code
- str=str.gsub(/(^|#{Mx[:gl_c]}|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"\s]+?)([;.,]?(?=\s|$))/,
- "\\1#{@brace_url.tex_open}\\begin{scriptsize}\\url{\\2}\\end{scriptsize}#{@brace_url.tex_close}\\3") #url matching with decoration <url> positive lookahead, sequence issue with { linked }http://url cannot use \b at start
- end
- str=str.gsub(/<:ee>/,'').
- gsub(/<!>/,' ').
- #proposed change, insert, but may be redundant
- gsub(/<(br|p)>|<\/\s*(br|p)>|<(br|p)\s*\/>/," #{Tex[:backslash]*2} "). # Work Area
- gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\begin{bfseries}\1 \end{bfseries}').
- gsub(/<h\d+>(.+?)<\/h\d+>/,'\begin{bfseries}\1 \end{bfseries}').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\emph{\1}').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\uline{\1}'). # ulem
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,"``\\1''"). # quote #CHECK
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\uline{\1}'). # ulem
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\sout{\1}'). # ulem
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,"\$^{\\textrm{\\1}}\$").
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,"\$_{\\textrm{\\1}}\$").
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\begin{monosp}\1\end{monosp}')
- unless is==:code
- str=str.gsub(/"(.+?)"/,'“\1”'). # quote marks / quotations open & close " need condition exclude for code
- gsub(/\s+"/,' “'). # open "
- gsub(/^(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*"/,'\1“'). #fix Mx[:lv_o] # open "
- gsub(/"(\s|\.|,|:|;)/,'”\1'). # close "
- gsub(/"(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*$/,'”\1'). #fix Mx[:lv_o] # close "
- gsub(/"(\.|,)/,'”'). # close "
- gsub(/\s+'/,' `'). # open '
- gsub(/^(#{Mx[:lv_o]}[1-6-]:\S*?#{Mx[:lv_c]}|<.+?>)?\s*'/,'\1`') #fix Mx[:lv_o] # open '
- end
- str=str.gsub(/(<font.*?>|<\/font>)/,'').
- gsub(/\s*#{Mx[:fa_superscript_o]}(\S+?)#{Mx[:fa_superscript_c]}/,'^\1')
- str
- end
- def xetex_special_characters_3(str)
- str=str.gsub(/<br(\s*[^\/][^>])/,'\1'). # clean up, incredibly messy :-( footnote indents, problems if match exists in ordinary paragraphs? check! Work Area 200501 a bit tricky as must be able to match multiple times, and to clean remainder
- gsub(/([^<][^b][^r]\s+)\/>/,'\1') # clean up, incredibly messy :-( footnote indents, problems if match exists in ordinary paragraphs? check! Work Area 200501 a bit tricky as must be able to match multiple times, and to clean remainder
- while str =~/(https?:\/\/\S+?)(?:<=tilde>\S+)+/ #tilde in urls \href treated differently from text #FIX
- str=str.gsub(/(https?:\/\/\S+?)(?:<=tilde>(\S+))+/,'\1~\2')
- end
- str=str.gsub(/<=tilde>/,'{$\tilde$}').
- gsub(/(https?:\/\/\S+?)(?:(?:<=hash>)(\S+))+/,'\1#\2'). #hash in urls \href treated differently from text #FIX
- gsub(/<=hash>/,'{\#}')
- while str =~/(https?:\/\/\S+?)(?:<=amp>\S+)+/ #amp in urls \href treated differently from text #FIX
- str=str.gsub(/(https?:\/\/\S+?)(?:<=amp>(\S+))+/,'\1&\2')
- end
- str=str.gsub(/<=amp>/,'{\\\&}'). #changed ... 2005
- gsub(/<=copymark>\s*(.+)/,
- '^\copyright \textnormal{\1} \2') # watch likely to be problematic
- str
- end
- def special_characters_safe_close(str)
- str=str.gsub(/<=tilde>/,'{$\tilde$}').
- gsub(/<=hash>/,'{\#}').
- gsub(/<=amp>/,'{\\\&}'). #changed ... 2005
- gsub(/<=copymark>\s*(.+)/,
- '^\copyright \textnormal{\1} \2') # watch likely to be problematic
- end
- def special_characters_code_fix(str)
- str=str.gsub(/<=tilde>/,'{$\tilde$}')
- str
- end
- def special_characters_unsafe_1(str) #depreciated, make obsolete
- # some substitutions are sequence sensitive, rearrange with care.
- str=str.gsub(/\\textbackslash (copyright|clearpage|newpage)/,"\\\\\\1") #kludge bad solution, find out where tail is sent through specChar !
- str
- end
- def special_characters #special characters - some substitutions are sequence sensitive, rearrange with care.
- str,is=@txt,@is
- str=xetex_special_characters_1(str,is) unless str.nil?
- str=special_characters_unsafe_1(str) unless str.nil? #xetex_special_characters_unsafe_1(@txt)
- str=xetex_special_characters_2(str,is) unless str.nil? #issues with xetex
- str=xetex_special_characters_3(str) unless str.nil?
- @txt=str
- end
- def special_word_break_points
- str=@txt
- str=str.gsub(/([_,.;:\/|=])/,'\1\-').
- gsub(/(--)(\S{4,})/,'\1\-\2')
- @txt=str
- end
- def special_number_break_points
- str=@txt
- str=str.gsub(/([0-9a-f]{8})/i,'\1\-')
- @txt=str
- end
- def special_characters_safe #special characters - some substitutions are sequence sensitive, rearrange with care.
- str,is=@txt,@is
- str=xetex_special_characters_1(str,is) unless str.nil?
- str=xetex_special_characters_2(str,is) unless str.nil? # remove this to start with, causes issues
- str=special_characters_safe_close(str) unless str.nil?
- @txt=str
- end
- def characters_code_listings #special characters - some substitutions are sequence sensitive, rearrange with care.
- str,is=@txt,@is
- str=xetex_code_listings(str,is) unless str.nil?
- @txt=str
- end
- def special_characters_code
- str=@txt
- str=str.gsub(/ \\\\([ #{Mx[:br_nl]}]+|$)/,' \textbackslash\textbackslash\hardspace\1')
- str
- end
- end
- class UseTeX
- attr_accessor :url,:txt,:date
- def initialize(md)
- @md=md
- @vz=SiSU_Env::GetInit.instance.skin
- @date=SiSU_Env::InfoDate.new # #{@date.year}
- @copymark='{\\begin{footnotesize}\\raisebox{1ex}{\\copyright}\\end{footnotesize}}'
- @brace_url=SiSU_Viz::Skin.new.url_decoration
- end
- def skip
- "\n\\vspace*{\\smallskipamount} \n"
- end
- def paraskip_normal
- '\setlength{\parskip}{1ex plus0.5ex minus0.2ex}'
- end
- def paraskip_small
- '\setlength{\parskip}{0.5ex plus0.2ex minus0.1ex}'
- end
- def paraskip_tiny
- '\setlength{\parskip}{0.1ex plus0.1ex minus0.1ex}'
- end
- def skip_small
- "\\smallskip{}"
- end
- def skip_small_vspace
- "\n\\vspace*{\\smallskipamount} \n"
- end
- def skip_small_footnote
- end
- def skip_medium
- "\n\\medskip{}\n\n"
- end
- def skip_dummy
- "\n"
- end
- def header
- "\\lhead[ ]{ }\n" +
- "\\chead[ \\fancyplain{} \\bfseries \\footnotesize \\leftmark ]{ \\fancyplain{} \\bfseries \\footnotesize \\rightmark }\n" +
- "\\rhead[ ]{ }\n"
- end
- def footer
- base_prog_txt=if @md.base_program
- case @md.base_program
- when /kdissert/i; " \\\\ \\href{http://freehackers.org/~tnagy/kdissert/}{Kdissert}"
- else ''
- end
- else ''
- end
- "\\lfoot[\\textrm{\\thepage}]{\\tiny \\href{#{@vz.url_footer_signature}}{#{@vz.txt_signature}}#{base_prog_txt}}\n" +
- "\\cfoot[\\href{#{@vz.url_home}}{#{@vz.url_txt}}]{\\href{#{@vz.url_home}}{#{@vz.url_txt}}}\n" +
- "\\rfoot[\\tiny \\href{#{@vz.url_sisu}}{#{@vz.txt_signature}}]{\\textrm{\\thepage}}\n"
- end
- def site
- if not @vz.url_home.empty? \
- and not @vz.url_txt.empty?
- "\n\\date{\\begin{footnotesize} copy @ \\href{#{@vz.url_home}}{#{@vz.url_txt}} \\end{footnotesize}}"
- else ''
- end
- end
- def sitename #owners site, eg freeculture, free.for.all, gutenberg etc.
- "\\href{#{@vz.url_home}}{#{@vz.txt_home}}"
- end
- def owner_chapter
- "Contact Details for Original Promulgating Authority"
- end
- #BOOK standard dimensions - 229x156
- def newpage(orientation)
- case orientation
- when /landscape/ # using longtable latex package
-<<WOK
-\\clearpage
-WOK
- when /portrait/
-<<WOK
-\\newpage
-WOK
- end
- end
- def sisu_rights
- v=SiSU_Env::InfoVersion.instance.get_version
- base_prog_txt=if @md.base_program
- case @md.base_program
- when /kdissert/i; "\n\\\\ This document prepared using \\href{http://freehackers.org/~tnagy/kdissert/}{Kdissert \\ http://freehackers.org/~tnagy/kdissert/ } \\\\ Kdissert is Document Mapping software by Thomas Nagy"
- else ''
- end
- else ''
- end
-<<WOK
-\\\\ ~
-{\\begin{footnotesize}#{base_prog_txt}
-\\\\ Generated by \\href{http://www.jus.uio.no/sisu}{SiSU} \\begin{tiny}[ #{v[:project]} #{v[:version]} of #{v[:date_stamp]} ]\\end{tiny} \\href{http://www.jus.uio.no/sisu}{www.jus.uio.no/sisu}
-\\\\ Copyright #{@copymark} 1997, current #{@date.year_static} Ralph Amissah, All Rights Reserved.
-\\\\ SiSU is software for document structuring, publishing and search (with object citation numbering), \\href{http://www.sisudoc.org}{www.sisudoc.org}
-\\\\ SiSU is released under \\href{http://www.fsf.org/licenses/gpl.html}{GPL 3 } or later, #{@brace_url.tex_open}\\href{http://www.fsf.org/licenses/gpl.html}{http://www.fsf.org/licenses/gpl.html}#{@brace_url.tex_close}.
-{\\end{footnotesize}
-\\\\
-WOK
- end
- def doc_sc_info_footnote_full
-<<WOK
-\\footnote{%\nGenerated by \\href{http://www.jus.uio.no/sisu}{SiSU \\ www.jus.uio.no/sisu }\\ \\newline \\scriptsize{Document version information: \\emph{sourcefile} \\uline{#{@md.fnstex}}; \\emph{version} \\uline{#{@md.sc_number}}; \\emph{date} \\uline{#{@md.sc_date}}; \\emph{time} \\uline{#{@md.sc_time}}}}
-WOK
- end
- def doc_sc_info_footnote_brief
- " \\footnote{%\nGenerated by \\href{http://www.jus.uio.no/sisu}{SiSU} \\ \\href{http://www.jus.uio.no/sisu}{www.jus.uio.no/sisu} \\newline \\href{http://www.sisudoc.org}{www.sisudoc.org} \\\n}"
- end
- def doc_sc_info
- v=SiSU_Env::InfoVersion.instance.get_version
-<<WOK
-\\\\
-{\\begin{footnotesize}
-Document version information: \\\\
-\\emph{sourcefile} \\uline{#{@md.fnstex}}; \\emph{version} \\uline{#{@md.sc_number}}; \\emph{date} \\uline{#{@md.sc_date}}; \\emph{time} \\uline{#{@md.sc_time}} \\\\
-Generated by \\href{http://www.jus.uio.no/sisu}{SiSU www.jus.uio.no/sisu }\\- version information: \\\\
-\\uline{ #{v[:project]} #{v[:version]} of #{v[:date_stamp]}}
-\\end{footnotesize}}&
-WOK
- end
- def doc_no_sc_info
- v=SiSU_Env::InfoVersion.instance.get_version
-<<WOK
-\\\\
-{\\begin{small}
-Document information: \\\\
-\\emph{sourcefile} \\uline{#{@md.fnstex}} \\\\
-Generated by \\href{http://www.jus.uio.no/sisu}{SiSU www.jus.uio.no/sisu } \\\\ version information: \\
-\\uline{ #{v[:project]} #{v[:version]} of #{v[:date_stamp]}}
-
-\\end{small}}&
-WOK
- end
- def endnotes #not used should be inserted before MetaData section which preceeds doc_tail, but is "part of document"
-<<WOK
-\\subsection*{Endnotes}
-\\addcontentsline{toc}{section}{Endnotes}
-\\
-\\listofendnotes
-WOK
- end
- def doc_tail
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- base_html="#{dir.url.root}/#{@md.fnb}"
- v=SiSU_Env::InfoVersion.instance.get_version
- sisu_ico=if FileTest.file?("#{dir.path.image_source_include}/sisu.png")
- "\\includegraphics*[width=60pt]{#{dir.path.image_source_include}/sisu.png}"
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,'WARNING - image directory or image(s) missing:', %{"#{dir.path.image_source_include}"} ).warn unless @md.opt.cmd =~/q/
- " SiSU "
- end
- url=@md.fnb.gsub(/(?:\\)*([$&~%_#}{^])/,'\\\\\1')
-<<WOK
-\\begin{english}[variant=british]
-\\subsection*{Information on this document copy and an unofficial List of Some web related information and sources}
-\\addcontentsline{toc}{section}{Information on this document copy and an unofficial List of Some web related information and sources}
-\\\\
-\"Support Open Standards and Software Libré for the Information Technology Infrastructure\" RA\\subsubsection*{Information on this document copy #{site}}
-\\addcontentsline{toc}{subsection}{Information on this document copy}
-{\\begin{footnotesize}
-\\\\ Generated by \\href{http://www.jus.uio.no/sisu/}{SiSU} found at \\href{http://www.jus.uio.no/sisu/}{www.jus.uio.no/sisu} \\begin{tiny}[ #{v[:project]} #{v[:version]} #{v[:date_stamp]} ]\\end{tiny} \\href{http://www.sisudoc.org}{www.sisudoc.org}. SiSU is software for document structuring, publishing and search (using SiSU: object citation numbering, markup, meta-markup, and system) Copyright #{@copymark} 1997, current #{@date.year_static} Ralph Amissah, All Rights Reserved.
-\\\\ SiSU is released under \\href{http://www.fsf.org/licenses/gpl.html}{GPL 3 } or later (\\href{http://www.fsf.org/licenses/gpl.html}{www.fsf.org/licenses/gpl.html}). {\\end{footnotesize}
-{\\begin{small}
-\\\\ W3 since October 3 1993 \\href{http://www.jus.uio.no/sisu/}{#{sisu_ico}}SiSU 1997, current #{@date.year_static}. \\\\ #{sitename} presentations at \\begin{scriptsize}#{site}\\end{scriptsize} \\\\ \\\\ #{@md.title.full} \\textbf{pdf} versions can be found at: \\\\
-{\\end{small}
-\\\\ #{@brace_url.tex_open}\\begin{scriptsize}\\url{#{@vz.url_root_http}/#{url}/#{@md.fn[:pdf_p]}}\\end{scriptsize}#{@brace_url.tex_close} \\\\
-#{@brace_url.tex_open}\\begin{scriptsize}\\url{#{@vz.url_root_http}/#{url}/#{@md.fn[:pdf_l]}}\\end{scriptsize}#{@brace_url.tex_close} \\\\
-\\\\\n#{@md.title.full} \\textbf{html} versions may be found at: \\\\
-#{@brace_url.tex_open}\\begin{scriptsize}\\url{#{@vz.url_root_http}/#{url}/#{@md.fn[:toc]}}\\end{scriptsize}#{@brace_url.tex_close} or \\\\
-#{@brace_url.tex_open}\\begin{scriptsize}\\url{#{@vz.url_root_http}/#{url}/#{@md.fn[:doc]}}\\end{scriptsize}#{@brace_url.tex_close}
-\\\\
-\\\\
-\\href{#{@vz.url_root_http}/#{url}/#{@md.fn[:manifest]}}{SiSU Manifest} of document output and metadata may be found at: \\\\
-#{@brace_url.tex_open}\\begin{scriptsize}\\url{#{@vz.url_root_http}/#{url}/#{@md.fn[:manifest]}}\\end{scriptsize}#{@brace_url.tex_close}
-\\\\
-\\\\
- #{sitename} found at: \\begin{scriptsize}#{site}\\end{scriptsize}\\subsubsection*{Links that may be of interest at #{@vz.txt_home} and elsewhere:}
-\\addcontentsline{toc}{subsection}{Links that may be of interest}
-\\end{english}
-WOK
- end
- def mail_tail #not retested, the old mail_tail is commented out and appended to this program
- dir=SiSU_Env::InfoEnv.new(@md.fns)
-<<WOK
-\\subsection*{Mail sender details}
-\\addcontentsline{toc}{subsection}{Mail sender details}
-\\\\
-Mail from: ralph@amissah.com\\\\
-44 20 8789 3452\\\\
-44 77 9669 4448
-\\\\
- \"Support Open Standards and Open Sources for the Information Technology Infrastructure\" RA
-\\subsubsection*{Information on this document copy #{site}\\copyright}
-Presentations' look and feel generated by \\href{http://www.jus.uio.no/sisu/}{SiSU Scribe} \\href{http://www.jus.uio.no/sisu/}{http://www.jus.uio.no/sisu/} programmed in Ruby on Debian/Gnu/Linux by Copyright \\copyright Ralph Amissah, W3 since October 3 1993 \\href{http://www.jus.uio.no/sisu/}{\\includegraphics*[width=35pt]{#{dir.path.image_source_include}/sisu.png}}for #{sitename}. SiSU Scribe (sisu information structuring unit) produces Electronic Documents, i.e. it generates structured output for use in a number of file formats, including the pdf file produced here.
-WOK
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/update.rb b/lib/sisu/v3dv/update.rb
deleted file mode 100644
index f4ad275c..00000000
--- a/lib/sisu/v3dv/update.rb
+++ /dev/null
@@ -1,136 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: update previous output (with similar output file type formats)
-
-=end
-module SiSU_UpdateControlFlag
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- include SiSU_Param
- class Check
- def initialize(opt)
- @opt=opt
- @md=SiSU_Param::Parameters.new(@opt).get
- end
- def read
- begin
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- out=@env.path.output
- base_path="#{out}/#{@md.fnb}"
- SiSU_Screen::Ansi.new(@md.opt.cmd,'Checking previous output',base_path).green_hi_blue unless @md.opt.cmd =~/q/
- SetCF.new(@md).set_flags
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- private
- class SetCF
- def initialize(md)
- @md=md
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- out=@env.path.output
- @base_path="#{out}/#{@md.fnb}"
- @pdf_fn=SiSU_Env::FileOp.new(@md).base_filename
- end
- def set_flags #-mNhwpoabxXyv
- flag='-v'
- if FileTest.file?("#{@md.file.output_path.txt.dir}/#{@md.file.base_filename.txt}")==true
- flag=flag + 'a'
- end
- if FileTest.file?("#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_seg}")==true
- or FileTest.file?("#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_scroll}")==true
- flag=flag + 'h'
- end
- if FileTest.file?("#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}")==true
- flag=flag + 'b'
- end
- if FileTest.file?("#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}")==true
- flag=flag + 'x'
- end
- if FileTest.file?("#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}")==true
- flag=flag + 'X'
- end
- if FileTest.file?("#{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}")==true
- flag=flag + 'e'
- end
- if FileTest.file?("#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}")==true
- flag=flag + 'o'
- end
- if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_a4}")==true \
- or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_a4}")==true \
- or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_letter}")==true \
- or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_letter}")==true
- flag=flag + 'p'
- end
- if FileTest.file?("#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}")==true
- flag=flag + 'w'
- end
- if FileTest.file?("#{@md.file.output_path.digest.dir}/#{@md.file.base_filename.digest}")==true
- flag=flag + 'N'
- end
- if FileTest.file?("#{@md.file.output_path.src.dir}/#{@md.file.base_filename.src}")==true
- flag=flag + 's'
- end
- if FileTest.file?("#{@md.file.output_path.sisupod.dir}/#{@md.file.base_filename.sisupod}")==true
- flag=flag + 'S'
- end
- puts flag
- flag
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/urls.rb b/lib/sisu/v3dv/urls.rb
deleted file mode 100644
index 31614a37..00000000
--- a/lib/sisu/v3dv/urls.rb
+++ /dev/null
@@ -1,427 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: urls for output files
-
-=end
-module SiSU_Urls
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- class Source
- attr_reader :opt
- def initialize(opt)
- @opt=opt
- end
- def read
- begin
- SiSU_Urls::OutputUrls.new(@opt).songsheet if @opt.fnb
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd).error
- ensure
- end
- end
- end
- class OutputUrls
- attr_reader :fns,:fnb,:cmd,:dir,:m_regular,:u
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_env_md(opt)
- @cmd=@opt.cmd
- @md=@particulars.md
- @env=@particulars.env
- @fnb=@env.fnb
- fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
- @fnl=@env.i18n.lang_filename(fn_set_lang[:c])
- @fn=SiSU_Env::EnvCall.new(@opt.fns).lang(fn_set_lang[:c])
- @m_regular=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/
- @prog=@env.program
- source=if @opt.fns =~/\.sst$/; @opt.fns
- elsif @opt.fns =~/\.ssm\.sst/; "#{@fnb}.ssm.sst"
- else 'not recognised file'
- end
- @u ||= {
- 'a --txt (Plain-text (footnotes))'=>@fn[:plain],
- 'b --xhtml (XHTML)'=>@fn[:xhtml],
- 'D[iu] --psql (DBI import/update postgresql)'=>'dbi psql',
- 'd[iu] --sqlite (DBI import/update sqlite)'=>'dbi sqlite3',
- 'e --epub (EPUB)'=>@fn[:epub],
- 'P --pot (Pot)'=>@fn[:pot],
- 'h --html (HTML segmented)'=>@fn[:toc],
- 'H --html (HTML segmented)'=>@fn[:toc],
- 'h --html (HTML scroll)'=>@fn[:doc],
- 'H --html (HTML scroll)'=>@fn[:doc],
- 'I --texinfo (Info file)'=>'info',
- 'i --man (manpage)'=>'manpage',
- 'm --dal (Document Abstraction)'=>'dal',
- 'N (Digests md5/sha256)'=>@fn[:digest],
- 'o --odt (ODF:ODT - Open Document)'=>@fn[:odf],
- 'p --pdf (PDF landscape)'=>@fn[:pdf_l],
- 'p --pdf (PDF portrait)'=>@fn[:pdf_p],
- 'E --profile (Ruby profiler)'=>'profile',
- 's --source (sisu markup)'=>source,
- 'S --sisupod (sisupod)'=>@fn[:sisupod],
- 't --txt (Plain-text (endnotes))'=>@fn[:plain],
- 'x --xml-sax (XML sax type)'=>@fn[:sax],
- 'X --xml-dom (XML dom type)'=>@fn[:dom],
- 'y --manifest (Manifest, html)'=>@fn[:manifest],
- 'Y (Sitemap, xml)'=>@fn[:sitemap],
- 'w --concordance (Concordance, html)'=>@fn[:concordance],
- }.sort {|a,b| a[0].downcase<=>b[0].downcase}
- end
- def songsheet
- begin
- @opt.cmd=~/U/ ? urls_all : (urls_select unless @opt.cmd=~/q/)
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- def show
- def source
- def src(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.text_editor} #{@md.file.output_path.src.dir}/#{y}").result
- end
- def pod(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} #{@env.url.output_tell}/src/pod/#{y}").result
- end
- self
- end
- def generic(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} #{@env.url.output_tell}/#{@fnb}/#{y}").result
- end
- def meta(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.text_editor} ~#{y}/#{@fnb}.#{y}").result
- end
- def text(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.txt.dir}/#{@md.file.base_filename.txt}").result
- end
- def epub(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.epub_viewer} #{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}").result
- end
- def html
- def scroll(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_scroll}").result
- end
- def toc(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_segtoc}").result
- end
- def concordance(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}").result
- end
- def manifest(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}").result
- end
- self
- end
- def odt(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.odf_viewer} file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}").result
- end
- def pdf
- def portrait(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.pdf_viewer} #{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p}pdf").result
- end
- def landscape(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.pdf_viewer} #{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l}pdf").result
- end
- self
- end
- def manpage(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.manpage_viewer} #{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}").result
- end
- def pinfo(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","pinfo -f #{@md.file.output_path.texinfo.dir}/#{@md.file.base_filename.info}").result
- end
- def po4a
- def po(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@md.file.output_path.po.dir}/#{y}").result
- end
- def pot(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@md.file.output_path.pot.dir}/#{y}").result
- end
- self
- end
- def xhtml(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}").result
- end
- def xml
- def sax(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}").result
- end
- def dom(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@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 sitemap(x) #BROKEN
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.sitemaps.dir}/#{@md.file.base_filename.sitemap}").result
- end
- self
- end
- def hash_digest(x)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.hash_digest.dir}/#{@md.file.base_filename.hash_digest}").result
- end
- def db
- def psql(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x} DBI psql","#{@pwd_stub}::#{@opt.fns}",y).result
- end
- def sqlite(x,y)
- SiSU_Screen::Ansi.new(@opt.cmd,"[#{@opt.f_pth[:lng_is]}] -#{x} DBI sqlite","sqlite3 #{@md.file.output_path.sqlite_discreet.dir}/#{@md.file.base_filename.sqlite_discreet}\n sqlite3 #{@env.path.webserv}/#{@md.opt.f_pth[:pth_stub]}/sisu_sqlite.db\n", "#{y}").result
- end
- self
- end
- self
- end
- def urls_maintenance(opt,x,y)
- if x=~/^([abcehHmNoptwxXy])/ \
- and opt.cmd =~/[abcehHmNoptwxXy]/ \
- and x=~/^[#{opt.cmd}]/ \
- and opt.cmd =~/[MV]/
- m=$1
- f=y
- tool=@prog.text_editor
- if x =~/^m/ \
- and @opt.cmd=~/m/ \
- and x=~/^[#{opt.cmd}]/
- SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.dal}/#{@opt.fns}.meta").maintenance
- end
- if x=~/^([hw])/ \
- and @opt.cmd=~/[hw]/ \
- and x=~/^[#{@opt.cmd}]/ \
- and x !~/segmented/; "#{y}.html"
- SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.tune}/#{@md.fns}.tune").maintenance
- end
- if x=~/^p/ \
- and @opt.cmd=~/p/ \
- and x=~/^[#{@opt.cmd}]/
- tool=@prog.pdf_viewer
- fns=@opt.fns.gsub(/~/,'-')
- unless @opt.cmd =~/q/
- tell=if x =~/landscape/
- SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.tex}/#{fns}.landscape.tex")
- else SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.tex}/#{fns}.tex")
- end
- tell.maintenance
- end
- end
- if x=~/^o/ \
- and @opt.cmd=~/o/ \
- and x=~/^[#{@opt.cmd}]/
- tool=@prog.odf_viewer
- end
- if x=~/^e/ \
- and @opt.cmd=~/e/ \
- and x=~/^[#{@opt.cmd}]/
- SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.epub}/#{Ep[:d_oebps]}/toc.xhtml").maintenance
- end
- if x=~/^o/ \
- and @opt.cmd=~/o/ \
- and x=~/^[#{@opt.cmd}]/
- SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.odf}/#{@opt.fns}/odt/content.xml").maintenance
- end
- end
- end
- def urls_select
- unless @opt.cmd =~/q/
- i="(output manifest) [#{@opt.f_pth[:lng_is]}] #{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}"
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'URLs').grey_title_hi
- : SiSU_Screen::Ansi.new(@opt.cmd,'URL',i).green_hi_blue
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}").flow if @opt.cmd =~/[MVv]/
- end
- m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @pwd_stub="#{@env.url.output_tell}"[m,1]
- unless @opt.cmd =~/q/
- @u.each do |x,y|
- if @opt.fns =~ @m_regular
- if @opt.cmd =~/[MVv]/
- if (x=~/^a/ and @opt.cmd =~/a/) \
- or (x=~/^t/ and @opt.cmd =~/t/)
- show.text(x)
- end
- if x=~/^b/ \
- and @opt.cmd =~/b/
- show.xhtml(x)
- end
- if x=~/^D/ \
- and @opt.cmd =~/D/
- show.db.psql(x,y)
- end
- if x=~/^d/ \
- and @opt.cmd =~/d/
- show.db.sqlite(x,y)
- end
- if x=~/^e/ \
- and @opt.cmd =~/e/
- show.epub(x)
- end
- if x=~/^h/ \
- and @opt.cmd =~/h/
- if x =~/scroll/
- show.html.scroll(x)
- else
- show.html.toc(x)
- end
- end
- if x=~/^I/ \
- and @opt.cmd =~/I/
- show.pinfo(x,y)
- end
- if x=~/^i/ \
- and @opt.cmd =~/i/
- show.manpage(x)
- end
- if x=~/^N/ \
- and @opt.cmd =~/N/
- show.hash_digest(x)
- end
- if x=~/^o/ \
- and @opt.cmd =~/o/
- show.odt(x)
- end
- if x=~/^P/ \
- and @opt.cmd =~/P/
- if @opt.fns =~/\S+?~\S{2}(?:_\S{2})?\.ss[mt]/
- f=y.gsub(/\.pot$/,'.po')
- show.po4a.po(x,f)
- else
- show.po4a.pot(x,f)
- end
- end
- if x=~/^p/ \
- and @opt.cmd =~/p/
- if x =~/portrait/
- show.pdf.portrait(x)
- else
- show.pdf.landscape(x)
- end
- end
- if x=~/^S/ \
- and @opt.cmd =~/S/
- (@opt.fns =~/\.ssm\.sst$/) \
- ? y.gsub(/(?:\~\S{2,3})?(\.ssm.sst\.txz)$/,'.ssm.txz')
- : y.gsub(/(?:\~\S{2,3})?(\.sst\.txz)$/,'\1')
- show.source.pod(x,y)
- end
- if x=~/^s/ \
- and @opt.cmd =~/s/
- show.source.src(x,y)
- end
- if x=~/^w/ \
- and @opt.cmd =~/w/
- show.html.concordance(x)
- end
- if x=~/^X/ \
- and @opt.cmd =~/X/
- show.xml.dom(x)
- end
- if x=~/^x/ \
- and @opt.cmd =~/x/
- show.xml.sax(x)
- end
- if x=~/^Y/ \
- and @opt.cmd =~/Y/ #BROKEN
- show.xml.sitemap(x)
- end
- if x=~/^y/ \
- and @opt.cmd =~/y/
- show.html.manifest(x)
- end
- end
- urls_maintenance(@opt,x,y) if @opt.cmd =~/[MV]/
- end
- end
- end
- end
- def urls_all
- i="(output manifest) [#{@opt.f_pth[:lng_is]}] #{@env.url.output_tell}/#{@fnb}/sisu_manifest.html"
- SiSU_Screen::Ansi.new(@opt.cmd,'URLs',i).grey_title_hi
- @u.each do |x,y|
- tell=case x
- when /^m/
- show.meta(x,y)
- when /^[BcdNsxXy]/
- show.generic(x,y)
- when /^[at]/
- show.text(x)
- when /^b/
- show.xhtml(x)
- when /^e/
- show.epub(x)
- when /^h/
- if x =~/scroll/
- show.html.scroll(x)
- else
- show.html.toc(x)
- end
- when /^o/
- show.odt(x)
- when /^p/
- if x =~/portrait/
- show.pdf.portrait(x)
- else
- show.pdf.landscape(x)
- end
- when /^w/
- show.html.concordance(x)
- when /^Y/
- show.xml.sitemap(x)
- when /^I/
- show.pinfo(x,y)
- when /^i/
- show.manpage(x)
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/webrick.rb b/lib/sisu/v3dv/webrick.rb
deleted file mode 100644
index 42281321..00000000
--- a/lib/sisu/v3dv/webrick.rb
+++ /dev/null
@@ -1,174 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: webrick share - note sisu by default does not link with file
- suffixes, see man pages for options
-
-=end
-def brick(port,get='')
- cgidir=if get=~/pwd/; Dir.pwd
- else '/usr/lib/cgi-bin' # @env.path.cgi
- end
- port=SiSU_Env::InfoPort.new.webrick
- begin
- s=HTTPServer.new(
- Port: port,
- DocumentRoot: Dir::pwd + '/htdocs',
- CGIPathEnv: ENV['PATH']
- )
- cgi_dir=File.expand_path(cgidir)
- @mount.each { |x,y| # mount subdirectories
- s.mount(x, HTTPServlet::FileHandler, y, true)
- }
- s.mount('/cgi-bin', HTTPServlet::FileHandler, cgi_dir, { FancyIndexing: true })
- trap("INT"){ s.shutdown }
- s.start
- rescue; SiSU_Errors::InfoError.new($!,$@,'-W',nil).error #fix
- ensure
- end
-end
-begin #%
- require 'webrick'
- include WEBrick
- require 'time'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- @cX=SiSU_Screen::Ansi.new('yes').cX
- @env=SiSU_Env::InfoEnv.new
- port=SiSU_Env::InfoPort.new
- @argv=$*
- @host=@env.url.webrick
- host='localhost'
- @port="#{@argv[0].to_i}"
- @port="#{port.webrick}" if @port =~ /^0$/
- @serve=[]
- Dir.foreach(@env.path.webserv) do |x|
- if x !~/^\./ \
- and FileTest.directory?("#{@env.path.webserv}/#{x}")
- @serve << x
- end
- end
- @mount=[]
- @serve.each {|x| @mount << ["/#{x}", "#{@env.path.webserv}/#{x}"]}
- @pwd=Dir.pwd
- @week=Time.now.strftime(%{%Yw%W})
- puts "\n"
- @mount.each { |x,y|
- puts " #{@cX.cyan}#{x}#{@cX.off}\t#{@cX.grey}see#{@cX.off} #{@cX.blue}#{@host}:#{@port}#{x}/wb.cgi#{@cX.off} #{@cX.ruby}@#{@cX.off} #{@cX.blue}#{@host}:#{@port}#{x}/#{@cX.off}"
- }
- puts "#{@cX.grey}"
- wb_s2=[]
- #% writes file wb.cgi to shared directories ...
- #% wb_top
- wb_top=%q(#!/usr/bin/env ruby
- # * arch-tag: webrick info on environment, mounted directories, and contents of pwd
- require 'time'
- require 'cgi'
- require 'fcgi'
- ls=Dir.entries('./')
- dir_contents=[]
- ls.each { |x| dir_contents << "<a href=\"./#{x}/\">#{x}</a><br>" unless x =~/^(\.)+$/ }
- dir_contents=dir_contents.sort.join(' ')
- #host=ENV['HOSTNAME']
- #host=%x{echo $HOSTNAME}
- )
- wb_s1=<<WOK
-
- page=CGI.new "html3"
- page.out {
- page.html {
- page.head { page.title {"#{@host} Webrick Report"} } +
- page.body {
- page.h1 {"Webrick #{@host}"} +
- page.p {"Webrick is Ruby's built in webserver."} +
- page.center {"Host name: " + page.b{"#{@host} "} + "(#{@host}) port: " + page.b{"#{@port}"}} +
- page.center {"#{Time.now}"} +
- page.center {"#{Time.now.strftime(%{%Yw%W})}"} +
- page.p {''} +
- page.p {''} +
- page.p {page.b{"Webrick Served Directories: "}} +
-WOK
- #% wb_s2 (mounts)
- @mount.each do |x,y| wb_s2 <<<<WOK
- page.p {page.b{'<a href="#{@host}:#{@port}#{x}/">#{x}</a> '} + '<a href="#{@host}:#{@port}#{x}/">#{@host}:#{@port}#{x}</a> (mounts: #{y}/) <a href="#{@host}:#{@port}#{x}/wb.cgi">info (wb.cgi)</a>'} +
-WOK
-end
- #% wb_end
- wb_end=<<WOK
- page.p {page.b{"Contents of PWD (see URL): "}} +
- page.p {"#\{dir_contents}"}
- }
- }
- }
-WOK
- @mount.each { |x,y| #% wb puts
- puts y
- filename=File.new("#{y}/wb.cgi",'w')
- filename << wb_top
- filename << wb_s1
- filename << wb_s2
- filename << wb_end
- filename.close
- FileUtils::chmod(0755,"#{y}/wb.cgi &") if FileTest.file?("#{y}/wb.cgi &")
- }
- puts " #{@cX.off}"
- get=@argv.shift if @argv[0] =~/pwd/ #% argv
- brick(@port,get)
-rescue;
- require_relative 'sysenv' # sysenv.rb
- SiSU_Errors::InfoError.new($!,$@,'-W',nil).error #fix
-ensure
-end
-__END__
diff --git a/lib/sisu/v3dv/wikispeak.rb b/lib/sisu/v3dv/wikispeak.rb
deleted file mode 100644
index 955432c0..00000000
--- a/lib/sisu/v3dv/wikispeak.rb
+++ /dev/null
@@ -1,373 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: wiki text generation, stripped wiki output (unix, linefeed)
-
-=end
-module SiSU_Wikispeak
- require_relative 'dal' # dal.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'
- pwd=Dir.pwd
- @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0
- @@tablefoot=''
- class Source
- def initialize(opt)
- @opt=opt
- @@dostype='msdos footnotes'
- end
- def read
- begin
- @md=SiSU_Param::Parameters.new(@opt).get
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- path=@env.path.output_tell
- tool=(@opt.cmd =~/[MVv]/) \
- ? "#{@env.program.text_editor} #{path}/#{@md.fnb}/#{@md.fn[:wiki]}"
- : ''
- SiSU_Screen::Ansi.new(@opt.cmd,'Wikispeak',tool).green_hi_blue unless @opt.cmd =~/q/
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output_tell}/#{@md.fnb}/#{@md.fn[:wiki]}").flow if @opt.cmd =~/[MV]/
- @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
- SiSU_Wikispeak::Source::Scroll.new(@dal_array,@md).songsheet
- SiSU_Env::InfoSkin.new(@md).select #watch
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class SplitTextObject <Source
- require_relative 'plaintext_format' # plaintext_format.rb
- include Format
- include SiSU_Viz
- @@alt_id_count=0
- @@dp=nil
- attr_reader :format,:lev,:text,:ocn,:lev_para_ocn
- def initialize(para)
- @para=para
- @format,@ocn='ordinary','ordinary'
- @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
- end
- def lev_segname_para_ocn
- @text=nil
- if @para =~/^(\d~|<:.+?>).+?#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/
- if /^(([1-6])~(\S+))\s+(\S.+?)#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/m.match(@para)
- @format,@lev,segname,@text,@ocn=$1,$2,$3,$4,$5
- elsif /^(([1-6])~)\s+(\S.+?)#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/m.match(@para)
- @format,@lev,@text,@ocn=$1,$2,$3,$4
- elsif /<:(.+?)>\s*(\S.+?)#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/m.match(@para)
- @format,@text,@ocn=$1,$2,$3
- elsif /^(([1-6])~(\S+))\s+(\S.+?)#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;[um]\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/m.match(@para)
- @@alt_id_count+=1
- @format,@lev,segname,@text,@ocn=$1,$2,$3,$4,"x#{@@alt_id_count}"
- elsif /^(([1-6])~)\s+(\S.+?)#{Mx[:id_o]}~(\d+);[um]\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/m.match(@para)
- @@alt_id_count+=1
- @format,@lev,@text,@ocn=$1,$2,$3,"x#{@@alt_id_count}"
- end
- else
- if /(.+?)#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/m.match(@para)
- @text,@ocn=$1,$2
- end
- if @para !~/#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$|^$/ #added 2002w06
- @text=/(.+?)/m.match(@para)[1]
- end
- if /^((\d)~(?:~\S+)?)\s+(.+)/m.match(@para)
- @format,@lev,@text=$1,$2,$3
- end
- end
- format=@format.dup
- @lev_para_ocn=if @para =~/.+#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{#Mx[:id_c]}$/
- Format::FormatTextObject.new(format,@text,@ocn)
- else
- Format::FormatTextObject.new(format,@text,"#{Mx[:id_o]}~(\d+);[um]\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}")
- end
- self
- end
- end
- class Scroll <Source
- require_relative 'shared_txt' # shared_txt.rb
- include SiSU_TextUtils
- @@endnotes_para=[]
- @@wiki={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] }
- @@dp=nil
- def initialize(data,md)
- @data,@md=data,md
- @vz=SiSU_Env::GetInit.instance.skin
- @dp=@@dp ||=SiSU_Env::InfoEnv.new.digest.pattern
- @regx=/^(?:(?:#{Mx[:br_line]}\s*|#{Mx[:br_nl]}\s*)?#{Mx[:lv_o]}\d:(\S*?)#{Mx[:lv_c]}\s*)?(.+)/ #fix Mx[:lv_o] #m # 2004w18 pb pn removal added
- @tab="\t"
- @@dostype='unix footnotes'
- @br="\n"
- end
- def songsheet
- markup
- publish
- end
- # Used for extraction of endnotes from paragraphs
- def extract_endnotes(para='')
- notes=para.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)\s*#{Mx[:id_o]}#{@dp}#{Mx[:id_c]}(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/)
- @n=[]
- end
- def wiki_metadata(meta)
- util=SiSU_TextUtils::Wrap.new(meta.text,70,15,1)
- txt=util.line_wrap
- @@wiki[:metadata] <<= if meta.type=='meta'
- <<WOK
-
-#{@tab}#{meta.el}: #{txt}
-WOK
- else ''
- end
- end
- def wiki_tail
- SiSU_Env::InfoSkin.new(@md).select
- vz=SiSU_Env::GetInit.instance.skin
- 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}#{@br}Version number: #{@md.sc_number}#{@br}Version date: #{@md.sc_date}#{@br}"
- else ''
- end
- @@wiki[:tail] <<<<WOK
-#{@br}
-Other versions of this document: #{@br}
-manifest:
- #{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:manifest]}#{@br}
-html:
- #{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:toc]}#{@br}
-pdf:
- #{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:pdf_p]}
- #{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:pdf_l]}#{@br}
-plaintext (plain text):
- #{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:plain]}#{@br}
-at:
- #{vz.url_site}#{@br}
-
-#{sc}
-* #{generator}
-* #{rubyv}
-* #{lastdone}
-* SiSU #{vz.url_sisu}
-WOK
- end
- def wiki_structure(para='',lv='',ocn='',hname='') #% Used to extract the structure of a document
- lv=lv.to_i
- n=lv - 1
- n3=lv + 2
- lv=nil if lv==0
- extract_endnotes(para)
- para.gsub!(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(?:[\d*+]+)\s+(.+?)#{Mx[:id_o]}#{@dp}#{Mx[:id_c]}(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,'<ref>\1</ref>') # endnote marker marked up
- para.gsub!(/^#{Rx[:lv]}\S*\s+/,'') # endnote marker marked up
- para.gsub!(/<\S+?>#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}/,'') # endnote marker marked up
- if lv
- @@wiki[:body] << case lv
- when 1; '='*2 << para.strip << @br*2
- when 2..3; '='*2 << para.strip << @br*2
- when 4; '='*4 << para.strip << @br*2
- when 5..6; '='*4 << para.strip << @br*2
- end
- else @@wiki[:body] << para << @br*2 # main text, contents, body KEEP
- end
- end
- def markup # Used for major markup instructions
- data=@data
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- @data_mod,@endnotes,@level,@cont,@copen,@wiki_contents_close=Array.new(6){[]}
- (0..6).each { |x| @cont[x]=@level[x]=false }
- (4..6).each { |x| @wiki_contents_close[x]='' }
- wiki_tail
- table_message='[table omitted, see other document formats]'
- fix=[]
- data.each do |para|
- para.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{@br}#{table_message}") #fix
- para.gsub!(/.+?<-#>/,'') # remove dummy headings (used by html) #check
- para.gsub!(/_\*\s+/,'* ') # bullet markup, marked down
- para.gsub!(/&#169;/,'©') # bullet markup, marked down
- para.gsub!(/&amp;/,'&') # bullet markup, marked down
- para.gsub!(/<sup>(.+?)<\/sup>/,'^\1^')
- para.gsub!(/<sub>(.+?)<\/sub>/,'[\1]')
- para.gsub!(/<i>(.+?)<\/i>/,"''\\1''")
- para.gsub!(/<b>(.+?)<\/b>/,"'''\\1'''")
- para.gsub!(/<u>(.+?)<\/u>/,'_\1_')
- para.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'[\2 \1]')
- para.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'[\1]')
- para.gsub!(/<:(?:block|group|verse|alt|code)(?:-end)?>(?:\s+#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]})?/,'')
- para.gsub!(/<:p[bn]>/,'') # remove page breaks
- para.gsub!(/^\s*#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/,'') # remove empty lines - check
- para.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1')
- para.gsub!(/<:name#\S+?>/,'') # remove name links
- para.gsub!(/&nbsp;|#{Mx[:nbsp]}/,' ') # decide on
- para.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- para.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*#{Mx[:lnk_c]}\S+/,'[image: "\1"]')
- wordlist=para.scan(/\S+/)
- if para =~/^@(\S+?):\s+(.+?)\Z/m # for headers
- d_meta=SiSU_TextUtils::HeaderScan.new(@md,para).meta
- if d_meta; wiki_metadata(d_meta)
- end
- end
- if para !~/(^@\S+?:|#{Mx[:br_endnotes]}|#{Mx[:br_eof]})/
- if para =~@regx #/.+?<~\d+;\w\d+;\w\d+>.*/ #watch change
- paranum=para[@regx,3]
- @p_num=Format::ParagraphNumber.new(paranum)
- end
- @sto=SplitTextObject.new(para).lev_segname_para_ocn
- ### problem in scroll, it appears tables are getting paragraph numbers
- m=/#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/
- if para =~m \
- and para=~/\S+/
- para=case @sto.format
- when /^(1)~(?:(\S+))?/
- wiki_structure(para,$1,@sto.ocn,$2)
- @sto.lev_para_ocn.heading_body1
- when /^(2)~(?:(\S+))?/
- wiki_structure(para,$1,@sto.ocn,$2)
- @sto.lev_para_ocn.heading_body2
- when /^(3)~(?:(\S+))?/
- wiki_structure(para,$1,@sto.ocn,$2)
- @sto.lev_para_ocn.heading_body3
- when /^(4)~(\S+)/ # work on see SiSU_text_parts::SplitTextObject
- wiki_structure(para,$1,@sto.ocn,$2)
- @sto.lev_para_ocn.heading_body4
- when /^(5)~(?:(\S+))?/
- wiki_structure(para,$1,@sto.ocn,$2)
- @sto.lev_para_ocn.heading_body5
- when /^(6)~(?:(\S+))?/
- wiki_structure(para,$1,@sto.ocn,$2)
- @sto.lev_para_ocn.heading_body6
- else
- wiki_structure(para,nil,nil,nil) #watch may be problematic
- para
- end
- elsif para =~/#{table_message}/
- @@wiki[:body] << para << @br
- elsif para =~/(Note|Endnotes?)/ \
- and para !~/#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/
- elsif para =~/(MetaData)/ \
- and para =~/#{Mx[:id_o]}~(\d+);[um]\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/ #debug 2003w46 add rc info ####suspect visit
- elsif para.include? 'Owner Details' \
- and para !~/#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/
- elsif para =~/(#{Mx[:tc_p]}|#{Mx[:gr_o]}Th?)/u #tables ! #fix
- elsif para =~/(.*)<!#!>(.*)/
- one,two=$1,$2
- format_text=FormatTextObject.new(one,two)
- para=format_text.seg_no_paranum
- end
- if (para =~/<a name="n\d+">/ \
- and para =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
- para=''
- end
- case para
- when /<:i1>/
- if para =~/.*<:#>.*$/
- format_text=FormatTextObject.new(para,'')
- para=format_text.scr_indent_one_no_paranum
- end
- when /<:i2>/
- if para =~/.*<:#>.*$/
- format_text=FormatTextObject.new(para,'')
- para=format_text.scr_indent_one_no_paranum
- end
- end
- if para !~/#{@vz.margin_txt_0}|#{@vz.margin_txt_1}|#{@vz.margin_txt_2}/
- # i don't get the condition for no paranum
- end
- if para =~/<:center>/
- one,two=/(.*)<:center>(.*)/.match(para)[1,2]
- format_text=FormatTextObject.new(one,two)
- para=format_text.center
- end
- para.gsub!(/<!.+!>/,' ') if para ## Clean Prepared Text
- para.gsub!(/<:\S+>/,' ') if para ## Clean Prepared Text
- end
- end
- end
- def publish
- divider="="
- content=[]
- data=@data
- content << @@wiki[:open]
- content << @@wiki[:head]
- content << @@wiki[:body]
- Output.new(content.join,@md).wiki
- @@wiki[:head],@@wiki[:body],@@wiki[:tail],@@wiki[:metadata]=[],[],[],[]
- end
- end
- class Output <Source
- include SiSU_Param
- include SiSU_Env
- def initialize(content,md)
- @content,@md=content,md
- end
- def wiki #%wiki output
- SiSU_Env::FileOp.new(@md).mkdir
- filename_wiki=SiSU_Env::FileOp.new(@md,@md.fn[:wiki]).mkfile
- @sisu=[]
- @content.each do |para| # this is a hack
- if para =~/^\S/
- if para !~/^([*=-]|\.){5}/; filename_wiki.puts para #unix wiki
- else filename_wiki.puts para #unix wiki
- end
- else filename_wiki.puts para # if para =~/^\s/
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/xhtml.rb b/lib/sisu/v3dv/xhtml.rb
deleted file mode 100644
index c537275c..00000000
--- a/lib/sisu/v3dv/xhtml.rb
+++ /dev/null
@@ -1,432 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: xhtml output logic, flow
- ** Notes: tidy -xml scroll.xhtml >> index.tidy
-=end
-module SiSU_XHTML
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_Munge
- require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_Format
- require_relative 'rexml' # rexml.rb
- include SiSU_Rexml
- require_relative 'shared_metadata' # shared_metadata.rb
- @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0
- @@tablefoot=''
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- begin
- @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array
- unless @opt.cmd =~/q/
- path=@env.path.output_tell
- loc=@env.url.output_tell
- tool=if @opt.cmd =~/[MV]/
- "#{@env.program.web_browser} file://#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}"
- elsif @opt.cmd =~/v/
- "#{@env.program.web_browser} file://#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}"
- else "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- end
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'invert','XHTML',tool).colorize
- : SiSU_Screen::Ansi.new(@opt.cmd,'XHTML',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"/#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}").flow if @opt.cmd =~/[MV]/
- end
- SiSU_XHTML::Source::Songsheet.new(@particulars).song
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Songsheet
- def initialize(particulars)
- @env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars
- @file=SiSU_Env::FileOp.new(@md)
- end
- def song
- begin
- SiSU_XHTML::Source::Scroll.new(@particulars).songsheet
- SiSU_XHTML::Source::Tidy.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
- SiSU_Rexml::Rexml.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- end
- class Scroll
- require_relative 'shared_xhtml' # shared_xhtml.rb #check already called
- require_relative 'shared_txt' # shared_txt.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
- @vz=SiSU_Env::GetInit.instance.skin
- @tab="\t"
- @trans=SiSU_XML_Munge::Trans.new(@md)
- @sys=SiSU_Env::SystemCall.new
- end
- def songsheet
- pre
- @data=markup(@dal_array)
- post
- publish
- end
- protected
- def embedded_endnotes(dob='')
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><number>\1</number><note>\2</note></endnote> ').
- gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ').
- gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
- end
- 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]})/)
- notes.flatten.each do |e|
- s=e.to_s
- util=SiSU_TextUtils::Wrap.new(s,70)
- wrap=util.line_wrap
- wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
-#{Ax[:tab]*1}<endnote notenumber="\\1">
-#{Ax[:tab]*2}\\1. \\2
-#{Ax[:tab]*1}</endnote>
-WOK
-).
- gsub(/^([*+]\d+)\s+(.+?)\s*\Z/m, <<WOK
-#{Ax[:tab]*1}<endnote symbol="\\1">
-#{Ax[:tab]*2}\\1 \\2
-#{Ax[:tab]*1}</endnote>
-WOK
-).
- gsub(/^([*+]+)\s+(.+?)\s*\Z/m, <<WOK
-#{Ax[:tab]*1}<endnote symbol="\\1.length">
-#{Ax[:tab]*2}\\1 \\2
-#{Ax[:tab]*1}</endnote>
-WOK
-)
-#KEEP alternative presentation of endnotes
-# wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
-##{Ax[:tab]*1}<p class="endnote" notenumber="\\1">
-##{Ax[:tab]*2}\\1. \\2
-##{Ax[:tab]*1}</p>
-#WOK
-#)
- @endnotes << wrap
- end
- end
- def xml_head
- metadata=SiSU_Metadata::Summary.new(@md).xhtml_scroll.metadata
- @@xml[:head] << metadata
- end
- def name_tags(dob)
- tags=''
- if defined? dob.tags \
- and dob.tags.length > 0 # insert tags "hypertargets"
- dob.tags.each do |t|
- tags=tags +%{<named id="#{t}" />}
- end
- end
- tags
- end
- def xml_structure(dob,type='norm')
- if dob.is ==:para \
- || dob.is ==:heading
- named=name_tags(dob)
- if dob.is==:heading
- lv=dob.ln
- n=dob.ln - 1
- n3=dob.ln + 2
- else lv=nil
- end
- extract_endnotes(dob)
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- util=SiSU_TextUtils::Wrap.new(dob.obj,70)
- wrapped=util.line_wrap
- @@xml[:body] << if defined? dob.ocn
- %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- else "#{Ax[:tab]*0}<object>"
- end
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="#{type}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} unless lv # main text, contents, body KEEP
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="h#{lv}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} if lv # main text, contents, body KEEP
- @@xml[:body] << @endnotes.compact.join if @endnotes.length > 0 # main text, endnotes KEEP
- @@xml[:body] << "#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>" if defined? dob.ocn
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- @endnotes=[]
- end
- end
- def block_structure(dob)
- named=name_tags(dob)
- dob=@trans.markup_block(dob)
- dob.obj=dob.obj.strip.
- gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="block">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- end
- def group_structure(dob)
- named=name_tags(dob)
- dob=@trans.markup_group(dob)
- dob.obj=dob.obj.strip.
- gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="group">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- end
- def poem_structure(dob)
- named=name_tags(dob)
- dob=@trans.markup_group(dob)
- dob.obj=dob.obj.strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="verse">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- end
- def code_structure(dob)
- named=name_tags(dob)
- dob=@trans.markup_group(dob)
- dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;').strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="code">#{named}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- end
- def table_structure(dob)
- named=name_tags(dob)
- table=SiSU_XHTML_Shared::TableXHTML.new(dob)
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*2}#{named}#{table.table.obj}}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- end
- def markup(data)
- @endnotes=[]
- @rcdc=false
- @level,@cont,@copen,@xml_contents_close=[],[],[],[]
- xml_head
- (0..6).each { |x| @cont[x]=@level[x]=false }
- (4..6).each { |x| @xml_contents_close[x]='' }
- data.each do |dob|
- dob=@trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8
- dob=@trans.markup(dob)
- if @rcdc==false \
- and (dob.obj =~/~meta/ \
- and dob.obj =~/Document Information/)
- @rcdc=true
- end
- if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- if defined? dob.ocn #look to move to format section
- ocn=(dob.ocn.to_s =~/\d+/) ? dob.ocn : nil
- @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,ocn)
- end
- if not @rcdc
- x=SiSU_XML_Format::FormatSeg.new(@md,dob)
- if dob.is==:heading
- xml_structure(dob)
- dob.obj=case dob.ln
- when 1; x.heading_body1
- when 2; x.heading_body2
- when 3; x.heading_body3
- when 4; x.heading_body4
- when 5; x.heading_body5
- when 6; x.heading_body6
- end
- else
- if dob.is ==:verse
- poem_structure(dob)
- elsif dob.is ==:group
- group_structure(dob)
- elsif dob.is ==:block
- block_structure(dob)
- elsif dob.is ==:code
- code_structure(dob)
- elsif dob.is ==:table
- table_structure(dob)
- elsif dob.is ==:para \
- and dob.indent.to_s =~/[1-9]/ \
- and dob.bullet_==true
- xml_structure(dob,"indent_bullet#{dob.indent}")
- elsif dob.is ==:para \
- and dob.indent.to_s =~/[1-9]/ \
- and dob.indent == dob.hang
- xml_structure(dob,"indent#{dob.indent}")
- elsif dob.is==:para \
- and dob.hang.to_s =~/[0-9]/ \
- and dob.indent != dob.hang
- xml_structure(dob,"hang#{dob.hang.to_s}_indent#{dob.indent.to_s}")
- else xml_structure(dob)
- end
- end
- if dob.obj =~/.*<:#>.*$/ #investigate removal
- dob.obj=if dob.obj =~ /#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/
- txt_obj={ txt: dob }
- format_text=FormatTextObject.new(@md,txt_obj)
- format_text.scr_inden_ocn_e_no_paranum
- end
- end
- if dob.obj !~/#{@vz.margin_txt_0}|#{@vz.margin_txt_1}|#{@vz.margin_txt_2}/
- end
- else #
- end
- dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
- end
- end
- 6.downto(4) do |x|
- y=x - 1; v=x - 3
- @@xml[:body] << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>" if @level[x]==true
- end
- 3.downto(1) do |x|
- y=x - 1
- @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true
- end
- end
- def pre
- rdf=SiSU_XML_Tags::RDF.new(@md)
- dir=SiSU_Env::InfoEnv.new
- @@xml[:head],@@xml[:body]=[],[]
- stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xhtml').stylesheet
- encoding=(@sys.locale =~/utf-?8/i) ? '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' : '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
- @@xml[:open] =<<WOK
-#{encoding}
-#{stylesheet.css_head_xml}
-#{rdf.comment_xml}
-<document>
-WOK
- @@xml[:head] << %{<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />}
- @@xml[:body] << '<body>'
- end
- def post
- @@xml[:head] << '</head>'
- @@xml[:body] << '</body>'
- @@xml[:close] = '</document>'
- end
- def publish
- content=[]
- content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
- content << @@xml[:owner_details] if @md.stmp =~/\w\w/
- content << @@xml[:tail] << @@xml[:close]
- content=content.flatten.compact
- Output.new(content,@md).xhtml
- @@xml={}
- end
- end
- class Output
- def initialize(data,md)
- @data,@md=data,md
- @file=SiSU_Env::FileOp.new(@md)
- end
- def xhtml
- SiSU_Env::FileOp.new(@md).mkdir
- filename_xml=@file.write_file.xhtml
- @data.each do |str|
- str=str.gsub(/\A\s+\Z/m,'') #str.gsub(/^\s+$/,'')
- filename_xml.puts str unless str.empty?
- end
- filename_xml.close
- end
- end
- class Tidy
- def initialize(md,file)
- @md,@file=md,file
- @prog=SiSU_Env::InfoProgram.new
- end
- def xml
- if @prog.tidy !=false
- if @md.opt.cmd =~/[VM]/
- unless @md.opt.cmd =~/q/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','Using XML Tidy','check document structure').colorize
- tell=SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','','')
- tell.grey_open
- end
- tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy=SiSU_Env::SystemCall.new(@file,tidyfile)
- tidy.well_formed?
- tell.p_off unless @md.opt.cmd =~/q/
- end
- end
- end
- end
- end
-end
-__END__
-<?xml version="1.0"?>
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?xml version="1.0" encoding="UTF-16" standalone="no"?>
diff --git a/lib/sisu/v3dv/xhtml_table.rb b/lib/sisu/v3dv/xhtml_table.rb
deleted file mode 100644
index cea438a2..00000000
--- a/lib/sisu/v3dv/xhtml_table.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: shared html parts
-
-=end
-module SiSU_XHTML_Table
- require_relative 'defaults' # defaults.rb
- class TableXHTML
- @@tablehead=0
- @@tablefoot=[] #watch
- def initialize(table)
- @table_obj,@vz=table,SiSU_Env::GetInit.instance.skin
- end
- def table
- table_obj=@table_obj
- if table_obj.obj !~/^<table\s/m
- table_obj=table_rows_and_columns_array(table_obj)
- else p __LINE__; p caller
- end
- table_obj
- end
- def table_rows_and_columns_array(table_obj) # provides basic (x)html table
- table_rows,nr=[],0
- table_obj.obj.split(Mx[:tc_c]).each do |table_row|
- table_row_with_columns=table_row.split(Mx[:tc_p])
- trc,nc=[],0
- table_row_with_columns.each do |c|
- c=c.gsub(/^~$/,''). # tilde / empty cell
- gsub(/<:br>/,'<br />')
- trc <<= if table_obj.head_ and nr==0; %{<th width="#{table_obj.widths[nc]}%">#{c}</th>}
- else %{<td width="#{table_obj.widths[nc]}%">#{c}</td>}
- end
- nc+=1
- end
- trc=trc.class==Array ? trc.flatten.join : trc
- trc=" <tr>#{trc}</tr>\n"
- nr+=1
- table_rows << trc
- end
- table_rows=table_rows.flatten.join
- table_obj.obj=%{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">\n#{table_rows} </table>}
- table_obj
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/xml.rb b/lib/sisu/v3dv/xml.rb
deleted file mode 100644
index aa75e139..00000000
--- a/lib/sisu/v3dv/xml.rb
+++ /dev/null
@@ -1,466 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: xml output (sax style) processing
-
-=end
-module SiSU_XML_SAX
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_Munge
- require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_Format
- require_relative 'rexml' # rexml.rb
- include SiSU_Rexml
- require_relative 'shared_metadata' # shared_metadata.rb
- @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0
- @@tablefoot=''
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- begin
- @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array
- unless @opt.cmd =~/q/
- path=@env.path.output_tell
- loc=@env.url.output_tell
- tool=if @opt.cmd =~/[MV]/; "#{@env.program.web_browser} file://#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}\n\t#{@env.program.xml_viewer} file://#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}"
- elsif @opt.cmd =~/v/; "#{@env.program.web_browser} file://#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}"
- else "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- end
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'invert','XML SAX',tool).colorize
- : SiSU_Screen::Ansi.new(@opt.cmd,'XML SAX',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}").flow if @opt.cmd =~/[MV]/
- end
- SiSU_XML_SAX::Source::Songsheet.new(@particulars).song
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- #file closed in songsheet
- end
- end
- private
- class Songsheet
- def initialize(particulars)
- @env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars
- @file=SiSU_Env::FileOp.new(@md)
- end
- def song
- begin
- SiSU_XML_SAX::Source::Scroll.new(@particulars).songsheet
- SiSU_XML_SAX::Source::Tidy.new(@md,@file.place_file.xml_sax.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
- SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_sax.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- end
- class Scroll
- require_relative 'shared_txt' # shared_txt.rb
- include SiSU_TextUtils
- require_relative 'css' # css.rb
- require_relative 'shared_xhtml' # 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
- @vz=SiSU_Env::GetInit.instance.skin
- @trans=SiSU_XML_Munge::Trans.new(@md)
- @sys=SiSU_Env::SystemCall.new
- end
- def songsheet
- pre
- @data=markup(@dal_array)
- post
- publish
- end
- protected
- def embedded_endnotes(dob='')
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><number>\1</number><note>\2</note></endnote> ').
- gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ').
- gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
- end
- 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]})/)
- notes.flatten.each do |e|
- s=e.to_s
- util=SiSU_TextUtils::Wrap.new(s,70)
- wrap=util.line_wrap
- wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
-#{Ax[:tab]*1}<endnote notenumber="\\1">
-#{Ax[:tab]*2}<number>\\1</number>
-#{Ax[:tab]*2}<note>
-#{Ax[:tab]*3}\\2
-#{Ax[:tab]*2}</note>
-#{Ax[:tab]*1}</endnote>
-WOK
-).
- gsub(/^([*+]\d+)\s+(.+?)\s*\Z/m, <<WOK
-#{Ax[:tab]*1}<endnote symbol="\\1">
-#{Ax[:tab]*2}<symbol>\\1</symbol>
-#{Ax[:tab]*2}<note>
-#{Ax[:tab]*3}\\2
-#{Ax[:tab]*2}</note>
-#{Ax[:tab]*1}</endnote>
-WOK
-).
- gsub(/^([*+]+)\s+(.+?)\s*\Z/m, <<WOK
-#{Ax[:tab]*1}<endnote symbol="\\1.length">
-#{Ax[:tab]*2}<symbol>\\1</symbol>
-#{Ax[:tab]*2}<note>
-#{Ax[:tab]*3}\\2
-#{Ax[:tab]*2}</note>
-#{Ax[:tab]*1}</endnote>
-WOK
-)
- @endnotes << wrap
- end
- end
- def xml_head
- metadata=SiSU_Metadata::Summary.new(@md).xml_sax.metadata
- @@xml[:head] << metadata
- end
- def xml_sc(md='')
- sc=if @md.sc_info
- <<WOK
- <source_control>
- <meta>filename:</meta>
- <sc class="sourcefile">
- #{@md.sc_filename}
- </sc><br />
- <meta>version number:</meta>
- <sc class="number">
- #{@md.sc_number}
- </sc><br />
- <meta>version date:</meta>
- <sc class="date">
- #{@md.sc_date}
- </sc><br />
- </source_control>
-WOK
- else ''
- end
- @@xml[:sc]=sc
- end
- def xml_structure(dob,type='norm')
- if dob.is==:heading
- lv=dob.ln
- n=dob.ln - 1
- n3=dob.ln + 2
- else lv=nil
- end
- extract_endnotes(dob)
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- #if defined? dob.obj
- #t_ograph="#{dob.obj}"
- util=SiSU_TextUtils::Wrap.new(dob.obj,70)
- wrapped=util.line_wrap
- #end
- @@xml[:body] << if defined? dob.ocn; %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- else "#{Ax[:tab]*0}<object>"
- end
- @@xml[:body] << "#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>" if defined? dob.ocn
- @@xml[:body] << if lv; %{#{Ax[:tab]*1}<text class="h#{lv}">\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>}
- else %{#{Ax[:tab]*1}<text class="#{type}">\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} # main text, contents, body KEEP
- end
- @@xml[:body] << @endnotes if @endnotes
- ##@@xml[:body] << "#{Ax[:tab]*1}<text>#{dob[@regx,2]}</text>" if dob[@regx,2] # old unwrapped main text, contents, body KEEP
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- @endnotes=[]
- end
- def block_structure(dob='')
- extract_endnotes(dob)
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob=@trans.markup_block(dob)
- dob.obj=dob.obj.strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="block">#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- @@xml[:body] << @endnotes if @endnotes
- @endnotes=[]
- end
- def group_structure(dob='')
- extract_endnotes(dob)
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
- gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
- dob=@trans.markup_group(dob)
- dob.obj=dob.obj.strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="group">#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- @@xml[:body] << @endnotes if @endnotes
- @endnotes=[]
- end
- def poem_structure(dob='')
- dob=@trans.markup_group(dob)
- #dob.obj.gsub(/\s\s/,'&#160;&#160;')
- dob.obj=dob.obj.strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="verse">#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- end
- def code_structure(dob='')
- dob=@trans.markup_group(dob)
- dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;').strip
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="code">#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- end
- def table_structure(dob)
- table=SiSU_XHTML_Shared::TableXHTML.new(dob)
- @@xml[:body] << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
- @@xml[:body] << %{#{Ax[:tab]*1}<text class="table">#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*2}#{table.table.obj}}
- @@xml[:body] << %{#{Ax[:tab]*1}</text>}
- #@@xml[:body] << %{#{tab*1}</text>}
- @@xml[:body] << "#{Ax[:tab]*0}</object>"
- #@@xml[:body] << %{#{Ax[:tab]*0}<object id="#{ocn}">}
- #@@xml[:body] << %{#{Ax[:tab]*1}#{table}\n#{Ax[:tab]*1}} # unless lv # main text, contents, body KEEP
- #@@xml[:body] << "#{Ax[:tab]*0}</object>"
- #@endnotes=[]
- end
- def markup(data)
- xml_sc(@md)
- @endnotes,@level,@cont,@copen,@xml_contents_close=[],[],[],[],[]
- @rcdc=false
- xml_head
- (0..6).each { |x| @cont[x]=@level[x]=false }
- (4..6).each { |x| @xml_contents_close[x]='' }
- data.each do |dob|
- @trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8
- dob=@trans.markup(dob)
- if @rcdc==false \
- and (dob.is ==:meta \
- and dob.obj =~/Document Information/)
- @rcdc=true
- end
- if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- if defined? dob.ocn #look to move to format section
- ocn=((dob.ocn.to_s =~/\d+/) ? dob.ocn : nil)
- @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,ocn)
- end
- if not @rcdc
- if defined? dob.ocn \
- and dob.ocn.to_s =~/\d+/
- x=SiSU_XML_Format::FormatSeg.new(@md,dob)
- if dob.is==:heading
- xml_structure(dob)
- dob.obj=case dob.ln
- when 1; x.heading_body1
- when 2; x.heading_body2
- when 3; x.heading_body3
- when 4; x.heading_body4
- when 5; x.heading_body5
- when 6; x.heading_body6
- end
- else
- if dob.is==:verse
- poem_structure(dob)
- elsif dob.is==:group
- group_structure(dob)
- elsif dob.is==:block
- block_structure(dob)
- elsif dob.is==:code
- code_structure(dob)
- elsif dob.is==:table # FIX, check css, will need to modify
- table_structure(dob)
- elsif dob.is ==:para \
- and dob.indent.to_s =~/[1-9]/ \
- and dob.bullet_==true
- xml_structure(dob,"indent_bullet#{dob.indent}")
- elsif dob.is ==:para \
- and dob.indent.to_s =~/[1-9]/ \
- and dob.indent == dob.hang
- xml_structure(dob,"indent#{dob.indent}")
- elsif dob.is ==:para \
- and dob.hang.to_s =~/[0-9]/ \
- and dob.indent != dob.hang
- xml_structure(dob,"hang#{dob.hang.to_s}_indent#{dob.indent.to_s}")
- else xml_structure(dob)
- end
- end
- elsif dob.obj =~/(#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- elsif dob.obj =~/MetaData/
- txt_obj={ txt: '<br /><a name="metadata">MetaData</a>' }
- format_scroll=FormatScroll.new(@md,txt_obj)
- dob.obj=format_scroll.bold_para
- elsif dob.obj =~/(Owner Details)/
-# txt_obj={ txt: '<br /><a name="owner.details">Owner Details</a>' }
-# format_scroll=FormatScroll.new(@md,txt_obj)
-# @@xml[:owner_details]=format_scroll.bold_para
- dob.obj=''
- end
- if dob.obj =~/<a name="n\d+">/ \
- and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/ # -endnote
- dob.obj=''
- end
- if dob.obj =~/.*<:#>.*$/ #investigate removal
- dob.obj=if dob.obj =~ /#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/
- txt_obj={ txt: dob }
- format_text=FormatTextObject.new(@md,txt_obj)
- format_text.scr_inden_ocn_e_no_paranum
- end
- end
- else #
- end
- dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
- end
- end
- 6.downto(4) do |x|
- y=x - 1; v=x - 3
- @@xml[:body] << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>" if @level[x]==true
- end
- 3.downto(1) do |x|
- y=x - 1
- @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true
- end
- #6.downto(1) { |x| y=x - 1; @@xml[:body] << "#{Ax[:tab]*y}</level #{x}>" if @level[x]==true }
- end
- def pre
- rdf=SiSU_XML_Tags::RDF.new(@md)
- dir=SiSU_Env::InfoEnv.new
- @@xml[:head],@@xml[:body]=[],[]
- stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xml_sax').stylesheet
- encoding=if @sys.locale =~/utf-?8/i; '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
- else '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
- end
- @@xml[:open] =<<WOK
-#{encoding}
-#{stylesheet.css_head_xml}
-#{rdf.comment_xml}
-<document>
-WOK
- @@xml[:head] << '<head>'
- @@xml[:body] << '<body>'
- end
- def post
- @@xml[:head] << @@xml[:sc]
- @@xml[:head] << '</head>'
- @@xml[:body] << '</body>'
- @@xml[:close] = '</document>'
- end
- def publish
- content=[]
- content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
- content << @@xml[:owner_details] if @md.stmp =~/\w\w/
- content << @@xml[:tail] << @@xml[:close]
- content=content.flatten.compact
- Output.new(content,@md).xml
- @@xml={}
- end
- end
- class Output
- def initialize(data,md)
- @data,@md=data,md
- @file=SiSU_Env::FileOp.new(@md)
- end
- def xml
- SiSU_Env::FileOp.new(@md).mkdir
- filename_xml=@file.write_file.xml_sax
- @data.each do |str|
- str=str.gsub(/\A\s+\Z/m,'')
- filename_xml.puts str unless str.empty?
- end
- filename_xml.close
- end
- end
- class Tidy
- def initialize(md,file)
- @md,@file=md,file
- @prog=SiSU_Env::InfoProgram.new
- end
- def xml
- if @prog.tidy !=false #note values can be other than true
- if @md.opt.cmd =~/[VM]/
- unless @md.opt.cmd =~/q/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','Using XML Tidy','check document structure').colorize
- tell=SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','','')
- tell.grey_open
- end
- tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy=SiSU_Env::SystemCall.new(@file,tidyfile)
- tidy.well_formed?
- tell.p_off unless @md.opt.cmd =~/q/
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/xml_dom.rb b/lib/sisu/v3dv/xml_dom.rb
deleted file mode 100644
index 6b8c4e5c..00000000
--- a/lib/sisu/v3dv/xml_dom.rb
+++ /dev/null
@@ -1,539 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
- <http://www.jus.uio.no/sisu/gpl.fsf>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: xml (dom style) output processing
- ** Notes: tidy -xml dom.xml >> index.tidy
-=end
-module SiSU_XML_DOM
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'dal' # dal.rb
- require_relative 'shared_xml' # shared_xml.rb
- include SiSU_XML_Munge
- require_relative 'xml_format' # xml_format.rb
- include SiSU_XML_Format
- require_relative 'rexml' # rexml.rb
- include SiSU_Rexml
- require_relative 'shared_metadata' # shared_metadata.rb
- @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0
- @@tablefoot=''
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- begin
- @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array
- unless @opt.cmd =~/q/
- path=@env.path.output_tell
- loc=@env.url.output_tell
- tool=if @opt.cmd =~/[MV]/; "#{@env.program.web_browser} file://#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}\n\t#{@env.program.xml_viewer} file://#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}"
- elsif @opt.cmd =~/v/; "#{@env.program.web_browser} file://#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}"
- else "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}"
- end
- @opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'invert','XML DOM',tool).colorize
- : SiSU_Screen::Ansi.new(@opt.cmd,'XML DOM',tool).green_title_hi
- SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"file://#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}").flow if @opt.cmd =~/[MV]/
- end
- SiSU_XML_DOM::Source::Songsheet.new(@particulars).songsheet
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Songsheet
- def initialize(particulars)
- @env,@md,@dal_array,@particulars=particulars.env,particulars.md,particulars.dal_array,particulars
- @file=SiSU_Env::FileOp.new(@md)
- end
- def songsheet
- begin
- SiSU_XML_DOM::Source::Scroll.new(@particulars).songsheet
- SiSU_XML_DOM::Source::Tidy.new(@md,@file.place_file.xml_dom.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use
- SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_dom.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug
- rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error
- ensure
- end
- end
- end
- class Scroll
- require_relative 'shared_txt' # shared_txt.rb
- include SiSU_TextUtils
- require_relative 'shared_xhtml' # 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
- @vz=SiSU_Env::GetInit.instance.skin
- @trans=SiSU_XML_Munge::Trans.new(@md)
- @sys=SiSU_Env::SystemCall.new
- end
- def songsheet
- pre
- @data=markup(@dal_array)
- post
- publish
- end
- protected
- def xml_markup(dob='')
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><number>\1</number><note>\2</note></endnote> ').
- gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ').
- gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
- '<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
- end
- def xml_head
- metadata=SiSU_Metadata::Summary.new(@md).xml_dom.metadata
- @@xml[:head] << metadata
- end
- def xml_sc(md='')
- sc=if @md.sc_info
- <<WOK
- <source_control>
- <meta>filename:</meta>
- <sc class="sourcefile">
- #{@md.sc_filename}
- </sc><br />
- <meta>version number:</meta>
- <sc class="number">
- #{@md.sc_number}
- </sc><br />
- <meta>version date:</meta>
- <sc class="date">
- #{@md.sc_date}
- </sc><br />
- </source_control>
-WOK
- else ''
- end
- @@xml[:sc]=sc
- end
- def xml_element(dob,xml_el='',xml_content='',type='norm')
- n=n1=n2=n3=0
- if dob.is==:heading
- lv=dob.ln
- n=dob.ln - 1
- n1=dob.ln
- n2=dob.ln + 1
- n3=dob.ln + 2
- v=dob.ln - 3
- else lv=nil
- end
- tag=if defined? dob.name and dob.name=~/\S+/
- "\n#{Ax[:tab]*n3}<nametag>#{dob.name}</nametag>"
- else ''
- end
- xml_el ||=''
- @@xml[:body] <<<<WOK
-#{Ax[:tab]*n}#{xml_el}
-#{Ax[:tab]*n1}<heading>
-#{Ax[:tab]*n2}<object id="#{dob.ocn}">
-#{Ax[:tab]*n3}<ocn>#{dob.ocn}</ocn>#{tag}
-#{Ax[:tab]*n3}<text class="#{type}">#{dob.obj}</text>
-#{Ax[:tab]*n2}</object>
-#{Ax[:tab]*n1}</heading>#{xml_content}
-WOK
- if lv==4
- @copen[1]=true
- @copen[2]=@copen[3]=false
- elsif lv==5
- @copen[2]=true
- @copen[3]=false
- elsif lv==6
- @copen[3]=true
- end
- end
- def xml_structure(dob,type='norm')
- n=n1=n2=n3=0
- if dob.is==:heading
- lv=dob.ln
- n=dob.ln - 1
- n1=dob.ln
- n2=dob.ln + 1
- n3=dob.ln + 2
- v=dob.ln - 3
- else lv=nil
- end
- tag=if defined? dob.name and dob.name=~/\S+/
- "\n#{Ax[:tab]*n3}<nametag>#{dob.name}</nametag>"
- else ''
- end
- case lv
- when 1..3
- xml_el="<heading#{lv}>"
- 3.downto(lv) do |x|
- y=x - 1
- if @cont[1] \
- or @cont[2] \
- or @cont[3]
- @@xml[:body] << "#{Ax[:tab]*5}</content>"
- end
- @cont[1]=false if @cont[1]
- @cont[2]=false if @cont[2]
- @cont[3]=false if @cont[3]
- ####### attempt to close contents
- if @copen[3] # 6~
- [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- @copen[1]=@copen[2]=@copen[3]=false
- elsif @copen[2] # 5~
- [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- @copen[1]=@copen[2]=@copen[3]=false
- elsif @copen[1] # 4~
- [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- @copen[1]=@copen[2]=@copen[3]=false
- end
- @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]
- @level[x]=false
- end
- when 4..6
- 6.downto(lv) do |x|
- y=x - 1
- if @level[x]==true
- u=x - 3;
- @xml_contents_close[x]=''
- end
- end
- cv=lv - 3
- xml_el="<contents#{cv}>"
- xml_content="\n#{Ax[:tab]*5}<content>"
- case lv
- when 4
- @@xml[:body] << "#{Ax[:tab]*5}</content>" if @cont[1]
- if @copen[3]==true # 6~
- [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- elsif @copen[2]==true # 5~
- [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- elsif @copen[1]==true # 4~
- [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- end
- @cont[1]=true
- when 5
- if @cont[2] \
- or @cont[1]
- @@xml[:body] << "#{Ax[:tab]*5}</content>"
- end
- if @copen[3]==true #6~
- [3,2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- elsif @copen[2]==true #5~
- [2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- end
- @cont[2]=true
- when 6
- if @cont[3] \
- or @cont[2] \
- or @cont[1]
- @@xml[:body] << "#{Ax[:tab]*5}</content>"
- end
- if @copen[3] #6{
- [3].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }
- end
- @cont[3]=true
- end
- end
- xml_el ||=''
- xml_element(dob,xml_el,xml_content,type)
- if lv
- @level[lv]=true
- ((lv+1)..6).each { |x| @level[x]=false }
- end
- end
- def add_to_body(dob,type='norm')
- if defined? dob.obj # main text, contents, body KEEP
- if defined? dob.ocn \
- and dob.ocn
- @@xml[:body] << %{#{Ax[:tab]*6}<object id="#{dob.ocn}">}
- @@xml[:body] << %{#{Ax[:tab]*7}<ocn>#{dob.ocn}</ocn>} if defined? dob.ocn
- end
- #@@xml[:body] << %{#{Ax[:tab]*7}<text class="#{type}">#{dob.obj}</text>}
- #@@xml[:body] << %{#{Ax[:tab]*7}<text class="#{dob.is}">#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*7}<text class="#{type}">#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*8}#{dob.obj}#{Ax[:tab]*1}}
- @@xml[:body] << %{#{Ax[:tab]*7}</text>}
- @@xml[:body] << %{#{Ax[:tab]*6}</object>}
- end
- end
- def block_structure(dob)
- dob=@trans.markup_block(dob) #decide check & FIX
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,
- '<endnote><number>\1</number><note>\2</note></endnote> ').strip
- dob
- end
- def group_structure(dob)
- dob=@trans.markup_group(dob) #decide check & FIX
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/m,
- '<endnote><number>\1</number><note>\2</note></endnote> ').strip
- dob
- end
- def poem_structure(dob)
- dob=@trans.markup_group(dob) #decide check & FIX
- dob.obj=dob.obj.strip
- dob
- end
- def code_structure(dob)
- dob=@trans.markup_group(dob) #decide check & FIX
- dob.obj=dob.obj.gsub(/\s\s/,'&#160;&#160;').strip
- dob
- end
- def table_structure(dob) #tables
- table=SiSU_XHTML_Shared::TableXHTML.new(dob)
- end
- def markup(data)
- xml_sc(@md)
- @level,@cont,@copen,@xml_contents_close=[],[],[],[]
- @rcdc=false
- type='norm'
- (0..6).each { |x| @cont[x]=@level[x]=false }
- (4..6).each { |x| @xml_contents_close[x]='' }
- xml_head
- data.each do |dob|
- @trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8
- dob=@trans.markup(dob)
- if @rcdc==false \
- and (dob.is ==:meta \
- and dob.obj =~/Document Information/)
- @rcdc=true
- end
- if dob !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,dob.ocn) if defined? dob.ocn
- if not @rcdc
- if defined? dob.ocn \
- and dob.ocn.to_s =~/\d+/
- format_scroll=SiSU_XML_Format::FormatScroll.new(@md,dob) if dob.is==:para and dob.indent ##FIX
- x=SiSU_XML_Format::FormatSeg.new(@md,dob)
- if dob.is==:heading
- if dob.ln==1
- type="heading_section_#{dob.ln.to_s}"
- xml_markup(dob)
- xml_structure(dob,type)
- dob.obj=x.heading_body1
- elsif dob.ln==2
- type="heading_section_#{dob.ln.to_s}"
- xml_markup(dob)
- xml_structure(dob,type)
- dob.obj=x.heading_body2
- elsif dob.ln==3
- type="heading_section_#{dob.ln.to_s}"
- xml_markup(dob)
- xml_structure(dob,type)
- dob.obj=x.heading_body3
- elsif dob.ln==4
- type="heading_content_#{dob.lv}"
- xml_markup(dob)
- xml_structure(dob,type)
- dob.obj=x.heading_body4
- elsif dob.ln==5
- type="heading_content_#{dob.lv}"
- xml_markup(dob)
- xml_structure(dob,type)
- dob.obj=x.heading_body5
- elsif dob.ln==6
- type="heading_content_#{dob.lv}"
- xml_structure(dob,type)
- dob.obj=x.heading_body6
- end
- else
- ocn=dob.ocn
- if dob.is==:verse
- type='verse'
- poem_structure(dob) #redo
- elsif dob.is==:group
- type='group'
- group_structure(dob) #redo
- elsif dob.is==:block
- type='block'
- block_structure(dob) #redo
- elsif dob.is==:code
- type='code'
- code_structure(dob) #redo
- elsif dob.is==:table # tables come as single block #work area 2005w13
- type='table'
- table_structure(dob)
- elsif dob.is==:para \
- and dob.indent.to_s =~/[1-9]/ \
- and dob.bullet_
- type="indent_bullet#{dob.indent.to_s}"
- xml_markup(dob)
- elsif dob.is==:para \
- and dob.indent.to_s =~/[1-9]/ \
- and dob.indent == dob.hang
- type="indent#{dob.indent.to_s}"
- xml_markup(dob)
- elsif dob.is==:para \
- and dob.hang.to_s =~/[0-9]/ \
- and dob.indent != dob.hang
- type="hang#{dob.hang.to_s}_indent#{dob.indent.to_s}"
- xml_markup(dob)
- else
- type='norm'
- xml_markup(dob)
- end
- add_to_body(dob,type)
- end
- elsif dob.obj =~/(#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- elsif dob.obj =~/(MetaData)/
- txt_obj={ txt: '<br /><a name="metadata">MetaData</a>' }
- format_scroll=FormatScroll.new(@md,txt_obj)
- dob.obj=format_scroll.bold_para
- elsif dob.obj =~/(Owner Details)/
- dob.obj=''
- end
- if dob.obj =~/<a name="n\d+">/ \
- and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/ # -endnote
- dob.obj=''
- end
- if dob.obj =~/.*<:#>.*$/
- dob.obj=if dob.obj =~ /#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/
- txt_obj={ txt: dob.obj }
- format_text=FormatTextObject.new(@md,txt_obj)
- format_text.scr_inden_ocn_e_no_paranum
- end
- end
- if dob.obj !~/#{@vz.margin_txt_0}|#{@vz.margin_txt_1}|#{@vz.margin_txt_2}/
- end
- else #
- end
- dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
- end
- end
- @content_flag=true
- 6.downto(4) do |x|
- y=x - 1; v=x - 3
- if @level[x]==true #2004w36 bug fix? watch/test previous logic broke on free.for.all @coontent_flag introduced
- if @content_flag==true
- @@xml[:body] << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>"
- @content_flag=false
- else
- @@xml[:body] << "\n#{Ax[:tab]*y}</contents#{v}>"
- end
- end
- end
- 3.downto(1) do |x|
- y=x - 1
- @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true
- end
- end
- def pre
- rdf=SiSU_XML_Tags::RDF.new(@md)
- dir=SiSU_Env::InfoEnv.new
- stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xml_dom').stylesheet
- encoding=if @sys.locale =~/utf-?8/i; '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
- else '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
- end
- @@xml[:open] =<<WOK
-#{encoding}
-#{stylesheet.css_head_xml}
-#{rdf.comment_xml}
-<document>
-WOK
- @@xml[:head] << '<head>'
- @@xml[:body] << '<body>'
- end
- def post
- @@xml[:head] << @@xml[:sc]
- @@xml[:head] << '</head>'
- @@xml[:body] << '</body>'
- @@xml[:close] = '</document>'
- end
- def publish
- content=[]
- content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
- content << @@xml[:owner_details] if @md.stmp =~/\w\w/
- content << @@xml[:tail] << @@xml[:close]
- content=content.flatten.compact
- Output.new(content,@md).xml
- @@xml[:head],@@xml[:body],@@xml[:tail]=[],[],[] # check whether should be nil
- end
- end
- class Output
- include SiSU_Param
- def initialize(data,md)
- @data,@md=data,md
- @file=SiSU_Env::FileOp.new(@md)
- end
- def xml
- SiSU_Env::FileOp.new(@md).mkdir
- filename_xml=@file.write_file.xml_dom
- @data.each do |str|
- str=str.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'')
- filename_xml.puts str unless str.empty?
- end
- filename_xml.close
- end
- end
- class Tidy
- def initialize(md,file)
- @md,@file=md,file
- @prog=SiSU_Env::InfoProgram.new
- end
- def xml
- if @prog.tidy !=false
- if @md.opt.cmd =~/[VM]/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','Using XML Tidy','check document structure').colorize unless @md.opt.cmd =~/q/
- tell=SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','','')
- tell.grey_open unless @md.opt.cmd =~/q/
- tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
- tidy=SiSU_Env::SystemCall.new(@file,tidyfile)
- tidy.well_formed?
- tell.p_off unless @md.opt.cmd =~/q/
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/xml_fictionbook.rb b/lib/sisu/v3dv/xml_fictionbook.rb
deleted file mode 100644
index 8fe1e7c1..00000000
--- a/lib/sisu/v3dv/xml_fictionbook.rb
+++ /dev/null
@@ -1,300 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: extract and print an XML rendition of document structure to screen
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: SiSU information Structuring Universe, processing
-
-=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
- pwd=Dir.pwd
- 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::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- 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)
- wrap=util.line_wrap
- end
- def put(line)
- @file_fictionbook.puts line
- puts line if @md.opt.cmd =~/V/
- 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.cmd =~/V/; "#{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.cmd =~/V/
- end
- c+=1
- end
- end
- structure_build(@ds)
- @ds
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/xml_format.rb b/lib/sisu/v3dv/xml_format.rb
deleted file mode 100644
index b40efc18..00000000
--- a/lib/sisu/v3dv/xml_format.rb
+++ /dev/null
@@ -1,1443 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: xml template
- ** Notes: tidy -xml index.xml >> index.tidy
-
-=end
-module SiSU_XML_Format
- require_relative 'param' # param.rb
- include SiSU_Param
- include SiSU_Viz
- class ParagraphNumber
- def initialize(md,paranum)
- @md=md
- @paranum=(paranum ? (/(\d+)/m.match(paranum)[1]) : nil)
- end
- def display
- p_num_display=if @paranum
- @paranum.gsub(/(\d+)/,
- '<font size="1" color="#777777">' +
- '&nbsp;&nbsp;\1</font>')
- else ''
- end
- p_num_display
- end
- def name
- p_num_name=@paranum.gsub(/(\d+)/,'<a name="\1"></a>')
- p_num_name
- end
- def goto
- p_num_goto=@paranum.gsub(/(\d+)/,'<a href="#\1">')
- p_num_goto
- end
- end
- class HeadInformation
- def initialize #dc rdf
- @full_title=@subtitle=@author=@subject=@description=@publisher=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@copyright=@owner=@keywords=''
- @md=@@md
- # DublinCore 1 - title
- @rdfurl=%{ rdf:about="http://www.jus.uio.no/lm/toc"\n}
- if defined? @md.title.full \
- and @md.title.full # DublinCore 1 - title
- @rdf_title=%{ dc.title="#{seg_name}#{@md.title.full}"\n}
- @full_title=%{<meta name="dc.title" content="#{seg_name}#{@md.title.full}" />\n}
- end
- if defined? @md.creator.author \
- and @md.creator.author # DublinCore 2 - creator/author (author)
- @rdf_author=%{ dc.author="#{@md.creator.author}"\n}
- @author=%{<meta name="dc.author" content="#{@md.creator.author}" />\n}
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/ # DublinCore 3 - subject (us library of congress, eric or udc, or schema???)
- @rdf_subject=%{ dc.subject="#{@md.classify.subject}"\n}
- @subject=%{<meta name="dc.subject" content="#{@md.classify.subject}" />\n}
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/ # DublinCore 4 - description
- @rdf_description=%{ dc.description="#{@md.notes.description}"\n}
- @description=%{<meta name="dc.description" content="#{@md.notes.description}" />\n}
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/ # DublinCore 5 - publisher (current copy published by)
- @rdf_publisher=%{ dc.publisher="#{@md.publisher}"\n}
- @publisher=%{<meta name="dc.publisher" content="#{@md.publisher}" />\n}
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/ # DublinCore 6 - contributor
- @rdf_contributor=%{ dc.contributor="#{@md.creator.contributor}"\n}
- @contributor=%{<meta name="dc.contributor" content="#{@md.creator.contributor}" />\n}
- end
- if defined? @md.date.published \
- and @md.date.published # DublinCore 7 - date year-mm-dd
- @rdf_date=%{ dc.date="#{@md.date.published}"\n}
- @date=%{<meta name="dc.date" content="#{@md.date.published}" #{@md.date_scheme} />\n}
- end
- if defined? @md.date.created \
- and @md.date.created # DublinCore 7 - date.created year-mm-dd
- @rdf_date_created=%{ dc.date.created="#{@md.date.created}"\n}
- @date_created=%{<meta name="dc.date.created" content="#{@md.date.created}" #{@md.date_created_scheme} />\n}
- end
- if defined? @md.date.issued \
- and @md.date.issued # DublinCore 7 - date.issued year-mm-dd
- @rdf_date_issued=%{ dc.date.issued="#{@md.date.issued}"\n}
- @date_issued=%{<meta name="dc.date.issued" content="#{@md.date.issued}" #{@md.date_issued_scheme} />\n}
- end
- if defined? @md.date.available \
- and @md.date.available # DublinCore 7 - date.available year-mm-dd
- @rdf_date_available=%{ dc.date.available="#{@md.date.available}"\n}
- @date_available=%{<meta name="dc.date.available" content="#{@md.date.available}" #{@md.date_available_scheme} />\n}
- end
- if defined? @md.date.valid \
- and @md.date.valid # DublinCore 7 - date.valid year-mm-dd
- @rdf_date_valid=%{ dc.date.valid="#{@md.date.valid}"\n}
- @date_valid=%{<meta name="dc.date.valid" content="#{@md.date.valid}" #{@md.date_valid_scheme} />\n}
- end
- if defined? @md.date.modified \
- and @md.date.modified # DublinCore 7 - date.modified year-mm-dd
- @rdf_date_modified=%{ dc.date.modified="#{@md.date.modified}"\n}
- @date_modified=%{<meta name="dc.date.modified" content="#{@md.date.modified}" #{@md.date_modified_scheme} />\n}
- end
- if defined? @md.type \
- and @md.type # DublinCore 8 - type (genre eg. report, convention etc)
- @rdf_type=%{ dc.type="#{@md.type}"\n}
- @type=%{<meta name="dc.type" content="#{@md.type}" />\n}
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/ # DublinCore 9 - format (use your mime type)
- @rdf_format=%{ dc.format="#{@md.classify.format}"\n}
- @format=%{<meta name="dc.format" content="#{@md.classify.format}" />\n}
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/ # DublinCore 10 - identifier (your identifier, could use urn which is free)
- @rdf_identifier=%{ dc.identifier="#{@md.classify.identifier}"\n}
- @identifier=%{<meta name="dc.identifier" content="#{@md.identifier}" />\n}
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/ # DublinCore 11 - source (document source)
- @rdf_source=%{ dc.source="#{@md.original.source}"\n}
- @source=%{<meta name="dc.source" content="#{@md.source}" />\n}
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/ # DublinCore 12 - language (English)
- @rdf_language=%{ dc.language="#{@md.original.title}"\n}
- @language=%{<meta name="dc.language" content="#{@md.language[:name]}" />\n}
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/ # DublinCore 13 - relation
- @rdf_relation=%{ dc.relation="#{@md.classify.relation}"\n}
- @relation=%{<meta name="dc.relation" content="#{@md.classify.relation}" />\n}
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/ # DublinCore 14 - coverage
- @rdf_coverage=%{ dc.coverage="#{@md.classify.coverage}"\n}
- @coverage=%{<meta name="dc.coverage" content="#{@md.classify.coverage}" />\n}
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/ # DublinCore 15 - rights
- @rdf_rights=%{ dc.rights="#{@md.rights.all}"\n}
- @rights=%{<meta name="dc.rights" content="#{@md.rights.all}" />\n}
- end
- @copyright=%{<meta name="copyright" content="#{@md.rights.copyright.all}" />\n} if @md.rights.copyright.all # possibly redundant see dc.rights
- @owner=%{<meta name="owner" content="#{@md.owner}" />\n} if @md.owner
- @keywords=%{<meta name="keywords" content="#{@md.keywords}" />\n} if @md.keywords
- @vz=SiSU_Env::GetInit.instance.skin #margin,paragraph,table,banner,url,png,txt,color,font,nav_txt,nav_png,credits,js,php
- @index='index'
- end
- def toc_head_escript #embedded script in this case PHP
- end
- def table_close
- '</font> </td></tr></table>'
- end
- def buttons_home
- %{\n#{@banner.home_and_index_buttons}\n}
- end
- def copyat
- %{copy @ <a href="#{@url.home}" #{@js.home}>#{@txt.home}</a>}
- end
- def toc_head
- <<WOK
-<html>
-<head>
-<title>#{@md.html_title}</title>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <rdf:Description
-#{@rdfurl}
-#{@rdf_title}
-#{@rdf_subtitle}
-#{@rdf_author}
-#{@rdf_subject}
-#{@rdf_description}
-#{@rdf_publisher}
-#{@rdf_contributor}
-#{@rdf_date}
-#{@rdf_date_created}
-#{@rdf_date_issued}
-#{@rdf_date_available}
-#{@rdf_date_valid}
-#{@rdf_date_modified}
-#{@rdf_type}
-#{@rdf_format}
-#{@rdf_identifier}
-#{@rdf_source}
-#{@rdf_language}
-#{@rdf_relation}
-#{@rdf_coverage}
-#{@rdf_rights}
- />
-</rdf:RDF>
-#{@full_title}
-#{@author}
-#{@subject}
-#{@description}
-#{@publisher}
-#{@contributor}
-#{@date}
-#{@date_created}
-#{@date_issued}
-#{@date_available}
-#{@date_valid}
-#{@date_modified}
-#{@type}
-#{@format}
-#{@identifier}
-#{@source}
-#{@language}
-#{@relation}
-#{@coverage}
-#{@rights}
-#{@copyright}
-#{@owner}
-#{@png.ico}
-#{@txt.generator}
-#{@js.head}
-\n</head>
-#{@color.body}
-#{@font.css_table_file}
-<a name="top"></a>
-<a name="up"></a>
-<a name="start"></a>
-#{@js.top}
-WOK
- end
- end
- class FormatTextObject
- attr_accessor :md,:txt,:format,:paranum,:p_num,:para_id,:headname,:font
- def initialize(md,dob)
- @md,@dob=md,dob
- if @dob[:ocn]=~/\d+/
- @paranum=/(\d+)/m.match(@dob[:ocn])[1]
- @headname=''
- @headname=%{<a name="h#{dob.name}"></a>} if defined? dob.name
- @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,dob.ocn)
- end
- rgx=/^[1-6-]~{1,2}/ #watch
- @lnk_url=@lnk_url.gsub(rgx,'') if @lnk_url =~rgx
- rgx=/~\{\d+\s+(.+?)\}~/
- @lnk_url=@lnk_url.gsub(rgx,'\1') if @lnk_url =~rgx
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def scr_endnote_body
- "<endnote>#{@txt}</endnote> "
- end
- end
- class FormatScroll < FormatTextObject
- def initialize(md,dob)
- super(md,dob)
- end
- def heading_body
- %{<p class="norm">#{@p_num.name}#{@headname}#{@dob.obj} </p>} +
- %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
- end
- def heading_body1
- %{<h1 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h1>} +
- %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
- end
- def heading_body2
- %{<h2 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h2>} +
- %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
- end
- def heading_body3
- %{<h3 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h3>} +
- %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
- end
- def heading_body4
- %{<h4 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h4>} +
- %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
- end
- def heading_body5
- %{<h5 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h5>} +
- %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
- end
- def heading_body6
- %{<h6 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h6>} +
- %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
- end
- end
- class ParagraphNumber
- def initialize(md,ocn)
- @md,@ocn=md,ocn.to_s
- @ocn ||=''
- end
- def ocn_display
- @make=SiSU_Env::ProcessingSettings.new(@md)
- if @make.build.ocn?
- ocn_class='ocn'
- if @ocn.to_i==0
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}">&nbsp;</a></label>})
- else
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}">\\1</a></label>})
- end
- else
- ocn_class='ocn_off'
- @ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}">&nbsp;</label>})
- end
- end
- def name
- %{<a name="#{@ocn}"></a>}
- end
- def id #w3c? "tidy" complains about numbers as identifiers ! annoying
- %{id="o#{@ocn}"}
- end
- def goto
- %{<a href="##{@ocn}">}
- end
- end
- class HeadInformation
- include SiSU_Viz
- attr_reader :md,:sfx,:pdf,:rdf,:vz
- def initialize(md)
- @md=md
- @rdf=SiSU_XML_Tags::RDF.new(md)
- # DublinCore 1 - title
- @vz=SiSU_Env::GetInit.instance.skin
- @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet
- @seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || [])
- @seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || [])
- @index='index'
- @metalink='#metadata'
- @tocband_scroll,@tocband_segtoc=nil,nil
- end
- def doc_type
- %{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">\n}
- end
- def table_close
- %{ </font>
-#{@vz.table_close}}
- end
- def buttons_home
- %{<!- home and index buttons -!>
- #{@vz.banner_home_and_index_buttons}
-<!- home and index buttons -!>}
- end
- def copyat
- %{#{@vz.paragraph_font_tiny}copy @
- <a href="#{@vz.url_home}" #{@vz.js_home}>
- #{@vz.txt_home}
- </a></font>}
- end
- def html_close #moved
- %{</body>
-</html>}
- end
- end
- class XML
- end
- class HeadToc < HeadInformation
- def initialize(md)
- super(md)
- @md=md
- @tocband_scroll,@tocband_segtoc=make_scroll,make_seg
- end
- def scroll_head_navigation_band
- pdf=if @md.programs[:pdf]
- <<WOK
-<td align="center" width="60%">
- #{make_seg_scroll_pdf}
-</td>
-WOK
- else ''
- end
- %{<table summary="table of contents scroll navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>#{pdf}
-<td width="20%">
- &nbsp;
-#{@vz.table_close}
-<p />}
- end
- def concordance_navigation_band(type='')
- if type=~/pdf/
- @tocband_concordance=make_concordance
- end
- %{<table summary="concordance navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>
-<td width="60%" align="center">
- #{@tocband_concordance}
-</td>
-<td width="20%" align="right">
- &nbsp;<a href="index.html" target="_top" alt="-&gt;">
- #{@vz.png_nav_toc}
- </a>&nbsp;
-#{@vz.table_close}
-<p />}
- end
- def seg_head_navigation_band(type='')
- if type=~/pdf/
- @tocband_segtoc=make_scroll_seg_pdf
- end
- firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" alt="-&gt;">
- #{@vz.png_nav_nxt}
- </a>} if @md.firstseg =~/\S+/
- %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>
-<td width="60%" align="center">
- #{@tocband_segtoc}
-</td>
-<td width="20%" align="right">
- &nbsp;#{firstseg}&nbsp;
-#{@vz.table_close}
-<p />}
- end
- def seg_head_navigation_band_bottom(type='')
- if type=~/pdf/
- @tocband_segtoc=make_scroll_seg_pdf
- end
- firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" alt="-&gt;">
- #{@vz.png_nav_nxt}
- </a>} if @md.firstseg =~/\S+/
- %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- &nbsp;
-</td>
-<td width="60%" align="center">
- #{@tocband_segtoc}
-</td>
-<td width="20%" align="right">
- &nbsp;#{firstseg}&nbsp;
-#{@vz.table_close}
-<p />}
- end
- def make_seg_scroll_pdf
- wgt=Widget.new(@md)
- scroll=%{<td align="center" bgcolor=#{@vz.color_band2}>
- #{@vz.nav_txt_doc_link}
-</td>
-}
- %{<table summary="toc segment and scroll with pdf" border="0" cellpadding="3" cellspacing="0">
-<tr>
- #{scroll}
- #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.pdf}#{wgt.odf}
- #{wgt.concordance(@vz.nav_txt_concordance)}
- #{wgt.manifest}
- #{wgt.search}
- #{wgt.home}
-</tr></table>}
- end
- def make_scroll_seg_pdf
- manifest=scroll=seg=''
- wgt=Widget.new(@md)
- seg=%{<td align="center" bgcolor=#{@vz.color_band2}>
- #{@vz.nav_txt_toc_link}
-</td>
-}
- %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0">
-<tr>
- #{seg}
- #{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf}
-<td align="center" bgcolor=#{@vz.color_band2}>
- #{wgt.concordance(@vz.nav_txt_concordance)}
- #{wgt.manifest}
- #{wgt.search}
- #{wgt.home}
-</tr></table>}
- end
- def make_concordance
- manifest=scroll=seg=''
- wgt=Widget.new(@md)
- %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0">
-<tr>
- #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf}
-<td align="center" bgcolor=#{@vz.color_band2}>
- #{wgt.concordance(@vz.nav_txt_concordance)}
- #{wgt.manifest}
- #{wgt.search}
- #{wgt.home}
-</tr></table>}
- end
- def head
- %{#{doc_type}
-<head>
- <title>
- #{@md.html_title}
- </title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{@rdf.rdftoc}
-#{@rdf.metatag_html}
-#{@stylesheet.css_head}
-</head>
-#{@vz.color_body}
-<a name="top" id="top"></a>
-<a name="up" id="up"></a>
-<a name="start" id="start"></a>
-#{@vz.js_top}}
- end
- def links_guide_open(type='horizontal')
- if type=='vertical'; links_guide_vertical_open
- else links_guide_horizontal_open
- end
- end
- def links_guide_close #(type='horizontal')
- insert=''
- insert=if @md.sfx_src =~/s?/
- link='http://sisudoc.org' #get from defaults
- url='sisudoc.org'
- insert= %{
- <li class="ref">
- <a href="#{link}" target="_top">
- #{url}
- </a>
- </li>
- </ul>
-</div>
-}
- end
- %{ #{insert}
-<!- quick ref -!>}
- end
- def prefix_a
- end
- def rights
- rights=@md.rights.copyright.all.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>&copy;</sup>&nbsp;')
- %{<p class="small_left">Rights: #{rights}</p>
-<p />}
- end
- def prefix_b
- %{<p class="small_left">Prefix: #{@md.prefix_b}<p />}
- end
- def scroll_head_title_banner_open
- %{<center>
-#{@md.icon}
-</center>
-#{@vz.banner_instrument_cover_band_scr}}
- end
- def seg_head_title_banner_open
- %{<center>
- #{@md.icon}
-</center>
-#{@vz.banner_instrument_cover_band_seg}}
- end
- def make_scroll
- concord=concordance_link(@vz.nav_txt_concordance)
- %{<table summary="toc scroll" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="center" bgcolor="white" border="0">
- #{@vz.nav_txt_doc_link}
-</td>
-<td align="center" bgcolor="white">
- #{concord}
-#{@vz.table_close}}
- end
- def make_seg
- concord=concordance_link(@vz.nav_txt_concordance)
- %{<table summary="toc segment" border="0" cellpadding="3" cellspacing="0">
-<tr><td align="center" bgcolor="white">
- #{@vz.nav_txt_toc_link}
-</td>
-<td align="center" bgcolor="white">
- <font size=2>
- #{concord}
-#{@vz.table_close}}
- end
- def manifest #check structure
- manifest=manifest_link(@vz.nav_txt_manifest)
- %{#{@vz.margin_txt_3}
- #{@vz.paragraph_font_small}
- #{manifest}
- </font>
-#{@vz.table_close}}
- end
- def concordance #check structure
- concord=concordance_link(@vz.nav_txt_concordance)
- %{#{@vz.margin_txt_3}
- #{@vz.paragraph_font_small}
- #{concord}
- </font>
-#{@vz.table_close}}
- end
- def metadata
- %{#{@vz.margin_css}
- <h4 class="toc">
- <a href="#{@metalink}" #{@vz.js_metalink}>
- <i>MetaData</i>
- </a>
- </h4>
-#{@vz.table_close}}
- end
- def seg_tail
- %{
-<div class="main_column">
-<p>&nbsp;<p>
-<table summary="toc segment tail" bgcolor=#{@vz.color_band1}>
-<tr><td width="20%">
- #{@vz.banner_band}
-</td>
-<td width="60%">
- <center>
- #{@tocband_segtoc}
- </center>
-</td></tr>
-</table>
-<p>&nbsp;</p>
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-</div>
-</div>
-</div>
-}
- end
- def scroll_tail #debug
- nav=scroll_head_navigation_band
- %{
-<div class="main_column">
-#{nav}
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-</div>
-</div>
-</div>
-}
- end
- def seg_navigation_tail #this is a bug area, look up and "tidy"
- #nav=scroll_head_navigation_band
- %{
-<div class="main_column">
-<p>&nbsp;</p>
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits"></a>
-</div>
-</div>
-</div>
-}
- end
- end
- class HeadSeg < HeadInformation
- def initialize(md) #(md='')
- super(md)
- end
- def head
- %{#{doc_type}
-<head>
- <title>
- #{@seg_name_html[@seg_name_html_tracker]} -
- #{@md.html_title}
- </title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{@rdf.rdfseg}
-#{@rdf.metatag_html}
-#{@vz.font_css_table_file}
-</head>
-#{@vz.color_body}
-<a name="top" id="top"></a>
-<a name="up" id="up"></a>
-<a name="start" id="start"></a>
-#{@vz.js_top}}
- end
- def title_banner(title,subtitle,creator)
- end
- def dot_control_pre_next
- %{<table summary="segment hidden control pre and next" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center">
-<tr><td align="left">
- <a href="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_prev}>
- #{@vz.png_nav_dot_pre}
- </a>
-</td>
-<td align="center">
- <a href="#{@index}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_toc}>
- #{@vz.png_nav_dot_toc}
- </a>
-</td>
-<td align="right">
- <a href="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_next}>
- #{@vz.png_nav_dot_nxt}
- </a>
-#{@vz.table_close}}
- end
- def toc_nav(f_pre=false,f_nxt=false,use=1)
- pre=nxt=''
- toc=%{<td align="center" bgcolor=#{@vz.color_band1}>
- <a href="#{@index}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_toc}>
- #{@vz.png_nav_toc}
- </a>
-</td>}
- pre=%{<td align="center" bgcolor=#{@vz.color_band1}>
- <a href="#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_prev}>
- #{@vz.png_nav_pre}
- </a>
-</td>} if f_pre==true
- nxt=%{<td align="center" bgcolor=#{@vz.color_band1}>
- <a href="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:xhtml]}" target="_top" #{@vz.js_next}>
- #{@vz.png_nav_nxt}
- </a>
-</td>} if f_nxt==true
- %{<table summary="segment navigation pre/next" border="0" cellpadding="3" cellspacing="0">
-<tr>
-#{pre}
-#{toc}
-#{nxt}
-<td>
-#{@vz.table_close}}
- end
- def toc_next2
- pre,nxt=false,true
- toc_nav(false,true).dup
- end
- def toc_pre_next2
- toc_nav(true,true).dup
- end
- def toc_pre2
- toc_nav(true,false,2).dup
- end
- def doc_types #used in seg_nav_band ###
- scroll=seg=''
- wgt=Widget.new(@md)
- #dir=SiSU_Env::InfoEnv.new(@md.fns)
- x=if @md.concord_make
- %{
-<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0">
-<tr>
- #{wgt.seg(@vz.nav_txt_toc_link)}
- #{wgt.scroll(@vz.nav_txt_doc_link)}
- #{wgt.pdf}#{wgt.odf}
-<td align="center" bgcolor=#{@vz.color_band2}>
- #{wgt.concordance(@vz.nav_txt_concordance)}
- #{wgt.manifest}
- #{wgt.search}
- #{wgt.home}
-</tr></table>}
- else
- %{
-<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0">
-<tr>
- #{wgt.seg(@vz.nav_txt_toc_link)}
- #{wgt.scroll(@vz.nav_txt_doc_link)}
- #{wgt.pdf}#{wgt.odf}
-<td align="center" bgcolor=#{@vz.color_band2}>
- #{wgt.manifest}
- #{wgt.search}
- #{wgt.home}
-</tr></table>}
- end
- end
- def navigation_table
- %{<table summary="navigation segment table" width=#{@vz.table_width_1} border="0" bgcolor="white" cellpadding="0">
-<tr><th width="#{@@indent['leve_1']}" align="right">
-</td>
-<td valign="top">
- <font size=2>}
- end
- def navigation_table1
- %{<table summary="navigation segment table1" width=#{@vz.table_width_1} border="0" cellpadding=#{@vz.table_cellpad_box} bgcolor=#{@vz.color_table1} align="left">
-<tr><td valign="top">
- <font size="2">}
- end
- def navigation_table2
- %{<table summary="navigation segment table2" width=#{@vz.table_width_2} border="0" cellpadding=#{@vz.table_cellpad_box} bgcolor=#{@vz.color_table2} align="left">
-<tr><td valign="top">
- <font size="2">}
- end
- def header_advert_local_1
- dir=SiSU_Env::InfoEnv.new(@fns)
- %{ <center>
-<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
-<tr><td align="center" bgcolor="white">
- <a href="http://#{@md.ad_url}#{Sfx[:xhtml]}" target="_top">
- <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}">
- </a>
- <p />
-#{@vz.table_close}
-</center>}
- end
- def header_advert_local_2
- dir=SiSU_Env::InfoEnv.new(@fns)
- %{ <center>
-<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
-<tr><td align="center" bgcolor="white">
- <a href="#{@md.ad_url}#{Sfx[:xhtml]}" target="_top">
- <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}">
- </a>
- <p />
-#{@vz.table_close}
-</center>}
- end
- def header_advert_external
- dir=SiSU_Env::InfoEnv.new(@fns)
- %{ <center>
-<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center">
-<tr><td align="center" bgcolor="white">
- <a href="#{@md.ad_url}#{Sfx[:xhtml]}" target="external">
- <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}">
- </a>
- <p />
-#{@vz.table_close}
-</center>}
- end
- def credit
- %{
-<div class="main_column">
-#{@vz.credits_splash}
-#{@vz.credits_sisu}
-<a name="bottom" id="bottom"></a>
-<a name="down" id="down"></a>
-<a name="end" id="end"></a>
-<a name="finish" id="finish"></a>
-<a name="stop" id="stop"></a>
-<a name="credits" id="credits"></a>
-</div></div>
-}
- end
- def navigation_band(segtocband,seg_table_top_control) #change name to navigaion_band_banner
- %{<table summary="segment navigation band with banner" bgcolor=#{@vz.color_band1} width="100%"><tr>
-<td width="20%" align="left">
-#{@vz.banner_band}
-</td>
-<td width="60%" align="center">
- #{doc_types}
-</td>
-<td width="20%" align="right">
- #{segtocband}
-</td></tr>
-</table>
-#{seg_table_top_control}}
- end
- def navigation_band_bottom(segtocband,seg_table_top_control) #change name to navigaion_band_bannerless
- %{
-<div class="main_column">
- <table summary="segment navigation band" bgcolor=#{@vz.color_band1} width="100%"><tr>
- <td width="70%" align="center">
- #{doc_types}
- </td>
- <td width="30%" align="right">
- #{segtocband}
- </td></tr>
- </table>
- #{seg_table_top_control}
-</div>
-}
- end
- def endnote_mark
-%{
-<p class="center" id="endnotes">
- <hr class="endnote" />
-</p>}
- end
- def endnote_section_open
-%{
-<div class="endnote">
-}
- end
- def endnote_section_close
-%{
-</div>
-} #revisit
- end
- def head
- %{#{doc_type}
-<head>
- <title>
- #{@seg_name_html[@seg_name_html_tracker]} -
- #{@md.html_title}
- </title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-#{@rdf.rdfseg}
-#{@rdf.metatag_html}
-#{@stylesheet.css_head}
-</head>
-#{@vz.color_body}
-<a name="top" id="top"></a>
-<a name="up" id="up"></a>
-<a name="start" id="start"></a>
-#{@vz.js_top}}
- end
- def title_banner(title,subtitle,creator)
- %{
-<div class="summary">
- <p class="tiny">
- #{title}
- </p>
- <p class="tiny">
- #{subtitle}
- </p>
- <p class="tiny">
- #{creator}
- </p>
- <p class="tiny">
- copy @
- <a href="#{@vz.url_home}">
- #{@vz.txt_home}
- </a>
- </p>
-</div>
-}
- end
- end
- class HeadScroll < HeadToc
- def initialize(md) #(md='')
- super(md)
- end
- def toc_owner_details
- %{#{@vz.margin_txt_3}
-#{@vz.paragraph_font_small}
- <a href="#owner.details">
- Owner Details
- <font size="1" color="#777777">
- &nbsp;&nbsp;&nbsp;
- </font>
- </a>
- </font>
-#{@vz.table_close}}
- end
- def table
- %{<table summary="scroll table" width=#{@vz.table_width_1} border="0" bgcolor="white" cellpadding="0">
-<tr><th width=#{@@indent['level_1']} align="right">
-</th>
-<td valign="top">
-#{@vz.paragraph_txt}}
- end
- def table1
- %{<table summary="scroll table1" width=#{@vz.table_width_1} border="0" cellpadding=#{@vz.table_cellpad_box} #{@vz.color_color_table1} align="justify">
-<tr><td valign="top">
-#{@vz.paragraph_txt}}
- end
- def table2
- %{<table summary="scroll table2" width=#{@vz.table_width_1} border="0" cellpadding=#{@vz.table_cellpad_box} #{@vz.color_color_table2} align="justify">
-<tr><td valign="top">
-#{@vz.paragraph_txt}}
- end
- end
- class FormatTextObject
- @vz=SiSU_Env::GetInit.instance.skin
- attr_accessor :md,:dob,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
- def initialize(md,t_o)
- @md,@t_o=md,t_o
- if t_o.class==Hash
- @txt =t_o[:txt] || nil
- @ocn =t_o[:ocn] || nil
- @ocn_display =t_o[:ocn_display] || nil
- @headname =t_o[:headname] || nil
- @trailer =t_o[:trailer] || nil
- @endnote_part_a =t_o[:endnote_part_a] || nil
- @endnote_part_b =t_o[:endnote_part_b] || nil
- @lnk_url =t_o[:lnk_url] || nil
- @lnk_txt =t_o[:lnk_txt] || nil
- @format =t_o[:format] || nil
- @target =t_o[:target] || nil #occasionally passed but not used
- elsif t_o.class.inspect =~/Object/
- @txt=if defined? t_o.obj; t_o.obj
- else nil
- end
- @ocn=if defined? t_o.ocn; t_o.ocn.to_s
- else nil
- end
- @headname=if t_o.is==:heading and defined? t_o.name; t_o.name
- else nil
- end
- else
- if @md.opt.cmd =~/M/
- p __FILE__ +':'+ __LINE__.to_s
- p t_o.class
- p caller
- end
- end
- if defined? @t_o.ocn
- ocn=((@t_o.ocn.to_s =~/\d+/) ? @t_o.ocn : nil)
- @p_num=ParagraphNumber.new(@md,ocn)
- end
- if @format and not @format.empty?
- if @format=~/^\d:(\S+)/ #need more reliable marker #if @format =~ /#{Rx[:lv]}/
- headname=$1 #format[/\d~(\S+)/m,1]
- @headname=if headname =~/^[a-zA-Z]/; %{<a name="#{headname}" id="#{headname}"></a>} #consider: h_#{headname}
- else %{<a name="h#{headname}" id="h#{headname}"></a>}
- end
- end
- end
- @dob=t_o if defined? t_o.is
- @vz=SiSU_Env::GetInit.instance.skin
- end
- def endnote_body
- %{
-<p class="endnote">
- #{@txt}
-</p>
-}
- end
- def endnote_body_indent
- %{
- <p class="endnote_indent">
- #{@txt}
- </p>
-}
- end
- def no_paranum
- %{
-<div class="substance">
- <label class="ocn">&nbsp;</label>
- <p class="norm">
- #{@txt}
- </p>
-</div>
-}
- end
- def para_form_css(tag,attrib) # regular paragraphs shaped here
- ul=ulc=''
- ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- #{ul}<#{tag} class="#{attrib}" #{@p_num.id}>
- #{@txt}
- </#{tag}>#{ulc}
-</div>
-}
- end
- def para
- para_form_css('p','norm')
- end
- def code
- para_form_css('p','code')
- end
- def center
- para_form_css('p','center')
- end
- def bold
- para_form_css('p','bold')
- end
- def bullet
- para_form_css('li','bullet')
- end
- def format(tag,attrib)
- para_form_css(tag,attrib)
- end
- def heading_normal(tag,attrib)
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name}
- #{@headname}#{@txt}
- </#{tag}>
-</div>
-}
- end
- def heading_body
- heading_normal('p','norm')
- end
- def heading_body1
- heading_normal('h1','norm')
- end
- def heading_body2
- heading_normal('h2','norm')
- end
- def heading_body3
- heading_normal('h3','norm')
- end
- def heading_body4
- heading_normal('h4','norm')
- end
- def heading_body5
- heading_normal('h5','norm')
- end
- def heading_body6
- heading_normal('h6','norm')
- end
- def title_header(tag,attrib)
- %{
-<div class="content">
-<#{tag} class="#{attrib}">
- #{@txt}
- </#{tag}>
-</div>
-}
- end
- def title_header1
- title_header('h1','tiny')
- end
- def title_header2
- title_header('h2','tiny')
- end
- def title_header3
- title_header('h3','tiny')
- end
- def title_header4
- ''
- end
- def title_header4_old
- %{
-<div class="substance">
- <label class="ocn">&nbsp;</label>
- <h4 class="banner">
- #{@txt}
- </h4>
-</div>
-}
- end
- def dl #check :trailer
- "<dl><b>#{@txt}</b> #{@trailer}</dl>"
- end
- def table_css_end #<!TZ!>
- '</table>
- </p>
- </div>'
- end
- def gsub_body
-#fix
- @txt=case @txt
- when /^\s*\((i+|iv|v|vi+|ix|x|xi+)\)/
- @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>').
- gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>')
- when /^\s*\(?(\d|[a-z])+\)/
- @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>').
- gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>')
- when /^\s*\d{1,3}\.\s/
- @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>')
- when /^\s*[A-Z]\.\s/
- @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>')
- else @txt
- end
- end
- def bold_para
- %{#{@vz.margin_txt_0}
- <p class="bold">
- #{@txt}
- </p>
-#{@vz.margin_num_css}
- &nbsp;&nbsp;&nbsp;
-#{@vz.table_close}}
- end
- def bold_header
- @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>').
- gsub(/[1-9]~/,'')
- %{<p class="bold">
- #{@txt}
- </p>
-#{@vz.margin_num_css}
- &nbsp;&nbsp;&nbsp;
-#{@vz.table_close}}
- end
- def toc_head_copy_at
- %{<p class="center">#{@txt}</p>\n}
- end
- def center
- %{<p class="center">#{@txt}</p>\n}
- end
- def bold
- %{<p class="bold">#{@txt}</p>\n}
- end
- def center_bold
- %{<p class="centerbold">#{@txt}</p>\n}
- end
- end
- class FormatScroll < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- @vz=SiSU_Env::GetInit.instance.skin
- end
- end
- class FormatSeg < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- end
- def navigation_toc_lev1_advert
- %{#{@banner.home_button}\n
-<center>
-#{@txt}
-#{@two}
-</a></center><p />}
- end
- def navigation_toc_lev1
- %{#{@banner.nav_toc}}
- end
- def navigation_toc_lev2 #change bold use css
- %{<p />
-<table summary="navigation segment level 2">
-<tr><td width ="20">
-</td>
-<td>
- <font size="3" #{@vz.font_face}>
- <b>#{@txt}</b>
- </font>
- </p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev3 #change bold use css
- %{<p />
-<table summary="navigation segment level 3">
-<tr><td width ="20">
-</td>
-<td>
- <font size="3" #{@vz.font_face}>
- <b>#{@txt}</b>
- </font>
- </p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev4
- %{<table summary="navigation segment level 4">
-<tr><td width ="80">
-</td>
-<td>
-<p>
- #{@txt}
-</p>
-#{@vz.table_close}}
- end
- def navigation_toc_lev5
- end
- def navigation_toc_lev6
- end
- def endnote_seg_body(fn='') #FIX #url construction keep within single line... BUG WATCH 200408
- fn='doc' if fn.empty? #you may wish to reconsider, sends to 'doc' where no segment info # Sfx[:html] or Sfx[:xhtml] ?
- %{
- <p class="endnote">
- #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:html]}#{@endnote_part_b}
- </p>
-}
- end
- def subtoc_lev(tag,attrib)
- txt=if @txt \
- and @txt =~/<\/?i>|<a\s+name="\S+?">/mi
- @txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text
- else @txt
- end
- note=''
- if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}\s*)/m
- note=$1
- note=note.gsub(/[\n\s]+/m,' ')
- txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
- gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
- end
- %{<#{tag} class="#{attrib}">
- <a href="##{@ocn}"><i>#{txt}</i></a> #{note}
- </#{tag}>}
- end
- def subtoc_lev5
- subtoc_lev('h5','subtoc') if @txt
- end
- def subtoc_lev6
- subtoc_lev('h6','subtoc') if @txt
- end
- #% para sisu
- def header_sub(tag,attrib)
- @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headname}
- #{@txt}
- </#{tag}>
-</div>
-}
- end
- def header5
- header_sub('p','bold')
- end
- def header6
- header_sub('p','bold')
- end
- def header4
- %{
-<div class="substance">
- #{@p_num.ocn_display}
- <h1 class="norm" #{@p_num.id}>#{@p_num.name}
- #{@t_o[:format]}
- #{@txt}
- </h1>
-</div>
-}
- end
- def navigation_header4
- %{<table summary="navigation segment header 4" width=100% bgcolor="#08163f" border="0">
-<tr><td align="center">
-<p class="bold">
- #{@txt}
-</p>
-#{@vz.table_close}}
- end
- def navigation_header5
- %{<p class="bold">
- #{@txt}
-</p>}
- end
- def navigation_header6
- %{<p class="bold">
- #{@txt}
-</p>}
- end
- def navigation_center
- "<center>#{@txt}</center>"
- end
- end
- class FormatToc < FormatTextObject
- def initialize(md,txt)
- super(md,txt)
- end
- def links_guide
- %{ <li class="doc">
- <a href="#{@lnk_url}" target="_top">
- #{@lnk_txt}
- </a>
- </li>
-}
- end
- def lev(tag,attrib)
- if @txt
- %{<#{tag} class="#{attrib}">
- #{@txt}
- </#{tag}>
-}
- else ''
- end
- end
- def lev1
- lev('h1','toc')
- end
- def lev2
- lev('h2','toc')
- end
- def lev3
- lev('h3','toc')
- end
- def lev4
- lev('h4','toc')
- end
- def lev5
- lev('h5','toc')
- end
- def lev6
- lev('h6','toc')
- end
- def lev0 #docinfo
- lev('h0','toc')
- end
- def mini_lev1
- lev('h1','minitoc')
- end
- def mini_lev2
- lev('h2','minitoc')
- end
- def mini_lev3
- lev('h3','minitoc')
- end
- def mini_lev4
- lev('h4','minitoc')
- end
- def mini_lev5
- lev('h5','minitoc')
- end
- def mini_lev6
- lev('h6','minitoc')
- end
- def mini_lev0 #docinfo
- lev('h0','minitoc')
- end
- def mini_tail
- %{
- <h4 class="minitoc">
- <a href="sisu_manifest.html">Manifest (alternative outputs)</a>
- </h4>
-}
- end
- def mini_concord_tail
- %{
- <h4 class="minitoc">
- <a href="concordance.html">Concordance (wordlist)</a>
- </h4>
- <h4 class="minitoc">
- <a href="sisu_manifest.html">Manifest (alternative outputs)</a>
- </h4>
-}
- end
- end
- class XML
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/xml_md_oai_pmh_dc.rb b/lib/sisu/v3dv/xml_md_oai_pmh_dc.rb
deleted file mode 100644
index eb2bb09c..00000000
--- a/lib/sisu/v3dv/xml_md_oai_pmh_dc.rb
+++ /dev/null
@@ -1,230 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: summary of generated outputs and metadata
-
-=end
-module SiSU_XML_Metadata
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'param' # param.rb
- include SiSU_Param
- class OAI_PMH
- def initialize(opt)
- @md=SiSU_Param::Parameters.new(opt).get
- @oai_pmh=[]
- end
- def read
- output
- end
- def pre
-<<WOK
-<?xml version="1.0" encoding="UTF-8"?>
-<oai_dc:dc
- xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
- http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
-WOK
- end
- def body
- if defined? @md.title.full \
- and @md.title.full=~/\S+/ # DublinCore 1 - title
- @oai_pmh << %{ <dc:title xml:lang="en">#{@md.title.full}</dc:title>\n}
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/ # DublinCore 2 - creator/author (author)
- txt=meta_content_clean(@md.creator.author)
- @oai_pmh << %{ <dc:author>#{txt}</dc:author>\n}
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/ # DublinCore 3 - subject (us library of congress, eric or udc, or schema???)
- txt=meta_content_clean(@md.classify.subject)
- @oai_pmh << %{ <dc:subject>#{txt}</dc:subject>\n}
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/ # DublinCore 4 - description
- txt=meta_content_clean(@md.notes.description)
- @oai_pmh << %{ <dc:description>#{txt}</dc:description>\n}
- end
- if @md.publisher # DublinCore 5 - publisher (current copy published by)
- txt=meta_content_clean(@md.publisher)
- @oai_pmh << %{ <dc:publisher>#{txt}</dc:publisher>\n}
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/ # DublinCore 6 - contributor
- txt=meta_content_clean(@md.creator.contributor)
- @oai_pmh << %{ <dc:contributor>#{txt}</dc:contributor>\n}
- end
- if defined? @md.date.published \
- and @md.date.published=~/\S+/ # DublinCore 7 - date year-mm-dd
- @oai_pmh << %{ <dc:date>#{@md.date.published}</dc:date>\n}
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/ # DublinCore 7 - date.created
- @oai_pmh << %{ <dc:date_created>#{@md.date.created}</dc:date_created>\n}
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/ # DublinCore 7 - date.issued
- @oai_pmh << %{ <dc:date_issued>#{@md.date.issued}</dc:date_issued>\n}
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/ # DublinCore 7 - date.available
- @oai_pmh << %{ <dc:date_available>#{@md.date.available}</dc:date_available>\n}
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/ # DublinCore 7 - date.valid
- @oai_pmh << %{ <dc:date_valid>#{@md.date.valid}</dc:date_valid>\n}
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/ # DublinCore 7 - date.modified
- @oai_pmh << %{ <dc:date_modified>#{@md.date.modified}</dc:date_modified>\n}
- end
- if @md.type # DublinCore 8 - type
- txt=meta_content_clean(@md.type)
- @oai_pmh << %{ <dc:type>#{txt}</dc:type>\n}
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/ # DublinCore 9 - format
- txt=meta_content_clean(@md.classify.format)
- @oai_pmh << %{ <dc:format>#{txt}</dc:format>\n}
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/ # DublinCore 10 - identifier
- txt=meta_content_clean(@md.classify.identifier)
- @oai_pmh << %{ <dc:identifier>#{txt}</dc:identifier>\n}
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/ # DublinCore 11 - source
- txt=meta_content_clean(@md.original.source)
- @oai_pmh << %{ <dc:source>#{txt}</dc:source>\n}
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/ # DublinCore 12 - language (English)
- @oai_pmh << %{ <dc:language>#{@md.title.language}</dc:language>\n}
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- @oai_pmh << %{ <dc:language>#{@md.original.language}</dc:language>\n}
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/ # DublinCore 13 - relation
- txt=meta_content_clean(@md.relation)
- @oai_pmh << %{ <dc:relation>#{txt}</dc:relation>\n}
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/ # DublinCore 14 - coverage
- txt=meta_content_clean(@md.classify.coverage)
- @oai_pmh << %{ <dc:coverage>#{txt}</dc:coverage>\n}
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/ # DublinCore 15 - rights
- txt=meta_content_clean(@md.rights.all)
- @oai_pmh << %{ <dc:rights>#{txt}</dc:rights>\n}
- end
- if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- txt=meta_content_clean(@md.classify.keywords)
- @oai_pmh << %{ <dc:keywords>#{txt}</dc:keywords>\n}
- end
- @oai_pmh
- end
- def meta_content_clean(content='')
- unless content.nil?
- content=content.tr('"',"'")
- end
- content
- end
- def post
- '</oai_dc:dc>'
- end
- def output
- SiSU_Env::FileOp.new(@md).mkdir
- oai_pmh=SiSU_Env::FileOp.new(@md,@md.fn[:oai_pmh]).mkfile #implement in param
- oai_pmh << pre
- body.each do |x|
- oai_pmh << x
- end
- oai_pmh << post
- end
- end
-end
-__END__
-http://www.openarchives.org/pmh/
-http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm#dublincore
-http://es.dublincore.org/documents/usageguide/elements.shtml
-http://dublincore.org/documents/dces/
-see also http://dublincore.org/documents/dcmes-xml/
-#http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm#dublincore
-#sample implementation, e.g. 2
-<?xml version="1.0" encoding="UTF-8"?>
-<oai_dc:dc
- xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
- http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
- <dc:title xml:lang="en">Grassmann's space analysis</dc:title>
- <dc:author>Hyde, E. W. (Edward Wyllys)</dc:author>
- <dc:subject>LCSH:Ausdehnungslehre; LCCN QA205.H99</dc:subject>
- <dc:publisher>J. Wiley &amp; Sons</dc:publisher>
- <dc:date>Created: 1906; Available: 1991</dc:date>
- <dc:type>text</dc:type>
- <dc:identifier>http://resolver.library.cornell.edu/math/1796949
- </dc:identifier>
- <dc:language>english</dc:language>
- <dc:rights xml:lang="en">Public Domain</dc:rights>
-</oai_dc:dc>
diff --git a/lib/sisu/v3dv/xml_scaffold.rb b/lib/sisu/v3dv/xml_scaffold.rb
deleted file mode 100644
index f43daacf..00000000
--- a/lib/sisu/v3dv/xml_scaffold.rb
+++ /dev/null
@@ -1,199 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: extract and print an XML rendition of document structure to screen
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: SiSU information Structuring Universe, processing
-
-=end
-module SiSU_XML_Scaffold
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'dal' # dal.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- pwd=Dir.pwd
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- @sp=' '
- end
- def read
- begin
- @md,@dal_array=@particulars.md,@particulars.dal_array
- SiSU_XML_Scaffold::Source::Scroll.new(@dal_array,@md).songsheet
- rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error
- ensure
- end
- end
- private
- class Scroll <Source
- def initialize(data='',md='')
- @data,@md=data,md
- @sp=' '
- end
- def songsheet
- @t='sisu'
- @s=['0',
- 'A',
- 'B',
- 'C',
- '1',
- '2',
- '3'
- ]
- #@t='docbook' #@t='fictionbook'
- #@s=['book', #@s=['body',
- # 'part', # 'section',
- # 'subpart N/A', # 'section',
- # 'sub-subpart N/A', # 'section',
- # 'chapter', # 'section',
- # 'sect1', # 'section',
- # 'sect2' # 'section'
- #] #]
- data=@data
- structure_outline(data) if @md.opt.cmd =~/V/
- structure_simple(data) if @md.opt.cmd =~/V/
- structure_build(data)
- end
- def structure_outline(data)
- puts "\ninfo outline --->\n\n"
- data.each do |o|
- puts "#{o.ocn} #{o.ln} #{o.obj}" if (o.is ==:heading || o.is ==:heading_insert)
- end
- end
- def structure_simple(data)
- puts "\nheading outline --->\n\n"
- data.each_with_index do |o,i|
- if (o.is ==:heading || o.is ==:heading_insert); puts "<#{@s[o.ln]}>#{o.ocn} #{o.ln} #{o.obj}</#{@s[o.ln]}>"
- end
- end
- end
- def structure_build(data)
- puts "\nXML [#{@t} type] structure outline --->\n\n"
- h=[0,false,false,false]
- puts "<#{@s[0]}>"
- data.each_with_index do |o,i|
- if (o.is ==:heading || o.is ==:heading_insert)
- case o.ln
- when 1
- structure_build_tag_close(o.ln,h)
- puts "#{@sp*1}<#{@s[1]}>\n#{@sp*1} #{o.ocn} #{o.ln} #{o.node}"
- h=[1,true,false,false]
- when 2
- structure_build_tag_close(o.ln,h)
- puts "#{@sp*2}<#{@s[2]}>\n#{@sp*2} #{o.ocn} #{o.ln} #{o.node}"
- h=[2,true,true,false]
- when 3
- structure_build_tag_close(o.ln,h)
- puts "#{@sp*3}<#{@s[3]}>\n#{@sp*3} #{o.ocn} #{o.ln} #{o.node}"
- h=[3,true,true,true]
- when 4
- structure_build_tag_close(o.ln,h)
- puts "#{@sp*4}<#{@s[4]}>\n#{@sp*4} #{o.ocn} #{o.ln} #{o.node}"
- h[0]=4
- when 5
- structure_build_tag_close(o.ln,h)
- puts "#{@sp*5}<#{@s[5]}>\n#{@sp*5} #{o.ocn} #{o.ln} #{o.node}"
- h[0]=5
- when 6
- structure_build_tag_close(o.ln,h)
- puts "#{@sp*6}<#{@s[6]}>\n#{@sp*6} #{o.ocn} #{o.ln} #{o.node}"
- h[0]=6
- end
- end
- end
- structure_build_tag_close(0,h)
- end
- def structure_build_tag_close(lev,h)
- case h[0]
- when 1
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and h[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 2
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and h[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and h[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 3
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and h[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and h[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and h[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 4
- puts "#{@sp*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and h[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and h[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and h[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 5
- puts "#{@sp*5}</#{@s[5]}>" if (lev <= 5)
- puts "#{@sp*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and h[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and h[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and h[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 6
- puts "#{@sp*6}</#{@s[6]}>" if (lev <= 6)
- puts "#{@sp*5}</#{@s[5]}>" if (lev <= 5)
- puts "#{@sp*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{@sp*3}</#{@s[3]}>" if (lev <= 3) and h[3]
- puts "#{@sp*2}</#{@s[2]}>" if (lev <= 2) and h[2]
- puts "#{@sp*1}</#{@s[1]}>" if (lev <= 1) and h[1]
- puts "</#{@s[0]}>" if (lev==0)
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/xml_tables.rb b/lib/sisu/v3dv/xml_tables.rb
deleted file mode 100644
index 5457a2fc..00000000
--- a/lib/sisu/v3dv/xml_tables.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: common file for xml table generation
-
-=end
-module SiSU_Tables
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- class Table #_xml
- @@tablehead=0
- @@tablefoot=[] #watch #bug??? #check was @@tablefoot
- def initialize(one,ocn='')
- @one,@parablock,@ocn,@vz=one,one,ocn,SiSU_Env::GetInit.instance.skin
- end
- def table_split #% used but, no longer operational, revisit
- @new_content=[]
- @one.split(/\n/).each do |parablock|
- table=TableXML.new("#{parablock}\n")
- @new_content << table.table
- end
- @new_content.join
- end
- end
- class TableXML <Table
- @@tablehead=0
- @@tablefoot=[]
- def initialize(one,ocn='')
- @one,@parablock,@ocn,@vz=one,one,ocn,SiSU_Env::GetInit.instance.skin
- end
- def table
- m=@parablock[/<!f(.+?)!>/,1]
- @@tablefoot << m if m
- @parablock=@parablock.gsub(/<!f.+?!>/,'')
- @@tablehead=1 if @parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
- if @parablock =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}/u
- @parablock=@parablock.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+);\w\d+;\w\d+#{Mx[:gr_c]}/u,
- %{\n<ocn>#{@ocn}</ocn><table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">})
- end
- if @parablock =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/
- tablefoot=[]
- @@tablefoot.each {|x| tablefoot << ''}
- @@tablefoot=[]
- end
- if @@tablehead==1
- if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
- @parablock=@parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{<tr>
- <td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}<b>}).
- gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{</b></td><td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}<b>}).
- gsub(/#{Mx[:tc_c]}/,"</b>\n</td>\n</tr>")
- @@tablehead=0
- end
- @parablock
- else
- @parablock=@parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{<tr>
- <td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}}).
- gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,
- %{
- </td>
- <td width="\\1%" valign="top">
- #{@vz.paragraph_table_xml}}).
- gsub(/#{Mx[:tc_c]}/,"\n</td>\n</tr>\n")
- end
- @parablock
- end
- end
- class TableXMLexp <Table
- @@tablehead=0
- @@tablefoot=[]
- def initialize(one)
- @one,@parablock,@vz=one,one,SiSU_Env::GetInit.instance.skin
- end
- def table_head(inf)
- %{<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
- <tr>
- <td valign="top" align="justify">
- <a name="#{inf}"></a>
- </td>
- <td>
-<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">}
- end
- def table_end(tablefoot='')
- %{</table>#{@vz.margin_numless}#{@vz.margin_numless}&nbsp;#{@vz.table_close}
-#{tablefoot}}
- end
- def table_row(inf,h=false)
- bold=h ? '<b>' : ''
- %{
-<tr>
- <td width="#{inf}%" valign="top">#{bold}}
- end
- def table_cell(inf,h=false)
- if h; %{</b></td><td width="#{inf}%" valign="top"><b>}
- else %{</td><td width="#{inf}%" valign="top">}
- end
- end
- def table_row_close(h=false)
- bold_close=h ? '<b>' : ''
- "#{bold_close}</td></tr>"
- end
- def table
- m=@parablock[/<!f(.+?)!>/,1]
- @@tablefoot << m if m
- @parablock=@parablock.gsub(/<!f.+?!>/,'')
- @@tablehead=1 if @parablock =~/#{Mx[:gr_o]}Th#{Mx[:tc_p]}/u
- if @parablock =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~(\d+);\w\d+;\w\d+#{Mx[:gr_c]}/u; @parablock=table_head($1)
- end
- if @parablock =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/
- tablefoot=[]
- @@tablefoot.each {|x| tablefoot << ''}
- @@tablefoot=[]
- if @parablock =~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/; @parablock=table_end
- end
- end
- if @@tablehead==1
- if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}/u
- if @parablock =~/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock=@parablock.gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_row($1,true))
- end
- if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock=@parablock.gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_cell($1,true))
- end
- if @parablock =~/#{Mx[:tc_c]}/
- @parablock=@parablock.gsub(/#{Mx[:tc_c]}/,table_row_close(true))
- end
- @@tablehead=0
- end
- @parablock
- else
- if @parablock =~/^#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock=@parablock.gsub(/^#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_row($1))
- end
- if @parablock =~/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u
- @parablock=@parablock.gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}(\d+?)#{Mx[:tc_p]}/u,table_cell($1))
- end
- if @parablock =~/#{Mx[:tc_c]}/
- @parablock=@parablock.gsub(/#{Mx[:tc_c]}/,table_row_close)
- end
- @parablock
- end
- @parablock
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3dv/zap.rb b/lib/sisu/v3dv/zap.rb
deleted file mode 100644
index 9c9b61eb..00000000
--- a/lib/sisu/v3dv/zap.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997 - 2012, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
- <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
-
- * 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.jus.uio.no/sisu/SiSU/download.html>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
- ** Description: zap wipe clean previous output of the type specified
-
-=end
-module SiSU_Zap
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- pwd=Dir.pwd
- class Source
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @zap_path="#{@env.path.output}/#{@env.fnb}"
- @zap=SiSU_Env::CleanOutput.new(@opt)
- end
- def read
- if SiSU_Env::InfoSettings.new.permission?('zap')
- tell=SiSU_Screen::Ansi.new(@opt.cmd,"Clean files related to processing #{@opt.cmd} ->","#{@opt.fns} -> #{@zap_path}")
- @zap.zap.main_output
- @zap.zap.site_map
- @zap.zap.epub
- @zap.zap.src
- else tell=SiSU_Screen::Ansi.new(@opt.cmd,'use of -Z (zap) has not enabled in sisurc.yml')
- end
- tell.warn unless @opt.cmd =~/q/
- end
- end
-end
-__END__