diff options
Diffstat (limited to 'lib/sisu/develop/ao.rb')
-rw-r--r-- | lib/sisu/develop/ao.rb | 590 |
1 files changed, 0 insertions, 590 deletions
diff --git a/lib/sisu/develop/ao.rb b/lib/sisu/develop/ao.rb deleted file mode 100644 index 0ac6f502..00000000 --- a/lib/sisu/develop/ao.rb +++ /dev/null @@ -1,590 +0,0 @@ -# encoding: utf-8 -=begin - -* Name: SiSU - -** Description: documents, structuring, processing, publishing, search -*** preprocessing, (document abstraction), data abstraction used in subsequent - processing - -** Author: Ralph Amissah - <ralph@amissah.com> - <ralph.amissah@gmail.com> - -** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah, - All Rights Reserved. - -** License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see <http://www.gnu.org/licenses/>. - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - <http://www.fsf.org/licensing/licenses/gpl.html> - <http://www.gnu.org/licenses/gpl.html> - - <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> - -** SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - -** Hompages: - <http://www.jus.uio.no/sisu> - <http://www.sisudoc.org> - -** Git - <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> - <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/ao.rb;hb=HEAD> - -=end -module SiSU_AO - require_relative 'se' # se.rb - include SiSU_Env - require_relative 'dp' # dp.rb - include SiSU_Param - require_relative 'ao_doc_objects' # ao_doc_objects.rb - require_relative 'ao_syntax' # ao_syntax.rb - include SiSU_AO_Syntax - require_relative 'ao_doc_str' # ao_doc_str.rb - require_relative 'ao_references' # ao_references.rb - require_relative 'ao_idx' # ao_idx.rb - require_relative 'ao_numbering' # ao_numbering.rb - require_relative 'ao_hash_digest' # ao_hash_digest.rb - require_relative 'ao_endnotes' # ao_endnotes.rb - require_relative 'ao_images' # ao_images.rb - require_relative 'ao_metadata' # ao_metadata.rb - require_relative 'ao_character_check' # ao_character_check.rb - require_relative 'ao_misc_arrange' # ao_misc_arrange.rb - require_relative 'ao_expand_insertions' # ao_expand_insertions.rb - require_relative 'ao_persist' # ao_persist.rb - require_relative 'prog_text_translation' # prog_text_translation.rb - require_relative 'shared_sem' # shared_sem.rb - class Instantiate < SiSU_Param::Parameters::Instructions - def initialize - @@flag_vocab=0 - @@line_mode='' - end - end - class Source <Instantiate - def initialize(opt,fnx=nil,process=:complete) - @opt,@fnx,@process=opt,fnx,process - @per ||=SiSU_AO_Persist::Persist.new.persist_init - @per.fns ||=opt.fns - fn_use=if fnx \ - and fnx =~/\.ss[tmi]$/ - fnx - elsif opt.fns =~/\.ssm$/ - opt.fns + '.sst' - else - opt.fns - end - @make_fns=SiSU_Env::InfoFile.new(fn_use) - @fnm=@make_fns.marshal.ao_metadata - @fnc=@make_fns.marshal.ao_content - @idx_sst=@make_fns.marshal.ao_idx_sst_rel_html_seg - @idx_raw=@make_fns.marshal.ao_idx_sst_rel - @idx_html=@make_fns.marshal.ao_idx_html - @idx_xhtml=@make_fns.marshal.ao_idx_xhtml - @map_nametags=@make_fns.marshal.ao_map_nametags - @map_ocn_htmlseg=@make_fns.marshal.ao_map_ocn_htmlseg - @env=SiSU_Env::InfoEnv.new - end - def read #creates ao - begin - @per=SiSU_AO_Persist::Persist.new - @per.ao_arr=[] - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - create_ao - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@per.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO_Persist::Persist.new.persist_init - SiSU_AO::Instantiate.new - end - end - def get #reads ao, unless does not exist then creates first - begin - ao=[] - unless @per.fns==@opt.fns \ - or @per.fns==@fnx - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - @per.ao_arr=[] - end - ao=(@per.ao_arr.empty?) \ - ? read_fnc - : @per.ao_arr.dup - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO::Instantiate.new - end - end - def get_idx_sst #reads ao idx.sst, #unless does not exist then creates first - begin - ao=[] - unless @per.fns==@opt.fns \ - or @per.fns==@fnx - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - @per.idx_arr_sst=[] - end - ao=(@per.idx_arr_sst.empty?) \ - ? read_idx_sst - : @per.idx_arr_sst.dup #check - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO::Instantiate.new - end - end - def get_idx_raw - begin - ao=[] - unless @per.fns==@opt.fns \ - or @per.fns==@fnx - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - @per.idx_arr_tex=[] - end - ao=(@per.idx_arr_tex.empty?) \ - ? read_idx_raw - : @per.idx_arr_tex.dup #check - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO::Instantiate.new - end - end - def get_idx_html #reads ao idx.html, #unless does not exist then creates first - begin - ao=[] - unless @per.fns==@opt.fns \ - or @per.fns==@fnx - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - @per.idx_arr_html=[] - end - ao=(@per.idx_arr_html.empty?) \ - ? read_idx_html - : @per.idx_arr_html.dup - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO::Instantiate.new - end - end - def get_idx_xhtml #reads ao idx.xhtml, #unless does not exist then creates first - begin - ao=[] - unless @per.fns==@opt.fns \ - or @per.fns==@fnx - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - @per.idx_arr_xhtml=[] #... - end - ao=(@per.idx_arr_xhtml.empty?) \ - ? read_idx_xhtml - : @per.idx_arr_xhtml.dup - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO::Instantiate.new - end - end - def get_map_nametags #reads ao map.nametags, #unless does not exist then creates first - begin - ao=[] - unless @per.fns==@opt.fns \ - or @per.fns==@fnx - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - @per.map_arr_nametags=[] - end - ao=(@per.map_arr_nametags.empty?) \ - ? read_map_nametags - : @per.map_arr_nametags.dup - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO::Instantiate.new - end - end - def get_map_ocn_htmlseg #reads ao map.ocn_htmlseg, #unless does not exist then creates first - begin - ao=[] - unless @per.fns==@opt.fns \ - or @per.fns==@fnx - @per.fns=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - @per.map_arr_ocn_htmlseg=[] - end - ao=(@per.map_arr_ocn_htmlseg.empty?) \ - ? read_map_ocn_htmlseg - : @per.map_arr_ocn_htmlseg.dup - rescue - SiSU_Errors::Rescued.new($!,$@,@opt.selections,@opt.fns).location do - __LINE__.to_s + ':' + __FILE__ - end - ensure - SiSU_AO::Instantiate.new - end - end - protected - def create_ao - ao_array=[] - fnp = @fnx ? "#{@opt.fno} #{@fnx}" : @opt.fno - unless @opt.act[:quiet][:set]==:on - tell=(@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) \ - ? SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Document Abstraction' - ) - : SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Document Abstraction', - "[#{@opt.f_pth[:lng_is]}] #{fnp}" - ) - tell.blue_title_hi - end - fn=(@fnx && @fnx =~/\.ss[tmi]$/) \ - ? @fnx - : @opt.fns - if @opt.fno =~/\.txz$/ - Dir.chdir(@opt.f_pth[:pth]) - end - meta=file_array=@env.source_file_processing_array(fn) - @md=SiSU_Param::Parameters::Instructions.new(meta,@opt).extract - meta=nil - ao=SiSU_AO::Make.new(fn,@md,file_array,@fnx,@process).song - if (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - cf=SiSU_Env::CreateFile.new(fn) - if (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on) - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - @opt.fns, - "~meta/#{@opt.fns}.meta" - ).output - elsif @opt.act[:maintenance][:set]==:on - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - "ao -> #{cf.meta}" - ).txt_grey - end - end - ao.each {|s| ao_array << s} - if @opt.act[:maintenance][:set]==:on - ao_array.each do |obj| - if defined? obj.parent - if defined? obj.ln - if defined? obj.node - puts %{#{obj.ln}: #{obj.ocn} : #{obj.parent} : #{obj.node} - #{obj.lc}} - else - puts %{#{obj.ln}: #{obj.ocn} : #{obj.parent}} - end - else - if defined? obj.node - puts %{ #{obj.ocn} : #{obj.parent} : #{obj.node} - #{obj.lc}} - else - puts %{ #{obj.ocn} : #{obj.parent}} - end - end - end - end - end - ao_array - end - def read_fnm - ao=[] - ao=(FileTest.file?(@fnm)) \ - ? (File.open(@fnm,'r:utf-8'){ |f| ao=Marshal.load(f)}) - : SiSU_AO::Source.new(@opt).create_ao - end - def read_fnc - ao=[] - ao=(FileTest.file?(@fnc)) \ - ? (File.open(@fnc,'r:utf-8'){ |f| ao=Marshal.load(f)}) - : SiSU_AO::Source.new(@opt,@fnx,@process).create_ao - end - def read_idx_sst - m=[] - m=(FileTest.file?(@idx_sst)) \ - ? (File.open(@idx_sst,'r:utf-8'){ |f| m=Marshal.load(f)}) - : nil - end - def read_idx_raw - m=[] - m=(FileTest.file?(@idx_raw)) \ - ? (File.open(@idx_raw,'r:utf-8'){ |f| m=Marshal.load(f)}) - : nil - end - def read_idx_html - m=[] - m=(FileTest.file?(@idx_html)) \ - ? (File.open(@idx_html,'r:utf-8'){ |f| m=Marshal.load(f)}) - : nil - end - def read_idx_xhtml - m=[] - m=(FileTest.file?(@idx_xhtml)) \ - ? (File.open(@idx_xhtml,'r:utf-8'){ |f| m=Marshal.load(f)}) - : nil - end - def read_map_nametags - m=[] - m=(FileTest.file?(@map_nametags)) \ - ? (File.open(@map_nametags,'r:utf-8'){ |f| m=Marshal.load(f)}) - : nil - end - def read_map_ocn_htmlseg - m=[] - m=(FileTest.file?(@map_ocn_htmlseg)) \ - ? (File.open(@map_ocn_htmlseg,'r:utf-8'){ |f| m=Marshal.load(f)}) - : nil - end - end - class Output - def initialize(fn,md,data) - @fn,@md,@data=fn,md,data - @cf=SiSU_Env::CreateFile.new(@fn) - @make=SiSU_Env::InfoFile.new(@fn) - @dir=SiSU_Env::InfoEnv.new(@fn) - end - def screen_dump(o) - if defined? o.of - print %{OF: #{o.of}; } - end - if defined? o.is - print %{IS: #{o.is.to_s}; } - end - if defined? o.ocn - print %{OCN: #{o.ocn}; } - end - if defined? o.node - print %{NODE: #{o.node}; } - end - if defined? o.parent - print %{Parent: #{o.parent}; } - end - if defined? o.obj and not o.obj.empty? - puts %{\n#{o.obj}; } - else "\n" - end - end - def screen_print(t_o) - if defined? t_o - print ' ' + t_o.to_s - end - end - def screen_output(data) - data.each do |o| - print o.class - screen_print(o.ocn) - screen_print(o.obj) - puts "\n" - end - end - def hard_output - if @md.opt.act[:maintenance][:set]==:on - filename_meta=@cf.metaverse.file_meta - @data.each {|o| filename_meta.puts o.inspect.sub(/:0x[0-9a-f]{8}\s/,': ')} #to make diffing easier - filename_txt=@cf.metaverse.file_txt - @data.each do |o| - if defined? o.ocn - filename_txt.puts case o.is - when :heading - "[#{o.is.to_s} #{o.lv}~#{o.name} [#{o.ocn}]] #{o.obj}" - else "[#{o.is.to_s} [#{o.ocn}]] #{o.obj}" - end - else - filename_txt.puts case o.is - when :meta - "[m~#{o.tag}] #{o.obj}" - else "[#{o.is.to_s}] #{o.obj}" - end - end - end - filename_debug=@cf.file_debug - @data.each do |o| - if defined? o.ocn - case o.is - when :heading - filename_debug.puts - "#{o.is.to_s} #{o.lv}~#{o.name} odv=#{o.odv} osp=#{o.osp} [#{o.ocn}] -->\n\t#{o.obj}" - end - end - end - else - hard="#{@dir.processing_path.ao}/#{@md.fns}.meta" - File.unlink(hard) if FileTest.file?(hard) - hard="#{@dir.processing_path.ao}/#{@md.fns}.txt" - File.unlink(hard) if FileTest.file?(hard) - hard="#{@dir.processing_path.ao}/#{@md.fns}.debug.txt" - File.unlink(hard) if FileTest.file?(hard) - end - end - def make_marshal_content - marshal_ao=@make.marshal.ao_content - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) - end - def make_marshal_metadata - marshal_ao=@make.marshal.ao_metadata - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) - end - def idx_html_hard_output - if @md.book_idx \ - and @md.opt.act[:maintenance][:set]==:on - filename_meta=@cf.file_meta_idx_html - if @data.is_a?(Array) - @data.each {|s| p s.inspect + "\n" unless s.is_a?(String)} - @data.each {|s| filename_meta.puts s.strip + "\n" unless s.strip.empty?} - end - else - hard_idx_html="#{@dir.processing_path.ao}/#{@md.fns}.idx.html" - File.unlink(hard_idx_html) if FileTest.file?(hard_idx_html) - end - end - def make_marshal_idx_sst_html_seg - marshal_ao=@make.marshal.ao_idx_sst_rel_html_seg - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ - if @data.is_a?(Array) - end - def make_marshal_idx_sst_rel - marshal_ao=@make.marshal.ao_idx_sst_rel - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ - if @data.is_a?(Array) - end - def make_marshal_idx_html - marshal_ao=@make.marshal.ao_idx_html - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ - if @data.is_a?(Array) - end - def make_marshal_idx_xhtml - marshal_ao=@make.marshal.ao_idx_xhtml - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ - if @data.is_a?(Array) - end - def make_marshal_map_nametags - marshal_ao=@make.marshal.ao_map_nametags - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ - if @data.is_a?(Hash) - end - def make_marshal_map_name_ocn_htmlseg - marshal_ao=@make.marshal.ao_map_ocn_htmlseg - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ - if @data.is_a?(Hash) - end - end - class Make - def initialize(fn,md,data,fnx,process) - @fn,@md,@data,@fnx,@process=fn,md,data,fnx,process - @env=SiSU_Env::InfoEnv.new(@md.fns) - end - def reset - @@flag_vocab=0 - @@line_mode='' - end - def song - reset - data_txt=@data - data_txt= - SiSU_AO_Insertions::Insertions.new(@md,data_txt). # ao_expand_insertions.rb - expand_insertions? - data_txt= - SiSU_AO_MiscArrangeText::SI.new(@md,data_txt). # ao_misc_arrange.rb - prepare_text - data_obj, - metadata, - bibliography= - SiSU_AO_DocumentStructureExtract::Build.new(@md,data_txt). # ao_doc_str.rb - identify_parts - data_obj= - SiSU_AO_Syntax::Markup.new(@md,data_obj,bibliography).songsheet # ao_syntax.rb - data_obj, - endnote_array= - SiSU_AO_CharacterCheck::Check.new(data_obj). # ao_character_check.rb - character_check_and_oldstyle_endnote_array - data_obj= - SiSU_AO_Images::Images.new(@md,data_obj).images # ao_images.rb - data_obj, - tags_map, - ocn_html_seg_map= - SiSU_AO_Numbering::Numbering.new(@md,data_obj,@fnx,@process). # ao_numbering.rb - numbering_song - data_obj, - book_index_rel, - book_index_rel_html_seg, - html_idx, - xhtml_idx= - SiSU_AO_BookIndex::BookIndex.new(@md,data_obj,@env). # ao_idx.rb - indexing_song if @md.book_idx - data_obj= - SiSU_AO_Endnotes::Endnotes.new(@md,data_obj,endnote_array). # ao_endnotes.rb - endnotes - outputdata=data_obj - if (@md.opt.act[:ao][:set]==:on \ - || @md.opt.act[:maintenance][:set]==:on) - SiSU_AO::Output.new(@fn,@md,outputdata).hard_output - SiSU_AO::Output.new(@fn,@md,outputdata).make_marshal_content - SiSU_AO::Output.new(@fn,@md,metadata).make_marshal_metadata - SiSU_AO::Output.new(@fn,@md,html_idx).idx_html_hard_output - SiSU_AO::Output.new(@fn,@md,book_index_rel_html_seg).make_marshal_idx_sst_html_seg - SiSU_AO::Output.new(@fn,@md,book_index_rel).make_marshal_idx_sst_rel - SiSU_AO::Output.new(@fn,@md,html_idx).make_marshal_idx_html - SiSU_AO::Output.new(@fn,@md,xhtml_idx).make_marshal_idx_xhtml - SiSU_AO::Output.new(@fn,@md,tags_map).make_marshal_map_nametags - SiSU_AO::Output.new(@fn,@md,ocn_html_seg_map).make_marshal_map_name_ocn_htmlseg - end - reset - outputdata - end - protected - end -end -__END__ |