# coding: utf-8
=begin
* Name: SiSU
* Description: a framework for document structuring, publishing and search
* Author: Ralph Amissah
* Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008 Ralph Amissah All Rights Reserved.
* License: GPL 3 or later:
SiSU, a framework for document structuring, publishing and search
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008 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
'
@@counter,@@column,@columns=0,0,0
class Output
def initialize(data,md)
@data,@md=data,md
@cX=SiSU_Screen::Ansi.new(@md.cmd).cX
end
def hard_output
my_make=SiSU_Env::Create_file.new(@md.cmd,@md.fns)
@filename_tune=my_make.file_tune
data=[]
@data.each{|x| x.strip; data << x if not x.empty?} #1.9 array?
data.each do |para|
@filename_tune.puts para, "\n" #if para !~/¡/u
end
end
def marshal
my_make=SiSU_Env::Create_file.new(@md.cmd,@md.fns)
@marshal_tune=my_make.marshal_tune
File.open(@marshal_tune,'w') {|f| Marshal.dump(@data.to_a,f)}
end
end
class Clean_html
def initialize(html='')
@html=html
end
def clean
@html.gsub!(/#{Mx[:gl_o]}(#[0-9]+)#{Mx[:gl_c]}/u,'&\1;')
@html.gsub!(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
@html.gsub!(/¢/u,'¢') # ¢
@html.gsub!(/£/u,'£') # £
@html.gsub!(/¥/u,'¥') # ¥
@html.gsub!(/§/u,'§') # §
@html.gsub!(/©/u,'©') # ©
@html.gsub!(/ª/u,'ª') # ª
@html.gsub!(/«/u,'«') # «
@html.gsub!(/®/u,'®') # ®
@html.gsub!(/°/u,'°') # °
@html.gsub!(/±/u,'±') # ±
@html.gsub!(/²/u,'²') # ²
@html.gsub!(/³/u,'³') # ³
@html.gsub!(/µ/u,'µ') # µ
@html.gsub!(/¶/u,'¶') # ¶
@html.gsub!(/¹/u,'¹') # ¹
@html.gsub!(/º/u,'º') # º
@html.gsub!(/»/u,'»') # »
@html.gsub!(/¼/u,'¼') # ¼
@html.gsub!(/½/u,'½') # ½
@html.gsub!(/¾/u,'¾') # ¾
@html.gsub!(/×/u,'×') # ×
@html.gsub!(/÷/u,'÷') # ÷
@html.gsub!(/¿/u,'¿') # ¿
@html.gsub!(/À/u,'À') # À
@html.gsub!(/Á/u,'Á') # Á
@html.gsub!(/Â/u,'Â') # Â
@html.gsub!(/Ã/u,'Ã') # Ã
@html.gsub!(/Ä/u,'Ä') # Ä
@html.gsub!(/Å/u,'Å') # Å
@html.gsub!(/Æ/u,'Æ') # Æ
@html.gsub!(/Ç/u,'Ç') # Ç
@html.gsub!(/È/u,'È') # È
@html.gsub!(/É/u,'É') # É
@html.gsub!(/Ê/u,'Ê') # Ê
@html.gsub!(/Ë/u,'Ë') # Ë
@html.gsub!(/Ì/u,'Ì') # Ì
@html.gsub!(/Í/u,'Í') # Í
@html.gsub!(/Î/u,'Î') # Î
@html.gsub!(/Ï/u,'Ï') # Ï
@html.gsub!(/Ð/u,'Ð') # Ð
@html.gsub!(/Ñ/u,'Ñ') # Ñ
@html.gsub!(/Ò/u,'Ò') # Ò
@html.gsub!(/Ó/u,'Ó') # Ó
@html.gsub!(/Ô/u,'Ô') # Ô
@html.gsub!(/Õ/u,'Õ') # Õ
@html.gsub!(/Ö/u,'Ö') # Ö
@html.gsub!(/Ø/u,'Ø') # Ø
@html.gsub!(/Ù/u,'Ù') # Ù
@html.gsub!(/Ú/u,'Ú') # Ú
@html.gsub!(/Û/u,'Û') # Û
@html.gsub!(/Ü/u,'Ü') # Ü
@html.gsub!(/Ý/u,'Ý') # Ý
@html.gsub!(/Þ/u,'Þ') # Þ
@html.gsub!(/ß/u,'ß') # ß
@html.gsub!(/à/u,'à') # à
@html.gsub!(/á/u,'á') # á
@html.gsub!(/â/u,'â') # â
@html.gsub!(/ã/u,'ã') # ã
@html.gsub!(/ä/u,'ä') # ä
@html.gsub!(/å/u,'å') # å
@html.gsub!(/æ/u,'æ') # æ
@html.gsub!(/ç/u,'ç') # ç
@html.gsub!(/è/u,'è') # è
@html.gsub!(/é/u,'é') # é
@html.gsub!(/ê/u,'ê') # ê
@html.gsub!(/ë/u,'ë') # ë
@html.gsub!(/ì/u,'ì') # ì
@html.gsub!(/í/u,'í') # í
@html.gsub!(/î/u,'î') # î
@html.gsub!(/ï/u,'ï') # ï
@html.gsub!(/ð/u,'ð') # ð
@html.gsub!(/ñ/u,'ñ') # ñ
@html.gsub!(/ò/u,'ò') # ò
@html.gsub!(/ó/u,'ó') # ó
@html.gsub!(/ô/u,'ô') # ô
@html.gsub!(/õ/u,'õ') # õ
@html.gsub!(/ö/u,'ö') # ö
@html.gsub!(/ø/u,'ø') # ø
@html.gsub!(/ù/u,'ù') # ú
@html.gsub!(/ú/u,'ú') # û
@html.gsub!(/û/u,'û') # ü
@html.gsub!(/ü/u,'ü') # ý
@html.gsub!(/þ/u,'þ') # þ
@html.gsub!(/ÿ/u,'ÿ') # ÿ
@html.gsub!(/ý/u,'ý')
@html
end
end
class Tune
@@dp=nil
def initialize(data,md)
@data,@md=data,md
@vz=SiSU_Env::Get_init.instance.skin
@env=SiSU_Env::Info_env.new(@md.fns)
@sys=SiSU_Env::System_call.new
@dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
@env=SiSU_Env::Info_env.new(@md.fns)
@url_brace=SiSU_Viz::Skin.new.url_decoration
#@utf8=SiSU_character_encode::UTF8 #.new
end
def songsheet
begin
@cX=SiSU_Screen::Ansi.new(@md.cmd).cX
tell=SiSU_Screen::Ansi.new(@md.cmd,'Tune')
tell.txt_grey unless @md.cmd =~/q/
data=Tune.new(@data,@md).endnotes_html
data=Tune.new(data,@md).url_markup
data=Tune.new(data,@md).markup
if @md.cmd =~/M/ #Hard Output Tune Optional on/off here
data=Output.new(data,@md).hard_output
Output.new(data,@md).marshal
end
tuned=Tune.new(@data,@md).output
rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error
ensure
end
end
def para_numbers
data=@data
@tuned_file=[]
data.each do |para|
para.gsub!(/#{Mx[:lv_o]}\d:(\S?)#{Mx[:lv_c]}/,'\0#\1. ')
@tuned_file << para
end
end
def markup
@tuned_file=[]
@data.each do |para|
#@utf8.new(para).html
#@utf8.html(@para)
para.gsub!(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;')
para.gsub!(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
para.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'
 \;
'
@@table_align_close='
')
para.gsub!(/(?:\s*#{Mx[:br_page]}\s*|\s*#{Mx[:br_page_new]}\s*)+/m,'