From 1323f18af45ea0d3aaef5cd9ead0efb5de8b9729 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sun, 19 Apr 2015 14:44:38 -0400 Subject: c<-d: sync, roll develop into current dir branch (5==6) * two dir branches, same library contents (v5 synced & updated with v6) --- lib/sisu/current/ao.rb | 106 +-- lib/sisu/current/ao_character_check.rb | 9 +- lib/sisu/current/ao_composite.rb | 30 +- lib/sisu/current/ao_doc_objects.rb | 12 + lib/sisu/current/ao_doc_str.rb | 406 +++++---- lib/sisu/current/ao_endnotes.rb | 15 +- lib/sisu/current/ao_expand_insertions.rb | 16 +- lib/sisu/current/ao_hash_digest.rb | 8 +- lib/sisu/current/ao_idx.rb | 25 +- lib/sisu/current/ao_images.rb | 6 +- lib/sisu/current/ao_misc_arrange.rb | 8 +- lib/sisu/current/ao_numbering.rb | 16 +- lib/sisu/current/ao_persist.rb | 194 +++++ lib/sisu/current/ao_references.rb | 502 +++++++++++ lib/sisu/current/ao_syntax.rb | 22 +- lib/sisu/current/cgi_sql_common.rb | 20 +- lib/sisu/current/constants.rb | 33 +- lib/sisu/current/db_drop.rb | 8 +- lib/sisu/current/db_sqltxt.rb | 24 +- lib/sisu/current/dp.rb | 49 +- lib/sisu/current/git.rb | 72 +- lib/sisu/current/html.rb | 19 +- lib/sisu/current/html_format.rb | 50 +- lib/sisu/current/html_harvest_authors.rb | 2 +- lib/sisu/current/html_harvest_topics.rb | 8 +- lib/sisu/current/html_lite_shared.rb | 3 +- lib/sisu/current/html_manifest.rb | 381 +++++---- lib/sisu/current/html_minitoc.rb | 5 +- lib/sisu/current/html_parts.rb | 10 +- lib/sisu/current/html_persist.rb | 237 ++++++ lib/sisu/current/html_segments.rb | 356 ++++---- lib/sisu/current/html_tune.rb | 15 +- lib/sisu/current/hub.rb | 6 +- lib/sisu/current/hub_actions.rb | 192 ++++- lib/sisu/current/hub_loop_markup_files.rb | 3 + lib/sisu/current/hub_options.rb | 81 +- lib/sisu/current/manpage.rb | 103 +-- lib/sisu/current/object_munge.rb | 307 +++++++ lib/sisu/current/po4a.rb | 1118 ------------------------ lib/sisu/current/po4a_set.rb | 295 ------- lib/sisu/current/se_clear.rb | 1 - lib/sisu/current/se_file_op.rb | 116 ++- lib/sisu/current/se_filemap.rb | 6 + lib/sisu/current/se_get_init.rb | 44 +- lib/sisu/current/se_info_env.rb | 14 +- lib/sisu/current/se_programs.rb | 10 + lib/sisu/current/se_version.rb | 54 +- lib/sisu/current/shared_markup_alt.rb | 3 +- lib/sisu/current/shared_metadata.rb | 40 +- lib/sisu/current/src_po4a_share.rb | 309 +++++++ lib/sisu/current/src_po4a_shelf.rb | 1217 +++++++++++++++++++++++++++ lib/sisu/current/src_po4a_shelf_set.rb | 297 +++++++ lib/sisu/current/src_po4a_sst_ao_sst.rb | 893 ++++++++++++++++++++ lib/sisu/current/src_po4a_sst_ao_sst_set.rb | 284 +++++++ lib/sisu/current/src_po4a_sstm.rb | 135 +++ lib/sisu/current/src_share.rb | 109 --- lib/sisu/current/src_shared.rb | 102 +-- lib/sisu/current/src_sisupod_sstm.rb | 109 +++ lib/sisu/current/sst_convert_markup.rb | 5 +- lib/sisu/current/sst_from_xml.rb | 2 +- lib/sisu/current/sst_to_s_xml_sax.rb | 2 +- lib/sisu/current/texinfo_format.rb | 2 +- lib/sisu/current/texpdf_format.rb | 8 +- lib/sisu/current/txt_asciidoc.rb | 239 +----- lib/sisu/current/txt_asciidoc_decorate.rb | 207 +++++ lib/sisu/current/txt_markdown.rb | 242 +----- lib/sisu/current/txt_markdown_decorate.rb | 207 +++++ lib/sisu/current/txt_orgmode.rb | 376 +++++++++ lib/sisu/current/txt_orgmode_decorate.rb | 186 ++++ lib/sisu/current/txt_output.rb | 86 ++ lib/sisu/current/txt_plain.rb | 243 +----- lib/sisu/current/txt_plain_decorate.rb | 189 +++++ lib/sisu/current/txt_read.rb | 109 +++ lib/sisu/current/txt_rst.rb | 218 +---- lib/sisu/current/txt_rst_decorate.rb | 186 ++++ lib/sisu/current/txt_textile.rb | 240 +----- lib/sisu/current/txt_textile_decorate.rb | 186 ++++ lib/sisu/current/urls.rb | 31 +- lib/sisu/current/utils_composite.rb | 115 +++ lib/sisu/current/utils_response.rb | 25 +- lib/sisu/current/wikispeak.rb | 4 +- lib/sisu/current/xhtml.rb | 120 +-- lib/sisu/current/xhtml_epub2.rb | 478 +++++------ lib/sisu/current/xhtml_epub2_format.rb | 7 +- lib/sisu/current/xhtml_epub2_persist.rb | 278 ++++++ lib/sisu/current/xhtml_epub2_segments.rb | 351 ++++---- lib/sisu/current/xhtml_parts.rb | 2 +- lib/sisu/current/xhtml_table.rb | 1 - lib/sisu/current/xml_dom.rb | 134 +-- lib/sisu/current/xml_fictionbook2.rb | 4 +- lib/sisu/current/xml_odf_odt.rb | 48 +- lib/sisu/current/xml_odf_odt_format.rb | 4 +- lib/sisu/current/xml_persist.rb | 126 +++ lib/sisu/current/xml_sax.rb | 145 ++-- lib/sisu/current/xml_shared.rb | 2 +- 95 files changed, 9070 insertions(+), 4253 deletions(-) create mode 100644 lib/sisu/current/ao_persist.rb create mode 100644 lib/sisu/current/ao_references.rb create mode 100644 lib/sisu/current/html_persist.rb create mode 100644 lib/sisu/current/object_munge.rb delete mode 100644 lib/sisu/current/po4a.rb delete mode 100644 lib/sisu/current/po4a_set.rb create mode 100644 lib/sisu/current/src_po4a_share.rb create mode 100644 lib/sisu/current/src_po4a_shelf.rb create mode 100644 lib/sisu/current/src_po4a_shelf_set.rb create mode 100644 lib/sisu/current/src_po4a_sst_ao_sst.rb create mode 100644 lib/sisu/current/src_po4a_sst_ao_sst_set.rb create mode 100644 lib/sisu/current/src_po4a_sstm.rb delete mode 100644 lib/sisu/current/src_share.rb create mode 100644 lib/sisu/current/src_sisupod_sstm.rb create mode 100644 lib/sisu/current/txt_asciidoc_decorate.rb create mode 100644 lib/sisu/current/txt_markdown_decorate.rb create mode 100644 lib/sisu/current/txt_orgmode.rb create mode 100644 lib/sisu/current/txt_orgmode_decorate.rb create mode 100644 lib/sisu/current/txt_output.rb create mode 100644 lib/sisu/current/txt_plain_decorate.rb create mode 100644 lib/sisu/current/txt_read.rb create mode 100644 lib/sisu/current/txt_rst_decorate.rb create mode 100644 lib/sisu/current/txt_textile_decorate.rb create mode 100644 lib/sisu/current/utils_composite.rb create mode 100644 lib/sisu/current/xhtml_epub2_persist.rb create mode 100644 lib/sisu/current/xml_persist.rb diff --git a/lib/sisu/current/ao.rb b/lib/sisu/current/ao.rb index 3467c4c6..b7878dbf 100644 --- a/lib/sisu/current/ao.rb +++ b/lib/sisu/current/ao.rb @@ -64,6 +64,7 @@ module SiSU_AO 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 @@ -73,6 +74,7 @@ module SiSU_AO 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 @@ -82,13 +84,10 @@ module SiSU_AO end end class Source 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 @@ -1134,7 +1229,7 @@ module SiSU_AO_DocumentStructureExtract obj: 'eof', } meta=SiSU_AO_DocumentStructure::ObjectMetadata.new.metadata(@metadata) - [tuned_file,meta] + [tuned_file,meta,bibliography] end def table_rows_and_columns_array(table_str) table=[] @@ -1162,13 +1257,13 @@ module SiSU_AO_DocumentStructureExtract SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end def build_lines(type=:none) - lines,lines_new=@data,[] - lines.each do |line| + 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 @@flag[:code]==:curls or @@flag[:code]==:tics + @@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 @@ -1180,9 +1275,8 @@ module SiSU_AO_DocumentStructureExtract line.gsub(/\s*$/,"#{Mx[:br_nl]}") else line end - lines_new << line + line end - lines_new end end class Structure # this must happen early diff --git a/lib/sisu/current/ao_endnotes.rb b/lib/sisu/current/ao_endnotes.rb index 7c9ae067..508d798a 100644 --- a/lib/sisu/current/ao_endnotes.rb +++ b/lib/sisu/current/ao_endnotes.rb @@ -66,9 +66,8 @@ module SiSU_AO_Endnotes end def endnotes data=@data - @tuned_file=[] endnote_ref=1 - data.each do |dob| + @tuned_file=data.each.map do |dob| # manually numbered endnotes --> if @md.opt.selections.str =~/--no-asterisk|--no-annotate/ dob.obj=dob.obj. @@ -89,20 +88,20 @@ module SiSU_AO_Endnotes word_mode=endnote_call_number(word_mode) dob.obj=word_mode.join(' ') endnote_ref+=1 - when /~\^(?:\s|$)|<:e>/ #%note inserts endnotes previously gathered from /^(|[-~]\{{3})/ (in earlier loop) + when /~\^(?:\s|$)/ #%note inserts endnotes previously gathered from /^(|[-~]\{{3})/ (in earlier loop) word_mode=dob.obj.scan(/\S+/m) word_mode=endnote_call_number(word_mode) dob.obj=word_mode.join(' ') endnote_ref+=1 end end - @tuned_file << dob - end + dob + end.flatten @endnote_counter, @endnote_counter_asterisk, @endnote_counter_dag= 1,1,1 - @tuned_file=@tuned_file.flatten + @tuned_file end def endnote_call_number(words) words.each do |word| @@ -123,9 +122,9 @@ module SiSU_AO_Endnotes "#{Mx[:en_b_o]}\*#{@endnote_counter_asterisk} ") @endnote_counter_asterisk+=1 end - when /~\^|<:e>/ + when /~\^/ if @endnote_array - word.gsub!(/~\^|<:e>/, + word.gsub!(/~\^/, "#{@endnote_array[@endnote_counter-1]}") @endnote_counter+=1 end diff --git a/lib/sisu/current/ao_expand_insertions.rb b/lib/sisu/current/ao_expand_insertions.rb index 3a749df3..3d4ea8cb 100644 --- a/lib/sisu/current/ao_expand_insertions.rb +++ b/lib/sisu/current/ao_expand_insertions.rb @@ -484,21 +484,19 @@ module SiSU_AO_Insertions 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 |o_f| - describe = o_f - if describe - tuned_file_tmp << if @u.remote #to double space <:br> at beginning of entry - "#{Mx[:nbsp]*4} #{describe} " + 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 |o_f| - describe = o_f - if describe + output_filetypes[:src].each do |desc| + if desc tuned_file_tmp << if @u.remote - "#{Mx[:nbsp]*4} #{describe} " + "#{Mx[:nbsp]*4} #{desc} " else "[provide document placement host location]" end diff --git a/lib/sisu/current/ao_hash_digest.rb b/lib/sisu/current/ao_hash_digest.rb index bc86a485..0864989c 100644 --- a/lib/sisu/current/ao_hash_digest.rb +++ b/lib/sisu/current/ao_hash_digest.rb @@ -103,9 +103,8 @@ module SiSU_AO_Hash #use md5 or to create hash of each ao object including ocn, & add into to each ao object end def endnote_digest(data) - t_o_bit=[] - data.each do |en_plus| - t_o_bit <<= case en_plus + 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= @@ -133,8 +132,7 @@ module SiSU_AO_Hash end else en_plus end - end - t_o_bit.join + 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 diff --git a/lib/sisu/current/ao_idx.rb b/lib/sisu/current/ao_idx.rb index 0c9c8a43..defad2c3 100644 --- a/lib/sisu/current/ao_idx.rb +++ b/lib/sisu/current/ao_idx.rb @@ -61,8 +61,6 @@ module SiSU_AO_BookIndex @rgx_idx=/#{Mx[:idx_o]}(?:.+?)#{Mx[:idx_c]}\s*/ @rgx_idx_ocn_seg=/(.+?)~(\d+)~(\S+)/ @rgx_idx_ocn=/(.+?)~(\d+)/ - @ocn_html_identifier= - SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier @env ||=SiSU_Env::InfoEnv.new(@md.fns) end def indexing_song @@ -261,13 +259,13 @@ module SiSU_AO_BookIndex 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##{@ocn_html_identifier}#{a[:ocn]}#{Mx[:rel_c]}, } + %{#{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[:range]}, } + %{#{a[:range]}, } idx[:xhtml][@q]= idx[:xhtml][@q] + %{#{a[:range]}, } @@ -275,13 +273,13 @@ module SiSU_AO_BookIndex 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##{@ocn_html_identifier}#{a[:ocn]}#{Mx[:rel_c]}, } + %{#{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[:ocn]}, } + %{#{a[:ocn]}, } idx[:xhtml][@q]= idx[:xhtml][@q] + %{#{a[:ocn]}, } @@ -313,13 +311,13 @@ module SiSU_AO_BookIndex 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##{@ocn_html_identifier}#{z[:ocn]}#{Mx[:rel_c]}, } + %{#{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] + - %{#{z[:range]}, } + %{#{z[:range]}, } idx[:xhtml][@q]= idx[:xhtml][@q] + %{#{z[:range]}, } @@ -327,13 +325,13 @@ module SiSU_AO_BookIndex 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##{@ocn_html_identifier}#{z[:ocn]}#{Mx[:rel_c]}, } + %{#{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] + - %{#{z[:ocn]}, } + %{#{z[:ocn]}, } idx[:xhtml][@q]= idx[:xhtml][@q] + %{#{z[:ocn]}, } @@ -415,12 +413,9 @@ module SiSU_AO_BookIndex tuned_file end def clean_index(data) #check on use of dob - tuned_file=[] - data.each do |para| - para=para.gsub(/\n*#{@rgx_idx}/m,'') - tuned_file << para + data.each.map do |para| + para.gsub(/\n*#{@rgx_idx}/m,'') end - tuned_file end end end diff --git a/lib/sisu/current/ao_images.rb b/lib/sisu/current/ao_images.rb index c0c45712..38fde812 100644 --- a/lib/sisu/current/ao_images.rb +++ b/lib/sisu/current/ao_images.rb @@ -67,7 +67,6 @@ module SiSU_AO_Images end def images data=@data - tuned_file=[] @rmgk=false imagemagick_=true #imagemagick_=SiSU_Env::InfoSettings.new.program?('rmagick') if imagemagick_ @@ -85,7 +84,7 @@ module SiSU_AO_Images ).warn end end - data.each do |dob| + 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)/ @@ -179,9 +178,8 @@ module SiSU_AO_Images dob.obj=dob.obj.gsub(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ') end end - tuned_file << dob unless dob.nil? + dob unless dob.nil? end - tuned_file end end end diff --git a/lib/sisu/current/ao_misc_arrange.rb b/lib/sisu/current/ao_misc_arrange.rb index e010eaca..d023c44f 100644 --- a/lib/sisu/current/ao_misc_arrange.rb +++ b/lib/sisu/current/ao_misc_arrange.rb @@ -189,7 +189,6 @@ module SiSU_AO_MiscArrangeText end def prepare_text data=@data - data_new=[],[] 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/,'') @@ -198,11 +197,10 @@ module SiSU_AO_MiscArrangeText data[0]=data[0].gsub(/^(SiSU\s*[\d.]*)$/,'% \1'). gsub(/^(sisu-[\d.]+)$/,'% \1') end - data.each do |para| + data.each.map do |para| para=conditional_headings(para) - data_new << markup_blocks(para) - end - data_new=data_new.flatten + markup_blocks(para) + end.flatten end end end diff --git a/lib/sisu/current/ao_numbering.rb b/lib/sisu/current/ao_numbering.rb index 31986a86..861bbf07 100644 --- a/lib/sisu/current/ao_numbering.rb +++ b/lib/sisu/current/ao_numbering.rb @@ -172,7 +172,6 @@ module SiSU_AO_Numbering gsub(/#{Mx[:gl_bullet]}/,'') end def auto_number_heading_ie_title(data) #also does some segment naming - @tuned_file=[] if defined? @md.make.num_top \ and @md.make.num_top \ and @md.make.num_top !~/^$/ @@ -185,7 +184,7 @@ module SiSU_AO_Numbering end chapter_number_counter=0 data=data.compact - data.each do |dob| #@md.seg_names << [additions to segment names] + @tuned_file=data.each.map do |dob| #@md.seg_names << [additions to segment names] title_no=nil if dob.is ==:heading \ && dob.autonum_ \ @@ -274,9 +273,8 @@ module SiSU_AO_Numbering dob.tags=set_tags(dob.tags,dob.name) end dob.tags=dob.tags.uniq if defined? dob.tags - @tuned_file << dob - end - @tuned_file=@tuned_file.flatten + dob + end.flatten end def ocn(data) #and auto segment numbering increment @tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data,@fnx,@process).ocn @@ -287,10 +285,9 @@ module SiSU_AO_Numbering @tuned_file end def minor_numbering(data) #and auto segment numbering increment - @tuned_file=[] number_small,letter_small=0,0 letter=%w( a b c d e f g h i j k l m n o p q r s t u v w x y z ) - data.each do |dob| + @tuned_file=data.each.map do |dob| if dob.of ==:heading \ || dob.of ==:heading_insert \ || dob.of ==:para \ @@ -313,9 +310,8 @@ module SiSU_AO_Numbering end end end - @tuned_file << dob - end - @tuned_file=@tuned_file.flatten + dob + end.flatten end def leading_zeros_fixed_width_number(possible_seg_name) if possible_seg_name.to_s =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/ diff --git a/lib/sisu/current/ao_persist.rb b/lib/sisu/current/ao_persist.rb new file mode 100644 index 00000000..72126c90 --- /dev/null +++ b/lib/sisu/current/ao_persist.rb @@ -0,0 +1,194 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** document abstraction + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=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/current/ao_references.rb b/lib/sisu/current/ao_references.rb new file mode 100644 index 00000000..9a5e195b --- /dev/null +++ b/lib/sisu/current/ao_references.rb @@ -0,0 +1,502 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** system environment, resource control and configuration details + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=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|edited by)\s+.+?)} + end + def year_pattern + %r{[(\[]?(?\d{4})[\])]?[.,]?} + end + def authors_year_title_publication_editor_pages + /(?.+?)\s+#{year_pattern}\s+"(?.+?)"\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/current/ao_syntax.rb b/lib/sisu/current/ao_syntax.rb index 554daae5..c3108668 100644 --- a/lib/sisu/current/ao_syntax.rb +++ b/lib/sisu/current/ao_syntax.rb @@ -61,8 +61,8 @@ module SiSU_AO_Syntax end end class Markup - def initialize(md='',data='') - @md,@data=md,data + 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}" @@ -221,6 +221,24 @@ module SiSU_AO_Syntax 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 \ diff --git a/lib/sisu/current/cgi_sql_common.rb b/lib/sisu/current/cgi_sql_common.rb index 94f6126e..62bec041 100644 --- a/lib/sisu/current/cgi_sql_common.rb +++ b/lib/sisu/current/cgi_sql_common.rb @@ -537,14 +537,14 @@ module SiSU_CGI_SQL <!-- SiSU Rights --> <p class="tiny_left"><font color="#666666" size="2"> Generated by - #{v[:project]} #{v[:version]} #{v[:date]} (#{v[:date_stamp]}) + #{v.project} #{v.version} #{v.date} (#{v.date_stamp}) <br> <a href="http://www.sisudoc.org" > - <b>#{v[:project]}</b></a> <sup>©</sup> Ralph Amissah + <b>#{v.project}</b></a> <sup>©</sup> Ralph Amissah 1993, current 2014. All Rights Reserved. <br> - #{v[:project]} is software for document structuring, publishing and search, + #{v.project} is software for document structuring, publishing and search, <br> <a href="http://www.jus.uio.no/sisu" > www.jus.uio.no/sisu @@ -574,7 +574,7 @@ module SiSU_CGI_SQL </font></p> </td><td valign="top" width="45%"> <p class="tiny_left"><font color="#666666" size="2"> - #{v[:project]} using: + #{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) @@ -601,7 +601,7 @@ module SiSU_CGI_SQL </font></p> </td><td valign="top" width="45%"> <p class="tiny_left"><font color="#666666" size="2"> - #{v[:project]}, developed using + #{v.project}, developed using <a href="http://www.ruby-lang.org/en/"> Ruby </a> @@ -908,13 +908,11 @@ module SiSU_CGI_SQL else nil end @search_regx=if unescaped_search #check - search_regex=[] - build=unescaped_search.scan(/\S+/).each do |g| + search_regex=unescaped_search.scan(/\S+/).each.map do |g| (g.to_s =~/(AND|OR)/) \ - ? (search_regex << '|') - : (search_regex << %{#{g.to_s}}) - end - search_regex=search_regex.join(' ') + ? ('|') + : (%{#{g.to_s}}) + end.join(' ') search_regex=search_regex.gsub(/\s*\|\s*/,'|') Regexp.new(search_regex, Regexp::IGNORECASE) else nil diff --git a/lib/sisu/current/constants.rb b/lib/sisu/current/constants.rb index 7a23027d..175c2e70 100644 --- a/lib/sisu/current/constants.rb +++ b/lib/sisu/current/constants.rb @@ -62,6 +62,7 @@ Sfx={ txt_asciidoc: '.ad', txt_markdown: '.md', txt_rst: '.rst', + txt_orgmode: '.org', html: '.html', xhtml: '.xhtml', xml: '.xml', @@ -146,6 +147,26 @@ Mx={ 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]}" @@ -220,16 +241,6 @@ Px={ subscript_o: '[', subscript_c: ']', hilite_o: '*', hilite_c: '*', monospace_o: '', monospace_c: '', - po_bold_o: '!{', po_bold_c: '}!', - po_italics_o: '/{', po_italics_c: '}/', - po_underscore_o: '_{', po_underscore_c: '}_', - po_cite_o: '"{', po_cite_c: '}"', - po_insert_o: '+{', po_insert_c: '}+', - po_strike_o: '-{', po_strike_c: '}-', - po_superscript_o: '^{', po_superscript_c: '}^', - po_subscript_o: ',{', po_subscript_c: '},', - po_hilite_o: '*{', po_hilite_c: '}*', - po_monospace_o: '#{', po_monospace_c: '}#', lng_lst: SiSU_is.language_list?, lng_lst_rgx: SiSU_is.language_list_regex?, lv1: '*', @@ -352,7 +363,7 @@ check: #ห " ฮป ฮฉ ฮฒ ฮฑ ฯ€ ัช ะ– ะฏ ัฒ ัณ ะค โœ  ใˆฃ ัฒ ัณ ะค โ™ฉ โ™ญ ๎€ฅ โœ  ๎€ง โ–ญ โ–ฌ โ–ช -ใ€ใ€‘ใ€–ใ€—โ—ข โ—ฃ โ—€ โ–ถ โ—˜ โ—™ +ใ€ใ€‘ใ€–ใ€—โ—ข โ—ฃ โ—€ โ–ถ โ—˜ โ—™ ยซ โ–ฒ ยป ใ€Šใ€‹ใ€Œใ€ โ€น โ€บ โˆ— ๎€† โˆด โˆท 'ใ€”lv1ใ€•','ใ€”lv2ใ€•','ใ€”lv3ใ€•','ใ€”lv4ใ€•','ใ€”lv5ใ€•','ใ€”lv6ใ€•','ใ€”lv7ใ€•','ใ€”lv8ใ€•','ใ€”lv9ใ€•' diff --git a/lib/sisu/current/db_drop.rb b/lib/sisu/current/db_drop.rb index acdae9da..b90a81e5 100644 --- a/lib/sisu/current/db_drop.rb +++ b/lib/sisu/current/db_drop.rb @@ -55,11 +55,11 @@ =end module SiSU_DbDrop + require_relative 'utils_response' # utils_response.rb class Drop - require_relative 'utils_response' # utils_response.rb + include SiSU_Response def initialize(opt,conn,db_info,sql_type) @opt,@conn,@db_info,@sql_type=opt,conn,db_info,sql_type - @ans=SiSU_Response::Response.new case @sql_type when :sqlite cascade='' @@ -82,7 +82,7 @@ module SiSU_DbDrop case @sql_type when :sqlite puts msg_sqlite - ans=@ans.response?('remove sql database?') + ans=response?('remove sql database?') if ans \ and File.exist?(@db_info.sqlite.db) @conn.close @@ -133,7 +133,7 @@ module SiSU_DbDrop rescue case @sql_type when :sqlite - ans=@ans.response?('remove sql database?') + ans=response?('remove sql database?') if ans and File.exist?(@db_info.sqlite.db); File.unlink(@db_info.sqlite.db) end else diff --git a/lib/sisu/current/db_sqltxt.rb b/lib/sisu/current/db_sqltxt.rb index a307dc1d..de717cc6 100644 --- a/lib/sisu/current/db_sqltxt.rb +++ b/lib/sisu/current/db_sqltxt.rb @@ -66,9 +66,9 @@ module SiSU_DbText gsub(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/m,'\1') end def clean_searchable_text_from_document_objects(arr) - txt_arr,en=[],[] + en=[] arr=(arr.is_a?(String)) ? [ arr ] : arr - arr.each do |s| + txt_arr=arr.each.map do |s| s=s.gsub(/#{Mx[:fa_o]}[a-z]{1,4}#{Mx[:fa_o_c]}/m,''). gsub(/#{Mx[:fa_c_o]}[a-z]{1,4}#{Mx[:fa_c]}/m,''). gsub(/<br>/m,' ') @@ -77,25 +77,26 @@ module SiSU_DbText gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/m,''). gsub(/ \s+/m,' ') #p s if s =~/[^ \nA-Za-z0-9'"`?!#@$%^&*=+,.;:\[\]()<>{}โ€นโ€บ|\\\/~_-]/ - txt_arr << s + s end txt_arr=txt_arr << en txt=txt_arr.flatten.join("\n") special_character_escape(txt) end def clean_document_objects_body(arr) - txt_arr,en,en_arr=[],[],[] + en=[] arr=(arr.is_a?(String)) ? [ arr ] : arr - arr.each do |s| + txt_arr=arr.each.map do |s| en << s.scan(/#{Mx[:en_a_o]}\s*(.+?)\s*#{Mx[:en_a_c]}/m) - s=s.gsub(/#{Mx[:en_a_o]}\s*(\d+).+?#{Mx[:en_a_c]}/m,'<sup>\1</sup>'). + s=s. + gsub(/#{Mx[:en_a_o]}\s*(\d+).+?#{Mx[:en_a_c]}/m, + '<sup>\1</sup>'). gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/m,''). gsub(/ \s+/m,' ') - txt_arr << s + s end - en.flatten.each do |e| - e=e.sub(/^(\d+)\s*/,'<sup>\1</sup> ') - en_arr << e + en_arr=en.flatten.each.map do |e| + e.sub(/^(\d+)\s*/,'<sup>\1</sup> ') end txt_arr=txt_arr << en_arr txt=txt_arr.flatten.join("\n<br>") @@ -106,7 +107,8 @@ module SiSU_DbText arr=(arr.is_a?(String)) ? arr.split(/\n+/m) : arr arr.each do |s| s=s.gsub(/([*\/_-])\{(.+?)\}\1/m,'\2'). - gsub(/^(?:block|group|poem|code)\{/m,'').gsub(/^\}(?:block|group|poem|code)/m,''). + gsub(/^(?:block|group|poem|code)\{/m,''). + gsub(/^\}(?:block|group|poem|code)/m,''). gsub(/\A(?:@\S+:\s+.+)\Z/m,'') if s =~/^:A~/ if defined? @md.creator \ diff --git a/lib/sisu/current/dp.rb b/lib/sisu/current/dp.rb index 4cf058e7..85264771 100644 --- a/lib/sisu/current/dp.rb +++ b/lib/sisu/current/dp.rb @@ -132,8 +132,14 @@ module SiSU_Param @@md=@md else @@md end - @@md.opt=@opt - @@md + begin + @@md.opt=@opt + @@md + rescue + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + mark('has an existing option been selected?') + exit + end end class MdDefault def rights(author,date) @@ -891,9 +897,9 @@ module SiSU_Param @doc={ lv: [] } @doc[:fns],@doc[:fnb],@doc[:scr_suffix]='','','' @@publisher='SiSU scribe' - attr_accessor :make,:env,:path,:file,:fn,:fns,:fno,:fnb,:fnn,:fnt,:fnl,:flv,:fnz,:fnstex,:ocn,:sfx_src,:pdf,:file_type,:dir_out,:dir_tex,:dir_lout,:txt_path,:sisu,:sisu_version,:ruby_version,:title,:subtitle,:full_title,:html_title,:subtitle_tex,:creator,:classify,:author_home,:author,:author_title,:author_nationality,:authors,:authorship,:translator,:illustrator,:prepared_by,:digitized_by,:subject,:description,:publisher,:current_publisher,:contributor,:date,:date_created,:date_issued,:date_available,:date_valid,:date_modified,:date_translated,:date_added_to_site,:date_scheme,:date_created_scheme,:date_issued_scheme,:date_available_scheme,:date_valid_scheme,:date_modified_scheme,:type,:format,:identifier,:source,:language,:language_original,:relation,:coverage,:rights,:keywords,:comments,:abstract,:cls_loc,:cls_dewey,:cls_pg,:cls_isbn,:papersize,:papersize_array,:toc,:lv0,:lv1,:lv2,:lv3,:lv4,:lv5,:lv6,:lvs,:pagenew,:pagebreak,:pageline,:num_top,:bold_match_list,:italics_match_list,:substitution_match_list,:emphasis_set_to,:toc_lev_limit,:flag_endnotes,:flag_auto_endnotes,:flag_separate_endnotes,:flag_separate_endnotes_make,:markup,:markup_instruction,:flag_tables,:vocabulary,:doc_css,:yaml,:lnk,:links,:prefix_a,:prefix_b,:suffix,:information,:contact,:icon,:image,:ad_url,:ad_png,:ad_alt,:ad_began,:flag_promo,:promo,:ad_home,:stmp,:stmpd,:sc_filename,:sc_number,:sc_date,:sc_time,:sc_info,:yamladdr,:locale,:wc_lines,:wc_words,:wc_bytes,:file_encoding,:filesize,:user,:home,:hostname,:pwd,:firstseg,:programs,:author_copymark,:i18n,:lang,:lang_code_insert,:en,:notes,:dgst,:generated,:tags,:tag_array,:concord_make,:seg_names,:seg_autoname_safe,:set_header_title,:set_heading_top,:set_heading_seg,:heading_seg_first,:heading_seg_first_flag,:base_program,:ec,:opt,:sem_tag,:book_idx,:topic_register,:topic_register_array,:original,:writing_focus,:audio,:daisy,:home_button_image,:home_button_links,:footer_links,:cover_image,:man_section + attr_accessor :make,:env,:path,:file,:fn,:fns,:fno,:fnb,:fnn,:fnt,:fnl,:flv,:fnz,:fnstex,:ocn,:sfx_src,:pdf,:file_type,:dir_out,:dir_tex,:dir_lout,:txt_path,:sisu,:project_details,:ruby_version,:title,:subtitle,:full_title,:html_title,:subtitle_tex,:creator,:classify,:author_home,:author,:author_title,:author_nationality,:authors,:authorship,:translator,:illustrator,:prepared_by,:digitized_by,:subject,:description,:publisher,:current_publisher,:contributor,:date,:date_created,:date_issued,:date_available,:date_valid,:date_modified,:date_translated,:date_added_to_site,:date_scheme,:date_created_scheme,:date_issued_scheme,:date_available_scheme,:date_valid_scheme,:date_modified_scheme,:type,:format,:identifier,:source,:language,:language_original,:relation,:coverage,:rights,:keywords,:comments,:abstract,:cls_loc,:cls_dewey,:cls_pg,:cls_isbn,:papersize,:papersize_array,:toc,:lv0,:lv1,:lv2,:lv3,:lv4,:lv5,:lv6,:lvs,:pagenew,:pagebreak,:pageline,:num_top,:bold_match_list,:italics_match_list,:substitution_match_list,:emphasis_set_to,:toc_lev_limit,:flag_biblio,:flag_auto_biblio,:flag_endnotes,:flag_auto_endnotes,:flag_separate_endnotes,:flag_separate_endnotes_make,:markup,:markup_instruction,:flag_tables,:vocabulary,:doc_css,:yaml,:lnk,:links,:prefix_a,:prefix_b,:suffix,:information,:contact,:icon,:image,:ad_url,:ad_png,:ad_alt,:ad_began,:flag_promo,:promo,:ad_home,:stmp,:stmpd,:sc_filename,:sc_number,:sc_date,:sc_time,:sc_info,:yamladdr,:locale,:wc_lines,:wc_words,:wc_bytes,:file_encoding,:filesize,:user,:home,:hostname,:pwd,:firstseg,:programs,:author_copymark,:i18n,:lang,:lang_code_insert,:en,:notes,:dgst,:generated,:tags,:tag_array,:concord_make,:seg_names,:seg_autoname_safe,:set_header_title,:set_heading_top,:set_heading_seg,:heading_seg_first,:heading_seg_first_flag,:base_program,:ec,:opt,:sem_tag,:book_idx,:topic_register,:topic_register_array,:original,:writing_focus,:audio,:daisy,:home_button_image,:home_button_links,:footer_links,:cover_image,:man_section def initialize(fns_array,opt) - @env=@path,@file=@fn=@fns=@fno=@fnb=@fnn=@fnt=@fnl=@flv=@fnz=@fnstex=@ocn=@sfx_src=@pdf=@file_type=@dir_out=@dir_tex=@dir_lout=@txt_path=@make=@flag_endnotes=@flag_auto_endnotes=@flag_separate_endnotes=@flag_separate_endnotes_make=@sisu=@sisu_version=@ruby_version=@title=@subtitle=@full_title=@html_title=@subtitle_tex=@creator=@classify=@author_home=@author=@author_title=@author_nationality=@translator=@illustrator=@prepared_by=@digitized_by=@subject=@description=@publisher=@current_publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@date_translated=@date_added_to_site=@date_scheme=@date_created_scheme=@date_issued_scheme=@date_available_scheme=@date_valid_scheme=@date_modified_scheme=@type=@format=@identifier=@source=@language=@language_original=@relation=@coverage=@rights=@keywords=@comments=@abstract=@cls_loc=@cls_dewey=@cls_pg=@cls_isbn=@papersize=@toc=@lv0=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@pagenew=@pagebreak=@pageline=@num_top=@bold_match_list=@italics_match_list=@substitution_match_list=@emphasis_set_to=@toc_lev_limit=@flag_tables=@vocabulary=@doc_css=@yaml=@lnk=@links=@prefix_a=@prefix_b=@suffix=@information=@contact=@icon=@ad_url=@ad_png=@ad_alt=@ad_began=@promo=@ad_home=@stmp=@stmpd=@sc_filename=@sc_number=@sc_date=@sc_time=@sc_info=@yamladdr=@locale=@wc_lines=@wc_words=@wc_bytes=@file_encoding=@filesize=@firstseg=@programs=@author_copymark=@i18n=@lang=@lang_code_insert=@en=@notes=@dgst=@generated=@heading_seg_first=@base_program=@topic_register=@original=@writing_focus=@audio=@home_button_image=@home_button_links=@cover_image=@man_section=nil + @env=@path,@file=@fn=@fns=@fno=@fnb=@fnn=@fnt=@fnl=@flv=@fnz=@fnstex=@ocn=@sfx_src=@pdf=@file_type=@dir_out=@dir_tex=@dir_lout=@txt_path=@make=@flag_biblio=@flag_auto_biblio=@flag_endnotes=@flag_auto_endnotes=@flag_separate_endnotes=@flag_separate_endnotes_make=@sisu=@project_details=@ruby_version=@title=@subtitle=@full_title=@html_title=@subtitle_tex=@creator=@classify=@author_home=@author=@author_title=@author_nationality=@translator=@illustrator=@prepared_by=@digitized_by=@subject=@description=@publisher=@current_publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@date_translated=@date_added_to_site=@date_scheme=@date_created_scheme=@date_issued_scheme=@date_available_scheme=@date_valid_scheme=@date_modified_scheme=@type=@format=@identifier=@source=@language=@language_original=@relation=@coverage=@rights=@keywords=@comments=@abstract=@cls_loc=@cls_dewey=@cls_pg=@cls_isbn=@papersize=@toc=@lv0=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@pagenew=@pagebreak=@pageline=@num_top=@bold_match_list=@italics_match_list=@substitution_match_list=@emphasis_set_to=@toc_lev_limit=@flag_tables=@vocabulary=@doc_css=@yaml=@lnk=@links=@prefix_a=@prefix_b=@suffix=@information=@contact=@icon=@ad_url=@ad_png=@ad_alt=@ad_began=@promo=@ad_home=@stmp=@stmpd=@sc_filename=@sc_number=@sc_date=@sc_time=@sc_info=@yamladdr=@locale=@wc_lines=@wc_words=@wc_bytes=@file_encoding=@filesize=@firstseg=@programs=@author_copymark=@i18n=@lang=@lang_code_insert=@en=@notes=@dgst=@generated=@heading_seg_first=@base_program=@topic_register=@original=@writing_focus=@audio=@home_button_image=@home_button_links=@cover_image=@man_section=nil @data, @path, @fns, @fno, @opt= fns_array,opt.pth,opt.fns,opt.fno,opt #@data used as data @flag_tables,@set_header_title,@set_heading_top,@set_heading_seg,@heading_seg_first_flag,@flag_promo,@book_idx= @@ -1008,22 +1014,35 @@ module SiSU_Param @fnstex=@fns.gsub(/_/,'\_\-').gsub(/\./,'.\-') @flag_endnotes,@flag_auto_endnotes,@flag_separate_endnotes=false,false,false @flag_separate_endnotes_make=true + @flag_biblio,@flag_auto_biblio=false,false ver=SiSU_Env::InfoVersion.instance - @sisu_version=ver.get_version + @project_details=ver.get_version @ruby_version=ver.rbversion @generated=Time.now fns_array=@data.dup skip unless fns_array # consider @code_flag=false + flag_code_curly=:not_code_curly + flag_code_tics=:not_code_tics fns_array.each do |para| #% scan document if para !~/^%+\s/ \ and para =~/<![abcdeghijklmnopqrstuvwxyz]/i # <!f not included - raise "Old markup style in file #{@fns}, current version #{@sisu_version[:project]} #{@sisu_version[:version]} #{@sisu_version[:date_stamp]} #{@sisu_version[:date]}:\n\t\t#{para}\n\n" + raise "Old markup style in file #{@fns}, current version #{@project_details.project} #{@project_details.version} #{@project_details.date_stamp} #{@project_details.date}:\n\t\t#{para}\n\n" + end + if para =~/^code\{/ + flag_code_curly=:code_curly + elsif para =~/^\}code/ + flag_code_curly=:not_code_curly + elsif para =~/^``` code/ + flag_code_tics=:code_tics + elsif flag_code_tics ==:code_tics \ + and para =~/^```/ + flag_code_tics=:not_code_tics end - @code_flag=case para - when /^code\{\s*$/ then true - when /^\}code\s*$/ then false - else @code_flag + @code_flag=if flag_code_curly==:code_curly \ + or flag_code_tics==:code_tics + true + else false end regx_header=/^@\S+?:[+-]?\s/ if para =~regx_header \ @@ -1196,6 +1215,16 @@ module SiSU_Param %{#{title}#{creator}} ).txt_grey if @opt.act[:verbose][:set]==:on end + unless @code_flag + if para =~/^1~biblio(?:graphy)?/ + @flag_auto_biblio,@flag_biblio=false,true + #@flag_biblio=true + elsif @flag_biblio ==true \ + and @flag_auto_biblio ==false \ + and para =~/^(?:au|author):/m + @flag_auto_biblio =true + end + end if not @book_idx \ and para =~/^=\{(.+?)\}[\s`]*\Z/m @book_idx=true diff --git a/lib/sisu/current/git.rb b/lib/sisu/current/git.rb index 0ec3520b..b8b5f106 100644 --- a/lib/sisu/current/git.rb +++ b/lib/sisu/current/git.rb @@ -132,14 +132,22 @@ module SiSU_Git (found =~/bin\/git\b/) ? true : false end def make_dir_fnb - FileUtils::mkdir_p(@git_path[:fnb]) unless FileTest.directory?(@git_path[:fnb]) - FileUtils::mkdir_p(@git_path[:doc]) unless FileTest.directory?(@git_path[:doc]) - FileUtils::mkdir_p(@git_path[:po]) unless FileTest.directory?(@git_path[:po]) - FileUtils::mkdir_p(@git_path[:pot]) unless FileTest.directory?(@git_path[:pot]) - FileUtils::mkdir_p(@git_path[:conf]) unless FileTest.directory?(@git_path[:conf]) - FileUtils::mkdir_p(@git_path[:image]) unless FileTest.directory?(@git_path[:image]) - #FileUtils::mkdir_p(@git_path[:audio]) unless FileTest.directory?(@git_path[:audio]) - #FileUtils::mkdir_p(@git_path[:video]) unless FileTest.directory?(@git_path[:video]) + FileUtils::mkdir_p(@git_path[:fnb]) \ + unless FileTest.directory?(@git_path[:fnb]) + FileUtils::mkdir_p(@git_path[:doc]) \ + unless FileTest.directory?(@git_path[:doc]) + FileUtils::mkdir_p(@git_path[:po]) \ + unless FileTest.directory?(@git_path[:po]) + FileUtils::mkdir_p(@git_path[:pot]) \ + unless FileTest.directory?(@git_path[:pot]) + FileUtils::mkdir_p(@git_path[:conf]) \ + unless FileTest.directory?(@git_path[:conf]) + FileUtils::mkdir_p(@git_path[:image]) \ + unless FileTest.directory?(@git_path[:image]) + #FileUtils::mkdir_p(@git_path[:audio]) \ + # unless FileTest.directory?(@git_path[:audio]) + #FileUtils::mkdir_p(@git_path[:video]) \ + # unless FileTest.directory?(@git_path[:video]) end def git_init unless FileTest.directory?("#{@git_path[:fnb]}/.git") @@ -168,13 +176,23 @@ module SiSU_Git p __LINE__ end def copy_src_head - if @opt.f_pth[:lng] - FileUtils::cp_r("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{@opt.fns}",@git_path[:doc]) + if @opt.f_pth[:lng] \ + and File.exist?("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{@opt.fns}") + FileUtils::cp_r( + "#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{@opt.fns}", + @git_path[:doc] + ) elsif @opt.fns =~/\.ssm\.sst/ ssm=@opt.fns.gsub(/\.ssm\.sst/,'.ssm') - FileUtils::cp_r("#{@env.path.pwd}/#{ssm}",@git_path[:doc]) - else - FileUtils::cp_r("#{@env.path.pwd}/#{@opt.fns}",@git_path[:doc]) + FileUtils::cp_r( + "#{@env.path.pwd}/#{ssm}", + @git_path[:doc] + ) + elsif File.exist?("#{@env.path.pwd}/#{@opt.fns}") + FileUtils::cp_r( + "#{@env.path.pwd}/#{@opt.fns}", + @git_path[:doc] + ) end end def copy_related_sst_ssi @@ -183,14 +201,21 @@ module SiSU_Git file_array=IO.readlines(@opt.fns,'') file_array.each do |f| if f =~@rgx_doc_import - doc_import = doc_import + f.scan(@rgx_doc_import).uniq.flatten + doc_import = doc_import \ + + f.scan(@rgx_doc_import).uniq.flatten end end doc_import.each do |f| if @opt.f_pth[:lng] - FileUtils::cp_r("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{f}",@git_path[:doc]) + FileUtils::cp_r( + "#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{f}", + @git_path[:doc] + ) else - FileUtils::cp_r("#{@env.path.pwd}/#{f}",@git_path[:doc]) + FileUtils::cp_r( + "#{@env.path.pwd}/#{f}", + @git_path[:doc] + ) end end end @@ -200,10 +225,19 @@ module SiSU_Git and not @opt.act[:ao][:set]==:on ##SiSU_Assemble::Composite.new(@opt).read #SiSU_AO::Source.new(@opt).read # -m - "#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst" + @env.processing_path.composite_file \ + + '/' \ + + @opt.fnb \ + + '.ssm.sst' elsif composite_src - "#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst" - else "#{@env.path.pwd}/#{@opt.fns}" + @env.processing_path.composite_file \ + + '/' \ + + @opt.fnb \ + + '.ssm.sst' + else + @env.path.pwd + + '/' \ + + @opt.fns end end def read_composite diff --git a/lib/sisu/current/html.rb b/lib/sisu/current/html.rb index 582773e5..3aab3be7 100644 --- a/lib/sisu/current/html.rb +++ b/lib/sisu/current/html.rb @@ -165,11 +165,10 @@ module SiSU_HTML end end SiSU_Env::Clear.new(@opt.selections.str,@opt.fns,@md).param_instantiate - @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{} - @@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0 - @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]} - @@filename_seg,@@seg_url,@@fn,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','','','' - @@is4=@@is3=@@is2=@@is1=@@heading1=@@heading2=@@heading3=@@heading4=0 + @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc={},{},{},{},{} + @@tracker=0 + @@seg_name,@@seg_name_x,@@seg_subtoc_array,@@seg_endnotes_array,@@tablefoot=Array.new(5){[]} + @@filename_seg,@@seg_url,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','' end end private @@ -262,8 +261,6 @@ module SiSU_HTML @@firstseg=nil def initialize(md=nil,data='') @data,@md=data,md - @ocn_html_identifier= - SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md end def songsheet #extracts toc for scroll & seg @@ -378,7 +375,7 @@ WOK title=if dob.ocn ==0 then linkname else @@toc[:scr] << '<br>' - %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>} + %{<b><a href="##{dob.ocn}">#{linkname}</a></b>} end txt_obj={ txt: title } format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @@ -420,7 +417,7 @@ WOK end else @@toc[:scr] << '<br>' - %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>} + %{<b><a href="##{dob.ocn}">#{linkname}</a></b>} end txt_obj={ txt: title } format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @@ -537,7 +534,7 @@ WOK } f=@md.file.base_filename.html_seg(fnh) p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) - lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{ocn}"> + lnk_n_txt=%{ <a href="#{f}##{ocn}"> #{linkname} </a>} txt_obj={ txt: lnk_n_txt } @@ -562,7 +559,7 @@ WOK } f=@md.file.base_filename.html_seg(fnh) p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) - lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{ocn}"> + lnk_n_txt=%{ <a href="#{f}##{ocn}"> #{linkname} </a>} txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/current/html_format.rb b/lib/sisu/current/html_format.rb index 8f83219f..b350170f 100644 --- a/lib/sisu/current/html_format.rb +++ b/lib/sisu/current/html_format.rb @@ -60,7 +60,6 @@ module SiSU_HTML_Format def initialize(md,ocn) @md,@ocn=md,ocn.to_s @ocn ||='' - @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier @make=SiSU_Env::ProcessingSettings.new(@md) end def ocn_display @@ -69,7 +68,7 @@ module SiSU_HTML_Format or @ocn.empty? '' else - %{<label class="ocn"><a href="##{@ocn_html_identifier}#{@ocn}" class="lnkocn">#{@ocn}</a></label>} + %{<label class="ocn"><a href="##{@ocn}" class="lnkocn">#{@ocn}</a></label>} end else '' @@ -84,10 +83,12 @@ module SiSU_HTML_Format end end def id #w3c? "tidy" complains about numbers as identifiers ! annoying - (@ocn==nil || @ocn.empty?) ? '' : %{id="#{Mx[:ocn_id_char]}#{@ocn}"} + (@ocn==nil || @ocn.empty?) \ + ? '' : %{id="#{Mx[:ocn_id_char]}#{@ocn}"} end def goto - (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn_html_identifier}#{@ocn}">} + (@ocn==nil || @ocn.empty?) \ + ? '' : %{<a href="##{@ocn}">} end end class HeadInformation @@ -99,8 +100,9 @@ module SiSU_HTML_Format @md=md # DublinCore 1 - title @bits=SiSU_Proj_HTML::Bits.new - @seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || []) - @seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || []) + @per=SiSU_HTML_Persist::Persist.new + @per.seg_name_x=SiSU_HTML::Seg.new.seg_name_x + @per.seg_name_x_tracker=SiSU_HTML::Seg.new.seg_name_x_tracker @tocband_scroll,@tocband_segtoc=nil,nil @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure @@ -403,7 +405,7 @@ WOK <head> <meta charset="utf-8"> <title> - #{@md.html_title} + #{@md.title.full} #{rdf.metatag_html} @@ -615,9 +617,9 @@ WOK super(md) end def dot_control_pre_next - pre="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}" + pre="#{@per.seg_name_x[@per.seg_name_x_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}" up=@toc - nxt="#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}" + nxt="#{@per.seg_name_x[@per.seg_name_x_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}" if nxt=~/sisu_manifest\.html/ @file=SiSU_Env::FileOp.new(@md) if @md if @file.output_dir_structure.by_language_code? \ @@ -643,7 +645,7 @@ WOK #{the_table_close}} end def dot_control_pre - pre="#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.lang_code_insert}#{Sfx[:html]}" + pre="#{@per.seg_name_x[@per.seg_name_x_tracker-2]}#{@md.lang_code_insert}#{Sfx[:html]}" up=@toc nxt="#{@md.file.base_filename.html_segtoc}" %{ @@ -671,12 +673,12 @@ WOK } pre=%{} if f_pre==true nxt=%{} if f_nxt==true @@ -721,23 +723,6 @@ WOK else '' end end - def navigation_table - %{
- + #{png_nav.pre} - + #{png_nav.nxt}
-
- - - } - end - def navigation_table1 - %{ -
- } - end - def navigation_table2 - %{ -\n} + @manifest[:txt] << "#{file} #{desc} #{kb}\n" + @manifest[:html] << %{\n} end - def summarize_html_seg(id,file,pth='',rel='',url='',img='โ— ') + def summarize_html_seg(desc,id,file,pth='',rel='',url='',img='โ— ') size=(File.size("#{pth}/#{file}")/1024.00).to_s kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1] - @manifest[:txt] << "#{file} #{id} #{kb}\n" - @manifest[:html] << %{\n} + @manifest[:txt] << "#{file} #{desc} #{kb}\n" + @manifest[:html] << %{\n} end - def summarize_sources(id,file,pth,rel,url) + def summarize_sources(desc,id,file,pth,rel,url) sys=SiSU_Env::SystemCall.new dgst=case @dg when :sha512 @@ -194,9 +194,9 @@ module SiSU_Manifest end size=(File.size("#{pth}/#{file}")/1024.00).to_s kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1] - @manifest[:txt] << "#{file} #{id} #{kb}\n" + @manifest[:txt] << "#{file} #{desc} #{kb}\n" @manifest[:html] << %{} \ - + %{} \ + + %{} \ + %{} \ + %{} \ + %{\n} \ @@ -246,7 +246,7 @@ module SiSU_Manifest end @m=@m.uniq end - def languages(id,file) + def languages(desc,file) @manifest[:html] << %{\n} end - def published_languages(id) + def published_languages(desc) published_manifests?.each do |l| @manifest[:txt] << "#{l[:mu]} #{l[:l]}\n" @manifest[:html] << %{\n} end end - def metadata(id,info) + def metadata(desc,id,info) info=info.to_s.gsub(/(?:#{Mx[:br_line]}|\\)+/,'
') - @manifest[:html] << %{\n} + @manifest[:html] << %{\n} end def links(url,lnk,target) static=if url =~/^\.\// then url.gsub(/^\.(\.)?/,@base_url) @@ -278,271 +278,278 @@ module SiSU_Manifest pth=@f.output_path.html_seg.dir rel=@f.output_path.html_seg.rel_sm url=@f.output_path.html_seg.url - id,file='HTML, table of contents (for segmented text)',@f.base_filename.html_segtoc - summarize_html_seg(id,file,pth,rel,url,img) + desc,id,file='HTML, table of contents (for segmented text)','html',@f.base_filename.html_segtoc + summarize_html_seg(desc,id,file,pth,rel,url,img) end if FileTest.file?(@f.place_file.html_scroll.dir)==true img=%{Full Text } pth=@f.output_path.html_scroll.dir rel=@f.output_path.html_scroll.rel_sm url=@f.output_path.html_scroll.url - id,file='HTML, full length document',@f.base_filename.html_scroll - summarize(id,file,pth,rel,url,img) + desc,id,file='HTML, full length document','html_scroll',@f.base_filename.html_scroll + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?(@f.place_file.html_book_index.dir)==true pth=@f.output_path.html_seg.dir rel=@f.output_path.html_seg.rel_sm url=@f.output_path.html_seg.url - id,file='HTML, (book type) index',@f.base_filename.html_book_index - summarize(id,file,pth,rel,url) + desc,id,file='HTML, (book type) index','html_book',@f.base_filename.html_book_index + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.html_concordance.dir)==true pth=@f.output_path.html_seg.dir rel=@f.output_path.html_seg.rel_sm url=@f.output_path.html_seg.url - id,file='HTML, concordance file',@f.base_filename.html_concordance - summarize(id,file,pth,rel,url) + desc,id,file='HTML, concordance file','concordance',@f.base_filename.html_concordance + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.epub.dir)==true img=%{EPUB } - id,file='EPUB (Electronic Publication, e-book standard)',@f.base_filename.epub + desc,id,file='EPUB (Electronic Publication, e-book standard)','epub',@f.base_filename.epub pth=@f.output_path.epub.dir rel=@f.output_path.epub.rel_sm url=@f.output_path.epub.url - summarize(id,file,pth,rel,url,img) + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_letter}")==true img=%{PDF portrait } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, U.S. letter size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_letter}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, U.S. letter size, portrait/vertical document (recommended for printing)",'pdf_letter',"#{@f.base_filename.pdf_p_letter}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_letter}")==true img=%{PDF landscape } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, U.S. letter size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_letter}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, U.S. letter size, landscape/horizontal document (recommended for screen viewing)",'pdf_letter_landscape',"#{@f.base_filename.pdf_l_letter}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a4}")==true img=%{PDF portrait } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, A4 size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_a4}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, A4 size, portrait/vertical document (recommended for printing)",'pdf_a4',"#{@f.base_filename.pdf_p_a4}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a4}")==true img=%{PDF landscape } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, A4 size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_a4}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, A4 size, landscape/horizontal document (recommended for screen viewing)",'pdf_a4_landscape',"#{@f.base_filename.pdf_l_a4}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a5}")==true img=%{PDF portrait } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, A5 (book) size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_a5}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, A5 (book) size, portrait/vertical document (recommended for printing)",'pdf_a5',"#{@f.base_filename.pdf_p_a5}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a5}")==true img=%{PDF landscape } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, A5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_a5}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, A5 (book) size, landscape/horizontal document (recommended for screen viewing)",'pdf_a5_landscape',"#{@f.base_filename.pdf_l_a5}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_b5}")==true img=%{PDF portrait } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, B5 (book) size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_b5}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, B5 (book) size, portrait/vertical document (recommended for printing)",'pdf_b5',"#{@f.base_filename.pdf_p_b5}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_b5}")==true img=%{PDF landscape } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, B5 (book) size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_b5}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, B5 (book) size, landscape/horizontal document (recommended for screen viewing)",'pdf_a5_landscape',"#{@f.base_filename.pdf_l_b5}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_legal}")==true img=%{PDF portrait } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, U.S. legal size, portrait/vertical document (recommended for printing)","#{@f.base_filename.pdf_p_legal}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, U.S. legal size, portrait/vertical document (recommended for printing)",'pdf_legal',"#{@f.base_filename.pdf_p_legal}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_legal}")==true img=%{PDF landscape } pth=@f.output_path.pdf.dir rel=@f.output_path.pdf.rel_sm url=@f.output_path.pdf.url - id,file="PDF, U.S. legal size, landscape/horizontal document (recommended for screen viewing)","#{@f.base_filename.pdf_l_legal}" - summarize(id,file,pth,rel,url,img) + desc,id,file="PDF, U.S. legal size, landscape/horizontal document (recommended for screen viewing)",'pdf_legal_landscape',"#{@f.base_filename.pdf_l_legal}" + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?(@f.place_file.odt.dir)==true img=%{ODF/ODT } pth=@f.output_path.odt.dir rel=@f.output_path.odt.rel_sm url=@f.output_path.odt.url - id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt - summarize(id,file,pth,rel,url,img) + desc,id,file='ODF:ODT (Open Document Format)','odt',@f.base_filename.odt + summarize(desc,id,file,pth,rel,url,img) end if FileTest.file?(@f.place_file.xhtml.dir)==true pth=@f.output_path.xhtml.dir rel=@f.output_path.xhtml.rel_sm url=@f.output_path.xhtml.url - id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt - id,file='XHTML',@f.base_filename.xhtml - summarize(id,file,pth,rel,url) + desc,id,file='XHTML','xhtml',@f.base_filename.xhtml + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.xml_sax.dir)==true pth=@f.output_path.xml_sax.dir rel=@f.output_path.xml_sax.rel_sm url=@f.output_path.xml_sax.url - id,file='XML SAX',@f.base_filename.xml_sax - summarize(id,file,pth,rel,url) + desc,id,file='XML SAX','xml_sax',@f.base_filename.xml_sax + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.xml_dom.dir)==true pth=@f.output_path.xml_dom.dir rel=@f.output_path.xml_dom.rel_sm url=@f.output_path.xml_dom.url - id,file='XML DOM',@f.base_filename.xml_dom - summarize(id,file,pth,rel,url) + desc,id,file='XML DOM','xml_dom',@f.base_filename.xml_dom + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.xml_docbook_article.dir)==true pth=@f.output_path.xml_docbook_article.dir rel=@f.output_path.xml_docbook_article.rel_sm url=@f.output_path.xml_docbook_article.url - id,file='XML Docbook Book',@f.base_filename.xml_docbook_article - summarize(id,file,pth,rel,url) + desc,id,file='XML Docbook Article','docbook_article',@f.base_filename.xml_docbook_article + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.xml_docbook_book.dir)==true pth=@f.output_path.xml_docbook_book.dir rel=@f.output_path.xml_docbook_book.rel_sm url=@f.output_path.xml_docbook_book.url - id,file='XML Docbook Book',@f.base_filename.xml_docbook_book - summarize(id,file,pth,rel,url) + desc,id,file='XML Docbook Book','docbook',@f.base_filename.xml_docbook_book + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.xml_fictionbook.dir)==true pth=@f.output_path.xml_fictionbook.dir rel=@f.output_path.xml_fictionbook.rel_sm url=@f.output_path.xml_fictionbook.url - id,file='XML Fictionbook',@f.base_filename.xml_fictionbook - summarize(id,file,pth,rel,url) + desc,id,file='XML Fictionbook','fictionbook',@f.base_filename.xml_fictionbook + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.xml_scaffold_structure_sisu.dir)==true pth=@f.output_path.xml_scaffold_structure_sisu.dir rel=@f.output_path.xml_scaffold_structure_sisu.rel_sm url=@f.output_path.xml_scaffold_structure_sisu.url - id,file='XML Scaffold sisu structure',@f.base_filename.xml_scaffold_structure_sisu - summarize(id,file,pth,rel,url) + desc,id,file='XML Scaffold sisu structure','xml_scaffold',@f.base_filename.xml_scaffold_structure_sisu + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.xml_scaffold_structure_collapse.dir)==true pth=@f.output_path.xml_scaffold_structure_collapse.dir rel=@f.output_path.xml_scaffold_structure_collapse.rel_sm url=@f.output_path.xml_scaffold_structure_collapse.url - id,file='XML Scaffold collapsed structure',@f.base_filename.xml_scaffold_structure_collapse - summarize(id,file,pth,rel,url) + desc,id,file='XML Scaffold collapsed structure','xml_collapsed',@f.base_filename.xml_scaffold_structure_collapse + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.info.dir)==true pth=@f.output_path.texinfo.dir rel=@f.output_path.texinfo.rel_sm url=@f.output_path.texinfo.url - id,file='Info file',@f.base_filename.info - summarize(id,file,pth,rel,url) + desc,id,file='Info file','info',@f.base_filename.info + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.manpage.dir)==true pth=@f.output_path.manpage.dir rel=@f.output_path.manpage.rel_sm url=@f.output_path.manpage.url - id,file='Manpage',@f.base_filename.manpage - summarize(id,file,pth,rel,url) + desc,id,file='Manpage','manpage',@f.base_filename.manpage + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.sqlite_discrete.dir)==true - id,file='SQLite3 file',@f.base_filename.sqlite_discrete + desc,id,file='SQLite3 file','sqlite',@f.base_filename.sqlite_discrete pth=@f.output_path.sqlite_discrete.dir rel=@f.output_path.sqlite_discrete.rel_sm url=@f.output_path.sqlite_discrete.url - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.txt.dir)==true - id='Plaintext (UTF-8)' + desc,id='Plaintext (UTF-8)','text' pth=@f.output_path.txt.dir rel=@f.output_path.txt.rel_sm url=@f.output_path.txt.url file=@f.base_filename.txt - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.textile.dir)==true - id='Textile text (UTF-8)' + desc,id='Textile text (UTF-8)','textile' pth=@f.output_path.textile.dir rel=@f.output_path.textile.rel_sm url=@f.output_path.textile.url file=@f.base_filename.textile - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.asciidoc.dir)==true - id='AsciiDoc text (UTF-8)' + desc,id='AsciiDoc text (UTF-8)','asciidoc' pth=@f.output_path.asciidoc.dir rel=@f.output_path.asciidoc.rel_sm url=@f.output_path.asciidoc.url file=@f.base_filename.asciidoc - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.markdown.dir)==true - id='Markdown text (UTF-8)' + desc,id='Markdown text (UTF-8)','markdown' pth=@f.output_path.markdown.dir rel=@f.output_path.markdown.rel_sm url=@f.output_path.markdown.url file=@f.base_filename.markdown - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.rst.dir)==true - id='rST text (UTF-8)' + desc,id='rST text (UTF-8)','rst' pth=@f.output_path.rst.dir rel=@f.output_path.rst.rel_sm url=@f.output_path.rst.url file=@f.base_filename.rst - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.orgmode.dir)==true + desc,id='OrgMode structure text (UTF-8)','org' + pth=@f.output_path.orgmode.dir + rel=@f.output_path.orgmode.rel_sm + url=@f.output_path.orgmode.url + file=@f.base_filename.orgmode + summarize(desc,id,file,pth,rel,url) end if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true - id,file='LaTeX (portrait)',"#{@md.fns}.tex" + desc,id,file='LaTeX (portrait)','latex',"#{@md.fns}.tex" pth,rel,url='','','' - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) end if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true - id,file='LaTeX (landscape)',"#{@md.fns}.landscape.tex" + desc,id,file='LaTeX (landscape)','latex_landscape',"#{@md.fns}.landscape.tex" pth,rel,url='','','' - summarize(id,file,pth,rel,url) + summarize(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.hash_digest.dir)==true pth=@f.output_path.hash_digest.dir rel=@f.output_path.hash_digest.rel_sm url=@f.output_path.hash_digest.url - id,file="Digest/DCC - Document Content Certificate (#{@dg})",@f.base_filename.hash_digest - summarize(id,file,pth,rel,url) + desc,id,file="Digest/DCC - Document Content Certificate (#{@dg})",'digests',@f.base_filename.hash_digest + summarize(desc,id,file,pth,rel,url) end end def published_versions - id,file='Markup (SiSU source)',@md.fns - languages(id,file) + desc,file='Markup (SiSU source)','source',@md.fns + languages(desc,file) end def language_versions if FileTest.file?(@f.place_file.manifest.dir)==true - id='Markup (SiSU source)' - published_languages(id) + desc='Markup (SiSU source)' + published_languages(desc) end end def qrc_image @@ -582,165 +589,165 @@ WOK pth=@f.output_path.src.dir rel=@f.output_path.src.rel_sm url=@f.output_path.src.url - id,file='Markup Composite File (SiSU source)',@f.base_filename.src - summarize_sources(id,file,pth,rel,url) + desc,id,file='Markup Composite File (SiSU source)','source',@f.base_filename.src + summarize_sources(desc,id,file,pth,rel,url) end else if FileTest.file?(@f.place_file.src.dir)==true pth=@f.output_path.src.dir rel=@f.output_path.src.rel_sm url=@f.output_path.src.url - id,file='Markup (SiSU source)',@f.base_filename.src - summarize_sources(id,file,pth,rel,url) + desc,id,file='Markup (SiSU source)','composite',@f.base_filename.src + summarize_sources(desc,id,file,pth,rel,url) end end if FileTest.file?(@f.place_file.sisupod.dir)==true pth=@f.output_path.sisupod.dir rel=@f.output_path.sisupod.rel_sm url=@f.output_path.sisupod.url - id,file='SiSU doc (tar.xz)',@f.base_filename.sisupod - summarize_sources(id,file,pth,rel,url) + desc,id,file='SiSUdoc pod (tar.xz)','sisupod',@f.base_filename.sisupod + summarize_sources(desc,id,file,pth,rel,url) end if FileTest.file?(@f.place_file.pot.dir)==true pth=@f.output_path.pot.dir rel=@f.output_path.pot.rel_sm url=@f.output_path.pot.url - id,file='SiSU pot',@f.base_filename.pot - summarize_sources(id,file,pth,rel,url) + desc,id,file='SiSU pot','pot',@f.base_filename.pot + summarize_sources(desc,id,file,pth,rel,url) end end def metadata_tests if defined? @md.title #% if defined? @md.title.full \ and @md.title.full=~/\S+/ - id,info=@translate.full_title,@md.title.full - metadata(id,info) + desc,id,info=@translate.full_title,'title',@md.title.full + metadata(desc,id,info) end end if defined? @md.creator #% if defined? @md.creator.author \ and @md.creator.author=~/\S+/ - id,info=@translate.author,@md.creator.author - metadata(id,info) + desc,id,info=@translate.author,'author',@md.creator.author + metadata(desc,id,info) end if defined? @md.creator.editor \ and @md.creator.editor=~/\S+/ - id,info=@translate.editor,@md.creator.editor - metadata(id,info) + desc,id,info=@translate.editor,'editor',@md.creator.editor + metadata(desc,id,info) end if defined? @md.creator.contributor \ and @md.creator.contributor=~/\S+/ - id,info=@translate.contributor,@md.creator.contributor - metadata(id,info) + desc,id,info=@translate.contributor,'contributor',@md.creator.contributor + metadata(desc,id,info) end if defined? @md.creator.translator \ and @md.creator.translator=~/\S+/ - id,info=@translate.translator,@md.creator.translator - metadata(id,info) + desc,id,info=@translate.translator,'creator',@md.creator.translator + metadata(desc,id,info) end if defined? @md.creator.illustrator \ and @md.creator.illustrator=~/\S+/ - id,info=@translate.illustrator,@md.creator.illustrator - metadata(id,info) + desc,id,info=@translate.illustrator,'illustrator',@md.creator.illustrator + metadata(desc,id,info) end if defined? @md.creator.prepared_by \ and @md.creator.prepared_by=~/\S+/ - id,info=@translate.prepared_by,@md.creator.prepared_by - metadata(id,info) + desc,id,info=@translate.prepared_by,'prepared_by',@md.creator.prepared_by + metadata(desc,id,info) end if defined? @md.creator.digitized_by \ and @md.creator.digitized_by=~/\S+/ - id,info=@translate.digitized_by,@md.creator.digitized_by - metadata(id,info) + desc,id,info=@translate.digitized_by,'designed_by',@md.creator.digitized_by + metadata(desc,id,info) end end if defined? @md.rights if defined? @md.rights.all \ and @md.rights.all=~/\S+/ #dc - id,info=@translate.rights,@md.rights.all - metadata(id,info) + desc,id,info=@translate.rights,'rights',@md.rights.all + metadata(desc,id,info) end end if defined? @md.date #% if defined? @md.date.published \ and @md.date.published=~/\S+/ #dc - id,info=@translate.date,@md.date.published - metadata(id,info) + desc,id,info=@translate.date,'date',@md.date.published + metadata(desc,id,info) end if defined? @md.date.created \ and @md.date.created=~/\S+/ #dc - id,info=@translate.date_created,@md.date.created - metadata(id,info) + desc,id,info=@translate.date_created,'date_created',@md.date.created + metadata(desc,id,info) end if defined? @md.date.issued \ and @md.date.issued=~/\S+/ #dc - id,info=@translate.date_issued,@md.date.issued - metadata(id,info) + desc,id,info=@translate.date_issued,'date_issued',@md.date.issued + metadata(desc,id,info) end if defined? @md.date.available \ and @md.date.available=~/\S+/ #dc - id,info=@translate.date_available,@md.date.available - metadata(id,info) + desc,id,info=@translate.date_available,'date_available',@md.date.available + metadata(desc,id,info) end if defined? @md.date.modified \ and @md.date.modified=~/\S+/ #dc - id,info=@translate.date_modified,@md.date.modified - metadata(id,info) + desc,id,info=@translate.date_modified,'date_modified',@md.date.modified + metadata(desc,id,info) end if defined? @md.date.valid \ and @md.date.valid=~/\S+/ #dc - id,info=@translate.date_valid,@md.date.valid - metadata(id,info) + desc,id,info=@translate.date_valid,'date_valid',@md.date.valid + metadata(desc,id,info) end end if defined? @md.publisher \ and @md.publisher=~/\S+/ #dc - id,info=@translate.publisher,@md.publisher - metadata(id,info) + desc,id,info=@translate.publisher,'publisher',@md.publisher + metadata(desc,id,info) end if defined? @md.notes #% if defined? @md.notes.description \ and @md.notes.description=~/\S+/ - id,info=@translate.description,@md.notes.description - metadata(id,info) + desc,id,info=@translate.description,'description',@md.notes.description + metadata(desc,id,info) end if defined? @md.notes.abstract \ and @md.notes.abstract=~/\S+/ - id,info=@translate.abstract,@md.notes.abstract - metadata(id,info) + desc,id,info=@translate.abstract,'abstract',@md.notes.abstract + metadata(desc,id,info) end if defined? @md.notes.comment \ and @md.notes.comment=~/\S+/ - id,info=@translate.comments,@md.notes.comment - metadata(id,info) + desc,id,info=@translate.comments,'comment',@md.notes.comment + metadata(desc,id,info) end if defined? @md.notes.prefix_a \ and @md.notes.prefix_a=~/\S+/ - id,info=@translate.prefix_a,@md.notes.prefix_a - metadata(id,info) + desc,id,info=@translate.prefix_a,'prefix',@md.notes.prefix_a + metadata(desc,id,info) end if defined? @md.notes.prefix_b \ and @md.notes.prefix_b=~/\S+/ - id,info=@translate.prefix_b,@md.notes.prefix_b - metadata(id,info) + desc,id,info=@translate.prefix_b,'prefix_b',@md.notes.prefix_b + metadata(desc,id,info) end end if defined? @md.title #% if defined? @md.title.language \ and @md.title.language=~/\S+/ - id,info=@translate.language,@md.title.language - metadata(id,info) + desc,id,info=@translate.language,'language',@md.title.language + metadata(desc,id,info) end if defined? @md.original.language \ and @md.original.language=~/\S+/ - id,info=@translate.language_original,@md.original.language - metadata(id,info) + desc,id,info=@translate.language_original,'language_original',@md.original.language + metadata(desc,id,info) end end if defined? @md.classify #% if defined? @md.topic_register_array \ and @md.topic_register_array.length > 0 - @manifest[:html] << %{\n} end if defined? @md.identifier.pg \ and @md.identifier.pg=~/\S+/ - id,info=@translate.cls_gutenberg,@md.identifier.pg - metadata(id,info) + desc,id,info=@translate.cls_gutenberg,'ocalc',@md.identifier.pg + metadata(desc,id,info) end if defined? @md.identifier.isbn \ and @md.identifier.isbn=~/\S+/ - id,info=@translate.cls_isbn,@md.identifier.isbn - metadata(id,info) + desc,id,info=@translate.cls_isbn,'isbn',@md.identifier.isbn + metadata(desc,id,info) end end if defined? @md.original.source \ and @md.original.source=~/\S+/ - id,info=@translate.source,@md.original.source - metadata(id,info) + desc,id,info=@translate.source,'source_original',@md.original.source + metadata(desc,id,info) end if @md.fns - id,info=@translate.sourcefile,@md.fns - metadata(id,info) + desc,id,info=@translate.sourcefile,'source_filename',@md.fns + metadata(desc,id,info) end if @md.en[:mismatch] > 0 - id,info='WARNING document error in endnote markup, number mismatch',"endnotes: #{@md.en[:note]} != endnote reference marks: #{@md.en[:mark]} (difference = #{@md.en[:mismatch]})" - metadata(id,info) + desc,id,info='WARNING document error in endnote markup, number mismatch','',"endnotes: #{@md.en[:note]} != endnote reference marks: #{@md.en[:mark]} (difference = #{@md.en[:mismatch]})" + metadata(desc,id,info) end if @md.wc_words - id,info=@translate.word_count,@md.wc_words - metadata(id,info) + desc,id,info=@translate.word_count,'wordcount',@md.wc_words + metadata(desc,id,info) end if @md.dgst - id,info="#{@translate.sourcefile_digest} (#{@dg})",@md.dgst[1] - metadata(id,info) + desc,id,info="#{@translate.sourcefile_digest} (#{@dg})",'digests',@md.dgst[1] + metadata(desc,id,info) end if @md.sc_number - id,info=@translate.sc_number,@md.sc_number - metadata(id,info) + desc,id,info=@translate.sc_number,'sc_number',@md.sc_number + metadata(desc,id,info) end if @md.sc_date - id,info=@translate.sc_date,"#{@md.sc_date} at #{@md.sc_time}" - metadata(id,info) + desc,id,info=@translate.sc_date,'sc_date',"#{@md.sc_date} at #{@md.sc_time}" + metadata(desc,id,info) end if @md.generated - id,info=@translate.last_generated,@md.generated - metadata(id,info) + desc,id,info=@translate.last_generated,'generated',@md.generated + metadata(desc,id,info) end - if @md.sisu_version - id,info=@translate.sisu_version,"#{@md.sisu_version[:project]} #{@md.sisu_version[:version]} #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})#{@md.sisu_version[:install_method]}" - metadata(id,info) + if @md.project_details + desc,id,info=@translate.sisu_version,'project',"#{@md.project_details.project} #{@md.project_details.version} #{@md.project_details.date_stamp} (#{@md.project_details.date})#{@md.project_details.install_method}" + metadata(desc,id,info) end if @md.ruby_version - id,info=@translate.ruby_version,@md.ruby_version - metadata(id,info) + desc,id,info=@translate.ruby_version,'ruby',@md.ruby_version + metadata(desc,id,info) end end def links_tests @@ -979,7 +986,7 @@ WOK @manifest[:html] <<<#{@translate.manifest_description_metadata}
- } - end def credit %{
@@ -799,8 +784,8 @@ WOK - #{@seg_name_html[@seg_name_html_tracker]} - - #{@md.html_title} + #{@per.seg_name_x[@per.seg_name_x_tracker]} - + #{@md.title.main} #{rdf.metatag_html} @@ -1161,7 +1146,6 @@ WOK end def subtoc_lev(tag,attrib) @txt=clean(@txt) - @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier txt=if @txt \ and @txt =~/<\/?i>|/mi @txt.gsub(/<\/?i>|/mi,'') #removes name markers from subtoc, go directly to substantive text @@ -1175,7 +1159,7 @@ WOK gsub(/ \d+<\/sup> /m,'') end %{<#{tag} class="#{attrib}"> - #{txt} #{note} + #{txt} #{note} } end def subtoc_lev5 diff --git a/lib/sisu/current/html_harvest_authors.rb b/lib/sisu/current/html_harvest_authors.rb index cbbd153c..4a91b69f 100644 --- a/lib/sisu/current/html_harvest_authors.rb +++ b/lib/sisu/current/html_harvest_authors.rb @@ -322,7 +322,7 @@ module SiSU_HarvestAuthors - + diff --git a/lib/sisu/current/html_harvest_topics.rb b/lib/sisu/current/html_harvest_topics.rb index 58f92bcb..4b6f493c 100644 --- a/lib/sisu/current/html_harvest_topics.rb +++ b/lib/sisu/current/html_harvest_topics.rb @@ -158,10 +158,9 @@ module SiSU_HarvestTopics end idx_array[lang] <<=if @idx_list =~/;/ g=@idx_list.scan(/[^;]+/) - idxl=[] - g.each do |i| + g.each.map do |i| i=i.strip - idxl << { + { filename: filename, file: file, rough_idx: i, @@ -171,7 +170,6 @@ module SiSU_HarvestTopics lang: lang } end - idxl else { filename: filename, file: file, @@ -691,7 +689,7 @@ module SiSU_HarvestTopics - + diff --git a/lib/sisu/current/html_lite_shared.rb b/lib/sisu/current/html_lite_shared.rb index aac53727..55e49bd2 100644 --- a/lib/sisu/current/html_lite_shared.rb +++ b/lib/sisu/current/html_lite_shared.rb @@ -75,7 +75,6 @@ module SiSU_FormatShared else @@hname end @tab="\t" - @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier @@tablehead,@@tablefoot=[],[] @env=SiSU_Env::InfoEnv.new(@md.fns) @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html" @@ -204,7 +203,7 @@ GSUB %{

#{h[:txt]}

\n} << "\n" end def lev_toc_hname - %{

#{@txt}

\n} #<< "\n" + %{

#{@txt}

\n} #<< "\n" end def lev_toc h={ txt: txt, class: "toc#{@lv}", type: 'toc' } diff --git a/lib/sisu/current/html_manifest.rb b/lib/sisu/current/html_manifest.rb index 44094383..7cffad71 100644 --- a/lib/sisu/current/html_manifest.rb +++ b/lib/sisu/current/html_manifest.rb @@ -160,19 +160,19 @@ module SiSU_Manifest %{

#{the_url_decoration.xml_open}#{url}/#{file}#{the_url_decoration.xml_close}

} end end - def summarize(id,file,pth='',rel='',url='',img='โ— ') + def summarize(desc,id,file,pth='',rel='',url='',img='โ— ') size=(File.size("#{pth}/#{file}")/1024.00).to_s kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1] - @manifest[:txt] << "#{file} #{id} #{kb}\n" - @manifest[:html] << %{

#{img}#{id}

#{file}

#{url_make(url,file)}

#{kb}

#{img}#{desc}

#{file}

#{url_make(url,file)}

#{kb}

#{img}#{id}

#{file}

#{url_make(url,file)}

#{kb}

#{img}#{desc}

#{file}

#{url_make(url,file)}

#{kb}

#{id}

#{desc}

#{file}   #{dgst[1]}#{url_make(url,file,:src)}

#{kb}

#{l[:l]}

#{l[:l]}

#{the_url_decoration.xml_open}#{l[:mu]}#{the_url_decoration.xml_close}

 

#{id}:

#{info}

#{desc}:

#{info}

#{@translate.topic_register}:

\n} + @manifest[:html] << %{

#{@translate.topic_register}:

\n} @md.topic_register_array.each do |t| t.each_with_index do |st,i| if st.is_a?(Array) @@ -761,104 +768,104 @@ WOK end if defined? @md.classify.subject \ and @md.classify.subject=~/\S+/ - id,info=@translate.subject,@md.classify.subject - metadata(id,info) + desc,id,info=@translate.subject,'subject',@md.classify.subject + metadata(desc,id,info) end if defined? @md.classify.keywords \ and @md.classify.keywords=~/\S+/ - id,info=@translate.keywords,@md.classify.keywords - metadata(id,info) + desc,id,info=@translate.keywords,'keywords',@md.classify.keywords + metadata(desc,id,info) end if defined? @md.classify.loc \ and @md.classify.loc=~/\S+/ - id,info=@translate.cls_loc,@md.classify.loc - metadata(id,info) + desc,id,info=@translate.cls_loc,'loc',@md.classify.loc + metadata(desc,id,info) end if defined? @md.classify.dewey \ and @md.classify.dewey=~/\S+/ - id,info=@translate.cls_dewey,@md.classify.dewey - metadata(id,info) + desc,id,info=@translate.cls_dewey,'dewey',@md.classify.dewey + metadata(desc,id,info) end if defined? @md.notes.coverage \ and @md.notes.coverage=~/\S+/ - id,info=@translate.coverage,@md.notes.coverage - metadata(id,info) + desc,id,info=@translate.coverage,'coverage',@md.notes.coverage + metadata(desc,id,info) end if defined? @md.notes.relation \ and @md.notes.relation=~/\S+/ - id,info=@translate.relation,@md.notes.relation - metadata(id,info) + desc,id,info=@translate.relation,'relation',@md.notes.relation + metadata(desc,id,info) end if defined? @md.notes.type \ and @md.notes.type=~/\S+/ #dc - id,info=@translate.type,@md.notes.type - metadata(id,info) + desc,id,info=@translate.type,'type',@md.notes.type + metadata(desc,id,info) end if defined? @md.notes.format \ and @md.notes.format=~/\S+/ - id,info=@transate.format,@md.notes.format - metadata(id,info) + desc,id,info=@transate.format,'format',@md.notes.format + metadata(desc,id,info) end end if defined? @md.identifier #% if defined? @md.identifier.oclc \ and @md.identifier.oclc=~/\S+/ - id,info=@translate.cls_oclc,@md.identifier.oclc - @manifest[:html] << %{

#{id}:

\n} + desc,id,info=@translate.cls_oclc,'',@md.identifier.oclc + @manifest[:html] << %{

#{desc}:

\n} @manifest[:html] << %{

#{info}

\n} @manifest[:html] << %{
- + WOK metadata_tests @manifest[:html] <<<(.+?)<\/a>/ - @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md end def songsheet @@ -199,7 +198,7 @@ fn: @@seg_url, } f=@md.file.base_filename.html_seg(fnh) - lnk_n_txt=%{ + lnk_n_txt=%{ #{txt.obj} } txt_obj={ txt: lnk_n_txt } @@ -218,7 +217,7 @@ fn: @@seg_url, } f=@md.file.base_filename.html_seg(fnh) - lnk_n_txt=%{ + lnk_n_txt=%{ #{txt.obj} } txt_obj={ txt: lnk_n_txt } diff --git a/lib/sisu/current/html_parts.rb b/lib/sisu/current/html_parts.rb index db7cdb76..ae828ed1 100644 --- a/lib/sisu/current/html_parts.rb +++ b/lib/sisu/current/html_parts.rb @@ -293,7 +293,7 @@ module SiSU_Proj_HTML #@date=SiSU_Env::InfoDate.new #{@date.year} end def txt_generator - %{ + %{ } end def widget_sisu_text @@ -301,9 +301,9 @@ module SiSU_Proj_HTML

Output generated by - #{@v[:project]} + #{@v.project} - #{@v[:version]} #{@v[:date]} (#{@v[:date_stamp]}) + #{@v.version} #{@v.date} (#{@v.date_stamp})

WOK end @@ -362,7 +362,7 @@ WOK - + @@ -420,7 +420,7 @@ Outputs include: plaintext, HTML, EPUB, ODT (OpenDocumentText), (XHTML, XML,) La

-#{@v[:project]} #{@v[:version]} of #{@v[:date_stamp]} (#{@v[:date]}) (n*x and Ruby!), #{@date.year_static}. +#{@v.project} #{@v.version} of #{@v.date_stamp} (#{@v.date}) (n*x and Ruby!), #{@date.year_static}.

w3 since October 3 1993. diff --git a/lib/sisu/current/html_persist.rb b/lib/sisu/current/html_persist.rb new file mode 100644 index 00000000..ff151ef3 --- /dev/null +++ b/lib/sisu/current/html_persist.rb @@ -0,0 +1,237 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** html segment generation, processing + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_HTML_Persist + class Persist + @@persist=nil + attr_accessor :is0,:is1,:is2,:is3,:is4,:heading0,:heading1,:heading2,:heading3,:heading4, :title, :dot_nav, :tocband_banner, :tocband_bannerless, :headings, :heading_endnotes, :main, :endnote_all, :tail, :credits, :heading_idx, :idx, :seg_endnotes, :seg_endnotes_array, :segtocband, :get_hash_fn, :get_hash_to, :seg_subtoc, :seg_subtoc_array, :fn, :seg_name ,:seg_name_x,:seg_name_x_tracker + def initialize(args=nil) + @@persist=args=(args ? args : (@@persist || persist_init_hash_values)) + @is0=args[:is0] + @is1=args[:is1] + @is2=args[:is2] + @is3=args[:is3] + @is4=args[:is4] + @heading0=args[:heading0] + @heading1=args[:heading1] + @heading2=args[:heading2] + @heading3=args[:heading3] + @heading4=args[:heading4] + @title=args[:title] + @dot_nav=args[:dot_nav] + @tocband_banner=args[:tocband_banner] + @tocband_bannerless=args[:tocband_bannerless] + @headings=args[:headings] + @heading_endnotes=args[:heading_endnotes] + @main=args[:main] + @endnote_all=args[:endnote_all] + @tail=args[:tail] + @credits=args[:credits] + @heading_idx=args[:heading_idx] + @idx=args[:idx] + @seg_endnotes=args[:seg_endnotes] + @seg_endnotes_array=args[:seg_endnotes_array] + @get_hash_to=args[:get_hash_to] + @get_hash_fn=args[:get_hash_fn] + @seg_subtoc=args[:seg_subtoc] + @seg_subtoc_array=args[:seg_subtoc_array] + @segtocband=args[:fn] + @fn=args[:fn] + @seg_name=args[:seg_name] + @seg_name_x=args[:seg_name_x] + @seg_name_x_tracker=args[:seg_name_x_tracker] + end + def is0 + @is0 + end + def is1 + @is1 + end + def is2 + @is2 + end + def is3 + @is3 + end + def is4 + @is4 + end + def heading0 + @heading0 + end + def heading1 + @heading1 + end + def heading2 + @heading2 + end + def heading3 + @heading3 + end + def heading4 + @heading4 + end + def title + @title + end + def dot_nav + @dot_nav + end + def tocband_banner + @tocband_banner + end + def tocband_bannerless + @tocband_bannerless + end + def headings + @headings + end + def heading_endnotes + @heading_endnotes + end + def main + @main + end + def endnote_all + @endnote_all + end + def tail + @tail + end + def credits + @credits + end + def heading_idx + @heading_idx + end + def idx + @idx + end + def seg_endnotes + @seg_endnotes + end + def seg_endnotes_array + @seg_endnotes_array + end + def get_hash_to + @get_hash_to + end + def get_hash_fn + @get_hash_fn + end + def seg_subtoc + @seg_subtoc + end + def seg_subtoc_array + @seg_subtoc_array + end + def segtocband + @segtocband + end + def fn + @fn + end + def seg_name + @seg_name + end + def seg_name_x + @seg_name_x + end + def seg_name_x_tracker + @seg_name_x_tracker + end + def persist_init_hash_values + { + is0: 0, + is1: 0, + is2: 0, + is3: 0, + is4: 0, + heading0: '', + heading1: '', + heading2: '', + heading3: '', + heading4: '', + tocband_banner: [], + tocband_bannerless: [], + title: [], + headings: [], + main: [], + idx: [], + tail: [], + credits: [], + endnote_all: [], + heading_endnotes: '', + seg_endnotes: {}, + seg_endnotes_array: [], + get_hash_fn: '', + get_hash_to: '', + seg_subtoc: {}, + seg_subtoc_array: [], + segtocband: '', + fn: '', + seg_name: [], + seg_name_x: [], + seg_name_x_tracker: 0, + } + end + def persist_init + @@persist=nil + Persist.new(persist_init_hash_values) + end + end +end +__END__ diff --git a/lib/sisu/current/html_segments.rb b/lib/sisu/current/html_segments.rb index 3288b8f4..4b413b00 100644 --- a/lib/sisu/current/html_segments.rb +++ b/lib/sisu/current/html_segments.rb @@ -57,12 +57,13 @@ module SiSU_HTML_Seg require_relative 'html_shared' # html_shared.rb require_relative 'html' # html.rb + require_relative 'html_persist' # html_persist.rb require_relative 'html_promo' # html_promo.rb require_relative 'shared_metadata' # shared_metadata.rb class Output - def initialize(md,outputfile,seg,minitoc,type='') - @md, @output_seg_file,@seg,@minitoc,@type= - md,outputfile, seg,minitoc, type + def initialize(md,outputfile,per,minitoc,type='') + @md, @output_seg_file,@per,@minitoc,@type= + md,outputfile, per,minitoc, type @title_banner_=SiSU_Env::CreateSite.new(@md.opt).html_seg_title_banner? @file=SiSU_Env::FileOp.new(@md) @make=SiSU_Env::ProcessingSettings.new(@md) @@ -71,67 +72,68 @@ module SiSU_HTML_Seg : 'content0' end def output - if @seg[:title] =~/\S/ + if @per.title =~/\S/ filename_seg=[] if @make.build.html_top_band? filename_seg \ - << @seg[:title] \ - << @seg[:tocband_banner] + << @per.title \ + << @per.tocband_banner else filename_seg \ - << @seg[:title] + << @per.title end if @type=='endnotes' - @seg[:headings]=[] + @per.headings=[] format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md) if @title_banner_ - @seg[:headings] \ + @per.headings \ << format_head_seg. title_banner(@md.title.main,@md.title.sub,@author) end txt_obj={ txt: 'Endnotes', ocn_display: '' } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @seg[:headings] \ + @per.headings \ << format_seg.title_heading1 filename_seg \ - << @seg[:heading_endnotes] \ - << @minitoc << @seg[:headings] \ + << @per.heading_endnotes \ + << @minitoc << @per.headings \ << %{\n

\n} \ - << @seg[:endnote_all] \ + << @per.endnote_all \ << '
' # << '' elsif @type=='idx' - @seg[:headings]=[] + @per.headings=[] format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md) if @title_banner_ - @seg[:headings] \ + @per.headings \ << format_head_seg. title_banner(@md.title.main,@md.title.sub,@author) end txt_obj={ txt: 'Index', ocn_display: '' } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @seg[:headings] << format_seg.title_heading1 + @per.headings << format_seg.title_heading1 filename_seg \ - << @seg[:heading_idx] \ - << @minitoc << @seg[:headings] \ + << @per.heading_idx \ + << @minitoc << @per.headings \ << %{\n
\n} \ - << @seg[:idx] \ + << @per.idx \ << '
' # << '' elsif @type=='metadata' metadata=SiSU_Metadata::Summary.new(@md).html_display.metadata - @seg[:headings]=[] + @per.headings=[] format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md) if @title_banner_ - @seg[:headings] \ + @per.headings \ << format_head_seg. title_banner(@md.title.main,@md.title.sub,@author) end txt_obj={ txt: 'Metadata', ocn_display: '' } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @seg[:headings] << format_seg.title_heading1 + @per.headings \ + << format_seg.title_heading1 filename_seg \ - << @seg[:heading_idx] \ + << @per.heading_idx \ << @minitoc \ - << @seg[:headings] \ + << @per.headings \ << %{\n
\n} \ << metadata \ << '
' # << '' @@ -139,23 +141,23 @@ module SiSU_HTML_Seg if @make.build.html_top_band? filename_seg \ << @minitoc \ - << @seg[:headings] \ - << @seg[:main] \ + << @per.headings \ + << @per.main \ << "\n\n" else filename_seg \ << @minitoc \ - << @seg[:main] \ + << @per.main \ << "\n\n" end end filename_seg <<=if @make.build.html_top_band? - @seg[:tail] \ - << @seg[:tocband_bannerless] \ - << @seg[:credits] + @per.tail \ + << @per.tocband_bannerless \ + << @per.credits else - @seg[:tail] \ - << @seg[:credits] + @per.tail \ + << @per.credits end filename_seg=filename_seg.flatten.compact #watch filename_seg.each do |str| @@ -173,32 +175,15 @@ module SiSU_HTML_Seg end end class Seg - @@seg,@@seg_subtoc,@@seg_endnotes,@@seg_ad={},{},{},{} - @@seg_name,@@seg_name_html=[],[] - @@seg_url=@@fn=@@get_hash_to=@@get_hash_fn='' - @@loop_count=@@seg_total=@@tracker=0 - @@is4=@@is3=@@is2=@@is1=@@is0=0 - @@heading0=@@heading1=@@heading2=@@heading3=@@heading4=0 - @@seg[:tocband_banner], - @@seg[:tocband_bannerless], - @@seg[:title],@@seg[:headings], - @@seg[:main], - @@seg[:idx], - @@seg[:tail], - @@seg[:credits], - @@seg_subtoc_array, - @@seg_endnotes_array, - @@seg[:endnote_all]= - Array.new(11){[]} - @@seg[:heading_endnotes]='' - @@tablehead,@@number_of_cols=0,0 - @@dp,@@segtocband=nil,nil - @@fns_previous='' - attr_reader :seg_name_html,:seg_name_html_tracker + @@seg_url='' + @@tracker=0 + @@seg_name=[] + attr_reader :seg_name_x,:seg_name_x_tracker def initialize(md=nil,data='') @md,@data=md,data - @seg_name_html=@@seg_name_html || nil - @seg_name_html_tracker=@@tracker || nil + @per=SiSU_HTML_Persist::Persist.new + @seg_name_x=@per.seg_name_x=(@@seg_name || []) + @seg_name_x_tracker=@per.seg_name_x_tracker=(@@tracker || 0) @env=SiSU_Env::InfoEnv.new(@md.fns) if @md if @md @make=SiSU_Env::ProcessingSettings.new(@md) @@ -214,22 +199,24 @@ module SiSU_HTML_Seg def songsheet begin @minitoc=SiSU_HTML::Source::Toc.new(@md,@data).minitoc - data=get_subtoc_endnotes(@data) - data=articles(data) - SiSU_HTML_Seg::Seg.new.cleanup # (((( added )))) + @per=SiSU_HTML_Persist::Persist.new + data=get_subtoc_endnotes(@data,@per) + data=articles(data,@per) + cleanup(@md,@per) # (((( added )))) #### (((( END )))) #### rescue SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - @@seg_name=[] + SiSU_HTML_Persist::Persist.new.persist_init + @@seg_name=@per.seg_name=[] end end protected - def articles(data) + def articles(data,per) + @per=per tracking,newfile=0,0 - @@is4=@@is3=@@is2=@@is1=@@is0=0 printed_endnote_seg='n' idx_html=nil if @md.book_idx @@ -237,27 +224,28 @@ module SiSU_HTML_Seg idx_html=SiSU_Particulars::CombinedSingleton. instance.get_idx_html(@md.opt).html_idx idx_html.each do |x| - @@seg[:idx] << x + @per.idx << x end - @@seg[:heading_idx]='' + @per.heading_idx='' end data.each do |dob| if (dob.is == :heading \ || dob.is == :heading_insert) \ && dob.ln == 4 @@seg_name << dob.name + @per.seg_name = @@seg_name dob.name end end - @@seg_name_html=@@seg_name - @@seg_total=@@seg_name.length - testforartnum=@@seg_name_html + @per.seg_name_x=@per.seg_name + @per.seg_name.length + testforartnum=@per.seg_name_x if (@md.opt.act[:verbose][:set]==:on \ || @md.opt.act[:verbose_plus][:set]==:on \ || @md.opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new( @md.opt.act[:color_state][:set], - @@seg_name.length + @per.seg_name.length ).segmented end map_nametags=SiSU_Particulars::CombinedSingleton. @@ -285,41 +273,41 @@ module SiSU_HTML_Seg if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==4 - @@heading4=dob.obj - @@is4=newfile=1 + @per.heading4=dob.obj + @per.is4=newfile=1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==3 - @@heading3=dob.obj - @@is4,@@is3=0,1 + @per.heading3=dob.obj + @per.is4,@per.is3=0,1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==2 - @@heading2=dob.obj - @@is4,@@is3,@@is2=0,0,1 + @per.heading2=dob.obj + @per.is4,@per.is3,@per.is2=0,0,1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==1 - @@heading1=dob.obj - @@is4,@@is3,@@is2,@@is1=0,0,0,1 + @per.heading1=dob.obj + @per.is4,@per.is3,@per.is2,@per.is1=0,0,0,1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==0 - @@heading0=dob.obj - @@is4,@@is3,@@is2,@@is1,@@is0=0,0,0,0,1 + @per.heading0=dob.obj + @per.is4,@per.is3,@per.is2,@per.is1,@per.is0=0,0,0,0,1 end - if (@@is1 && !@@is2 && !@@is3 && !@@is4) + if (@per.is1 && !@per.is2 && !@per.is3 && !@per.is4) if not (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==0 $_ #; check end end - if @@is4==1 + if @per.is4==1 if newfile==1 \ or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/ newfile=0 @@ -332,43 +320,46 @@ module SiSU_HTML_Seg FileUtils::mkdir_p(@file.output_path.html_seg.dir) \ if File.writable?("#{@file.output_path.base.dir}/.") end - SiSU_HTML_Seg::Seg.new(@md).tail + tail(@md,@per) + #SiSU_HTML_Seg::Seg.new(@md,@per).tail fnh={ - fn: @@seg_name_html[tracking-1], + fn: @per.seg_name_x[tracking-1], } fn=@md.file.base_filename.html_seg(fnh) segfilename="#{@file.output_path.html_seg.dir}/#{fn}" - output_seg_file=File.new(segfilename,'w') if @@seg_name_html[tracking-1] + output_seg_file=File.new(segfilename,'w') if @per.seg_name_x[tracking-1] minitoc=(@make.build.html_minitoc?) ? @minitoc : '' if dob.is==:heading \ - || (@@seg_name_html[tracking-1] !~/endnotes|book_index|metadata/) - SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc).output + || (@per.seg_name_x[tracking-1] !~/endnotes|book_index|metadata/) + SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc).output elsif dob.is==:heading_insert - if @@seg_name_html[tracking-1]=='endnotes' - SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'endnotes').output - elsif @@seg_name_html[tracking-1]=='book_index' - SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'idx').output - @@seg[:idx]=[] - elsif @@seg_name_html[tracking-1]=='metadata' - SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output + if @per.seg_name_x[tracking-1]=='endnotes' + SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'endnotes').output + elsif @per.seg_name_x[tracking-1]=='book_index' + SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'idx').output + @per.idx=[] + elsif @per.seg_name_x[tracking-1]=='metadata' + SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'metadata').output else puts "#{__FILE__}::#{__LINE__}" end else puts "#{__FILE__}::#{__LINE__}" end - SiSU_HTML_Seg::Seg.new.reinitialise + SiSU_HTML_Seg::Seg.new.reinitialise(per) + #per=persist_init heading_art(dob) head(dob) #keep use for last segment, eg if metadata is last segment - if @@seg_name_html[tracking] =='metadata' # this is for metadata - fnh={ - fn: @@seg_name_html[tracking], - } - fn=@md.file.base_filename.html_seg(fnh) - segfilename="#{@file.output_path.html_seg.dir}/#{fn}" - output_seg_file=File.new(segfilename,'w') - SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc,'metadata').output - Seg.new.reinitialise - end + if @per.seg_name_x[tracking] =='metadata' # this is for metadata + fnh={ + fn: @per.seg_name_x[tracking], + } + fn=@md.file.base_filename.html_seg(fnh) + segfilename="#{@file.output_path.html_seg.dir}/#{fn}" + output_seg_file=File.new(segfilename,'w') + SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'metadata').output + #per=persist_init + Seg.new.reinitialise(per) + end end if tracking==0 heading_art(dob) @@ -381,8 +372,8 @@ module SiSU_HTML_Seg || dob.is==:heading_insert) \ && dob.ln==4 \ && dob.name - @@get_hash_to=dob.name - @@get_hash_fn=dob.name + @per.get_hash_to=dob.name + @per.get_hash_fn=dob.name end if dob.obj.is_a?(String) markup(dob) @@ -402,108 +393,108 @@ module SiSU_HTML_Seg end def heading_art(dob) format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md) - @@seg[:dot_nav]=if (@make.build.html_navigation?) \ + @per.dot_nav=if (@make.build.html_navigation?) \ && (@make.build.html_navigation_bar?) x=if (dob.is==:heading \ || dob.is==:heading_insert) \ && (dob.ln.to_s =~/^[0-7]/) - x=if @@tracker < @@seg_total-1 + x=if @@tracker < @per.seg_name.length-1 format_head_seg.dot_control_pre_next else format_head_seg.dot_control_pre end - else @@seg[:dot_nav] + else @per.dot_nav end - else @@seg[:dot_nav]='' + else @per.dot_nav='' end ads=SiSU_HTML_Promo::Ad.new(@md) - @@seg[:title]=format_head_seg.head_seg << ads.div.major + @per.title=format_head_seg.head_seg << ads.div.major end def head(dob) clean=/|<:.*?>/ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md) if @make.build.html_navigation? - if @@tracker < @@seg_total-1 - @@segtocband=if @@tracker==0 + if @@tracker < @per.seg_name.length-1 + @per.segtocband=if @@tracker==0 format_head_seg.toc_next2 else format_head_seg.toc_pre_next2 end - else @@segtocband=format_head_seg.toc_pre2 + else @per.segtocband=format_head_seg.toc_pre2 end - else @@segtocband='' + else @per.segtocband='' end @p_num ||= '' - if @@is0==1 + if @per.is0==1 @author=%{#{@md.author}\n} if @md.author.to_s =~/\S/ - @@seg[:tocband_banner] \ - << format_head_seg.navigation_band(@@segtocband,@@seg[:dot_nav]) - @@seg[:tocband_bannerless] \ + @per.tocband_banner \ + << format_head_seg.navigation_band(@per.segtocband,@per.dot_nav) + @per.tocband_bannerless \ << '
' \ - << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav]) + << format_head_seg.navigation_band_bottom(@per.segtocband,@per.dot_nav) if @title_banner_ - @@seg[:headings] \ + @per.headings \ << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'') end - ocn=(@@heading0[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ + ocn=(@per.heading0[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) - txt_obj={ txt: @@heading0, ocn_display: @p_num.ocn_display } + txt_obj={ txt: @per.heading0, ocn_display: @p_num.ocn_display } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] \ + @per.headings \ << format_seg.title_heading0.gsub(clean,'') - @@heading0=@@heading0. + @per.heading0=@per.heading0. gsub(/  [\d*+]+<\/sup> <\/a>/,'') end - if @@is1==1 - heading1=@@heading1 + if @per.is1==1 + heading1=@per.heading1 ocn=(heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: heading1, ocn_display: @p_num.ocn_display } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] \ + @per.headings \ << format_seg.title_heading1.gsub(clean,'') - @@heading1=@@heading1. + @per.heading1=@per.heading1. gsub(/  [\d*+]+<\/sup> <\/a>/,'') end - if @@is2==1 - heading2=@@heading2 + if @per.is2==1 + heading2=@per.heading2 ocn=(heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] \ + @per.headings \ << format_seg.title_heading2.gsub(clean,'') - @@heading2=@@heading2. + @per.heading2=@per.heading2. gsub(/  [\d*+]+<\/sup> <\/a>/,'') end - if @@is3==1 - heading3=@@heading3 + if @per.is3==1 + heading3=@per.heading3 ocn=(heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] \ + @per.headings \ << format_seg.title_heading3.gsub(clean,'') - @@heading3=@@heading3. + @per.heading3=@per.heading3. gsub(/  [\d*+]+<\/sup> <\/a>/,'') end - if @@is4==1 - heading4=@@heading4 + if @per.is4==1 + heading4=@per.heading4 ocn=(heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \ ? $1 : '' @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] \ + @per.headings \ << format_seg.title_heading4.gsub(clean,'') end @@tracker=@@tracker+1 @@ -586,66 +577,73 @@ module SiSU_HTML_Seg if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==4 - @@seg[:main] << %{\n
\n} - @@seg[:main] << dob_html + @per.main << %{\n
\n} + @per.main << dob_html if @make.build.segsubtoc? - @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc + @per.main << @per.seg_subtoc[@per.get_hash_fn] #% insertion of sub-toc end else - @@seg[:main] << dob_html #unless @@flag_alt==true + @per.main << dob_html #unless @@flag_alt==true end end end - def tail + def tail(md,per) + @md,@per=md,per format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md) - if @md.flag_auto_endnotes and @@seg_endnotes[@@get_hash_fn] - @@seg[:tail] << %{\n
\n
\n} - if @@seg_endnotes[@@get_hash_fn].flatten.length > 0 - @@seg[:tail] << format_head_seg.endnote_mark - @@seg[:tail] << @@seg_endnotes[@@get_hash_fn].flatten #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES| + if @md.flag_auto_endnotes \ + and @per.seg_endnotes[@per.get_hash_fn] + @per.tail << %{\n
\n
\n} + if @per.seg_endnotes[@per.get_hash_fn].flatten.length > 0 + @per.tail << format_head_seg.endnote_mark + @per.tail << @per.seg_endnotes[@per.get_hash_fn].flatten #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES| end - @@seg[:tail] << '
' - @@seg[:tail] << '
' #this div closes div class content + @per.tail << '
' + @per.tail << '
' #this div closes div class content end ads=SiSU_HTML_Promo::Ad.new(@md) - @@seg[:credits] << format_head_seg.credit << ads.div.close << ads.display << format_head_seg.html_close + @per.credits \ + << format_head_seg.credit \ + << ads.div.close \ + << ads.display \ + << format_head_seg.html_close end - def reinitialise - @@seg[:title],@@seg[:dot_nav],@@seg[:tocband_banner],@@seg[:tocband_bannerless],@@seg[:headings],@@seg[:main],@@seg[:tail],@@seg[:credits]=Array.new(8){[]} - @@segtocband=nil + def reinitialise(per) + per.title,per.dot_nav,per.tocband_banner,per.tocband_bannerless,per.headings,per.main,per.tail,per.credits=Array.new(8){[]} + @per.segtocband=nil end - def cleanup - reinitialise - @@seg_total,@@tracker=0,0 - @@seg_endnotes,@@seg_subtoc={},{} - @@seg_endnotes_array,@@seg_subtoc_array=[],[] - @@seg[:endnote_all]=[] + def cleanup(md,per) + #per=persist_init + reinitialise(per) + @@tracker=0 + @per.seg_endnotes,@per.seg_subtoc={},{} + @per.seg_endnotes_array,@per.seg_subtoc_array=[],[] + per.endnote_all=[] end - def get_subtoc_endnotes(data) #get endnotes & sub-table of contents subtoc + def get_subtoc_endnotes(data,per) #get endnotes & sub-table of contents subtoc + @per=per data.each do |dob| dob.obj=dob.obj.gsub(/
(.+?)<\/a>/mi,'\1') if @md.flag_auto_endnotes if (dob.is==:heading \ || dob.is==:heading_insert) \ && (dob.ln.to_s =~/^[0-4]/) \ - and not @@fn.to_s.empty? - @@seg_endnotes[@@fn]=[] - @@seg_endnotes[@@fn] << @@seg_endnotes_array - @@seg_endnotes_array=[] if dob.ln==4 - @@fns_previous=@md.fns if dob.ln==4 and dob.name =~/^meta/ + and not @per.fn.to_s.empty? + @per.seg_endnotes[@per.fn]=[] + @per.seg_endnotes[@per.fn] << @per.seg_endnotes_array + @per.seg_endnotes_array=[] if dob.ln==4 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs - @@seg_subtoc[@@fn]=@@seg_subtoc_array - @@seg_subtoc_array=[] + @per.seg_subtoc[@per.fn]=@per.seg_subtoc_array + @per.seg_subtoc_array=[] if dob.name \ and dob.obj - @@fn=dob.name + @per.fn=dob.name else if dob.name =~/\S+/ - @@fn=dob.name - else @@fn='' + @per.fn=dob.name + else @per.fn='' end end end @@ -666,7 +664,7 @@ module SiSU_HTML_Seg format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc end - @@seg_subtoc_array << subtoc + @per.seg_subtoc_array << subtoc end if @md.flag_auto_endnotes if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+\s*') #% creation of separate end segment/page of all endnotes referenced back to reference segment @@ -703,8 +703,8 @@ module SiSU_HTML_Seg endnote_part_b=note_match_seg[m,2] txt_obj={ endnote_part_a: endnote_part_a, endnote_part_b: endnote_part_b } format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) - note_match_all_seg=format_seg.endnote_seg_body(@@fn) #BUG WATCH 200408 - @@seg[:endnote_all] << note_match_all_seg + note_match_all_seg=format_seg.endnote_seg_body(@per.fn) #BUG WATCH 200408 + @per.endnote_all << note_match_all_seg end dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') end diff --git a/lib/sisu/current/html_tune.rb b/lib/sisu/current/html_tune.rb index 5a4575cf..c02fc496 100644 --- a/lib/sisu/current/html_tune.rb +++ b/lib/sisu/current/html_tune.rb @@ -151,7 +151,6 @@ module SiSU_HTML_Tune end def songsheet_array(data) data_tuned=[] - #@tuned_file=[] data.each do |dob| dob=amp_angle_brackets(dob) dob=endnotes_html(dob) @@ -162,9 +161,8 @@ module SiSU_HTML_Tune data_tuned end def urls(data) - @words=[] - data.each do |word| - @words << if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/ + @words=data.each.map do |word| + if word=~/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/ http_=true if word =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/ m,u=/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/.match(word).captures @@ -208,9 +206,7 @@ module SiSU_HTML_Tune word else word end - word - end - @words=@words.join(' ') + end.join(' ') end def url_markup(dob) unless dob.is==:code @@ -293,10 +289,9 @@ module SiSU_HTML_Tune end def output data=@data - @tuned_file=[] - data.each do |dob| + @tuned_file=data.each.map do |dob| dob.obj=dob.obj.strip.chomp - @tuned_file << dob + dob end @tuned_file << "\n" if (@md.fns =~/\.sst0/) #remove @tuned_file diff --git a/lib/sisu/current/hub.rb b/lib/sisu/current/hub.rb index eb6ab19d..58d75b02 100644 --- a/lib/sisu/current/hub.rb +++ b/lib/sisu/current/hub.rb @@ -133,6 +133,7 @@ module SiSU actions.outputs.each_file.xml? actions.outputs.each_file.pdf? actions.outputs.each_file.man_or_info? + actions.outputs.each_file.po4a_make? actions.outputs.each_file.sqlite_discrete? actions.outputs.each_file.manifest? end @@ -181,6 +182,9 @@ module SiSU if defined? actions.outputs.loop_files.run_termsheet? actions.outputs.loop_files.run_termsheet? end + if defined? actions.outputs.loop_files.po4a_setup? + actions.outputs.loop_files.po4a_setup? + end if defined? actions.outputs.loop_files.sql? actions.outputs.loop_files.sql? end @@ -198,7 +202,7 @@ module SiSU def actions_without_files actions=SiSU_Hub_Actions::HubActions.new(@opt) actions.report.version_info? - actions.report.version_dir? + actions.report.version_info_extra? actions.prepare.site? actions.prepare.sql? end diff --git a/lib/sisu/current/hub_actions.rb b/lib/sisu/current/hub_actions.rb index 8878855d..1ea67bf4 100644 --- a/lib/sisu/current/hub_actions.rb +++ b/lib/sisu/current/hub_actions.rb @@ -56,6 +56,8 @@ =end module SiSU_Hub_Actions class HubActions + require_relative 'utils_composite' # utils_composite.rb + include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test def initialize(opt) @opt=opt end @@ -65,6 +67,17 @@ module SiSU_Hub_Actions SiSU_Env::InfoAbout.new(@opt).sisu_version end end + def version_number_git? + if @opt.act[:version_info][:set]==:on \ + || @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], + ' ' + SiSU_is.git_version_info? + ).grey + end + end def version_dir? if @opt.act[:version_info][:set]==:on \ || @opt.act[:verbose][:set]==:on \ @@ -76,6 +89,25 @@ module SiSU_Hub_Actions ).grey end end + def version_info_extra? + if @opt.act[:version_info][:set]==:on \ + || @opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on + if SiSU_is.git_version_info? + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + ' ' + File.dirname(__FILE__) + \ + ' vcr: ' + SiSU_is.git_version_info? + ).grey + else + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + ' ' + File.dirname(__FILE__) + ).grey + end + end + end self end def prepare @@ -156,7 +188,7 @@ module SiSU_Hub_Actions def abstract_objects? if @opt.act[:ao][:set]==:on #% --ao --dal, -m if @opt.f_pths.length > 0 - unless @opt.act[:po4a][:set]==:on # --po4a, -P + unless @opt.act[:po4a_shelf][:set]==:on # --po4a-shelf if @opt.fno =~ /\.ssm$/ require_relative 'ao_composite' # ao_composite.rb #pre-processing SiSU_Assemble::Composite.new(@opt).read @@ -278,6 +310,20 @@ module SiSU_Hub_Actions end end end + if @opt.act[:txt_orgmode][:set]==:on #% --orgmode + if @opt.f_pths.length > 0 + require_relative 'txt_orgmode' # txt_orgmode.rb + SiSU_Txt_OrgMode::Source.new(@opt).read + else + msg='orgmode request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end end def html? if @opt.act[:html][:set]==:on #% --html, -h @@ -532,15 +578,51 @@ module SiSU_Hub_Actions end end end + def po4a_make? + if @opt.act[:po4a_sst_ao_sst][:set]==:on #% --po4a-ao + if @opt.f_pths.length > 0 + require_relative 'src_po4a_sst_ao_sst' + SiSU_SStm_AO_SStm::Source.new(@opt).read_process_src_files # src_po4a_sst_ao_sst.rb + else + msg='sst request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + end + def elasticsearch? + if @opt.act[:elasticsearch][:set]==:on #% --elastic, -x + if @opt.f_pths.length > 0 + require_relative 'json_elastic' # json_elastic.rb + SiSU_Elastic::Source.new(@opt).read + else + msg='easticsearch request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end def manifest? if @opt.act[:manifest][:set]==:on #% --manifest, -y if @opt.f_pths.length > 0 - require_relative 'html_manifest' # html_manifest.rb - ((@opt.act[:sisupod][:set]==:on \ - || @opt.act[:share_source][:set]==:on) \ - && @opt.f_pths.length < 2 ) \ - ? nil - : SiSU_Manifest::Source.new(@opt).read + begin + require_relative 'html_manifest' # html_manifest.rb + ((@opt.act[:sisupod][:set]==:on \ + || @opt.act[:share_source][:set]==:on \ + || @opt.act[:po4a_sstm][:set]==:on) \ + && @opt.f_pths.length < 2 ) \ + ? nil + : SiSU_Manifest::Source.new(@opt).read + rescue + end else msg='manifest request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ @@ -572,8 +654,9 @@ module SiSU_Hub_Actions end def loop_files def share_source? - if @opt.act[:share_source][:set]==:on \ - or @opt.act[:sisupod][:set]==:on \ + if @opt.act[:sisupod][:set]==:on \ + or @opt.act[:share_source][:set]==:on \ + or @opt.act[:po4a_sstm][:set]==:on \ or @opt.act[:git][:set]==:on begin if @opt.f_pths.length > 0 @@ -591,26 +674,6 @@ module SiSU_Hub_Actions else puts msg end end - if @opt.act[:share_source][:set]==:on - if @opt.f_pths.length > 0 - require_relative 'src_share' # src_share.rb - begin - ensure - SiSU_Hub_Loops::OptionLoopFiles.new(@opt). - loop_files_on_given_option_bundle do - SiSU_Markup::Source.new(@opt).read - end - end - else - msg='share markup source request requires sisu markup files' - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). - mark(msg) - else puts msg - end - end - end if @opt.act[:sisupod][:set]==:on #% --sisupod, -S if @opt.f_pths.length > 0 require_relative 'src_sisupod_make' # src_sisupod_make.rb @@ -656,7 +719,8 @@ module SiSU_Hub_Actions end end if (@opt.act[:sisupod][:set]==:on \ - || @opt.act[:share_source][:set]==:on) \ + || @opt.act[:share_source][:set]==:on \ + || @opt.act[:po4a_sstm][:set]==:on) \ and @opt.act[:manifest][:set]==:on #% --manifest, -y if @opt.f_pths.length > 0 require_relative 'html_manifest' # html_manifest.rb @@ -691,18 +755,78 @@ module SiSU_Hub_Actions end end end - if @opt.act[:po4a][:set]==:on #% --po4a, -P + if @opt.act[:share_source][:set]==:on + if @opt.f_pths.length > 0 + require_relative 'src_sisupod_sstm' # src_sisupod_sstm.rb + begin + ensure + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option_bundle do + SiSU_Markup::Source_Sisupod.new(@opt).read + end + end + else + msg='share markup source request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:po4a_sstm][:set]==:on #% --po4a-sst + if @opt.f_pths.length > 0 + require_relative 'src_po4a_sstm' + begin + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Markup::Source_Po4a.new(@opt).read # src_po4a_sstm.rb + end + ensure + end + else + msg='sst request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:po4a_sst_ao_sst][:set]==:on #% --po4a-ao + if @opt.f_pths.length > 0 + require_relative 'src_po4a_sst_ao_sst' + begin + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_SStm_AO_SStm::Source.new(@opt).read_setup # src_po4a_sst_ao_sst.rb + end + ensure + end + else + msg='sst request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:po4a_shelf][:set]==:on #% --po4a-shelf if @opt.f_pths.length > 0 - require_relative 'po4a' + require_relative 'src_po4a_shelf' begin SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do - SiSU_Po4a::Source.new(@opt).read # po4a.rb + SiSU_Po4a::Source.new(@opt).read # src_po4a_shelf.rb end ensure end else - msg='po4a request requires sisu markup files' + msg='src_po4a_shelf request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). diff --git a/lib/sisu/current/hub_loop_markup_files.rb b/lib/sisu/current/hub_loop_markup_files.rb index 626dc8e1..495739ac 100644 --- a/lib/sisu/current/hub_loop_markup_files.rb +++ b/lib/sisu/current/hub_loop_markup_files.rb @@ -136,6 +136,9 @@ module SiSU_Hub_Loops files_translated_idx << x[1] end end + #files_translated_idx=number_of_files.select do |x| + # x[1] if x[1].length > 1 + #end if files_translated_idx.flatten.length > 1 SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], diff --git a/lib/sisu/current/hub_options.rb b/lib/sisu/current/hub_options.rb index 8a9af156..c36ba4c9 100644 --- a/lib/sisu/current/hub_options.rb +++ b/lib/sisu/current/hub_options.rb @@ -175,8 +175,8 @@ module SiSU_Commandline @make_instructions_pod=nil init end - def sisu_run_from? - @sisu_run_from + def sisu_called_from? + @call_path end def sisu_bin_filepath? @sisu_run_from @@ -184,6 +184,9 @@ module SiSU_Commandline def sisu_install_type? @sisu_install_type end + def sisu_lib_dir? + File.dirname(__FILE__) + end def sisu_data_dir? env=RbConfig::CONFIG if sisu_install_type? ==:full_path_to_sisu_bin_in_sisu_dir_tree @@ -275,17 +278,15 @@ module SiSU_Commandline end end def init_selected_lang_dirs(a) - @z=[] - a.each do |y| + @z=a.each.map do |y| if y =~/^#{lng_base}\/(\S+?\.ss[tm])$/ @fn=$1 - @z << y + y elsif y =~/^#{@lang_regx}\/?$/ - @z << "#{y}/#{@fn}" - else @z << y + "#{y}/#{@fn}" + else y end end - @z end def init a=@a @@ -640,7 +641,7 @@ module SiSU_Commandline if ch =~/N/ then select_arr << '--digests' ch=ch.gsub(/[N]/,'') end - if ch =~/P/ then select_arr << '--po4a' + if ch =~/P/ then select_arr << '--po4a-sst' ch=ch.gsub(/[P]/,'') end if ch =~/d/ then select_arr << '--sqlite' @@ -1176,6 +1177,10 @@ module SiSU_Commandline =~/"--rst"|"--rest"|"--restructuredtext"/) \ ? { bool: true, set: :on } : { bool: false, set: :na } + act[:txt_orgmode]=(select_arr.inspect \ + =~/"--org"|"--orgmode"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } act[:manpage]=(select_arr.inspect \ =~/"--manpage"|"--man"/) \ ? { bool: true, set: :on } @@ -1323,10 +1328,56 @@ module SiSU_Commandline =~/"--harvest"/) \ ? { bool: true, set: :on } : { bool: false, set: :na } - act[:po4a]=(select_arr.inspect \ - =~/"--po4a"|"--pot?"/) \ + act[:po4a_sstm]=(select_arr.inspect \ + =~/"--po4a-ss[tm]"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:po4a_sst_ao_sst]=(select_arr.inspect \ + =~/"--po4a-ao(?:-ss[tm])?"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:po4a_shelf]=(select_arr.inspect \ + =~/"--po4a-shelf"|"--pot?-shelf"/) \ ? { bool: true, set: :on } : { bool: false, set: :na } + if act[:po4a_shelf][:set]==:on \ + or act[:po4a_sst_ao_sst][:set]==:on \ + or act[:po4a_sstm][:set]==:on + act[:po4a_lang]=if select_arr.inspect \ + =~/"--(?:trans|init)-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/ + lng_src,lng_trn=$1,$2.split(',') + { bool: true, set: :on, src: lng_src, trn: lng_trn } + elsif select_arr.inspect \ + =~/"--trans"/ + { bool: true, set: :on } + { bool: true, set: :on, src: 'en', trn: [] } + else + { bool: false, set: :na } + end + act[:po4a_lang_trans]=if select_arr.inspect \ + =~/"--trans-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/ + lng_src,lng_trn=$1,$2.split(',') + { bool: true, set: :on, src: lng_src, trn: lng_trn } + elsif select_arr.inspect \ + =~/"--trans"/ + { bool: true, set: :on } + { bool: true, set: :on, src: 'en', trn: [] } + else + { bool: false, set: :na } + end + act[:po4a_lang_init]=if select_arr.inspect \ + =~/"--init-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/ + lng_src,lng_trn=$1,$2.split(',') + { bool: true, set: :on, src: lng_src, trn: lng_trn } + else + { bool: false, set: :na } + end + else + act[:po4a_lang_trans]= \ + { bool: false, set: :na } + act[:po4a_lang_init]= \ + { bool: false, set: :na } + end act[:git]=(select_arr.inspect \ =~/"--git"/) \ ? { bool: true, set: :on } @@ -1433,6 +1484,7 @@ module SiSU_Commandline || act[:txt_asciidoc][:set]==:on \ || act[:txt_markdown][:set]==:on \ || act[:txt_rst][:set]==:on \ + || act[:txt_orgmode][:set]==:on \ || act[:xhtml][:set]==:on \ || act[:epub][:set]==:on \ || act[:html][:set]==:on \ @@ -1446,8 +1498,9 @@ module SiSU_Commandline || act[:pdf_p][:set]==:on \ || act[:pdf_l][:set]==:on \ || act[:qrcode][:set]==:on \ - || act[:share_source][:set]==:on \ || act[:sisupod][:set]==:on \ + || act[:share_source][:set]==:on \ + || act[:po4a_sstm][:set]==:on \ || act[:concordance][:set]==:on \ || act[:sqlite_discrete][:set]==:on \ || act[:sqlite_import][:set]==:on \ @@ -1481,6 +1534,7 @@ module SiSU_Commandline || act[:txt_asciidoc][:set]==:on \ || act[:txt_markdown][:set]==:on \ || act[:txt_rst][:set]==:on \ + || act[:txt_orgmode][:set]==:on \ || act[:xhtml][:set]==:on \ || act[:epub][:set]==:on \ || act[:html][:set]==:on \ @@ -1494,8 +1548,9 @@ module SiSU_Commandline || act[:pdf_p][:set]==:on \ || act[:pdf_l][:set]==:on \ || act[:qrcode][:set]==:on \ - || act[:share_source][:set]==:on \ || act[:sisupod][:set]==:on \ + || act[:share_source][:set]==:on \ + || act[:po4a_sstm][:set]==:on \ || act[:concordance][:set]==:on \ || act[:xml_dom][:set]==:on \ || act[:xml_sax][:set]==:on \ diff --git a/lib/sisu/current/manpage.rb b/lib/sisu/current/manpage.rb index fb5a1f3c..f297db55 100644 --- a/lib/sisu/current/manpage.rb +++ b/lib/sisu/current/manpage.rb @@ -63,10 +63,13 @@ module SiSU_Manpage include SiSU_ManpageFormat require_relative 'shared_metadata' # shared_metadata.rb require_relative 'generic_parts' # generic_parts.rb + require_relative 'txt_read' # txt_read.rb + require_relative 'txt_output' # txt_output.rb require_relative 'txt_shared' # txt_shared.rb - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@alt_id_count,@@alt_id_count=0,0 @@tablefoot='' class Source + include SiSU_Txt_Read def initialize(opt) @opt=opt if @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ @@ -77,37 +80,14 @@ module SiSU_Manpage end def read begin - @md=SiSU_Param::Parameters.new(@opt).get - @env=SiSU_Env::InfoEnv.new(@opt.fns) - tool=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? "#{@env.program.text_editor} #{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}" - : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" - (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - && @opt.act[:quiet][:set]==:on \ - ? SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Manpage', - tool - ).green_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Manpage', - tool - ).green_title_hi - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - @opt.fns, - "#{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}" - ).flow - end - @ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here - SiSU_Manpage::Source::Scroll.new(@md,@ao_array).songsheet + md=SiSU_Param::Parameters.new(@opt).get + specific={ + description: 'Manpage', + output_path: md.file.output_path.manpage.dir, + output_file: md.file.base_filename.manpage, + } + read_generic(@opt,specific) + SiSU_Manpage::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -121,8 +101,8 @@ module SiSU_Manpage include SiSU_Parts_Generic include SiSU_TextUtils @@endnotes={ para: [], end: [] } - def initialize(md,data) - @md,@data=md,data + def initialize(md,data,wrap_width) + @md,@data,@wrap_width=md,data,wrap_width @tab="\t" @@notes=:end @manpage={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] } @@ -153,8 +133,8 @@ module SiSU_Manpage notes=@n.flatten notes.each do |e| util=(e.to_s =~/^\[[\d*+]+\]:/) \ - ? (SiSU_TextUtils::Wrap.new(e.to_s,78,4,1)) - : (SiSU_TextUtils::Wrap.new(e.to_s,78,0,1)) + ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1)) + : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,0,1)) wrap=util.line_wrap wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m wrap.gsub(/(^| |#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*'). #man page requires @@ -219,19 +199,19 @@ WOK if dob.indent =~/[1-9]/ \ and dob.indent == dob.hang util=if dob.bullet_ - SiSU_TextUtils::Wrap.new("* #{paragraph}",78,dob.indent.to_i*2) - else SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2) + SiSU_TextUtils::Wrap.new("* #{paragraph}",@wrap_width,dob.indent.to_i*2) + else SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,dob.indent.to_i*2) end elsif dob.hang =~/[0-9]/ \ and dob.indent != dob.hang # NOT yet implemented - util=SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2) + util=SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,dob.indent.to_i*2) else util=if dob.bullet_ - SiSU_TextUtils::Wrap.new("* #{paragraph}",78,0) - else SiSU_TextUtils::Wrap.new(paragraph,78,0) + SiSU_TextUtils::Wrap.new("* #{paragraph}",@wrap_width,0) + else SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,0) end end - else util=SiSU_TextUtils::Wrap.new(paragraph,78,0) + else util=SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,0) end w=util.line_wrap w=w.gsub(/^(\\\.)/,' \1') @@ -239,7 +219,7 @@ WOK end if lv times=wrapped.length - times=78 if times > 78 + times=@wrap_width if times > @wrap_width @manpage[:body] << case lv when 0 then '.SH ' << wrapped.upcase << break_line << break_line when 1..3 then '.SH ' << wrapped.upcase << break_line << break_line @@ -380,49 +360,18 @@ WOK else SiSU_Env::InfoDate.new.year #date missing decide on action end proj=SiSU_Env::InfoVersion.instance.get_version - manpage[:open] = %{.TH "#{@md.fnb}" "#{@md.make.manpage['section']}" "#{date}" "#{proj[:version]}" "#{@md.title.main}"#{@md.make.manpage['name']}#{@md.make.manpage['synopsis']}} + manpage[:open] = %{.TH "#{@md.fnb}" "#{@md.make.manpage['section']}" "#{date}" "#{proj.version}" "#{@md.title.main}"#{@md.make.manpage['name']}#{@md.make.manpage['synopsis']}} content << manpage[:open] content << manpage[:head] content << manpage[:body] content << @@endnotes[:end] if @@notes==:end content << manpage[:metadata] content << manpage[:tail] - Output.new(@md,content).manpage + outputfile=SiSU_Env::FileOp.new(@md).write_file.manpage + Txt_Output::Output.new.document(content,outputfile) @@endnotes={ para: [], end: [] } end end - class Output 0 - para.each do |line| - if line - line=line.gsub(/[ \t]+$/m,''). - gsub(/^\A[ ]*\Z/m,'') - (line=~/^\A\Z/) \ - ? (emptyline+=1) - : emptyline=0 - if emptyline < 2 #remove additional empty lines - filename_manpage.puts line #unix manpage - end - end - end - else filename_manpage.puts para #unix manpage # /^([*=-]|\.){5}/ - end - end - filename_manpage.close - end - end end end __END__ diff --git a/lib/sisu/current/object_munge.rb b/lib/sisu/current/object_munge.rb new file mode 100644 index 00000000..1baa8ca4 --- /dev/null +++ b/lib/sisu/current/object_munge.rb @@ -0,0 +1,307 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** object munge + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Object_Munge + def i_src_o_strip_markup(txtobj) + txtobj=txtobj. + gsub(/#{Mx[:srcrgx_bold_o]}(.+?)#{Mx[:srcrgx_bold_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_italics_o]}(.+?)#{Mx[:srcrgx_italics_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_underscore_o]}(.+?)#{Mx[:srcrgx_underscore_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_cite_o]}(.+?)#{Mx[:srcrgx_cite_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_insert_o]}(.+?)#{Mx[:srcrgx_insert_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_strike_o]}(.+?)#{Mx[:srcrgx_strike_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_superscript_o]}(\d+)#{Mx[:srcrgx_superscript_c]}/m,'[\1]'). + gsub(/#{Mx[:srcrgx_superscript_o]}(.+?)#{Mx[:srcrgx_superscript_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_subscript_o]}(.+?)#{Mx[:srcrgx_subscript_c]}/m,'\1'). + gsub(/#{Mx[:srcrgx_hilite_o]}(.+?)#{Mx[:srcrgx_hilite_c]}/m,'\1'). + gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~'). + gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/m,''). # endnote removed + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/m,''). # endnote removed + gsub(/(?:#{Mx[:nbsp]})+/,' '). + gsub(/(?:#{Mx[:br_nl]})+/,"\n"). + gsub(/(?:#{Mx[:br_paragraph]})+/,"\n"). + gsub(/(?:#{Mx[:br_line]})+/,"\n"). + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'ยฉ'). + gsub(/[ ][ ]s+/,' '). + strip +if txtobj =~/Reading this/ + puts txtobj + if txtobj =~ /#{Mx[:srcrgx_italics_o]}(.+?)#{Mx[:srcrgx_italics_c]}/ + puts __LINE__ + puts Mx[:srcrgx_italics_o] + puts txtobj + end +end +; txtobj + end + def i_ao_o_strip_markup(txtobj) + txtobj=txtobj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1'). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1'). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1'). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1'). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1'). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1'). + gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]'). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1'). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1'). + gsub(/#{Mx[:fa_hilite_o]}(.+?)#{Mx[:fa_hilite_c]}/,'\1'). + gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~'). + gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,''). # endnote removed + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,''). # endnote removed + gsub(/(?:#{Mx[:nbsp]})+/,' '). + gsub(/(?:#{Mx[:br_nl]})+/,"\n"). + gsub(/(?:#{Mx[:br_paragraph]})+/,"\n"). + gsub(/(?:#{Mx[:br_line]})+/,"\n"). + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'ยฉ'). + gsub(/[ ][ ]s+/,' '). + strip + end + def i_ao_o_src_markup_restore(txtobj) + @txtobj=txtobj + def textface_marks + @txtobj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*{\1}*'). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/{\1}/'). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_{\1}_'). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"{\1}"'). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+{\1}+'). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'-{\1}-'). + gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'^{[\1]}^'). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^{\1}^'). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,',{\1},'). + gsub(/#{Mx[:fa_hilite_o]}(.+?)#{Mx[:fa_hilite_c]}/,'\1'). + gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~'). + gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~{\1 \2}~'). + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,''). # endnote removed + gsub(/(?:#{Mx[:nbsp]})+/,' '). + gsub(/(?:#{Mx[:br_nl]})+/,"\n"). + gsub(/(?:#{Mx[:br_paragraph]})+/,"\n"). + gsub(/(?:#{Mx[:br_line]})+/,"\n"). + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'ยฉ'). + gsub(/[ ][ ]s+/,' '). + strip + end + def object_marks + @txtobj + end + self + end + def clean_text(txtobj,markup=:ao) + if txtobj.class==String + txtobj=if markup ==:ao + i_ao_o_strip_markup(txtobj) + elsif markup ==:src + i_src_o_strip_markup(txtobj) + else p __FILE__; p __LINE__ + end + elsif txtobj.class.inspect=~/^SiSU_AO_DocumentStructure::/ + txtobj.obj=i_ao_o_strip_markup(txtobj.obj) + else p 'error' + end + txtobj + end + def footnotes_inline(txtobj) + end + def footnotes_ref_and_note(txtobj) + end + def src_markup(txtobj) + txtobj + end + def extract_endnotes(doc_obj_txt,endnotes_) #% used for extraction of endnotes from paragraphs + if endnotes_ ==:separate + notes_a=doc_obj_txt.scan(/#{Mx[:en_a_o]}([\d]+\s+.+?)#{Mx[:en_a_c]}/) + ##notes_a=doc_obj_txt.scan(/#{Mx[:en_a_o]}([\d*+]+\s+.+?)#{Mx[:en_a_c]}/) + #notes_b=doc_obj_txt.scan(/#{Mx[:en_b_o]}([\d*+]+\s+.+?)#{Mx[:en_b_c]}/) + n=[] + notes_a.flatten.each do |note| #high cost to deal with
appropriately within plaintext, consider + note=note.dup.to_s + note=note.gsub(/^([\d]+)\s+/,'^~\1 '). + gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/, + ' \\\\\\ ') + n << note + end + notes_a=n.flatten + doc_obj_txt=doc_obj_txt. + gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^') # endnote marker marked up + else + doc_obj_txt=doc_obj_txt. + gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/, + '~[ \1 ]~'). # inline endnote with marker marked up + gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/, + '~{\1 \2 }~'). # inline endnote with marker marked up + gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/, + '~[\1 \2 ]~') # inline endnote with marker marked up + end + [doc_obj_txt,notes_a] + end + def objects #def i_ao_o_src_markup_restore(txtobj) + def code_(dob) + if dob.is==:code + dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< + gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_< + end + dob + end + def block_(dob) + dob.obj=if dob.of==:block # watch + dob.obj.gsub(/#{Mx[:gl_o]}โ—#{Mx[:gl_c]}/,"* "). + gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n") + else dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n") + end + dob + end + def textface_marks_po4a(dob,endnotes_=:inline) + notes='' + dob.obj=dob.obj. + gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, + Mx[:src_bold_o] + '\1' + Mx[:src_bold_c]). + gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/, + Mx[:src_italics_o] + '\1' + Mx[:src_italics_c]). + gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/, + Mx[:src_underscore_o] + '\1' + Mx[:src_underscore_c]). + gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/, + Mx[:src_subscript_o] + '\1' + Mx[:src_subscript_c]). + gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/, + Mx[:src_superscript_o] + '\1' + Mx[:src_superscript_c]). + gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/, + Mx[:src_insert_o] + '\1' + Mx[:src_insert_c]). + gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/, + Mx[:src_cite_o] + '\1' + Mx[:src_cite_c]). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/, + Mx[:src_strike_o] + '\1' + Mx[:src_strike_c]). + gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/, + Mx[:src_monospace_o] + '\1' + Mx[:src_monospace_c]) + unless dob.is==:code + dob.obj=dob.obj. + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). + gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, + '\1 [link: <\2>]'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/, + '\1 [link: local image]'). + gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1') + dob.obj,notes=extract_endnotes(dob.obj,endnotes_) + dob.obj=dob.obj. + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'ยฉ') + end + dob=block_(dob) + dob=code_(dob) + dob.obj=dob.obj.gsub(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,''). # remove page breaks + gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links + gsub(/ |#{Mx[:nbsp]}/,' '). # decide on + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/, + ' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/, + ' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") + gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/, + '[image: "\1"]') + [dob,notes] + end + def object_marks + @txtobj + end + self + end +end +__END__ diff --git a/lib/sisu/current/po4a.rb b/lib/sisu/current/po4a.rb deleted file mode 100644 index 3de3ff7d..00000000 --- a/lib/sisu/current/po4a.rb +++ /dev/null @@ -1,1118 +0,0 @@ -# encoding: utf-8 -=begin - -* Name: SiSU - -** Description: documents, structuring, processing, publishing, search -*** pot file generation - -** Author: Ralph Amissah - - - -** 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 . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - -** SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - -** Hompages: - - - -** Git - - - -=end -module SiSU_Po4a - require_relative 'ao' # ao.rb - require_relative 'se' # se.rb - include SiSU_Env - require_relative 'ao_composite' # ao_composite.rb - require_relative 'shared_metadata' # shared_metadata.rb - require_relative 'po4a_set' # po4a_set.rb - include SiSU_Param - class Source - @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn= - nil, nil, nil, nil, nil, nil - def initialize(opt,fn=nil) - @opt,@fn=opt,fn - #unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/ - # puts "#{@opt.fns} not a processed file type" - #end - file_arr=SiSU_Info_Env::InfoEnv.new.source_file_processing_array(@opt.fns) - SiSU_Param::Parameters::Instructions.new(file_arr,@opt).extract - r=Px[:lng_lst_rgx].gsub(/\|en\|/,'|') - @lang_regx=%r{(?:#{r})} - if opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \ - and opt.f_pth[:lng]!=@opt.lng_base - @@opt_src_=false - @@opt_trn=opt - @@md_trn=SiSU_Param::Parameters.new(opt).get - else - @@opt_src_=true - @@opt_src=opt - @@md_src=SiSU_Param::Parameters.new(opt).get - end - end - def read - begin - src={} - src[:pth]=@opt.f_pth[:pth] - src[:files]=if @opt.fns =~ /\.(?:(?:-|ssm\.)sst|ssm)$/ - @opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm') - SiSU_Assemble::CompositeFileList.new(@opt).read - else - [@opt.fns] - end - md=SiSU_Param::Parameters.new(@opt).get - src[:files].each do |fn| - env=SiSU_Env::InfoEnv.new(@opt.fns) - file=SiSU_Env::FileOp.new(md) - m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss - @fnn,@fnb,@fnt=fn[m,1],fn[m,2],fn[m,3] - unless @opt.act[:quiet][:set]==:on - tool=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? "#{env.program.text_editor} #{file.output_path.pot.dir}/" - : @opt.fns - (@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], - 'Pot po4a', - tool - ).green_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Pot po4a', - tool - ).green_title_hi - 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], - @opt.fns, - file.output_path.pot.dir - ).flow - end - end - if @opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \ - or @opt.f_pth[:lng] !=@opt.lng_base - opt_lang_trn_fn=fn - @ao_array_lang_translation= - SiSU_AO::Source.new(@opt,opt_lang_trn_fn,:po4a).get # ao file drawn here - opt_lang_src_fn=if fn =~/\S+?~\S{2}(?:_\S{2})?\.ss[mti]/ - fn.gsub(/(\S+?)~\S{2}(?:_\S{2})?(\.ss[mti])/,'\1\2') #check i - else fn - end - transdir,srcdir=Dir.pwd,Dir.pwd - if Dir.pwd.to_s =~/\/#{@lang_regx}$/ - transdir=Dir.pwd - srcdir=transdir.gsub(/\/#{@lang_regx}$/,"/#{@opt.lng_base}") - if FileTest.directory?(srcdir) - Dir.chdir(srcdir) - end - else nil - end - if FileTest.file?("#{srcdir}/#{opt_lang_src_fn}") - @ao_array_lang_src= - SiSU_AO::Source.new(@@opt_src,opt_lang_src_fn,:po4a).get # ao file drawn here - else - puts "no identified source document" - exit - end - Dir.chdir(transdir) if transdir - else - @ao_array_lang_src= - SiSU_AO::Source.new(@opt,fn,:po4a).get # ao file drawn here - @ao_array_lang_translation=nil - end - wrap_width=if defined? md.make.plaintext_wrap \ - and md.make.plaintext_wrap - md.make.plaintext_wrap - elsif defined? env.plaintext_wrap \ - and env.plaintext_wrap - env.plaintext_wrap - else 78 - end - SiSU_Po4a::Source::Scroll.new( - fn, - @ao_array_lang_src, - @ao_array_lang_translation, - @@md_src,@@md_trn, - wrap_width - ).songsheet - end - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - end - end - private - class Scroll appropriately within plaintext, consider - n=n.dup.to_s - n=n.gsub(/^([\d]+)\s+/,'^~\1 '). - gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/, - ' \\\\\\ ') - @n << n - end - notes_a=@n.flatten - end - def wrap_endnotes(orig_notes='',trn_notes='') - nt=@@endnotes_ ? 'endnote' : 'footnote' - @fn=0 - a_l=orig_notes.length - 0.upto(a_l-1) do |i| - @fn=if orig_notes[i].to_s =~/^\^~([\d*+]+)/ # provides endnote number within paragraph - @fn += 1 - else @fn - end - d="#{nt} #{@fn}" - mark="^~ " - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# footnotes, the preferred sisu markup for a footnote is~{this is a footnote}~ } \ - + %{however, for translation a footnote reference marker in the text~^ } \ - + %{with a set of notes following the paragraph starting on a newline with "^~ this is a footnote", } \ - + %{is easier to deal with, if possible these should be converted back to~{inline notes}~} - s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) \ - ? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) - : orig_notes[i].to_s - trans=if trn_notes.is_a?(Array) \ - and trn_notes.length==orig_notes.length - (trn_notes[i].to_s =~/^\^~[\d*+]+/) \ - ? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) - : trn_notes[i].to_s - else '' - end - util=pot_structure(desc,orig,trans) - wrap=util.line_wrap - wrap=if wrap =~ /^\s*\^~[\d*+]+\s+.+?\s*\Z/m - wrap.gsub(/^\s*(\^~[\d*+]+)\s+(.+?)\s*\Z/m, < 0 \ - and not @@endnotes_ - @pot[:body] << br - wrap_endnotes(notes_s,notes_t) - elsif @@endnotes[:para] \ - and @@endnotes_ - @pot[:body] << br*2 - end - end - def pot_structure_para(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document - util=nil - wrapped=if dob_src.indent =~/[1-9]/ \ - and dob_src.indent == dob_src.hang - s_mark=desc=orig=trans='' - if dob_src.bullet_ - mark="_#{dob_src.indent}* " - d="#{dob_src.is.to_s}: indent #{dob_src.indent}, bullet" - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# markup for indented bullet text is at the start of the line/object, } \ - + %{an underscore followed by the indent level and an asterisk "#{mark}"} - s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - else - mark="_#{dob_src.indent} " - d="#{dob_src.is.to_s}: indent #{dob_src.indent}" - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# markup for indented text is at the start of the line/object, } \ - + %{an underscore followed by the indent level "#{mark}"} - s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - end - orig="#{s_mark}#{dob_src.obj}" - trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}" - util=pot_structure(desc,orig,trans) - elsif dob_src.hang =~/[0-9]/ \ - and dob_src.indent != dob_src.hang - s_mark=desc=orig=trans='' - mark="_#{dob_src.hang}_#{dob_src.indent} " - d="#{dob_src.is.to_s}: hang #{dob_src.hang} indent #{dob_src.indent}" - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# markup for indented text with a first line indented } \ - + %{to a different level from the rest of the paragraph, } \ - + %{is at the start of the line/object, } \ - + %{an underscore and the first indent level } \ - + %{a second underscore and the indent level for the rest of the paragraph, "#{mark1}"} - s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig="#{s_mark}#{dob_src.obj}" - trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}" - util=pot_structure(desc,orig,trans) - else - s_mark=desc=orig=trans='' - if dob_src.bullet_ - mark='_* ' - d="#{dob_src.is.to_s}: bullet" - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# markup for indented text is at the start of the line/object, } \ - + %{an underscore followed by an asterisk "#{mark}"} - s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig="#{s_mark}#{dob_src.obj}" - trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}" - else - mark='' - d=dob_src.is.to_s - instruct=%{\n# regular paragraph, no special markup} - if @md.opt.act[:maintenance][:set]==:on - instruct="\n# " - s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig=dob_src.obj - trans=(dob_trn=='') ? '' : dob_trn.obj - end - util=pot_structure(desc,orig,trans) - end - wrapped=util.line_wrap - @pot[:body] << wrapped << br # main text, contents, body KEEP - if @@endnotes[:para] \ - and notes_s.length > 0 \ - and not @@endnotes_ - @pot[:body] << br - wrap_endnotes(notes_s,notes_t) - elsif @@endnotes[:para] \ - and @@endnotes_ - @pot[:body] << br*2 - end - end - def pot_structure_block(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document - mark="block{\\n\\n...\\n\\n}block" - d=dob_src.is.to_s - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# block text is a text block with an opening and closing marker, } \ - + %{the content of which may be wrapped} - s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig=dob_src.obj - trans=(dob_trn=='') ? '' : dob_trn.obj - util=pot_structure(desc,orig,trans) - unwrapped=util.no_line_wrap_block - @pot[:body] << unwrapped << br - end - def pot_structure_group(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document - mark="group{\\n\\n...\\n\\n}group" - d=dob_src.is.to_s - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# group text is a text block with an opening and closing marker, } \ - + %{the content of which may be wrapped} - s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig=dob_src.obj - trans=(dob_trn=='') ? '' : dob_trn.obj - util=pot_structure(desc,orig,trans) - unwrapped=util.no_line_wrap_block - @pot[:body] << unwrapped << br - end - def pot_structure_verse(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document - mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem" - d=dob_src.is.to_s - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# verse are part of the text block described as a poem, } \ - + %{the first verse is preceeded by an opening marker, } \ - + %{and the last verse by a closing marker, } \ - + %{the content of which should remain unwrapped} - s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig=dob_src.obj - trans=(dob_trn=='') ? '' : dob_trn.obj - util=pot_structure(desc,orig,trans) - unwrapped=util.no_line_wrap_block - @pot[:body] << unwrapped << br - end - def pot_structure_code(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document - mark="code{\\n\\n...\\n\\n}code" - d=dob_src.is.to_s - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# codeblocks are a text block with an opening and closing marker, } \ - + %{the content of which should remain unwrapped} - s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig=dob_src.obj - trans=(dob_trn=='') ? '' : dob_trn.obj - util=pot_structure(desc,orig,trans) - unwrapped=util.no_line_wrap_block - @pot[:body] << unwrapped << br - end - def pot_structure_table(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document - mark="table{\\n\\n...\\n\\n}table" - d=dob_src.is.to_s - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# tables are a text block with an opening and closing marker, } \ - + %{the content of which should remain unwrapped} - s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} - end - desc="#{d}#{s_mark}#{instruct}" - orig=dob_src.obj - orig=orig.gsub(/#{Mx[:tc_c]}/,"\n") - trans=(dob_trn=='') ? '' : dob_trn.obj - trans=trans.gsub(/#{Mx[:tc_c]}/,"\n") - util=pot_structure(desc,orig,trans) - unwrapped=util.no_line_wrap_block - @pot[:body] << unwrapped << br - end - def pot_structure_idx_markup(idx) - struct=['={'] - idx.sort.each do |x| - x.each_with_index do |y,i0| - case y - when String - struct << ';' unless struct[-1] =~/=\{/ - struct << y - if x[i0+1].class == Hash \ - and x[i0+1][:sub].length > 0 - struct << ':' - end - when Hash - if y[:plus].to_i > 0 - struct << '+' + y[:plus].to_s - end - if y[:sub].length > 0 - y[:sub].each_with_index do |z,i1| - z.each_with_index do |a,i2| - #p a - if z.length > 0 - struct << a[0] - if a[1][:plus].to_i > 0 - struct << '+' + a[1][:plus].to_s - end - if (i1 + 1) < y[:sub].length - struct << '|' - end - end - end - end - end - end - end - end - struct << '}' - #puts struct.join - struct.join - end - def pot_structure_idx(dob_src='',dob_trn='') #% used for book index but broken as original markup lost, already abstracted, fix - mark="={ ... }" - instruct=s_mark='' - if @md.opt.act[:maintenance][:set]==:on - instruct=%{\n# the book index should be attached unwrapped to the preceding text block } \ - + %{(there should be a new line, but no empty line)} - s_mark="\n# " + %{"\\n#{mark}\\n\\n"} - end - d='book-idx' - desc="#{d}#{s_mark}#{instruct}" - orig=pot_structure_idx_markup(dob_src.idx) #'={' + dob_src.idx + '}' - trans=if defined? dob_trn.idx \ - and not dob_trn.idx.nil? \ - and not dob_trn.idx.empty? - pot_structure_idx_markup(dob_trn.idx) #'={' + dob_trn.idx + '}' - else '' - end - util=pot_structure(desc,orig,trans) - unwrapped=util.no_line_wrap_block - @pot[:body] << unwrapped << br - end - def pot_markup(data_src,data_trn) - #@endnotes,@copen,@pot_contents_close=Array.new(3){[]} - a_l=if data_trn - a_l=(data_src.length >= data_trn.length) \ - ? data_src.length - : data_trn.length - else - data_src.length - end - s,t=0,0 - if @md.fns =~ /\.(?:(?:-|ssm\.)?sst|ssm)$/ - (data_trn.nil?) \ - ? pot_metadata_src - : pot_metadata_src_trn - end - 0.upto(a_l-1) do |i| - if data_trn - unless data_src[s] \ - and data_trn[t] - break - end - if data_src[s].of == :comment \ - and data_trn[t].of == :comment \ - and (data_src[s].is == data_trn[t].is) - s+=1;t+=1 - next - end - if ((data_src[s].is == :comment) \ - || (data_trn[t].is == :comment)) \ - and (data_src[s].is != data_trn[t].is) - if data_src[s].is == :comment - if @md.opt.act[:maintenance][:set]==:on - puts "src (comment):\n\t" \ - + data_src[s].obj - end - s+=1 - #next if data_src[s].is == :comment - elsif data_trn[t].is == :comment - if @md.opt.act[:maintenance][:set]==:on - puts "trans (comment):\n\t" \ - + data_trn[t].obj - end - t+=1 - #next if data_trn[t].is == :comment - end - end - if ((defined? data_src[s].ocn) \ - && (data_src[s].ocn.is_a?(Fixnum))) \ - and ((defined? data_trn[t].ocn) \ - && (data_trn[t].ocn.is_a?(Fixnum))) \ - and (data_src[s].ocn == data_trn[t].ocn) - @m_s,@m_t=s,t - elsif ((defined? data_src[s].ocn) \ - && (data_src[s].ocn.is_a?(Fixnum))) \ - and ((defined? data_trn[t].ocn) \ - && (data_trn[t].ocn.is_a?(Fixnum))) \ - and (data_src[s].ocn != data_trn[t].ocn) - p '--- OCN ---' - p 'mis-match' - p data_src[s].ocn - p data_src[s].obj - p data_trn[t].ocn - p data_trn[t].obj - p '---' - p 'previous match' - p data_src[@m_s].ocn - p data_src[@m_s].obj - p data_trn[@m_t].ocn - p data_trn[@m_t].obj - exit - elsif (((defined? data_src[s].ocn) \ - && (defined? data_trn[t].ocn)) \ - and data_src[s].ocn.class != data_trn[t].ocn.class) - p '--- OCN class ---' - p 'mis-match' - p data_src[s].ocn if defined? data_src[s].ocn - p data_src[s].obj - p data_trn[t].ocn if defined? data_trn[t].ocn - p data_trn[t].obj - #p '---' - #p 'previous match' - #p data_src[@m_s].ocn - #p data_src[@m_s].obj - #p data_trn[@m_t].ocn - #p data_trn[@m_t].obj - #elsif (defined? data_src[s].ocn != defined? data_trn[t].ocn) \ - #and (data_src[s].ocn.nil? != data_trn[t].ocn.nil?) - # p '--- missing OCN? ---' - # p 'mis-match' - # p data_src[s].ocn if defined? data_src[s].ocn - # p data_src[s].obj - # p data_trn[t].ocn if defined? data_trn[t].ocn - # p data_trn[t].obj - else - end - end - notes_s,notes_t='','' - data_src[s],notes_s=markup(data_src[s]) - if data_trn - data_trn[t],notes_t=markup(data_trn[t]) - #data_src[s],data_trn[t]=pot_data(data_src[s],notes_s,data_trn[t],notes_t) - pot_data(data_src[s],notes_s,data_trn[t],notes_t) - else - #data_src[s],nul=pot_data(data_src[s],notes_s) - pot_data(data_src[s],notes_s) - end - s+=1;t+=1 - end - @pot #watch - end - def pot_data(dob_src='',notes_s='',dob_trn='',notes_t='') - if dob_src.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ - if defined? dob_src.ocn \ - and dob_src.ocn.to_s =~/\d+/ - paranum=dob_src.ocn.to_s - @p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum) - end - case dob_src.is - when :heading - pot_structure_heading(dob_src,notes_s,dob_trn,notes_t) - when :para - pot_structure_para(dob_src,notes_s,dob_trn,notes_t) - when :group - pot_structure_group(dob_src,notes_s,dob_trn,notes_t) - when :block - pot_structure_block(dob_src,notes_s,dob_trn,notes_t) - when :verse - pot_structure_verse(dob_src,notes_s,dob_trn,notes_t) - when :code - pot_structure_code(dob_src,notes_s,dob_trn,notes_t) - when :table - pot_structure_table(dob_src,notes_s,dob_trn,notes_t) - end - if defined? dob_src.idx \ - and not dob_src.idx.nil? \ - and not dob_src.idx.empty? - pot_structure_idx(dob_src,dob_trn) - end - dob_src='' if (dob_src.obj =~/
/ \ - and dob_src.obj =~/^(-\{{2}~\d+|)/) # -endnote - if dob_src ## Clean Prepared Text - dob_src.obj=dob_src.obj.gsub(//,' '). - gsub(/<:\S+>/,' ') if dob_src ## Clean Prepared Text - end - end - #[dob_src,dob_trn] - end - def markup(dob) # used for major markup instructions - SiSU_Env::InfoEnv.new(@md.fns) - dob.obj=dob.obj. - gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, - "#{Px[:po_bold_o]}\\1#{Px[:po_bold_c]}"). - gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/, - "#{Px[:po_italics_o]}\\1#{Px[:po_italics_c]}"). - gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/, - "#{Px[:po_underscore_o]}\\1#{Px[:po_underscore_c]}"). - gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/, - "#{Px[:po_subscript_o]}\\1#{Px[:po_subscript_c]}"). - gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/, - "#{Px[:po_superscript_o]}\\1#{Px[:po_superscript_c]}"). - gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/, - "#{Px[:po_insert_o]}\\1#{Px[:po_insert_c]}"). - gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/, - "#{Px[:po_cite_o]}\\1#{Px[:po_cite_c]}"). - gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/, - "#{Px[:po_strike_o]}\\1#{Px[:po_strike_c]}"). - gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/, - "#{Px[:po_monospace_o]}\\1#{Px[:po_monospace_c]}") - notes='' - unless dob.is==:code - dob.obj=dob.obj. - gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). - gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). - gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, - '\1 [link: <\2>]'). - gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/, - '\1 [link: local image]'). - gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1') - notes=extract_endnotes(dob) - #% ### footnotes current state - extracted - dob.obj=dob.obj. - gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^'). # endnote marker marked up - #% ### footnotes current state - keep inline - #dob.obj.gsub!(/#{Mx[:en_a_o]}[\d]+\s+(.+?)#{Mx[:en_a_c]}/,'~{ \1 }~') # inline endnote with marker marked up - gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/, - '~[ \1 ]~'). # inline endnote with marker marked up - gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/, - '~{\1 \2 }~'). # inline endnote with marker marked up - gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/, - '~[\1 \2 ]~'). # inline endnote with marker marked up - gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). - gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). - gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). - gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). - gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). - gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). - gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). - gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). - gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). - gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). - gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). - gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). - gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'ยฉ') - end - dob.obj=if dob.of==:block # watch - dob.obj.gsub(/#{Mx[:gl_o]}โ—#{Mx[:gl_c]}/,"* "). - gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n") - else dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"\n\n") - end - if dob.is==:code - dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< - gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_< - end - dob.obj=dob.obj.gsub(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,''). # remove page breaks - gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). - gsub(/(.+?)<\/a>/m,'\1'). - gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links - gsub(/ |#{Mx[:nbsp]}/,' '). # decide on - gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/, - ' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") - gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/, - ' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") - gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/, - '[image: "\1"]') - [dob,notes] - end - def publish(fn,pot) - content=[] - content << pot[:open] - content << pot[:head] - content << pot[:metadata] - content << pot[:body] - content << @@endnotes[:end] if @@endnotes_ - Output.new(fn,content,@md,@process).po4a - @@endnotes={ para: [], end: [] } - end - end - class Output 0 - para.each do |line| - if line - line=line.gsub(/\s+$/m,''). - gsub(/^\A[ ]*\Z/m,'') - if line=~/^\A[ ]*\Z/m - emptyline+=1 - else emptyline=0 - end - file_pot.puts line if emptyline < 2 #remove extra line spaces (fix upstream) - end - end - else file_pot.puts para #unix plaintext # /^([*=-]|\.){5}/ - end - end - file_pot.close - SiSU_Po4aUtils::PotNumber.new.reset - po4a_git - end - def po4a_git - unless @md.opt.act[:maintenance][:set]==:on - require_relative 'git' # git.rb - git=SiSU_Git::Source.new(@md.opt,@process) - unless FileTest.directory?(@file.output_path.pot_git.dir) - git.create_file_structure_git - end - if @md.opt.f_pth[:lng] ==@md.opt.lng_base - FileUtils::cp( - @file.place_file.pot.dir, - @file.output_path.pot_git.dir - ) - else # naive, work on --> - FileUtils::cp( - @file.place_file.po.dir, - @file.output_path.po_git.dir - ) #unless FileTest.file?(@file.place_file.po_git.dir) - end - git.read - end - end - end - end -end -__END__ -!\|#\|&*\|-\|/\|_\|{\|}\|~\|&# - -tables are problematic, difficult to reconstitute instruction, check - -metadata, move to top? and work on - -footnotes, different types, asterisk, also do you want to have separate -paragraphs, or breaks within one block? - -where no ocn appropriately use ~# or -# or indeed 1~name- - -comments in document, what to do about them, not sure they are currently -retained in dal, could be quite valuable to keep diff --git a/lib/sisu/current/po4a_set.rb b/lib/sisu/current/po4a_set.rb deleted file mode 100644 index a08eea35..00000000 --- a/lib/sisu/current/po4a_set.rb +++ /dev/null @@ -1,295 +0,0 @@ -# encoding: utf-8 -=begin - -* Name: SiSU - -** Description: documents, structuring, processing, publishing, search -*** po4a - -** Author: Ralph Amissah - - - -** 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 . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - -** SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - -** Hompages: - - - -** Git - - - -=end -module SiSU_Po4aUtils - class Wrap - def initialize(md,orig='',trans='',is_desc='',n_char_max=76,n_indent=0,n_hang=nil) - @md,@orig,@trans,@is_desc,@n_char_max,@n_indent=md,orig,trans,is_desc,n_char_max,n_indent - @n_char_max_extend = n_char_max - @br="\n" - @n_hang=n_hang ? n_hang : @n_indent - @po4a_identify_type='type: SiSU doc' - #@po4a_identify_type='type: Plain text' - end - def line_wrap - space=' ' - spaces_indent,spaces_hang="#{@br}#{space*@n_indent}",space*@n_hang - pot,i=[],0 - pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans] - pot_array.each do |pa| - line=0 - out=[] - out[line]='' - @oldword='' #REMOVE @oldword - pa=pa.gsub(/
/,'
'). - gsub(/#{Mx[:br_nl]}/,"\n\n") - words=pa.scan(/\n\n|
|\S+/m) - while words != '' - word=words.shift - if not word - out[line] unless out[line].empty? #check - break - elsif word =~/\n\n/ - word="\n" - @n_char_max_extend = @n_char_max + out[line].length - line=line - elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \ - and out[line] =~/\S+/ - @n_char_max_extend = @n_char_max - out[line].squeeze!(' ') - line += 1 - end - if word - out[line]=if out[line] \ - and out[line] !~/\S+$/m - "#{out[line]}#{word}" - elsif out[line] \ - and out[line] =~/\S+/ - "#{out[line]} #{word}" - else "#{word.strip}" - end - end - @oldword=word if word =~/\S+/ - end - x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang) - z=[] - x.split(/\n/).each do |y| - y=y.gsub(/"/,'\"') - y=%{"#{y}"} - z << y - end - pot[i]=z.join("\n") - i +=1 - pot - end - trans=(pot.length == 2) ? pot[1] : '' - po_str=<dc_content}] - else nil - end - end - def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825 - @tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib - def label #element - @tag - end - def type - @type - end - def text - @tag_content - end - def info #element text - @tag_content - end - def attribute - @attrib - end - def element - @tag - end - def attrib - @attrib - end - def el - @tag - end - self - end - def start_is_match - case @p - when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,@md.title.full,'meta','dc') #dc 1 - when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/ then header('creator',$2,'meta','dc') #dc 2 - when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 3 - when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 4 - when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 5 - when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 6 - when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 7 - when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 8 - when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 9 - when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 10 - when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 11 - when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 12 - when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 13 - when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 14 - when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 15 - when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('translator',$2) - when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('illustrator',$2) - when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') - when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_loc',$2,'meta','extra') - when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_dewey',$2,'meta','extra') - when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_pg',$2,'meta','extra') - when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_isbn',$2,'meta','extra') - when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/ then header('structure',$2,'process','instruct') - when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/ then header('markup',$2,'process','instruct') - when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') - when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/ then header('italicize',$2,'process','instruct') - when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/ then header('vocabulary',$2,'process','instruct') - when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/ then header('css',$2,'process','instruct') - when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') - when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') #add a & b - when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') - when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') - when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') - when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/ then header('version',$2,'process','instruct') - else nil - end - end - def dublin - (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \ - ? start_is_match - : nil - end - def meta - (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \ - ? start_is_match - : nil - end - end - class ParagraphNumber - def initialize(paranum) - @paranum=/(\d+)/m.match(paranum)[1] - end - def display - @paranum.gsub(/(\d+)/,'#\1') - end - end - class PotNumber - @@n=0 - def initialize - @@n +=2 - end - def num - @@n - end - def reset - @@n=0 - end - end -end -__END__ diff --git a/lib/sisu/current/se_clear.rb b/lib/sisu/current/se_clear.rb index 1d769268..31621ee7 100644 --- a/lib/sisu/current/se_clear.rb +++ b/lib/sisu/current/se_clear.rb @@ -98,7 +98,6 @@ module SiSU_Clear def param_instantiate @cX||=SiSU_Screen::Ansi.new(@cmd) @@date=SiSU_Env::InfoDate.new - @@proc=@@filename_txt=@@filename_texinfo=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=@@yaml=@@yamladdr=nil @@publisher='SiSU scribe' end end diff --git a/lib/sisu/current/se_file_op.rb b/lib/sisu/current/se_file_op.rb index 3f9cb834..f70af907 100644 --- a/lib/sisu/current/se_file_op.rb +++ b/lib/sisu/current/se_file_op.rb @@ -347,6 +347,12 @@ module SiSU_File_Op fn=base_filename.rst make_file(path,fn) end + def orgmode + path=output_path.orgmode.dir + make_path(path) + fn=base_filename.orgmode + make_file(path,fn) + end def html_scroll pth=output_path.html.dir make_path(pth) @@ -456,18 +462,30 @@ module SiSU_File_Op fn=base_filename.manifest_txt make_file(path,fn) end + def po4a_cfg + path=output_path.po4a.dir + make_path(path) + fn=base_filename.po4a_cfg + make_file(path,fn) + end def pot path=output_path.pot.dir make_path(path) fn=base_filename.pot make_file(path,fn) end - def po - path=output_path.po.dir + def po(lng=@md.opt.lng) + path=output_path.po(lng).dir make_path(path) fn=base_filename.po make_file(path,fn) end + def po4a_sst(lng=@md.opt.lng) + path=output_path.po4a_sst(lng).dir + make_path(path) + fn=base_filename.po4a_sst + make_file(path,fn) + end self end def place_file @@ -526,6 +544,17 @@ module SiSU_File_Op end self end + def orgmode + def dir + output_path.orgmode.dir + '/' \ + + base_filename.orgmode + end + def rel + output_path.orgmode.rel + '/' \ + + base_filename.orgmode + end + self + end def html_scroll def dir output_path.html_scroll.dir + '/' \ @@ -961,6 +990,24 @@ module SiSU_File_Op end i18n(fnh) end + def orgmode(fh=nil) + fh=default_hash_build(fh,Sfx[:txt_orgmode]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'plain', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end def html_scroll(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) @@ -1411,6 +1458,9 @@ module SiSU_File_Op def src @md.fno end + def po4a_cfg + 'po4a.cfg' + end def po #check (@fno.empty?) \ ? (@md.fn[:po]) @@ -1421,6 +1471,9 @@ module SiSU_File_Op ? (@md.fn[:pot]) : (@fno + '.pot') end + def po4a_sst #check + @fno + end def sisupod (@md.fns =~/\.ssm\.sst$/) \ ? @md.fns.gsub(/(?:\~\S{2,3})?\.ssm\.sst$/,'.ssm.txz') @@ -1712,17 +1765,33 @@ module SiSU_File_Op end self end - def po + def po4a + def dir + output_path.base.dir + '/' \ + + Gt[:src] + '/' \ + + @md.opt.fng + '/po4a' + end + def url + output_path.base.url + '/po4a/' \ + + @md.fnb + end + def rcp + #p "#{output_path.base.dir}/po4a/#{@md.fnb}" + end + self + end + def po(lng=@md.opt.lng) + @lng=lng def dir output_path.base.dir + '/' \ + Gt[:src] + '/' \ + @md.opt.fng + '/po4a/po/' \ - + @md.opt.lng + + @lng end def url output_path.base.url + '/po4a/' \ + @md.fnb + '/po/' \ - + @md.opt.lng + + @lng end self end @@ -1766,6 +1835,21 @@ module SiSU_File_Op end self end + def po4a_sst(lng=@md.opt.lng) + @lng=lng + def dir + output_path.base.dir + '/' \ + + Gt[:src] + '/' \ + + @md.opt.fng + '/po4a/' \ + + @lng + end + def url + output_path.base.url + '/po4a/' \ + + @md.fnb \ + + @lng + end + self + end def md_harvest manifest self @@ -1879,6 +1963,28 @@ module SiSU_File_Op end self end + def orgmode + def ft + 'orgmode' \ + + DEVELOPER[:under_construction] + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + self + end def html_scroll def ft 'html' diff --git a/lib/sisu/current/se_filemap.rb b/lib/sisu/current/se_filemap.rb index 82580025..3e4dce03 100644 --- a/lib/sisu/current/se_filemap.rb +++ b/lib/sisu/current/se_filemap.rb @@ -96,6 +96,9 @@ module SiSU_File_Map if @md.opt.act[:txt_rst][:set]==:on #% --rst, --rest ft << @md.fn[:txt_rst] end + if @md.opt.act[:txt_orgmode][:set]==:on #% --orgmode + ft << @md.fn[:txt_orgmode] + end if @md.opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml ft << @md.fn[:xhtml] end @@ -164,6 +167,9 @@ module SiSU_File_Map if @opt.act[:txt_rst][:set]==:on #% --rst, --rest ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt' end + if @opt.act[:txt_orgmode][:set]==:on #% --orgmode + ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt' + end if @opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml ft << 'scroll.xhtml' << '??.scroll.xhtml' << 'scroll.??.xhtml' end diff --git a/lib/sisu/current/se_get_init.rb b/lib/sisu/current/se_get_init.rb index a299cd10..1a28a5ac 100644 --- a/lib/sisu/current/se_get_init.rb +++ b/lib/sisu/current/se_get_init.rb @@ -79,15 +79,39 @@ module SiSU_Get_Init @@tx ||=SiSU_Parts_TeXpdf::TeX.new end def rc_path_options + v=SiSU_Env::InfoVersion.instance.get_version [ - "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_is.branch_version?}", - "#{$sisu_document_markup_directory_base_fixed_path}/.sisu", - "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_is.branch_version?}", - "#{$sisu_document_markup_directory_base_fixed_path}/_sisu", - "#{@@home}/.sisu/#{SiSU_is.branch_version?}", - "#{@@home}/.sisu", - "#{@@sisu_etc}/#{SiSU_is.branch_version?}", - "#{@@sisu_etc}", + $sisu_document_markup_directory_base_fixed_path \ + + '/.sisu/' \ + + v.branch_name, + $sisu_document_markup_directory_base_fixed_path \ + + '/.sisu/' \ + + v.branch_version, + $sisu_document_markup_directory_base_fixed_path \ + + '/.sisu', + $sisu_document_markup_directory_base_fixed_path \ + + '/_sisu/' \ + + v.branch_name, + $sisu_document_markup_directory_base_fixed_path \ + + '/_sisu/' \ + + v.branch_version, + $sisu_document_markup_directory_base_fixed_path \ + + '/_sisu', + @@home \ + + '/.sisu/' \ + + v.branch_name, + @@home \ + + '/.sisu/' \ + + v.branch_version, + @@home \ + + '/.sisu', \ + @@sisu_etc \ + + '/' \ + + v.branch_name, + @@sisu_etc \ + + '/' \ + + v.branch_version, + @@sisu_etc, ] end def sisu_document_make @@ -167,12 +191,16 @@ module SiSU_Get_Init tell_no_yaml='WARNING - YAML loading switched off, to enable delete the file:' if @markup_dir_changed_ @ad_path=[ + "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_is.branch_name?}/skin/yml", "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_is.branch_version?}/skin/yml", "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/skin/yml", + "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_is.branch_name?}/skin/yml", "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_is.branch_version?}/skin/yml", "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/skin/yml", + "#{@@home}/.sisu/#{SiSU_is.branch_name?}/skin/yml", "#{@@home}/.sisu/#{SiSU_is.branch_version?}/skin/yml", "#{@@home}/.sisu/skin/yml", + "#{@@sisu_etc}/#{SiSU_is.branch_name?}/skin/yml", "#{@@sisu_etc}/#{SiSU_is.branch_version?}/skin/yml", "#{@@sisu_etc}/skin/yml", ] diff --git a/lib/sisu/current/se_info_env.rb b/lib/sisu/current/se_info_env.rb index 297a0a10..b411b9a2 100644 --- a/lib/sisu/current/se_info_env.rb +++ b/lib/sisu/current/se_info_env.rb @@ -568,6 +568,12 @@ module SiSU_Info_Env ? @rc['rst']['ocn'] : false end + def orgmode_ocn? + ((defined? @rc['orgmode']['ocn']) \ + && @rc['orgmode']['ocn']==true) \ + ? @rc['orgmode']['ocn'] + : false + end def widget #needs (md) #move @rc=SiSU_Env::GetInit.new.sisu_yaml.rc @ad=SiSU_Env::GetInit.new.ads @@ -2112,14 +2118,6 @@ WOK ? @rc['default']['papersize'].downcase : (defaults[:papersize].downcase) end - def odf_structure - FileUtils::rm_rf(processing_path.processing_path.odf_pth) - FileUtils::mkdir_p(processing_path.processing_path.odf_pth) - system( - "unzip -q #{path.share}/#{SiSU_is.branch_name?}/odf/odt.zip -d #{processing_path.odf_pth}" - #"unzip -q #{path.share}/#{SiSU_is.branch_version?}/odf/odt.zip -d #{processing_path.odf_pth}" - ) - end def sisupod_gen(fns_pod) sisupod_gen_v3(fns_pod) end diff --git a/lib/sisu/current/se_programs.rb b/lib/sisu/current/se_programs.rb index 83c57977..c2b0e357 100644 --- a/lib/sisu/current/se_programs.rb +++ b/lib/sisu/current/se_programs.rb @@ -134,6 +134,16 @@ module SiSU_Sys_Call false end end + def po4a #po4a + program='po4a' + program_ref="\n\t\tpo4a" + if program_found?(program); true + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + warn("#{program} is not installed #{program_ref}") + false + end + end def zip #zip program='zip' program_ref="\n\t\tused to in the making of number of file formats, odf, epub" diff --git a/lib/sisu/current/se_version.rb b/lib/sisu/current/se_version.rb index 464af3d9..bbbf5962 100644 --- a/lib/sisu/current/se_version.rb +++ b/lib/sisu/current/se_version.rb @@ -75,7 +75,7 @@ module SiSU_Info_Version end @@lib_path=nil def get_version - @version={} + version={} @pwd=ENV['PWD'] lib_path= @@lib_path \ @@ -83,19 +83,47 @@ module SiSU_Info_Version : `echo $RUBYLIB`.split(':') @@lib_path ||=lib_path if File.exist?(SiSU_is.version_info_path?) - @version=YAML::load(File::open(SiSU_is.version_info_path?)) + version=YAML::load(File::open(SiSU_is.version_info_path?)) end - @version[:install_method]=if SiSU_is.runtime_type? ==:gem_install + version[:branch_version]=SiSU_is.branch_version? + version[:branch_number]=/^v([0-9]+)/.match(version[:branch_version])[1] + version[:branch_name]=SiSU_is.branch_name? + version[:install_method]=if SiSU_is.runtime_type? ==:gem_install spec = Gem::Specification.find_by_name("sisu") gem_root = spec.gem_dir (File.dirname(__FILE__.gsub(/\/lib\/sisu\/#{SiSU_is.branch_name?}/,'')) == gem_root) \ ? ' (ruby gem install)' : '' else '' end - @version[:branch_name]=SiSU_is.branch_name? - @version[:branch_version]=SiSU_is.branch_version? - @version[:branch_number]=/^v([0-9]+)$/.match(@version[:branch_version])[1] - @version + @version=version + def version_details_hash + @version + end + def project + version_details_hash[:project] + end + def date + version_details_hash[:date] + end + def date_stamp + version_details_hash[:date_stamp] + end + def version + version_details_hash[:version] + end + def branch_version + version_details_hash[:branch_version] + end + def branch_number + version_details_hash[:branch_number] + end + def branch_name + version_details_hash[:branch_name] + end + def install_method + version_details_hash[:install_method] + end + self end def rbversion %x{ruby -v}.strip @@ -118,7 +146,7 @@ module SiSU_Info_About def sisu_version version=SiSU_Env::InfoVersion.instance.get_version rb_ver=SiSU_Env::InfoVersion.instance.rbversion - if version[:version] + if version.version opt_cmd=if defined? @color.cmd \ and @color.cmd =~/[ck]/ @color.cmd @@ -126,11 +154,11 @@ module SiSU_Info_About end SiSU_Screen::Ansi.new( opt_cmd, - version[:project], - version[:version], - version[:date_stamp], - version[:date], - version[:install_method], + version.project, + version.version, + version.date_stamp, + version.date, + version.install_method, rb_ver ).version else puts 'SiSU (version information not available)' diff --git a/lib/sisu/current/shared_markup_alt.rb b/lib/sisu/current/shared_markup_alt.rb index 50984a22..252662b2 100644 --- a/lib/sisu/current/shared_markup_alt.rb +++ b/lib/sisu/current/shared_markup_alt.rb @@ -79,9 +79,8 @@ module SiSU_TextRepresentation gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1'). gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1'). gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1'). - gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strke_c]}/,'\1'). + gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1'). gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]'). - gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1'). gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1'). gsub(/#{Mx[:fa_hilite_o]}(.+?)#{Mx[:fa_hilite_c]}/,'\1'). gsub(/#{Mx[:gl_o]}#(?:126|152)#{Mx[:gl_c]}/i,'~'). diff --git a/lib/sisu/current/shared_metadata.rb b/lib/sisu/current/shared_metadata.rb index 92d32dda..1aa0a728 100644 --- a/lib/sisu/current/shared_metadata.rb +++ b/lib/sisu/current/shared_metadata.rb @@ -280,13 +280,13 @@ module SiSU_Metadata @tag,@inf=%{Generated},'' meta << self.meta_para end - if defined? @md.sisu_version \ - and @md.sisu_version[:version]=~/\S+/ + if defined? @md.project_details \ + and @md.project_details.version=~/\S+/ v="#{tr.sisu_version}: " + - "#{@md.sisu_version[:project]} " + - "#{@md.sisu_version[:version]} " + - "of #{@md.sisu_version[:date_stamp]} " + - "(#{@md.sisu_version[:date]})" + "#{@md.project_details.project} " + + "#{@md.project_details.version} " + + "of #{@md.project_details.date_stamp} " + + "(#{@md.project_details.date})" @tag,@inf,@class='Generated by',v,'ver' meta << self.meta_para end @@ -461,7 +461,7 @@ module SiSU_Metadata def language if defined? @md.title.language \ and @md.title.language - ' :language: ' + @md.title.language.join(', ') + ' :language: ' + @md.title.language else nil end end @@ -674,13 +674,13 @@ module SiSU_Metadata # end nil end - def identifier - if defined? @md.classify.identifier \ - and @md.classify.identifier - ' :identifier: ' + @md.classify.identifier - else nil - end - end + #def identifier + # if defined? @md.classify.identifier \ + # and @md.classify.identifier + # ' :identifier: ' + @md.classify.identifier + # else nil + # end + #end def loc if defined? @md.classify.loc \ and @md.classify.loc @@ -1216,13 +1216,13 @@ WOK tag,inf=tr.last_generated,@md.generated meta << meta_para(tag,inf) end - if defined? @md.sisu_version \ - and @md.sisu_version[:version]=~/\S+/ + if defined? @md.project_details \ + and @md.project_details.version=~/\S+/ tag=tr.sisu_version - inf="#{@md.sisu_version[:project]} " + - "#{@md.sisu_version[:version]} " + - "of #{@md.sisu_version[:date_stamp]} " + - "(#{@md.sisu_version[:date]})" + inf="#{@md.project_details.project} " + + "#{@md.project_details.version} " + + "of #{@md.project_details.date_stamp} " + + "(#{@md.project_details.date})" meta << meta_para(tag,inf) end if defined? @md.ruby_version \ diff --git a/lib/sisu/current/src_po4a_share.rb b/lib/sisu/current/src_po4a_share.rb new file mode 100644 index 00000000..6b81d62e --- /dev/null +++ b/lib/sisu/current/src_po4a_share.rb @@ -0,0 +1,309 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** pot file generation + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +#module SiSU_SStm_AO_SStm +module SiSU_Languages_Selected + require_relative 'utils_response' # utils_response.rb + def language + def sisu_languages_available + Px[:lng_lst] + end + def source_language_selected_str + @opt.act[:po4a_lang][:src] \ + ? @opt.act[:po4a_lang][:src] + : 'en' + end + def translation_languages_selected + @opt.act[:po4a_lang][:trn] \ + ? @opt.act[:po4a_lang][:trn] + : [] + end + def translation_languages_available + sisu_languages_available - [source_language_selected_str] + end + def translation_languages_selected_that_are_available + translation_languages_selected & sisu_languages_available + end + def translation_languages_selected_that_are_available_str + translation_languages_selected_that_are_available.join(' ') + end + def translation_languages_selected_str + @opt.act[:po4a_lang][:trn].join(' ') + end + self + end +end +module SiSU_Po4a_Project + class Po4aCfg + include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test + include SiSU_Response + include SiSU_Languages_Selected + def initialize(opt,file) + @opt,@file=opt,file + end + def song + if @opt.lng==language.source_language_selected_str + ans=response?('po4a config file') + if ans + po4a_cfg + end + end + end + def po4a_cfg_filename + 'po4a.cfg' + end + def dir + def pwd + Dir.pwd + end + def po4a_ + 'po4a/' # '' + end + def pot + #po4a_ + 'pot' + 'pot' + end + def po + #po4a_ + 'po' + 'po' + end + self + end + def po4a_cfg_file + File.open("#{Dir.pwd}/#{po4a_cfg_filename}",'w') + end + def po4a_cfg + lng=language.source_language_selected_str + doc_import_list=composite_and_imported_filenames_array(@opt.fno) + po4a_cfg_arr=[] + po4a_cfg_arr \ + << "[po4a_langs] #{language.translation_languages_selected_that_are_available_str}" + po4a_cfg_arr \ + << "[po4a_paths] #{dir.pot}/$master.pot $lang:#{dir.po}/$lang/$master.po" + doc_import_list.each do |file_src| + file_src_fn= + file_src.gsub(/#{language.source_language_selected_str}\//,'') + po4a_cfg_arr \ + << "[type: text] #{lng}/#{file_src} $lang:$lang/#{file_src_fn}" + end + file=@file.write_file.po4a_cfg + po4a_cfg_arr.each do |txt| + puts txt + file << txt << "\n" + end + file.close + end + end + class Po4aProject + include SiSU_Languages_Selected + include SiSU_Response + def initialize(opt,file) + @opt,@file=opt,file + end + def song + make_paths + if FileTest.directory?(@file.output_path.po4a.dir) + Dir.chdir(@file.output_path.po4a.dir) + dirs=Dir['*/'] + dirs_language=[] + dirs.each do |x| + dirs_language << x.gsub(/\/$/,'') + end + dirs_translation = \ + (language.translation_languages_available & dirs_language) + end + if (language.translation_languages_available & [@opt.lng]).length == 1 + puts %{gettext for: #{dirs_translation} +in #{Dir.pwd}} + ans=response?('gettext?') + if ans + gettext_if_any_build_src_trans_po + end + end + ans=response?('build project?') + if ans + build_src_master_to_pot_and_po_and_srcs + end + end + def flags + def debug + '-d -v' + end + def normal + '' + end + def quiet + '-q' + end + self + end + def build_src_master_to_pot_and_po_and_srcs + if SiSU_Sys_Call::SystemCall.new.po4a + pwd=Dir.pwd + #cmd='po4a --keep 0 -M UTF-8 --no-backups ' \ + #+ '--package-name ' \ + #+ 'sisu-manual' + ' ' \ + #+ flags.normal + ' ' \ + #+ filename.po4a_cfg + cmd='po4a --keep 0 -M UTF-8' \ + + flags.normal + ' ' \ + + @file.base_filename.po4a_cfg + Dir.chdir(@file.output_path.po4a.dir) + system(" + cd #{@file.output_path.po4a.dir} + #{cmd} + cd - + "); puts cmd + Dir.chdir(pwd) + end + end + def gettext_if_any_build_src_trans_po + Dir.chdir(@file.output_path.po4a.dir) + dirs=Dir['*/'] + dirs_language=[] + dirs.each do |x| + dirs_language << x.gsub(/\/$/,'') + end + dirs_translation = \ + (language.translation_languages_available & dirs_language) + files_src=Dir.glob("./#{source_language_selected_str}/*.ss[tmi]") + dirs_translation.each do |lng| + files_src.each do |file| + fn=file.gsub(/\.\/#{source_language_selected_str}\//,'') + system(" + po4a-gettextize -f text -M utf-8 \ + -m ./#{source_language_selected_str}/#{fn} \ + -l ./#{lng}/#{fn} \ + -p ./po/#{lng}/#{fn}.po + ") + puts fn + end + end + end + def dir_mk(dir) + unless FileTest.directory?(dir) + FileUtils::mkdir_p(dir) + end + end + def make_paths + dir_mk(@file.output_path.pot.dir) + dir_mk(@file.output_path.po.dir) + end + def clean + #rm -f po/*/*.po~ + #rm -rf ../build + FileUtils.rm_f Dir.glob("./#{dir.po}/*/*.po~") + end + def distclean + #rm -f po4a.cfg + #rm -rf $(LANGUAGES) + FileUtils::rm_f(filename.po4a_cfg) + FileUtils::rm_r(language.possible_translations,:force => true) + #FileUtils::rm_r(language.translation_languages_selected_that_are_available,:force => true) + end + end + class Po4aDistClean + include SiSU_Languages_Selected + include SiSU_Response + def initialize(opt,file) + @opt,@file=opt,file + end + def song + pwd=Dir.pwd + if FileTest.directory?(@file.output_path.po4a.dir) + Dir.chdir(@file.output_path.po4a.dir) + dirs=Dir['*/'] + dirs_language=[] + dirs.each do |x| + dirs_language << x.gsub(/\/$/,'') + end + dirs_translation = \ + (language.translation_languages_available & dirs_language) + if dirs_translation.length > 0 + puts %{remove language translation directorie(s): #{dirs_translation} +in #{Dir .pwd}} + ans=response?('disclean?') + if ans + FileUtils::rm_f(@file.base_filename.po4a_cfg) + FileUtils::rm_r(dirs_translation,:force => true) + #FileUtils::rm_r(language.translation_languages_available,:force => true) + end + end + Dir.chdir(pwd) + end + end + end +end +#end +__END__ +REMOVE +!\|#\|&*\|-\|/\|_\|{\|}\|~\|&# + +tables are problematic, difficult to reconstitute instruction, check + +metadata, move to top? and work on + +footnotes, different types, asterisk, also do you want to have separate +paragraphs, or breaks within one block? + +where no ocn appropriately use ~# or -# or indeed 1~name- + +comments in document, what to do about them, not sure they are currently +retained in dal, could be quite valuable to keep + +Translate Shell +http://www.soimort.org/translate-shell/ +translate.google.com diff --git a/lib/sisu/current/src_po4a_shelf.rb b/lib/sisu/current/src_po4a_shelf.rb new file mode 100644 index 00000000..6a473b1c --- /dev/null +++ b/lib/sisu/current/src_po4a_shelf.rb @@ -0,0 +1,1217 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** pot file generation + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Po4a + require_relative 'ao' # ao.rb + require_relative 'se' # se.rb + include SiSU_Env + require_relative 'ao_composite' # ao_composite.rb + require_relative 'shared_metadata' # shared_metadata.rb + require_relative 'src_po4a_shelf_set' # src_po4a_shelf_set.rb + include SiSU_Param + require_relative 'object_munge' # object_munge.rb + require_relative 'utils_composite' # utils_composite.rb + class Source + include SiSU_Object_Munge + @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn= + nil, nil, nil, nil, nil, nil + @@auto_translation_ = :go + def initialize(opt,fn=nil) + @opt,@fn=opt,fn + #unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/ + # puts "#{@opt.fns} not a processed file type" + #end + file_arr=SiSU_Info_Env::InfoEnv.new.source_file_processing_array(@opt.fns) + SiSU_Param::Parameters::Instructions.new(file_arr,@opt).extract + r=Px[:lng_lst_rgx].gsub(/\|en\|/,'|') + @lang_regx=%r{(?:#{r})} + if opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \ + and opt.f_pth[:lng]!=@opt.lng_base + @@opt_src_=false + @@opt_trn=opt + @@md_trn=SiSU_Param::Parameters.new(opt).get + else + @@opt_src_=true + @@opt_src=opt + @@md_src=SiSU_Param::Parameters.new(opt).get + end + end + def wrap_width_set(md,env) + if defined? md.make.plaintext_wrap \ + and md.make.plaintext_wrap + md.make.plaintext_wrap + elsif defined? env.plaintext_wrap \ + and env.plaintext_wrap + env.plaintext_wrap + else 78 + end + end + def process_file(md,env,file,wrap_width,fn) + unless @opt.act[:quiet][:set]==:on + tool=(@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) \ + ? "#{env.program.text_editor} #{file.output_path.pot.dir}/" + : @opt.fns + (@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], + 'Pot po4a', + tool + ).green_hi_blue + : SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + 'Pot po4a', + tool + ).green_title_hi + 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], + @opt.fns, + file.output_path.pot.dir + ).flow + end + end + if @opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \ + or @opt.f_pth[:lng] !=@opt.lng_base + opt_lang_trn_fn=fn + @ao_arr_lang_trans= + SiSU_AO::Source.new(@opt,opt_lang_trn_fn,:po4a).get # ao file drawn here + opt_lang_src_fn=(fn =~/\S+?~\S{2}(?:_\S{2})?\.ss[mti]/) \ + ? (fn.gsub(/(\S+?)~\S{2}(?:_\S{2})?(\.ss[mti])/,'\1\2')) #check i + : fn + transdir,srcdir=Dir.pwd,Dir.pwd + if Dir.pwd.to_s =~/\/#{@lang_regx}$/ + transdir=Dir.pwd + srcdir=transdir. + gsub(/\/#{@lang_regx}$/, + "/#{@opt.lng_base}") + if FileTest.directory?(srcdir) + Dir.chdir(srcdir) + end + else nil + end + if FileTest.file?("#{srcdir}/#{opt_lang_src_fn}") + @ao_arr_lang_src= + SiSU_AO::Source.new( + @@opt_src, + opt_lang_src_fn, + :po4a + ).get # ao file drawn here + else + puts "no identified source document" + exit + end + Dir.chdir(transdir) if transdir + else + @ao_arr_lang_src= + SiSU_AO::Source.new( + @opt, + fn, + :po4a + ).get # ao file drawn here + @ao_arr_lang_trans=nil + end + SiSU_Po4a::Source::Scroll.new( + fn, + @ao_arr_lang_src, + @ao_arr_lang_trans, + @@md_src, + @@md_trn, + wrap_width + ).songsheet + end + def read + begin + src={} + src[:pth]=@opt.f_pth[:pth] + src[:files]=if @opt.fns =~ /\.(?:(?:-|ssm\.)sst|ssm)$/ + @opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm') + SiSU_Assemble::CompositeFileList.new(@opt).read + else + [@opt.fns] + end + md=SiSU_Param::Parameters.new(@opt).get + env=SiSU_Env::InfoEnv.new(@opt.fns) + file=SiSU_Env::FileOp.new(md) + Po4aCfg.new(@opt,file).po4a_cfg + wrap_width=wrap_width_set(md,env) + src[:files].each do |fn| + process_file(md,env,file,wrap_width,fn) + end + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + class Scroll 0 \ + and not @@endnotes_ + @pot[:body] << br + wrap_endnotes(notes_s,notes_t) + elsif @@endnotes[:para] \ + and @@endnotes_ + @pot[:body] << br*2 + end + end + def para(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + util=nil + wrapped=if dob_src.indent =~/[1-9]/ \ + and dob_src.indent == dob_src.hang + s_mark=desc=orig=trans='' + if dob_src.bullet_ + mark="_#{dob_src.indent}* " + d="#{dob_src.is.to_s}: indent #{dob_src.indent}, bullet" + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# markup for indented bullet text is at the start of the line/object, } \ + + %{an underscore followed by the indent level and an asterisk "#{mark}"} + s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + else + mark="_#{dob_src.indent} " + d="#{dob_src.is.to_s}: indent #{dob_src.indent}" + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# markup for indented text is at the start of the line/object, } \ + + %{an underscore followed by the indent level "#{mark}"} + s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + end + orig="#{s_mark}#{dob_src.obj}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{s_mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(desc,orig,trans) + elsif dob_src.hang =~/[0-9]/ \ + and dob_src.indent != dob_src.hang + s_mark=desc=orig=trans='' + mark="_#{dob_src.hang}_#{dob_src.indent} " + d="#{dob_src.is.to_s}: hang #{dob_src.hang} indent #{dob_src.indent}" + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# markup for indented text with a first line indented } \ + + %{to a different level from the rest of the paragraph, } \ + + %{is at the start of the line/object, } \ + + %{an underscore and the first indent level } \ + + %{a second underscore and the indent level for the rest of the paragraph, "#{mark1}"} + s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig="#{s_mark}#{dob_src.obj}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{s_mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(desc,orig,trans) + else + s_mark=desc=orig=trans='' + if dob_src.bullet_ + mark='_* ' + d="#{dob_src.is.to_s}: bullet" + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# markup for indented text is at the start of the line/object, } \ + + %{an underscore followed by an asterisk "#{mark}"} + s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig="#{s_mark}#{dob_src.obj}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{s_mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + else + mark='' + d=dob_src.is.to_s + instruct=%{\n# regular paragraph, no special markup} + if @md.opt.act[:maintenance][:set]==:on + instruct="\n# " + s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig=dob_src.obj + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{s_mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + end + util=pot_structure_wrap(desc,orig,trans) + end + wrapped=util.line_wrap + @pot[:body] << wrapped << br # main text, contents, body KEEP + if @@endnotes[:para] \ + and notes_s.length > 0 \ + and not @@endnotes_ + @pot[:body] << br + wrap_endnotes(notes_s,notes_t) + elsif @@endnotes[:para] \ + and @@endnotes_ + @pot[:body] << br*2 + end + end + def block(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark="block{\\n\\n...\\n\\n}block" + d=dob_src.is.to_s + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# block text is a text block with an opening and closing marker, } \ + + %{the content of which may be wrapped} + s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig=dob_src.obj + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{s_mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(desc,orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def group(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark="group{\\n\\n...\\n\\n}group" + d=dob_src.is.to_s + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# group text is a text block with an opening and closing marker, } \ + + %{the content of which may be wrapped} + s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig=dob_src.obj + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{s_mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(desc,orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def verse(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem" + d=dob_src.is.to_s + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# verse are part of the text block described as a poem, } \ + + %{the first verse is preceeded by an opening marker, } \ + + %{and the last verse by a closing marker, } \ + + %{the content of which should remain unwrapped} + s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig=dob_src.obj + trans=(dob_trn=='') ? '' : dob_trn.obj + util=pot_structure_wrap(desc,orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def code(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark="code{\\n\\n...\\n\\n}code" + d=dob_src.is.to_s + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# codeblocks are a text block with an opening and closing marker, } \ + + %{the content of which should remain unwrapped} + s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig=dob_src.obj + trans=(dob_trn=='') ? '' : dob_trn.obj + util=pot_structure_wrap(desc,orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def table(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark="table{\\n\\n...\\n\\n}table" + d=dob_src.is.to_s + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# tables are a text block with an opening and closing marker, } \ + + %{the content of which should remain unwrapped} + s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig=dob_src.obj + orig=orig.gsub(/#{Mx[:tc_c]}/,"\n") + trans=(dob_trn=='') ? '' : dob_trn.obj + trans=trans.gsub(/#{Mx[:tc_c]}/,"\n") + util=pot_structure_wrap(desc,orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def idx_markup(idx) + struct=['={'] + idx.sort.each do |x| + x.each_with_index do |y,i0| + case y + when String + struct << ';' unless struct[-1] =~/=\{/ + struct << y + if x[i0+1].class == Hash \ + and x[i0+1][:sub].length > 0 + struct << ':' + end + when Hash + if y[:plus].to_i > 0 + struct << '+' + y[:plus].to_s + end + if y[:sub].length > 0 + y[:sub].each_with_index do |z,i1| + z.each_with_index do |a,i2| + #p a + if z.length > 0 + struct << a[0] + if a[1][:plus].to_i > 0 + struct << '+' + a[1][:plus].to_s + end + if (i1 + 1) < y[:sub].length + struct << '|' + end + end + end + end + end + end + end + end + struct << '}' + #puts struct.join + struct.join + end + def idx(dob_src='',dob_trn='') #% used for book index but broken as original markup lost, already abstracted, fix + mark="={ ... }" + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# the book index should be attached unwrapped to the preceding text block } \ + + %{(there should be a new line, but no empty line)} + s_mark="\n# " + %{"\\n#{mark}\\n\\n"} + end + d='book-idx' + desc="#{d}#{s_mark}#{instruct}" + orig=pot_structure.idx_markup(dob_src.idx) #'={' + dob_src.idx + '}' + trans=if defined? dob_trn.idx \ + and not dob_trn.idx.nil? \ + and not dob_trn.idx.empty? + pot_structure.idx_markup(dob_trn.idx) #'={' + dob_trn.idx + '}' + else '' + end + util=pot_structure_wrap(desc,orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + self + end + def pot_markup(data_src,data_trn) + #@endnotes,@copen,@pot_contents_close=Array.new(3){[]} + a_l=if data_trn + a_l=(data_src.length >= data_trn.length) \ + ? data_src.length + : data_trn.length + else + data_src.length + end + s,t=0,0 + if @md.fns =~ /\.(?:(?:-|ssm\.)?sst|ssm)$/ + (data_trn.nil?) \ + ? pot_metadata_src + : pot_metadata_src_trn + end + 0.upto(a_l-1) do |i| + if data_trn + unless data_src[s] \ + and data_trn[t] + break + end + if data_src[s].of == :comment \ + and data_trn[t].of == :comment \ + and (data_src[s].is == data_trn[t].is) + s+=1;t+=1 + next + end + if ((data_src[s].is == :comment) \ + || (data_trn[t].is == :comment)) \ + and (data_src[s].is != data_trn[t].is) + if data_src[s].is == :comment + if @md.opt.act[:maintenance][:set]==:on + puts "src (comment):\n\t" \ + + data_src[s].obj + end + s+=1 + #next if data_src[s].is == :comment + elsif data_trn[t].is == :comment + if @md.opt.act[:maintenance][:set]==:on + puts "trans (comment):\n\t" \ + + data_trn[t].obj + end + t+=1 + #next if data_trn[t].is == :comment + end + end + if ((defined? data_src[s].ocn) \ + && (data_src[s].ocn.is_a?(Fixnum))) \ + and ((defined? data_trn[t].ocn) \ + && (data_trn[t].ocn.is_a?(Fixnum))) \ + and (data_src[s].ocn == data_trn[t].ocn) + @m_s,@m_t=s,t + elsif ((defined? data_src[s].ocn) \ + && (data_src[s].ocn.is_a?(Fixnum))) \ + and ((defined? data_trn[t].ocn) \ + && (data_trn[t].ocn.is_a?(Fixnum))) \ + and (data_src[s].ocn != data_trn[t].ocn) + p '--- OCN ---' + p 'mis-match' + p data_src[s].ocn + p data_src[s].obj + p data_trn[t].ocn + p data_trn[t].obj + p '---' + p 'previous match' + p data_src[@m_s].ocn + p data_src[@m_s].obj + p data_trn[@m_t].ocn + p data_trn[@m_t].obj + exit + elsif (((defined? data_src[s].ocn) \ + && (defined? data_trn[t].ocn)) \ + and data_src[s].ocn.class != data_trn[t].ocn.class) + p '--- OCN class ---' + p 'mis-match' + p data_src[s].ocn if defined? data_src[s].ocn + p data_src[s].obj + p data_trn[t].ocn if defined? data_trn[t].ocn + p data_trn[t].obj + #p '---' + #p 'previous match' + #p data_src[@m_s].ocn + #p data_src[@m_s].obj + #p data_trn[@m_t].ocn + #p data_trn[@m_t].obj + #elsif (defined? data_src[s].ocn != defined? data_trn[t].ocn) \ + #and (data_src[s].ocn.nil? != data_trn[t].ocn.nil?) + # p '--- missing OCN? ---' + # p 'mis-match' + # p data_src[s].ocn if defined? data_src[s].ocn + # p data_src[s].obj + # p data_trn[t].ocn if defined? data_trn[t].ocn + # p data_trn[t].obj + else + end + end + notes_s,notes_t='','' + data_src[s],notes_s=markup(data_src[s]) + if data_trn + data_trn[t],notes_t=markup(data_trn[t]) + #data_src[s],data_trn[t]=pot_data(data_src[s],notes_s,data_trn[t],notes_t) + pot_data(data_src[s],notes_s,data_trn[t],notes_t) + else + #data_src[s],nul=pot_data(data_src[s],notes_s) + pot_data(data_src[s],notes_s) + end + s+=1;t+=1 + end + @pot #watch + end + def pot_data(dob_src='',notes_s='',dob_trn='',notes_t='') + if dob_src.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ + if defined? dob_src.ocn \ + and dob_src.ocn.to_s =~/\d+/ + paranum=dob_src.ocn.to_s + @p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum) + end + case dob_src.is + when :heading + pot_structure.heading(dob_src,notes_s,dob_trn,notes_t) + when :para + pot_structure.para(dob_src,notes_s,dob_trn,notes_t) + when :group + pot_structure.group(dob_src,notes_s,dob_trn,notes_t) + when :block + pot_structure.block(dob_src,notes_s,dob_trn,notes_t) + when :verse + pot_structure.verse(dob_src,notes_s,dob_trn,notes_t) + when :code + pot_structure.code(dob_src,notes_s,dob_trn,notes_t) + when :table + pot_structure.table(dob_src,notes_s,dob_trn,notes_t) + end + if defined? dob_src.idx \ + and not dob_src.idx.nil? \ + and not dob_src.idx.empty? + pot_structure.idx(dob_src,dob_trn) + end + dob_src='' if (dob_src.obj =~/
/ \ + and dob_src.obj =~/^(-\{{2}~\d+|)/) # -endnote + if dob_src ## Clean Prepared Text + dob_src.obj=dob_src.obj.gsub(//,' '). + gsub(/<:\S+>/,' ') if dob_src ## Clean Prepared Text + end + end + #[dob_src,dob_trn] + end + def markup(dob) + dob,notes=objects.textface_marks_po4a(dob,:separate) + [dob,notes] + end + def publish(fn,pot) + content=[] + content << pot[:open] + content << pot[:head] + content << pot[:metadata] + content << pot[:body] + content << @@endnotes[:end] if @@endnotes_ + Output.new(fn,content,@md,@process).po4a + @@endnotes={ para: [], end: [] } + end + end + class Po4aCfg + include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test + def initialize(opt,file) + @opt,@file=opt,file + end + def po4a_cfg_filename + 'po4a.cfg' + end + def dir + def pwd + Dir.pwd + end + def po4a_ + 'po4a/' # '' + end + def pot + po4a_ + 'pot' + end + def po + po4a_ + 'po' + end + self + end + def po4a_cfg_file + File.open("#{Dir.pwd}/#{po4a_cfg_filename}",'w') + end + def language + def sisu_languages_available + Px[:lng_lst] + end + def translation_languages_selected + @opt.act[:po4a_lang_trans][:trn] \ + ? @opt.act[:po4a_lang_trans][:trn] + : [] + end + def translation_languages_selected_that_are_available + translation_languages_selected & sisu_languages_available + end + def source_language_selected_str + @opt.act[:po4a_lang_trans][:src] \ + ? @opt.act[:po4a_lang_trans][:src] + : 'en' + end + def translation_languages_selected_that_are_available_str + translation_languages_selected_that_are_available.join(' ') + end + def translation_languages_selected_str + @opt.act[:po4a_lang_trans][:trn].join(' ') + end + self + end + def po4a_cfg + doc_import_list=composite_and_imported_filenames_array(@opt.fno) + po4a_cfg_arr=[] + po4a_cfg_arr \ + << "[po4a_langs] #{language.translation_languages_selected_that_are_available_str}" + po4a_cfg_arr \ + << "[po4a_paths] #{dir.pot}/$master.pot $lang:#{dir.po}/$lang/$master.po" + doc_import_list.each do |file_src| + file_src_fn= + file_src.gsub(/#{language.source_language_selected_str}\//,'') + po4a_cfg_arr \ + << "[type: text] #{file_src} $lang:$lang/#{file_src_fn}" + end + file=@file.write_file.po4a_cfg + po4a_cfg_arr.each do |txt| + puts txt + file << txt << "\n" + end + file.close + end + end + class Output 0 + para.each do |line| + if line + line=line.gsub(/\s+$/m,''). + gsub(/^\A[ ]*\Z/m,'') + if line=~/^\A[ ]*\Z/m + emptyline+=1 + else emptyline=0 + end + file_pot.puts line if emptyline < 2 #remove extra line spaces (fix upstream) + end + end + else file_pot.puts para #unix plaintext # /^([*=-]|\.){5}/ + end + end + file_pot.close + SiSU_Po4aUtils::PotNumber.new.reset + po4a_git + end + def po4a_git + unless @md.opt.act[:maintenance][:set]==:on + require_relative 'git' # git.rb + git=SiSU_Git::Source.new(@md.opt,@process) + unless FileTest.directory?(@file.output_path.pot_git.dir) + git.create_file_structure_git + end + if @md.opt.f_pth[:lng] == @md.opt.lng_base + FileUtils::cp( + @file.place_file.pot.dir, + @file.output_path.pot_git.dir + ) + else # naive, work on --> + FileUtils::cp( + @file.place_file.po.dir, + @file.output_path.po_git.dir + ) #unless FileTest.file?(@file.place_file.po_git.dir) + end + git.read + end + end + end + end +end +__END__ +!\|#\|&*\|-\|/\|_\|{\|}\|~\|&# + +tables are problematic, difficult to reconstitute instruction, check + +metadata, move to top? and work on + +footnotes, different types, asterisk, also do you want to have separate +paragraphs, or breaks within one block? + +where no ocn appropriately use ~# or -# or indeed 1~name- + +comments in document, what to do about them, not sure they are currently +retained in dal, could be quite valuable to keep + +Translate Shell +http://www.soimort.org/translate-shell/ +translate.google.com diff --git a/lib/sisu/current/src_po4a_shelf_set.rb b/lib/sisu/current/src_po4a_shelf_set.rb new file mode 100644 index 00000000..113475bf --- /dev/null +++ b/lib/sisu/current/src_po4a_shelf_set.rb @@ -0,0 +1,297 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** po4a + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Po4aUtils + class Wrap + def initialize(md,orig='',trans='',is_desc='',n_char_max=76,n_indent=0,n_hang=nil) + @md,@orig,@trans,@is_desc,@n_char_max,@n_indent= + md, orig, trans, is_desc, n_char_max, n_indent + @n_char_max_extend = n_char_max + @br="\n" + @n_hang=n_hang ? n_hang : @n_indent + @po4a_identify_type='type: SiSU doc' + #@po4a_identify_type='type: Plain text' + end + def line_wrap + space=' ' + spaces_indent,spaces_hang= + "#{@br}#{space*@n_indent}",space*@n_hang + pot,i=[],0 + pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans] + pot_array.each do |pa| + line=0 + out=[] + out[line]='' + @oldword='' #REMOVE @oldword + pa=pa.gsub(/
/,'
'). + gsub(/#{Mx[:br_nl]}/,"\n\n") + words=pa.scan(/\n\n|\\\\\\|
|\S+/m) + while words != '' + word=words.shift + if not word + out[line] unless out[line].empty? #check + break + elsif word =~/\n\n/ + word="\n" + @n_char_max_extend = @n_char_max + out[line].length + line=line + elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \ + and out[line] =~/\S+/ + @n_char_max_extend = @n_char_max + out[line].squeeze!(' ') + line += 1 + end + if word + out[line]=if out[line] \ + and out[line] !~/\S+$/m + "#{out[line]}#{word}" + elsif out[line] \ + and out[line] =~/\S+/ + "#{out[line]} #{word}" + else "#{word.strip}" + end + end + @oldword=word if word =~/\S+/ + end + x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang) + z=[] + x.split(/\n/).each do |y| + y=y.gsub(/"/,'\"') + y=%{"#{y}"} + z << y + end + pot[i]=z.join("\n") + i +=1 + pot + end + trans=(pot.length == 2) ? pot[1] : '' + po_str=<dc_content}] + else nil + end + end + def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825 + @tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib + def label #element + @tag + end + def type + @type + end + def text + @tag_content + end + def info #element text + @tag_content + end + def attribute + @attrib + end + def element + @tag + end + def attrib + @attrib + end + def el + @tag + end + self + end + def start_is_match + case @p + when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,@md.title.full,'meta','dc') #dc 1 + when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/ then header('creator',$2,'meta','dc') #dc 2 + when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 3 + when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 4 + when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 5 + when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 6 + when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 7 + when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 8 + when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 9 + when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 10 + when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 11 + when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 12 + when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 13 + when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 14 + when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 15 + when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('translator',$2) + when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('illustrator',$2) + when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_loc',$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_dewey',$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_pg',$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_isbn',$2,'meta','extra') + when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/ then header('structure',$2,'process','instruct') + when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/ then header('markup',$2,'process','instruct') + when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/ then header('italicize',$2,'process','instruct') + when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/ then header('vocabulary',$2,'process','instruct') + when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/ then header('css',$2,'process','instruct') + when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') #add a & b + when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/ then header('version',$2,'process','instruct') + else nil + end + end + def dublin + (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \ + ? start_is_match + : nil + end + def meta + (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \ + ? start_is_match + : nil + end + end + class ParagraphNumber + def initialize(paranum) + @paranum=/(\d+)/m.match(paranum)[1] + end + def display + @paranum.gsub(/(\d+)/,'#\1') + end + end + class PotNumber + @@n=0 + def initialize + @@n +=2 + end + def num + @@n + end + def reset + @@n=0 + end + end +end +__END__ diff --git a/lib/sisu/current/src_po4a_sst_ao_sst.rb b/lib/sisu/current/src_po4a_sst_ao_sst.rb new file mode 100644 index 00000000..57dfbd38 --- /dev/null +++ b/lib/sisu/current/src_po4a_sst_ao_sst.rb @@ -0,0 +1,893 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** pot file generation + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_SStm_AO_SStm + require_relative 'ao' # ao.rb + require_relative 'se' # se.rb + include SiSU_Env + require_relative 'ao_composite' # ao_composite.rb + require_relative 'shared_metadata' # shared_metadata.rb + require_relative 'src_po4a_share' # src_po4a_share.rb + require_relative 'src_po4a_sst_ao_sst_set' # src_po4a_sst_ao_sst_set.rb + include SiSU_Param + require_relative 'object_munge' # object_munge.rb + require_relative 'utils_composite' # utils_composite.rb + require_relative 'utils_response' # utils_response.rb + class Source + include SiSU_Object_Munge + include SiSU_Languages_Selected + include SiSU_Response + @@md_src,@@md_master= + nil, nil + @@auto_translation_ = :go + def initialize(opt,fn=nil) + @opt,@fn=opt,fn + #unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/ + # puts "#{@opt.fns} not a processed file type" + #end + file_arr=SiSU_Info_Env::InfoEnv.new. + source_file_processing_array(@opt.fno) + SiSU_Param::Parameters::Instructions.new(file_arr,@opt).extract + r=Px[:lng_lst_rgx].gsub(/\|#{language.source_language_selected_str}\|/,'|') + @lang_regx=%r{(?:#{r})} + @@todo=if source_language_selected_str == opt.f_pth[:lng] + :same_file + else :compare + end + if opt.f_pth[:lng]==@opt.lng_base \ + and opt.f_pth[:lng]==source_language_selected_str + @@md_master=SiSU_Param::Parameters.new(opt).get + end + end + def wrap_width_set(md,env) + if defined? md.make.plaintext_wrap \ + and md.make.plaintext_wrap + md.make.plaintext_wrap + elsif defined? env.plaintext_wrap \ + and env.plaintext_wrap + #env.plaintext_wrap # 78 use 75 + 75 + else 75 #78 + end + end + def process_file(md,env,file,wrap_width,fn) + if source_language_selected_str == @opt.f_pth[:lng] + @@ao_arr_lang_trans= + SiSU_AO::Source.new( + @opt, + fn, + :po4a + ).get # ao file drawn here + end + @ao_arr_lang_src= + SiSU_AO::Source.new( + @opt, + fn, + :po4a + ).get # ao file drawn here + SiSU_SStm_AO_SStm::Source::Scroll.new( + fn, + @ao_arr_lang_src, + @@ao_arr_lang_trans, + @@md_src, + @@md_master, + wrap_width + ).songsheet + end + def read_process_src_files + begin + src={} + src[:pth]=@opt.f_pth[:pth] + src[:files]=if @opt.fns =~ /\.(?:(?:-|ssm\.)sst|ssm)$/ + @opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm') + SiSU_Assemble::CompositeFileList.new(@opt).read + else + [@opt.fns] + end + md=SiSU_Param::Parameters.new(@opt).get + env=SiSU_Env::InfoEnv.new(@opt.fns) + file=SiSU_Env::FileOp.new(md) + lng=/\/([^\/]+)$/.match(src[:pth])[1] + if language.source_language_selected_str == lng + SiSU_Po4a_Project::Po4aDistClean.new(@opt,file).song + end + wrap_width=wrap_width_set(md,env) + lng = /\/([^\/]+)$/.match(src[:pth])[1] + ans=response?('process files?') + if ans + src[:files].each do |fn| + puts "[#{lng}] #{fn}" + process_file(md,env,file,wrap_width,fn) + end + end + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + def read_setup + begin + md=SiSU_Param::Parameters.new(@opt).get + file=SiSU_Env::FileOp.new(md) + SiSU_Po4a_Project::Po4aCfg.new(@opt,file).song + SiSU_Po4a_Project::Po4aProject.new(@opt,file).song + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + class Scroll 0 \ + and not @@endnotes_ + @pot[:body] << br + wrap_endnotes(notes_s,notes_t) + elsif @@endnotes[:para] \ + and @@endnotes_ + @pot[:body] << br*2 + end + end + def para(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + util=nil + wrapped=if dob_src.indent =~/[1-9]/ \ + and dob_src.indent == dob_src.hang + s_mark=desc=orig=trans='' + mark=if dob_src.bullet_ + "_#{dob_src.indent}* " + else + "_#{dob_src.indent} " + end + orig="#{mark}#{dob_src.obj}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(orig,trans) + elsif dob_src.hang =~/[0-9]/ \ + and dob_src.indent != dob_src.hang + s_mark=desc=orig=trans='' + mark="_#{dob_src.hang}_#{dob_src.indent} " + orig="#{mark}#{dob_src.obj}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(orig,trans) + else + s_mark=desc=orig=trans='' + if dob_src.bullet_ + mark='_* ' + orig="#{mark}#{dob_src.obj}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + else + mark='' + orig=dob_src.obj + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{mark}#{dob_trn.obj}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + end + util=pot_structure_wrap(orig,trans) + end + wrapped=util.line_wrap + @pot[:body] << wrapped << br # main text, contents, body KEEP + if @@endnotes[:para] \ + and notes_s.length > 0 \ + and not @@endnotes_ + @pot[:body] << br + wrap_endnotes(notes_s,notes_t) + elsif @@endnotes[:para] \ + and @@endnotes_ + @pot[:body] << br*2 + end + end + def block(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark_o ="block{\n\n" + mark_c ="\n\n}block" + orig="#{mark_o}#{dob_src.obj}#{mark_c}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{mark_o}#{dob_trn.obj}#{mark_c}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def group(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark_o ="group{\n\n" + mark_c ="\n\n}group" + orig="#{mark_o}#{dob_src.obj}#{mark_c}" + trans=((dob_trn=='') \ + || (dob_src.obj == dob_trn.obj)) \ + ? '' + : "#{mark_o}#{dob_trn.obj}#{mark_c}" + if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \ + and trans.empty? \ + and auto_translate? + trans=auto_translation(dob_src.obj,:src) + end + util=pot_structure_wrap(orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def verse(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem" + instruct=s_mark='' + if @md.opt.act[:maintenance][:set]==:on + instruct=%{\n# verse are part of the text block described as a poem, } \ + + %{the first verse is preceeded by an opening marker, } \ + + %{and the last verse by a closing marker, } \ + + %{the content of which should remain unwrapped} + s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"} + end + orig=dob_src.obj + trans=(dob_trn=='') \ + ? '' + : dob_trn.obj + util=pot_structure_wrap(orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def code(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark_o ="code{\n\n" + mark_c ="\n\n}code" + orig="#{mark_o}#{dob_src.obj}#{mark_c}" + trans=(dob_trn=='') \ + ? '' + : "#{mark_o}#{dob_trn.obj}#{mark_c}" + util=pot_structure_wrap(orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def table(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document + mark_o ="table{\n\n" + mark_c ="\n\n}table" + orig="#{mark_o}#{dob_src.obj}#{mark_c}" + orig=orig.gsub(/#{Mx[:tc_c]}/m,"\n") + trans=(dob_trn=='') \ + ? '' + : "#{mark_o}#{dob_trn.obj}#{mark_c}" + trans=trans.gsub(/#{Mx[:tc_c]}/m,"\n") + util=pot_structure_wrap(orig,trans) + unwrapped=util.no_line_wrap_block + @pot[:body] << unwrapped << br + end + def idx_markup(idx) + struct=['={' + "\n "] + idx.sort.each do |x| + x.each_with_index do |y,i0| + case y + when String + unless struct[-1] =~/=\{/ + struct << ' ;' + "\n " + end + struct << y + if x[i0+1].class == Hash \ + and x[i0+1][:sub].length > 0 + struct << ' :' + "\n " + end + when Hash + if y[:plus].to_i > 0 + struct << '+' + y[:plus].to_s + end + if y[:sub].length > 0 + y[:sub].each_with_index do |z,i1| + z.each_with_index do |a,i2| + if z.length > 0 + struct << a[0] + if a[1][:plus].to_i > 0 + struct << '+' + a[1][:plus].to_s + end + if (i1 + 1) < y[:sub].length + struct << '|' + end + end + end + end + end + end + end + end + struct << "\n" + '}' + #puts struct.join + struct.join + end + def idx(dob_src='') #% used for book index but broken as original markup lost, already abstracted, fix + orig=pot_structure.idx_markup(dob_src.idx) #'={' + dob_src.idx + '}' + util=pot_structure_wrap(orig,'') + unwrapped=util.no_line_wrap_block + if @pot[:body][-1] == "\n" + @pot[:body][-1] = unwrapped #<< br + @pot[:body] << br + else # expect to catch all above, problem if wraps, must =~/^=\{/ + @pot[:body] << unwrapped << br # places idx in separate object + end + end + self + end + def compare_structure_src_trn(data_src,data_trn,todo) + #@endnotes,@copen,@pot_contents_close=Array.new(3){[]} + a_l= data_src.length + s,t=0,0 + 0.upto(a_l-1) do |i| + if todo==:compare + unless data_src[s] \ + and data_trn[t] + break + end + if data_src[s].of == :comment \ + and data_trn[t].of == :comment \ + and (data_src[s].is == data_trn[t].is) + s+=1;t+=1 + next + end + if ((data_src[s].is == :comment) \ + || (data_trn[t].is == :comment)) \ + and (data_src[s].is != data_trn[t].is) + if data_src[s].is == :comment + if @md.opt.act[:maintenance][:set]==:on + puts "src (comment):\n\t" \ + + data_src[s].obj + end + s+=1 + #next if data_src[s].is == :comment + elsif data_trn[t].is == :comment + if @md.opt.act[:maintenance][:set]==:on + puts "trans (comment):\n\t" \ + + data_trn[t].obj + end + t+=1 + #next if data_trn[t].is == :comment + end + end + if ((defined? data_src[s].ocn) \ + && (data_src[s].ocn.is_a?(Fixnum))) \ + and ((defined? data_trn[t].ocn) \ + && (data_trn[t].ocn.is_a?(Fixnum))) \ + and (data_src[s].ocn == data_trn[t].ocn) + @m_s,@m_t=s,t + elsif ((defined? data_src[s].ocn) \ + && (data_src[s].ocn.is_a?(Fixnum))) \ + and ((defined? data_trn[t].ocn) \ + && (data_trn[t].ocn.is_a?(Fixnum))) \ + and (data_src[s].ocn != data_trn[t].ocn) + p '--- OCN ---' + p 'mis-match' + p data_src[s].ocn if defined? data_src[s].ocn + p data_src[s].obj if defined? data_src[s].obj + p data_trn[t].ocn if defined? data_trn[t].ocn + p data_trn[t].obj if defined? data_trn[t].obj + p '---' + p 'previous match' + p data_src[@m_s].ocn if defined? data_src[@m_s].ocn + p data_src[@m_s].obj if defined? data_src[@m_s].obj + p data_trn[@m_t].ocn if defined? data_trn[@m_t].ocn + p data_trn[@m_t].obj if defined? data_trn[@m_s].obj + exit + elsif (((defined? data_src[s].ocn) \ + && (defined? data_trn[t].ocn)) \ + and data_src[s].ocn.class != data_trn[t].ocn.class) + p '--- OCN class ---' + p 'mis-match' + p data_src[s].ocn if defined? data_src[s].ocn + p data_src[s].obj if defined? data_src[s].obj + p data_trn[t].ocn if defined? data_trn[t].ocn + p data_trn[t].obj if defined? data_trn[t].obj + #p '---' + #p 'previous match' + #p data_src[@m_s].ocn + #p data_src[@m_s].obj + #p data_trn[@m_t].ocn + #p data_trn[@m_t].obj + #elsif (defined? data_src[s].ocn != defined? data_trn[t].ocn) \ + #and (data_src[s].ocn.nil? != data_trn[t].ocn.nil?) + # p '--- missing OCN? ---' + # p 'mis-match' + # p data_src[s].ocn if defined? data_src[s].ocn + # p data_src[s].obj + # p data_trn[t].ocn if defined? data_trn[t].ocn + # p data_trn[t].obj + else + end + end + notes_s='' + data_src[s],notes_s=markup(data_src[s]) + data_src[s],nul=pot_data(data_src[s],notes_s) + s+=1;t+=1 + end + @pot #watch + end + def pot_data(dob_src='',notes_s) + if dob_src.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ + if defined? dob_src.ocn \ + and dob_src.ocn.to_s =~/\d+/ + paranum=dob_src.ocn.to_s + @p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum) + end + case dob_src.is + when :heading + pot_structure.heading(dob_src,notes_s) + when :para + pot_structure.para(dob_src,notes_s) + when :group + pot_structure.group(dob_src,notes_s) + when :block + pot_structure.block(dob_src,notes_s) + when :verse + pot_structure.verse(dob_src,notes_s) + when :code + pot_structure.code(dob_src,notes_s) + when :table + pot_structure.table(dob_src,notes_s) + end + if defined? dob_src.idx \ + and not dob_src.idx.nil? \ + and not dob_src.idx.empty? + pot_structure.idx(dob_src) + end + #if dob_src ## Clean Prepared Text + # dob_src.obj=dob_src.obj.gsub(//,' '). + # gsub(/<:\S+>/,' ') if dob_src ## Clean Prepared Text + #end + end + #[dob_src,dob_trn] + end + def markup(dob) + dob,notes=objects.textface_marks_po4a(dob,:separate) + [dob,notes] + end + def publish(fn,pot) + content=[] + content << pot[:open] + content << pot[:head] + content << pot[:metadata] + content << pot[:body] + content << @@endnotes[:end] if @@endnotes_ + Output.new(fn,content,@md,@process).po4a + @@endnotes={ para: [], end: [] } + end + end + class Output 0 + para.each do |line| + if line + line=line.gsub(/\s+$/m,''). + gsub(/^\A[ ]*\Z/m,'') + if line=~/^\A[ ]*\Z/m + emptyline+=1 + else emptyline=0 + end + file_pot.puts line if emptyline < 2 #remove extra line spaces (fix upstream) + end + end + else file_pot.puts para #unix plaintext # /^([*=-]|\.){5}/ + end + end + file_pot.close + SiSU_Po4aUtils::PotNumber.new.reset + #po4a_git + end + def po4a_git + unless @md.opt.act[:maintenance][:set]==:on + require_relative 'git' # git.rb + git=SiSU_Git::Source.new(@md.opt,@process) + unless FileTest.directory?(@file.output_path.pot_git.dir) + git.create_file_structure_git + end + if @md.opt.f_pth[:lng] == @md.opt.lng_base + FileUtils::cp( + @file.place_file.pot.dir, + @file.output_path.pot_git.dir + ) + else # naive, work on --> + FileUtils::cp( + @file.place_file.po.dir, + @file.output_path.po_git.dir + ) #unless FileTest.file?(@file.place_file.po_git.dir) + end + git.read + end + end + end + end +end +__END__ +REMOVE +!\|#\|&*\|-\|/\|_\|{\|}\|~\|&# + +tables are problematic, difficult to reconstitute instruction, check + +metadata, move to top? and work on + +footnotes, different types, asterisk, also do you want to have separate +paragraphs, or breaks within one block? + +where no ocn appropriately use ~# or -# or indeed 1~name- + +comments in document, what to do about them, not sure they are currently +retained in dal, could be quite valuable to keep + +Translate Shell +http://www.soimort.org/translate-shell/ +translate.google.com diff --git a/lib/sisu/current/src_po4a_sst_ao_sst_set.rb b/lib/sisu/current/src_po4a_sst_ao_sst_set.rb new file mode 100644 index 00000000..637ed386 --- /dev/null +++ b/lib/sisu/current/src_po4a_sst_ao_sst_set.rb @@ -0,0 +1,284 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** po4a + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Po4aUtils + class Wrap + def initialize(md,orig='',trans='',n_char_max=76,n_indent=0,n_hang=nil) + @md,@orig,@trans,@n_char_max,@n_indent= + md, orig, trans, n_char_max, n_indent + @n_char_max_extend = n_char_max + @br="\n" + @n_hang=n_hang ? n_hang : @n_indent + @po4a_identify_type='type: SiSU doc' + #@po4a_identify_type='type: Plain text' + end + def line_wrap + space=' ' + spaces_indent,spaces_hang= + "#{@br}#{space*@n_indent}",space*@n_hang + pot,i=[],0 + pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans] + pot_array.each do |pa| + line=0 + out=[] + out[line]='' + @oldword='' #REMOVE @oldword + pa=pa.gsub(/
/,'
'). + gsub(/#{Mx[:br_nl]}/,"\n\n") + words=pa.scan(/\n\n|\\\\\\|
|\S+/m) + while words != '' + word=words.shift + if not word + out[line] unless out[line].empty? #check + break + elsif word =~/\n\n/ + word="\n" + @n_char_max_extend = @n_char_max + out[line].length + line=line + elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \ + and out[line] =~/\S+/ + @n_char_max_extend = @n_char_max + out[line].squeeze!(' ') + line += 1 + end + if word + out[line]=if out[line] \ + and out[line] !~/\S+$/m + "#{out[line]}#{word}" + elsif out[line] \ + and out[line] =~/\S+/ + "#{out[line]} #{word}" + else "#{word.strip}" + end + end + @oldword=word if word =~/\S+/ + end + x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang) + z=[] + x.split(/\n/).each do |y| + z << y + end + pot[i]=z.join("\n") + i +=1 + pot + end + trans=(pot.length == 2) ? pot[1] : '' + po_str=<dc_content}] + else nil + end + end + def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825 + @tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib + def label #element + @tag + end + def type + @type + end + def text + @tag_content + end + def info #element text + @tag_content + end + def attribute + @attrib + end + def element + @tag + end + def attrib + @attrib + end + def el + @tag + end + self + end + def start_is_match + case @p + when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,@md.title.full,'meta','dc') #dc 1 + when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/ then header('creator',$2,'meta','dc') #dc 2 + when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 3 + when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 4 + when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 5 + when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 6 + when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 7 + when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 8 + when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 9 + when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 10 + when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 11 + when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 12 + when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 13 + when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 14 + when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 15 + when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('translator',$2) + when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('illustrator',$2) + when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_loc',$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_dewey',$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_pg',$2,'meta','extra') + when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_isbn',$2,'meta','extra') + when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/ then header('structure',$2,'process','instruct') + when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/ then header('markup',$2,'process','instruct') + when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/ then header('italicize',$2,'process','instruct') + when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/ then header('vocabulary',$2,'process','instruct') + when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/ then header('css',$2,'process','instruct') + when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') #add a & b + when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') + when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/ then header('version',$2,'process','instruct') + else nil + end + end + def dublin + (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \ + ? start_is_match + : nil + end + def meta + (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \ + ? start_is_match + : nil + end + end + class ParagraphNumber + def initialize(paranum) + @paranum=/(\d+)/m.match(paranum)[1] + end + def display + @paranum.gsub(/(\d+)/,'#\1') + end + end + class PotNumber + @@n=0 + def initialize + @@n +=2 + end + def num + @@n + end + def reset + @@n=0 + end + end +end +__END__ diff --git a/lib/sisu/current/src_po4a_sstm.rb b/lib/sisu/current/src_po4a_sstm.rb new file mode 100644 index 00000000..b6255749 --- /dev/null +++ b/lib/sisu/current/src_po4a_sstm.rb @@ -0,0 +1,135 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** share sisu source markup file, copy it to output directory! + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Markup + require_relative 'src_shared' # src_shared.rb + include SiSU_Source + require_relative 'src_po4a_share' # src_po4a_share.rb + require_relative 'se' # se.rb + include SiSU_Env + class Source_Po4a < SiSU_Source::SiSUpodSource + def initialize(opt,build=nil,place=nil) + super(opt,build,place) + @opt=opt + md=SiSU_Param::Parameters.new(opt).get + @file=SiSU_Env::FileOp.new(md,opt.fno) + end + def dir_mk(dir) + unless FileTest.directory?(dir) + FileUtils::mkdir_p(dir) + end + end + def make_paths + dir_mk(@file.output_path.pot.dir) + dir_mk(@file.output_path.po.dir) + end + def language + def source_language_selected_str + @opt.act[:po4a_lang][:src] \ + ? @opt.act[:po4a_lang][:src] + : 'en' + end + self + end + def read + unless @opt.act[:quiet][:set]==:on + (@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], + 'Share document markup text source', + @opt.fns + ).cyan_hi_blue + : SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + 'Share document markup text source', + @opt.fns + ).cyan_title_hi + end + make_paths + if FileTest.directory?(@path_pod[:fnb]) + FileUtils::mkdir_p(@file.output_path.src.dir) \ + unless FileTest.directory?(@file.output_path.src.dir) + v=(@opt.act[:maintenance][:set]==:on) \ + ? 'v' : '' + system(%{ + #rsync -a#{v} #{@path_pod[:fnb]}/sisupod/doc/* #{@file.output_path.po4a.dir} + rsync -a#{v} #{@path_pod[:fnb]}/sisupod/doc/#{language.source_language_selected_str}* #{@file.output_path.po4a.dir} + chbk=`pwd` + cd #{@file.output_path.sisupod.dir} + for I in `find -type d` ; do chmod 755 $I ; done + for I in `find -type f` ; do chmod 644 $I ; done + cd ${chbk} + }) + md=SiSU_Param::Parameters.new(@opt).get + file=SiSU_Env::FileOp.new(md) + SiSU_Po4a_Project::Po4aCfg.new(@opt,file).song + SiSU_Po4a_Project::Po4aProject.new(@opt,file).song + else + if (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new( + '', + "#{@opt.fno} not available" + ).blue_tab + end + end + end + end +end +__END__ diff --git a/lib/sisu/current/src_share.rb b/lib/sisu/current/src_share.rb deleted file mode 100644 index 7d3564f2..00000000 --- a/lib/sisu/current/src_share.rb +++ /dev/null @@ -1,109 +0,0 @@ -# encoding: utf-8 -=begin - -* Name: SiSU - -** Description: documents, structuring, processing, publishing, search -*** share sisu source markup file, copy it to output directory! - -** Author: Ralph Amissah - - - -** 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 . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - -** SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - -** Hompages: - - - -** Git - - - -=end -module SiSU_Markup - require_relative 'src_shared' # src_shared.rb - include SiSU_Source - require_relative 'se' # se.rb - include SiSU_Env - class Source < SiSU_Source::SiSUpodSource - def initialize(opt,build=nil,place=nil) - super(opt,build,place) - @opt=opt - end - def read - unless @opt.act[:quiet][:set]==:on - (@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], - 'Share document markup text source', - @opt.fns - ).cyan_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Share document markup text source', - @opt.fns - ).cyan_title_hi - end - if FileTest.directory?(@path_pod[:fnb]) - FileUtils::mkdir_p(@file.output_path.src.dir) \ - unless FileTest.directory?(@file.output_path.src.dir) - v=(@opt.act[:maintenance][:set]==:on) \ - ? 'v' : '' - system(%{ - rsync -a#{v} #{@path_pod[:fnb]} #{@file.output_path.sisupod.dir} - chbk=`pwd` - cd #{@file.output_path.sisupod.dir} - for I in `find -type d` ; do chmod 755 $I ; done - for I in `find -type f` ; do chmod 644 $I ; done - cd ${chbk} - }) - else - if (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - '', - "#{@opt.fno} not available" - ).blue_tab - end - end - end - end -end -__END__ diff --git a/lib/sisu/current/src_shared.rb b/lib/sisu/current/src_shared.rb index a6c41c22..05d22da3 100644 --- a/lib/sisu/current/src_shared.rb +++ b/lib/sisu/current/src_shared.rb @@ -59,11 +59,13 @@ module SiSU_Source class SiSUpodSource require_relative 'se' # se.rb require_relative 'se_hub_particulars' # se_hub_particulars.rb + require_relative 'utils_composite' # utils_composite.rb + include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test def initialize(opt,build=nil,place=nil) @opt=opt @date=SiSU_Env::InfoDate.new.dt @env=SiSU_Env::InfoEnv.new(opt.fns) - @ver=SiSU_Env::InfoVersion.instance.get_version + #@ver=SiSU_Env::InfoVersion.instance.get_version @v=(@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) \ ? 'v' : '' @@ -74,7 +76,6 @@ module SiSU_Source processing_sisupod.make path_pod=processing_sisupod.paths[:sisupod] path_pod_fnb=processing_sisupod.paths[:fnb] - @doc_import_list=[] FileUtils::mkdir_p(path_pod) unless FileTest.directory?(path_pod) @path_pod={ fnb: path_pod_fnb, @@ -102,8 +103,7 @@ module SiSU_Source end unless @opt.fns.empty? directories - file_array=IO.readlines(@opt.fno,'') - doc_import_list=pod_source_build(file_array) #this needs to be built in case of multi-lingual for all of them, before single pass tar + doc_import_list=composite_and_imported_filenames_array(@opt.fno) doc_import_list=[@opt.fno, doc_import_list].flatten image_extraction(doc_import_list) language_versions @@ -165,25 +165,37 @@ module SiSU_Source images=images.uniq images.each do |i| if FileTest.file?("#{images_pwd}/#{i}") - FileUtils::cp("#{images_pwd}/#{i}","#{@path_pod[:image]}/#{i}") + FileUtils::cp( + "#{images_pwd}/#{i}", + "#{@path_pod[:image]}/#{i}" + ) else STDERR.puts \ - %{\t*WARN* did not find image - "#{images_pwd}/#{i}" [#{__FILE__}:#{__LINE__}]} + %{\t*WARN* did not find image - } \ + + %{"#{images_pwd}/#{i}" } \ + + %{[#{__FILE__}:#{__LINE__}]} end end else STDERR.puts \ - %{\t*WARN* did not find - #{images_pwd} #{@path_pod[:image]} [#{__FILE__}:#{__LINE__}]} + %{\t*WARN* did not find - } \ + + %{#{images_pwd} #{@path_pod[:image]} } \ + + %{[#{__FILE__}:#{__LINE__}]} end end if doc_import_list.length > 0 \ and @opt.fno =~/\.ssm$/ doc_import_list.each do |f| if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f}") - FileUtils::cp("#{@opt.base_path}#{doc_import_dir}/#{f}","#{@path_pod[:doc]}/#{f}") + FileUtils::cp( + "#{@opt.base_path}#{doc_import_dir}/#{f}", + "#{@path_pod[:doc]}/#{f}" + ) else STDERR.puts \ - %{\t*WARN* did not find image - "#{@opt.base_path}#{doc_import_dir}/#{f}" [#{__FILE__}:#{__LINE__}]} + %{\t*WARN* did not find image - } \ + + %{"#{@opt.base_path}#{doc_import_dir}/#{f}" } \ + + %{[#{__FILE__}:#{__LINE__}]} end end end @@ -194,17 +206,22 @@ module SiSU_Source if x[:f] \ and x[:f].length > 0 #store multiple document language versions, sisupod x[:f].each do |f| - FileUtils::mkdir_p(@path_pod[:doc]) unless FileTest.directory?(@path_pod[:doc]) + FileUtils::mkdir_p(@path_pod[:doc]) \ + unless FileTest.directory?(@path_pod[:doc]) if f[:f] =~/\~(\S{2,3})\.ss[tm]$/ lng_f=$1 if @opt.lng == lng_f if @opt.fno =~/\.ssm$/ if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}") - FileUtils::cp("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}", - "#{@path_pod[:doc]}/#{f[:n]}") + FileUtils::cp( + "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}", + "#{@path_pod[:doc]}/#{f[:n]}" + ) else STDERR.puts \ - %{\t*WARN* did not find - "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" [#{__FILE__}:#{__LINE__}]} + %{\t*WARN* did not find - } \ + + %{"#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" } \ + + %{[#{__FILE__}:#{__LINE__}]} end else if FileTest.file?("#{@opt.base_path}/#{f[:f]}") @@ -218,23 +235,31 @@ module SiSU_Source else :no end if cpy == :yes - FileUtils::cp("#{@opt.base_path}/#{f[:f]}", - "#{@path_pod[:doc]}/#{f[:n]}") + FileUtils::cp( + "#{@opt.base_path}/#{f[:f]}", + "#{@path_pod[:doc]}/#{f[:n]}" + ) end else STDERR.puts \ - %{\t*WARN* did not find - "#{@opt.base_path}/#{f[:f]}" [#{__FILE__}:#{__LINE__}]} + %{\t*WARN* did not find - } \ + + %{"#{@opt.base_path}/#{f[:f]}" } \ + + %{[#{__FILE__}:#{__LINE__}]} end end end else if @opt.fno =~/\.ssm$/ if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}") - FileUtils::cp_r("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}", - "#{@path_pod[:doc]}/#{f[:n]}") + FileUtils::cp_r( + "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}", + "#{@path_pod[:doc]}/#{f[:n]}" + ) else STDERR.puts \ - %{\t*WARN* did not find - "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" [#{__FILE__}:#{__LINE__}]} + %{\t*WARN* did not find - } \ + + %{"#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" } \ + + %{[#{__FILE__}:#{__LINE__}]} end else if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}") @@ -248,12 +273,16 @@ module SiSU_Source else :no end if cpy == :yes - FileUtils::cp("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}", - "#{@path_pod[:doc]}/#{f[:n]}") + FileUtils::cp( + "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}", + "#{@path_pod[:doc]}/#{f[:n]}" + ) end else STDERR.puts \ - %{\t*WARN* did not find - "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" [#{__FILE__}:#{__LINE__}]} + %{\t*WARN* did not find - } \ + + %{"#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" } \ + + %{[#{__FILE__}:#{__LINE__}]} end end end @@ -263,35 +292,6 @@ module SiSU_Source def directories SiSU_Env::InfoEnv.new.sisupod_v4(@opt) end - def ssm_doc_import_list(f) - if @opt.fno =~/\.ss[mi]$/ - doc_import_list=[] - if f =~@rgx_doc_import - doc_import_list << f.scan(@rgx_doc_import) - end - doc_import_list.flatten.each do |i| - if i =~/.ssi/ - file_array=IO.readlines(i,'') - pod_source_build(file_array) - end - end - end - doc_import_list.uniq.flatten - end - def pod_source_build(file_array) - @pwd=Dir.pwd - @rgx_doc_import=/^<<\s*(\S+?\.ss[ti])/ - doc_import_list=[] - file_array.each do |f| #% work area - if f !~/^%+\s/ - if @opt.fno =~/\.ss[mi]$/ - @doc_import_list << ssm_doc_import_list(f) - doc_import_list=@doc_import_list.flatten.uniq - end - end - end - doc_import_list - end end end __END__ diff --git a/lib/sisu/current/src_sisupod_sstm.rb b/lib/sisu/current/src_sisupod_sstm.rb new file mode 100644 index 00000000..48aefc6e --- /dev/null +++ b/lib/sisu/current/src_sisupod_sstm.rb @@ -0,0 +1,109 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** share sisu source markup file, copy it to output directory! + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Markup + require_relative 'src_shared' # src_shared.rb + include SiSU_Source + require_relative 'se' # se.rb + include SiSU_Env + class Source_Sisupod < SiSU_Source::SiSUpodSource + def initialize(opt,build=nil,place=nil) + super(opt,build,place) + @opt=opt + end + def read + unless @opt.act[:quiet][:set]==:on + (@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], + 'Share document markup text source', + @opt.fns + ).cyan_hi_blue + : SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + 'Share document markup text source', + @opt.fns + ).cyan_title_hi + end + if FileTest.directory?(@path_pod[:fnb]) + FileUtils::mkdir_p(@file.output_path.src.dir) \ + unless FileTest.directory?(@file.output_path.src.dir) + v=(@opt.act[:maintenance][:set]==:on) \ + ? 'v' : '' + system(%{ + rsync -a#{v} #{@path_pod[:fnb]} #{@file.output_path.sisupod.dir} + chbk=`pwd` + cd #{@file.output_path.sisupod.dir} + for I in `find -type d` ; do chmod 755 $I ; done + for I in `find -type f` ; do chmod 644 $I ; done + cd ${chbk} + }) + else + if (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new( + '', + "#{@opt.fno} not available" + ).blue_tab + end + end + end + end +end +__END__ diff --git a/lib/sisu/current/sst_convert_markup.rb b/lib/sisu/current/sst_convert_markup.rb index 447514f4..3b81cf29 100644 --- a/lib/sisu/current/sst_convert_markup.rb +++ b/lib/sisu/current/sst_convert_markup.rb @@ -61,11 +61,10 @@ module SiSU_Modify require_relative 'sst_from_xml' # sst_from_xml.rb require_relative 'utils_response' # utils_response.rb class ConvertMarkup + include SiSU_Response def initialize(opt) @opt=opt @description='This is a script that contains canned text conversions for reuse' - @response=SiSU_Response::Response.new - @ask=SiSU_Response::Response.new @warn='WARNING, PROCEED AT YOUR OWN RISK, will make file changes.' end def current_match_and_replace @@ -75,7 +74,7 @@ module SiSU_Modify response='' unless @opt.cmd=~/QQ/ \ or @opt.act[:quiet][:set]==:on - response=@ask.response?(%{#{ text}\nProceed? }) + response=response?(%{#{ text}\nProceed? }) end end def help diff --git a/lib/sisu/current/sst_from_xml.rb b/lib/sisu/current/sst_from_xml.rb index 3b253775..8c2a9dab 100644 --- a/lib/sisu/current/sst_from_xml.rb +++ b/lib/sisu/current/sst_from_xml.rb @@ -116,7 +116,7 @@ module SiSU_sstFromXML out_file=File.new(@output_file_name,'w') head=@doc.root.get_elements('//head/header') body=@doc.root.get_elements('//object/text') - out_file.puts "% SiSU text #{@ver[:version]} (generated from a SiSU XML markup representation)\n\n" + out_file.puts "% SiSU text #{@ver.version} (generated from a SiSU XML markup representation)\n\n" head.each do |x| if x.name=='header' head=markup_head(x.to_s) diff --git a/lib/sisu/current/sst_to_s_xml_sax.rb b/lib/sisu/current/sst_to_s_xml_sax.rb index f82f44b6..9805133f 100644 --- a/lib/sisu/current/sst_to_s_xml_sax.rb +++ b/lib/sisu/current/sst_to_s_xml_sax.rb @@ -69,7 +69,7 @@ module SiSU_SimpleXML_ModelSax include SiSU_XML_Format require_relative 'rexml' # rexml.rb include SiSU_Rexml - @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0 + @@alt_id_count=0 @@tablefoot='' class Convert @@fns=nil diff --git a/lib/sisu/current/texinfo_format.rb b/lib/sisu/current/texinfo_format.rb index c03e2ec7..7695a31b 100644 --- a/lib/sisu/current/texinfo_format.rb +++ b/lib/sisu/current/texinfo_format.rb @@ -90,7 +90,7 @@ module SiSU_TexInfoFormat author=@md.author if @md.author author ||='' author=author.gsub(/[\*]/,'') #if author - SiSU_Env::InfoVersion.instance.get_version + #SiSU_Env::InfoVersion.instance.get_version head =< - + =end module SiSU_Txt_AsciiDoc @@ -60,11 +60,15 @@ module SiSU_Txt_AsciiDoc include SiSU_Env require_relative 'shared_metadata' # shared_metadata.rb require_relative 'generic_parts' # generic_parts.rb + require_relative 'txt_read' # txt_read.rb require_relative 'txt_shared' # txt_shared.rb + require_relative 'txt_asciidoc_decorate' # txt_decorate.rb + require_relative 'txt_output' # txt_output.rb include SiSU_Param - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@alt_id_count,@@alt_id_count=0,0 @@tablefoot='' class Source + include SiSU_Txt_Read def initialize(opt) @opt=opt unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ @@ -74,46 +78,13 @@ module SiSU_Txt_AsciiDoc def read begin md=SiSU_Param::Parameters.new(@opt).get - env=SiSU_Env::InfoEnv.new(@opt.fns) - unless @opt.act[:quiet][:set]==:on - tool=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? "#{env.program.text_editor} #{md.file.output_path.asciidoc.dir}/#{md.file.base_filename.asciidoc}" - : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" - (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'AsciiDoc (plaintext utf-8)', - tool - ).green_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'AsciiDoc (plaintext utf-8)', - tool - ).green_title_hi - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - @opt.fns, - "#{md.file.output_path.asciidoc.dir}/#{md.file.base_filename.asciidoc}" - ).flow - end - end - ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here - wrap_width=if defined? md.make.plaintext_wrap \ - and md.make.plaintext_wrap - md.make.plaintext_wrap - elsif defined? env.plaintext_wrap \ - and env.plaintext_wrap - env.plaintext_wrap - else 78 - end - #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 - SiSU_Txt_AsciiDoc::Source::Scroll.new(md,ao_array,wrap_width).songsheet + specific={ + description: 'AsciiDoc (plaintext utf-8)', + output_path: md.file.output_path.asciidoc.dir, + output_file: md.file.base_filename.asciidoc, + } + read_generic(@opt,specific) + SiSU_Txt_AsciiDoc::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -125,6 +96,7 @@ module SiSU_Txt_AsciiDoc class Scroll 0 - para.each do |line| - if line - line=line.gsub(/[ \t]+$/m,''). - gsub(/^\A[ ]*\Z/m,'') - (line=~/^\A\Z/) \ - ? (emptyline+=1) - : emptyline=0 - if emptyline < 2 #remove additional empty lines - file_plaintext.puts line - end - end - end - else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ - end - end - file_plaintext.close - end - end end end __END__ diff --git a/lib/sisu/current/txt_asciidoc_decorate.rb b/lib/sisu/current/txt_asciidoc_decorate.rb new file mode 100644 index 00000000..faa5b91d --- /dev/null +++ b/lib/sisu/current/txt_asciidoc_decorate.rb @@ -0,0 +1,207 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext decoration + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end + +module SiSU_Decorate_Txt_AsciiDoc + def decorate + def heading + def inline + def l0 + '=' + end + def l1 + '==' + end + def l2 + '===' + end + def l3 + '====' + end + def l4 + '=====' + end + def l5 + '' #'======' #logical + end + self + end + def underscore + def l0 + '=' + end + def l1 + '-' + end + def l2 + '~' + end + def l3 + '^' + end + def l4 + '+' + end + def l5 + '.' #'.' #proposed + end + self + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '_' + end + def close + '_' + end + self + end + def underscore + def open + '' + end + def close + '' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '' + end + def close + '' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '~' + end + def close + '~' + end + self + end + def hilite #bold + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '+' + end + def close + '+' + end + self + end + self + end +end +__END__ diff --git a/lib/sisu/current/txt_markdown.rb b/lib/sisu/current/txt_markdown.rb index 1ec2bdf2..497cf5b5 100644 --- a/lib/sisu/current/txt_markdown.rb +++ b/lib/sisu/current/txt_markdown.rb @@ -51,7 +51,7 @@ ** Git - + =end module SiSU_Txt_Markdown @@ -60,11 +60,15 @@ module SiSU_Txt_Markdown include SiSU_Env require_relative 'shared_metadata' # shared_metadata.rb require_relative 'generic_parts' # generic_parts.rb + require_relative 'txt_read' # txt_read.rb require_relative 'txt_shared' # txt_shared.rb + require_relative 'txt_markdown_decorate' # txt_markdown_decorate.rb + require_relative 'txt_output' # txt_output.rb include SiSU_Param - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@alt_id_count,@@alt_id_count=0,0 @@tablefoot='' class Source + include SiSU_Txt_Read def initialize(opt) @opt=opt unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ @@ -74,45 +78,13 @@ module SiSU_Txt_Markdown def read begin md=SiSU_Param::Parameters.new(@opt).get - env=SiSU_Env::InfoEnv.new(@opt.fns) - unless @opt.act[:quiet][:set]==:on - tool=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? "#{env.program.text_editor} #{md.file.output_path.markdown.dir}/#{md.file.base_filename.markdown}" - : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" - (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Markdown (plaintext utf-8)', - tool - ).green_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Markdown (plaintext utf-8)', - tool - ).green_title_hi - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - @opt.fns,"#{md.file.output_path.markdown.dir}/#{md.file.base_filename.markdown}" - ).flow - end - end - ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here - wrap_width=if defined? md.make.plaintext_wrap \ - and md.make.plaintext_wrap - md.make.plaintext_wrap - elsif defined? env.plaintext_wrap \ - and env.plaintext_wrap - env.plaintext_wrap - else 78 - end - #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 - SiSU_Txt_Markdown::Source::Scroll.new(md,ao_array,wrap_width).songsheet + specific={ + description: 'Markdown (plaintext utf-8)', + output_path: md.file.output_path.markdown.dir, + output_file: md.file.base_filename.markdown, + } + read_generic(@opt,specific) + SiSU_Txt_Markdown::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -124,6 +96,7 @@ module SiSU_Txt_Markdown class Scroll 0 - para.each do |line| - if line - line=line.gsub(/[ \t]+$/m,''). - gsub(/^\A[ ]*\Z/m,'') - (line=~/^\A\Z/) \ - ? (emptyline+=1) - : emptyline=0 - if emptyline < 2 #remove additional empty lines - file_plaintext.puts line - end - end - end - else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ - end - end - file_plaintext.close - end - end end end __END__ diff --git a/lib/sisu/current/txt_markdown_decorate.rb b/lib/sisu/current/txt_markdown_decorate.rb new file mode 100644 index 00000000..09026231 --- /dev/null +++ b/lib/sisu/current/txt_markdown_decorate.rb @@ -0,0 +1,207 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext decoration + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end + +module SiSU_Decorate_Txt_Markdown + def decorate + def heading + def inline #atx + def l0 + '#' + end + def l1 + '##' + end + def l2 + '###' + end + def l3 + '####' + end + def l4 + '#####' + end + def l5 + '######' + end + self + end + def underscore #Setext + def l1 + '=' + end + def l2 + '-' + end + def l3 + '' + end + def l4 + '' + end + def l5 + '' + end + def l6 + '' + end + self + end + self + end + def bold + def open + '**' + end + def close + '**' + end + self + end + def italics + def open + '*' + end + def close + '*' + end + self + end + def underscore + def open + '_' + end + def close + '_' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '+' + end + def close + '+' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '[' + end + def close + ']' + end + self + end + def hilite + def open + '**' + end + def close + '**' + end + self + end + def monospace + def open + '`' + end + def close + '`' + end + self + end + self + end +end +__END__ diff --git a/lib/sisu/current/txt_orgmode.rb b/lib/sisu/current/txt_orgmode.rb new file mode 100644 index 00000000..720c9f6b --- /dev/null +++ b/lib/sisu/current/txt_orgmode.rb @@ -0,0 +1,376 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext (smarttext) generation, orgmode structure + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Txt_OrgMode + require_relative 'ao' # ao.rb + require_relative 'se' # se.rb + include SiSU_Env + require_relative 'shared_metadata' # shared_metadata.rb + require_relative 'generic_parts' # generic_parts.rb + require_relative 'txt_read' # txt_read.rb + require_relative 'txt_shared' # txt_shared.rb + require_relative 'txt_orgmode_decorate' # txt_orgmode_decorate.rb + require_relative 'txt_output' # txt_output.rb + include SiSU_Param + @@alt_id_count,@@alt_id_count=0,0 + @@tablefoot='' + class Source + include SiSU_Txt_Read + def initialize(opt) + @opt=opt + unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ + puts "#{sf} not a processed file type" + end + end + def read + begin + md=SiSU_Param::Parameters.new(@opt).get + specific={ + description: 'OrgMode (plaintext utf-8)', + output_path: md.file.output_path.orgmode.dir, + output_file: md.file.base_filename.orgmode, + } + read_generic(@opt,specific) + SiSU_Txt_OrgMode::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end + private + class Scroll appropriately within plaintext, consider + n=n.dup.to_s + if n =~/#{Mx[:br_line]}|#{Mx[:br_nl]}/ + fix = n.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/) #watch #added + fix.each do |x| + unless x.empty? then @n << x + end + end + else @n << n + end + end + notes=@n.flatten + notes.each do |e| + util=(e.to_s =~/^\[[\d*+]+\]:/) \ + ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1)) + : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,1,1)) + wrap=util.line_wrap + wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m + wrap.gsub(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<-GSUB +\\1[\\2]: \\3 + GSUB + ) + else + wrap.gsub(/^(.+)\Z/m, <<-GSUB +\\1 + GSUB + ) + end + @@endnotes[:para] << "-#{wrap}" + @@endnotes[:end] << '' << wrap + end + @@endnotes + end + # Used for extraction of endnotes from paragraphs + def plaintext_metadata + array=SiSU_Metadata::Summary.new(@md).plaintext.metadata + array.each do |meta| + tag,inf=meta.scan(/^.+?:\s|.+/) + if tag and inf + util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1) + txt=util.line_wrap + @plaintext[:metadata] <<<]'). + gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]'). + gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{the_text.url_open}\\1#{the_text.url_close}") + extract_endnotes(dob) + dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up + gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<'). + gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>'). + gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). + gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!'). + gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#'). + gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*'). + gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-'). + gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/'). + gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_'). + gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{'). + gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}'). + gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~'). + gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'ยฉ'). + gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\') + end + dob.obj=if dob.of==:block # watch + dob.obj.gsub(/#{Mx[:gl_o]}โ—#{Mx[:gl_c]}/m,"* "). + gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line) + else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2) + end + if dob.is==:code + dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _< + gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_< + end + dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). + gsub(/
(.+?)<\/a>/m,'\1'). + gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links + gsub(/ |#{Mx[:nbsp]}/,' '). # decide on + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") + gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]'). + gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') + if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ + p_num='' + #ocn + if dob.is==:heading \ + or dob.is==:para + plaintext_structure(dob,p_num) + elsif dob.is==:group \ + or dob.is==:block \ + or dob.is==:verse \ + or dob.is==:code \ + or dob.is==:table + @plaintext[:body] << dob.obj + p_num << break_line + elsif dob.is==:break + sp=' ' + ln='<' #ln='-' + @plaintext[:body] <<=if dob.obj==Mx[:br_page] \ + or dob.obj==Mx[:br_page_new] \ + or dob.obj==Mx[:br_page_line] + "#{break_line}#{ln*40}#{break_line*2}" + elsif dob.obj ==Mx[:br_obj] + "#{break_line}#{sp*20}* * *#{break_line*2}" + end # following empty line (break_line) missing, fix + end + dob='' if (dob.obj =~// \ + and dob.obj =~/^(-\{{2}~\d+|)/) # -endnote + if dob ## Clean Prepared Text + dob.obj=dob.obj.gsub(//,' '). + gsub(/<:\S+>/,' ') + end + end + end + @plaintext + end + def publish(plaintext) + divider='=' + content=[] + content << plaintext[:open] + content << plaintext[:head] + content << plaintext[:body] + if @@endnotes_ + content << '** Endnotes' << @@endnotes[:end] + end + content << plaintext[:metadata] + content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used? + content << plaintext[:tail] + outputfile=SiSU_Env::FileOp.new(@md).write_file.orgmode + Txt_Output::Output.new.document(content,outputfile) + @@endnotes={ para: [], end: [] } + end + end + end +end +__END__ diff --git a/lib/sisu/current/txt_orgmode_decorate.rb b/lib/sisu/current/txt_orgmode_decorate.rb new file mode 100644 index 00000000..65342475 --- /dev/null +++ b/lib/sisu/current/txt_orgmode_decorate.rb @@ -0,0 +1,186 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext decoration + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end + +module SiSU_Decorate_Txt_OrgMode + def decorate + def heading + def inline + def l0 + '*' + end + def l1 + '**' + end + def l2 + '***' + end + def l3 + '****' + end + def l4 + '*****' + end + def l5 + '******' + end + self + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '/' + end + def close + '/' + end + self + end + def underscore + def open + '' + end + def close + '' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '' + end + def close + '' + end + self + end + def strike + def open + '+' + end + def close + '+' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '~' + end + def close + '~' + end + self + end + def hilite #bold + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '~' + end + def close + '~' + end + self + end + self + end +end +__END__ diff --git a/lib/sisu/current/txt_output.rb b/lib/sisu/current/txt_output.rb new file mode 100644 index 00000000..a025b54d --- /dev/null +++ b/lib/sisu/current/txt_output.rb @@ -0,0 +1,86 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module Txt_Output + class Output + include SiSU_Param + include SiSU_Env + def document(content,outputfile) + emptyline=0 + content.each do |para| # this is a hack + if para.is_a?(Array) \ + and para.length > 0 + para.each do |line| + if line + line=line.gsub(/[ \t]+$/m,''). + gsub(/^\A[ ]*\Z/m,'') + (line=~/^\A\Z/) \ + ? (emptyline+=1) + : emptyline=0 + if emptyline < 2 #remove additional empty lines + outputfile.puts line + end + end + end + else outputfile.puts para #unix plaintext # /^([*=-]|\.){5}/ + end + end + outputfile.close + end + end +end +__END__ + diff --git a/lib/sisu/current/txt_plain.rb b/lib/sisu/current/txt_plain.rb index 0edd6551..5e8ff667 100644 --- a/lib/sisu/current/txt_plain.rb +++ b/lib/sisu/current/txt_plain.rb @@ -51,7 +51,7 @@ ** Git - + =end module SiSU_Txt_Plain @@ -60,11 +60,15 @@ module SiSU_Txt_Plain include SiSU_Env require_relative 'shared_metadata' # shared_metadata.rb require_relative 'generic_parts' # generic_parts.rb + require_relative 'txt_read' # txt_read.rb require_relative 'txt_shared' # txt_shared.rb + require_relative 'txt_plain_decorate' # txt_plain_decorate.rb + require_relative 'txt_output' # txt_output.rb include SiSU_Param - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@alt_id_count,@@alt_id_count=0,0 @@tablefoot='' class Source + include SiSU_Txt_Read def initialize(opt) @opt=opt unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ @@ -74,46 +78,13 @@ module SiSU_Txt_Plain def read begin md=SiSU_Param::Parameters.new(@opt).get - env=SiSU_Env::InfoEnv.new(@opt.fns) - unless @opt.act[:quiet][:set]==:on - tool=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? "#{env.program.text_editor} #{md.file.output_path.txt.dir}/#{md.file.base_filename.txt}" - : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" - (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Plaintext', - tool - ).green_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Plaintext', - tool - ).green_title_hi - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - @opt.fns, - "#{md.file.output_path.txt.dir}/#{md.file.base_filename.txt}" - ).flow - end - end - ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here - wrap_width=if defined? md.make.plaintext_wrap \ - and md.make.plaintext_wrap - md.make.plaintext_wrap - elsif defined? env.plaintext_wrap \ - and env.plaintext_wrap - env.plaintext_wrap - else 78 - end - #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 - SiSU_Txt_Plain::Source::Scroll.new(md,ao_array,wrap_width).songsheet + specific={ + description: 'Plaintext (utf-8)', + output_path: md.file.output_path.txt.dir, + output_file: md.file.base_filename.txt, + } + read_generic(@opt,specific) + SiSU_Txt_Plain::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -125,6 +96,7 @@ module SiSU_Txt_Plain class Scroll 0 - para.each do |line| - if line - line=line.gsub(/[ \t]+$/m,''). - gsub(/^\A[ ]*\Z/m,'') - (line=~/^\A\Z/) \ - ? (emptyline+=1) - : emptyline=0 - if emptyline < 2 #remove additional empty lines - file_plaintext.puts line - end - end - end - else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ - end - end - file_plaintext.close - end - end end end __END__ @@ -585,13 +398,13 @@ __END__ subscript_o: '[', subscript_c: ']', hilite_o: '*', hilite_c: '*', monospace_o: '', monospace_c: '', - po_bold_o: '!{', po_bold_c: '}!', - po_italics_o: '/{', po_italics_c: '}/', - po_underscore_o: '_{', po_underscore_c: '}_', - po_cite_o: '"{', po_cite_c: '}"', - po_insert_o: '+{', po_insert_c: '}+', - po_strike_o: '-{', po_strike_c: '}-', - po_superscript_o: '^{', po_superscript_c: '}^', - po_subscript_o: ',{', po_subscript_c: '},', - po_hilite_o: '*{', po_hilite_c: '}*', - po_monospace_o: '#{', po_monospace_c: '}#', + p_bold_o: '!{', p_bold_c: '}!', + p_italics_o: '/{', p_italics_c: '}/', + p_underscore_o: '_{', p_underscore_c: '}_', + p_cite_o: '"{', p_cite_c: '}"', + p_insert_o: '+{', p_insert_c: '}+', + p_strike_o: '-{', p_strike_c: '}-', + p_superscript_o: '^{', p_superscript_c: '}^', + p_subscript_o: ',{', p_subscript_c: '},', + p_hilite_o: '*{', p_hilite_c: '}*', + p_monospace_o: '#{', p_monospace_c: '}#', diff --git a/lib/sisu/current/txt_plain_decorate.rb b/lib/sisu/current/txt_plain_decorate.rb new file mode 100644 index 00000000..f4ee82ec --- /dev/null +++ b/lib/sisu/current/txt_plain_decorate.rb @@ -0,0 +1,189 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext decoration + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end + +module SiSU_Decorate_Txt_Plain + def decorate + def heading_underscore + def l0 + '=' + end + def l1 + '*' + end + def l2 + '+' + end + def l3 + '~' + end + def l4 + '-' + end + def l5 + '.' + end + def l6 + '.' + end + def l7 + '.' + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '/' + end + def close + '/' + end + self + end + def underscore + def open + '_' + end + def close + '_' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '+' + end + def close + '+' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '[' + end + def close + ']' + end + self + end + def hilite + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '#' + end + def close + '#' + end + self + end + self + end +end +__END__ diff --git a/lib/sisu/current/txt_read.rb b/lib/sisu/current/txt_read.rb new file mode 100644 index 00000000..0e2ce0f7 --- /dev/null +++ b/lib/sisu/current/txt_read.rb @@ -0,0 +1,109 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Txt_Read + require_relative 'se' # se.rb + include SiSU_Env + def read_generic(opt,specific) + begin + env=SiSU_Env::InfoEnv.new(opt.fns) + unless opt.act[:quiet][:set]==:on + tool=(opt.act[:verbose][:set]==:on \ + || opt.act[:verbose_plus][:set]==:on \ + || opt.act[:maintenance][:set]==:on) \ + ? "#{env.program.text_editor} #{specific[:output_path]}/#{specific[:output_file]}" + : "[#{opt.f_pth[:lng_is]}] #{opt.fno}" + (opt.act[:verbose][:set]==:on \ + || opt.act[:verbose_plus][:set]==:on \ + || opt.act[:maintenance][:set]==:on) \ + ? SiSU_Screen::Ansi.new( + opt.act[:color_state][:set], + specific[:description], + tool + ).green_hi_blue + : SiSU_Screen::Ansi.new( + opt.act[:color_state][:set], + specific[:description], + tool + ).green_title_hi + if (opt.act[:verbose_plus][:set]==:on \ + || opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new( + opt.act[:color_state][:set], + opt.fns, + "#{specific[:output_path]}/#{specific[:output_file]}" + ).flow + end + end + @ao_array=SiSU_AO::Source.new(opt).get # ao file drawn here + @wrap_width=if defined? md.make.plaintext_wrap \ + and md.make.plaintext_wrap + md.make.plaintext_wrap + elsif defined? env.plaintext_wrap \ + and env.plaintext_wrap + env.plaintext_wrap + else 78 + end + #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 + rescue + SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end +end + diff --git a/lib/sisu/current/txt_rst.rb b/lib/sisu/current/txt_rst.rb index 238c0bb7..969cb1c9 100644 --- a/lib/sisu/current/txt_rst.rb +++ b/lib/sisu/current/txt_rst.rb @@ -51,7 +51,7 @@ ** Git - + =end module SiSU_Txt_rST @@ -60,11 +60,15 @@ module SiSU_Txt_rST include SiSU_Env require_relative 'shared_metadata' # shared_metadata.rb require_relative 'generic_parts' # generic_parts.rb + require_relative 'txt_read' # txt_read.rb require_relative 'txt_shared' # txt_shared.rb + require_relative 'txt_rst_decorate' # txt_rst_decorate.rb + require_relative 'txt_output' # txt_output.rb include SiSU_Param - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@alt_id_count,@@alt_id_count=0,0 @@tablefoot='' class Source + include SiSU_Txt_Read def initialize(opt) @opt=opt unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ @@ -74,46 +78,13 @@ module SiSU_Txt_rST def read begin md=SiSU_Param::Parameters.new(@opt).get - env=SiSU_Env::InfoEnv.new(@opt.fns) - unless @opt.act[:quiet][:set]==:on - tool=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? "#{env.program.text_editor} #{md.file.output_path.rst.dir}/#{md.file.base_filename.rst}" - : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" - (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'rST (plaintext utf-8)', - tool - ).green_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'rST (plaintext utf-8)', - tool - ).green_title_hi - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - @opt.fns, - "#{md.file.output_path.rst.dir}/#{md.file.base_filename.rst}" - ).flow - end - end - ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here - wrap_width=if defined? md.make.plaintext_wrap \ - and md.make.plaintext_wrap - md.make.plaintext_wrap - elsif defined? env.plaintext_wrap \ - and env.plaintext_wrap - env.plaintext_wrap - else 78 - end - #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 - SiSU_Txt_rST::Source::Scroll.new(md,ao_array,wrap_width).songsheet + specific={ + description: 'rST (plaintext utf-8)', + output_path: md.file.output_path.rst.dir, + output_file: md.file.base_filename.rst, + } + read_generic(@opt,specific) + SiSU_Txt_rST::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -125,6 +96,7 @@ module SiSU_Txt_rST class Scroll @wrap_width @@ -515,41 +361,11 @@ WOK content << plaintext[:metadata] content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used? content << plaintext[:tail] - Output.new(content,@md).rst + outputfile=SiSU_Env::FileOp.new(@md).write_file.rst + Txt_Output::Output.new.document(content,outputfile) @@endnotes={ para: [], end: [] } end end - class Output 0 - para.each do |line| - if line - line=line.gsub(/[ \t]+$/m,''). - gsub(/^\A[ ]*\Z/m,'') - (line=~/^\A\Z/) \ - ? (emptyline+=1) - : emptyline=0 - if emptyline < 2 #remove additional empty lines - file_plaintext.puts line - end - end - end - else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ - end - end - file_plaintext.close - end - end end end __END__ diff --git a/lib/sisu/current/txt_rst_decorate.rb b/lib/sisu/current/txt_rst_decorate.rb new file mode 100644 index 00000000..2898ba1e --- /dev/null +++ b/lib/sisu/current/txt_rst_decorate.rb @@ -0,0 +1,186 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext decoration + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end + +module SiSU_Decorate_Txt_rST + def decorate + def heading + def underscore + def l0 + '=' + end + def l1 + '-' + end + def l2 + '`' + end + def l3 + ':' + end + def l4 + "'" + end + def l5 + '"' + end + self + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '/' + end + def close + '/' + end + self + end + def underscore + def open + '_' + end + def close + '_' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '+' + end + def close + '+' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '[' + end + def close + ']' + end + self + end + def hilite + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '#' + end + def close + '#' + end + self + end + self + end +end +__END__ diff --git a/lib/sisu/current/txt_textile.rb b/lib/sisu/current/txt_textile.rb index 86187a3d..3ff3fe15 100644 --- a/lib/sisu/current/txt_textile.rb +++ b/lib/sisu/current/txt_textile.rb @@ -51,7 +51,7 @@ ** Git - + =end module SiSU_Txt_Textile @@ -60,12 +60,16 @@ module SiSU_Txt_Textile include SiSU_Env require_relative 'shared_metadata' # shared_metadata.rb require_relative 'generic_parts' # generic_parts.rb + require_relative 'txt_read' # txt_read.rb require_relative 'txt_shared' # txt_shared.rb + require_relative 'txt_textile_decorate' # txt_textile_decorate.rb + require_relative 'txt_output' # txt_output.rb include SiSU_Param - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@alt_id_count,@@alt_id_count=0,0 @@tablefoot='' class Source - include SiSU_Parts_Generic + include SiSU_Txt_Read + #include SiSU_Parts_Generic def initialize(opt) @opt=opt unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ @@ -75,46 +79,13 @@ module SiSU_Txt_Textile def read begin md=SiSU_Param::Parameters.new(@opt).get - env=SiSU_Env::InfoEnv.new(@opt.fns) - unless @opt.act[:quiet][:set]==:on - tool=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? "#{env.program.text_editor} #{md.file.output_path.textile.dir}/#{md.file.base_filename.textile}" - : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" - (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Textile (plaintext utf-8)', - tool - ).green_hi_blue - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Textile (plaintext utf-8)', - tool - ).green_title_hi - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - @opt.fns, - "#{md.file.output_path.textile.dir}/#{md.file.base_filename.textile}" - ).flow - end - end - ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here - wrap_width=if defined? md.make.plaintext_wrap \ - and md.make.plaintext_wrap - md.make.plaintext_wrap - elsif defined? env.plaintext_wrap \ - and env.plaintext_wrap - env.plaintext_wrap - else 78 - end - #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78 - SiSU_Txt_Textile::Source::Scroll.new(md,ao_array,wrap_width).songsheet + specific={ + description: 'Textile (plaintext utf-8)', + output_path: md.file.output_path.textile.dir, + output_file: md.file.base_filename.textile, + } + read_generic(@opt,specific) + SiSU_Txt_Textile::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet rescue SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do __LINE__.to_s + ':' + __FILE__ @@ -126,6 +97,7 @@ module SiSU_Txt_Textile class Scroll 0 - para.each do |line| - if line - line=line.gsub(/[ \t]+$/m,''). - gsub(/^\A[ ]*\Z/m,'') - (line=~/^\A\Z/) \ - ? (emptyline+=1) - : emptyline=0 - if emptyline < 2 #remove additional empty lines - file_plaintext.puts line - end - end - end - else file_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/ - end - end - file_plaintext.close - end - end end end __END__ diff --git a/lib/sisu/current/txt_textile_decorate.rb b/lib/sisu/current/txt_textile_decorate.rb new file mode 100644 index 00000000..7e338e2f --- /dev/null +++ b/lib/sisu/current/txt_textile_decorate.rb @@ -0,0 +1,186 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** plaintext decoration + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end + +module SiSU_Decorate_Txt_Textile + def decorate + def heading + def inline + def l0 + 'h1. ' + end + def l1 + 'h2. ' + end + def l2 + 'h3. ' + end + def l3 + 'h4. ' + end + def l4 + 'h5. ' + end + def l5 + 'h6. ' + end + self + end + self + end + def bold + def open + '*' + end + def close + '*' + end + self + end + def italics + def open + '_' + end + def close + '_' + end + self + end + def underscore + def open + '+' + end + def close + '+' + end + self + end + #def emphasis + # def open + # '' + # end + # def close + # '' + # end + # self + #end + def cite + def open + '"' + end + def close + '"' + end + self + end + def insert + def open + '' + end + def close + '' + end + self + end + def strike + def open + '-' + end + def close + '-' + end + self + end + def superscript + def open + '^' + end + def close + '^' + end + self + end + def subscript + def open + '~' + end + def close + '~' + end + self + end + def hilite + def open + '*' + end + def close + '*' + end + self + end + def monospace + def open + '' + end + def close + '' + end + self + end + self + end +end +__END__ diff --git a/lib/sisu/current/urls.rb b/lib/sisu/current/urls.rb index db31282b..c69f6177 100644 --- a/lib/sisu/current/urls.rb +++ b/lib/sisu/current/urls.rb @@ -197,6 +197,15 @@ module SiSU_Urls fn: @fn[:txt_textile], } end + def orgmode + { + cmd: '--orgmode', + viewer: @prog.web_browser, + f_pth: @md.file.output_path.orgmode.dir + '/' \ + + @md.file.base_filename.orgmode, + fn: @fn[:txt_orgmode], + } + end self end def html @@ -539,18 +548,27 @@ module SiSU_Urls || @opt.act[:maintenance][:set]==:on) if @opt.act[:txt][:set]==:on show.report(report_info.text.txt) + #show.maintenance(report_info.text.txt) end if @opt.act[:txt_textile][:set]==:on show.report(report_info.text.textile) + #show.maintenance(report_info.text.textile) end if @opt.act[:txt_asciidoc][:set]==:on show.report(report_info.text.asciidoc) + #show.maintenance(report_info.text.asciidoc) end if @opt.act[:txt_markdown][:set]==:on show.report(report_info.text.markdown) + #show.maintenance(report_info.text.markdown) end if @opt.act[:txt_rst][:set]==:on show.report(report_info.text.rst) + #show.maintenance(report_info.text.rst) + end + if @opt.act[:txt_orgmode][:set]==:on + show.report(report_info.text.orgmode) + #show.maintenance(report_info.text.orgmode) end if (@opt.act[:html][:set]==:on \ or @opt.act[:html_scroll][:set]==:on \ @@ -566,6 +584,7 @@ module SiSU_Urls end if @opt.act[:concordance][:set]==:on show.report(report_info.html.concordance) + #show.maintenance(report_info.html.concordance) end if @opt.act[:xhtml][:set]==:on show.report(report_info.xhtml.xhtml) @@ -581,21 +600,27 @@ module SiSU_Urls end if @opt.act[:xml_dom][:set]==:on show.report(report_info.xml.dom) + #show.maintenance(report_info.xml.dom) end if @opt.act[:xml_sax][:set]==:on show.report(report_info.xml.sax) + #show.maintenance(report_info.xml.sax) end if @opt.act[:xml_docbook_book][:set]==:on show.report(report_info.xml.docbook) + #show.maintenance(report_info.xml.docbook) end if @opt.act[:xml_fictionbook][:set]==:on show.report(report_info.xml.fictionbook) + #show.maintenance(report_info.xml.fictionbook) end if @opt.act[:xml_scaffold_structure_sisu][:set]==:on show.report(report_info.xml.scaffold_structure_sisu) + #show.maintenance(report_info.xml.scaffold_structure_sisu) end if @opt.act[:xml_scaffold_structure_collapse][:set]==:on show.report(report_info.xml.scaffold_collapse) + #show.maintenance(report_info.xml.scaffold_collapse) end if (@opt.act[:pdf][:set]==:on \ or @opt.act[:pdf_p][:set]==:on \ @@ -623,14 +648,17 @@ module SiSU_Urls end if @opt.act[:texinfo][:set]==:on show.report(report_info.texinfo) + #show.maintenance(report_info.texinfo) end if @opt.act[:manpage][:set]==:on show.report(report_info.manpage) + #show.maintenance(report_info.manpage) end if @opt.act[:hash_digests][:set]==:on show.report(report_info.hash_digests) + #show.maintenance(report_info.hash_digests) end - if @opt.act[:po4a][:set]==:on + if @opt.act[:po4a_shelf][:set]==:on #if @opt.fns =~/\S+?~\S{2}(?:_\S{2})?\.ss[mt]/ #else #end @@ -645,6 +673,7 @@ module SiSU_Urls end if @opt.act[:qrcode][:set]==:on show.report(report_info.qrcode) + #show.maintenance(report_info.qrcode) end if @opt.act[:manifest][:set]==:on show.report(report_info.manifest) diff --git a/lib/sisu/current/utils_composite.rb b/lib/sisu/current/utils_composite.rb new file mode 100644 index 00000000..cdd844f3 --- /dev/null +++ b/lib/sisu/current/utils_composite.rb @@ -0,0 +1,115 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** system environment, debug related + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_Composite_Doc_Utils + def inserts_array(loadfilename) + IO.readlines(loadfilename,'') + end + def insert_filename?(para) + if para =~ /^<<\s+((?:https?|file):\/\/\S+?\.ss[it])$/ # and NetTest + url($1.strip) + elsif para =~/^<<\s*(\S+?\.ss[it])$/ + $1.strip + end + end + def extract_filenames(loadfilename,file_names_arr) + file_names_arr << loadfilename + ssi_files=[] + if loadfilename =~/\S+?\.ss[im]$/ + inserts_array(loadfilename).each do |para| + filen=insert_filename?(para) + file_names_arr << filen + if filen =~/\S+?\.ssi$/ + ssi_files << filen + end + end + end + ssi_files.each do |fn| + extract_filenames(fn,file_names_arr) + end + file_names_arr.flatten.compact.uniq.sort + end + def composite_and_imported_filenames_array(loadfilename) + file_names_arr=[] + begin + if FileTest.file?(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 + file_names_arr=extract_filenames(loadfilename,file_names_arr) + end + end + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + p file_names_arr ;p file_names_arr.length + end + file_names_arr + rescue + SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do + __LINE__.to_s + ':' + __FILE__ + end + ensure + end + end +end +__END__ diff --git a/lib/sisu/current/utils_response.rb b/lib/sisu/current/utils_response.rb index c47fab2e..2343dad6 100644 --- a/lib/sisu/current/utils_response.rb +++ b/lib/sisu/current/utils_response.rb @@ -55,18 +55,19 @@ =end module SiSU_Response - class Response - def response?(ask) #move to more appropriate directory later - response='redo' - print ask + " ['yes', 'no' or 'quit']: " - response=File.new('/dev/tty').gets.strip - ans=if response=='yes' then true - elsif response=='no' then false - elsif response =~/^quit|exit$/ then exit - else puts "[please type: 'yes', 'no' or 'quit']" - response?(ask) - end - ans + def available_selections_ + %{'yes', 'no', 'quit' or 'exit'; [ynqx]} + end + def response?(ask) + response='redo' + print ask + %{ [#{available_selections_}]: } + response=File.new('/dev/tty').gets.strip + case response + when /^(?:y|yes)$/ then true + when /^(?:n|no)$/ then false + when /^(?:[qx]|quit|exit)$/ then exit + else puts %{[please type: #{available_selections_}]} + response?(ask) end end def query diff --git a/lib/sisu/current/wikispeak.rb b/lib/sisu/current/wikispeak.rb index a40f6424..7c55a753 100644 --- a/lib/sisu/current/wikispeak.rb +++ b/lib/sisu/current/wikispeak.rb @@ -64,7 +64,7 @@ module SiSU_Wikispeak include Format require_relative 'html_parts' # html_parts.rb require_relative 'txt_shared' - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + @@alt_id_count,@@alt_id_count=0,0 @@tablefoot='' class Source def initialize(opt) @@ -185,7 +185,7 @@ WOK end end def wiki_tail - generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version] + generator="Generated by: #{@md.project_details.project} #{@md.project_details.version} of #{@md.project_details.date_stamp} (#{@md.project_details.date})" if @md.project_details.version lastdone="Last Generated on: #{Time.now}" rubyv="Ruby version: #{@md.ruby_version}" sc=if @md.sc_info diff --git a/lib/sisu/current/xhtml.rb b/lib/sisu/current/xhtml.rb index 8a7cc176..b40b7550 100644 --- a/lib/sisu/current/xhtml.rb +++ b/lib/sisu/current/xhtml.rb @@ -63,10 +63,11 @@ module SiSU_XHTML include SiSU_XML_Munge require_relative 'xml_format' # xml_format.rb include SiSU_XML_Format + require_relative 'xml_persist' # xml_persist.rb require_relative 'rexml' # rexml.rb include SiSU_Rexml require_relative 'shared_metadata' # shared_metadata.rb - @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0 + @@alt_id_count=0 @@tablefoot='' class Source def initialize(opt) @@ -144,18 +145,22 @@ module SiSU_XHTML require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils require_relative 'css' # css.rb - @@xml={ body: [], sisu: [], open: [], close: [], head: [] } def initialize(particulars) @env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array @tab="\t" @trans=SiSU_XML_Munge::Trans.new(@md) @sys=SiSU_Env::SystemCall.new + @per=SiSU_XML_Persist::Persist.new end def songsheet - pre - @data=markup(@ao_array) - post - publish + begin + pre + @data=markup(@ao_array) + post + publish + ensure + SiSU_XML_Persist::Persist.new.persist_init + end end protected def embedded_endnotes(dob='') @@ -202,7 +207,7 @@ WOK end def xml_head metadata=SiSU_Metadata::Summary.new(@md).xhtml_scroll.metadata - @@xml[:head] << metadata + @per.head << metadata end def name_tags(dob) tags='' @@ -228,15 +233,15 @@ WOK gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'\1') util=SiSU_TextUtils::Wrap.new(dob.obj,70) wrapped=util.line_wrap - @@xml[:body] << if defined? dob.ocn + @per.body << if defined? dob.ocn %{#{Ax[:tab]*0}} else "#{Ax[:tab]*0}" end - @@xml[:body] << %{#{Ax[:tab]*1}#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}} unless lv # main text, contents, body KEEP - @@xml[:body] << %{#{Ax[:tab]*1}#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}} if lv # main text, contents, body KEEP - @@xml[:body] << @endnotes.compact.join if @endnotes.length > 0 # main text, endnotes KEEP - @@xml[:body] << "#{Ax[:tab]*1}#{dob.ocn}" if defined? dob.ocn - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*1}#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}} unless lv # main text, contents, body KEEP + @per.body << %{#{Ax[:tab]*1}#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}} if lv # main text, contents, body KEEP + @per.body << @endnotes.compact.join if @endnotes.length > 0 # main text, endnotes KEEP + @per.body << "#{Ax[:tab]*1}#{dob.ocn}" if defined? dob.ocn + @per.body << "#{Ax[:tab]*0}" @endnotes=[] end end @@ -246,12 +251,12 @@ WOK dob.obj=dob.obj.strip. gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'\1'). #footnote/endnote clean gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'\1') #footnote/endnote clean - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*0}" end def group_structure(dob) named=name_tags(dob) @@ -259,42 +264,42 @@ WOK dob.obj=dob.obj.strip. gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'\1'). #footnote/endnote clean gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'\1') #footnote/endnote clean - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*0}" end def poem_structure(dob) named=name_tags(dob) dob=@trans.markup_group(dob) dob.obj=dob.obj.strip - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*0}" end def code_structure(dob) named=name_tags(dob) dob=@trans.markup_group(dob) dob.obj=dob.obj.gsub(/\s\s/,'  ').strip - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{named}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*0}" end def table_structure(dob) named=name_tags(dob) table=SiSU_XHTML_Shared::TableXHTML.new(dob) - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*2}#{named}#{table.table.obj}} - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*2}#{named}#{table.table.obj}} + @per.body << "#{Ax[:tab]*0}" end def markup(data) @endnotes=[] @@ -370,39 +375,38 @@ WOK end 6.downto(4) do |x| y=x - 1; v=x - 3 - @@xml[:body] << "#{Ax[:tab]*5}\n#{Ax[:tab]*y}" if @level[x]==true + @per.body << "#{Ax[:tab]*5}\n#{Ax[:tab]*y}" if @level[x]==true end 3.downto(1) do |x| y=x - 1 - @@xml[:body] << "#{Ax[:tab]*y}" if @level[x]==true + @per.body << "#{Ax[:tab]*y}" if @level[x]==true end end def pre rdf=SiSU_XML_Tags::RDF.new(@md) - @@xml[:head],@@xml[:body]=[],[] + @per.head,@per.body=[],[] stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xhtml').stylesheet encoding=(@sys.locale =~/utf-?8/i) \ ? '' : '' - @@xml[:open] =< WOK - @@xml[:head] << %{\n\t} - @@xml[:body] << '' + @per.head << %{\n\t} + @per.body << '' end def post - @@xml[:head] << '' - @@xml[:body] << '' - @@xml[:close] = '' + @per.head << '' + @per.body << '' + @per.close = '' end def publish content=[] - content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata] - content << @@xml[:owner_details] if @md.stmp =~/\w\w/ - content << @@xml[:tail] << @@xml[:close] + content << @per.open << @per.head << @per.body << @per.metadata + content << @per.tail << @per.close content=content.flatten.compact Output.new(content,@md).xhtml @@xml={} @@ -440,11 +444,11 @@ WOK 'check document structure' ).colorize tell=SiSU_Screen::Ansi.new( - @md.opt.act[:color_state][:set], - 'invert', - '', - '' - ) + @md.opt.act[:color_state][:set], + 'invert', + '', + '' + ) tell.grey_open end tidyfile='/dev/null' #don't want one or screen output, check for alternative flags diff --git a/lib/sisu/current/xhtml_epub2.rb b/lib/sisu/current/xhtml_epub2.rb index 9072bf93..3fc6c4eb 100644 --- a/lib/sisu/current/xhtml_epub2.rb +++ b/lib/sisu/current/xhtml_epub2.rb @@ -73,6 +73,7 @@ module SiSU_XHTML_EPUB2 require_relative 'xhtml_epub2_tune' # xhtml_epub2_tune.rb include SiSU_XHTML_EPUB2_Tune require_relative 'xhtml_epub2_concordance' # xhtml_epub2_concordance.rb + require_relative 'xhtml_epub2_persist' # xhtml_epub2_persist.rb class Source def initialize(opt) @opt=opt @@ -124,9 +125,9 @@ module SiSU_XHTML_EPUB2 SiSU_Env::FileOp.new(@md).mkdir.output.epub @tuned_file_array=SiSU_XHTML_EPUB2::Source::XHTML_Environment.new(@particulars).tuned_file_instructions data=@tuned_file_array - toc=SiSU_XHTML_EPUB2::Source::Toc.new(@md,data).songsheet + per=SiSU_XHTML_EPUB2::Source::Toc.new(@md,data).songsheet data=@tuned_file_array - SiSU_XHTML_EPUB2::Source::ScrollHeadAndSegToc.new(@md,toc).in_common #watch + SiSU_XHTML_EPUB2::Source::ScrollHeadAndSegToc.new(@md,per).in_common #watch SiSU_XHTML_EPUB2::Source::Seg.new(@md,data).songsheet SiSU_XHTML_EPUB2::Source::Output.new(@md).songsheet rescue @@ -144,11 +145,10 @@ module SiSU_XHTML_EPUB2 end end SiSU_Env::Clear.new(@opt.selections.str,@opt.fns).param_instantiate - @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{} - @@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0 - @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]} - @@filename_seg,@@seg_url,@@fn,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','','','' - @@is4=@@is3=@@is2=@@is1=@@heading1=@@heading2=@@heading3=@@heading4=0 + @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc={},{},{},{},{} + @@tracker=0 + @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@tablefoot=Array.new(5){[]} + @@filename_seg,@@seg_url,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','' end end private @@ -202,7 +202,6 @@ module SiSU_XHTML_EPUB2 end end class Toc - @@toc={ seg: [], seg_mini: [], scr: [], ncx: [], opf: [] } @@seg_url='' @@firstseg=nil def initialize(md=nil,data='') @@ -210,237 +209,242 @@ module SiSU_XHTML_EPUB2 @epub=SiSU_XHTML_EPUB2_Format::HeadInformation.new(@md) @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md @make=SiSU_Env::ProcessingSettings.new(@md) + @per=SiSU_XHTML_EPUB2_Persist::PersistTOC.new end def songsheet #extracts toc for scroll & seg - if (@md.opt.act[:verbose][:set]==:on \ - || @md.opt.act[:verbose_plus][:set]==:on \ - || @md.opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @md.opt.act[:color_state][:set], - 'Toc' - ).txt_grey - end - toc=nil - @@firstseg=nil - @@toc={ seg: [], seg_mini: [], scr: [], ncx: [], opf: [] } - md_opf_a_content,md_opf_a_spine,md_opf_a_guide=[],[],[] - @nav_no=0 - @s_a_no,@s_b_no,@s_c_no,@s_d_no,@lv5_no,@lv6_no=0,0,0,0,0,0 - @@toc[:ncx] << @epub.toc_ncx.open #epub ncx navmap - @@toc[:ncx] << @epub.toc_ncx.head_open << @epub.toc_ncx.head << @epub.toc_ncx.head_close - @@toc[:ncx] << @epub.toc_ncx.doc_title << @epub.toc_ncx.doc_author - @@toc[:ncx] << @epub.toc_ncx.navmap_open - @@toc[:opf] << @epub.metadata_opf.package_open - @@toc[:opf] << @epub.metadata_opf.metadata - @@toc[:opf] << @epub.metadata_opf.manifest_open - @@toc[:seg] << %{
\n
} - @@toc[:scr] << %{
\n
} - if defined? @md.make.cover_image \ - and @md.make.cover_image.is_a?(Hash) \ - and @md.make.cover_image[:cover] =~/\S+/ - md_opf_a_content << @epub.metadata_opf.manifest_cover_image_information(@md) - md_opf_a_spine << @epub.metadata_opf.spine_cover_image - md_opf_a_guide << @epub.metadata_opf.guide_cover_image - end - md_opf_a_content << @epub.metadata_opf.manifest_content_sisu_toc - if @make.build.toc? - md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc - md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc - end - @ncxo=[false,false,false,false,false,false,false] - @dob_toc2,@dob_toc3=nil,nil - @ncx_cls=[] - @level_a_first_occurrence=true - @data.each do |dob| - if dob.is==:heading \ - || dob.is==:heading_insert - dob_toc=dob.dup - toc=case dob_toc.ln - when 0 - @s_a_no +=1 - lv_name='section_a' + @s_a_no.to_s - @nav_no+=1 - @nav_no2=@nav_no - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0] - @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= - true, false, false, false, false, false, false, false - @epub.sections(dob_toc,lv_name) - if @level_a_first_occurrence \ - && @make.build.toc? - @@toc[:ncx] << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc + begin + if (@md.opt.act[:verbose][:set]==:on \ + || @md.opt.act[:verbose_plus][:set]==:on \ + || @md.opt.act[:maintenance][:set]==:on) + SiSU_Screen::Ansi.new( + @md.opt.act[:color_state][:set], + 'Toc' + ).txt_grey + end + toc=nil + @@firstseg=nil + SiSU_XHTML_EPUB2_Persist::PersistTOC.new.persist_init + md_opf_a_content,md_opf_a_spine,md_opf_a_guide=[],[],[] + @nav_no=0 + @s_a_no,@s_b_no,@s_c_no,@s_d_no,@lv5_no,@lv6_no=0,0,0,0,0,0 + @per.ncx << @epub.toc_ncx.open #epub ncx navmap + @per.ncx << @epub.toc_ncx.head_open << @epub.toc_ncx.head << @epub.toc_ncx.head_close + @per.ncx << @epub.toc_ncx.doc_title << @epub.toc_ncx.doc_author + @per.ncx << @epub.toc_ncx.navmap_open + @per.opf << @epub.metadata_opf.package_open + @per.opf << @epub.metadata_opf.metadata + @per.opf << @epub.metadata_opf.manifest_open + @per.seg << %{
\n
} + @per.scr << %{
\n
} + if defined? @md.make.cover_image \ + and @md.make.cover_image.is_a?(Hash) \ + and @md.make.cover_image[:cover] =~/\S+/ + md_opf_a_content << @epub.metadata_opf.manifest_cover_image_information(@md) + md_opf_a_spine << @epub.metadata_opf.spine_cover_image + md_opf_a_guide << @epub.metadata_opf.guide_cover_image + end + md_opf_a_content << @epub.metadata_opf.manifest_content_sisu_toc + if @make.build.toc? + md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc + md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc + end + @ncxo=[false,false,false,false,false,false,false] + @dob_toc2,@dob_toc3=nil,nil + @ncx_cls=[] + @level_a_first_occurrence=true + @data.each do |dob| + if dob.is==:heading \ + || dob.is==:heading_insert + dob_toc=dob.dup + toc=case dob_toc.ln + when 0 + @s_a_no +=1 + lv_name='section_a' + @s_a_no.to_s + @nav_no+=1 + @nav_no2=@nav_no + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[5] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[4] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[3] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[2] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[1] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[0] + @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= + true, false, false, false, false, false, false, false + @epub.sections(dob_toc,lv_name) + if @level_a_first_occurrence \ + && @make.build.toc? + @per.ncx << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc + @nav_no+=1 + @level_a_first_occurrence=false + end + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_0 + when 1 + @s_b_no +=1 + lv_name='section_b' + @s_b_no.to_s + @nav_no+=1 + @nav_no2=@nav_no + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[5] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[4] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[3] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[2] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[1] + @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= + true, false, false, false, false, false, false + @epub.sections(dob_toc,lv_name) + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_1 + when 2 + @s_c_no +=1 + lv_name='section_c' + @s_c_no.to_s + @nav_no+=1 + @nav_no2=@nav_no + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[5] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[4] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[3] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[2] + @ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= + true, false, false, false, false, false + @epub.sections(dob_toc,lv_name) + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_2 + when 3 + @s_d_no +=1 + lv_name='section_d' + @s_d_no.to_s + @nav_no+=1 + @nav_no3=@nav_no + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[5] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[4] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[3] + @ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= + true, false, false, false, false + @epub.sections(dob_toc,lv_name) + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_3 + when 4 + @ncx_cls=[] + lv_name=dob_toc.name @nav_no+=1 - @level_a_first_occurrence=false + @dob_name=dob.name + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[5] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[4] + @ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= + true, false, false, false + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_4 + when 5 + @ncx_cls=[] + hashtag='#o' + dob_toc.ocn.to_s + lv_name=@dob_name + @nav_no+=1 + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[5] + @ncxo[5],@ncxo[6],@ncxo[7]= + true, false, false + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_5 + when 6 + @ncx_cls=[] + hashtag='#o' + dob_toc.ocn.to_s + lv_name=@dob_name + @nav_no+=1 + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @ncxo[6],@ncxo[7]= + true, false + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_6 + when 7 + @ncx_cls=[] + hashtag='#o' + dob_toc.ocn.to_s + lv_name=@dob_name + @nav_no+=1 + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[7] + @ncxo[7]=true + @per.ncx << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_7 + else nil end - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_0 - when 1 - @s_b_no +=1 - lv_name='section_b' + @s_b_no.to_s - @nav_no+=1 - @nav_no2=@nav_no - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1] - @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= - true, false, false, false, false, false, false - @epub.sections(dob_toc,lv_name) - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_1 - when 2 - @s_c_no +=1 - lv_name='section_c' + @s_c_no.to_s - @nav_no+=1 - @nav_no2=@nav_no - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2] - @ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= - true, false, false, false, false, false - @epub.sections(dob_toc,lv_name) - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_2 - when 3 - @s_d_no +=1 - lv_name='section_d' + @s_d_no.to_s - @nav_no+=1 - @nav_no3=@nav_no - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3] - @ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= - true, false, false, false, false - @epub.sections(dob_toc,lv_name) - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_3 - when 4 - @ncx_cls=[] - lv_name=dob_toc.name - @nav_no+=1 - @dob_name=dob.name - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] - @ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= - true, false, false, false - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_4 - when 5 - @ncx_cls=[] - hashtag='#o' + dob_toc.ocn.to_s - lv_name=@dob_name - @nav_no+=1 - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] - @ncxo[5],@ncxo[6],@ncxo[7]= - true, false, false - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_5 - when 6 - @ncx_cls=[] - hashtag='#o' + dob_toc.ocn.to_s - lv_name=@dob_name - @nav_no+=1 - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @ncxo[6],@ncxo[7]= - true, false - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_6 - when 7 - @ncx_cls=[] - hashtag='#o' + dob_toc.ocn.to_s - lv_name=@dob_name - @nav_no+=1 - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] - @ncxo[7]=true - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc - md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) - md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) - md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_7 - else nil - end - toc.each do |k,d| - d.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') - end if toc - if @@firstseg.nil? \ - and dob.ln==4 \ - and dob.name =~/\S+/ - @@firstseg=dob.name - end - if toc - begin - @@toc[:seg] << toc[:seg] - @@toc[:scr] << toc[:seg] - rescue - SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do - __LINE__.to_s + ':' + __FILE__ + toc.each do |k,d| + d.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') + end if toc + if @@firstseg.nil? \ + and dob.ln==4 \ + and dob.name =~/\S+/ + @@firstseg=dob.name + end + if toc + begin + @per.seg << toc[:seg] + @per.scr << toc[:seg] + rescue + SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do + __LINE__.to_s + ':' + __FILE__ + end end end end end + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[6] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[5] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[4] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[3] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[2] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[1] + @per.ncx << @epub.toc_ncx.navpoint_close if @ncxo[0] + @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=false,false,false,false,false,false,false + md_opf_a_content << @epub.metadata_opf.manifest_images(@md.ec[:image]) + @per.seg << "
\n
" + @per.scr << "
\n
" + @per.ncx << @epub.toc_ncx.navmap_close + @per.ncx << @epub.toc_ncx.close + @per.opf << md_opf_a_content << @epub.metadata_opf.manifest_close + @per.opf << @epub.metadata_opf.spine_open << md_opf_a_spine << @epub.metadata_opf.spine_close + @per.opf << @epub.metadata_opf.guide_open << md_opf_a_guide << @epub.metadata_opf.guide_close + @per.opf << @epub.metadata_opf.package_close + @per.opf=@per.opf.flatten + SiSU_XHTML_EPUB2::Source::Output.new(@md,@per.opf).epub_metadata_opf + SiSU_XHTML_EPUB2::Source::Output.new(@md,@per.ncx).epub_toc_ncx + @md.firstseg=@@firstseg + @per + ensure + SiSU_XHTML_EPUB2_Persist::Persist.new.persist_init end - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1] - @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0] - @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=false,false,false,false,false,false,false - md_opf_a_content << @epub.metadata_opf.manifest_images(@md.ec[:image]) - @@toc[:seg] << "
\n
" - @@toc[:scr] << "
\n
" - @@toc[:ncx] << @epub.toc_ncx.navmap_close - @@toc[:ncx] << @epub.toc_ncx.close - @@toc[:opf] << md_opf_a_content << @epub.metadata_opf.manifest_close - @@toc[:opf] << @epub.metadata_opf.spine_open << md_opf_a_spine << @epub.metadata_opf.spine_close - @@toc[:opf] << @epub.metadata_opf.guide_open << md_opf_a_guide << @epub.metadata_opf.guide_close - @@toc[:opf] << @epub.metadata_opf.package_close - @@toc[:opf]=@@toc[:opf].flatten - SiSU_XHTML_EPUB2::Source::Output.new(@md,@@toc[:opf]).epub_metadata_opf - SiSU_XHTML_EPUB2::Source::Output.new(@md,@@toc[:ncx]).epub_toc_ncx - @md.firstseg=@@firstseg - @@toc end protected def level_0 @@ -454,7 +458,7 @@ module SiSU_XHTML_EPUB2 toc[:seg]=format_toc.lev1 title=if dob.ocn ==0 then linkname else - @@toc[:scr] << '
' + @per.scr << '
' link=(dob.ln) \ ? dob.ln : '' @@ -490,7 +494,7 @@ module SiSU_XHTML_EPUB2 else linkname end else - @@toc[:scr] << '
' + @per.scr << '
' link=(dob.ln) \ ? dob.ln : '' @@ -636,8 +640,8 @@ module SiSU_XHTML_EPUB2 end end class ScrollHeadAndSegToc < Toc - def initialize(md='',toc='',links_guide_toc='') - @md,@toc,@links_guide_toc=md,toc,links_guide_toc + def initialize(md='',per='',links_guide_toc='') + @md,@per,@links_guide_toc=md,per,links_guide_toc end def in_common toc_shared=[] @@ -699,9 +703,9 @@ module SiSU_XHTML_EPUB2 toc_shared << prefix_b end #Table of Contents added/appended here - toc_shared << @toc[:scr] + toc_shared << @per.scr segtoc << @links_guide_toc - segtoc << @toc[:seg] + segtoc << @per.seg if defined? @md.rights.all \ and @md.rights.all segtoc << rights @@ -716,7 +720,7 @@ module SiSU_XHTML_EPUB2 SiSU_XHTML_EPUB2::Source::Output.new(@md).make_cover_image SiSU_XHTML_EPUB2::Source::Output.new(@md,segtoc).make_segtoc segtoc=[] - @toc[:scr],@toc[:seg]=[],[] + @per.scr,@per.seg=[],[] toc_shared end end diff --git a/lib/sisu/current/xhtml_epub2_format.rb b/lib/sisu/current/xhtml_epub2_format.rb index 9cfc5736..4f8aa930 100644 --- a/lib/sisu/current/xhtml_epub2_format.rb +++ b/lib/sisu/current/xhtml_epub2_format.rb @@ -1251,8 +1251,9 @@ module SiSU_XHTML_EPUB2_Format @md=md # DublinCore 1 - title @css=SiSU_Env::CSS_Stylesheet.new(md) - @seg_name_xhtml=(SiSU_XHTML_EPUB2::Source::Seg.new.seg_name_xhtml || []) - @seg_name_xhtml_tracker=(SiSU_XHTML_EPUB2::Source::Seg.new.seg_name_xhtml_tracker || []) + @per=SiSU_XHTML_EPUB2_Persist::Persist.new + @per.seg_name_x=SiSU_XHTML_EPUB2::Seg.new.seg_name_x + @per.seg_name_x_tracker=SiSU_XHTML_EPUB2::Seg.new.seg_name_x_tracker @tocband_scroll,@tocband_segtoc=nil,nil @index,@metalink='index','#metadata' end @@ -1827,7 +1828,7 @@ output_epub_cont_seg.close %{#{doc_type} - #{@seg_name_xhtml[@seg_name_xhtml_tracker]} - + #{@per.seg_name_x[@per.seg_name_x_tracker]} - #{@md.html_title} diff --git a/lib/sisu/current/xhtml_epub2_persist.rb b/lib/sisu/current/xhtml_epub2_persist.rb new file mode 100644 index 00000000..175149f9 --- /dev/null +++ b/lib/sisu/current/xhtml_epub2_persist.rb @@ -0,0 +1,278 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** html segment generation, processing + +** Author: Ralph Amissah + + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_XHTML_EPUB2_Persist + class Persist + @@persist=nil + attr_accessor :is0,:is1,:is2,:is3,:is4,:heading0,:heading1,:heading2,:heading3,:heading4, :title, :nav, :tocband_banner, :tocband_bannerless, :headings, :heading_endnotes, :main, :endnote_all, :tail, :credits, :heading_idx, :idx, :seg_endnotes, :seg_endnotes_array, :closed, :get_hash_fn, :get_hash_to, :seg_subtoc, :seg_subtoc_array, :fn, :seg_name ,:seg_name_x,:seg_name_x_tracker + def initialize(args=nil) + @@persist=args=(args ? args : (@@persist || persist_init_hash_values)) + @is0=args[:is0] + @is1=args[:is1] + @is2=args[:is2] + @is3=args[:is3] + @is4=args[:is4] + @heading0=args[:heading0] + @heading1=args[:heading1] + @heading2=args[:heading2] + @heading3=args[:heading3] + @heading4=args[:heading4] + @title=args[:title] + @nav=args[:nav] + @tocband_banner=args[:tocband_banner] + @tocband_bannerless=args[:tocband_bannerless] + @headings=args[:headings] + @heading_endnotes=args[:heading_endnotes] + @main=args[:main] + @endnote_all=args[:endnote_all] + @tail=args[:tail] + @credits=args[:credits] + #@heading_idx=args[:heading_idx] + @idx=args[:idx] + @seg_endnotes=args[:seg_endnotes] + @seg_endnotes_array=args[:seg_endnotes_array] + @closed=args[:closed] + @get_hash_to=args[:get_hash_to] + @get_hash_fn=args[:get_hash_fn] + @seg_subtoc=args[:seg_subtoc] + @seg_subtoc_array=args[:seg_subtoc_array] + @fn=args[:fn] + @seg_name=args[:seg_name] + @seg_name_x=args[:seg_name_x] + @seg_name_x_tracker=args[:seg_name_x_tracker] + end + def is0 + @is0 + end + def is1 + @is1 + end + def is2 + @is2 + end + def is3 + @is3 + end + def is4 + @is4 + end + def heading0 + @heading0 + end + def heading1 + @heading1 + end + def heading2 + @heading2 + end + def heading3 + @heading3 + end + def heading4 + @heading4 + end + def title + @title + end + def nav + @nav + end + def tocband_banner + @tocband_banner + end + def tocband_bannerless + @tocband_bannerless + end + def headings + @headings + end + def heading_endnotes + @heading_endnotes + end + def main + @main + end + def endnote_all + @endnote_all + end + def tail + @tail + end + def credits + @credits + end + def heading_idx + @heading_idx + end + def idx + @idx + end + def seg_endnotes + @seg_endnotes + end + def seg_endnotes_array + @seg_endnotes_array + end + def closed + @closed + end + def get_hash_to + @get_hash_to + end + def get_hash_fn + @get_hash_fn + end + def seg_subtoc + @seg_subtoc + end + def seg_subtoc_array + @seg_subtoc_array + end + def fn + @fn + end + def seg_name + @seg_name + end + def seg_name_x + @seg_name_x + end + def seg_name_x_tracker + @seg_name_x_tracker + end + def persist_init_hash_values + { + is0: 0, + is1: 0, + is2: 0, + is3: 0, + is4: 0, + heading0: '', + heading1: '', + heading2: '', + heading3: '', + heading4: '', + tocband_banner: [], + tocband_bannerless: [], + title: [], + nav: [], + headings: [], + main: [], + idx: [], + tail: [], + credits: [], + endnote_all: [], + heading_endnotes: '', + seg_endnotes: {}, + seg_endnotes_array: [], + closed: [], + get_hash_fn: '', + get_hash_to: '', + seg_subtoc: {}, + seg_subtoc_array: [], + fn: '', + seg_name: [], + seg_name_x: [], + seg_name_x_tracker: 0, + } + end + def persist_init + @@persist=nil + Persist.new(persist_init_hash_values) + end + end + class PersistTOC + @@persist=nil + attr_accessor :seg,:seg_mini,:scr,:ncx,:opf + def initialize(args=nil) + @@persist=args=(args ? args : (@@persist || persist_init_hash_values)) + @seg=args[:seg] + @seg_mini=args[:seg_mini] + @scr=args[:scr] + @ncx=args[:ncx] + @opf=args[:opf] + end + def seg + @seg + end + def seg_mini + @seg_mini + end + def scr + @scr + end + def ncx + @ncx + end + def opf + @opf + end + def persist_init_hash_values + { + seg: [], + seg_mini: [], + scr: [], + ncx: [], + opf: [], + } + end + def persist_init + @@persist=nil + PersistTOC.new(persist_init_hash_values) + end + end +end +__END__ diff --git a/lib/sisu/current/xhtml_epub2_segments.rb b/lib/sisu/current/xhtml_epub2_segments.rb index b8af25dc..b3760027 100644 --- a/lib/sisu/current/xhtml_epub2_segments.rb +++ b/lib/sisu/current/xhtml_epub2_segments.rb @@ -57,37 +57,60 @@ module SiSU_XHTML_EPUB2_Seg require_relative 'xhtml_shared' # xhtml_shared.rb require_relative 'xhtml_epub2' # xhtml_epub2.rb + require_relative 'xhtml_epub2_persist' # xhtml_epub2_persist.rb require_relative 'shared_metadata' # shared_metadata.rb class Output - def initialize(md,outputfile,seg,type='') - @md,@output_epub_cont_seg,@seg,@type=md,outputfile,seg,type + def initialize(md,outputfile,per,type='') + @md, @output_epub_cont_seg,@per,@type= + md,outputfile, per, type end - def output #CONSIDER - if @seg[:title] =~/\S/ + def output + if @per.title =~/\S/ filename_seg=[] - filename_seg << @seg[:title] << @seg[:nav] + filename_seg \ + << @per.title \ + << @per.nav if @type=='endnotes' - @seg[:headings]=[] #watch + @per.headings=[] #watch txt_obj={ txt: 'Endnotes', ocn_display: ''} format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @seg[:headings] << format_seg.title_heading1 - filename_seg << @seg[:heading_endnotes] << @seg[:headings] << %{\n
\n} << @seg[:endnote_all] << '
' + @per.headings \ + << format_seg.title_heading1 + filename_seg \ + << @per.heading_endnotes \ + << @per.headings \ + << %{\n
\n} \ + << @per.endnote_all \ + << '
' elsif @type=='idx' - @seg[:headings]=[] + @per.headings=[] txt_obj={ txt: 'Index', ocn_display: ''} format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @seg[:headings] << format_seg.title_heading1 - filename_seg << @seg[:heading_idx] << @seg[:headings] << %{\n
\n} << @seg[:idx] << '
' + @per.headings << format_seg.title_heading1 + filename_seg \ + << @per.heading_idx \ + << @per.headings \ + << %{\n
\n} \ + << @per.idx \ + << '
' elsif @type=='metadata' metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata - @seg[:headings]=[] + @per.headings=[] txt_obj={ txt: 'Metadata', ocn_display: ''} format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @seg[:headings] << format_seg.title_heading1 - filename_seg << @seg[:heading_idx] << @seg[:headings] << %{\n
\n} << metadata << '
' + @per.headings \ + << format_seg.title_heading1 + filename_seg \ + << @per.heading_idx \ + << @per.headings \ + << %{\n
\n} \ + << metadata \ + << '
' elsif @type=='sisu_manifest' env=SiSU_Env::InfoEnv.new(@md.fns) - path_and_name,url_and_name="#{env.path.output}/#{@md.fnb}/sisu_manifest.html","#{env.url.root}/#{@md.fnb}/sisu_manifest.html" + path_and_name,url_and_name= \ + "#{env.path.output}/#{@md.fnb}/sisu_manifest.html", + "#{env.url.root}/#{@md.fnb}/sisu_manifest.html" manifest=if FileTest.file?("#{path_and_name}")==true <A list of available output types may be available at the following url:

@@ -95,19 +118,32 @@ module SiSU_XHTML_EPUB2_Seg WOK else '' end - @seg[:headings]=[] + @per.headings=[] txt_obj={ txt: 'Manifest', ocn_display: ''} format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @seg[:headings] << format_seg.title_heading1 - filename_seg << @seg[:heading_idx] << @seg[:headings] << %{\n
\n} << manifest << '
' + @per.headings \ + << format_seg.title_heading1 + filename_seg \ + << @per.heading_idx \ + << @per.headings \ + << %{\n
\n} \ + << manifest \ + << '
' else - filename_seg << @seg[:headings] << @seg[:main] << "\n
\n" + filename_seg \ + << @per.headings \ + << @per.main \ + << "\n
\n" end - filename_seg << @seg[:tail] << @seg[:nav] << @seg[:close] + filename_seg \ + << @per.tail \ + << @per.nav \ + << @per.closed filename_seg=filename_seg.flatten.compact #watch filename_seg.each do |str| unless str =~/\A\s*\Z/ - @output_epub_cont_seg << str.strip + @output_epub_cont_seg \ + << str.strip end end @output_epub_cont_seg.close @@ -115,68 +151,68 @@ WOK end end class Seg - @@seg,@@seg_subtoc,@@seg_endnotes,@@seg_ad={},{},{},{} - @@seg_name,@@seg_name_xhtml=[],[] - @@seg_url=@@fn=@@get_hash_to=@@get_hash_fn='' - @@loop_count=@@seg_total=@@tracker=0 - @@is4=@@is3=@@is2=@@is1=@@is0=0 - @@heading0=@@heading1=@@heading2=@@heading3=@@heading4=0 - @@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(7){[]} - @@seg[:heading_endnotes]='' - @@tablehead,@@number_of_cols=0,0 - @@fns_previous='' - attr_reader :seg_name_xhtml,:seg_name_xhtml_tracker + @@seg_name=[] + @@seg_url='' + @@tracker=0 + attr_reader :seg_name_x,:seg_name_x_tracker def initialize(md='',data='') @md,@data=md,data - @seg_name_xhtml=@@seg_name_xhtml || nil - @seg_name_xhtml_tracker=@@tracker || nil + @per=SiSU_XHTML_EPUB2_Persist::Persist.new + @seg_name_x=@per.seg_name_x=(@@seg_name || []) + @seg_name_x_tracker=@per.seg_name_x_tracker=(@@tracker || 0) @make=SiSU_Env::ProcessingSettings.new(@md) if @md end def songsheet begin - data=get_subtoc_endnotes(@data) - data=articles(data) - SiSU_XHTML_EPUB2_Seg::Seg.new.cleanup # (((( added )))) + data=get_subtoc_endnotes(@data,@per) + data=articles(data,@per) + SiSU_XHTML_EPUB2_Seg::Seg.new.cleanup(@md,@per) # (((( added )))) #### (((( END )))) #### rescue SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do __LINE__.to_s + ':' + __FILE__ end ensure - @@seg_name=[] + SiSU_XHTML_EPUB2_Persist::Persist.new.persist_init + @@seg_name=@per.seg_name=[] end end protected - def articles(data) + def articles(data,per) + @per=per tracking,newfile=0,0 - @@is4=@@is3=@@is2=@@is1=@@is0=0 printed_endnote_seg='n' idx_xhtml=nil if @md.book_idx - idx_xhtml=SiSU_Particulars::CombinedSingleton.instance.get_idx_xhtml(@md).xhtml_idx - idx_xhtml.each {|x| @@seg[:idx] << x } - @@seg[:heading_idx]='' + idx_xhtml=SiSU_Particulars::CombinedSingleton. + instance.get_idx_xhtml(@md).xhtml_idx + idx_xhtml.each do |x| + @per.idx << x + end + @per.heading_idx='' end data.each do |dob| - if (dob.is==:heading \ - || dob.is==:heading_insert) \ - and dob.ln==4 + if (dob.is == :heading \ + || dob.is == :heading_insert) \ + && dob.ln == 4 @@seg_name << dob.name + @per.seg_name = @@seg_name dob.name end end - @@seg_name_xhtml=@@seg_name - @@seg_total=@@seg_name.length - testforartnum=@@seg_name_xhtml + @per.seg_name_x=@per.seg_name + @per.seg_name.length + testforartnum=@per.seg_name_x if (@md.opt.act[:verbose][:set]==:on \ || @md.opt.act[:verbose_plus][:set]==:on \ || @md.opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new( @md.opt.act[:color_state][:set], - @@seg_name.length + @per.seg_name.length ) end - SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags + SiSU_Particulars::CombinedSingleton. + instance.get_map_nametags(@md).nametags_map #p map_nametags data.each do |dob| #if defined? dob.obj \ #and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/ @@ -194,41 +230,41 @@ WOK if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==4 - @@heading4=dob.obj - @@is4=newfile=1 + @per.heading4=dob.obj + @per.is4=newfile=1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==3 - @@heading3=dob.obj - @@is4,@@is3=0,1 + @per.heading3=dob.obj + @per.is4,@per.is3=0,1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==2 - @@heading2=dob.obj - @@is4,@@is3,@@is2=0,0,1 + @per.heading2=dob.obj + @per.is4,@per.is3,@per.is2=0,0,1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==1 - @@heading1=dob.obj - @@is4,@@is3,@@is2,@@is1=0,0,0,1 + @per.heading1=dob.obj + @per.is4,@per.is3,@per.is2,@per.is1=0,0,0,1 end if (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==0 - @@heading0=dob.obj - @@is4,@@is3,@@is2,@@is1,@@is0=0,0,0,0,1 + @per.heading0=dob.obj + @per.is4,@per.is3,@per.is2,@per.is1,@per.is0=0,0,0,0,1 end - if (@@is0 && !@@is1 && !@@is2 && !@@is3 && !@@is4) + if (@per.is0 && !@per.is1 && !@per.is2 && !@per.is3 && !@per.is4) if not (dob.is==:heading \ || dob.is==:heading_insert) \ && dob.ln==0 $_ #; check end end - if @@is4==1 + if @per.is4==1 dir_epub_cont="#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}" if newfile==1 \ or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/ @@ -237,34 +273,36 @@ WOK || dob.is==:heading_insert) \ && dob.ln==4 if tracking != 0 - SiSU_XHTML_EPUB2_Seg::Seg.new(@md).tail - segfilename="#{dir_epub_cont}/#{@@seg_name_xhtml[tracking-1]}#{Sfx[:epub_xhtml]}" - output_epub_cont_seg=File.new(segfilename,'w') if @@seg_name_xhtml[tracking-1] + tail(@md,@per) + #SiSU_XHTML_EPUB2_Seg::Seg.new(@md,@per).tail + segfilename="#{dir_epub_cont}/#{@per.seg_name_x[tracking-1]}#{Sfx[:epub_xhtml]}" + output_epub_cont_seg=File.new(segfilename,'w') if @per.seg_name_x[tracking-1] if dob.is==:heading \ - or @@seg_name_xhtml[tracking-1] !~/endnotes|book_index|metadata/ - SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg).output + or @per.seg_name_x[tracking-1] !~/endnotes|book_index|metadata/ + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per).output elsif dob.is==:heading_insert - if @@seg_name_xhtml[tracking-1]=='endnotes' - SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'endnotes').output - elsif @@seg_name_xhtml[tracking-1]=='book_index' - SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'idx').output - @@seg[:idx]=[] - elsif @@seg_name_xhtml[tracking-1]=='metadata' # navigation bug FIX - SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'metadata').output + if @per.seg_name_x[tracking-1]=='endnotes' + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'endnotes').output + elsif @per.seg_name_x[tracking-1]=='book_index' + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'idx').output + @per.idx=[] + elsif @per.seg_name_x[tracking-1]=='metadata' # navigation bug FIX + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'metadata').output else puts "#{__FILE__}::#{__LINE__}" end else puts "#{__FILE__}::#{__LINE__}" end - SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise + SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise(per) heading_art(dob) head(dob) - if @@seg_name_xhtml[tracking] =='metadata' - segfilename="#{dir_epub_cont}/#{@@seg_name_xhtml[tracking]}#{Sfx[:epub_xhtml]}" + if @per.seg_name_x[tracking] =='metadata' + segfilename="#{dir_epub_cont}/#{@per.seg_name_x[tracking]}#{Sfx[:epub_xhtml]}" output_epub_cont_seg=File.new(segfilename,'w') - SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@@seg,'metadata').output - SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise #BUG navigation bug with items following metadata, and occurring before manifest, this becomes a bug ... work area for book index, FIX + SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'metadata').output + SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise(per) + #BUG navigation bug with items following metadata, and occurring before manifest, this becomes a bug ... work area for book index, FIX end - #@output_epub_cont_seg.close #%(((( EOF )))) --> + #@output_epub_cont_seg.closed #%(((( EOF )))) --> end if tracking==0 heading_art(dob) @@ -277,8 +315,8 @@ WOK || dob.is==:heading_insert) \ && dob.ln==4 \ && dob.name - @@get_hash_to=dob.name - @@get_hash_fn=dob.name + @per.get_hash_to=dob.name + @per.get_hash_fn=dob.name end if dob.obj.is_a?(String) markup(dob) @@ -297,51 +335,56 @@ WOK data end def heading_art(dob) - @@seg[:title]=SiSU_XHTML_EPUB2_Format::HeadSeg.new(@md).head + @per.title=SiSU_XHTML_EPUB2_Format::HeadSeg.new(@md).head end def head(dob) clean=/|<:.*?>$/ @p_num ||= '' - if @@is0==1 + if @per.is0==1 if defined? @md.creator.author \ and @md.creator.author @author=%{#{@md.creator.author}\n} end @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn) - txt_obj={ txt: @@heading0, ocn_display: @p_num.ocn_display } + txt_obj={ txt: @per.heading0, ocn_display: @p_num.ocn_display } format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] << format_seg.title_heading0.gsub(clean,'') - @@heading0=@@heading0.gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') + @per.headings << format_seg.title_heading0.gsub(clean,'') + @per.heading0=@per.heading0. + gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') end - if @@is1==1 + if @per.is1==1 @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn) - txt_obj={ txt: @@heading1, ocn_display: @p_num.ocn_display } + txt_obj={ txt: @per.heading1, ocn_display: @p_num.ocn_display } format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] << format_seg.title_heading1.gsub(clean,'') - @@heading1=@@heading1.gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') + @per.headings << format_seg.title_heading1.gsub(clean,'') + @per.heading1=@per.heading1. + gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') end - if @@is2==1 - heading2=@@heading2 + if @per.is2==1 + heading2=@per.heading2 @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn) txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display } format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] << format_seg.title_heading2.gsub(clean,'') - @@heading2=@@heading2.gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') + @per.headings << format_seg.title_heading2.gsub(clean,'') + @per.heading2=@per.heading2. + gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') end - if @@is3==1 - heading3=@@heading3 + if @per.is3==1 + heading3=@per.heading3 @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn) txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display } format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] << format_seg.title_heading3.gsub(clean,'') - @@heading3=@@heading3.gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') + @per.headings << format_seg.title_heading3.gsub(clean,'') + @per.heading3=@per.heading3. + gsub(/#{$ep[:hsp]}#{$ep[:hsp]}[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'') end - if @@is4==1 - heading4=@@heading4 + if @per.is4==1 + heading4=@per.heading4 @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn) txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display } format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - @@seg[:headings] << format_seg.title_heading4.gsub(clean,'') + @per.headings \ + << format_seg.title_heading4.gsub(clean,'') end @@tracker=@@tracker+1 end @@ -400,7 +443,9 @@ WOK sto.break end if @md.flag_separate_endnotes # may need to revisit, check - dob.obj=dob.obj.gsub(/"\s+href="##{Mx[:note_ref]}(\d+)">/,%{" href=\"endnotes#{Sfx[:epub_xhtml]}##{Mx[:note_ref]}\\1">}) #endnote- twice #removed file type + dob.obj=dob.obj.gsub(/"\s+href="##{Mx[:note_ref]}(\d+)">/, + %{" href=\"endnotes#{Sfx[:epub_xhtml]}##{Mx[:note_ref]}\\1">}) + #endnote- twice #removed file type end if (dob.is ==:heading \ || dob.is==:heading_insert \ @@ -411,77 +456,82 @@ WOK if (dob.is==:heading \ || dob.is==:heading_insert \ || dob.is==:para) \ - and dob.note_ #dob.obj =~/  \n} - @@seg[:main] << dob_xhtml + @per.main << %{\n
\n} + @per.main << dob_xhtml if @make.build.segsubtoc? - @@seg[:main] << @@seg_subtoc[@@get_hash_fn] #% insertion of sub-toc + @per.main << @per.seg_subtoc[@per.get_hash_fn] + #% insertion of sub-toc end else - @@seg[:main] << dob_xhtml + @per.main << dob_xhtml end end - def tail + def tail(md,per) + @md,@per=md,per format_head_seg=SiSU_XHTML_EPUB2_Format::HeadSeg.new(@md) if @md.flag_auto_endnotes \ - and @@seg_endnotes[@@get_hash_fn] - @@seg[:tail] << %{\n
\n
\n} - if @@seg_endnotes[@@get_hash_fn].flatten.length > 0 - @@seg[:tail] << format_head_seg.endnote_mark - @@seg[:tail] << @@seg_endnotes[@@get_hash_fn].flatten #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES| + and @per.seg_endnotes[@per.get_hash_fn] + @per.tail << %{\n
\n
\n} + if @per.seg_endnotes[@per.get_hash_fn].flatten.length > 0 + @per.tail << format_head_seg.endnote_mark + @per.tail << @per.seg_endnotes[@per.get_hash_fn].flatten + #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES| end - @@seg[:tail] << '
' - @@seg[:tail] << '
' #this div closes div class content + @per.tail << '
' + @per.tail << '
' #this div closes div class content end - @@seg[:close]=[] - @@seg[:close] << format_head_seg.xhtml_close + @per.closed=[] + @per.closed << format_head_seg.xhtml_close end - def reinitialise - @@seg[:headings],@@seg[:main],@@seg[:tail],@@seg[:credits]=Array.new(4){[]} + def reinitialise(per) + per.headings,per.main,per.tail,per.credits=Array.new(4){[]} end - def cleanup - reinitialise - @@seg_total,@@tracker=0,0 - @@seg_endnotes,@@seg_subtoc={},{} - @@seg_endnotes_array,@@seg_subtoc_array=[],[] - @@seg[:endnote_all]=[] + def cleanup(md,per) + reinitialise(per) + @@tracker=0 + @per.seg_endnotes,@per.seg_subtoc={},{} + @per.seg_endnotes_array,@per.seg_subtoc_array=[],[] + per.endnote_all=[] end - def get_subtoc_endnotes(data) #get endnotes & sub-table of contents subtoc + def get_subtoc_endnotes(data,per) #get endnotes & sub-table of contents subtoc + @per=per data.each do |dob| dob.obj=dob.obj.gsub(/
(.+?)<\/a>/mi,'\1') if @md.flag_auto_endnotes if (dob.is==:heading \ || dob.is==:heading_insert) \ - and dob.ln.to_s =~/^[1234]/ \ - and not @@fn.to_s.empty? - @@seg_endnotes[@@fn]=[] - @@seg_endnotes[@@fn] << @@seg_endnotes_array - @@seg_endnotes_array=[] if dob.ln==4 - @@fns_previous=@md.fns if dob.ln==4 and dob.name =~/^meta/ + && dob.ln.to_s =~/^[1-4]/ \ + and not @per.fn.to_s.empty? + @per.seg_endnotes[@per.fn]=[] + @per.seg_endnotes[@per.fn] << @per.seg_endnotes_array + @per.seg_endnotes_array=[] if dob.ln==4 end if (dob.is==:heading \ || dob.is==:heading_insert) \ - and dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs - @@seg_subtoc[@@fn]=@@seg_subtoc_array - @@seg_subtoc_array=[] + && dob.ln==4 + #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs + @per.seg_subtoc[@per.fn]=@per.seg_subtoc_array + @per.seg_subtoc_array=[] if dob.name \ and dob.obj - @@fn=dob.name + @per.fn=dob.name else - @@fn=(dob.name =~/\S+/) \ + @per.fn=(dob.name =~/\S+/) \ ? dob.name : '' end end end if dob.is==:heading \ - and dob.ln.to_s =~/^[5-7]/ + && dob.ln.to_s =~/^[5-7]/ case dob.ln when 5 format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) @@ -493,7 +543,7 @@ WOK format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc end - @@seg_subtoc_array << subtoc + @per.seg_subtoc_array << subtoc end if @md.flag_auto_endnotes ast,pls='*','+' @@ -504,17 +554,19 @@ WOK endnote_array << dob.obj.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m) end if dob.obj=~/#{Mx[:en_b_o]}#{ast}\d+\s.+?#{Mx[:en_b_c]}/m - endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}#{ast}\d+\s.+?#{Mx[:en_b_c]}/m) + endnote_array \ + << dob.obj.scan(/#{Mx[:en_b_o]}#{ast}\d+\s.+?#{Mx[:en_b_c]}/m) end if dob.obj=~/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m - endnote_array << dob.obj.scan(/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m) + endnote_array \ + << dob.obj.scan(/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m) end endnote_array=endnote_array.flatten #.compact #check compacting endnote_array.each do |note| note_match=note.dup note_match_seg=note.dup e_n=note_match_seg[/(?:#{Mx[:en_a_o]}(?:\d|#{ast}|#{pls})+|#{Mx[:en_b_o]}(?:#{ast}|#{pls})\d+)\s+(.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,1] - try=e_n.split(/
/) + try=e_n.split(//) try.each do |e| txt_obj={ txt: e } format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) @@ -522,17 +574,20 @@ WOK format_seg.endnote_body_indent else format_seg.endnote_body end - @@seg_endnotes_array << note_match + @per.seg_endnotes_array << note_match end try.join('
') #% creation of separate end segment/page of all endnotes referenced back to reference segment m=/(?:#{Mx[:en_a_o]}(?:\d|#{ast}|#{pls})+|#{Mx[:en_b_o]}(?:#{ast}|#{pls})\d+)\s+(.+?href=")(##{Mx[:note_ref]}(?:\d|_a|_b)+".+)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/mi endnote_part_a=note_match_seg[m,1] endnote_part_b=note_match_seg[m,2] - txt_obj={ endnote_part_a: endnote_part_a, endnote_part_b: endnote_part_b } + txt_obj={ + endnote_part_a: endnote_part_a, + endnote_part_b: endnote_part_b + } format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj) - note_match_all_seg=format_seg.endnote_seg_body(@@fn) #BUG WATCH 200408 - @@seg[:endnote_all] << note_match_all_seg + note_match_all_seg=format_seg.endnote_seg_body(@per.fn) #BUG WATCH 200408 + @per.endnote_all << note_match_all_seg end dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') end diff --git a/lib/sisu/current/xhtml_parts.rb b/lib/sisu/current/xhtml_parts.rb index 3a7cff04..a031527e 100644 --- a/lib/sisu/current/xhtml_parts.rb +++ b/lib/sisu/current/xhtml_parts.rb @@ -174,7 +174,7 @@ module SiSU_Proj_XHTML end def credits_sisu_epub %{
-

EPUB generated by #{@v[:project]} v#{@v[:version]}, GPL3

+

EPUB generated by #{@v.project} v#{@v.version}, GPL3

} '' end diff --git a/lib/sisu/current/xhtml_table.rb b/lib/sisu/current/xhtml_table.rb index 42698f0b..84e4bd9a 100644 --- a/lib/sisu/current/xhtml_table.rb +++ b/lib/sisu/current/xhtml_table.rb @@ -58,7 +58,6 @@ module SiSU_XHTML_Table require_relative 'xhtml_parts' # xhtml_parts.rb class TableXHTML include SiSU_Parts_XHTML - @@tablehead=0 @@tablefoot=[] #watch def initialize(table) @table_obj=table diff --git a/lib/sisu/current/xml_dom.rb b/lib/sisu/current/xml_dom.rb index 9707deec..766b2891 100644 --- a/lib/sisu/current/xml_dom.rb +++ b/lib/sisu/current/xml_dom.rb @@ -64,10 +64,11 @@ module SiSU_XML_DOM include SiSU_XML_Munge require_relative 'xml_format' # xml_format.rb include SiSU_XML_Format + require_relative 'xml_persist' # xml_persist.rb require_relative 'rexml' # rexml.rb include SiSU_Rexml require_relative 'shared_metadata' # shared_metadata.rb - @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0 + @@alt_id_count=0 @@tablefoot='' class Source def initialize(opt) @@ -158,18 +159,22 @@ module SiSU_XML_DOM require_relative 'txt_shared' # txt_shared.rb include SiSU_TextUtils require_relative 'xhtml_shared' # decide use, whether xml rather than xhtml - @@xml={ body: [], open: [], close: [], head: [], sc: [] } def initialize(particulars) @env, @md, @ao_arr= particulars.env,particulars.md,particulars.ao_array @trans=SiSU_XML_Munge::Trans.new(@md) @sys=SiSU_Env::SystemCall.new + @per=SiSU_XML_Persist::Persist.new end def songsheet - pre - @data=markup(@ao_arr) - post - publish + begin + pre + @data=markup(@ao_arr) + post + publish + ensure + SiSU_XML_Persist::Persist.new.persist_init + end end protected def xml_markup(dob='') @@ -182,7 +187,7 @@ module SiSU_XML_DOM end def xml_head metadata=SiSU_Metadata::Summary.new(@md).xml_dom.metadata - @@xml[:head] << metadata + @per.head << metadata end def xml_sc(md='') sc=if @md.sc_info @@ -204,7 +209,7 @@ module SiSU_XML_DOM WOK else '' end - @@xml[:sc]=sc + @per.sc=sc end def xml_element(dob,xml_el='',xml_content='',type='norm') n=n1=n2=n3=0 @@ -221,7 +226,7 @@ WOK else '' end xml_el ||='' - @@xml[:body] <<< #{Ax[:tab]*n2} @@ -262,26 +267,26 @@ WOK if @cont[1] \ or @cont[2] \ or @cont[3] - @@xml[:body] << "#{Ax[:tab]*5}" + @per.body << "#{Ax[:tab]*5}" end @cont[1]=false if @cont[1] @cont[2]=false if @cont[2] @cont[3]=false if @cont[3] ####### attempt to close contents if @copen[4] # 4~ - [4,3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [4,3,2,1].each { |v| @per.body << "#{Ax[:tab]*n}" } @copen[1]=@copen[2]=@copen[3]=@copen[4]=false elsif @copen[3] # 3~ - [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [3,2,1].each { |v| @per.body << "#{Ax[:tab]*n}" } @copen[1]=@copen[2]=@copen[3]=false elsif @copen[2] # 2~ - [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [2,1].each { |v| @per.body << "#{Ax[:tab]*n}" } @copen[1]=@copen[2]=@copen[3]=false elsif @copen[1] # 1~ - [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [1].each { |v| @per.body << "#{Ax[:tab]*n}" } @copen[1]=@copen[2]=@copen[3]=false end - @@xml[:body] << "#{Ax[:tab]*y}" if @level[x] + @per.body << "#{Ax[:tab]*y}" if @level[x] @level[x]=false end when 4..7 @@ -295,29 +300,29 @@ WOK xml_content="\n#{Ax[:tab]*5}" case lv when 4 - @@xml[:body] << "#{Ax[:tab]*5}" if @cont[1] + @per.body << "#{Ax[:tab]*5}" if @cont[1] if @copen[4]==true # 4~ - [4,3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [4,3,2,1].each { |v| @per.body << "#{Ax[:tab]*n}" } elsif @copen[3]==true # 3~ - [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [3,2,1].each { |v| @per.body << "#{Ax[:tab]*n}" } elsif @copen[2]==true # 2~ - [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [2,1].each { |v| @per.body << "#{Ax[:tab]*n}" } elsif @copen[1]==true # 1~ - [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [1].each { |v| @per.body << "#{Ax[:tab]*n}" } end @cont[1]=true when 5 if @cont[3] \ or @cont[2] \ or @cont[1] - @@xml[:body] << "#{Ax[:tab]*5}" + @per.body << "#{Ax[:tab]*5}" end if @copen[4]==true #4~ - [4,3,2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [4,3,2].each { |v| @per.body << "#{Ax[:tab]*n}" } elsif @copen[3]==true #3~ - [3,2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [3,2].each { |v| @per.body << "#{Ax[:tab]*n}" } elsif @copen[2]==true #2~ - [2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [2].each { |v| @per.body << "#{Ax[:tab]*n}" } end @cont[2]=true when 6 @@ -325,12 +330,12 @@ WOK or @cont[3] \ or @cont[2] \ or @cont[1] - @@xml[:body] << "#{Ax[:tab]*5}" + @per.body << "#{Ax[:tab]*5}" end if @copen[4] #4~ - [4,3].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [4,3].each { |v| @per.body << "#{Ax[:tab]*n}" } elsif @copen[3] #3~ - [3].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [3].each { |v| @per.body << "#{Ax[:tab]*n}" } end @cont[3]=true when 7 @@ -338,10 +343,10 @@ WOK or @cont[3] \ or @cont[2] \ or @cont[1] - @@xml[:body] << "#{Ax[:tab]*5}" + @per.body << "#{Ax[:tab]*5}" end if @copen[4] #4~ - [4].each { |v| @@xml[:body] << "#{Ax[:tab]*n}" } + [4].each { |v| @per.body << "#{Ax[:tab]*n}" } end @cont[4]=true end @@ -357,15 +362,15 @@ WOK if defined? dob.obj # main text, contents, body KEEP if defined? dob.ocn \ and dob.ocn - @@xml[:body] << %{#{Ax[:tab]*6}} - @@xml[:body] << %{#{Ax[:tab]*7}#{dob.ocn}} if defined? dob.ocn + @per.body << %{#{Ax[:tab]*6}} + @per.body << %{#{Ax[:tab]*7}#{dob.ocn}} if defined? dob.ocn end - #@@xml[:body] << %{#{Ax[:tab]*7}#{dob.obj}} - #@@xml[:body] << %{#{Ax[:tab]*7}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*7}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*8}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*7}} - @@xml[:body] << %{#{Ax[:tab]*6}} + #@per.body << %{#{Ax[:tab]*7}#{dob.obj}} + #@per.body << %{#{Ax[:tab]*7}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*7}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*8}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*7}} + @per.body << %{#{Ax[:tab]*6}} end end def block_structure(dob) @@ -523,16 +528,16 @@ WOK y=x - 1; v=x - 3 if @level[x]==true #2004w36 bug fix? watch/test previous logic broke on free.for.all @coontent_flag introduced if @content_flag==true - @@xml[:body] << "#{Ax[:tab]*5}\n#{Ax[:tab]*y}" + @per.body << "#{Ax[:tab]*5}\n#{Ax[:tab]*y}" @content_flag=false else - @@xml[:body] << "\n#{Ax[:tab]*y}" + @per.body << "\n#{Ax[:tab]*y}" end end end 3.downto(1) do |x| y=x - 1 - @@xml[:body] << "#{Ax[:tab]*y}" if @level[x]==true + @per.body << "#{Ax[:tab]*y}" if @level[x]==true end end def pre @@ -541,29 +546,28 @@ WOK encoding=if @sys.locale =~/utf-?8/i then '' else '' end - @@xml[:open] =< WOK - @@xml[:head] << '' - @@xml[:body] << '' + @per.head << '' + @per.body << '' end def post - @@xml[:head] << @@xml[:sc] - @@xml[:head] << '' - @@xml[:body] << '' - @@xml[:close] = '' + @per.head << @per.sc + @per.head << '' + @per.body << '' + @per.close << '' end def publish content=[] - content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata] - content << @@xml[:owner_details] if @md.stmp =~/\w\w/ - content << @@xml[:tail] << @@xml[:close] + content << @per.open << @per.head << @per.body # << @per.metadata + content << @per.tail << @per.close content=content.flatten.compact Output.new(content,@md).xml - @@xml[:head],@@xml[:body],@@xml[:tail]=[],[],[] # check whether should be nil + @per.head,@per.body,@per.tail=[],[],[] # check whether should be nil end end class Output @@ -591,19 +595,21 @@ WOK if @prog.tidy !=false if (@md.opt.act[:verbose_plus][:set]==:on \ || @md.opt.act[:maintenance][:set]==:on) - SiSU_Screen::Ansi.new( - @md.opt.act[:color_state][:set], - 'invert', - 'Using XML Tidy', - 'check document structure' - ).colorize unless @md.opt.act[:quiet][:set]==:on - tell=SiSU_Screen::Ansi.new( - @md.opt.act[:color_state][:set], - 'invert', - '', - '' - ) - tell.grey_open unless @md.opt.act[:quiet][:set]==:on + unless @md.opt.act[:quiet][:set]==:on + SiSU_Screen::Ansi.new( + @md.opt.act[:color_state][:set], + 'invert', + 'Using XML Tidy', + 'check document structure' + ).colorize + tell=SiSU_Screen::Ansi.new( + @md.opt.act[:color_state][:set], + 'invert', + '', + '' + ) + tell.grey_open + end tidyfile='/dev/null' #don't want one or screen output, check for alternative flags tidy=SiSU_Env::SystemCall.new(@file,tidyfile) tidy.well_formed? diff --git a/lib/sisu/current/xml_fictionbook2.rb b/lib/sisu/current/xml_fictionbook2.rb index f8c0ed6b..39de0e56 100644 --- a/lib/sisu/current/xml_fictionbook2.rb +++ b/lib/sisu/current/xml_fictionbook2.rb @@ -204,8 +204,8 @@ module SiSU_XML_Fictionbook - #{version[:project]} #{version[:version]} and #{rb_ver} - #{version[:date]} + #{version.project} #{version.version} and #{rb_ver} + #{version.date} #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest} 1.0 diff --git a/lib/sisu/current/xml_odf_odt.rb b/lib/sisu/current/xml_odf_odt.rb index 8b7c493c..8a09fb88 100644 --- a/lib/sisu/current/xml_odf_odt.rb +++ b/lib/sisu/current/xml_odf_odt.rb @@ -67,7 +67,8 @@ module SiSU_XML_ODF_ODT require_relative 'txt_shared' # txt_shared.rb require_relative 'xml_shared' # xml_shared.rb include SiSU_XML_Munge - @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 + require_relative 'xml_persist' # xml_persist.rb + @@alt_id_count,@@alt_id_count=0,0 class Source begin require 'zlib' @@ -128,7 +129,6 @@ module SiSU_XML_ODF_ODT require_relative 'txt_shared' # txt_shared.rb include SiSU_Parts_XML @@img_count=0 - @@odf={ body: [], head: [], toc: [], metadata: [], tail: [], book_idx: [], endnotes: [] } @@docstart=true @@fns=nil def initialize(particulars) @@ -140,10 +140,12 @@ module SiSU_XML_ODF_ODT end def songsheet begin + @per=SiSU_XML_Persist::Persist.new pre @data=markup(@ao_array) publish ensure + SiSU_XML_Persist::Persist.new.persist_init unless (@md.opt.act[:verbose_plus][:set]==:on \ || @md.opt.act[:maintenance][:set]==:on) if @env.processing_path.odt =~/od[ft]/ @@ -187,18 +189,18 @@ module SiSU_XML_ODF_ODT end idx_arr << x.strip if x.is_a?(String) end - @@odf[:book_idx]=idx_arr.join + @per.book_idx=idx_arr.join end end def odf_metadata - @@odf[:metadata]=SiSU_Metadata::Summary.new(@md). + @per.metadata=SiSU_Metadata::Summary.new(@md). odf.metadata end def odf_tail manifest="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}" - @@odf[:tail] << %{Available document outputs:
<#{manifest}>
} - @@odf[:tail] << %{\nSiSU: <www.jus.uio.no/sisu> and <www.sisudoc.org>} - @@odf[:tail] << "\n" + @per.tail << %{Available document outputs:
<#{manifest}>
} + @per.tail << %{\nSiSU: <www.jus.uio.no/sisu> and <www.sisudoc.org>} + @per.tail << "\n" end def set_bookmark_tag(dob) SiSU_XML_ODF_ODT_Format::Tags.new.set_bookmark_tag(dob) @@ -616,26 +618,26 @@ module SiSU_XML_ODF_ODT end end if dob.is==:heading - @@odf[:body] << heading(dob,p_num).obj << break_line*2 + @per.body << heading(dob,p_num).obj << break_line*2 if SiSU_Env::ProcessingSettings.new(md).build.toc? if dob.lv =~/[A-D1]/i - @@odf[:toc] << toc(dob,p_num).obj + @per.toc << toc(dob,p_num).obj end end elsif dob.is ==:verse - @@odf[:body] << poem(dob,p_num).obj << break_line*2 + @per.body << poem(dob,p_num).obj << break_line*2 elsif dob.is==:group - @@odf[:body] << group(dob,p_num).obj << break_line*2 + @per.body << group(dob,p_num).obj << break_line*2 elsif dob.is==:block - @@odf[:body] << block(dob,p_num).obj << break_line*2 + @per.body << block(dob,p_num).obj << break_line*2 elsif dob.is==:code - @@odf[:body] << code(dob,p_num).obj << break_line*2 + @per.body << code(dob,p_num).obj << break_line*2 elsif dob.is==:table #elsif dob.obj =~ / ' content << - @@odf[:head] << - @@odf[:toc] << + @per.head << + @per.toc << br_pg << - @@odf[:body] << - @@odf[:book_idx] << + @per.body << + @per.book_idx << br_pg << - @@odf[:metadata] << - @@odf[:tail] + @per.metadata << + @per.tail SiSU_XML_ODF_ODT::Source::Output.new(content,@md,@env).odf @@odf={ head: [], toc: [], body: [], tail: [], book_idx: [], metadata: [] } end diff --git a/lib/sisu/current/xml_odf_odt_format.rb b/lib/sisu/current/xml_odf_odt_format.rb index 436c3996..220f5def 100644 --- a/lib/sisu/current/xml_odf_odt_format.rb +++ b/lib/sisu/current/xml_odf_odt_format.rb @@ -162,7 +162,7 @@ module SiSU_XML_ODF_ODT_Format end end class Table - @@tablehead,@@table_counter=0,0 #reinitialise on new file + @@table_counter=0 @@tablefoot=[] #watch @@fns='' def initialize(md,dob,p_num) @@ -265,7 +265,7 @@ module SiSU_XML_ODF_ODT_Format class ODT_Head_1_2 def initialize(md) @md=md - @generator="#{@md.sisu_version[:project]} #{@md.sisu_version[:version]} #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" + @generator="#{@md.project_details.project} #{@md.project_details.version} #{@md.project_details.date_stamp} (#{@md.project_details.date})" end def manifest_rdf x=< + + +** 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=end +module SiSU_XML_Persist + class Persist + @@persist=nil + attr_accessor :head,:toc,:body,:tail,:open,:close,:sc,:endnotes,:book_idx,:metadata + #attr_accessor :head,:body,:tail,:open,:close,:sc +#@@odf={ body: [], head: [], toc: [], metadata: [], tail: [], book_idx: [], endnotes: [] } + def initialize(args=nil) + @@persist=args=(args ? args : (@@persist || persist_init_hash_values)) + @head=args[:head] + @toc=args[:toc] + @body=args[:body] + @tail=args[:tail] + @open=args[:open] + @close=args[:close] + @sc=args[:sc] + @endnotes=args[:endnotes] + @book_idx=args[:book_idx] + @metadata=args[:metadata] + end + def head + @head + end + def toc + @toc + end + def body + @body + end + def tail + @tail + end + def open + @open + end + def close + @close + end + def sc + @sc + end + def endnotes + @endnotes + end + def book_idx + @book_idx + end + def metadata + @metadata + end + def persist_init_hash_values + { + head: [], + toc: [], + body: [], + tail: [], + open: [], + close: [], + sc: [], + endnotes: [], + book_idx: [], + metadata: [], + } + end + def persist_init + @@persist=nil + Persist.new(persist_init_hash_values) + end + end +end +__END__ diff --git a/lib/sisu/current/xml_sax.rb b/lib/sisu/current/xml_sax.rb index 21455628..21e5d50d 100644 --- a/lib/sisu/current/xml_sax.rb +++ b/lib/sisu/current/xml_sax.rb @@ -63,10 +63,11 @@ module SiSU_XML_SAX include SiSU_XML_Munge require_relative 'xml_format' # xml_format.rb include SiSU_XML_Format + require_relative 'xml_persist' # xml_persist.rb require_relative 'rexml' # rexml.rb include SiSU_Rexml require_relative 'shared_metadata' # shared_metadata.rb - @@alt_id_count,@@tablehead,@@number_of_cols=0,0,0 + @@alt_id_count=0 @@tablefoot='' class Source def initialize(opt) @@ -159,18 +160,22 @@ module SiSU_XML_SAX include SiSU_TextUtils require_relative 'css' # css.rb require_relative 'xhtml_shared' # decide use, whether xml rather than xhtml - @@xml={ body: [], open: [], close: [], head: [] } def initialize(particulars) @env, @md, @ao_arr= particulars.env,particulars.md,particulars.ao_array @trans=SiSU_XML_Munge::Trans.new(@md) @sys=SiSU_Env::SystemCall.new + @per=SiSU_XML_Persist::Persist.new end def songsheet - pre - @data=markup(@ao_arr) - post - publish + begin + pre + @data=markup(@ao_arr) + post + publish + ensure + SiSU_XML_Persist::Persist.new.persist_init + end end protected def embedded_endnotes(dob='') @@ -219,7 +224,7 @@ WOK end def xml_head metadata=SiSU_Metadata::Summary.new(@md).xml_sax.metadata - @@xml[:head] << metadata + @per.head << metadata end def xml_sc(md='') sc=if @md.sc_info @@ -241,7 +246,7 @@ WOK WOK else '' end - @@xml[:sc]=sc + @per.sc=sc end def xml_structure(dob,type='norm') if dob.is==:heading @@ -257,16 +262,16 @@ WOK util=SiSU_TextUtils::Wrap.new(dob.obj,70) wrapped=util.line_wrap #end - @@xml[:body] << if defined? dob.ocn; %{#{Ax[:tab]*0}} + @per.body << if defined? dob.ocn; %{#{Ax[:tab]*0}} else "#{Ax[:tab]*0}" end - @@xml[:body] << "#{Ax[:tab]*1}#{dob.ocn}" if defined? dob.ocn - @@xml[:body] << if lv; %{#{Ax[:tab]*1}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*1}#{dob.ocn}" if defined? dob.ocn + @per.body << if lv; %{#{Ax[:tab]*1}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}} else %{#{Ax[:tab]*1}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}} # main text, contents, body KEEP end - @@xml[:body] << @endnotes if @endnotes - ##@@xml[:body] << "#{Ax[:tab]*1}#{dob[@regx,2]}" if dob[@regx,2] # old unwrapped main text, contents, body KEEP - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << @endnotes if @endnotes + ##@per.body << "#{Ax[:tab]*1}#{dob[@regx,2]}" if dob[@regx,2] # old unwrapped main text, contents, body KEEP + @per.body << "#{Ax[:tab]*0}" @endnotes=[] end def block_structure(dob='') @@ -275,13 +280,13 @@ WOK gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'\1') #footnote/endnote clean dob=@trans.markup_block(dob) dob.obj=dob.obj.strip - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << "#{Ax[:tab]*0}" - @@xml[:body] << @endnotes if @endnotes + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*0}" + @per.body << @endnotes if @endnotes @endnotes=[] end def group_structure(dob='') @@ -290,48 +295,48 @@ WOK gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'\1') #footnote/endnote clean dob=@trans.markup_group(dob) dob.obj=dob.obj.strip - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << "#{Ax[:tab]*0}" - @@xml[:body] << @endnotes if @endnotes + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*0}" + @per.body << @endnotes if @endnotes @endnotes=[] end def poem_structure(dob='') dob=@trans.markup_group(dob) #dob.obj.gsub(/\s\s/,'  ') dob.obj=dob.obj.strip - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*0}} end def code_structure(dob='') dob=@trans.markup_group(dob) dob.obj=dob.obj.gsub(/\s\s/,'  ').strip - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*1}} - @@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*1}} + @per.body << "#{Ax[:tab]*0}" end def table_structure(dob) table=SiSU_XHTML_Shared::TableXHTML.new(dob) - @@xml[:body] << %{#{Ax[:tab]*0}} - @@xml[:body] << %{#{Ax[:tab]*1}#{dob.ocn}} - @@xml[:body] << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} - @@xml[:body] << %{#{Ax[:tab]*2}#{table.table.obj}} - @@xml[:body] << %{#{Ax[:tab]*1}} - #@@xml[:body] << %{#{tab*1}} - @@xml[:body] << "#{Ax[:tab]*0}" - #@@xml[:body] << %{#{Ax[:tab]*0}} - #@@xml[:body] << %{#{Ax[:tab]*1}#{table}\n#{Ax[:tab]*1}} # unless lv # main text, contents, body KEEP - #@@xml[:body] << "#{Ax[:tab]*0}" + @per.body << %{#{Ax[:tab]*0}} + @per.body << %{#{Ax[:tab]*1}#{dob.ocn}} + @per.body << %{#{Ax[:tab]*1}#{Ax[:tab]*1}} + @per.body << %{#{Ax[:tab]*2}#{table.table.obj}} + @per.body << %{#{Ax[:tab]*1}} + #@per.body << %{#{tab*1}} + @per.body << "#{Ax[:tab]*0}" + #@per.body << %{#{Ax[:tab]*0}} + #@per.body << %{#{Ax[:tab]*1}#{table}\n#{Ax[:tab]*1}} # unless lv # main text, contents, body KEEP + #@per.body << "#{Ax[:tab]*0}" #@endnotes=[] end def markup(data) @@ -403,7 +408,7 @@ WOK elsif dob.obj =~/(Owner Details)/ # txt_obj={ txt: '
Owner Details' } # format_scroll=FormatScroll.new(@md,txt_obj) -# @@xml[:owner_details]=format_scroll.bold_para +# @per.owner_details=format_scroll.bold_para dob.obj='' end if dob.obj =~// \ @@ -424,41 +429,41 @@ WOK end 7.downto(4) do |x| y=x - 1; v=x - 3 - @@xml[:body] << "#{Ax[:tab]*5}\n#{Ax[:tab]*y}" if @level[x]==true + @per.body << "#{Ax[:tab]*5}\n#{Ax[:tab]*y}" if @level[x]==true end 3.downto(1) do |x| y=x - 1 - @@xml[:body] << "#{Ax[:tab]*y}" if @level[x]==true + @per.body << "#{Ax[:tab]*y}" if @level[x]==true end - #7.downto(1) { |x| y=x - 1; @@xml[:body] << "#{Ax[:tab]*y}" if @level[x]==true } + #7.downto(1) { |x| y=x - 1; @per.body << "#{Ax[:tab]*y}" if @level[x]==true } end def pre rdf=SiSU_XML_Tags::RDF.new(@md) - @@xml[:head],@@xml[:body]=[],[] + @per.head,@per.body=[],[] stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xml_sax').stylesheet encoding=if @sys.locale =~/utf-?8/i then '' else '' end - @@xml[:open] =< WOK - @@xml[:head] << '' - @@xml[:body] << '' + @per.head << '' + @per.body << '' end def post - @@xml[:head] << @@xml[:sc] - @@xml[:head] << '' - @@xml[:body] << '' - @@xml[:close] = '' + @per.head << @per.sc + @per.head << '' + @per.body << '' + @per.close = '' end def publish content=[] - content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata] - content << @@xml[:owner_details] if @md.stmp =~/\w\w/ - content << @@xml[:tail] << @@xml[:close] + content << @per.open << @per.head << @per.body #<< @per.metadata + #content << @per.owner_details if @md.stmp =~/\w\w/ + content << @per.tail << @per.close content=content.flatten.compact Output.new(content,@md).xml @@xml={} @@ -496,11 +501,11 @@ WOK 'check document structure' ).colorize tell=SiSU_Screen::Ansi.new( - @md.opt.act[:color_state][:set], - 'invert', - '', - '' - ) + @md.opt.act[:color_state][:set], + 'invert', + '', + '' + ) tell.grey_open end tidyfile='/dev/null' #don't want one or screen output, check for alternative flags diff --git a/lib/sisu/current/xml_shared.rb b/lib/sisu/current/xml_shared.rb index f392d9fc..4e16aa9d 100644 --- a/lib/sisu/current/xml_shared.rb +++ b/lib/sisu/current/xml_shared.rb @@ -608,7 +608,7 @@ module SiSU_XML_Tags #Format rdftoc end def comment_xml(extra='') - generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version] + generator="Generated by: #{@md.project_details.project} #{@md.project_details.version} of #{@md.project_details.date_stamp} (#{@md.project_details.date})" if @md.project_details.version lastdone="Last Generated on: #{Time.now}" rubyv="Ruby version: #{@md.ruby_version}" sc=if @md.sc_info -- cgit v1.2.3

#{@translate.metadata}

#{@translate.description}

#{@translate.metadata}

#{@translate.description}