# encoding: utf-8 =begin * Name: SiSU * Description: a framework for document structuring, publishing and search * Author: Ralph Amissah * Copyright: (C) 1997 - 2011, 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: * Download: * Ralph Amissah ** Description: preprocessing, (document abstraction), data abstraction used in subsequent processing =end module SiSU_DAL require_relative 'defaults' # defaults.rb include SiSU_Viz require_relative 'sysenv' # sysenv.rb include SiSU_Env require_relative 'param' # param.rb include SiSU_Param require_relative 'dal_doc_objects' # dal_doc_objects.rb require_relative 'dal_syntax' # dal_syntax.rb include SiSU_Syntax require_relative 'dal_doc_str' # dal_doc_str.rb require_relative 'dal_idx' # dal_idx.rb require_relative 'dal_numbering' # dal_numbering.rb require_relative 'dal_hash_digest' # dal_hash_digest.rb require_relative 'dal_endnotes' # dal_endnotes.rb require_relative 'dal_images' # dal_images.rb require_relative 'dal_metadata' # dal_metadata.rb require_relative 'dal_character_check' # dal_character_check.rb require_relative 'dal_substitutions_and_insertions' # dal_substitutions_and_insertions.rb require_relative 'dal_expand_insertions' # dal_expand_insertions.rb require_relative 'prog_text_translation' # prog_text_translation.rb require_relative 'shared_sem' # shared_sem.rb class Instantiate < SiSU_Param::Parameters::Instructions def initialize @@flag_vocab=0 @@line_mode='' end end class Source #{cf.meta}").txt_grey if @opt.cmd =~/M/ end dal.each {|s| dal_array << s} dal_array end def read_fnm dal=[] dal=if FileTest.file?(@fnm) (RUBY_VERSION < '1.9') \ ? (File.open(@fnm){ |f| dal=Marshal.load(f)}) \ : (File.open(@fnm,'r:utf-8'){ |f| dal=Marshal.load(f)}) else SiSU_DAL::Source.new(@opt).create_dal end end def read_fnc dal=[] dal=if FileTest.file?(@fnc) (RUBY_VERSION < '1.9') \ ? (File.open(@fnc){ |f| dal=Marshal.load(f)}) \ : (File.open(@fnc,'r:utf-8'){ |f| dal=Marshal.load(f)}) else SiSU_DAL::Source.new(@opt).create_dal end end def read_idx_sst m=[] m=if FileTest.file?(@idx_sst) (RUBY_VERSION < '1.9') \ ? (File.open(@idx_sst){ |f| m=Marshal.load(f)}) \ : (File.open(@idx_sst,'r:utf-8'){ |f| m=Marshal.load(f)}) else nil end end def read_idx_tex m=[] m=if FileTest.file?(@idx_tex) (RUBY_VERSION < '1.9') \ ? (File.open(@idx_tex){ |f| m=Marshal.load(f)}) \ : (File.open(@idx_tex,'r:utf-8'){ |f| m=Marshal.load(f)}) else nil end end def read_idx_html m=[] m=if FileTest.file?(@idx_html) (RUBY_VERSION < '1.9') \ ? (File.open(@idx_html){ |f| m=Marshal.load(f)}) \ : (File.open(@idx_html,'r:utf-8'){ |f| m=Marshal.load(f)}) else nil end end def read_idx_xhtml m=[] m=if FileTest.file?(@idx_xhtml) (RUBY_VERSION < '1.9') \ ? (File.open(@idx_xhtml){ |f| m=Marshal.load(f)}) \ : (File.open(@idx_xhtml,'r:utf-8'){ |f| m=Marshal.load(f)}) else nil end end def read_map_nametags m=[] m=if FileTest.file?(@map_nametags) (RUBY_VERSION < '1.9') \ ? (File.open(@map_nametags){ |f| m=Marshal.load(f)}) \ : (File.open(@map_nametags,'r:utf-8'){ |f| m=Marshal.load(f)}) else nil end end def read_map_ocn_htmlseg m=[] m=if FileTest.file?(@map_ocn_htmlseg) (RUBY_VERSION < '1.9') \ ? (File.open(@map_ocn_htmlseg){ |f| m=Marshal.load(f)}) \ : (File.open(@map_ocn_htmlseg,'r:utf-8'){ |f| m=Marshal.load(f)}) else nil end end end class Output def initialize(fn,md,data) @fn,@md,@data=fn,md,data @cf=SiSU_Env::Create_file.new(@fn) @make=SiSU_Env::Info_file.new(@fn) @dir=SiSU_Env::Info_env.new(@fn) end def screen_dump(o) if defined? o.of print %{OF: #{o.of}; } end if defined? o.is print %{IS: #{o.is}; } end if defined? o.ocn print %{OCN: #{o.ocn}; } end if defined? o.node print %{NODE: #{o.node}; } end if defined? o.parent print %{Parent: #{o.parent}; } end if defined? o.obj and not o.obj.empty? puts %{\n#{o.obj}; } else "\n" end end def screen_print(t_o) if defined? t_o print ' ' + t_o.to_s end end def screen_output(data) data.each do |o| print o.class screen_print(o.ocn) screen_print(o.obj) puts "\n" end end def hard_output if @md.opt.cmd =~/M/ filename_meta=@cf.metaverse.file_meta @data.each {|o| filename_meta.puts o.inspect.sub(/:0x[0-9a-f]{8}\s/,': ')} #to make diffing easier filename_txt=@cf.metaverse.file_txt @data.each do |o| if defined? o.ocn filename_txt.puts case o.is when 'heading' "[#{o.is} #{o.lv}~#{o.name} [#{o.ocn}]] #{o.obj}" else "[#{o.is} [#{o.ocn}]] #{o.obj}" end else filename_txt.puts case o.is when 'meta' "[m~#{o.tag}] #{o.obj}" else "[#{o.is}] #{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} #{o.lv}~#{o.name} odv=#{o.odv} osp=#{o.osp} [#{o.ocn}] -->\n\t#{o.obj}" end end end else hard="#{@dir.processing_path.dal}/#{@md.fns}.meta" File.unlink(hard) if FileTest.file?(hard) hard="#{@dir.processing_path.dal}/#{@md.fns}.txt" File.unlink(hard) if FileTest.file?(hard) hard="#{@dir.processing_path.dal}/#{@md.fns}.debug.txt" File.unlink(hard) if FileTest.file?(hard) end end def make_marshal_content marshal_dal=@make.marshal.dal_content File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Array end def make_marshal_metadata marshal_dal=@make.marshal.dal_metadata File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Array end def idx_html_hard_output if @md.book_idx \ and @md.opt.cmd =~/M/ filename_meta=@cf.file_meta_idx_html unless @data.nil? #REMOVE earliest possible @data.each {|s| p s.inspect + "\n" unless s.class==String} @data.each {|s| filename_meta.puts s.strip + "\n" unless s.strip.empty?} end else hard_idx_html="#{@dir.processing_path.dal}/#{@md.fns}.idx.html" File.unlink(hard_idx_html) if FileTest.file?(hard_idx_html) end end def make_marshal_idx_sst_html_seg marshal_dal=@make.marshal.dal_idx_sst_rel_html_seg File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Array end def make_marshal_idx_sst_rel marshal_dal=@make.marshal.dal_idx_sst_rel File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Array end def make_marshal_idx_html marshal_dal=@make.marshal.dal_idx_html File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Array end def make_marshal_idx_xhtml marshal_dal=@make.marshal.dal_idx_xhtml File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Array end def make_marshal_map_nametags marshal_dal=@make.marshal.dal_map_nametags File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Hash end def make_marshal_map_name_ocn_htmlseg marshal_dal=@make.marshal.dal_map_ocn_htmlseg File.open(marshal_dal,'w'){|f| Marshal.dump(@data,f)} if @data.class==Hash end end class Make def initialize(fn,md,data) @fn,@md,@data=fn,md,data @env=SiSU_Env::Info_env.new(@md.fns) end def reset @@flag_vocab=0 @@line_mode='' end def song reset data=@data data=data.join.split("\n\n") data=SiSU_insertions::Insertions.new(@md,data).expand_insertions? # dal_expand_insertions.rb data=SiSU_substitute_and_insert::SI.new(@md,data).substitutions_and_insertions? # dal_substitutions_and_insertions.rb data,metadata=SiSU_document_structure_extract::Build.new(@md,data).identify_parts # dal_doc_str.rb data=SiSU_Syntax::Markup.new(@md,data).songsheet # dal_syntax.rb data,endnote_array=SiSU_character_check::Check.new(data).character_check_and_oldstyle_endnote_array # dal_character_check.rb data=SiSU_images::Images.new(@md,data).images # dal_images.rb data,tags_map,ocn_html_seg_map=SiSU_numbering::Numbering.new(@md,data).numbering_song # dal_numbering.rb data,book_index_rel,book_index_rel_html_seg,html_idx,xhtml_idx=SiSU_book_index::Book_index.new(@md,data,@env).indexing_song if @md.book_idx # dal_idx.rb data=SiSU_endnotes::Endnotes.new(@md,data,endnote_array).endnotes # dal_endnotes.rb outputdata=data if @md.opt.cmd =~/[mM]/ SiSU_DAL::Output.new(@fn,@md,outputdata).hard_output SiSU_DAL::Output.new(@fn,@md,outputdata).make_marshal_content SiSU_DAL::Output.new(@fn,@md,metadata).make_marshal_metadata SiSU_DAL::Output.new(@fn,@md,html_idx).idx_html_hard_output SiSU_DAL::Output.new(@fn,@md,book_index_rel_html_seg).make_marshal_idx_sst_html_seg SiSU_DAL::Output.new(@fn,@md,book_index_rel).make_marshal_idx_sst_rel SiSU_DAL::Output.new(@fn,@md,html_idx).make_marshal_idx_html SiSU_DAL::Output.new(@fn,@md,xhtml_idx).make_marshal_idx_xhtml SiSU_DAL::Output.new(@fn,@md,tags_map).make_marshal_map_nametags SiSU_DAL::Output.new(@fn,@md,ocn_html_seg_map).make_marshal_map_name_ocn_htmlseg end reset outputdata end protected end end __END__