summaryrefslogtreecommitdiffstats
path: root/lib/sisu/develop
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/develop')
-rw-r--r--lib/sisu/develop/air.rb80
-rw-r--r--lib/sisu/develop/ao.rb590
-rw-r--r--lib/sisu/develop/ao_character_check.rb102
-rw-r--r--lib/sisu/develop/ao_composite.rb286
-rw-r--r--lib/sisu/develop/ao_doc_objects.rb565
-rw-r--r--lib/sisu/develop/ao_doc_str.rb2269
-rw-r--r--lib/sisu/develop/ao_endnotes.rb136
-rw-r--r--lib/sisu/develop/ao_expand_insertions.rb514
-rw-r--r--lib/sisu/develop/ao_hash_digest.rb174
-rw-r--r--lib/sisu/develop/ao_idx.rb422
-rw-r--r--lib/sisu/develop/ao_images.rb187
-rw-r--r--lib/sisu/develop/ao_metadata.rb86
-rw-r--r--lib/sisu/develop/ao_misc_arrange.rb207
-rw-r--r--lib/sisu/develop/ao_numbering.rb720
-rw-r--r--lib/sisu/develop/ao_persist.rb194
-rw-r--r--lib/sisu/develop/ao_references.rb502
-rw-r--r--lib/sisu/develop/ao_syntax.rb640
-rw-r--r--lib/sisu/develop/cgi.rb84
-rw-r--r--lib/sisu/develop/cgi_pgsql.rb270
-rw-r--r--lib/sisu/develop/cgi_sql_common.rb986
-rw-r--r--lib/sisu/develop/cgi_sqlite.rb244
-rw-r--r--lib/sisu/develop/conf.rb287
-rw-r--r--lib/sisu/develop/constants.rb388
-rw-r--r--lib/sisu/develop/css.rb3484
-rw-r--r--lib/sisu/develop/db_columns.rb1997
-rw-r--r--lib/sisu/develop/db_create.rb689
-rw-r--r--lib/sisu/develop/db_dbi.rb90
-rw-r--r--lib/sisu/develop/db_drop.rb207
-rw-r--r--lib/sisu/develop/db_import.rb877
-rw-r--r--lib/sisu/develop/db_indexes.rb146
-rw-r--r--lib/sisu/develop/db_load_tuple.rb323
-rw-r--r--lib/sisu/develop/db_remove.rb182
-rw-r--r--lib/sisu/develop/db_select.rb230
-rw-r--r--lib/sisu/develop/db_sqltxt.rb173
-rw-r--r--lib/sisu/develop/db_tests.rb114
-rw-r--r--lib/sisu/develop/dbi.rb166
-rw-r--r--lib/sisu/develop/dbi_discrete.rb206
-rw-r--r--lib/sisu/develop/digests.rb306
-rw-r--r--lib/sisu/develop/dp.rb1606
-rw-r--r--lib/sisu/develop/dp_identify_markup.rb161
-rw-r--r--lib/sisu/develop/dp_make.rb668
-rw-r--r--lib/sisu/develop/embedded.rb149
-rw-r--r--lib/sisu/develop/errors.rb84
-rw-r--r--lib/sisu/develop/generic_parts.rb131
-rw-r--r--lib/sisu/develop/git.rb277
-rw-r--r--lib/sisu/develop/html.rb775
-rw-r--r--lib/sisu/develop/html_concordance.rb391
-rw-r--r--lib/sisu/develop/html_format.rb1348
-rw-r--r--lib/sisu/develop/html_harvest.rb109
-rw-r--r--lib/sisu/develop/html_harvest_author_format.rb111
-rw-r--r--lib/sisu/develop/html_harvest_authors.rb466
-rw-r--r--lib/sisu/develop/html_harvest_topics.rb893
-rw-r--r--lib/sisu/develop/html_lite_shared.rb324
-rw-r--r--lib/sisu/develop/html_manifest.rb1032
-rw-r--r--lib/sisu/develop/html_minitoc.rb230
-rw-r--r--lib/sisu/develop/html_parts.rb437
-rw-r--r--lib/sisu/develop/html_persist.rb237
-rw-r--r--lib/sisu/develop/html_promo.rb440
-rw-r--r--lib/sisu/develop/html_scroll.rb235
-rw-r--r--lib/sisu/develop/html_segments.rb716
-rw-r--r--lib/sisu/develop/html_shared.rb62
-rw-r--r--lib/sisu/develop/html_table.rb64
-rw-r--r--lib/sisu/develop/html_tune.rb301
-rw-r--r--lib/sisu/develop/hub.rb277
-rw-r--r--lib/sisu/develop/hub_actions.rb1122
-rw-r--r--lib/sisu/develop/hub_loop_markup_files.rb170
-rw-r--r--lib/sisu/develop/hub_options.rb1695
-rw-r--r--lib/sisu/develop/i18n.rb702
-rw-r--r--lib/sisu/develop/manpage.rb377
-rw-r--r--lib/sisu/develop/manpage_format.rb85
-rw-r--r--lib/sisu/develop/object_munge.rb307
-rw-r--r--lib/sisu/develop/prog_text_translation.rb1702
-rw-r--r--lib/sisu/develop/qrcode.rb754
-rw-r--r--lib/sisu/develop/relaxng.rb1153
-rw-r--r--lib/sisu/develop/remote.rb246
-rw-r--r--lib/sisu/develop/rexml.rb148
-rw-r--r--lib/sisu/develop/se.rb158
-rw-r--r--lib/sisu/develop/se_cleanoutput.rb145
-rw-r--r--lib/sisu/develop/se_clear.rb105
-rw-r--r--lib/sisu/develop/se_createsite.rb273
-rw-r--r--lib/sisu/develop/se_css.rb221
-rw-r--r--lib/sisu/develop/se_date.rb92
-rw-r--r--lib/sisu/develop/se_db.rb214
-rw-r--r--lib/sisu/develop/se_envcall.rb326
-rw-r--r--lib/sisu/develop/se_file_op.rb2758
-rw-r--r--lib/sisu/develop/se_filemap.rb247
-rw-r--r--lib/sisu/develop/se_get_init.rb258
-rw-r--r--lib/sisu/develop/se_hub_particulars.rb234
-rw-r--r--lib/sisu/develop/se_info_env.rb2179
-rw-r--r--lib/sisu/develop/se_info_port.rb70
-rw-r--r--lib/sisu/develop/se_info_system.rb202
-rw-r--r--lib/sisu/develop/se_load.rb108
-rw-r--r--lib/sisu/develop/se_processing.rb659
-rw-r--r--lib/sisu/develop/se_programs.rb394
-rw-r--r--lib/sisu/develop/se_remotes.rb553
-rw-r--r--lib/sisu/develop/se_standardise_lang.rb176
-rw-r--r--lib/sisu/develop/se_version.rb183
-rw-r--r--lib/sisu/develop/shared_images.rb137
-rw-r--r--lib/sisu/develop/shared_markup_alt.rb336
-rw-r--r--lib/sisu/develop/shared_metadata.rb1361
-rw-r--r--lib/sisu/develop/shared_sem.rb156
-rw-r--r--lib/sisu/develop/sisu_thor_lib.rb407
-rw-r--r--lib/sisu/develop/sitemaps.rb224
-rw-r--r--lib/sisu/develop/src_kdissert_share.rb102
-rw-r--r--lib/sisu/develop/src_po4a_share.rb309
-rw-r--r--lib/sisu/develop/src_po4a_shelf.rb1217
-rw-r--r--lib/sisu/develop/src_po4a_shelf_set.rb297
-rw-r--r--lib/sisu/develop/src_po4a_sst_ao_sst.rb893
-rw-r--r--lib/sisu/develop/src_po4a_sst_ao_sst_set.rb284
-rw-r--r--lib/sisu/develop/src_po4a_sstm.rb135
-rw-r--r--lib/sisu/develop/src_shared.rb347
-rw-r--r--lib/sisu/develop/src_sisupod_make.rb171
-rw-r--r--lib/sisu/develop/src_sisupod_sstm.rb109
-rw-r--r--lib/sisu/develop/sst_convert_markup.rb323
-rw-r--r--lib/sisu/develop/sst_do_inline_footnotes.rb440
-rw-r--r--lib/sisu/develop/sst_from_xml.rb178
-rw-r--r--lib/sisu/develop/sst_identify_markup.rb482
-rw-r--r--lib/sisu/develop/sst_to_s_xml_sax.rb471
-rw-r--r--lib/sisu/develop/termsheet.rb163
-rw-r--r--lib/sisu/develop/texinfo.rb430
-rw-r--r--lib/sisu/develop/texinfo_format.rb541
-rw-r--r--lib/sisu/develop/texpdf.rb1162
-rw-r--r--lib/sisu/develop/texpdf_format.rb1689
-rw-r--r--lib/sisu/develop/texpdf_parts.rb235
-rw-r--r--lib/sisu/develop/txt_asciidoc.rb354
-rw-r--r--lib/sisu/develop/txt_asciidoc_decorate.rb207
-rw-r--r--lib/sisu/develop/txt_markdown.rb389
-rw-r--r--lib/sisu/develop/txt_markdown_decorate.rb207
-rw-r--r--lib/sisu/develop/txt_orgmode.rb376
-rw-r--r--lib/sisu/develop/txt_orgmode_decorate.rb186
-rw-r--r--lib/sisu/develop/txt_output.rb86
-rw-r--r--lib/sisu/develop/txt_plain.rb410
-rw-r--r--lib/sisu/develop/txt_plain_decorate.rb189
-rw-r--r--lib/sisu/develop/txt_read.rb109
-rw-r--r--lib/sisu/develop/txt_rst.rb371
-rw-r--r--lib/sisu/develop/txt_rst_decorate.rb186
-rw-r--r--lib/sisu/develop/txt_shared.rb241
-rw-r--r--lib/sisu/develop/txt_textile.rb367
-rw-r--r--lib/sisu/develop/txt_textile_decorate.rb186
-rw-r--r--lib/sisu/develop/update.rb141
-rw-r--r--lib/sisu/develop/urls.rb696
-rw-r--r--lib/sisu/develop/utils.rb232
-rw-r--r--lib/sisu/develop/utils_composite.rb115
-rw-r--r--lib/sisu/develop/utils_response.rb114
-rw-r--r--lib/sisu/develop/utils_screen_text_color.rb472
-rw-r--r--lib/sisu/develop/utils_spell.rb99
-rw-r--r--lib/sisu/develop/webrick.rb191
-rw-r--r--lib/sisu/develop/wikispeak.rb375
-rw-r--r--lib/sisu/develop/xhtml.rb472
-rw-r--r--lib/sisu/develop/xhtml_epub2.rb890
-rw-r--r--lib/sisu/develop/xhtml_epub2_concordance.rb322
-rw-r--r--lib/sisu/develop/xhtml_epub2_format.rb2272
-rw-r--r--lib/sisu/develop/xhtml_epub2_persist.rb278
-rw-r--r--lib/sisu/develop/xhtml_epub2_segments.rb599
-rw-r--r--lib/sisu/develop/xhtml_epub2_tune.rb330
-rw-r--r--lib/sisu/develop/xhtml_parts.rb183
-rw-r--r--lib/sisu/develop/xhtml_shared.rb62
-rw-r--r--lib/sisu/develop/xhtml_table.rb97
-rw-r--r--lib/sisu/develop/xml_docbook5.rb376
-rw-r--r--lib/sisu/develop/xml_dom.rb624
-rw-r--r--lib/sisu/develop/xml_fictionbook2.rb389
-rw-r--r--lib/sisu/develop/xml_format.rb865
-rw-r--r--lib/sisu/develop/xml_md_oai_pmh_dc.rb229
-rw-r--r--lib/sisu/develop/xml_odf_odt.rb885
-rw-r--r--lib/sisu/develop/xml_odf_odt_format.rb674
-rw-r--r--lib/sisu/develop/xml_parts.rb191
-rw-r--r--lib/sisu/develop/xml_persist.rb126
-rw-r--r--lib/sisu/develop/xml_sax.rb521
-rw-r--r--lib/sisu/develop/xml_scaffold_structure_collapsed.rb198
-rw-r--r--lib/sisu/develop/xml_scaffold_structure_sisu.rb201
-rw-r--r--lib/sisu/develop/xml_shared.rb665
-rw-r--r--lib/sisu/develop/xml_tables.rb261
-rw-r--r--lib/sisu/develop/zap.rb90
173 files changed, 0 insertions, 79361 deletions
diff --git a/lib/sisu/develop/air.rb b/lib/sisu/develop/air.rb
deleted file mode 100644
index 2822fe5..0000000
--- a/lib/sisu/develop/air.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/air.rb;hb=HEAD>
-
-=end
-module SiSU_Air
- require_relative 'se_hub_particulars' # se_hub_particulars.rb
- class Source
- @@ao_array=[]
- @@fns=nil
- def initialize(opt)
- @opt=opt
- @@fns||@opt.fns
- @particulars=SiSU_Particulars::Combined.new(opt)
- #@env=@particulars.env
- #@md=@particulars.md
- #@ao_array=@particulars.ao_array
- end
- def read
- end
- protected
- def print
- puts @particulars.md.inspect
- puts @particulars.env.inspect
- puts @particulars.ao_array
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao.rb b/lib/sisu/develop/ao.rb
deleted file mode 100644
index 0ac6f50..0000000
--- a/lib/sisu/develop/ao.rb
+++ /dev/null
@@ -1,590 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** preprocessing, (document abstraction), data abstraction used in subsequent
- processing
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao.rb;hb=HEAD>
-
-=end
-module SiSU_AO
- require_relative 'se' # se.rb
- include SiSU_Env
- require_relative 'dp' # dp.rb
- include SiSU_Param
- require_relative 'ao_doc_objects' # ao_doc_objects.rb
- require_relative 'ao_syntax' # ao_syntax.rb
- include SiSU_AO_Syntax
- require_relative 'ao_doc_str' # ao_doc_str.rb
- require_relative 'ao_references' # ao_references.rb
- require_relative 'ao_idx' # ao_idx.rb
- require_relative 'ao_numbering' # ao_numbering.rb
- require_relative 'ao_hash_digest' # ao_hash_digest.rb
- require_relative 'ao_endnotes' # ao_endnotes.rb
- require_relative 'ao_images' # ao_images.rb
- require_relative 'ao_metadata' # ao_metadata.rb
- require_relative 'ao_character_check' # ao_character_check.rb
- require_relative 'ao_misc_arrange' # ao_misc_arrange.rb
- require_relative 'ao_expand_insertions' # ao_expand_insertions.rb
- require_relative 'ao_persist' # ao_persist.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
- def initialize(opt,fnx=nil,process=:complete)
- @opt,@fnx,@process=opt,fnx,process
- @per ||=SiSU_AO_Persist::Persist.new.persist_init
- @per.fns ||=opt.fns
- fn_use=if fnx \
- and fnx =~/\.ss[tmi]$/
- fnx
- elsif opt.fns =~/\.ssm$/
- opt.fns + '.sst'
- else
- opt.fns
- end
- @make_fns=SiSU_Env::InfoFile.new(fn_use)
- @fnm=@make_fns.marshal.ao_metadata
- @fnc=@make_fns.marshal.ao_content
- @idx_sst=@make_fns.marshal.ao_idx_sst_rel_html_seg
- @idx_raw=@make_fns.marshal.ao_idx_sst_rel
- @idx_html=@make_fns.marshal.ao_idx_html
- @idx_xhtml=@make_fns.marshal.ao_idx_xhtml
- @map_nametags=@make_fns.marshal.ao_map_nametags
- @map_ocn_htmlseg=@make_fns.marshal.ao_map_ocn_htmlseg
- @env=SiSU_Env::InfoEnv.new
- end
- def read #creates ao
- begin
- @per=SiSU_AO_Persist::Persist.new
- @per.ao_arr=[]
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- create_ao
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@per.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO_Persist::Persist.new.persist_init
- SiSU_AO::Instantiate.new
- end
- end
- def get #reads ao, unless does not exist then creates first
- begin
- ao=[]
- unless @per.fns==@opt.fns \
- or @per.fns==@fnx
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @per.ao_arr=[]
- end
- ao=(@per.ao_arr.empty?) \
- ? read_fnc
- : @per.ao_arr.dup
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO::Instantiate.new
- end
- end
- def get_idx_sst #reads ao idx.sst, #unless does not exist then creates first
- begin
- ao=[]
- unless @per.fns==@opt.fns \
- or @per.fns==@fnx
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @per.idx_arr_sst=[]
- end
- ao=(@per.idx_arr_sst.empty?) \
- ? read_idx_sst
- : @per.idx_arr_sst.dup #check
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO::Instantiate.new
- end
- end
- def get_idx_raw
- begin
- ao=[]
- unless @per.fns==@opt.fns \
- or @per.fns==@fnx
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @per.idx_arr_tex=[]
- end
- ao=(@per.idx_arr_tex.empty?) \
- ? read_idx_raw
- : @per.idx_arr_tex.dup #check
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO::Instantiate.new
- end
- end
- def get_idx_html #reads ao idx.html, #unless does not exist then creates first
- begin
- ao=[]
- unless @per.fns==@opt.fns \
- or @per.fns==@fnx
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @per.idx_arr_html=[]
- end
- ao=(@per.idx_arr_html.empty?) \
- ? read_idx_html
- : @per.idx_arr_html.dup
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO::Instantiate.new
- end
- end
- def get_idx_xhtml #reads ao idx.xhtml, #unless does not exist then creates first
- begin
- ao=[]
- unless @per.fns==@opt.fns \
- or @per.fns==@fnx
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @per.idx_arr_xhtml=[] #...
- end
- ao=(@per.idx_arr_xhtml.empty?) \
- ? read_idx_xhtml
- : @per.idx_arr_xhtml.dup
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO::Instantiate.new
- end
- end
- def get_map_nametags #reads ao map.nametags, #unless does not exist then creates first
- begin
- ao=[]
- unless @per.fns==@opt.fns \
- or @per.fns==@fnx
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @per.map_arr_nametags=[]
- end
- ao=(@per.map_arr_nametags.empty?) \
- ? read_map_nametags
- : @per.map_arr_nametags.dup
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO::Instantiate.new
- end
- end
- def get_map_ocn_htmlseg #reads ao map.ocn_htmlseg, #unless does not exist then creates first
- begin
- ao=[]
- unless @per.fns==@opt.fns \
- or @per.fns==@fnx
- @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- @per.map_arr_ocn_htmlseg=[]
- end
- ao=(@per.map_arr_ocn_htmlseg.empty?) \
- ? read_map_ocn_htmlseg
- : @per.map_arr_ocn_htmlseg.dup
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_AO::Instantiate.new
- end
- end
- protected
- def create_ao
- ao_array=[]
- fnp = @fnx ? "#{@opt.fno} #{@fnx}" : @opt.fno
- unless @opt.act[:quiet][:set]==:on
- tell=(@opt.act[:verbose][:set]==:on \
- || @opt.act[:verbose_plus][:set]==:on \
- || @opt.act[:maintenance][:set]==:on) \
- ? SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'Document Abstraction'
- )
- : SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'Document Abstraction',
- "[#{@opt.f_pth[:lng_is]}] #{fnp}"
- )
- tell.blue_title_hi
- end
- fn=(@fnx && @fnx =~/\.ss[tmi]$/) \
- ? @fnx
- : @opt.fns
- if @opt.fno =~/\.txz$/
- Dir.chdir(@opt.f_pth[:pth])
- end
- meta=file_array=@env.source_file_processing_array(fn)
- @md=SiSU_Param::Parameters::Instructions.new(meta,@opt).extract
- meta=nil
- ao=SiSU_AO::Make.new(fn,@md,file_array,@fnx,@process).song
- if (@opt.act[:verbose][:set]==:on \
- || @opt.act[:verbose_plus][:set]==:on \
- || @opt.act[:maintenance][:set]==:on)
- cf=SiSU_Env::CreateFile.new(fn)
- if (@opt.act[:verbose][:set]==:on \
- || @opt.act[:verbose_plus][:set]==:on)
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- @opt.fns,
- "~meta/#{@opt.fns}.meta"
- ).output
- elsif @opt.act[:maintenance][:set]==:on
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- "ao -> #{cf.meta}"
- ).txt_grey
- end
- end
- ao.each {|s| ao_array << s}
- if @opt.act[:maintenance][:set]==:on
- ao_array.each do |obj|
- if defined? obj.parent
- if defined? obj.ln
- if defined? obj.node
- puts %{#{obj.ln}: #{obj.ocn} : #{obj.parent} : #{obj.node} - #{obj.lc}}
- else
- puts %{#{obj.ln}: #{obj.ocn} : #{obj.parent}}
- end
- else
- if defined? obj.node
- puts %{ #{obj.ocn} : #{obj.parent} : #{obj.node} - #{obj.lc}}
- else
- puts %{ #{obj.ocn} : #{obj.parent}}
- end
- end
- end
- end
- end
- ao_array
- end
- def read_fnm
- ao=[]
- ao=(FileTest.file?(@fnm)) \
- ? (File.open(@fnm,'r:utf-8'){ |f| ao=Marshal.load(f)})
- : SiSU_AO::Source.new(@opt).create_ao
- end
- def read_fnc
- ao=[]
- ao=(FileTest.file?(@fnc)) \
- ? (File.open(@fnc,'r:utf-8'){ |f| ao=Marshal.load(f)})
- : SiSU_AO::Source.new(@opt,@fnx,@process).create_ao
- end
- def read_idx_sst
- m=[]
- m=(FileTest.file?(@idx_sst)) \
- ? (File.open(@idx_sst,'r:utf-8'){ |f| m=Marshal.load(f)})
- : nil
- end
- def read_idx_raw
- m=[]
- m=(FileTest.file?(@idx_raw)) \
- ? (File.open(@idx_raw,'r:utf-8'){ |f| m=Marshal.load(f)})
- : nil
- end
- def read_idx_html
- m=[]
- m=(FileTest.file?(@idx_html)) \
- ? (File.open(@idx_html,'r:utf-8'){ |f| m=Marshal.load(f)})
- : nil
- end
- def read_idx_xhtml
- m=[]
- m=(FileTest.file?(@idx_xhtml)) \
- ? (File.open(@idx_xhtml,'r:utf-8'){ |f| m=Marshal.load(f)})
- : nil
- end
- def read_map_nametags
- m=[]
- m=(FileTest.file?(@map_nametags)) \
- ? (File.open(@map_nametags,'r:utf-8'){ |f| m=Marshal.load(f)})
- : nil
- end
- def read_map_ocn_htmlseg
- m=[]
- m=(FileTest.file?(@map_ocn_htmlseg)) \
- ? (File.open(@map_ocn_htmlseg,'r:utf-8'){ |f| m=Marshal.load(f)})
- : nil
- 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.act[:maintenance][:set]==:on
- 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.ao}/#{@md.fns}.meta"
- File.unlink(hard) if FileTest.file?(hard)
- hard="#{@dir.processing_path.ao}/#{@md.fns}.txt"
- File.unlink(hard) if FileTest.file?(hard)
- hard="#{@dir.processing_path.ao}/#{@md.fns}.debug.txt"
- File.unlink(hard) if FileTest.file?(hard)
- end
- end
- def make_marshal_content
- marshal_ao=@make.marshal.ao_content
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array)
- end
- def make_marshal_metadata
- marshal_ao=@make.marshal.ao_metadata
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array)
- end
- def idx_html_hard_output
- if @md.book_idx \
- and @md.opt.act[:maintenance][:set]==:on
- filename_meta=@cf.file_meta_idx_html
- if @data.is_a?(Array)
- @data.each {|s| p s.inspect + "\n" unless s.is_a?(String)}
- @data.each {|s| filename_meta.puts s.strip + "\n" unless s.strip.empty?}
- end
- else
- hard_idx_html="#{@dir.processing_path.ao}/#{@md.fns}.idx.html"
- File.unlink(hard_idx_html) if FileTest.file?(hard_idx_html)
- end
- end
- def make_marshal_idx_sst_html_seg
- marshal_ao=@make.marshal.ao_idx_sst_rel_html_seg
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \
- if @data.is_a?(Array)
- end
- def make_marshal_idx_sst_rel
- marshal_ao=@make.marshal.ao_idx_sst_rel
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \
- if @data.is_a?(Array)
- end
- def make_marshal_idx_html
- marshal_ao=@make.marshal.ao_idx_html
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \
- if @data.is_a?(Array)
- end
- def make_marshal_idx_xhtml
- marshal_ao=@make.marshal.ao_idx_xhtml
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \
- if @data.is_a?(Array)
- end
- def make_marshal_map_nametags
- marshal_ao=@make.marshal.ao_map_nametags
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \
- if @data.is_a?(Hash)
- end
- def make_marshal_map_name_ocn_htmlseg
- marshal_ao=@make.marshal.ao_map_ocn_htmlseg
- File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \
- if @data.is_a?(Hash)
- end
- end
- class Make
- def initialize(fn,md,data,fnx,process)
- @fn,@md,@data,@fnx,@process=fn,md,data,fnx,process
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- end
- def reset
- @@flag_vocab=0
- @@line_mode=''
- end
- def song
- reset
- data_txt=@data
- data_txt=
- SiSU_AO_Insertions::Insertions.new(@md,data_txt). # ao_expand_insertions.rb
- expand_insertions?
- data_txt=
- SiSU_AO_MiscArrangeText::SI.new(@md,data_txt). # ao_misc_arrange.rb
- prepare_text
- data_obj,
- metadata,
- bibliography=
- SiSU_AO_DocumentStructureExtract::Build.new(@md,data_txt). # ao_doc_str.rb
- identify_parts
- data_obj=
- SiSU_AO_Syntax::Markup.new(@md,data_obj,bibliography).songsheet # ao_syntax.rb
- data_obj,
- endnote_array=
- SiSU_AO_CharacterCheck::Check.new(data_obj). # ao_character_check.rb
- character_check_and_oldstyle_endnote_array
- data_obj=
- SiSU_AO_Images::Images.new(@md,data_obj).images # ao_images.rb
- data_obj,
- tags_map,
- ocn_html_seg_map=
- SiSU_AO_Numbering::Numbering.new(@md,data_obj,@fnx,@process). # ao_numbering.rb
- numbering_song
- data_obj,
- book_index_rel,
- book_index_rel_html_seg,
- html_idx,
- xhtml_idx=
- SiSU_AO_BookIndex::BookIndex.new(@md,data_obj,@env). # ao_idx.rb
- indexing_song if @md.book_idx
- data_obj=
- SiSU_AO_Endnotes::Endnotes.new(@md,data_obj,endnote_array). # ao_endnotes.rb
- endnotes
- outputdata=data_obj
- if (@md.opt.act[:ao][:set]==:on \
- || @md.opt.act[:maintenance][:set]==:on)
- SiSU_AO::Output.new(@fn,@md,outputdata).hard_output
- SiSU_AO::Output.new(@fn,@md,outputdata).make_marshal_content
- SiSU_AO::Output.new(@fn,@md,metadata).make_marshal_metadata
- SiSU_AO::Output.new(@fn,@md,html_idx).idx_html_hard_output
- SiSU_AO::Output.new(@fn,@md,book_index_rel_html_seg).make_marshal_idx_sst_html_seg
- SiSU_AO::Output.new(@fn,@md,book_index_rel).make_marshal_idx_sst_rel
- SiSU_AO::Output.new(@fn,@md,html_idx).make_marshal_idx_html
- SiSU_AO::Output.new(@fn,@md,xhtml_idx).make_marshal_idx_xhtml
- SiSU_AO::Output.new(@fn,@md,tags_map).make_marshal_map_nametags
- SiSU_AO::Output.new(@fn,@md,ocn_html_seg_map).make_marshal_map_name_ocn_htmlseg
- end
- reset
- outputdata
- end
- protected
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_character_check.rb b/lib/sisu/develop/ao_character_check.rb
deleted file mode 100644
index 2596c73..0000000
--- a/lib/sisu/develop/ao_character_check.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_character_check.rb;hb=HEAD>
-
-=end
-module SiSU_AO_CharacterCheck
- class Check
- def initialize(data)
- @data=data
- @comment='%'
- @endnote_array=[]
- end
- def character_check_and_oldstyle_endnote_array
- data=@data
- @endnote_array=[]
- endnote_no=1
- @tuned_file=data.select 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(/\\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
- dob if dob.is_a?(Object)
- end.flatten.compact
- [@tuned_file,@endnote_array]
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_composite.rb b/lib/sisu/develop/ao_composite.rb
deleted file mode 100644
index 8a59f06..0000000
--- a/lib/sisu/develop/ao_composite.rb
+++ /dev/null
@@ -1,286 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** composite documents, assemble/build documents from other documents
- or parts of marked up text
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_composite.rb;hb=HEAD>
-
-=end
-module SiSU_Assemble
- require_relative 'se' # se.rb
- require_relative 'utils_composite' # utils_composite.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.base_markup_dir_stub}/_sisu/image_external"
- FileUtils::mkdir_p(output_path) \
- unless FileTest.directory?(output_path)
- SiSU_Env::SystemCall.new("#{path}/*",output_path,'q').rsync
- end
- end
- class Composite
- include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- end
- def read
- begin
- pwd=Dir.pwd
- Dir.chdir(@opt.f_pth[:pth])
- if @opt.fno =~/\S+?\.ssm$/
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'Composite Document',
- "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}",
- ).grey_title_hi unless @opt.act[:quiet][:set]==:on
- composite_and_imported_filenames_array(@opt.fno) # composite doc, .ssm, extract all related insert files, array of filenames test
- assembled=loadfile(@opt.fno)
- write(assembled)
- end
- Dir.chdir(pwd)
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).
- location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def insert?(para)
- if para =~ /^<<\s+((?:https?|file):\/\/\S+?\.ss[it])$/ # and NetTest
- url($1.strip)
- elsif para =~/^<<\s+(\S+?\.ss[it])$/
- loadfilename=$1.strip
- insert_array=loadfile(loadfilename)
- file=insertion(loadfilename,insert_array)
- file[:prepared]
- else para
- end
- end
- def loadfile(loadfilename)
- begin
- if FileTest.file?(loadfilename)
- insert_array=IO.readlines(loadfilename,'')
- if loadfilename =~/\S+?\.ss[itm]$/
- if (@opt.act[:verbose][:set]==:on \
- || @opt.act[:verbose_plus][:set]==:on \
- || @opt.act[:maintenance][:set]==:on)
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'loading:',
- loadfilename,
- ).txt_grey
- end
- tuned_file=if loadfilename =~/\S+?\.ss[im]$/
- insert_array.each.map do |para|
- insert?(para)
- end
- elsif loadfilename =~/\S+?\.sst$/
- insert_array.each.map do |para|
- para
- end
- end.flatten.compact
- end
- end
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def url(loadfilename)
- if loadfilename =~ /((?:https?|file):\/\/\S+?\.ss[it])$/ # and NetTest
- loadfilename=$1
- begin
- require 'uri'
- require 'open-uri'
- require 'pp'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('uri, open-uri or pp NOT FOUND (LoadError)')
- end
- insert=open(loadfilename)
- insert_array=insert.dup
- insert.close
- file=insertion(loadfilename,insert_array)
- file[:prepared]
- 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 insertion(fni,insert_array)
- file={ prepared: [], images: [] }
- rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
- file[:prepared] << "\n% |#{fni}|@|^|>>ok\n\n"
- @code_flag=false
- insert_array.each do |i|
- @code_flag=if i =~/^code\{/ then true
- elsif i =~/^\}code/ then false
- else @code_flag
- end
- if not @code_flag \
- and i !~/^%+\s/
- i=i.
- gsub(/^([123]|:?[ABCD])~\? /,
- '% [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
- end
- class CompositeFileList
- 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,'')
- insertions?(fns_array)
- rescue
- SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def insertions?(fns_array)
- tuned_file=[]
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'Composite Document',
- @opt.fno
- ).grey_title_hi unless @opt.act[:quiet][:set]==:on
- @ssm=[@opt.fns]
- fns_array.each do |para|
- if para =~/^<<\s+(\S+?\.ss[it])$/
- loadfilename=$1.strip
- if (@opt.act[:verbose][:set]==:on \
- || @opt.act[:verbose_plus][:set]==:on \
- || @opt.act[:maintenance][:set]==:on)
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'loading:',
- loadfilename,
- ).txt_grey
- end
- tuned_file << if loadfilename =~ /(?:https?|file):\/\/\S+?\.ss[it]$/
- @ssm << loadfilename
- elsif loadfilename =~ /\.ss[it]$/ \
- and FileTest.file?(loadfilename)
- @ssm << loadfilename
- else
- STDERR.puts %{SKIPPED processing file: [#{@opt.lng}] "#{@opt.fns}" it requires an invalid or non-existent file: "#{loadfilename}"}
- $process_document = :skip; break #remove this line to continue processing documents that have missing include files
- para
- end
- end
- end
- @ssm
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_doc_objects.rb b/lib/sisu/develop/ao_doc_objects.rb
deleted file mode 100644
index 5a59af7..0000000
--- a/lib/sisu/develop/ao_doc_objects.rb
+++ /dev/null
@@ -1,565 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** document abstraction
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_doc_objects.rb;hb=HEAD>
-
-=end
-module SiSU_AO_DocumentStructure
- class Extract
- def extract(h,o)
- 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 #Symbol, classification - group
- is = :meta #Symbol, 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 #Symbol, classification - group
- is = :meta #Symbol, 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, sha512, 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,:lc,:use_,:name,:idx,:ocn,:odv,:osp,:node,:parent,:ocn_,:note_,:autonum_,:digest,:tmp
- def initialize
- @of=:para
- @is=@obj=@lv=@ln=@lc=@use_=@name=@idx=@size=@ocn=@odv=@osp=@node=@parent=@ocn_=@note_=@autonum_=@digest=@tmp=nil
- @tags=[]
- end
- def heading_ln(lv)
- case lv
- when /A/ then 0
- when /B/ then 1
- when /C/ then 2
- when /D/ then 3
- when /1/ then 4
- when /2/ then 5
- when /3/ then 6
- when /4/ then 7
- when /5/ then 8
- when /6/ then 9
- end
- end
- def heading_lv(ln)
- case ln.to_s
- when /0/ then 'A'
- when /1/ then 'B'
- when /2/ then 'C'
- when /3/ then 'D'
- when /4/ then '1'
- when /5/ then '2'
- when /6/ then '3'
- when /7/ then '4'
- when /8/ then '5'
- when /9/ then '6'
- end
- end
- def heading(h,o=nil)
- if not h[:ln] \
- and (h[:lv] and h[:lv]=~/[1-6A-D]/)
- h[:ln]=heading_ln(h[:lv])
- elsif not h[:lv] \
- and (h[:ln] and h[:ln].to_s=~/[0-9]/)
- h[:lv]=heading_lv(h[:ln])
- end
- of = @of #Symbol, classification - group
- is = :heading #Symbol, 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-D then 1-6
- ln = h[:ln] || ((defined? o.ln) ? o.ln : nil) #Integer, document structure level, for convenience in processing 1-9
- lc = h[:lc] || ((defined? o.lc) ? o.lc : nil) #Integer, document structure collapsed level, convenience (collapse sisu's dual level document structure for markup with simple linear structure)
- use_ = if lv \
- and lv == '1'
- h[:use_] || ((defined? o.use_) ? o.use_ : :ok)
- elsif not lv.empty? \
- and lv =~ /[A-D2-3]/
- :ok
- else
- h[:use_] || ((defined? o.use_) ? o.use_ : :ok)
- end
- 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, sha512, sha256 or md5
- tmp = h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@lv,@ln,@lc,@name,@tags,@obj,@idx,@ocn,@odv,@osp,@node,@parent,@use_,@ocn_,@note_,@autonum_,@digest,@tmp=
- of, is, lv, ln, lc, name, tags, obj, idx, ocn, odv, osp, node, parent, use_, 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,:quote_,:bullet_,:indent,:hang,:ocn,:odv,:osp,:parent,:note_,:image_,:ocn_,:digest,:tmp
- def initialize
- @of=:para
- @is=@obj=@name=@idx=@quote_=@bullet_=@indent=@hang=@size=@ocn=@odv=@osp=@parent=@note_=@image_=@ocn_=@digest=@tmp=nil
- @tags=[]
- end
- def paragraph(h,o=nil)
- of = @of #Symbol, classification - group
- is = :para #Symbol, 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?
- quote_ = h[:quote_] || ((defined? o.quote_) ? o.quote_ : false) #Bool, quote (blockquote)?
- 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, sha512, 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_,@quote_,@idx,@ocn,@odv,@osp,@parent,@image_,@note_,@ocn_,@digest,@tmp=
- of, is, name, tags, obj, indent, hang, bullet_, quote_, 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, sha512, 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,:lngsyn,:idx,:ocn,:odv,:osp,:parent,:note_,:number_,:ocn_,:digest,:tmp
- def initialize
- @of=:block
- @is=@obj=@lngsyn=@idx=@ocn=@odv=@osp=@parent=@note_=@number_=@ocn_=@digest=@tmp=nil
- @tags=[]
- end
- def code(h,o=nil)
- of = @of #Symbol, classification - group #alt 'code'
- is = :code #Symbol, 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
- lngsyn = h[:lngsyn] || ((defined? o.lngsyn) ? o.lngsyn : :txt) #symbol, code lngsyn
- 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
- num = h[:num] || ((defined? o.num) ? o.num : nil)
- digest = h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, sha512, sha256 or md5
- tmp = h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of,@is,@tags,@obj,@lngsyn,@idx,@ocn,@odv,@osp,@parent,@number_,@note_,@ocn_,@num,@digest,@tmp=
- of, is, tags, obj, lngsyn, idx, ocn, odv, osp, parent, number_, note_, ocn_, num, digest, tmp
- self
- end
- def box(h,o=nil)
- of = @of #Symbol, classification - group
- is = :box #Symbol, 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
- num = h[:num] || ((defined? o.num) ? o.num : nil)
- digest = h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, sha512, 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_,@num,@digest,@tmp=
- of, is, tags, obj, idx, ocn, odv, osp, parent, note_, ocn_, num, digest, tmp
- self
- end
- def block(h,o=nil)
- of = @of #Symbol, classification - group
- is = :block #Symbol, 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
- num = h[:num] || ((defined? o.num) ? o.num : nil)
- digest = h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, sha512, 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_,@num,@digest,@tmp=
- of, is, tags, obj, idx, ocn, odv, osp, parent, note_, ocn_, num, digest, tmp
- self
- end
- def group(h,o=nil)
- of = @of #Symbol, classification - group
- is = :group #Symbol, 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
- num = h[:num] || ((defined? o.num) ? o.num : nil)
- digest = h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, sha512, 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_,@num,@digest,@tmp=
- of, is, tags, obj, idx, ocn, odv, osp, parent, note_, ocn_, num, digest, tmp
- self
- end
- def alt(h,o=nil) #see block
- of = @of #Symbol, classification - group
- is = :alt #Symbol, 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
- num = h[:num] || ((defined? o.num) ? o.num : nil)
- digest = h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, sha512, 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_,@num,@digest,@tmp=
- of, is, tags, obj, idx, ocn, odv, osp, parent, note_, ocn_, num, digest, tmp
- self
- end
- def verse(h,o=nil) #part of poem decide how you deal with this
- of = @of #Symbol, classification - group
- is = :verse #Symbol, 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
- num = h[:num] || ((defined? o.num) ? o.num : nil)
- digest = h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, sha512, 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_,@num,@digest,@tmp=
- of, is, tags, obj, idx, ocn, odv, osp, parent, note_, ocn_, num, digest, tmp
- @h=nil
- self
- end
- end
- class ObjectTable
- attr_accessor :obj,:is,:of,:lv,:tags,:name,:idx,:indent,:hang,:size,:ocn,:num,:head_,:cols,:widths,:odv,:osp,:parent,:note_,:ocn_,:digest,:tmp
- def initialize
- @of=:block
- @is=@obj=@lv=@name=@idx=@indent=@hang=@size=@ocn,@num,@head_,@cols,@widths=@odv=@osp=@parent=@note_=@ocn_=@num=@digest=@tmp=nil
- @tags=[]
- end
- def table(h,o=nil)
- of = @of #Symbol, classification - group
- is = :table #Symbol, 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
- num = h[:num] || ((defined? o.num) ? o.num : nil)
- digest = h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, sha512, 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_,@num,@digest,@tmp=
- of, is, tags, cols, widths, obj, idx, ocn, odv, osp, parent, head_, note_, ocn_, num, 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 #Symbol, classification - group
- is= :image #Symbol, 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, sha512, 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,:lc,:status,:is,:of,:tmp
- def initialize
- @of=:structure
- @is=@obj=@node=@lv=@ln=@lc=@status=@tmp=nil
- end
- def xml_dom(h,o=nil)
- of= @of #Symbol, classification - group
- is= :xml_dom #Symbol, 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-D then 1-6
- ln= h[:ln] || ((defined? o.ln) ? o.ln : nil) #Integer, document structure level, for convenience in processing 1-9
- lc= h[:lc] || ((defined? o.lc) ? o.lc : nil) #Integer, document structure collapsed level, convenience (collapse sisu's dual level document structure for markup with simple linear structure)
- 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 Symbol :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,@lc,@tmp=of,is,obj,status,node,lv,ln,lc,tmp
- self
- end
- end
- class ObjectFlag
- attr_accessor :obj,:is,:of,:flag,:act,:selections,:tmp
- def initialize
- @of=:flag
- @is=@obj=@flag=@act=@selections=@tmp=nil
- end
- def flag(h,o=nil)
- of= @of #Symbol, classification - group
- is= :flag #Symbol, classification - specific type
- obj= nil #String, text content
- flag= h[:flag] || ((defined? o.flag) ? o.flag : nil) #String, text content
- act= h[:act] || ((defined? o.act) ? o.act : nil) #String, text content
- selections= h[:selections] || ((defined? o.selections) ? o.selections : nil) #String, text content
- tmp= h[:flag] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of, @is,@obj,@flag,@act,@selections,@tmp=
- of,is, obj, flag, act, selections, tmp
- self
- end
- def flag_ocn(h,o=nil)
- of= @of #Symbol, classification - group
- is= :flag_ocn #Symbol, classification - specific type
- obj= nil #String, text content
- flag= h[:flag] || ((defined? o.flag) ? o.flag : nil) #String, text content
- act= h[:act] || ((defined? o.act) ? o.act : nil) #String, text content
- selections= h[:selections] || ((defined? o.selections) ? o.selections : nil) #String, text content
- tmp= h[:flag] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of, @is,@obj,@flag,@act,@selections,@tmp=
- of,is, obj, flag, act, selections,tmp
- self
- end
- def flag_lng(h,o=nil)
- of= @of #Symbol, classification - group
- is= :flag_lng
- obj= nil #String, text content
- flag= h[:flag] || ((defined? o.flag) ? o.flag : nil) #Symbol, :lng_on or :lng_off
- act= h[:act] || ((defined? o.act) ? o.act : nil) #Symbol, language set to :en etc.
- selections= h[:selections] || ((defined? o.selections) ? o.selections : nil) #String, text content
- tmp= h[:act] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- @of, @is,@obj,@flag,@act,@selections,@tmp=
- of,is, obj, flag, act, selections,tmp
- self
- end
- end
- class ObjectLayout
- attr_accessor :obj,:sym,:attr,:is,:is_for,:of,:from,:tmp,:num
- def initialize
- @of=:layout
- @is=@is_for=@obj=@from=@tmp=@num=nil
- end
- def break(h,f=nil) #decide how to deal with
- of= @of #Symbol, classification - group
- is= :break #Symbol, classification - specific type
- obj= h[:obj] #String, text content
- from= f
- tmp= h[:tmp] #available for processing, empty after use
- @of,@is,@obj,@from,@tmp=of,is,obj,from,tmp
- self
- end
- def insert(h,o=nil) #decide how to deal with, could mimic paragraph?
- of= @of #Symbol, classification - group
- is= :insert #Symbol, 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 open_close(h,o=nil) #useful for poem & quote
- of= @of #Symbol, classification - group
- is= :open_close_tags #Symbol, classification - specific type
- is_for= h[:is_for] || ((defined? o.is_for) ? o.is_for : nil) #String, text content
- obj= h[:obj] || ((defined? o.obj) ? o.obj : nil) #String, text content
- sym= h[:sym] || ((defined? o.sym) ? o.sym : nil) #Symbol tag_open, tag_close
- attr= h[:attr] || ((defined? o.attr) ? o.attr : nil) #String, text content
- tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use
- num= h[:num] || ((defined? o.num) ? o.num : nil)
- @of,@is,@is_for,@obj,@sym,@attr,@tmp,@num=
- of, is, is_for, obj, sym, attr, tmp, num
- 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 #Symbol, classification - group
- is= :comment #Symbol, 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/develop/ao_doc_str.rb b/lib/sisu/develop/ao_doc_str.rb
deleted file mode 100644
index 353469e..0000000
--- a/lib/sisu/develop/ao_doc_str.rb
+++ /dev/null
@@ -1,2269 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** document abstraction
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_doc_str.rb;hb=HEAD>
-
-=end
-module SiSU_AO_DocumentStructureExtract
- require_relative 'ao_persist' # ao_persist.rb
- class Instantiate < SiSU_Param::Parameters::Instructions
- def initialize
- @@counter=@@column=@@columns=0
- @@line_mode=''
- end
- end
- class Build
- def initialize(md,data)
- @md,@data=md,data
- SiSU_AO_DocumentStructureExtract::Instantiate.new
- @pb=SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page])
- @pbn=SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new])
- @pbl=SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line])
- @per=SiSU_AO_Persist::PersistDocStructExt.new
- end
- def ln_get(lv)
- case lv
- when /A/ then 0
- when /B/ then 1
- when /C/ then 2
- when /D/ then 3
- when /1/ then 4
- when /2/ then 5
- when /3/ then 6
- when /4/ then 7
- when /5/ then 8
- when /6/ then 9
- end
- end
- def image_test(str)
- str=~/\{\s*\S+?\.png.+?\}https?:\/\/\S+/ \
- ? true
- : false
- end
- def bullet_test(str)
- (str=~/\*/) \
- ? true
- : false
- end
- def quotes?
- @per.quote==:open \
- ? 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)
- (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.uniq
- 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
- tags.each do |t|
- t.gsub!(/[^a-z0-9._-]/,'')
- end
- end
- [
- str,
- tags,
- ]
- end
- def rgx_idx_ocn_seg
- @rgx_idx_ocn_seg=/(.+?)\s*[+](\d+)/
- end
- def construct_idx_array_and_hash(idxraw)
- idx_array_raw=idxraw.scan(/[^;]+/)
- idx_hash,idx_array,idx_lst={},[],[]
- idx_array_raw.each do |idx|
- idx=idx.strip
- idx_lst=case idx
- when /\S+?\s*:/
- idx_couplet_tmp=[]
- idx_couplet=idx.scan(/\s*[^:]+\s*/)
- if idx_couplet[1] =~/[|]/
- idx_couplet_tmp <<
- idx_couplet[0] <<
- idx_couplet[1].scan(/\s*[^|]+\s*/)
- else
- idx_couplet_tmp <<
- idx_couplet[0] <<
- [idx_couplet[1]]
- end
- idx_couplet=idx_couplet_tmp
- else [idx]
- end
- term_nodes=[]
- idx_lst.each do |term_node|
- case term_node
- when String
- term_node=
- term_node[0].chr.capitalize +
- term_node[1,term_node.length]
- term_node=(term_node =~/.+?[+]\d+/) \
- ? term_node
- : (term_node + '+0')
- term_nodes << term_node
- use,plus=rgx_idx_ocn_seg.match(term_node)[1,2]
- @use=use.strip
- unless idx_hash[@use] \
- and defined? idx_hash[@use]
- idx_hash[@use]=
- { sub: [], plus: plus }
- end
- when Array
- subterm_nodes=[]
- term_node.each do |subterm_node|
- subterm_node=(subterm_node =~/.+?[+]\d+/) \
- ? subterm_node
- : (subterm_node + '+0')
- subterm_nodes << subterm_node
- sub,sub_plus=rgx_idx_ocn_seg.match(subterm_node)[1,2]
- unless idx_hash[@use] \
- and defined? idx_hash[@use]
- idx_hash[@use]=
- { sub: [], plus: 0 }
- end
- idx_hash[@use][:sub] <<
- { sub.strip => { plus: sub_plus } }
- end
- term_nodes << subterm_nodes
- end
- end
- idx_array << term_nodes
- end
- {
- hash: idx_hash,
- array: idx_array,
- }
- end
- def extract_structure_loop(data,tuned_file)
- data.each do |t_o|
- if t_o =~/^--([+~-])[#]$/
- h=case $1
- when /[+]/
- @per.ocn=:on
- {
- flag: :ocn_on,
- }
- when /[~]/
- @per.ocn=:ocn_off_headings_keep
- {
- flag: :ocn_off,
- mod: :headings_keep,
- }
- when /[-]/ #of particular relevance with level 1~ which is required to precede substantive text & used e.g. in html segmented text
- @per.ocn=:ocn_off_headings_dummy_lev1
- {
- flag: :ocn_off,
- mod: :headings_exclude,
- }
- else
- @per.ocn=:on
- {
- flag: :ocn_on,
- }
- end
- t_o=SiSU_AO_DocumentStructure::ObjectFlag.new.flag_ocn(h)
- next
- end
- if t_o =~/^:[~](#{SiSU_is.language_list_regex?}|-)$/ # work with for identifying language of objects
- lng=$1
- h=case lng
- when /(?:#{SiSU_is.language_list_regex?})/
- @per.lng=:on
- @per.lng_is=lng.to_sym
- {
- flag: :lng_on,
- act: lng.to_sym,
- }
- else # ^:~-
- if @per.lng==:on
- @per.lng=:off
- @per.lng_is=:doc_default
- {
- flag: :lng_off,
- act: :doc_default,
- }
- end
- end
- t_o=SiSU_AO_DocumentStructure::ObjectFlag.new.flag_lng(h)
- next
- end
- t_o=t_o.gsub(/(?:\n\s*\n)+/m,"\n") if @per.code==:off
- unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any
- idx=if t_o=~/^=\{\s*(.+)\s*\}\s*$\Z/m
- m=$1
- m=m.split(/[ ]*\n/).join(' ').
- gsub(/\s+([|:;])\s+/,'\1').
- gsub(/\s+([+]\d+)\s+/,'\1')
- t_o=t_o.gsub(/\n=\{.+?\}\s*$/m,'')
- idx_array_and_hash=construct_idx_array_and_hash(m)
- idx_array_and_hash[:hash]
- else nil
- end
- end
- if t_o !~/^(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block)\{|^\}(?:code|poem|alt|group|block)|^(?:table\{|\{table)[ ~]/ \
- and t_o !~/^```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)|^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$|^`:quote_(?:open|close)`/ \
- and @per.code==:off \
- and @per.poem==:off \
- and @per.group==:off \
- and @per.block==:off \
- and @per.alt==:off \
- and @per.box==:off \
- and @per.table==:off
- 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_AO_DocumentStructure::ObjectComment.new.comment(h)
- else nil
- end
- when /^:?([A-D1-6])\~/ #heading / lv
- lv=$1
- ln=ln_get(lv)
- t_o=if t_o=~/^:?[A-D1-6]\~\s+(.+)/m
- obj=$1
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj)
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- unless obj =~ /[~-][#]\s*$/
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- and t_o =~/^1\~\S*\s+/m
- obj << ' -#'
- elsif @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- obj << ' ~#'
- end
- end
- end
- h={
- lv: lv,
- ln: ln,
- obj: obj,
- idx: idx,
- tags: tags,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h)
- elsif t_o=~/^:?[A-D1-6]\~(\S+?)-\s+(.+)/m
- name,obj=$1,$2
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj)
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- unless obj =~ /[~-][#]\s*$/
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- and t_o =~/^1\~\S*\s+/m
- obj << ' -#'
- elsif @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- obj << ' ~#'
- end
- end
- end
- h={
- lv: lv,
- name: name,
- obj: obj,
- idx: idx,
- autonum_: false,
- tags: tags,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h)
- elsif t_o=~/^:?[A-D1-6]\~(\S+)\s+(.+)/m
- name,obj=$1,$2
- note=endnote_test?(obj)
- obj,tags=extract_tags(obj,name)
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- unless obj =~ /[~-][#]\s*$/
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- and t_o =~/^1\~\S*\s+/m
- obj << ' -#'
- elsif @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- obj << ' ~#'
- end
- end
- end
- h={
- lv: lv,
- name: name,
- obj: obj,
- idx: idx,
- tags: tags,
- }
- SiSU_AO_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
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- unless obj =~ /[~-][#]\s*$/
- obj << ' ~#'
- end
- end
- h={
- bullet_: bullet,
- hang: hang,
- indent: indent,
- obj: obj,
- idx: idx,
- note_: note,
- image_: image,
- tags: tags,
- quote: quotes?,
- }
- SiSU_AO_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
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- unless obj =~ /[~-][#]\s*$/
- obj << ' ~#'
- end
- end
- h={
- hang: hang,
- indent: indent,
- obj: obj,
- idx: idx,
- note_: note,
- image_: image,
- tags: tags,
- quote: quotes?,
- }
- SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- else nil
- end
- when /^<(?:br)?:(?:pa?r|o(?:bj|---)?)>\s*$/ #[br:par] #[br:obj]
- SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_obj])
- when /^(?:-\\\\-|<:pb>)\s*$/ #[br:pg]
- SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page],:markup)
- when /^(?:=\\\\=|<:pn>)\s*$/ #[br:pgn]
- SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new],:markup)
- when /^-\.\.-\s*$/ #[br:pgl]
- SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line],:markup)
- else #paragraph
- image=image_test(t_o)
- note=endnote_test?(t_o)
- obj,tags=extract_tags(t_o)
- if @per.ocn==:ocn_off_headings_dummy_lev1 \
- or @per.ocn==:ocn_off_headings_keep
- unless obj =~ /[~-][#]\s*$/
- obj << ' ~#'
- end
- end
- unless obj=~/\A\s*\Z/m
- h={
- bullet_: false,
- indent: 0,
- hang: 0,
- obj: obj,
- idx: idx,
- note_: note,
- image_: image,
- tags: tags,
- quote: quotes?,
- }
- t_o=SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- t_o=SiSU_AO_DocumentStructureExtract::Structure.new(@md).structure_markup(t_o) #must happen earlier, node info etc. require
- end
- elsif @per.code==:off
- if t_o =~/^(?:code(?:\.[a-z][0-9a-z_]+)?\{|```[ ]+code(?:\.[a-z][0-9a-z_]+)?)/
- @per.code=case t_o
- when /^code(?:\.[a-z][0-9a-z_]+)?\{/ then :curls
- when /^```[ ]+code/ then :tics
- else @per.code #error
- end
- @per.lngsyn=if t_o =~/^(?:code\.[a-z][0-9a-z_]+\{|```[ ]+code\.[a-z_]+)/
- case t_o
- when /^code\.([a-z][0-9a-z_]+)\{/
- :"#{$1}"
- when /^```[ ]+code\.([a-z][0-9a-z_]+)/
- :"#{$1}"
- else :txt
- end
- else :txt
- end
- @@counter=1
- @codeblock_numbered=
- (t_o =~/^(?:code(?:\.[a-z][0-9a-z_]+)?\{#|```[ ]+code(?:\.[a-z][0-9a-z_]+)?\s[#])/) \
- ? true
- : false
- @num_id[:code_block] +=1
- h={
- is_for: :code,
- obj: '',
- sym: :code_block_open,
- num: @num_id[:code_block],
- syntax: @per.lngsyn,
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- elsif t_o =~/^(?:poem\{|```[ ]+poem)/
- @per.poem=case t_o
- when /^poem\{/ then :curls
- when /^```[ ]+poem/ then :tics
- else @per.poem #error
- end
- @num_id[:poem] +=1
- h={
- is_for: :poem,
- obj: '',
- sym: :poem_open,
- num: @num_id[:poem],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- tuned_file << t_o
- elsif t_o =~/^(?:box(?:\.[a-z_]+)?\{|```[ ]+box(?:\.[a-z_]+)?)/
- @per.box=case t_o
- when /^box\{/ then :curls
- when /^```[ ]+box/ then :tics
- else @per.box #error
- end
- @num_id[:box] +=1
- h={
- is_for: :box,
- obj: '',
- sym: :box_open,
- num: @num_id[:box],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- tuned_file << t_o
- elsif t_o =~/^(?:group\{|```[ ]+group)/
- @per.group=case t_o
- when /^group\{/ then :curls
- when /^```[ ]+group/ then :tics
- else @per.group #error
- end
- @num_id[:group] +=1
- h={
- is_for: :group,
- obj: '',
- sym: :group_open,
- num: @num_id[:group],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- tuned_file << t_o
- elsif t_o =~/^(?:block\{|```[ ]+block)/
- @per.block=case t_o
- when /^block\{/ then :curls
- when /^```[ ]+block/ then :tics
- else @per.block #error
- end
- @num_id[:block] +=1
- h={
- is_for: :block,
- obj: '',
- sym: :block_open,
- num: @num_id[:block],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- tuned_file << t_o
- elsif t_o =~/^(?:alt\{|```[ ]+alt)/
- @per.alt=case t_o
- when /^alt\{/ then :curls
- when /^```[ ]+alt/ then :tics
- else @per.alt #error
- end
- @num_id[:alt] +=1
- h={
- is_for: :alt,
- obj: '',
- sym: :alt_open,
- num: @num_id[:alt],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- tuned_file << t_o
- elsif t_o =~/^`:quote_open`/
- @per.quote=:open
- @num_id[:quote] +=1
- h={
- is_for: :quote,
- obj: '',
- sym: :quote_open,
- num: @num_id[:quote],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- #tuned_file << t_o #% find second source, entered twice, should be once so closed off here
- elsif t_o =~/^(?:table\{|```[ ]+table|\{table)[ ~]/
- @num_id[:table] +=1
- h={
- is_for: :table,
- obj: '',
- sym: :table_open,
- num: @num_id[:table],
- }
- ins_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- tuned_file << ins_o
- if t_o=~/^table\{(?:~h)?\s+/
- @per.table=:curls
- @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+c\d+/
- @per.table=:tics
- @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]
- 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,
- num: @num_id[:table],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \
- unless h.nil?
- tuned_file << t_o
- h={
- is_for: :table,
- obj: '',
- sym: :table_close,
- num: @num_id[:table],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(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,
- num: @num_id[:table],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \
- unless h.nil?
- tuned_file << t_o
- h={
- is_for: :table,
- obj: '',
- sym: :table_close,
- num: @num_id[:table],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(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,
- num: @num_id[:table],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \
- unless h.nil?
- tuned_file << t_o
- h={
- is_for: :table,
- obj: '',
- sym: :table_close,
- num: @num_id[:table],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- t_o
- end
- end
- t_o
- end
- if @per.table==:curls or @per.table==:tics
- if (@per.table==:curls \
- and t_o =~/^\}table/) \
- or (@per.table==:tics \
- and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/)
- @per.table=:off
- headings,columns,widths,idx=@h[:head_],@h[:cols],@h[:widths],@h[:idx]
- @h={
- head_: headings,
- cols: columns,
- widths: widths,
- idx: idx,
- obj: @rows,
- }
- t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(@h)
- tuned_file << t_o
- @h,@rows=nil,''
- h={
- is_for: :table,
- obj: '',
- sym: :table_close,
- num: @num_id[:table],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- t_o
- else
- if t_o.is_a?(String) \
- and t_o !~/^(?:table\{|```[ ]+table)/
- t_o=t_o.gsub(/^\n+/m,'').
- gsub(/\n+/m,"#{Mx[:tc_p]}")
- @rows += t_o + Mx[:tc_c]
- end
- t_o=nil
- end
- end
- if @per.code==:curls \
- or @per.code==:tics
- if (@per.code==:curls \
- && t_o =~/^\}code/) \
- or (@per.code==:tics \
- && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/m)
- @per.code=:off
- if @tuned_code[-1]
- @tuned_code[-1].
- gsub!(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*\Z/m,'')
- end
- obj=@tuned_code.join("\n")
- tags=[]
- h={
- obj: obj,
- idx: idx,
- syntax: @per.lngsyn,
- tags: tags,
- num: @num_id[:code_block],
- number_: @codeblock_numbered,
- }
- @per.lngsyn=:txt
- t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.code(h)
- @tuned_code=[]
- tuned_file << t_o
- h={
- is_for: :code,
- obj: '',
- sym: :code_close,
- num: @num_id[:code_block],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- end
- if (@per.code==:curls \
- || @per.code==:tics) \
- and t_o.is_a?(String)
- sub_array=t_o.dup + "#{Mx[:br_nl]}"
- @line_mode=[]
- sub_array.scan(/.+/) {|w| @line_mode << w if w =~/[\S]+/}
- t_o=SiSU_AO_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(:code).join
- @tuned_code << t_o
- t_o=nil
- end
- elsif (@per.poem==:curls \
- || @per.poem==:tics) \
- or (@per.box==:curls \
- || @per.box==:tics) \
- or (@per.group==:curls \
- || @per.group==:tics) \
- or (@per.block==:curls \
- || @per.block==:tics) \
- or (@per.alt==:curls \
- || @per.alt==:tics) \
- or (@per.quote==:open \
- && t_o =~/`:quote_close`/m) #not
- if (@per.poem==:curls \
- && t_o =~/^\}poem$/m) \
- or (@per.poem==:tics \
- && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/)
- @per.poem=:off
- h={
- is_for: :poem,
- obj: '',
- idx: idx,
- sym: :poem_close,
- num: @num_id[:poem],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- elsif (@per.box==:curls \
- && t_o =~/^\}box/) \
- or (@per.box==:tics \
- && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/)
- @per.box=:off
- obj,tags=extract_tags(@tuned_block.join("\n"))
- h={
- obj: obj,
- idx: idx,
- tags: tags,
- num: @num_id[:box],
- }
- @tuned_block=[]
- t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.box(h)
- tuned_file << t_o
- h={
- is_for: :box,
- obj: '',
- idx: idx,
- sym: :box_close,
- num: @num_id[:box],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- elsif (@per.group==:curls \
- && t_o =~/^\}group/) \
- or (@per.group==:tics \
- && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/)
- @per.group=:off
- obj,tags=extract_tags(@tuned_block.join("\n"))
- h={
- obj: obj,
- idx: idx,
- tags: tags,
- num: @num_id[:group],
- }
- @tuned_block=[]
- t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.group(h)
- tuned_file << t_o
- h={
- is_for: :group,
- obj: '',
- sym: :group_close,
- num: @num_id[:group],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- elsif (@per.block==:curls \
- && t_o =~/^\}block/) \
- or (@per.block==:tics \
- && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/)
- @per.block=:off
- obj,tags=extract_tags(@tuned_block.join("\n"))
- h={
- obj: obj,
- idx: idx,
- tags: tags,
- num: @num_id[:block],
- }
- @tuned_block=[]
- t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.block(h)
- tuned_file << t_o
- h={
- is_for: :block,
- obj: '',
- sym: :block_close,
- num: @num_id[:block],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- elsif (@per.alt==:curls \
- && t_o =~/^\}alt/) \
- or (@per.alt==:tics \
- && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/)
- @per.alt=:off
- obj,tags=extract_tags(@tuned_block.join("\n"))
- h={
- obj: obj,
- idx: idx,
- tags: tags,
- num: @num_id[:alt],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.alt(h)
- @tuned_block=[]
- tuned_file << t_o
- h={
- is_for: :alt,
- obj: '',
- sym: :alt_close,
- num: @num_id[:alt],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- elsif @per.quote==:open \
- and t_o =~/`:quote_close`/m
- @per.quote=:off
- h={
- is_for: :quote,
- idx: idx,
- obj: '',
- sym: :quote_close,
- num: @num_id[:quote],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h)
- elsif @per.quote==:open
- t_o,tags=extract_tags(t_o)
- h={
- indent: 1,
- obj: t_o,
- idx: idx,
- note_: note,
- image_: image,
- tags: tags,
- quote: quotes?,
- }
- SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- if (@per.poem==:curls \
- || @per.poem==:tics) \
- or (@per.group==:curls \
- || @per.group==:tics) \
- or (@per.alt==:curls \
- || @per.alt==:tics) \
- and t_o =~/\S/ \
- and t_o !~/^(?:\}(?:verse|code|box|alt|group|block)|(?:verse|code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|alt|group|block)\{)/ \
- and t_o !~/^```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block)|^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/ # fix logic
- sub_array=t_o.dup
- @line_mode=sub_array.scan(/.+/)
- type=if @per.poem==:curls or @per.poem==:tics
- t_o=SiSU_AO_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(type).join
- poem=t_o.split(/\n\n/)
- poem.each do |v|
- v=v.gsub(/\n/m,"#{Mx[:br_nl]}\n")
- obj,tags=extract_tags(v)
- h={
- obj: obj,
- tags: tags,
- num: @num_id[:poem],
- }
- t_o=SiSU_AO_DocumentStructure::ObjectBlockTxt.new.verse(h)
- tuned_file << t_o
- end
- :poem
- else :group
- end
- end
- @verse_count+=1 if @per.poem==:curls or @per.poem==:tics
- end
- if @per.code==:off
- if @per.poem==:curls or @per.poem==:tics \
- or @per.box==:curls or @per.box==:tics \
- or @per.group==:curls or @per.group==:tics \
- or @per.alt==:curls or @per.alt==:tics \
- or (@per.quote==:open and t_o =~/`:quote_close`/m)
- if t_o.is_a?(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==:box \
- || 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
- tuned_file
- end
- def identify_parts
- tuned_file=[]
- @tuned_block,@tuned_code=[],[]
- @@counter,@verse_count=0,0
- @num_id={
- code_block: 0,
- poem: 0,
- box: 0,
- group: 0,
- alt: 0,
- quote: 0,
- table: 0,
- }
- @metadata={}
- @data,bibliography=SiSU_AO_References::Bibliography.new(@md,@data).biblio_extraction
- tuned_file=extract_structure_loop(@data,tuned_file)
- if @md.flag_endnotes
- tuned_file << @pb
- h={
- ln: 1,
- lc: 1,
- obj: 'Endnotes',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- ln: 4,
- lc: 2,
- obj: 'Endnotes',
- name: 'endnotes',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- obj: 'Endnotes'
- }
- end
- if @md.flag_auto_biblio
- tuned_file << @pb
- h={
- ln: 1,
- lc: 1,
- obj: 'References',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- ln: 4,
- lc: 2,
- obj: 'Bibliography',
- name: 'biblio',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- obj: 'Bibliography'
- }
- citenumber=0
- bibliography.each do |c|
- citenumber +=1 if c.is_a?(Hash)
- if c[:is]==:book
- h={
- obj: %{[#{citenumber}] *{#{c[:author]}}* /{"#{c[:fulltitle]}"}/ #{c[:publisher]} (#{c[:year]}) #{c[:url]}},
- tags: [c[:id]],
- hang: 0,
- indent: 2,
- ocn_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- elsif c[:is]==:article
- h={
- obj: %{[#{citenumber}] *{#{c[:author]}}* /{"#{c[:title]}"}/ #{c[:journal]} #{c[:volume]} (#{c[:year]}) #{c[:url]}},
- tags: [c[:id]],
- hang: 0,
- indent: 2,
- ocn_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- end
- elsif @md.flag_biblio
- tuned_file << @pb
- h={
- ln: 1,
- lc: 1,
- obj: 'References',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- ln: 4,
- lc: 2,
- obj: 'Bibliography',
- name: 'biblio',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- obj: 'Bibliography'
- }
- if bibliography.length > 0
- tuned_file=extract_structure_loop(bibliography,tuned_file)
- else
- tuned_file, citations =
- SiSU_AO_References::Citations.new(@md,tuned_file).songsheet # ao_references.rb
- citenumber=0
- citations.compact.each do |c|
- citenumber +=1 if c.is_a?(Hash)
- if c[:is]==:book
- h={
- obj: %{[#{citenumber}] *{#{c[:author]}}* /{#{c[:publication]}}/ (#{c[:year]})},
- hang: 0,
- indent: 2,
- ocn_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- elsif c[:is]==:article
- h={
- obj: %{[#{citenumber}] *{#{c[:author]}}* /{"#{c[:title]}"}/ #{c[:publication]} editor #{c[:editor]} (#{c[:year]})},
- hang: 0,
- indent: 2,
- ocn_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- end
- end
- end
- if @md.book_idx
- tuned_file << @pb
- h={
- ln: 1,
- lc: 1,
- obj: 'Index',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- ln: 4,
- lc: 2,
- obj: 'Index',
- name: 'book_index',
- autonum_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- obj: 'Index'
- }
- end
- tuned_file << @pb
- h={
- ln: 1,
- lc: 1,
- obj: 'Metadata',
- autonum_: false,
- ocn_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- ln: 4,
- lc: 2,
- obj: 'SiSU Metadata, document information',
- name: 'metadata',
- autonum_: false,
- ocn_: false,
- }
- tuned_file << SiSU_AO_DocumentStructure::ObjectHeading.new.heading_insert(h)
- h={
- obj: 'eof',
- }
- meta=SiSU_AO_DocumentStructure::ObjectMetadata.new.metadata(@metadata)
- [tuned_file,meta,bibliography]
- 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_AO_DocumentStructure::ObjectHeading.new.heading(h)
- end
- def meta_para(str)
- h={
- obj: str,
- ocn_: false,
- }
- SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- def build_lines(type=:none)
- lines=@data
- lines.each.map do |line|
- line=if line =~/\S/ \
- and line !~/^(?:code(?:\.[a-z][0-9a-z_]+)?\{|\}code)/ \
- and line !~/^(?:```[ ]+code(?:\.[a-z][0-9a-z_]+)?|```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$)/ \
- and not line.is_a?(Hash) #watch
- @@counter+=1 if @per.code==:curls or @per.code==:tics
- 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
- line
- end
- end
- end
- class Structure # this must happen early
- def initialize(md)
- @md=md
- end
- def structure(data)
- data.compact.each do |dob|
- structure_markup(dob)
- end
- end
- def structure_markup(dob) #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.lv0}/
- h={
- is: :heading,
- lv: 'A',
- ln: 0,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
- when /^#{@md.lv1}/
- h={
- is: :heading,
- lv: 'B',
- ln: 1,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
- when /^#{@md.lv2}/
- h={
- is: :heading,
- lv: 'C',
- ln: 2,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
- when /^#{@md.lv3}/
- h={
- is: :heading,
- lv: 'D',
- ln: 3,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
- when /^#{@md.lv4}/
- h={
- is: :heading,
- lv: '1',
- ln: 4,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
- when /^#{@md.lv5}/
- h={
- is: :heading,
- lv: '2',
- ln: 5,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
- when /^#{@md.lv6}/
- h={
- is: :heading,
- lv: '3',
- ln: 6,
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
- else dob
- end
- else dob
- end
- dob
- end
- end
- class OCN
- def initialize(md,data,fnx,process)
- @md,@data,@fnx,@process=md,data,fnx,process
- end
- def structure_info
- def lv
- %w[A~ B~ C~ D~ 1 2 3 4]
- end
- def possible_parents(child)
- case child
- when /A~/ then 'none'
- when /B~/ then 'A~'
- when /C~/ then 'B~'
- when /D~/ then 'C~'
- when /1/ then 'A~, B~, C~, D~'
- when /2/ then '1'
- when /3/ then '2'
- when /4/ then '3'
- end
- end
- def possible_children(parent)
- case parent
- when /A~/ then 'B~, 1'
- when /B~/ then 'C~, 1'
- when /C~/ then 'D~, 1'
- when /D~/ then '1'
- when /1/ then '2'
- when /2/ then '3'
- when /3/ then '4'
- when /4/ then 'none'
- end
- end
- self
- end
- def document_structure_check_info(node,node_parent,status=:ok)
- node_ln=/^([0-7])/.match(node)[1].to_i
- node_parent_ln=/^([0-7])/.match(node_parent)[1].to_i
- if status==:error \
- or @md.opt.act[:maintenance][:set]==:on
- puts %{node: #{node}, parent node: #{node_parent} #{status.upcase}}
- if status==:error
- node_ln=/^([0-7])/.match(node)[1].to_i
- node_parent_ln=/^([0-7])/.match(node_parent)[1].to_i
- STDERR.puts %{current level: #{structure_info.lv[node_ln]} (possible parent levels: #{structure_info.possible_parents(structure_info.lv[node_ln])})
-parent level: #{structure_info.lv[node_parent_ln]} (possible child levels: #{structure_info.possible_children(structure_info.lv[node_parent_ln])})
-SKIPPED processing file:
-[#{@md.opt.lng}] "#{@md.fns}"}
- if @md.opt.act[:no_stop][:set]==:on
- $process_document = :skip
- else exit
- end
- end
- end
- end
- def warning_incorrect_parent_level_or_level(txt)
- puts %{ERROR. There is an error in markup of heading levels either here or in the parent heading.
-The current header reads:
-"#{txt}"
-has incorrect level and/or parent level
---}
- end
- def required_headers_present?
- if @process == :complete
- unless (defined? @md.title \
- and @md.title.full)
- STDERR.puts %{required header missing:
-
-@title:
-SKIPPED processing file:
-[#{@md.opt.lng}] "#{@md.fns}"
-}
- if @md.opt.act[:no_stop][:set]==:on
- $process_document = :skip
- else exit
- end
- end
- unless (defined? @md.creator.author \
- and @md.creator.author)
- STDERR.puts %{required header missing:
-
-@creator:
- :author: anonymous?
-SKIPPED processing file:
-[#{@md.opt.lng}] "#{@md.fns}"
-}
- if @md.opt.act[:no_stop][:set]==:on
- $process_document = :skip
- else exit
- end
- end
- end
- end
- def ocn #and auto segment numbering increment
- required_headers_present?
- data=@data
- @o_array=[]
- node=ocn=ocn_dv=ocn_sp=ocnh=ocnh0=ocnh1=ocnh2=ocnh3=ocnh4=ocnh5=ocnh6=ocnh7=ocno=ocnp=ocnt=ocnc=ocng=ocni=ocnu=0 # h heading, o other, t table, g group, i image
- 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=node7=nil
- node0='0:0;0'
- @collapsed_lv0=0
- @lev_occurences={ a: 0, b: 0, c: 0, d: 0, l1: 0, l2: 0, l3: 0, l4: 0 }
- 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.ocn_
- #dob.ln now is determined, and set earlier, check how best to remove this -->
- if dob.is==:heading
- @ln=ln=case dob.lv
- when 'A' then 0
- when 'B' then 1
- when 'C' then 2
- when 'D' then 3
- when '1' then 4
- when '2' then 5
- when '3' then 6
- when '4' then 7
- when '5' then 8
- when '6' then 9
- end
- end
- if not dob.obj =~/~#|-#/
- ocn+=1
- end
- if @process == :complete \
- or (@fnx == @md.opt.fns \
- && @md.opt.fns =~/.sst$/)
- if dob.is==:heading \
- and (ln.to_s =~/^[0-9]/ \
- or ln.to_s =~@md.lv0 \
- 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 \
- or ln.to_s =~@md.lv7)
- if not dob.obj =~/~#|-#/
- ocnh+=1
- end
- if ln==0 \
- or ln=~@md.lv0
- @lev_occurences[:a] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh0+=1 #heading
- node0="0:#{ocnh0};#{ocn}"
- else
- #document_structure_check_info(node0,node0,:error) #fix
- ocn_flag=false
- node0="0:0;0"
- end
- document_structure_check_info(node0,node0)
- @collapsed_lv0=0
- collapsed_level=@collapsed_lv0
- node,ocn_sp,parent=node0,"h#{ocnh}",'ROOT'
- elsif ln==1 \
- or ln=~@md.lv1
- @lev_occurences[:b] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh1+=1 #heading
- node1="1:#{ocnh1};#{ocn}"
- else
- #document_structure_check_info(node0,node0,:error) #fix
- ocn_flag=false
- node1="1:0;0"
- end
- parent=if node0
- document_structure_check_info(node1,node0)
- @collapsed_lv1=@collapsed_lv0+1
- node0
- else
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node0,node0,:error)
- node0
- end
- collapsed_level=@collapsed_lv1
- node,ocn_sp,parent=node1,"h#{ocnh}",node0 #FIX
- elsif ln==2 \
- or ln=~@md.lv2
- @lev_occurences[:c] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh2+=1
- node2="2:#{ocnh2};#{ocn}"
- else
- #document_structure_check_info(node0,node0,:error) #fix
- ocn_flag=false
- node2="2:0;0"
- end
- parent=if node1
- document_structure_check_info(node2,node1)
- @collapsed_lv2=@collapsed_lv1+1
- node1
- else
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node2,node0,:error)
- node0
- end
- collapsed_level=@collapsed_lv2
- node,ocn_sp=node2,"h#{ocnh}"
- elsif ln==3 \
- or ln=~@md.lv3
- @lev_occurences[:d] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh3+=1
- node3="3:#{ocnh3};#{ocn}"
- else
- #document_structure_check_info(node0,node0,:error) #fix
- ocn_flag=false
- node3="3:0;0"
- end
- parent=if node2
- document_structure_check_info(node3,node2)
- @collapsed_lv3=@collapsed_lv2+1
- node2
- elsif node1
- warning_incorrect_parent_level_or_level(dob.obj)
- puts %{parent is :A~ & this level #{dob.lv}
-either parent should be level :B~
-or this level should be level :B~ rather than #{dob.lv}}
- document_structure_check_info(node3,node1,:error)
- @collapsed_lv3=@collapsed_lv1+1
- node1
- else
- document_structure_check_info(node3,node0,:error)
- warning_incorrect_parent_level_or_level(dob.obj)
- node0
- end
- collapsed_level=@collapsed_lv3
- node,ocn_sp=node3,"h#{ocnh}"
- elsif ln==4 \
- or ln=~@md.lv4
- @lev_occurences[:l1] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh4+=1
- node4="4:#{ocnh4};#{ocn}"
- else
- ocn_flag=false
- node4="4:0;0"
- end
- parent=if node3
- document_structure_check_info(node4,node3)
- @collapsed_lv4=@collapsed_lv3+1
- node3
- elsif node2
- document_structure_check_info(node4,node2)
- @collapsed_lv4=@collapsed_lv2+1
- node2
- elsif node1
- document_structure_check_info(node4,node1)
- @collapsed_lv4=@collapsed_lv1+1
- node1
- elsif node0
- document_structure_check_info(node4,node0)
- @collapsed_lv4=@collapsed_lv0+1
- node0
- else
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node4,node0,:error)
- node0
- end
- collapsed_level=@collapsed_lv4
- node,ocn_sp=node4,"h#{ocnh}"
- elsif ln==5 \
- or ln=~@md.lv5
- @lev_occurences[:l2] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh5+=1
- node5="5:#{ocnh5};#{ocn}"
- else
- ocn_flag=false
- node5="5:0;0"
- end
- parent=if node4
- document_structure_check_info(node5,node4)
- @collapsed_lv5=@collapsed_lv4+1
- node4
- elsif node3
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node5,node3,:error)
- @collapsed_lv5=@collapsed_lv3+1
- node3
- elsif node2
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node5,node2,:error)
- @collapsed_lv5=@collapsed_lv2+1
- node2
- elsif node1
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node5,node1,:error)
- @collapsed_lv5=@collapsed_lv1+1
- node1
- else
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node5,node0,:error)
- node0
- end
- collapsed_level=@collapsed_lv5
- node,ocn_sp=node5,"h#{ocnh}"
- elsif ln==6 \
- or ln=~@md.lv6
- @lev_occurences[:l3] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh6+=1
- node6="6:#{ocnh6};#{ocn}"
- else
- ocn_flag=false
- node6="6:0;0"
- end
- parent=if node5
- document_structure_check_info(node6,node5)
- @collapsed_lv6=@collapsed_lv5+1
- node5
- elsif node4
- warning_incorrect_parent_level_or_level(dob.obj)
- puts "parent is level #4 (1~) & this level ##{dob.ln} (#{dob.lv}~)
-either parent should be level #5 (2~)
-or this level should be #5 (2~) rather ##{dob.ln} (#{dob.lv}~)"
- document_structure_check_info(node6,node4,:error)
- @collapsed_lv6=@collapsed_lv4+1
- node4
- elsif node3
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node6,node3,:error)
- @collapsed_lv6=@collapsed_lv3+1
- node3
- elsif node2
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node6,node2,:error)
- @collapsed_lv6=@collapsed_lv2+1
- node2
- elsif node1
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node6,node1,:error)
- @collapsed_lv6=@collapsed_lv1+1
- node1
- else
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node6,node0,:error)
- node0
- end
- collapsed_level=@collapsed_lv6
- node,ocn_sp=node6,"h#{ocnh}"
- elsif ln==7 \
- or ln=~@md.lv7
- @lev_occurences[:l4] += 1
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- ocnh7+=1
- node7="7:#{ocnh7};#{ocn}"
- else
- ocn_flag=false
- node7="7:0;0"
- end
- parent=if node6
- document_structure_check_info(node7,node6)
- @collapsed_lv7=@collapsed_lv6+1
- node5
- elsif node5
- warning_incorrect_parent_level_or_level(dob.obj)
- puts "parent is level #5 (2~) & this level ##{dob.ln} (#{dob.lv}~)
-either parent should be level #6 (3~)
-or this level should be #6 (3~) rather ##{dob.ln} (#{dob.lv}~)"
- document_structure_check_info(node7,node5,:error)
- @collapsed_lv6=@collapsed_lv5+1
- node5
- elsif node4
- warning_incorrect_parent_level_or_level(dob.obj)
- puts "parent is level #4 (1~) & this level ##{dob.ln} (#{dob.lv}~)
-either parent should be level 6~
-or this level should be #6 (3~) rather ##{dob.ln} (#{dob.lv}~)"
- document_structure_check_info(node7,node4,:error)
- @collapsed_lv6=@collapsed_lv4+1
- node4
- elsif node3
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node7,node3,:error)
- @collapsed_lv6=@collapsed_lv3+1
- node3
- elsif node2
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node7,node2,:error)
- @collapsed_lv6=@collapsed_lv2+1
- node2
- elsif node1
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node7,node1,:error)
- @collapsed_lv6=@collapsed_lv1+1
- node1
- else
- warning_incorrect_parent_level_or_level(dob.obj)
- document_structure_check_info(node7,node0,:error)
- node0
- end
- collapsed_level=@collapsed_lv7
- node,ocn_sp=node7,"h#{ocnh}"
- end
- else
- unless @lev_occurences[:l1] > 0
- STDERR.puts %{Substantive text objects must follow a level 1~ heading and there are none at this point in processing: #{@lev_occurences[:l1]}
-SKIPPED processing file:
-[#{@md.opt.lng}] "#{@md.fns}"}
- puts dob.obj #.gsub(/^(.{1,80})/,'"\1"')
- exit
- end
- unless @ln >= 4
- lev=case @ln
- when 0 then 'A'
- when 1 then 'B'
- when 2 then 'C'
- when 3 then 'D'
- when 4 then '1'
- when 5 then '2'
- when 6 then '3'
- when 7 then '4'
- when 8 then '5'
- when 9 then '6'
- end
- STDERR.puts %{Substantive text objects must follow a level 1~ 2~ or 3~ heading: #{lev}~
-SKIPPED processing file:
-[#{@md.opt.lng}] "#{@md.fns}"}
- puts dob.obj.gsub(/^(.{1,80})/,'"\1"')
- if @md.opt.act[:no_stop][:set]==:on
- $process_document = :skip
- break
- else exit
- end
- end
- if not dob.obj =~/~#|-#/
- ocn_flag=true
- else
- ocn_flag=false
- end
- 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==:box \
- || 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
- end
- if dob.is==:heading
- if ocn_flag==true
- dob.ln,dob.node,dob.ocn,dob.ocn_,dob.odv,dob.osp,dob.parent,dob.lc=
- ln, node, ocn, ocn_flag, ocn_dv,ocn_sp, parent, collapsed_level
- else
- ocnu+=1
- heading_use=:ok
- if dob.obj=~/#{Mx[:pa_non_object_no_heading]}/
- dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_no_heading]}/,'')
- heading_use=:ok
- elsif dob.obj=~/#{Mx[:pa_non_object_dummy_heading]}/
- dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_dummy_heading]}/,'')
- heading_use=:dummy
- end
- dob.ln,dob.node,dob.ocn,dob.ocn_,dob.use_, dob.odv,dob.osp,dob.parent,dob.lc=
- ln, node, nil, ocn_flag,heading_use,ocn_dv, ocn_sp, parent, collapsed_level
- end
- else
- if dob.of !=:meta \
- && dob.of !=:comment \
- && dob.of !=:layout
- if ocn_flag == true
- dob.ocn,dob.ocn_,dob.odv,dob.osp,dob.parent=
- ocn, ocn_flag,ocn_dv, ocn_sp, parent
- else
- ocnu+=1
- dob.obj=dob.obj.gsub(/#{Mx[:fa_o]}[~-]##{Mx[:fa_c]}/,'') if dob.obj
- ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}"
- dob.ocn,dob.ocn_,dob.odv,dob.osp,dob.parent=
- nil, ocn_flag,ocn_dv, ocn_sp, parent
- end
- end
- end
- h
- else dob
- end
- if dob.is==:code \
- || dob.is==:verse \
- || dob.is==:alt \
- || dob.is==:box \
- || dob.is==:group \
- || dob.is==:block
- dob.obj=dob.obj.gsub(/\n+/,"\n") #newlines taken out
- end
- @o_array << dob
- end
- if @process == :complete \
- or (@fnx == @md.opt.fns \
- && @md.opt.fns =~/.sst$/)
- unless @lev_occurences[:a] == 1
- STDERR.puts %{The number of level A~ in this document: #{@lev_occurences[:a]}
-There must be one level A~ (no more and no less)
-SKIPPED processing file:
-[#{@md.opt.lng}] "#{@md.fns}"}
- if @md.opt.act[:no_stop][:set]==:on
- $process_document = :skip
- else exit
- end
- end
- unless @lev_occurences[:l1] > 0
- STDERR.puts %{The number of level 1~ in this document: #{@lev_occurences[:l1]}
-There must be at least one level 1~ (and as many as required)
-SKIPPED processing file:
-[#{@md.opt.lng}] "#{@md.fns}"}
- if @md.opt.act[:no_stop][:set]==:on
- $process_document = :skip
- else exit
- end
- end
- end
- @o_array
- end
- end
- class XML
- def initialize(md,data)
- @data,@md=data,md
- end
- def dom
- @s=[ 'A', 'B', 'C', 'D', '1', '2', '3' ]
- tuned_file=structure_build
- tuned_file
- end
- def spaces
- Ax[:spaces]
- 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.act[:verbose_plus][:set]==:on
- 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 0
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.act[:verbose_plus][:set]==:on
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs=[0,true,false,false,false]
- when 1
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.act[:verbose_plus][:set]==:on
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs=[1,true,true,false,false]
- when 2
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.act[:verbose_plus][:set]==:on
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs=[2,true,true,true,false]
- when 3
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.act[:verbose_plus][:set]==:on
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs=[3,true,true,true,true]
- when 4
- tuned_file << tag_close(o.ln,hs)
- tuned_file << tag_open(o,@s)
- if @md.opt.act[:verbose_plus][:set]==:on
- 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.act[:verbose_plus][:set]==:on
- 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.act[:verbose_plus][:set]==:on
- puts_tag_close(o.ln,hs)
- puts_tag_open(o,@s)
- end
- hs[0]=6
- end
- end
- tuned_file << o
- end
- if @md.opt.act[:verbose_plus][:set]==:on
- puts_tag_close(0,hs)
- end
- tuned_file << tag_close(0,hs)
- tuned_file=tuned_file.flatten
- end
- def tags(o)
- tag=(o[:status]==:open) \
- ? %{<#{o[:lv]} id="#{o[:node]}">}
- : "</#{o[:lv]}>"
- ln=case o[:lv]
- when 'A' then 0
- when 'B' then 1
- when 'C' then 2
- when 'D' then 3
- when '1' then 4
- when '2' then 5
- when '3' then 6
- when '4' then 7
- when '5' then 8
- when '6' then 9
- end
- h={
- tag: tag,
- node: o[:node],
- lv: o[:lv],
- ln: ln,
- status: o[:status],
- }
- SiSU_AO_DocumentStructure::ObjectStructure.new.xml_dom(h) #downstream code utilise else ignore like comments
- end
- def tag_open(o,tag)
- t={ lv: tag[o.ln], node: o.node, status: :open }
- t_o=tags(t)
- t_o
- end
- def tag_close(lev,hs)
- ary=[]
- case hs[0]
- when 0
- if (lev <= 0) and hs[0]
- t={
- lv: @s[0],
- status: :close,
- }
- ary << tags(t)
- end
- 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 %{#{spaces*o.ln}<#{tag[o.ln]} id="#{o.node}">}
- end
- def puts_tag_close(lev,hs)
- case hs[0]
- when 0
- #puts "#{spaces*0}</#{@s[0]}>" if (lev <= 0) and hs[0]
- puts "</#{@s[0]}>" if (lev==0)
- when 1
- puts "#{spaces*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 2
- puts "#{spaces*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{spaces*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 3
- puts "#{spaces*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{spaces*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{spaces*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 4
- puts "#{spaces*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{spaces*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{spaces*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{spaces*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 5
- puts "#{spaces*5}</#{@s[5]}>" if (lev <= 5)
- puts "#{spaces*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{spaces*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{spaces*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{spaces*1}</#{@s[1]}>" if (lev <= 1) and hs[1]
- puts "</#{@s[0]}>" if (lev==0)
- when 6
- puts "#{spaces*6}</#{@s[6]}>" if (lev <= 6)
- puts "#{spaces*5}</#{@s[5]}>" if (lev <= 5)
- puts "#{spaces*4}</#{@s[4]}>" if (lev <= 4)
- puts "#{spaces*3}</#{@s[3]}>" if (lev <= 3) and hs[3]
- puts "#{spaces*2}</#{@s[2]}>" if (lev <= 2) and hs[2]
- puts "#{spaces*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/develop/ao_endnotes.rb b/lib/sisu/develop/ao_endnotes.rb
deleted file mode 100644
index c523345..0000000
--- a/lib/sisu/develop/ao_endnotes.rb
+++ /dev/null
@@ -1,136 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_doc_endnotes.rb;hb=HEAD>
-
-=end
-module SiSU_AO_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
- endnote_ref=1
- @tuned_file=data.each.map do |dob|
- # manually numbered endnotes <!e(\d)!> <!e_(\d)!> -->
- if @md.opt.selections.str =~/--no-asterisk|--no-annotate/
- dob.obj=dob.obj.
- gsub(/#{Mx[:en_b_o]}\s.+?#{Mx[:en_b_c]}/,'')
- end
- if @md.opt.selections.str =~/--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')
- word_mode=dob.obj.scan(/\S+/m)
- word_mode=endnote_call_number(word_mode)
- dob.obj=word_mode.join(' ')
- endnote_ref+=1
- when /~\^(?:\s|$)/ #%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
- dob
- end.flatten
- @endnote_counter,
- @endnote_counter_asterisk,
- @endnote_counter_dag=
- 1,1,1
- @tuned_file
- 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 /~\^/
- if @endnote_array
- word.gsub!(/~\^/,
- "#{@endnote_array[@endnote_counter-1]}")
- @endnote_counter+=1
- end
- end
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_expand_insertions.rb b/lib/sisu/develop/ao_expand_insertions.rb
deleted file mode 100644
index 897cb7e..0000000
--- a/lib/sisu/develop/ao_expand_insertions.rb
+++ /dev/null
@@ -1,514 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_expand_insertions.rb;hb=HEAD>
-
-=end
-module SiSU_AO_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
- act_defaults=SiSU_Env::InfoProcessingFlag.new
- cmd_list=case cmd_shortcut.inspect #check on expectation, string v array
- when /0/ then act_defaults.act_0.str
- when /1/ then act_defaults.act_1.str
- when /2/ then act_defaults.act_2.str
- when /3/ then act_defaults.act_3.str
- when /4/ then act_defaults.act_4.str
- when /5/ then act_defaults.act_5.str
- when /6/ then act_defaults.act_6.str
- when /7/ then act_defaults.act_7.str
- when /8/ then act_defaults.act_8.str
- when /9/ then act_defaults.act_9.str
- end
- file_type_names={}
- file_type_names[:gen],file_type_names[:src]=[],[]
- file_type_names[:gen] <<= if cmd_list =~ /\b--manifest\b/
- "~^ { document manifest }#{lnk[:manifest]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--html\b/
- [
- " { html, segmented text }#{lnk[:html_toc]}",
- " { html, scroll, document in one }#{lnk[:html_doc]}",
- ]
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--epub\b/
- [" { epub }#{lnk[:epub]}"]
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--pdf\b/ \
- or cmd_list =~ /--pdf-landscape/
- [
- " { pdf, landscape }#{lnk[:pdf_landscape]}",
- ]
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--pdf\b/ \
- or cmd_list =~ /--pdf-portrait/
- [
- " { pdf, portrait }#{lnk[:pdf_portrait]}",
- ]
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b(?:--odt|--odf)\b/
- " { odf:odt, open document text }#{lnk[:odt]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--xhtml\b/
- " { xhtml scroll }#{lnk[:xhtml]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--docbook\b/
- " { docbook }#{lnk[:docbook]}" #CHECK
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--xml-sax\b/
- " { xml, sax }#{lnk[:xml_sax]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--xml-dom\b/
- " { xml, dom }#{lnk[:xml_dom]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b(?:--txt|--text|--plaintext)\b/
- " { 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 =~ /\b--concordance\b/
- " { concordance }#{lnk[:html_concordance]}"
- end
- file_type_names[:gen] <<= if cmd_list =~ /\b--digest\b/
- " { dcc, document content certificate (digests) }#{lnk[:digest]}"
- end
- file_type_names[:src] <<= if source and cmd_shortcut =~ /\b--source\b/
- " { markup source text }#{lnk[:source]}"
- end
- file_type_names[:src] <<= if cmd_shortcut =~ /\b--sisupod\b/
- " { 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 fnh
- {
- fn: @linked_doc,
- }
- end
- def path_and_file(fn,pth)
- @base_path + '/' + pth + '/' + fn
- end
- def manifest
- fn=@md.file.base_filename.manifest(fnh)
- path_and_file(fn,'manifest')
- end
- def html_toc
- fn=@md.file.base_filename.html_segtoc(fnh)
- @base_path + '/html/' + @linked_doc + '/' + fn
- end
- def html_doc
- fn=@md.file.base_filename.html_scroll(fnh)
- path_and_file(fn,'html')
- end
- def html_concordance
- fn=@md.file.base_filename.html_concordance
- @base_path + '/html/' + @linked_doc + '/' + fn
- end
- def epub
- fn=@md.file.base_filename.epub(fnh)
- path_and_file(fn,'epub')
- end
- def pdf_landscape
- fn=@md.file.base_filename.pdf_l_a4(fnh)
- path_and_file(fn,'pdf')
- end
- def pdf_portrait
- fn=@md.file.base_filename.pdf_p_a4(fnh)
- path_and_file(fn,'pdf')
- end
- def odt
- fn=@md.file.base_filename.odt(fnh)
- path_and_file(fn,'odt')
- end
- def xhtml
- fn=@md.file.base_filename.xhtml(fnh)
- path_and_file(fn,'xhtml')
- end
- def docbook
- fn=@md.file.base_filename.xml_docbook_book(fnh)
- path_and_file(fn,'docbook')
- end
- def xml_sax
- fn=@md.file.base_filename.xml_sax(fnh)
- path_and_file(fn,'xml_sax')
- end
- def xml_dom
- fn=@md.file.base_filename.xml_dom(fnh)
- path_and_file(fn,'xml_dom')
- end
- def txt
- fn=@md.file.base_filename.txt(fnh)
- path_and_file(fn,'txt')
- end
- def digest
- fn=@md.file.base_filename.hash_digest(fnh)
- path_and_file(fn,'digest')
- end
- def source
- @base_path + '/src/' + @src
- end
- def sisupod
- @base_path + '/src/' + @src + '.zip'
- end
- self
- end
- def by_filetype(linked_doc,lng,src=nil)
- @linked_doc,@lng,@src=linked_doc,lng,src
- @lc=SiSU_Env::FilenameLanguageCodeInsert.new(@md.opt,lng).
- language_code_insert
- @base_path="#{@md.file.output_path.base.url}"
- def fnh
- {
- fn: @linked_doc,
- lng: @lc,
- }
- end
- def path_and_file(fn,pth)
- @base_path + '/' + pth + '/' + fn
- end
- def manifest
- fn=@md.file.base_filename.manifest(fnh)
- path_and_file(fn,'manifest')
- end
- def html_toc
- fn=@md.file.base_filename.html_segtoc(fnh)
- path_and_file(fn,'html')
- end
- def html_doc
- fn=@md.file.base_filename.html_scroll(fnh)
- path_and_file(fn,'html')
- end
- def html_concordance
- fn=@md.file.base_filename.html_concordance
- path_and_file(fn,'html')
- end
- def epub
- fn=@md.file.base_filename.epub(fnh)
- path_and_file(fn,'epub')
- end
- def pdf_landscape
- fn=@md.file.base_filename.pdf_l_a4(fnh)
- path_and_file(fn,'pdf')
- end
- def pdf_portrait
- fn=@md.file.base_filename.pdf_p_a4(fnh)
- path_and_file(fn,'pdf')
- end
- def odt
- fn=@md.file.base_filename.odt(fnh)
- path_and_file(fn,'odt')
- end
- def xhtml
- fn=@md.file.base_filename.xhtml(fnh)
- path_and_file(fn,'xhtml')
- end
- def docbook
- fn=@md.file.base_filename.xml_docbook_book(fnh)
- path_and_file(fn,'docbook')
- end
- def xml_sax
- fn=@md.file.base_filename.xml_sax(fnh)
- path_and_file(fn,'xml_sax')
- end
- def xml_dom
- fn=@md.file.base_filename.xml_dom(fnh)
- path_and_file(fn,'xml_dom')
- end
- def txt
- fn=@md.file.base_filename.txt(fnh)
- path_and_file(fn,'txt')
- end
- def digest
- fn=@md.file.base_filename.hash_digest(fnh)
- path_and_file(fn,'digest')
- end
- def source
- @base_path + '/src/' + @src
- end
- def sisupod
- @base_path + '/src/' + @src + '.zip'
- end
- self
- end
- def by_filename(linked_doc,lng,src=nil)
- @linked_doc,@lng,@src=linked_doc,lng,src
- @lc=SiSU_Env::FilenameLanguageCodeInsert.new(@md.opt,lng).language_code_insert
- @base_path="#{@md.file.output_path.base.url}/#{@linked_doc}"
- def fnh
- {
- fn: @linked_doc,
- lng: @lc,
- }
- end
- def path_and_file(fn,pth=nil)
- (pth.nil?) \
- ? @base_path + '/' + fn
- : @base_path + '/' + pth + '/' + fn
- end
- def manifest
- fn=@md.file.base_filename.manifest(fnh)
- path_and_file(fn)
- end
- def html_toc
- fn=@md.file.base_filename.html_segtoc(fnh)
- path_and_file(fn)
- end
- def html_doc
- fn=@md.file.base_filename.html_scroll(fnh)
- path_and_file(fn)
- end
- def html_concordance
- fn=@md.file.base_filename.html_concordance
- path_and_file(fn)
- end
- def epub
- fn=@md.file.base_filename.epub(fnh)
- path_and_file(fn,'epub')
- end
- def pdf_landscape
- fn=@md.file.base_filename.pdf_l_a4(fnh)
- path_and_file(fn)
- end
- def pdf_portrait
- fn=@md.file.base_filename.pdf_p_a4(fnh)
- path_and_file(fn)
- end
- def odt
- fn=@md.file.base_filename.odt(fnh)
- path_and_file(fn)
- end
- def xhtml
- fn=@md.file.base_filename.xhtml(fnh)
- path_and_file(fn)
- end
- def docbook
- fn=@md.file.base_filename.xml_docbook_book(fnh)
- path_and_file(fn)
- end
- def xml_sax
- fn=@md.file.base_filename.xml_sax(fnh)
- path_and_file(fn)
- end
- def xml_dom
- fn=@md.file.base_filename.xml_dom(fnh)
- path_and_file(fn)
- end
- def txt
- fn=@md.file.base_filename.txt(fnh)
- path_and_file(fn)
- end
- def digest
- fn=@md.file.base_filename.hash_digest(fnh)
- path_and_file(fn)
- 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_={
- status: :false,
- type: :na,
- }
- data.each do |para|
- codeblock_=if para =~/^code(?:\.[a-z][0-9a-z_]+)?\{/ \
- and codeblock_[:status]==:false
- {
- status: :true,
- type: :curl,
- }
- elsif para =~/^```[ ]+code(?:\.[a-z][0-9a-z_]+)?/ \
- and codeblock_[:status]==:false
- {
- status: :true,
- type: :tics,
- }
- elsif codeblock_[:type]==:curl \
- and para =~/^\}code/m
- {
- status: :false,
- type: :na,
- }
- elsif codeblock_[:type]==:tics \
- and para =~/^```(?:\s|$)/m
- {
- status: :false,
- type: :na,
- }
- else codeblock_
- end
- if para !~/^%+\s/ \
- and codeblock_[:status] != :true \
- and para =~/\{(?:~\^\s+)?(.+?)\s\[(?:\d(?:[sS]*))\]\}(?:\.\.\/\S+?\/|\S+?\.ss[tm]\b)/
- @u=SiSU_Env::InfoEnv.new.url
- m_cmd=''
- if defined? @u.remote
- if /(?<m_pre>.+?)\{(?<m_txt>.+?)\s\[(?<m_cmd>\d[sS]*)\]\}(?<m_source>(?<m_linked_doc>\S+?)\.ss[tm]\b)(?<m_note>.*)/m =~ para
- m_pre=m_pre.strip
- elsif /\{(?<m_txt>.+?)\s\[(?<m_cmd>\d[sS]*)\]\}(?<m_source>(?<m_linked_doc>\S+?)\.ss[tm]\b)(?<m_note>.*)/m =~ para
- end
- if m_linked_doc =~ /(\S+?)\/(\S+)/
- m_linked_doc,m_linked_doc_lang=$1,$2
- else
- m_linked_doc,m_linked_doc_lang=m_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+)?(?<m_txt>.+?)\s\[(?<m_cmd>\d[sS]*)\]\}\.\.\/(?<m_linked_doc>\S+?)\/(?<m_note>\s+#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]})?/ =~ para
- end
- end
- lnk=case @md.opt.dir_structure_by
- when :language
- {
- manifest: by_language(m_linked_doc,m_linked_doc_lang).manifest,
- html_toc: by_language(m_linked_doc,m_linked_doc_lang).html_toc,
- html_doc: by_language(m_linked_doc,m_linked_doc_lang).html_doc,
- epub: by_language(m_linked_doc,m_linked_doc_lang).epub,
- pdf_landscape: by_language(m_linked_doc,m_linked_doc_lang).pdf_landscape,
- pdf_portrait: by_language(m_linked_doc,m_linked_doc_lang).pdf_landscape,
- odt: by_language(m_linked_doc,m_linked_doc_lang).odt,
- xhtml: by_language(m_linked_doc,m_linked_doc_lang).xhtml,
- docbook: by_language(m_linked_doc,m_linked_doc_lang).docbook,
- xml_sax: by_language(m_linked_doc,m_linked_doc_lang).xml_sax,
- xml_dom: by_language(m_linked_doc,m_linked_doc_lang).xml_dom,
- txt: by_language(m_linked_doc,m_linked_doc_lang).txt,
- html_concordance: by_language(m_linked_doc,m_linked_doc_lang).html_concordance,
- digest: by_language(m_linked_doc,m_linked_doc_lang).digest,
- sisupod: by_language(m_linked_doc,m_linked_doc_lang,m_source).sisupod,
- source: by_language(m_linked_doc,m_linked_doc_lang,m_source).source,
- }
- when :filetype
- {
- manifest: by_filetype(m_linked_doc,m_linked_doc_lang).manifest,
- html_toc: by_filetype(m_linked_doc,m_linked_doc_lang).html_toc,
- html_doc: by_filetype(m_linked_doc,m_linked_doc_lang).html_doc,
- epub: by_filetype(m_linked_doc,m_linked_doc_lang).epub,
- pdf_landscape: by_filetype(m_linked_doc,m_linked_doc_lang).pdf_landscape,
- pdf_portrait: by_filetype(m_linked_doc,m_linked_doc_lang).pdf_landscape,
- odt: by_filetype(m_linked_doc,m_linked_doc_lang).odt,
- xhtml: by_filetype(m_linked_doc,m_linked_doc_lang).xhtml,
- docbook: by_filetype(m_linked_doc,m_linked_doc_lang).docbook,
- xml_sax: by_filetype(m_linked_doc,m_linked_doc_lang).xml_sax,
- xml_dom: by_filetype(m_linked_doc,m_linked_doc_lang).xml_dom,
- txt: by_filetype(m_linked_doc,m_linked_doc_lang).txt,
- html_concordance: by_filetype(m_linked_doc,m_linked_doc_lang).html_concordance,
- digest: by_filetype(m_linked_doc,m_linked_doc_lang).digest,
- sisupod: by_filetype(m_linked_doc,m_linked_doc_lang,m_source).sisupod,
- source: by_filetype(m_linked_doc,m_linked_doc_lang,m_source).source,
- }
- else
- {
- manifest: by_filename(m_linked_doc,m_linked_doc_lang).manifest,
- html_toc: by_filename(m_linked_doc,m_linked_doc_lang).html_toc,
- html_doc: by_filename(m_linked_doc,m_linked_doc_lang).html_doc,
- epub: by_filename(m_linked_doc,m_linked_doc_lang).epub,
- pdf_landscape: by_filename(m_linked_doc,m_linked_doc_lang).pdf_landscape,
- pdf_portrait: by_filename(m_linked_doc,m_linked_doc_lang).pdf_landscape,
- odt: by_filename(m_linked_doc,m_linked_doc_lang).odt,
- xhtml: by_filename(m_linked_doc,m_linked_doc_lang).xhtml,
- docbook: by_filename(m_linked_doc,m_linked_doc_lang).docbook,
- xml_sax: by_filename(m_linked_doc,m_linked_doc_lang).xml_sax,
- xml_dom: by_filename(m_linked_doc,m_linked_doc_lang).xml_dom,
- txt: by_filename(m_linked_doc,m_linked_doc_lang).txt,
- html_concordance: by_filename(m_linked_doc,m_linked_doc_lang).html_concordance,
- digest: by_filename(m_linked_doc,m_linked_doc_lang).digest,
- sisupod: by_filename(m_linked_doc,m_linked_doc_lang,m_source).sisupod,
- source: by_filename(m_linked_doc,m_linked_doc_lang,m_source).source,
- }
- end
- linked_title="#{m_pre}{#{m_txt} }#{lnk[:manifest]}#{m_note}\n\n"
- tuned_file_tmp << linked_title
- output_filetypes=output_filetypes_in_cmd(m_cmd,lnk)
- output_filetypes[:gen].each do |desc|
- if desc
- tuned_file_tmp << if @u.remote
- "#{Mx[:nbsp]*4} #{desc} "
- else # remove ...
- "[provide document placement host location]"
- end
- end
- end
- output_filetypes[:src].each do |desc|
- if desc
- tuned_file_tmp << if @u.remote
- "#{Mx[:nbsp]*4} #{desc} "
- 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/develop/ao_hash_digest.rb b/lib/sisu/develop/ao_hash_digest.rb
deleted file mode 100644
index 39f34f8..0000000
--- a/lib/sisu/develop/ao_hash_digest.rb
+++ /dev/null
@@ -1,174 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_hash_digest.rb;hb=HEAD>
-
-=end
-module SiSU_AO_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,@md)
- 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(@md.opt).type
- begin
- sha_ ? (require 'digest/sha2') : (require 'digest/md5')
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error(sha_ + ' NOT FOUND')
- end
- data.each do |t_o|
- unless t_o.obj.is_a?(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.is_a?(Fixnum)
- case sha_
- when :sha512
- for hash_class in [ Digest::SHA512 ]
- @tuned_file << stamped(t_o,hash_class)
- end
- when :sha256
- for hash_class in [ Digest::SHA256 ]
- @tuned_file << stamped(t_o,hash_class)
- end
- when :md5
- 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 ao object including ocn, & add into to each ao object
- end
- def endnote_digest(data)
- data.each.map do |en_plus|
- 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=case @env.digest(@md.opt).type
- when :sha512
- Digest::SHA512.hexdigest(stripped_en)
- when :sha256
- Digest::SHA256.hexdigest(stripped_en)
- when :md5
- Digest::MD5.hexdigest(stripped_en)
- else
- Digest::SHA256.hexdigest(stripped_en)
- end
- t_o_txt +
- en_open +
- en_txt +
- Mx[:id_o] +
- digest_en_strip +
- Mx[:id_c] +
- en_close
- else STDERR.puts "Error Exception - problem encountered with:\n#{en_plus}" #arbitrary exception, tidy up
- end
- else en_plus
- end
- end.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
- #SiSU_TextRepresentation::Alter.new(t_o).strip_clean_of_markup #check
- #SiSU_TextRepresentation::Alter.new(t_o).semi_revert_markup #check
- #SiSU_TextRepresentation::ModifiedTextPlusHashDigest.new(@md,t_o).composite.dgst #check
- 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_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)
- en_and_t_o_digest.join(' ')
- 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) # ao 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/develop/ao_idx.rb b/lib/sisu/develop/ao_idx.rb
deleted file mode 100644
index cbe3f00..0000000
--- a/lib/sisu/develop/ao_idx.rb
+++ /dev/null
@@ -1,422 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_idx.rb;hb=HEAD>
-
-=end
-module SiSU_AO_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
- if defined? dob.idx \
- and dob.idx.is_a?(Hash)
- idx_array << {
- idx: dob.idx,
- ocn: dob.ocn,
- seg: @seg
- }
- end
- tuned_file << dob if dob
- end
- if idx_array.length > 0
- the_idx=construct_book_index(idx_array)
- 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]
- else
- sisu_markup_idx_rel=
- sisu_markup_idx_rel_html_seg=
- html_idx=
- xhtml_idx=
- nil
- end
- end
- [
- tuned_file,
- sisu_markup_idx_rel,
- sisu_markup_idx_rel_html_seg,
- html_idx,
- xhtml_idx,
- ]
- end
- def construct_book_index(idx_array)
- the_idx={}
- idx_array.each do |idx|
- idx[:idx].each_pair do |term,term_info|
- location=(term_info[:plus].to_i > 0) \
- ? (%{#{idx[:ocn]}-#{idx[:ocn].to_i + term_info[:plus].to_i}})
- : idx[:ocn].to_s
- the_idx[term]={} \
- unless the_idx[term] \
- and defined? the_idx[term]
- the_idx[term]['node_0_terms']=[] \
- unless the_idx[term]['node_0_terms'] \
- and defined? the_idx[term]['node_0_terms']
- the_idx[term]['node_0_terms'] << { ocn: idx[:ocn], range: location, seg: idx[:seg] }
- if term_info[:sub].is_a?(Array) \
- and term_info[:sub].length > 0
- term_info[:sub].each do |y|
- y.each_pair do |subterm,subterm_info|
- location=(subterm_info[:plus].to_i > 0) \
- ? (%{#{idx[:ocn]}-#{idx[:ocn].to_i + subterm_info[:plus].to_i}})
- : idx[:ocn].to_s
- the_idx[term]={} \
- unless the_idx[term] \
- and defined? the_idx[term]
- the_idx[term]['node_0_terms']=[] \
- unless the_idx[term]['node_0_terms']\
- and defined? the_idx[term]['node_0_terms']
- the_idx[term]['node_1_subterms']={} \
- unless the_idx[term]['node_1_subterms'] \
- and defined? the_idx[term]['node_1_subterms']
- the_idx[term]['node_1_subterms'][subterm]=[] \
- unless the_idx[term]['node_1_subterms'][subterm] \
- and defined? the_idx[term]['node_1_subterms'][subterm]
- the_idx[term]['node_1_subterms'][subterm] <<
- { ocn: idx[:ocn], range: location, seg: idx[:seg] }
- end
- end
- end
- end
- end
- the_idx=the_idx.sort
- the_idx
- end
- def clean_xml(str)
- str=str.gsub(/&/,'&amp;')
- 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_AO_DocumentStructure::ObjectLayout.new.break(h)
- idx[:sst_rel_html_seg] << o
- idx[:sst_rel] << o
- h={
- lv: '1',
- name: 'index',
- obj: "Index"
- }
- o=SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h)
- idx[:sst_rel_html_seg] << o
- idx[:sst_rel] << o
- h={
- lv: '4',
- name: 'idx',
- obj: " [Index] #{Mx[:pa_non_object_dummy_heading]}"
- }
- o=SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h)
- idx[:sst_rel_html_seg] << o
- idx[:sst_rel] << o
- alph=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]
- 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>,#{$ep[:hsp]}}
- idx[:xhtml] <<
- %{<a href="##{x.downcase}">#{x}</a>,#{$ep[:hsp]}}
- 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.is_a?(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.act[:verbose_plus][:set]==:on
- elsif x.is_a?(Array)
- p 'array error? -->'
- print x
- elsif x.is_a?(Hash)
- if x['node_0_terms'].is_a?(Array)
- x['node_0_terms'].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.act[:verbose_plus][:set]==:on
- 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.act[:verbose_plus][:set]==:on
- else p 'error'
- end
- end
- idx[:html][@q]=idx[:html][@q] + '</p>'
- idx[:xhtml][@r]=idx[:xhtml][@r] + '</p>'
- end
- if x['node_1_subterms']
- x['node_1_subterms'].sort.each do |k,y|
- if k !~/node_0_terms/
- 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.act[:verbose_plus][:set]==:on
- 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.act[:verbose_plus][:set]==:on
- 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.act[:verbose_plus][:set]==:on
- else p 'error'
- end
- end
- idx[:html][@q]=idx[:html][@q] + '</p>'
- idx[:xhtml][@r]=idx[:xhtml][@r] + '</p>'
- end
- end
- end
- @x +=1
- end
- end
- end
- print "\n" if @md.opt.act[:verbose_plus][:set]==:on
- idx
- end
- def screen_print(the_idx)
- the_idx.each do |i|
- i.each do |x|
- if x.is_a?(String)
- print "\n" + x + ', '
- elsif x.is_a?(Array)
- p 'array error? -->'
- print x
- elsif x.is_a?(Hash)
- if x['node_0_terms'].is_a?(Array)
- x['node_0_terms'].each do |a|
- if a[:range]
- print a[:range] + ', '
- elsif a[:ocn]
- print a[:ocn] + ', '
- else p 'error'
- end
- end
- end
- if x['node_1_subterms']
- x['node_1_subterms'].sort.each do |k,y|
- if k !~/node_0_terms/
- 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
- data.each.map do |para|
- para.gsub(/\n*#{@rgx_idx}/m,'')
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_images.rb b/lib/sisu/develop/ao_images.rb
deleted file mode 100644
index f6ef8e1..0000000
--- a/lib/sisu/develop/ao_images.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_images.rb;hb=HEAD>
-
-=end
-module SiSU_AO_Images
- class Images
- begin
- require 'RMagick'
- include Magick
- rescue LoadError
- #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('RMagic NOT FOUND')
- end
- def initialize(md,data)
- @md,@data=md,data
- end
- def images
- data=@data
- @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.act[:verbose_plus][:set]==:on \
- || @md.opt.act[:maintenance][:set]==:on)
- SiSU_Screen::Ansi.new(
- @md.opt.act[:color_state][:set],
- '*WARN* use of RMagick is not enabled in sisurc.yml'
- ).warn
- end
- end
- data.select 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.act[:verbose_plus][:set]==:on \
- || @md.opt.act[:maintenance][:set]==:on)
- SiSU_Screen::Ansi.new(
- @md.opt.act[:color_state][:set],
- '*WARN* RMagick not present, will attempt to use imagemagick (identify) directly'
- ).warn
- end
- imgk=SiSU_Env::SystemCall.new.imagemagick
- gmgk=SiSU_Env::SystemCall.new.graphicsmagick
- 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
- else
- errmsg='imagemagick or graphicsmagick are required to process images'
- if @md.opt.act[:no_stop][:set]==:on
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error("#{errmsg}, proceeding (as requested) without image processing")
- break
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error("#{errmsg}, STOPPING")
- exit
- end
- 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.act[:color_state][:set],
- '*WARN* where image dimensions have not been provided RMagick or imagemagick is required',image
- ).warn unless @md.opt.act[:quiet][:set]==:on
- 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
- dob unless dob.nil?
- end
- end
- end
-end
-__END__
-imgsys=`identify #{image_path}/#{image}`.strip
diff --git a/lib/sisu/develop/ao_metadata.rb b/lib/sisu/develop/ao_metadata.rb
deleted file mode 100644
index 9574321..0000000
--- a/lib/sisu/develop/ao_metadata.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_metadata.rb;hb=HEAD>
-
-=end
-module SiSU_AO_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_AO_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- def make_heading(obj,ocn,name,lv,ln)
- h={
- lv: lv,
- ln: ln,
- name: name,
- obj: obj,
- ocn: 0
- }
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h)
- end
- def metadata
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_misc_arrange.rb b/lib/sisu/develop/ao_misc_arrange.rb
deleted file mode 100644
index 8f8fe36..0000000
--- a/lib/sisu/develop/ao_misc_arrange.rb
+++ /dev/null
@@ -1,207 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_misc_arrange.rb;hb=HEAD>
-
-=end
-module SiSU_AO_MiscArrangeText
- class SI
- def initialize(md,data)
- @md,@data=md,data
- end
- def conditional_headings(para)
- para=para.gsub(/^(:?A~)\s*$/,'\1~ @title @author'). #conditional header
- gsub(/^((?:[1-9]|:?[A-D])~\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
- para
- end
- def markup_blocks(para)
- def ticks(para)
- block_open,block_close,text=nil,nil,nil
- if para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m
- @flag=:close
- block_open,text,block_close=
- /\A(```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?)\n(.+?)\n(```([ ]+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.
- match(para)[1..3]
- ((para=~/^```[ ]+table(?:~h)?\s+/) \
- and (para !~/^```[ ]+table(?:~h)?\s+c\d+/)) \
- ? para
- : (para=[]; para << block_open << text << block_close)
- elsif para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.*?\Z/m #look at, study
- @flag=:open
- block_open,text=/\A(```(?:[ ]+.+?))\n(.*?)\Z/m.match(para)[1,2]
- para=[]
- if not text.to_s.empty?
- para << block_open << text
- else
- para << block_open
- end
- elsif para =~/\A.+?\n```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(\s*=\{.+?\})?\s*\Z/m \
- and @flag==:open
- @flag=:close
- text,block_close=
- /\A(.+?)\n(```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(?:\s+=\{.+?\})?)\s*\Z/m.match(para)[1,2]
- para=[]
- if not text.to_s.empty?
- para << text.to_s << block_close
- else
- para << block_close
- end
- else para
- end
- para
- end
- def ticks_remove(para)
- unless @md.opt.act[:quiet][:set] ==:on
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- mark("ticks not recognized, ticks removed from pargraph\n#{para}")
- end
- para=para.gsub(/```[ ]+\S+[ ]*/m,'').
- gsub(/```\s*/m,'').
- strip
- end
- def ticks_quote(para)
- @flag=:quote_open
- text=para
- para=[]
- if text =~ /```[ ]+quote/m
- para << '`:quote_open`'
- text=text.gsub(/```[ ]+quote/m,'')
- end
- text=if text =~/(?:\n|\A)=\{.+?\}/m #exclude book index from indent markup
- txt,bkidx,tail=/(.+?)((?:\n|\A)=\{.+?\}$)(.*)/m.match(text).captures
- txt=txt.gsub(/(?:\n|\A)([^`\n]+)/m,'_1 \1')
- txt + bkidx + tail
- else text.gsub(/(?:\n|\A)([^`\n]+)/m,'_1 \1')
- end
- para << text.gsub(/```/m,'')
- if text =~/```/m
- @flag=:quote_close
- para << '`:quote_close`'
- end
- para
- end
- def curly_braces(para)
- block_open,block_close,text=nil,nil,nil
- para=if para =~/\A(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?\n.+?\n\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m
- block_open,text,block_close=
- /\A((?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?)\n(.+?)\n(\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?)\s*\Z/m.
- match(para)[1..3]
- para=[]
- para << block_open << text << block_close
- elsif para =~/\A(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?\n.+?\Z/m
- block_open,text=
- /\A((?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?)\n(.+?)\Z/m.
- match(para)[1,2]
- para=[]
- if not text.to_s.empty?
- para << block_open << text
- else
- para << block_open
- end
- elsif para =~/\A.+?\n\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m
- text,block_close=
- /\A(.+?)\n(\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?)\s*\Z/m.
- match(para)[1,2]
- para=[]
- if not text.to_s.empty?
- para << text.to_s << block_close
- else
- para << block_close
- end
- else para
- end
- para
- end
- para=if (para =~/\A```[ ]+quote/m \
- and @flag !=:open) \
- or @flag==:quote_open
- ticks_quote(para)
- elsif para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.*?\Z/m \
- or @flag==:open
- ticks(para)
- elsif para =~/```/m
- ticks_remove(para)
- else
- para
- end
- para=if para =~/^(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{|^\}(?:code|box|poem|alt|group|block|table)/m
- curly_braces(para)
- else
- para
- end
- end
- def prepare_text
- data=@data
- 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.map do |para|
- para=conditional_headings(para)
- markup_blocks(para)
- end.flatten
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_numbering.rb b/lib/sisu/develop/ao_numbering.rb
deleted file mode 100644
index 38054fa..0000000
--- a/lib/sisu/develop/ao_numbering.rb
+++ /dev/null
@@ -1,720 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_numbering.rb;hb=HEAD>
-
-=end
-module SiSU_AO_Numbering
- class Numbering
- attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment
- @@segments_count=0
- def initialize(md,data,fnx,process)
- @md,@data,@fnx,@process=md,data,fnx,process
- @obj=@type=@ocn=@lv=@name=@index=@comment=nil
- @chosen_seg_names=[]
- end
- def chosen_seg_names(chosen,chosen_seg_name,dob,md,type)
- @chosen_seg_names=if chosen.compact.uniq.length \
- == chosen.compact.length
- chosen
- else
- if md.opt.act[:maintenance][:set]==:on
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).
- mark(
- "duplicated auto segment name: #{type} #{chosen}\n" \
- + "#{chosen}\n" \
- + " manually name level 1 segments '1~given_name'\n" \
- + 'filename: ' + md.fns + "\n" \
- + 'heading text: "' + dob.obj + '"' + "\n" \
- + 'duplication: "' + chosen_seg_name + '" (level: ' + dob.lv + '; numbering type: ' + type.to_s + ')'
- )
- end
- chosen=chosen[0..-2]
- chosen_seg_name=auto_numbering_exceptions(chosen,md,dob)
- chosen << chosen_seg_name
- end
- end
- def number_of_segments?
- if @@segments_count==0
- @data.each do |dob|
- if dob.is == :heading \
- and dob.lv == '1'
- @@segments_count += 1
- end
- end
- @@segments_count
- else @@segments_count
- end
- end
- def numbering_song
- begin
- 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)
- if @process==:complete
- data,tags_map,ocn_html_seg_map=name_para_seg_filename(data)
- end
- data=set_heading_top(data) unless @md.set_heading_top
- [data,tags_map,ocn_html_seg_map]
- ensure
- @@segments_count=0
- end
- end
- def set_tags(tags,tag)
- tags=if not tag.empty? \
- and tag !~/^\d+$/
- tag=tag.gsub(/[^a-z0-9._-]/,'')
- [tag,tags].flatten
- else tags
- end
- 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.is_a?(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 /-/ then dob.obj.gsub(/^/,"#{title_no} ")
- when /^#/ then dob.obj.gsub(/^/,"#{title_no} ")
- when /^[a-z_\.]+/ then 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
- 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=0
- if num_top
- no1=num_top; no2=(num_top + 1); no3=(num_top + 2)
- end
- chapter_number_counter=0
- data=data.compact
- @tuned_file=data.each.map do |dob| #@md.seg_names << [additions to segment names]
- title_no=nil
- 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 =~/^[0-6]/ \
- and not dob.use_ ==:dummy \
- 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 @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(title_no)
- if dob.ln==no1
- dob.name="#{title_no}" if not dob.name
- dob.tags=set_tags(dob.tags,title_no)
- tag=dob.obj.
- gsub(/(Article|Clause|Section|Chapter)\s+/,
- "\\1_#{title_no}").
- downcase
- tag=heading_tag_clean(tag)
- dob.tags=set_tags(dob.tags,tag)
- 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=set_tags(dob.tags,title_no)
- 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=set_tags(dob.tags,title_no)
- dob.obj=dob.obj.gsub(/^/i,"#{title_no}. ")
- end
- end
- if dob.ln==no1 #watch because here you change dob.name
- dob.tags=set_tags(dob.tags,"h#{title_no}")
- 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=set_tags(dob.tags,"h#{title_no}")
- 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=set_tags(dob.tags,"h#{title_no}")
- dob=number_sub_heading(dob,no3,title_no)
- end
- elsif dob.ln.to_s =~/^[0-6]/ \
- and dob.name =~ /^[\w-]+-/ # endnotes, watch2005# endnotes, watch2005
- dob.tags=set_tags(dob.tags,dob.name)
- 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 =~/^[0-9]/ \
- and dob.obj =~ /^([\d\.]+)/ #risky (must be unique) consider output to 4~~\d instead of 4~\d
- dob.name=$1
- dob.tags=set_tags(dob.tags,dob.name)
- end
- if @md.toc_lev_limit
- end
- elsif defined? dob.name \
- and dob.name
- dob.tags=set_tags(dob.tags,dob.name)
- end
- dob.tags=dob.tags.uniq if defined? dob.tags
- dob
- end.flatten
- end
- def ocn(data) #and auto segment numbering increment
- @tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data,@fnx,@process).ocn
- @tuned_file
- end
- def xml(data)
- @tuned_file=SiSU_AO_DocumentStructureExtract::XML.new(@md,data).dom
- @tuned_file
- end
- def minor_numbering(data) #and auto segment numbering increment
- 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 )
- @tuned_file=data.each.map 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=~/^[0-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
- dob
- end.flatten
- end
- def leading_zeros_fixed_width_number(possible_seg_name)
- if possible_seg_name.to_s =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/
- possible_seg_name=possible_seg_name.to_s.
- gsub(/\.$/,'')
- nl=possible_seg_name.to_s.length
- zero='0'
- zeros_fixed_width=number_of_segments?.to_s.length
- zero_width=(zeros_fixed_width - nl)
- zero_width == 0 \
- ? possible_seg_name.to_s
- : zero*zero_width +
- possible_seg_name.to_s
- end
- end
- def auto_numbering_exceptions(chosen_seg_names_,md,dob)
- number_make=case dob.lv.to_i
- when 1
- @num_exc={
- t1: @num_exc[:t1] += 1,
- t2: 0,
- t3: 0,
- t4: 0
- }
- Mx[:segname_prefix_auto_num_other] + '_' \
- + @num_exc[:t1].to_s
- when 2
- @num_exc={
- t1: @num_exc[:t1],
- t2: @num_exc[:t2] += 1,
- t3: 0,
- t4: 0
- }
- Mx[:segname_prefix_auto_num_other] + '_' \
- + @num_exc[:t1].to_s + '_' \
- + @num_exc[:t2].to_s
- when 3
- @num_exc={
- t1: @num_exc[:t1],
- t2: @num_exc[:t2],
- t3: @num_exc[:t3] += 1,
- t4: 0
- }
- Mx[:segname_prefix_auto_num_other] + '_' \
- + @num_exc[:t1].to_s + '_' \
- + @num_exc[:t2].to_s + '_' \
- + @num_exc[:t3].to_s
- when 4
- @num_exc[:t4] += 1
- @num_exc={
- t1: @num_exc[:t1],
- t2: @num_exc[:t2],
- t3: @num_exc[:t3],
- t4: @num_exc[:t4] += 1
- }
- Mx[:segname_prefix_auto_num_other] + '_' \
- + @num_exc[:t1].to_s + '_' \
- + @num_exc[:t2].to_s + '_' \
- + @num_exc[:t3].to_s + '_' \
- + @num_exc[:t4].to_s
- end
- end
- def check_that_seg_names_are_unique(chosen_seg_names_,chosen_seg_name,type,md,dob)
- begin
- chosen_seg_names_ << chosen_seg_name
- chosen_seg_names_=chosen_seg_names(chosen_seg_names_,chosen_seg_name,dob,md,type)
- if chosen_seg_names_.compact.uniq.length \
- == chosen_seg_names_.compact.length
- #check that all auto given seg names are unique
- chosen_seg_names_=chosen_seg_names(chosen_seg_names_,chosen_seg_name,dob,md,type)
- chosen_seg_name
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).
- mark(
- "duplicated auto segment name: #{type} #{chosen_seg_name}\n" \
- + "#{chosen_seg_names_}\n" \
- + " manually name level 1 segments '1~given_name'\n" \
- + 'filename: ' + md.fns + "\n" \
- + 'heading text: "' + dob.obj + '"' + "\n" \
- + 'duplication: "' + chosen_seg_name + '" (level: ' + dob.lv + '; numbering type: ' + type.to_s + ')'
- )
- chosen_seg_name=auto_numbering_exceptions(chosen_seg_names_,md,dob)
- check_that_seg_names_are_unique(chosen_seg_names_,chosen_seg_name,:exception,md,dob)
- end
- rescue
- end
- end
- def auto_seg_name(possible_seg_name,heading_num_is,dob,type)
- prefix=case type
- when :auto then Mx[:segname_prefix_auto_num_provide]
- when :extract then Mx[:segname_prefix_auto_num_extract]
- else '_'*dob.lv.to_i #should not occur
- end
- if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/
- possible_seg_name=possible_seg_name.
- gsub(/\.$/,'')
- end
- @chosen_seg_name=
- if dob.lv=='4' \
- and possible_seg_name.to_s =~/^[0-9]+(?:[.,:-][0-9]){3}/m
- possible_seg_name=possible_seg_name.to_s.
- gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- prefix + possible_seg_name
- elsif dob.lv=='3' \
- and possible_seg_name.to_s =~/^[0-9]+(?:[.,:-][0-9]){2}/m
- possible_seg_name=possible_seg_name.to_s.
- gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- prefix + possible_seg_name
- elsif dob.lv=='2' \
- and possible_seg_name.to_s =~/^[0-9]+(?:[.,:-][0-9]){1}/m
- possible_seg_name=possible_seg_name.to_s.
- gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- prefix + possible_seg_name
- elsif dob.lv=='1' \
- and possible_seg_name.to_s =~/^[0-9]+[:,-]?$/m
- if possible_seg_name.to_i <= heading_num_is.to_i
- prefix + leading_zeros_fixed_width_number(possible_seg_name)
- else
- possible_seg_name=possible_seg_name.to_s.
- gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- prefix + possible_seg_name
- end
- else
- @chosen_seg_name=auto_numbering_exceptions(@chosen_seg_names,md,dob)
- end
- check_that_seg_names_are_unique(@chosen_seg_names,@chosen_seg_name,type,@md,dob)
- end
- def set_name_and_tags(dob,possible_seg_name)
- if @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(possible_seg_name)
- dob.name=possible_seg_name
- dob.tags=set_tags(dob.tags,dob.name)
- @md.seg_names << possible_seg_name
- elsif (@md.opt.act[:verbose_plus][:set]==:on \
- or @md.opt.act[:maintenance][:set]==:on)
- puts 'warn, there may be a conflicting numbering scheme'
- end
- 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=0
- @counter=1
- if not @md.seg_autoname_safe \
- and (@md.opt.act[:verbose_plus][:set]==:on \
- || @md.opt.act[:maintenance][:set]==:on)
- puts 'manual segment names, numbers used as names, risk warning (segmented html)'
- end
- ocn_html_seg=[]
- @num_exc={ t1: 0, t2: 0, t3: 0, t4: 0 }
- data.each do |dob|
- if dob.is==:heading \
- && dob.ln \
- and dob.ln.to_s =~/^[4-7]/
- heading_num_is=/^\d+:(\d+);\d/m.match(dob.node)[1]
- 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.ln.to_s =~/^[5-7]/ \
- and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9])+)/m
- #heading starts with a recognised numeric
- #or word followed by a recognised numeric construct,
- #use that as name
- if dob.ln==7 \
- and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9]){3})/m
- possible_seg_name=$1.
- gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- possible_seg_name=
- auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
- set_name_and_tags(dob,possible_seg_name)
- elsif dob.ln==6 \
- and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9]){2})/m
- possible_seg_name=$1.
- gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- possible_seg_name=
- auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
- set_name_and_tags(dob,possible_seg_name)
- elsif dob.ln==5 \
- and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9]){1})/m
- possible_seg_name=$1.
- gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- possible_seg_name=
- auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
- set_name_and_tags(dob,possible_seg_name)
- end
- end
- if dob.ln==4
- if dob.name !~/^\S+/ \
- and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+)/m
- #heading starts with a recognised numeric
- #or word followed by a recognised numeric construct,
- #use that as name
- possible_seg_name=$1
- possible_seg_name=
- auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
- set_name_and_tags(dob,possible_seg_name)
- end
- if dob.name
- #extract segment name from embedded document structure info
- if @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(dob.name)
- dob.tags=set_tags(dob.tags,dob.name)
- @md.seg_names << dob.name
- end
- else
- #if no segment name,
- #provide a numerical one
- @art_filename_auto+=1
- possible_seg_name=
- auto_seg_name(@art_filename_auto,heading_num_is,dob,:auto)
- if @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(possible_seg_name)
- dob.name=possible_seg_name
- dob.tags=set_tags(dob.tags,dob.name)
- @md.seg_names << possible_seg_name
- else puts 'segment name (numbering) error'
- end
- end
- if not dob.name #should not occur
- puts "e r r o r -\t#{__FILE__}::#{__LINE__}\n#{dob.inspect}"
- end
- 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 || @md.pageline)
- m=dob.ln.to_s
- dob_tmp=[]
- if @md.pagenew.inspect =~/#{m}/
- dob_tmp <<
- SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) <<
- dob
- elsif @md.pagebreak.inspect =~/#{m}/
- dob_tmp <<
- SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) <<
- dob
- elsif @md.pageline.inspect =~/#{m}/
- dob_tmp <<
- SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line]) <<
- dob
- end
- 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)
- if dob.ln =~/[0-3]/
- {
- seg: nil,
- level: dob.ln,
- }
- #elsif dob.ln =~/[4-6]/
- else
- {
- 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 |y|
- tags[y]={ 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]/
- (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
- if (@md.opt.act[:verbose_plus][:set]==:on \
- or @md.opt.act[:maintenance][:set]==:on)
- puts "\tdocument contains no top level heading, (will have to manufacture one)"
- end
- @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
- if (@md.opt.act[:verbose_plus][:set]==:on \
- or @md.opt.act[:maintenance][:set]==:on)
- puts "\tdocument contains no segment level, (will have to manufacture one)"
- end
- @tuned_file=[]
- data.each do |dob|
- unless @md.set_heading_seg
- if defined? dob.ln and dob.ln.to_s !~/^[0-3]/m \
- and dob.obj !~/\A\s*\Z/m \
- and dob.is !=:layout
- @md.set_heading_seg=true
- head=@md.title.main \
- ? (dob.ln,dob.name,dob.obj=4,'seg',@md.title.main)
- : (dob.ln,dob.name,dob.obj=4,'seg','[segment]')
- @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
- if (@md.opt.act[:verbose_plus][:set]==:on \
- or @md.opt.act[:maintenance][:set]==:on)
- puts "\t no document title provided, (will have to manufacture one)"
- end
- @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/develop/ao_persist.rb b/lib/sisu/develop/ao_persist.rb
deleted file mode 100644
index 51ff6e0..0000000
--- a/lib/sisu/develop/ao_persist.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** document abstraction
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_persist.rb;hb=HEAD>
-
-=end
-module SiSU_AO_Persist
- class Persist
- @@persistance=nil
- attr_accessor :fns, :ao_arr, :idx_arr_sst, :idx_arr_tex, :idx_arr_html, :idx_arr_xhtml, :map_arr_nametags, :map_arr_ocn_htmlseg
- def initialize(args=nil)
- @@persistance=args=(args ? args : (@@persistance || persist_init_hash_values))
- @fns=args[:fns]
- @ao_arr=args[:ao_arr]
- @idx_arr_sst=args[:idx_arr_sst]
- @idx_arr_tex=args[:idx_arr_tex]
- @idx_arr_html=args[:idx_arr_html]
- @idx_arr_xhtml=args[:idx_arr_xhtml]
- @map_arr_nametags=args[:map_arr_nametags]
- @map_arr_ocn_htmlseg=args[:map_arr_ocn_htmlseg]
- end
- def fns
- @fns
- end
- def ao_arr
- @ao_arr
- end
- def idx_arr_sst
- @idx_arr_sst
- end
- def idx_arr_tex
- @idx_arr_tex
- end
- def idx_arr_html
- @idx_arr_html
- end
- def idx_arr_xhtml
- @idx_arr_xhtml
- end
- def map_arr_nametags
- @map_arr_nametags
- end
- def map_arr_ocn_htmlseg
- @map_arr_ocn_htmlseg
- end
- def persist_init_hash_values
- {
- fns: nil,
- ao_arr: [],
- idx_arr_sst: [],
- idx_arr_tex: [],
- idx_arr_html: [],
- idx_arr_xhtml: [],
- map_arr_nametags: [],
- map_arr_ocn_htmlseg: [],
- }
- end
- def persist_init
- @@persistance=nil
- Persist.new(persist_init_hash_values)
- end
- end
- class PersistDocStructExt
- @@persist=nil
- attr_accessor :ocn, :lng, :lng_is, :code, :lngsyn, :poem, :block, :box, :group, :alt, :quote, :table, :table_to
- def initialize(args=nil)
- @@persist=args=(args ? args : (@@persist || persist_init_hash_values))
- @ocn=args[:ocn]
- @lng=args[:lng]
- @lng_is=args[:lng_is]
- @code=args[:code]
- @lngsyn=args[:lngsyn]
- @poem=args[:poem]
- @block=args[:block]
- @box=args[:box]
- @group=args[:group]
- @alt=args[:alt]
- @quote=args[:quote]
- @table=args[:table]
- @table_to=args[:table_to]
- end
- def ocn
- @ocn
- end
- def lng
- @lng
- end
- def lng_is
- @lng_is
- end
- def code
- @code
- end
- def lngsyn
- @lngsyn
- end
- def poem
- @poem
- end
- def block
- @block
- end
- def box
- @box
- end
- def group
- @group
- end
- def alt
- @alt
- end
- def quote
- @quote
- end
- def table
- @table
- end
- def table_to
- @table_to
- end
- def persist_init_hash_values
- {
- ocn: :on,
- lng: :off,
- lng_is: :doc_default,
- code: :off,
- lngsyn: :txt,
- poem: :off,
- block: :off,
- box: :off,
- group: :off,
- alt: :off,
- quote: :off,
- table: :off,
- table_to: :off,
- }
- end
- def persist_init
- @@persist=nil
- PersistDocStructExt.new(persist_init_hash_values)
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_references.rb b/lib/sisu/develop/ao_references.rb
deleted file mode 100644
index 5ef94c6..0000000
--- a/lib/sisu/develop/ao_references.rb
+++ /dev/null
@@ -1,502 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_references.rb;hb=HEAD>
-
-=end
-module SiSU_AO_References
- class Bibliography
- def initialize(md,data)
- @md,@data=md,data
- end
- def sort_bibliography_array_by_author_year_title(bib)
- if bib
- bib.compact.sort_by do |c|
- [c[:author_arr][0],c[:year],c[:title]]
- end
- end
- end
- def citation_in_prepared_bibliography(cite)
- @cite=cite
- def article
- {
- is: :article,
- author_raw: nil,
- author: nil,
- author_arr: nil,
- title: nil,
- language: nil,
- journal: nil,
- volume: nil,
- editor: nil,
- year: nil,
- where: nil,
- url: nil,
- note: nil,
- short_name: nil,
- id: nil,
- }
- end
- def book
- {
- is: :book,
- author_raw: nil,
- author: nil,
- author_arr: nil,
- #editor: nil,
- title: nil,
- subtitle: nil,
- fulltitle: nil,
- language: nil,
- publisher: nil,
- edition: nil,
- year: nil,
- where: nil,
- url: nil,
- note: nil,
- short_name: nil,
- id: nil,
- }
- end
- def citation_metadata
- type=if @cite =~/^jo: \S+/m
- :article
- elsif @cite =~/^au: \S+/m
- :book
- end
- if type
- citeblock=@cite.split("\n")
- if type == :article
- citation=article
- citeblock.select do |meta|
- case meta
- when /^((?:au|author):\s+)\S+/ #req
- citation[:author_raw]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:ti|title):\s+)\S+/ #req
- citation[:title]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:lng|language):\s+)\S+/
- citation[:language]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:jo|journal):\s+)\S+/ #req?
- citation[:journal]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:vo|volume):\s+)\S+/
- citation[:volume]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:edr|editor):\s+)\S+/
- citation[:editor]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:yr|year):\s+)\S+/ #req?
- citation[:year]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:pst|publisher_state):\s+)\S+/
- citation[:where]=/^#{$1}(.+)/.match(meta)[1]
- when /^(url:\s+)\S+/
- citation[:url]=/^#{$1}(.+)/.match(meta)[1]
- when /^(note:\s+)\S+/
- citation[:note]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:sn|shortname):\s+)\S+/
- citation[:short_name]=/^#{$1}(.+)/.match(meta)[1]
- when /^(id:\s+)\S+/
- citation[:id]=/^#{$1}(.+)/.match(meta)[1]
- end
- end
- end
- if type == :book
- citation=book
- citeblock.select do |meta|
- case meta
- when /^((?:au|author):\s+)\S+/ #req
- citation[:author_raw]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:ti|title):\s+)\S+/ #req
- citation[:title]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:st|subtitle):\s+)\S+/
- citation[:subtitle]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:lng|language):\s+)\S+/
- citation[:language]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:pb|publisher):\s+)\S+/
- citation[:publisher]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:edn|edition):\s+)\S+/
- citation[:edition]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:yr|year):\s+)\S+/ #req?
- citation[:year]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:pst|publisher_state):\s+)\S+/
- citation[:where]=/^#{$1}(.+)/.match(meta)[1]
- when /^(url:\s+)\S+/
- citation[:url]=/^#{$1}(.+)/.match(meta)[1]
- when /^(note:\s+)\S+/
- citation[:note]=/^#{$1}(.+)/.match(meta)[1]
- when /^((?:sn|shortname):\s+)\S+/
- citation[:short_name]=/^#{$1}(.+)/.match(meta)[1]
- when /^(id:\s+)\S+/
- citation[:id]=/^#{$1}(.+)/.match(meta)[1]
- end
- end
- end
- if citation[:is]==:book
- if citation[:subtitle]
- citation[:fulltitle] = citation[:title] \
- + ' - ' \
- + citation[:subtitle]
- else
- citation[:fulltitle] = citation[:title]
- end
- end
- citation[:author_arr]=citation[:author_raw].split(/;\s*/)
- citation[:author]=citation[:author_arr].map do |author|
- author.gsub(/(.+?),\s+(.+)/,'\2 \1').strip
- end.join(', ').strip
- unless citation[:short_name]
- citation[:short_name]=%{#{c[:author]}, "#{c[:short_name]}" (#{c[:date]})}
- end
- end
- citation
- end
- self
- end
- def biblio_extraction
- bibliography=[]
- biblioflag=false
- code_flag=false
- flag_code_curly=:not_code_curly
- flag_code_tics=:not_code_tics
- @data=@data.select do |t_o|
- if t_o =~/^code\{/
- flag_code_curly=:code_curly
- elsif t_o =~/^\}code/
- flag_code_curly=:not_code_curly
- elsif t_o =~/^``` code/
- flag_code_tics=:code_tics
- elsif flag_code_tics ==:code_tics \
- and t_o =~/^```/
- flag_code_tics=:not_code_tics
- end
- code_flag=if flag_code_curly==:code_curly \
- or flag_code_tics==:code_tics
- true
- else false
- end
- unless code_flag
- if @md.flag_auto_biblio
- if t_o =~/^1~biblio(?:graphy)?/
- biblioflag = true
- t_o
- elsif t_o =~/^:?[B-D1]~/
- biblioflag = false
- t_o
- elsif biblioflag
- if t_o !~/\A%+ /
- bibliography << citation_in_prepared_bibliography(t_o).citation_metadata
- next
- else
- t_o
- end
- else t_o
- end
- elsif @md.flag_biblio
- if t_o =~/^1~biblio(?:graphy)?/
- biblioflag = true
- next
- elsif t_o =~/^:?[B-D]~/
- next
- elsif t_o =~/^:?[B-D1]~/
- biblioflag = false
- t_o
- elsif biblioflag
- if t_o !~/\A%+ /
- bibliography << t_o
- next
- else
- t_o
- end
- else t_o
- end
- else t_o
- end
- else t_o
- end
- end.compact
- if @md.flag_auto_biblio \
- and bibliography.length > 0
- data_new=[]
- bibliography=sort_bibliography_array_by_author_year_title(bibliography)
- @data.select do |t_o|
- if t_o =~/^1~biblio(?:graphy)?/
- bibliography.each do |c|
- if c[:is]==:book
- <<-WOK
-
-!_ #{c[:author]}
-/{"#{c[:fulltitle]}"}/ #{c[:publisher]} (#{c[:year]})
- WOK
- elsif c[:is]==:article
- <<-WOK
-
-!_ #{c[:author]}
-/{"#{c[:title]}"}/ #{c[:journal]} (#{c[:year]})
- WOK
- end
- end
- else data_new << t_o
- end
- end
- @data=data_new
- end
- [@data,bibliography]
- end
- end
- class Citations
- def initialize(md='',data='')
- @md,@data=md,data
- #@biblio=[]
- end
- def songsheet
- tuned_file,citations=citations_scan(@data)
- [tuned_file,citations]
- end
- def sort_bibliography_array_by_author_year(bib)
- bib.sort_by do |c|
- [c[:author_raw],c[:year]]
- #[c[:author_arr][0],c[:year],c[:title]]
- end
- end
- def citations_regex
- def pages_pattern
- %r{(?:[,.:]?\s+(?:p{1,2}\.?\s+)?(?:\d+--?\d+)[,.]?\s+)?}
- end
- def editor_pattern
- %r{(?<editor>(?:editor|edited by)\s+.+?)}
- end
- def year_pattern
- %r{[(\[]?(?<year>\d{4})[\])]?[.,]?}
- end
- def authors_year_title_publication_editor_pages
- /(?<authors>.+?)\s+#{year_pattern}\s+"(?<title>.+?)"\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})\s+#{editor_pattern}#{pages_pattern}/m # note ed. is usually edition rather than editor
- end
- def authors_title_publication_year_editor_pages
- /(?<authors>.+?)\s+"(?<title>.+?)"\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})\s+#{year_pattern}\s+#{editor_pattern}#{pages_pattern}/m # note ed. is usually edition rather than editor
- end
- def authors_title_publication_editor_year_pages ###
- /(?<authors>.+?)\s+"(?<title>.+?)"\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})\s+ed.\s+#{editor_pattern}#{year_pattern}#{pages_pattern}/m
- # note ed. is usually edition rather than editor
- end
- def authors_title_publication_editor_pages_year ###
- /(?<authors>.+?)\s+"(?<title>.+?)"\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})\s+#{editor_pattern}#{pages_pattern}#{year_pattern}/m # note ed. is usually edition rather than editor
- end
- def authors_year_title_publication_pages
- /(?<authors>.+?)\s+#{year_pattern}\s+"(?<title>.+?)"\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})[,.;]?#{pages_pattern}/m
- end
- def authors_title_publication_year_pages
- /(?<authors>.+?)\s+"(?<title>.+?)"\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})\s+#{year_pattern}\s+#{pages_pattern}/m
- end
- def authors_title_publication_pages_year ###
- /(?<authors>.+?)\s+"(?<title>.+?)"\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})#{pages_pattern}#{year_pattern}/m
- end
- def authors_year_publication_pages
- /(?<authors>.+?)\s+#{year_pattern}\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})#{pages_pattern}/m
- end
- def authors_publication_year_pages
- /(?<authors>.+?)\s+(?:#{Mx[:fa_italics_o]}|#{Mx[:srcrgx_italics_o]})(?<publication>.+?)(?:#{Mx[:fa_italics_c]}|#{Mx[:srcrgx_italics_c]})[,.;]?\s+(?<publisher>.+?)?#{year_pattern}#{pages_pattern}[.;]?/m
- end
- self
- end
- def authors?(citations)
- citations.each.map do |b|
- if b =~ /^.+\s+::.+?:$/
- c=/^(?<citation>.+?)\s+::(?<shortref>.+?):$/.match(b)
- {
- citation: c[:citation],
- shortref: c[:shortref],
- c[:shortref].to_s => c[:citation]
- }
- else { citation: b }
- end
- end
- end
- def long_and_short_ref?(citations) #could be useful, keep ... ectract shortref
- citations.each.map do |b|
- if b =~ /^.+\s+::.+?:$/
- c=/^(?<citation>.+?)\s+::(?<shortref>.+?):$/.match(b)
- {
- citation: c[:citation],
- shortref: c[:shortref],
- c[:shortref].to_s => c[:citation]
- }
- else { citation: b }
- end
- end
- end
- def citation_detail(citations) #could be useful, keep ... extract shortref
- bibahash=[]
- number=0
- missed=0
- citations.select do |b|
- z=if b =~citations_regex.authors_year_title_publication_editor_pages
- c=citations_regex.authors_year_title_publication_editor_pages.match(b)
- {
- is: :article,
- author_raw: c[:authors],
- year: c[:year],
- title: c[:title],
- publication: c[:publication],
- editor: c[:editor],
- }
- elsif b =~citations_regex.authors_title_publication_year_editor_pages
- c=citations_regex.authors_title_publication_year_editor_pages.match(b)
- {
- is: :article,
- author_raw: c[:authors],
- year: c[:year],
- title: c[:title],
- publication: c[:publication],
- editor: c[:editor],
- }
- elsif b =~citations_regex.authors_title_publication_editor_year_pages
- c=citations_regex.authors_title_publication_editor_year_pages.match(b)
- {
- is: :article,
- author_raw: c[:authors],
- year: c[:year],
- title: c[:title],
- publication: c[:publication],
- editor: c[:editor],
- }
- elsif b =~citations_regex.authors_title_publication_editor_pages_year
- c=citations_regex.authors_title_publication_editor_pages_year.match(b)
- {
- is: :article,
- author_raw: c[:authors],
- year: c[:year],
- title: c[:title],
- publication: c[:publication],
- editor: c[:editor],
- }
- elsif b =~citations_regex.authors_year_title_publication_pages
- c=citations_regex.authors_year_title_publication_pages.match(b)
- {
- is: :article,
- author_raw: c[:authors],
- year: c[:year],
- title: c[:title],
- publication: c[:publication],
- }
- elsif b =~citations_regex.authors_title_publication_year_pages
- c=citations_regex.authors_title_publication_year_pages.match(b)
- {
- is: :article,
- author_raw: c[:authors],
- year: c[:year],
- title: c[:title],
- publication: c[:publication],
- }
- elsif b =~citations_regex.authors_year_publication_pages
- c=citations_regex.authors_year_publication_pages.match(b)
- {
- is: :book,
- author_raw: c[:authors],
- year: c[:year],
- publication: c[:publication],
- }
- elsif b =~citations_regex.authors_publication_year_pages
- c=citations_regex.authors_publication_year_pages.match(b)
- {
- is: :book,
- author_raw: c[:authors],
- year: c[:year],
- publication: c[:publication],
- }
- else b
- end
- if not z.is_a?(NilClass) \
- and z.is_a?(Hash) \
- and z[:author_raw].length > 0
- z[:author_arr]=z[:author_raw].split(/;\s*/)
- z[:author]=z[:author_arr].map do |author|
- author.gsub(/(.+?),\s+(.+)/,'\2 \1').strip
- end.join(', ').strip
- if @md.opt.act[:verbose_plus][:set]==:on \
- || @md.opt.act[:maintenance][:set]==:on
- number +=1 if z.is_a?(Hash)
- missed +=1 if z.is_a?(String)
- (z.is_a?(Hash)) \
- ? (p '[' + number.to_s + '] ' + z.to_s)
- : (p '<' + missed.to_s + '> ' + z.to_s)
- end
- end
- bibahash << z if z.is_a?(Hash)
- end
- bibahash=sort_bibliography_array_by_author_year(bibahash.compact)
- bibahash
- end
- def citations_scan(data)
- citations=[]
- #short_ref=[]
- tuned_file = data.compact.select do |dob|
- if dob.is !=:meta \
- && dob.is !=:comment \
- && dob.is !=:code \
- && dob.is !=:table
- if dob.obj =~/\.:.+?:\./
- citations << dob.obj.scan(/\.:\s*(.+?)\s*:\./m)
- #short_ref << dob.obj.scan(/\.:\s+(.+?)\s+::([^:]+)::\./m) #look at later
- ##short_ref << dob.obj.scan(/\.:\s+(.+?)\s+::(.+?)::\./m) #look at later
- #short_ref << dob.obj.scan(/\.:\s*(.+?)\s*(::(.+?):)?:\./m) #look at later
- citations=citations.flatten.compact
- dob.obj=dob.obj. #remove citations delimiter & helpers from text
- gsub(/\.:|:\./,'')
- end
- end
- dob if dob.is_a?(Object)
- end
- #bib=long_and_short_ref?(citations) #could be useful, keep ... extract shortref
- citations=citation_detail(citations)
- [tuned_file,citations]
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/ao_syntax.rb b/lib/sisu/develop/ao_syntax.rb
deleted file mode 100644
index 4632fb2..0000000
--- a/lib/sisu/develop/ao_syntax.rb
+++ /dev/null
@@ -1,640 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** Syntax for markup, input markup syntaxes, determined here
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao_syntax.rb;hb=HEAD>
-
-=end
-module SiSU_AO_Syntax
- class Words
- def initialize(line,md,mkp)
- @line,@md,@mkp=line,md,mkp
- end
- end
- class Markup
- def initialize(md='',data='',biblio=[])
- @md,@data,@bibliography=md,data,biblio
- @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.emphasis_set_to \
- and not @md.emphasis_set_to.nil?
- @md.emphasis_set_to
- 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(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|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\b|[.,;:?!'")]|~\^|~\\\{\s|$)}
- tail_m_bold=%{(?:(?:#{Mx[:fa_italics_c]})?(?:\s|'s\b|[.,;:?!'")]|~\^|~\\\{\s|$))?}
- bold_line=%{^!_\s.+?(?:#{Mx[:br_line]}|\n|$)}
- #ital_line=%{^/_\s.+?(?:#{Mx[:br_line]}|\n|$)} #not implemented
- @line_scan_ital=if defined? @md.italics_match_list[:str]
- /#{@http_m}|#{bold_line}|#{@manmkp_ital}#{tail_m_ital}|#{@md.italics_match_list[: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.bold_match_list[:str] \
- and @md.bold_match_list[:str]
- /#{@http_m}|#{bold_line}|(?:#{@manmkp_bold}|#{@md.bold_match_list[: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=line_actions(dob)
- dob=paragraph_set(dob)
- dob=substitutions(dob)
- 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(/^-\\\\-\s*$/,"#{Mx[:br_page]}").
- gsub(/^=\\\\=\s*$/,"#{Mx[:br_page_new]}").
- gsub(/ \\\\(?: |$)/,"#{Mx[:br_line]}").
- gsub(/(?:<:?pb>)/,"#{Mx[:br_page]}"). # depreciated
- gsub(/(?:<:?pn>)/,"#{Mx[:br_page_new]}"). # depreciated
- gsub(/(?:<:?br>|<br \/>)/,"#{Mx[:br_line]}"). # depreciated
- gsub(/(?:^-\.\.-\s*$)/,"#{Mx[:br_page_line]}")
- end
- dob
- end
- def wordlist_italics(dob)
- dob=dob.dup
- if (defined? @md.italics_match_list[:str] \
- and @md.italics_match_list[:str])
- dob.obj=if dob.is !=:meta \
- && dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:layout \
- && 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.italics_match_list[:regx] \
- and @md.italics_match_list[:regx]
- w=w.gsub(@md.italics_match_list[:regx],
- "#{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 line_actions(dob)
- 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.obj =~ /^\/_\s+/
- italicise(dob.obj)
- else dob.obj
- end
- dob
- end
- def paragraph_set(dob)
- dob.obj=if dob.is !=:meta \
- && dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment \
- && dob.is !=:table
- dob.obj.gsub(/\n/m,' ').
- gsub(/ \s+/m,' ')
- else dob.obj
- end
- dob
- end
- def substitutions(dob)
- dob=dob.dup
- dob=if @md.flag_auto_biblio \
- and @bibliography.length > 0
- dob=if dob.is !=:meta \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment \
- && dob.is !=:table
- @bibliography.each do |c|
- if c[:id] and not c[:id].nil? and not c[:id].empty?
- dob.obj=dob.obj.gsub(/#{c[:id]}/mi,c[:short_name])
- end
- end
- dob
- else dob
- end
- dob
- else dob
- end
- dob=if defined? @md.substitution_match_list[:match_and_replace] \
- and @md.substitution_match_list[:match_and_replace].is_a?(Array)
- dob=if dob.is !=:meta \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment \
- && dob.is !=:table
- if dob.obj =~/#{@md.substitution_match_list[:matches]}/
- @md.substitution_match_list[:match_and_replace].each do |x|
- dob.obj=if x[:case_s]==:i
- dob.obj.gsub(/#{x[:match]}/mi,x[:replace])
- else
- dob.obj.gsub(/#{x[:match]}/m,x[:replace])
- end
- end
- end
- dob
- else dob
- end
- dob
- else dob
- end
- end
- def wordlist_bold(dob)
- dob=dob.dup
- if (defined? @md.bold_match_list[:str] \
- and @md.bold_match_list[: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.bold_match_list[:regx] \
- and @md.bold_match_list[:regx] #document header: @bold: [bold word list]
- w=w.gsub(@md.bold_match_list[:regx],
- "#{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 \
- and dob.ln.to_s =~/[7-9]/
- embolden(dob.obj)
- else dob.obj
- end
- end
- dob
- end
- def fontface_lines(dob,leader)
- while (dob.obj =~/#{Mx[:br_nl]}/ \
- and dob.obj =~/(?:#{leader})([*!\/_#])\{(.+?)\}\1/m) \
- and $2 =~/#{Mx[:br_nl]}/
- dob=if dob.obj =~/#{Mx[:br_nl]}/ \
- and dob.obj =~/(#{leader})([*!\/_#])\{(.+?)\}\2/m
- lead,fce,txt=$1,$2,$3
- dob=if txt =~/#{Mx[:br_nl]}/
- lead_break=if dob.obj =~/^#{Mx[:br_nl]}/
- dob.obj=dob.obj.sub(/^#{Mx[:br_nl]}/,'')
- Mx[:br_nl]
- else ''
- end
- txt="#{lead_break}#{fce}\{" + txt.split(Mx[:br_nl]).join("\}#{fce}#{Mx[:br_nl]}#{fce}\{") + "\}#{fce}"
- dob.obj=dob.obj.
- sub(/(?:^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|\>)([*!\/_#])\{.+?\}\1/m,
- "#{lead}#{txt}")
- dob
- else dob
- end
- end
- dob
- end
- dob
- end
- def fontface(dob)
- leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|[、。「‹«¿¡]|\>/
- dob=fontface_lines(dob,leader)
- dob.obj=dob.obj.
- gsub(/(#{leader})\*\{(.+?)\}\*/m,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
- gsub(/(#{leader})!\{(.+?)\}!/m,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
- gsub(/(#{leader})\/\{(.+?)\}\//m,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
- gsub(/(#{leader})_\{(.+?)\}_/m,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
- gsub(/(#{leader})#\{(.+?)\}#/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}~
- # !_ #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 ==0
- 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(/(^|#{Mx[:br_nl]})\s*_\*\s*/,
- "\\1#{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<br>\2') #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}~
- # +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/develop/cgi.rb b/lib/sisu/develop/cgi.rb
deleted file mode 100644
index 23df361..0000000
--- a/lib/sisu/develop/cgi.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** generates naive cgi search form for search of sisu database (pgsql sqlite)
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/cgi.rb;hb=HEAD>
-
-=end
-module SiSU_CGI #% database building documents
- require_relative 'se' # se.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 read
- if @opt.act[:sample_search_form][:db]==:pg # cgi_pgsql.rb
- SiSU_CGI_PgSQL::SearchPgSQL.new(@opt,@webserv).pgsql
- elsif @opt.act[:sample_search_form][:db]==:sqlite # cgi_sqlite.rb
- SiSU_CGI_SQLite::SearchSQLite.new(@opt,@webserv).sqlite
- else
- puts <<-WOK
- please select database type for which sample search form should be built (pgsql or sqlite)
- sisu --sample-search-form --db=sqlite
- sisu --sample-search-form --db=pg
- other options include
- --webserv-cgi='[cgi-server-name]'
- --webserv-output='[sisu-output-server-with-base-path]'
- WOK
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/cgi_pgsql.rb b/lib/sisu/develop/cgi_pgsql.rb
deleted file mode 100644
index bb561b0..0000000
--- a/lib/sisu/develop/cgi_pgsql.rb
+++ /dev/null
@@ -1,270 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** generates naive cgi search form for search of sisu database (pgsql)
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/cgi_pgsql.rb;hb=HEAD>
-
-=end
-module SiSU_CGI_PgSQL #% database building documents
- require_relative 'se' # se.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
- @cX=SiSU_Screen::Ansi.new(opt.act[:color_state][:set]).cX
- @env=SiSU_Env::InfoEnv.new('',opt)
- @sys=SiSU_Env::SystemCall.new
- @db=SiSU_Env::InfoDb.new
- get_init=SiSU_Env::GetInit.new
- @rc=get_init.sisu_yaml.rc
- @name_of={}
- @name_of[:output_dir_structure]=if opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
- opt.dir_structure_by.to_s
- else 'language'
- end
- @name_of[:lingual]=if opt.lingual.to_s =~/(?:mono|multi)/
- opt.lingual.to_s
- else 'multi'
- end
- @name_of[:db]=if defined? @rc['search'] \
- and defined? @rc['search']['sisu'] \
- and defined? @rc['search']['sisu']['action'] \
- and @rc['search']['sisu']['action'] =~/https?:\/\/\S+?\.cgi/ \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/
- @rc['search']['sisu']['db']
- else
- @env.path.base_markup_dir_stub #'sisu' #breaks if not present
- end
- @name_of[:host_url_cgi]=%q{http://#{ENV['HTTP_HOST']}#{ENV['PATH_INFO']}}
- @name_of[:host_url_docs]=%q{http://#{ENV['HTTP_HOST']}}
- @name_of[:cgi_script]=%q{#{ENV['SCRIPT_NAME']}}
- @name_of[:user]=@db.psql.user(opt)
- @image_src=%q{http://#{ENV['HTTP_HOST']}/_sisu/image_sys}
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,opt,@image_src,@env)
- @cgi_file_name=@env.url.cgi_sample_search_form_name(opt)
- 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.is_a?(Array)
- available_db.flatten.each do |x|
- serve << x.gsub(/#{Db[:name_prefix]}(\S+)/,'\1')
- end
- else STDERR.puts "WARNING: no postgresql database available, (have you created one?)"
- end
- serve=serve.sort
- f1,f2='',''
- serve.each do |x|
- f1 << %{ <option value="#{Db[:name_prefix]}#{x}">#{x}</option>\n} unless x =~/apache|sisu\/image/ #check
- end
- end
- f2 << %q{ selected_db=%{<option value="#{@db_name_prefix}#{@stub}">#{@stub}</option>}} + "\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
- puts <<-WOK
- generated sample search form: #{@cX.green}#{@cgi_file_name}#{@cX.off}
- default database name: #{@cX.green}#{Db[:name_prefix]}#{@name_of[:db]}#{@cX.off} (#{@name_of[:db]})
- db user: #{@cX.green}#{@name_of[:user]}#{@cX.off}
- to modify use: #{@cX.brown}sisu --db-pg --db-user='#{@name_of[:user]}'#{@cX.off}
-
- #{@cX.fuchsia}BASED ON ALREADY EXISTING databases#{@cX.off} (default database name: #{@db.psql.db})
- NOTE it is first necessary to createdb,
- use sisu to create the tables & populate the postgresql db
-
- the database to be used for this directory (#{@db.psql.db})
- will have to be created manually if it does not exist:
- using postgresql tools directly (the following may work):
- (i) if you are not yet a postgresql user,
- #{@cX.brown}sudo su postgres
- createuser -d -a #{@env.user}
- exit#{@cX.off}
- (ii) create the database:
- #{@cX.brown}createdb #{@db.psql.db}#{@cX.off}
- [for a list of existing databases try 'psql --list']"
-
- you can use sisu to create the database tables and populate the database with documents
-
- sisu --pg --dropall # removes existing postgresql db & tables
- sisu --pg --createall -v # creates postgresql db & tables
- sisu --pg --update -v *.sst *.ssm # populate the db
- sisu --sample-search-form --db-pg # creates the postgresql search form
- # this should be done after creating the db
- # to be searched
- sisu --webrick & # starts ruby webrick web server
-
- # if necessary make the directory '/usr/lib/cgi-bin'
- # here we copy the postgresql search form to cgi-bin
- # (copy #{@cgi_file_name} to your cgi directory)
- # set file permissions to 755
- WOK
- a=case @webserv
- when /pwd/ then ''
- else <<-WOK
-
- sudo cp -vi #{Dir.pwd}/#{@cgi_file_name} /usr/lib/cgi-bin/.; \\
- sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
- WOK
- end
- SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).warn
- a=<<-WOK
- #{@env.webserv_base_cgi(@opt)}/cgi-bin/#{@cgi_file_name}
- WOK
- SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).print_blue
- a="\n\t(to create and populate postgresql database see 'man sisu' and in particular the --pg option)\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\tusing postgresql tools directly: 'createdb #{@db.psql.db}' for a list of existing databases try 'psql --list']"
- SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).txt_grey
- 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
- begin
- require 'cgi'
- require 'fcgi'
- require 'pg'
- rescue LoadError
- puts 'cgi, fcgi or pg NOT FOUND (LoadError)'
- end
- @stub_default='#{@name_of[:db]}'
- @image_src="#{@image_src}"
- @hosturl_cgi="#{@name_of[:host_url_cgi]}"
- @hosturl_files="#{@name_of[:host_url_docs]}"
- @output_dir_structure_by='#{@name_of[:output_dir_structure]}'
- @lingual='#{@name_of[:lingual]}'
- @port='#{@db.psql.port}'
- @db_name_prefix='#{Db[:name_prefix]}'
- @user='#{@name_of[:user]}' # check user name for access to pg database: e.g. www-data or '#{@env.user}'
- @base="#{@name_of[:host_url_cgi]}#{@name_of[:cgi_script]}"
- 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+/ then unescaped_search=CGI.unescape(@t)
- elsif @q =~/\S+/ then 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_text=search[:text].flatten.join(' AND ')
- @search_text=@search_text.gsub(/(doc_objects\.clean~[*]?\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.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_body_format
- %{<font color="#666666" size="2">#{sql_select_body}</font>}
- end
- def contents
- @conn.exec(sql_select_body)
- 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'
- @conn=PG::Connection.open(dbname: @db, port: @port, user: @user)
- WOK_SQL
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/cgi_sql_common.rb b/lib/sisu/develop/cgi_sql_common.rb
deleted file mode 100644
index 33e9c15..0000000
--- a/lib/sisu/develop/cgi_sql_common.rb
+++ /dev/null
@@ -1,986 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** generates naive cgi search form for search of sisu database (pgsql sqlite)
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/cgi_sql_common.rb;hb=HEAD>
-
-=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
- 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 - 2014, 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>
-
- * Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
- WOK_SQL
- end
- def header1
- <<-'WOK_SQL'
-#Common TOP
- @@offset=0
- @@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>
- <html>
- <head>
- <title>
- <meta charset="utf-8">
- <meta name="sourcefile" content="SiSU._sst" />
- SiSU search form (sample): SiSU information Structuring Universe
- </title>
- <link rel="generator" href="http://www.jus.uio.no/sisu" />
- <link rel="shortcut icon" href="#{@image_src}/rb7.ico" />
- <link href="../_sisu/css/html.css" rel="stylesheet">
- </head>
- <body lang="en" xml:lang="en">
- <table summary="band" border="0" cellpadding="3" cellspacing="0">
- <tr><td width="20%">
- <table summary="home button / home information" border="0" cellpadding="3" cellspacing="0">
- <tr><td align="left">
- <br><a href="http://sisudoc.org/" target="_top">
- <b>SiSU</b>
- </a>
- <br><a href="http://git.sisudoc.org/" target="_top">
- git
- </a>
- </td></tr>
- </table>
- </td>
- <td>
- <label for="find"><b>#{@env.sample_search_form_title(@opt.dir_structure_by)}</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/ then q['doc']
- elsif q['fns']=~/\S/ then 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] then m[:braces].match(@search_field)[1]
- elsif @search_field =~m[:string] then m[:string].match(@search_field)[1]
- else
- str=m[:word].match(@search_field)[1]
- str=str.gsub(/[()]/,'')
- str
- end
- search_string=search_string.strip.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_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]
- end
- st=DBI_SearchString.new('metadata_and_text.fulltext',search_for.fulltext,q['ft'],cse).string
- if st[:flag]
- search[:text] << 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]
- end
- st=DBI_SearchString.new('metadata_and_text.creator_author',search_for.author,q['au'],cse).string
- if st[:flag]
- search[:text] << 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]
- end
- st=DBI_SearchString.new('metadata_and_text.classify_subject',search_for.subject,q['sj'],cse).string
- if st[:flag]
- search[:text] << 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]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_description',search_for.description,q['dsc'],cse).string
- if st[:flag]
- search[:text] << 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]
- end
- st=DBI_SearchString.new('metadata_and_text.creator_editor',search_for.editor,q['cntr'],cse).string
- if st[:flag]
- search[:text] << 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]
- end
- st=DBI_SearchString.new('metadata_and_text.date_published',search_for.date,q['dt'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_type',search_for.type,q['ty'],cse).string
- if st[:flag]
- search[:text] << 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]
- 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]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_relation',search_for.relation,q['rel'],cse).string
- if st[:flag]
- search[:text] << st[:search]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_coverage',search_for.coverage,q['cov'],cse).string
- if st[:flag]
- search[:text] << 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]
- end
- st=DBI_SearchString.new('metadata_and_text.notes_comment',search_for.comment,q['co'],cse).string
- if st[:flag]
- search[:text] << 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]
- end
- st=DBI_SearchString.new('metadata_and_text.src_filename',search_for.filename,q['fns'],cse).string
- if st[:flag]
- search[:text] << 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$/ then ''
- 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" cellpadding="2" border="0">
- <!-- widget sisu -->
-<tr><td valign="top" width="10%">
- <table summary="home button / home information" border="0" cellpadding="3" cellspacing="0">
- <tr><td align="left">
- <br><a href="http://sisudoc.org/" target="_top">
- <b>SiSU</b>
- </a>
- <br><a href="http://git.sisudoc.org/" target="_top">
- git
- </a>
- </td></tr>
- </table>
-</td>
-<td valign="top" width="45%">
-<!-- SiSU Rights -->
- <p class="tiny_left"><font color="#666666" size="2">
- Generated by
- #{v.project} #{v.version} #{v.date} (#{v.date_stamp})
- <br>
- <a href="http://www.sisudoc.org" >
- <b>#{v.project}</b></a> <sup>&copy;</sup> Ralph Amissah
- 1993, current 2014.
- All Rights Reserved.
- <br>
- #{v.project} 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>
- sources
- <a href="http://git.sisudoc.org" >
- git.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 identifying/locating system)
- <br>
- <sup>&copy;</sup> Ralph Amissah 1997, current 2014.
- 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">
- .:
- </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.
- </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='','',''
- FCGI.each_cgi do |cgi|
- begin # all code goes in begin section
- @search={ text: [], endnotes: [] }
- q=CGI.new
- @db=if cgi['db'] =~ /#{@db_name_prefix}(\S+)/
- @stub=$1
- cgi['db']
- else
- @stub=@stub_default
- @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
- else
- @search[:text][1]=%{doc_objects.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)}'}
- else
- @search[:text]<<%{doc_objects.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
- @body_main=''
- @search_regx=nil
- oldtid=0
- if @text_search_flag
- if checked_sql =~/\S/
- sql_select_body=dbi_statement.sql_select_body_format
- else sql_select_body=''
- end
- @body_main << sql_select_body
- else
- end
- @hostpath="#{@hosturl_files}/#{@stub}"
- WOK_SQL
- end
- def dir_structure #@opt.dir_structure_by
- <<-'WOK_SQL'
- def path_manifest(fn,ln=nil)
- case @output_dir_structure_by
- when 'filename'
- @lingual =='mono' \
- ? "#{@hostpath}/#{fn}/sisu_manifest.html"
- : "#{@hostpath}/#{fn}/sisu_manifest.#{ln}.html"
- when 'filetype'
- @lingual =='mono' \
- ? "#{@hostpath}/manifest/#{fn}.html"
- : "#{@hostpath}/manifest/#{fn}.#{ln}.html"
- else
- "#{@hostpath}/#{ln}/manifest/#{fn}.html"
- end
- end
- def path_html_seg(fn,ln=nil)
- case @output_dir_structure_by
- when 'filename'
- "#{@hostpath}/#{fn}"
- when 'filetype'
- "#{@hostpath}/html/#{fn}"
- else
- "#{@hostpath}/#{ln}/html/#{fn}"
- end
- end
- def path_toc(fn,ln=nil)
- if @output_dir_structure_by =='filename' \
- or @output_dir_structure_by =='filetype'
- @lingual =='mono' \
- ? "#{path_html_seg(fn,ln)}/toc.html"
- : "#{path_html_seg(fn,ln)}/toc.#{ln}.html"
- else
- "#{path_html_seg(fn,ln)}/toc.html"
- end
- end
- def path_filename(fn,seg,ln=nil)
- if @output_dir_structure_by =='filename' \
- or @output_dir_structure_by =='filetype'
- @lingual =='mono' \
- ? "#{path_html_seg(fn,ln)}/#{seg}.html"
- : "#{path_html_seg(fn,ln)}/#{seg}.#{ln}.html"
- else
- "#{path_html_seg(fn,ln)}/#{seg}.html"
- end
- end
- def path_html_doc(fn,ln=nil)
- case @output_dir_structure_by
- when 'filename'
- @lingual =='mono' \
- ? "#{path_html_seg(fn,ln)}/scroll.html"
- : "#{path_html_seg(fn,ln)}/scroll.#{ln}.html"
- when 'filetype'
- @lingual =='mono' \
- ? "#{@hostpath}/html/#{fn}.html"
- : "#{@hostpath}/html/#{fn}.#{ln}.html"
- else
- "#{@hostpath}/#{ln}/html/#{fn}.html"
- end
- end
- WOK_SQL
- 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'][/.+?\.(ssm\.sst|sst)$/,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']} <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> #{can_txt_srch}<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=unescaped_search.scan(/\S+/).each.map do |g|
- (g.to_s =~/(AND|OR)/) \
- ? ('|')
- : (%{#{g.to_s}})
- end.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'],c['language_document_char'])}##{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'],c['language_document_char'])}##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag
- elsif c['suffix'] =~/1/ #doc #FIX
- index=%{<a href="#{path_html_doc(location,c['language_document_char'])}##{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
- oldtid = 0
- 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") + canned.force_encoding("UTF-8") + @tail.force_encoding("UTF-8")} #% print cgi_output_header+counters+body
- 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/develop/cgi_sqlite.rb b/lib/sisu/develop/cgi_sqlite.rb
deleted file mode 100644
index 7b3a5b0..0000000
--- a/lib/sisu/develop/cgi_sqlite.rb
+++ /dev/null
@@ -1,244 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** generates naive cgi search form for search of sisu database (sqlite)
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/cgi_sql_sqlite.rb;hb=HEAD>
-
-=end
-module SiSU_CGI_SQLite #% database building documents
- require_relative 'se' # se.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
- @cX=SiSU_Screen::Ansi.new(opt.act[:color_state][:set]).cX
- @env=SiSU_Env::InfoEnv.new('',opt)
- @image_src="#{@env.url.webserv_cgi(opt)}/_sisu/image_sys"
- @name_of={}
- @name_of[:output_dir_structure]=if opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
- opt.dir_structure_by.to_s
- else 'language'
- end
- @name_of[:lingual]=if opt.lingual.to_s =~/(?:mono|multi)/
- opt.lingual.to_s
- else 'multi'
- end
- @name_of[:host_url_cgi]=%q{http://#{ENV['HTTP_HOST']}#{ENV['PATH_INFO']}}
- @name_of[:host_url_docs]=%q{http://#{ENV['HTTP_HOST']}}
- @name_of[:cgi_script]=%q{#{ENV['SCRIPT_NAME']}}
- @image_src=%q{http://#{ENV['HTTP_HOST']}/_sisu/image_sys}
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,opt,@image_src,@env)
- @cgi_file_name=@env.url.cgi_sample_search_form_name(opt)
- @name_of_sqlite_db_file='sisu_sqlite.db'
- 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}/#{@name_of_sqlite_db_file}")
- 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}/ then '<option value="#{Db[:name_prefix]}#{x}">#{x}</option>'\n}
- end
- f2 << " end\n"
- f3 << %{ db_name='#{@name_of_sqlite_db_file}'\n}
- f3 << %{ db_sqlite=case cgi['db']\n}
- serve.each do |x|
- f3 << %{ when /#{Db[:name_prefix]}#{x}/ then "#{@env.path.webserv}/#{x}/\#{db_name}"\n}
- end
- f3 << %{ else "#{@env.path.webserv}/#{serve[0]}/\#{db_name}"\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
- puts <<-WOK
- generated sample search form: #{@cX.green}#{@cgi_file_name}#{@cX.off}
- default database name: #{@cX.green}#{Db[:name_prefix]}#{@env.path.base_markup_dir_stub}#{@cX.off} (#{@env.path.base_markup_dir_stub})
- cgi & db host on: #{@cX.blue}#{@env.url.webserv_base_cgi(@opt)}#{@cX.off}
- to modify use: #{@cX.brown}sisu --db-sqlite --webserv-search='#{@env.url.webserv_base_cgi(@opt)}'#{@cX.off}
- sisu output on: #{@cX.blue}#{@env.url.webserv_files_from_db(@opt)}#{@cX.off}
- to modify use: #{@cX.brown}sisu --db-sqlite --webserv-output='#{@env.url.webserv_files_from_db(@opt)}'#{@cX.off}
- cgi search form link name: #{@cX.green}#{@env.url.cgi_sample_search_form_name(@opt)}#{@cX.off}
- to modify use: #{@cX.brown}sisu --db-sqlite --cgi-search-form-name='#{@env.url.cgi_sample_search_form_name(@opt)}'#{@cX.off}
- #{@cX.fuchsia}(settings priority: command line; sisurc.yml; else defaults)#{@cX.off}
-
- #{@cX.fuchsia}NOTE it is first necessary to create the database and tables and populate it#{@cX.off}
-
- sisu --sqlite --dropall # removes existing postgresql db & tables
- sisu --sqlite --createall -v # creates postgresql db & tables
- sisu --sqlite --update -v *.sst *.ssm # populate the db
- sisu --sample-search-form --sqlite # creates the postgresql search form
- # this should be done after creating the db
- # to be searched
- sisu --webrick & # starts ruby webrick web server
-
- # if necessary make the directory '/usr/lib/cgi-bin'
- # here we copy the postgresql search form to cgi-bin
- # (copy #{@cgi_file_name} to your cgi directory)
- # set file permissions to 755
- WOK
- a=case @webserv
- when /pwd/ then ''
- else <<-WOK
-
- sudo cp -vi #{Dir.pwd}/#{@cgi_file_name} /usr/lib/cgi-bin/.; \\
- sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
- WOK
- end
- b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)'
- SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a,b).warn
- a=<<-WOK
-
- #{@env.webserv_base_cgi(@opt)}/cgi-bin/#{@cgi_file_name}
-
- WOK
- SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).print_blue
- 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
- begin
- require 'cgi'
- require 'fcgi'
- require 'sqlite3'
- rescue LoadError
- puts 'cgi, fcgi or sqlite3 NOT FOUND (LoadError)'
- end
- @stub_default='sisu_sqlite'
- @image_src="#{@image_src}"
- @hosturl_cgi="#{@name_of[:host_url_cgi]}"
- @hosturl_files="#{@name_of[:host_url_docs]}"
- @output_dir_structure_by='#{@name_of[:output_dir_structure]}'
- @lingual='#{@name_of[:lingual]}'
- @db_name_prefix='#{Db[:name_prefix]}'
- @base="#{@name_of[:host_url_cgi]}#{@name_of[:cgi_script]}"
- 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+/ then unescaped_search=CGI.unescape(@t)
- elsif @q =~/\S+/ then 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_text=search[:text].flatten.join(' AND ')
- @search_text=@search_text.gsub(/(doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.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_body_format
- %{<font color="#666666" size="2">#{sql_select_body}</font>}
- end
- def contents
- @conn.execute(sql_select_body)
- end
- end
- WOK_SQL
- end
- def dbi_connect
- <<-'WOK_SQL'
- @conn=SQLite3::Database.new(db_sqlite)
- @conn.results_as_hash=true
- WOK_SQL
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/conf.rb b/lib/sisu/develop/conf.rb
deleted file mode 100644
index 9036489..0000000
--- a/lib/sisu/develop/conf.rb
+++ /dev/null
@@ -1,287 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** configuration
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/conf.rb;hb=HEAD>
-
-=end
-module SiSU_Initialize
- require_relative 'se' # se.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
- 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 'se' # se.rb
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @suffix={
- rnc: 'rnc',
- rng: 'rng',
- xsd: 'xsd',
- }
- @path={
- xml: @env.path.output + '/_sisu/xml',
- xsd: @env.path.output + '/_sisu/xml/xsd',
- rnc: @env.path.output + '/_sisu/xml/rnc',
- rng: @env.path.output + '/_sisu/xml/rng',
- style: @env.path.output + '/' + @env.path.style,
- }
- @pwd,@home=Dir.pwd,@env.path.home
- end
- def make_homepage
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'invert',
- 'Make homepage',
- ''
- ).colorize unless @opt.act[:quiet][:set]==:on
- SiSU_Env::CreateSite.new(@opt).homepage
- end
- def cp_local_images
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'invert',
- 'Copy images',
- ''
- ).colorize unless @opt.act[:quiet][:set]==:on
- SiSU_Env::CreateSite.new(@opt).cp_local_images
- SiSU_Env::CreateSite.new(@opt).cp_webserver_images_local #this should not have been necessary
- SiSU_Env::CreateSite.new(@opt).cp_base_images #base images (nav etc.) used by all html
- end
- def cp_external_images
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'invert',
- 'Copy external images',
- ''
- ).colorize if @opt.act[:verbose_plus][:set]==:on
- SiSU_Env::CreateSite.new(@opt).cp_external_images
- end
- def cp_webserver_images
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'invert',
- 'Copy webserver/output file images',
- ''
- ).colorize unless @opt.act[:quiet][:set]==:on
- SiSU_Env::CreateSite.new(@opt).cp_webserver_images
- end
- def css
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'invert',
- 'Configuring CSSs',
- ''
- ).colorize unless @opt.act[:quiet][:set]==:on
- SiSU_Env::CreateSite.new(@opt).cp_css
- end
- def dtd
- SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'invert',
- 'Configuring DTDs',
- ''
- ).colorize unless @opt.act[:quiet][:set]==:on
- @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("#{@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("#{@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("#{@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("#{@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.ao + '/sax.' + s[:rnc]
- rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_sax
- rng_file=@path[:rng] + '/' + @rxng.rng_name.output_sax
- xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_sax
- 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.selections.str)
- #rng
- schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
- schema.relaxng(@opt.selections.str)
- #rnc
- if FileTest.file?(rnc_src)
- FileUtils::cp(rnc_src,rnc_file)
- FileUtils::chmod(0644,rnc_file)
- else STDERR.puts %{\t*WARN* did not find rnc - "#{rnc_src}" [#{__FILE__}:#{__LINE__}]}
- end
- end
- def trang_rnc_model_output_dom
- s=@suffix
- rnc_src=@env.processing_path.ao + '/dom.' + s[:rnc]
- rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_dom
- rng_file=@path[:rng] + '/' + @rxng.rng_name.output_dom
- xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_dom
- 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.selections.str)
- #rng
- schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
- schema.relaxng(@opt.selections.str)
- #rnc
- if FileTest.file?(rnc_src)
- FileUtils::cp(rnc_src,rnc_file)
- FileUtils::chmod(0644,rnc_file)
- else STDERR.puts %{\t*WARN* did not find rnc - "#{rnc_src}" [#{__FILE__}:#{__LINE__}]}
- end
- end
- def trang_rnc_model_output_xhtml
- s=@suffix
- rnc_src=@env.processing_path.ao + '/xhtml.' + s[:rnc]
- rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_xhtml
- rng_file=@path[:rng] + '/' + @rxng.rng_name.output_xhtml
- xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_xhtml
- 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.selections.str)
- #rng
- schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
- schema.relaxng(@opt.selections.str)
- #rnc
- if FileTest.file?(rnc_src)
- FileUtils::cp(rnc_src,rnc_file)
- FileUtils::chmod(0644,rnc_file)
- else STDERR.puts %{\t*WARN* did not find rnc - "#{rnc_src}" [#{__FILE__}:#{__LINE__}]}
- end
- end
- def trang_rnc_model_input_sax
- rnc_file=@env.processing_path.ao + '/sax.rnc'
- dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_sax
- rnc=File.new(rnc_file,'w')
- rnc << @rxng.rnc_model_output_sax
- rnc.close
- schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
- schema.relaxng(@opt.selections.str)
- end
- def trang_rnc_model_input_dom
- rnc_file=@env.processing_path.ao + '/dom.rnc'
- dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_dom
- rnc=File.new(rnc_file,'w')
- rnc << @rxng.rnc_model_output_dom
- rnc.close
- schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
- schema.relaxng(@opt.selections.str)
- end
- def trang_rnc_model_input_node
- rnc_file=@env.processing_path.ao + '/node.rnc'
- dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_node
- rnc=File.new(rnc_file,'w')
- rnc << @rxng.rnc_model_input_node
- rnc.close
- schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
- schema.relaxng(@opt.selections.str)
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/constants.rb b/lib/sisu/develop/constants.rb
deleted file mode 100644
index 0c4c258..0000000
--- a/lib/sisu/develop/constants.rb
+++ /dev/null
@@ -1,388 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** constants, system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/constants.rb;hb=HEAD>
-
-=end
-#Ax,Xx,Mx,Rx,Hx,Dx,Px,Ep,Db,Gt,Tex=Array.new(11){{}}
-YEAR='2014'
-Sfx={
- txt: '.txt',
- txt_textile: '.textile',
- txt_asciidoc: '.ad',
- txt_markdown: '.md',
- txt_rst: '.rst',
- txt_orgmode: '.org',
- html: '.html',
- xhtml: '.xhtml',
- xml: '.xml',
- xml_sax: '.sax.xml',
- xml_dom: '.dom.xml',
- xml_scaffold: '.scaffold.xml',
- xml_scaffold_structure_sisu: '.scaffold.sisu.xml',
- xml_scaffold_structure_collapse: '.scaffold.collapse.xml',
- xml_docbook: '.docbook.xml',
- xml_docbook_article: '.article.docbook.xml',
- xml_docbook_book: '.book.docbook.xml',
- xml_fictionbook: '.fb2',
- epub: '.epub',
- epub_xhtml: '.xhtml',
- odt: '.odt',
- pdf: '.pdf',
- manpage: '.1',
- info: '.info',
- texinfo: '.texinfo',
- sql: '.sql.db',
-}
-Ax={
- tab: "\t",
- comment: '%',
- spaces: ' ',
-}
-Xx={
- protect: '☞',
- split: '✠',
- segment: 'Ф',
- relative_path: '☼',
- html_relative2: '※※',
- html_relative1: '※',
-}
-Mx={
- segname_prefix_auto_num_extract: 'c',
- segname_prefix_auto_num_provide: 's',
- segname_prefix_auto_num_other: 'x',
- ocn_id_char: '', #'o', now as before; remove for html5
- note: 'note_',
- note_ref: 'noteref_',
- note_astx: 'note_astx_',
- note_ref_astx: 'noteref_astx_',
- note_plus: 'note_plus_',
- note_ref_plus: 'noteref_plus_',
- meta_o: '〔@', meta_c: '〕',
- lv_o_0: 0,
- 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_line: '▭',
- br_page: '┼',
- br_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: '┆', # ¦ |
- src_bold_o: '!{', src_bold_c: '}!',
- src_italics_o: '/{', src_italics_c: '}/',
- src_underscore_o: '_{', src_underscore_c: '}_',
- src_cite_o: '"{', src_cite_c: '}"',
- src_insert_o: '+{', src_insert_c: '}+',
- src_strike_o: '-{', src_strike_c: '}-',
- src_superscript_o: '^{', src_superscript_c: '}^',
- src_subscript_o: ',{', src_subscript_c: '}',
- src_hilite_o: '*{', src_hilite_c: '}*',
- src_monospace_o: '#{', src_monospace_c: '}#',
- srcrgx_bold_o: '\!\{', srcrgx_bold_c: '\}\!',
- srcrgx_italics_o: '\/\{', srcrgx_italics_c: '\}\/',
- srcrgx_underscore_o: '_\{', srcrgx_underscore_c: '\}_',
- srcrgx_cite_o: '"\{', srcrgx_cite_c: '\}"',
- srcrgx_insert_o: '\+\{', srcrgx_insert_c: '\}\+',
- srcrgx_strike_o: '\-\{', srcrgx_strike_c: '\}\-',
- srcrgx_superscript_o: '\^\{', srcrgx_superscript_c: '\}\^',
- srcrgx_subscript_o: ',\{', srcrgx_subscript_c: '\},',
- srcrgx_hilite_o: '\*\{', srcrgx_hilite_c: '\}\*',
- srcrgx_monospace_o: '\#\{', srcrgx_monospace_c: '\}\#',
-}
-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_line: { obj: Mx[:br_page_line] }, # line across page
- 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: /〔([0-9]):(\S*?)〕/,
- lv_0: /#{Mx[:lv_o_0]}(\S*?)#{Mx[:lv_c]}/,
- 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={
- ocn_o: '「', ocn_c: '」',
- 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: '',
- lng_lst: SiSU_is.language_list?,
- lng_lst_rgx: SiSU_is.language_list_regex?,
- lv1: '*',
- lv2: '=',
- lv3: '=',
- lv4: '-',
- lv5: '.',
- lv6: '.',
-}
-Px[:lng_lst_rgx]=Px[:lng_lst].join('|')
-Ep={
- alt: :on,
- d_oebps: 'OEBPS',
- d_image: 'OEBPS/image',
- d_css: 'OEBPS/css',
- f_ncx: 'toc.ncx',
- f_opf: 'content.opf',
-}
-$ep=if Ep[:alt]==:on
- {
- o: 'opf:',
- hsp: ' ',
- }
-else
- {
- o: '',
- hsp: '&nbsp;',
- }
-end
-Db={
- name_prefix: "SiSU#{SiSU_is.branch_version?}c_",
- name_prefix_db: "sisu_#{SiSU_is.branch_version?}c_",
- 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_txt_long: 600,
- col_txt_short: 200,
- col_identify_hash: 256,
- col_library: 30,
- col_small: 16,
- col_filename: 256,
- col_digest: 128,
- col_filesize: 10,
- col_info_note: 2500,
-}
-Gt={
- grotto: 'sisu_src',
- git: 'sisu:',
- src: 'src',
- pods: 'pods',
- sisupod: 'sisupod',
- pod: 'pod',
- files: 'files',
- doc: 'doc',
- po: 'po4a/po',
- pot: 'po4a/pot',
- image: 'image',
- audio: 'audio',
- video: 'video',
- conf: 'doc/_sisu',
-}
-S_CONF={
- header_make: 'sisu_document_make',
- rc_yml: 'sisurc.yml',
-}
-ANSI_C={
- red: "\033[#{31}m",
- green: "\033[#{32}m",
- yellow: "\033[#{33}m",
- blue: "\033[#{34}m",
- fuchsia: "\033[#{35}m",
- cyan: "\033[#{36}m",
- inv_red: "\033[#{41}m",
- inv_green: "\033[#{42}m",
- inv_yellow: "\033[#{43}m",
- inv_blue: "\033[#{44}m",
- inv_fuchsia: "\033[#{45}m",
- inv_cyan: "\033[#{46}m",
- b_red: "\033[#{91}m",
- b_green: "\033[#{92}m",
- b_yellow: "\033[#{93}m",
- b_blue: "\033[#{94}m",
- b_fuchsia: "\033[#{95}m",
- b_cyan: "\033[#{96}m",
- off: "\033[m"
-}
-DISABLE={
- epub: {
- internal_navigation: true,
- per_section_title: true,
- ncx_navpoint_unique_id: true,
- },
-}
-DEVELOPER={
- maintenance: :false,
- under_construction: '_CONSTRUCTION_ZONE',
-}
-__END__
-utils.rb
-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.act[:maintenance][:set]==:on
-puts "#{__FILE__} #{__LINE__} #{t_o}" if @opt.act[:maintenance][:set]==:on
- 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/develop/css.rb b/lib/sisu/develop/css.rb
deleted file mode 100644
index 19c87c0..0000000
--- a/lib/sisu/develop/css.rb
+++ /dev/null
@@ -1,3484 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** css stylesheets
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/css.rb;hb=HEAD>
-
-=end
-module SiSU_Style
- require_relative 'se' # se.rb
- require_relative 'html_parts' # html_parts.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
- 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
- when 'xml_docbook'
- css_path.xml_docbook
- 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
- when 'xml_docbook'
- style=File.new("#{css_pth}/#{@fn_css.xml_docbook}",'w')
- style << css.xml_docbook
- style.close
- css_path.xml_docbook
- end
- end
- end
- end
- class CSS
- include SiSU_Parts_HTML
- def fonts
- the_font.set_fonts
- end
- def html_tables #stylesheet for css table_pages
-<<WOK
-/* SiSU table output stylesheet */
- body {
- color: black;
- background: #{the_color.white};
- }
- p {
- display: block;
- line-height: 1.5;
- font-family: #{the_font.set_fonts};
- }
- a:link {
- color: #{the_color.blue_ink};
- text-decoration: none;
- }
- a:visited {
- color: #{the_color.blue_ink};
- text-decoration: none;
- /* background-color: #{the_color.blue_tinge}; */
- }
- a:hover {
- color: #{the_color.black};
- text-decoration: underline;
- background-color: #{the_color.yellow_light};
- }
- a:active {
- color: #{the_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, h7 {
- 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:hover img {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- a.lnkocn:link {
- color: #777777;
- text-decoration: none;
- }
- a.lnkocn:visited {
- color: #555555;
- text-decoration: none;
- }
- 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: 133%;
- margin-left: 0em;
- margin-right: 2em;
- margin-top: 12px;
- margin-bottom: 0px;
- padding-left: 0em;
- text-indent: 0em;
- }
- p, h0, h1, h2, h3, h4, h5, h6, h7 {
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-size: 100%;
- font-weight: normal;
- line-height: 133%;
- text-align: justify;
- margin-left: 0em;
- margin-right: 2em;
- text-indent: 0mm;
- margin-top: 0.8em;
- margin-bottom: 0.8em;
- }
-
- /* 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_sys/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_sys/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_sys/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, h7 {
- font-weight: bold;
- line-height: 120%;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- h4.norm, h5.norm, h6.norm, h7.norm {
- margin-top: 10px;
- margin-bottom: 0px;
- }
- h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.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%; }
- h7 { 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 {
- }
- h7.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%;
- }
- h7.toc {
- margin-left: 7em;
- font-size: 85%;
- line-height: 100%;
- }
-
- .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%;
- }
- h7.microtoc {
- margin-left: 30mm;
- font-weight: normal;
- font-size: 85%;
- }
-
- .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;
- }
- h7.subtoc {
- margin-left: 4em;
- font-size: 70%;
- 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%;
- }
- h7.minitoc {
- margin-left: 3em;
- font-size: 80%;
- }
- h0.minitoc {
- margin-left: 0em;
- font-size: 90%;
- }
-
- h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c {
- text-align: center
- }
- h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.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, h7.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: #{the_color.white}; margin:10px 10px 0px 10px; padding:0px;}
- p { line-height: 1.5 }
- a:link {color: #{the_color.blue_ink}; text-decoration: none; }
- a:visited {color: #{the_color.blue_ink}; text-decoration: none; }
- a:hover {color: #{the_color.black}; text-decoration: underline; background-color: #{the_color.yellow_light};}
- a:active {color: #{the_color.blue_ink}; text-decoration: underline;}
- #banner {
- background:#{the_color.white};
- }
- #column_left {
- width:25%;
- float:left;
- background:#b9d4dd;
- padding-bottom:10px;
- }
- #column_center {
- width:55%;
- float:left;
- background:#{the_color.white};
- padding-bottom:10px;
- }
- #column_right {
- width:20%;
- float:left;
- background:#b9d4dd;
- padding-bottom:10px;
- }
- p,h1,pre {
- font-family: #{the_font.set_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: #{the_font.set_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: #{the_font.set_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: #{the_font.set_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|="h7"] {
- 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: #{the_font.set_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: #{the_font.set_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;
- }
-
- .svg_outer {
- display: block;
- margin-bottom: 0;
- margin-left: 0;
- margin-right: 0;
- margin-top: 0;
- padding-bottom: 0;
- padding-left: 0;
- padding-right: 0;
- padding-top: 0;
- text-align: left;
- }
- .svg_inner {
- display: block;
- text-align: center;
- }
-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: #{the_font.set_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: #{the_font.set_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: #{the_font.set_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|="h7"] {
- 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: #{the_font.set_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: #{the_font.set_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 xml_docbook #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: #{the_font.set_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: #{the_font.set_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: #{the_font.set_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: #{the_font.set_fonts};
- font-weight: normal;
- }
- para.h1, title {
- display: block;
- font-family: #{the_font.set_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;
- }
- para.h7 {
- 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: #{the_font.set_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: #{the_font.set_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: #{the_font.set_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: #{the_font.set_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;
- }
- p.h7 {
- 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/develop/db_columns.rb b/lib/sisu/develop/db_columns.rb
deleted file mode 100644
index 478a112..0000000
--- a/lib/sisu/develop/db_columns.rb
+++ /dev/null
@@ -1,1997 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** modules shared by the different db types, dbi, postgresql, sqlite
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/db_columns.rb;hb=HEAD>
-
-=end
-module SiSU_DbColumns
- require_relative 'se' # se.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.act \
- and ((md.opt.act[:psql_import][:set]==:on \
- || md.opt.act[:psql_update][:set]==:on) \
- or (md.opt.act[:sqlite_import][:set]==:on \
- || md.opt.act[:sqlite_update][:set]==:on)) \
- 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_from_document_objects(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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- if defined? @md.creator.author_detail \
- and @md.creator.author_detail.is_a?(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
- 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
- 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
- if defined? @md.creator.editor_detail \
- and @md.creator.editor_detail.is_a?(Array) \
- and @md.creator.editor_detail.length > 0
- 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
- if defined? @md.creator.contributor_detail \
- and @md.creator.contributor_detail.is_a?(Array) \
- and @md.creator.contributor_detail.length > 0
- 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
- if defined? @md.creator.illustrator_detail \
- and @md.creator.illustrator_detail.is_a?(Array) \
- and @md.creator.illustrator_detail.length > 0
- 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
- if defined? @md.creator.photographer_detail \
- and @md.creator.photographer_detail.is_a?(Array) \
- and @md.creator.photographer_detail.length > 0
- 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
- if defined? @md.creator.translator_detail \
- and @md.creator.translator_detail.is_a?(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
- if defined? @md.creator.prepared_by_detail \
- and @md.creator.prepared_by_detail.is_a?(Array) \
- and @md.creator.prepared_by_detail.length > 0
- 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
- if defined? @md.creator.digitized_by_detail \
- and @md.creator.digitized_by_detail.is_a?(Array) \
- and @md.creator.digitized_by_detail.length > 0
- 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
- if defined? @md.creator.audio_detail \
- and @md.creator.audio_detail.is_a?(Array) \
- and @md.creator.audio_detail.length > 0
- 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
- if defined? @md.creator.video_detail \
- and @md.creator.video_detail.is_a?(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
- 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_
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
-#% identifier
-@identifier:
- :oclc:
- :isbn:
-=end
- def identifier_oclc
- def name
- 'identifier_oclc'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata identifier document Online Computer Library Center number';}
- end
- def tuple
- if defined? @md.identifier.oclc \
- and @md.identifier.oclc=~/\S+/
- txt=@md.identifier.oclc
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def identifier_isbn
- def name
- 'identifier_isbn'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_small]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata identifier document isbn (if any)';}
- end
- def tuple
- if defined? @md.identifier.isbn \
- and @md.identifier.isbn=~/\S+/
- txt=@md.identifier.isbn
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% classify
-@classify:
- :topic_register:
- :subject:
- :keywords:
- :type:
- :loc:
- :dewey:
-=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
- 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_txt_long]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document subject matter [DC3]';}
- end
- def tuple
- 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_loc
- def name
- 'classify_loc'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Library of Congress';}
- end
- def tuple
- 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_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Dewey';}
- end
- def tuple
- 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_keywords
- def name
- 'classify_keywords'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document keywords';}
- end
- def tuple
- 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:
- :description:
- :comment:
- :coverage:
- :relation:
- :format:
- :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
- 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_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
- 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_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
- 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_coverage
- def name
- 'notes_coverage'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document coverage [DC14]';}
- end
- def tuple
- 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 notes_relation
- def name
- 'notes_relation'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document relation [DC13]';}
- end
- def tuple
- 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 notes_history #check, consider removal
- def name
- 'notes_history'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes history';}
- end
- def tuple
- 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_type #check
- def name
- 'notes_type'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata notes document type [DC8]';}
- end
- def tuple
- if defined? @md.notes.type \
- and @md.notes.type=~/\S+/
- txt=@md.notes.type
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_format
- def name
- 'notes_format'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document format [DC9]';}
- end
- def tuple
- 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 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
- 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
- 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
- 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
- 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
- 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, sha512, 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 sha512, sha256 or md5';}
- end
- def tuple
- if defined? @md.dgst \
- and @md.dgst.is_a?(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
- 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
- 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
- if ((@md.opt.act[:psql_import][:set]==:on \
- || @md.opt.act[:psql_update][:set]==:on) \
- or (@md.opt.act[:sqlite_import][:set]==:on \
- || @md.opt.act[:sqlite_update][:set]==:on)) \
- and FileTest.exist?(@md.fns)
- ["#{name}, ","'#{@sisutxt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% misc
-@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
- if ((@md.opt.act[:psql_import][:set]==:on \
- || @md.opt.act[:psql_update][:set]==:on) \
- or (@md.opt.act[:sqlite_import][:set]==:on \
- || @md.opt.act[:sqlite_update][:set]==:on)) \
- and FileTest.exist?(@md.fns)
- ["#{name}, ","'#{@fulltext}', "]
- 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
- 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/develop/db_create.rb b/lib/sisu/develop/db_create.rb
deleted file mode 100644
index 782b0e6..0000000
--- a/lib/sisu/develop/db_create.rb
+++ /dev/null
@@ -1,689 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** modules shared by the different db types, dbi, postgresql, sqlite
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/db_create.rb;hb=HEAD>
-
-=end
-module SiSU_DbCreate
- require_relative 'db_columns' # db_columns.rb
- class Create < SiSU_DbColumns::Columns
- require_relative 'se' # se.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.act[:color_state][:set]).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.act[:color_state][:set],
- 'Create SQLite db tables in:',
- %{"#{@file}"}
- )
- : SiSU_Screen::Ansi.new(
- @opt.act[:color_state][:set],
- 'Create pgSQL db tables in:',
- %{"#{Db[:name_prefix]}#{@env.path.base_markup_dir_stub}"}
- )
- if (@opt.act[:verbose][:set]==:on \
- || @opt.act[:verbose_plus][:set]==:on \
- || @opt.act[:maintenance][:set]==:on)
- tell.dark_grey_title_hi
- end
- SiSU_Env::SystemCall.new.create_pg_db(@env.path.base_markup_dir_stub) if @sql_type==:pg #watch use of path.base_markup_dir_stub instead of stub
- end
- def output_dir?
- dir=SiSU_Env::InfoEnv.new('')
- if @opt.act[:sqlite][:set]==:on
- dir.path.webserv_stub_ensure
- end
- end
- def create_table
- def conn_exec(sql)
- if @sql_type==:pg
- conn_exec_pg(sql)
- elsif @sql_type==:sqlite
- conn_exec_sqlite(sql)
- end
- end
- def conn_exec_pg(sql)
- begin
- @conn.exec_params(sql)
- rescue
- if @conn.is_a?(NilClass)
- errmsg="No pg connection (check pg dependencies)"
- if @opt.act[:no_stop][:set]==:on
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error("#{errmsg}, proceeding without pg output (as requested)")
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error("#{errmsg}, STOPPING")
- exit
- end
- end
- end
- end
- def conn_exec_sqlite(sql)
- begin
- @conn.execute(sql)
- rescue
- if @conn.is_a?(NilClass)
- errmsg="No sqlite3 connection (check sqlite3 dependencies)"
- if @opt.act[:no_stop][:set]==:on
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error("#{errmsg}, proceeding without sqlite output (as requested)")
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error("#{errmsg}, STOPPING")
- exit
- end
- end
- end
- end
- def metadata_and_text
- if (@opt.act[:verbose_plus][:set]==:on \
- or @opt.act[:maintenance][:set]==:on)
- print %{
- currently using sisu_dbi module
- to be populated from document files
- create tables metadata_and_text
- data import through ruby transfer
- }
- end
- create_metadata_and_text=%{
- 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_loc.create_column}
- #{column.classify_dewey.create_column}
- #{column.classify_keywords.create_column}
- /* identifier */
- #{column.identifier_oclc.create_column}
- #{column.identifier_isbn.create_column}
- /* notes */
- #{column.notes_abstract.create_column}
- #{column.notes_description.create_column}
- #{column.notes_comment.create_column}
- #{column.notes_history.create_column}
- #{column.notes_coverage.create_column}
- #{column.notes_relation.create_column}
- /* column.notes_source.create_column */
- #{column.notes_type.create_column}
- #{column.notes_format.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.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, */
- );
- }
- conn_exec(create_metadata_and_text)
- @comment.psql.metadata_and_text if @comment
- end
- def doc_objects # create doc_objects base
- if (@opt.act[:verbose_plus][:set]==:on \
- or @opt.act[:maintenance][:set]==:on)
- print %{
- to be populated from documents files
- create tables doc_objects
- data import through ruby transfer
- }
- end
- create_doc_objects=%{
- 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,
- book_idx TEXT NULL,
- seg VARCHAR(256) NULL,
- lev_an VARCHAR(1),
- lev SMALLINT NULL,
- lev0 SMALLINT,
- lev1 SMALLINT,
- lev2 SMALLINT,
- lev3 SMALLINT,
- lev4 SMALLINT,
- lev5 SMALLINT,
- lev6 SMALLINT,
- lev7 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
- );
- }
- conn_exec(create_doc_objects)
- @comment.psql.doc_objects if @comment
- end
- def endnotes
- if (@opt.act[:verbose_plus][:set]==:on \
- or @opt.act[:maintenance][:set]==:on)
- print %{
- to be populated from document files
- create tables endnotes
- data import through ruby transfer
- }
- end
- create_endnotes=%{
- 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
- );
- }
- conn_exec(create_endnotes)
- @comment.psql.endnotes if @comment
- end
- def endnotes_asterisk
- if (@opt.act[:verbose_plus][:set]==:on \
- or @opt.act[:maintenance][:set]==:on)
- print %{
- to be populated from document files
- create tables endnotes_asterisk
- data import through ruby transfer
- }
- end
- create_endnotes_asterisk=%{
- 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
- );
- }
- conn_exec(create_endnotes_asterisk)
- @comment.psql.endnotes_asterisk if @comment
- end
- def endnotes_plus
- if (@opt.act[:verbose_plus][:set]==:on \
- or @opt.act[:maintenance][:set]==:on)
- print %{
- to be populated from document files
- create tables endnotes_plus
- data import through ruby transfer
- }
- end
- create_endnotes_plus=%{
- 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
- );
- }
- conn_exec(create_endnotes_plus)
- @comment.psql.endnotes_plus if @comment
- end
- def urls # create doc_objects file links mapping
- if (@opt.act[:verbose_plus][:set]==:on \
- or @opt.act[:maintenance][:set]==:on)
- print %{
- currently using sisu_dbi module
- to be populated from doc_objects files
- create tables urls
- data import through ruby transfer
- }
- end
- create_urls=%{
- 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)
- );
- }
- conn_exec(create_urls)
- @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 then psql
- end
- end
- def psql
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- conn.exec_params(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_loc.column_comment}},
- %{#{column.classify_dewey.column_comment}},
- %{#{column.classify_keywords.column_comment}},
- %{#{column.identifier_oclc.column_comment}},
- %{#{column.identifier_isbn.column_comment}},
- %{#{column.notes_abstract.column_comment}},
- %{#{column.notes_comment.column_comment}},
- %{#{column.notes_description.column_comment}},
- %{#{column.notes_history.column_comment}},
- %{#{column.notes_coverage.column_comment}},
- %{#{column.notes_relation.column_comment}},
- %{#{column.notes_type.column_comment}},
- %{#{column.notes_format.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.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-D 1-4';},
- %{COMMENT ON COLUMN doc_objects.lev
- IS 'doc level 0-7 \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.book_idx
- IS 'book index creation information for paragraph, if provided';},
- %{COMMENT ON COLUMN doc_objects.lev0
- IS 'document structure, level number 0';},
- %{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.lev7
- IS 'document structure, level number 7';},
- %{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/develop/db_dbi.rb b/lib/sisu/develop/db_dbi.rb
deleted file mode 100644
index e72c0e7..0000000
--- a/lib/sisu/develop/db_dbi.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** modules shared by the different db types, dbi, postgresql, sqlite
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/db_dbi.rb;hb=HEAD>
-
-=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/develop/db_drop.rb b/lib/sisu/develop/db_drop.rb
deleted file mode 100644
index f2dd642..0000000
--- a/lib/sisu/develop/db_drop.rb
+++ /dev/null
@@ -1,207 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** modules shared by the different db types, dbi, postgresql, sqlite
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/db_drop.rb;hb=HEAD>
-
-=end
-module SiSU_DbDrop
- require_relative 'utils_response' # utils_response.rb
- class Drop
- include SiSU_Response
- def initialize(opt,conn,db_info,sql_type)
- @opt,@conn,@db_info,@sql_type=opt,conn,db_info,sql_type
- 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=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::Rescued.new($!,$@,'-D').location do
- __LINE__.to_s + ':' + __FILE__
- end
- sdb.output_dir?
- end
- exit
- else
- @conn.transaction
- @drop_table.each do |d|
- begin
- @conn.exec_params(d)
- rescue
- next
- end
- end
- @conn.commit
- end
- when :pg
- @conn.transaction
- @drop_table.each do |d|
- begin
- @conn.exec_params(d)
- rescue
- next
- end
- end
- @conn.commit
- end
- rescue
- case @sql_type
- when :sqlite
- 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|
- begin
- @conn.exec_params(d)
- rescue
- next
- end
- end
- end
- ensure
- end
- end
- def indexes
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- begin
- conn.exec_params(sql)
- rescue
- next
- end
- end
- end
- end
- def base #% drop base indexes
- print "\n drop documents common indexes\n" unless @opt.act[:quiet][:set]==:on
- 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_lev0;},
- %{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.act[:quiet][:set]==:on
- sql_arr=[
- %{DROP INDEX idx_clean;},
- %{DROP INDEX idx_endnote},
- ]
- conn_execute_array(sql_arr)
- end
- self
- end
- indexes.base
- @opt.act[:psql][:set]==:on ? '' : indexes.text
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/develop/db_import.rb b/lib/sisu/develop/db_import.rb
deleted file mode 100644
index c221885..0000000
--- a/lib/sisu/develop/db_import.rb
+++ /dev/null
@@ -1,877 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** modules shared by the different db types, dbi, postgresql, sqlite
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/db_import.rb;hb=HEAD>
-
-=end
-module SiSU_DbImport