aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sisu/v5/ao_doc_str.rb5
-rw-r--r--lib/sisu/v5/ao_hash_digest.rb6
-rw-r--r--lib/sisu/v5/ao_images.rb8
-rw-r--r--lib/sisu/v5/ao_numbering.rb34
-rw-r--r--lib/sisu/v5/cgi_pgsql.rb36
-rw-r--r--lib/sisu/v5/cgi_sqlite.rb28
-rw-r--r--lib/sisu/v5/composite.rb10
-rw-r--r--lib/sisu/v5/concordance.rb9
-rw-r--r--lib/sisu/v5/constants.rb7
-rw-r--r--lib/sisu/v5/db_import.rb1
-rw-r--r--lib/sisu/v5/dbi.rb9
-rw-r--r--lib/sisu/v5/dbi_discrete.rb17
-rw-r--r--lib/sisu/v5/defaults.rb6
-rw-r--r--lib/sisu/v5/digests.rb8
-rw-r--r--lib/sisu/v5/html.rb18
-rw-r--r--lib/sisu/v5/html_format.rb80
-rw-r--r--lib/sisu/v5/html_lite_shared.rb7
-rw-r--r--lib/sisu/v5/html_minitoc.rb5
-rw-r--r--lib/sisu/v5/html_segments.rb6
-rw-r--r--lib/sisu/v5/html_tune.rb25
-rw-r--r--lib/sisu/v5/hub.rb22
-rw-r--r--lib/sisu/v5/options.rb59
-rw-r--r--lib/sisu/v5/param.rb11
-rw-r--r--lib/sisu/v5/particulars.rb6
-rw-r--r--lib/sisu/v5/remote.rb14
-rw-r--r--lib/sisu/v5/rexml.rb12
-rw-r--r--lib/sisu/v5/shared_markup_alt.rb6
-rw-r--r--lib/sisu/v5/src_kdissert_share.rb8
-rw-r--r--lib/sisu/v5/sst_from_xml.rb8
-rw-r--r--lib/sisu/v5/sysenv.rb173
-rw-r--r--lib/sisu/v5/texpdf.rb16
-rw-r--r--lib/sisu/v5/txt_plain.rb3
-rw-r--r--lib/sisu/v5/utils.rb6
-rw-r--r--lib/sisu/v5/webrick.rb22
-rw-r--r--lib/sisu/v5/xhtml_epub2.rb11
-rw-r--r--lib/sisu/v5/xhtml_epub2_format.rb16
-rw-r--r--lib/sisu/v5/xhtml_epub2_segments.rb2
-rw-r--r--lib/sisu/v5/xhtml_epub2_tune.rb20
-rw-r--r--lib/sisu/v5/xml_fictionbook2.rb6
-rw-r--r--lib/sisu/v5/xml_odf_odt.rb20
-rw-r--r--lib/sisu/v5/xml_odf_odt_format.rb19
-rw-r--r--lib/sisu/v6/ao_doc_str.rb5
-rw-r--r--lib/sisu/v6/ao_hash_digest.rb6
-rw-r--r--lib/sisu/v6/ao_images.rb8
-rw-r--r--lib/sisu/v6/ao_numbering.rb34
-rw-r--r--lib/sisu/v6/cgi_pgsql.rb36
-rw-r--r--lib/sisu/v6/cgi_sqlite.rb28
-rw-r--r--lib/sisu/v6/composite.rb10
-rw-r--r--lib/sisu/v6/concordance.rb9
-rw-r--r--lib/sisu/v6/constants.rb7
-rw-r--r--lib/sisu/v6/db_import.rb1
-rw-r--r--lib/sisu/v6/dbi.rb9
-rw-r--r--lib/sisu/v6/dbi_discrete.rb17
-rw-r--r--lib/sisu/v6/defaults.rb6
-rw-r--r--lib/sisu/v6/digests.rb8
-rw-r--r--lib/sisu/v6/html.rb18
-rw-r--r--lib/sisu/v6/html_format.rb80
-rw-r--r--lib/sisu/v6/html_lite_shared.rb7
-rw-r--r--lib/sisu/v6/html_minitoc.rb5
-rw-r--r--lib/sisu/v6/html_segments.rb6
-rw-r--r--lib/sisu/v6/html_tune.rb25
-rw-r--r--lib/sisu/v6/hub.rb22
-rw-r--r--lib/sisu/v6/options.rb59
-rw-r--r--lib/sisu/v6/param.rb11
-rw-r--r--lib/sisu/v6/particulars.rb6
-rw-r--r--lib/sisu/v6/remote.rb14
-rw-r--r--lib/sisu/v6/rexml.rb12
-rw-r--r--lib/sisu/v6/shared_markup_alt.rb6
-rw-r--r--lib/sisu/v6/src_kdissert_share.rb8
-rw-r--r--lib/sisu/v6/sst_from_xml.rb8
-rw-r--r--lib/sisu/v6/sysenv.rb173
-rw-r--r--lib/sisu/v6/texpdf.rb16
-rw-r--r--lib/sisu/v6/txt_plain.rb3
-rw-r--r--lib/sisu/v6/utils.rb6
-rw-r--r--lib/sisu/v6/webrick.rb22
-rw-r--r--lib/sisu/v6/xhtml_epub2.rb11
-rw-r--r--lib/sisu/v6/xhtml_epub2_format.rb16
-rw-r--r--lib/sisu/v6/xhtml_epub2_segments.rb2
-rw-r--r--lib/sisu/v6/xhtml_epub2_tune.rb20
-rw-r--r--lib/sisu/v6/xml_fictionbook2.rb6
-rw-r--r--lib/sisu/v6/xml_odf_odt.rb20
-rw-r--r--lib/sisu/v6/xml_odf_odt_format.rb19
82 files changed, 1112 insertions, 458 deletions
diff --git a/lib/sisu/v5/ao_doc_str.rb b/lib/sisu/v5/ao_doc_str.rb
index f7168c26..dd7f32f3 100644
--- a/lib/sisu/v5/ao_doc_str.rb
+++ b/lib/sisu/v5/ao_doc_str.rb
@@ -163,10 +163,13 @@ module SiSU_AO_DocumentStructureExtract
str=str.gsub(/(^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/i,
"\\1#{Mx[:tag_o]}\\2#{Mx[:tag_c]}").
gsub(/ [ ]+/i,' ')
- tags=str.scan(/#{Mx[:tag_o]}(\S+?)#{Mx[:tag_c]}/).flatten
+ tags=str.scan(/#{Mx[:tag_o]}(\S+?)#{Mx[:tag_c]}/).flatten.uniq
str=str.gsub(/[ ]?#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}[ ]?/,' ') #may be issues with spaces would leave one, but "code" blocks?
end
tags=nametag ? (tags << nametag) : tags
+ tags.each do |t|
+ t.gsub!(/[^a-z0-9._-]/,'')
+ end
end
[str,tags]
end
diff --git a/lib/sisu/v5/ao_hash_digest.rb b/lib/sisu/v5/ao_hash_digest.rb
index 585ff659..3f372893 100644
--- a/lib/sisu/v5/ao_hash_digest.rb
+++ b/lib/sisu/v5/ao_hash_digest.rb
@@ -75,7 +75,11 @@ module SiSU_AO_Hash
data=@data.compact
@tuned_file=[]
sha_ =(@env.digest.type=='sha256' ? true : false)
- sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ begin
+ sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error((sha_ ? 'digest/sha2' : 'digest/md5') + ' NOT FOUND')
+ end
data.each do |t_o|
unless t_o.obj.is_a?(Array)
t_o.obj=t_o.obj.strip
diff --git a/lib/sisu/v5/ao_images.rb b/lib/sisu/v5/ao_images.rb
index ab42034d..d01c98b8 100644
--- a/lib/sisu/v5/ao_images.rb
+++ b/lib/sisu/v5/ao_images.rb
@@ -62,8 +62,12 @@
=end
module SiSU_AO_Images
class Images
- #require 'RMagick'
- #include Magick
+ #begin
+ # require 'RMagick'
+ # include Magick
+ #rescue LoadError
+ # SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('RMagic NOT FOUND (LoadError)')
+ #end
def initialize(md,data)
@md,@data=md,data
end
diff --git a/lib/sisu/v5/ao_numbering.rb b/lib/sisu/v5/ao_numbering.rb
index 8caa5ccc..984675cc 100644
--- a/lib/sisu/v5/ao_numbering.rb
+++ b/lib/sisu/v5/ao_numbering.rb
@@ -78,6 +78,14 @@ module SiSU_AO_Numbering
data=set_heading_top(data) unless @md.set_heading_top
[data,tags_map,ocn_html_seg_map]
end
+ def set_tags(tags,tag)
+ tags=if not tag.empty? \
+ and tag !~/^\d+$/
+ tag=tag.gsub(/[^a-z0-9._-]/,'')
+ [tag,tags].flatten
+ else tags
+ end
+ end
def number_plaintext_para(data)
@tuned_file=[]
data.each do |dob|
@@ -168,10 +176,10 @@ module SiSU_AO_Numbering
and not @md.seg_names.include?(title_no)
if dob.ln==no1
dob.name="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,title_no)
tag=dob.obj.gsub(/(Article|Clause|Section|Chapter)\s+/,"\\1_#{title_no}").downcase
tag=heading_tag_clean(tag)
- dob.tags=[tag,dob.tags].flatten if tag !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,tag)
dob.obj=(dob.obj =~/(Article|Clause|Section)\s+/) \
? (dob.obj.gsub(/(Article|Clause|Section)\s+/,"\\1 #{title_no} "))
: (dob.obj.gsub(/^/,"#{title_no}. ")) #fix stop later
@@ -179,7 +187,7 @@ module SiSU_AO_Numbering
if dob.ln !=no1 \
and dob.obj =~/^[\d.]+\s/ #fix -> if the title starts with a numbering scheme, do not auto-number, review
dob.name ="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,title_no)
dob.obj=dob.obj.gsub(/^/,"#{title_no}. ")
end
@md.seg_names << title_no
@@ -187,28 +195,28 @@ module SiSU_AO_Numbering
if dob.ln!=no1 \
and dob.name!~/^[a-z_\.]+$/ \
and dob.obj !~/[A-Z]\.?\s/ #bug -> tmp fix, excludes A. B. C. lettering, but not roman numerals, is arbitrary, review required # not fixed, work on
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,title_no)
dob.obj=dob.obj.gsub(/^/i,"#{title_no}. ")
end
end
if dob.ln==no1 #watch because here you change dob.name
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,"h#{title_no}")
end
if dob.ln==no2 #watch because here you change dob.name
t_no2+=1; t_no3=0
title_no="#{t_no1}.#{t_no2}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,"h#{title_no}")
dob=number_sub_heading(dob,no2,title_no)
end
if dob.ln==no3 #watch because here you change dob.name
t_no3+=1
title_no="#{t_no1}.#{t_no2}.#{t_no3}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,"h#{title_no}")
dob=number_sub_heading(dob,no3,title_no)
end
elsif dob.ln.to_s =~/^[0-6]/ \
and dob.name =~ /^[\w-]+-/ # endnotes, watch2005# endnotes, watch2005
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
dob.name.gsub(/^([a-z_\.]+)-$/,'\1')
end
elsif dob.is ==:heading \
@@ -219,13 +227,13 @@ module SiSU_AO_Numbering
and dob.ln.to_s =~/^[0-9]/ \
and dob.obj =~ /^([\d\.]+)/ #risky (must be unique) consider output to 4~~\d instead of 4~\d
dob.name=$1
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
end
if @md.toc_lev_limit
end
elsif defined? dob.name \
and dob.name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
end
dob.tags=dob.tags.uniq if defined? dob.tags
@tuned_file << dob
@@ -312,7 +320,7 @@ module SiSU_AO_Numbering
if @md.seg_names.is_a?(Array) \
and not @md.seg_names.include?(possible_seg_name)
dob.name=possible_seg_name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
+ dob.tags=set_tags(dob.tags,dob.name)
@md.seg_names << possible_seg_name
elsif (@md.opt.act[:verbose_plus][:set]==:on \
or @md.opt.act[:maintenance][:set]==:on)
@@ -323,7 +331,7 @@ module SiSU_AO_Numbering
and dob.name #extract segment name from embedded document structure info
if @md.seg_names.is_a?(Array) \
and not @md.seg_names.include?(dob.name)
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
+ dob.tags=set_tags(dob.tags,dob.name)
@md.seg_names << dob.name
end
end
@@ -334,7 +342,7 @@ module SiSU_AO_Numbering
if @md.seg_names.is_a?(Array) \
and not @md.seg_names.include?(segn_auto)
dob.name=segn_auto
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
@md.seg_names << segn_auto
else puts 'segment name (numbering) error'
end
diff --git a/lib/sisu/v5/cgi_pgsql.rb b/lib/sisu/v5/cgi_pgsql.rb
index 33e43b46..4281d9d3 100644
--- a/lib/sisu/v5/cgi_pgsql.rb
+++ b/lib/sisu/v5/cgi_pgsql.rb
@@ -74,12 +74,12 @@ module SiSU_CGI_PgSQL
get_init=SiSU_Env::GetInit.new
@rc=get_init.sisu_yaml.rc
@name_of={}
- @name_of[:output_dir_structure]=if @opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
- @opt.dir_structure_by.to_s
+ @name_of[:output_dir_structure]=if opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
+ opt.dir_structure_by.to_s
else 'language'
end
- @name_of[:lingual]=if @opt.lingual.to_s =~/(?:mono|multi)/
- @opt.lingual.to_s
+ @name_of[:lingual]=if opt.lingual.to_s =~/(?:mono|multi)/
+ opt.lingual.to_s
else 'multi'
end
if defined? @rc['search'] \
@@ -93,13 +93,13 @@ module SiSU_CGI_PgSQL
@name_of[:db]=@env.path.stub_pwd #'sisu' #breaks if not present
false
end
- @name_of[:host_url_cgi]="#{@env.url.webserv_base_cgi(@opt)}/cgi-bin"
- @name_of[:host_url_docs]=@env.url.webserv_files_from_db(@opt)
- @name_of[:cgi_script]=@env.url.cgi_sample_search_form_name(@opt)
- @name_of[:user]=@db.psql.user(@opt)
+ @name_of[:host_url_cgi]="#{@env.url.webserv_base_cgi(opt)}/cgi-bin"
+ @name_of[:host_url_docs]=@env.url.webserv_files_from_db(opt)
+ @name_of[:cgi_script]=@env.url.cgi_sample_search_form_name(opt)
+ @name_of[:user]=@db.psql.user(opt)
@cgi_file_name=@name_of[:cgi_script]
- @image_src="#{@env.url.webserv_base_cgi(@opt)}/_sisu/image_sys"
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
+ @image_src="#{@env.url.webserv_base_cgi(opt)}/_sisu/image_sys"
+ @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,opt,@image_src,@env)
end
def pgsql
serve=[]
@@ -174,13 +174,13 @@ module SiSU_CGI_PgSQL
sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
WOK
end
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).warn
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).warn
a=<<-WOK
#{@env.webserv_base_cgi(@opt)}/cgi-bin/#{@cgi_file_name}
WOK
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).print_blue
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).print_blue
a="\n\t(to create and populate postgresql database see 'man sisu' and in particular the --pg option)\n\t[the database to be used for this directory (#{@db.psql.db}) will have to be created manually if it does not exist,\n\tusing postgresql tools directly: 'createdb #{@db.psql.db}' for a list of existing databases try 'psql --list']"
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).txt_grey
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).txt_grey
else puts 'failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?'
end
end
@@ -192,9 +192,13 @@ module SiSU_CGI_PgSQL
* Description: generates naive cgi search form for search of sisu database (pgsql)
#{gpl}
=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
+ begin
+ require 'cgi'
+ require 'fcgi'
+ require 'dbi'
+ rescue LoadError
+ puts 'cgi, fcgi or dbi NOT FOUND (LoadError)'
+ end
@stub_default='#{@name_of[:db]}'
@image_src='#{@image_src}'
@hosturl_cgi='#{@name_of[:host_url_cgi]}'
diff --git a/lib/sisu/v5/cgi_sqlite.rb b/lib/sisu/v5/cgi_sqlite.rb
index 8ebe0c16..c4222ecb 100644
--- a/lib/sisu/v5/cgi_sqlite.rb
+++ b/lib/sisu/v5/cgi_sqlite.rb
@@ -69,18 +69,18 @@ module SiSU_CGI_SQLite
@opt,@webserv=opt,webserv
@cX=SiSU_Screen::Ansi.new(opt.act[:color_state][:set]).cX
@env=SiSU_Env::InfoEnv.new('',opt)
- @image_src="#{@env.url.webserv_cgi(@opt)}/_sisu/image_sys"
+ @image_src="#{@env.url.webserv_cgi(opt)}/_sisu/image_sys"
@name_of={}
- @name_of[:output_dir_structure]=if @opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
- @opt.dir_structure_by.to_s
+ @name_of[:output_dir_structure]=if opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
+ opt.dir_structure_by.to_s
else 'language'
end
- @name_of[:lingual]=if @opt.lingual.to_s =~/(?:mono|multi)/
- @opt.lingual.to_s
+ @name_of[:lingual]=if opt.lingual.to_s =~/(?:mono|multi)/
+ opt.lingual.to_s
else 'multi'
end
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
- @cgi_file_name=@env.url.cgi_sample_search_form_name(@opt)
+ @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,opt,@image_src,@env)
+ @cgi_file_name=@env.url.cgi_sample_search_form_name(opt)
@name_of_sqlite_db_file='sisu_sqlite.db'
end
def sqlite
@@ -147,13 +147,13 @@ module SiSU_CGI_SQLite
WOK
end
b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)'
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a,b).warn
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a,b).warn
a=<<-WOK
#{@env.webserv_base_cgi(@opt)}/cgi-bin/#{@cgi_file_name}
WOK
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).print_blue
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).print_blue
else puts "failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?"
end
end
@@ -165,9 +165,13 @@ module SiSU_CGI_SQLite
* Description: generates naive cgi search form for search of sisu database (sqlite)
#{gpl}
=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
+ begin
+ require 'cgi'
+ require 'fcgi'
+ require 'dbi'
+ rescue LoadError
+ puts 'cgi, fcgi or dbi NOT FOUND (LoadError)'
+ end
@stub_default='sisu_sqlite'
@image_src='#{@image_src}'
@hosturl_cgi='#{@env.url.webserv_base_cgi(@opt)}/cgi-bin'
diff --git a/lib/sisu/v5/composite.rb b/lib/sisu/v5/composite.rb
index c1457779..9e7ccb5c 100644
--- a/lib/sisu/v5/composite.rb
+++ b/lib/sisu/v5/composite.rb
@@ -178,10 +178,14 @@ module SiSU_Assemble
end
tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/ # and NetTest
imagedir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch
- require 'uri'
+ begin
+ require 'uri'
+ require 'open-uri'
+ require 'pp'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri, open-uri or pp NOT FOUND (LoadError)')
+ end
image_uri=URI.parse(imagedir)
- require 'open-uri'
- require 'pp'
insert=open(loadfile)
insert_array=insert.dup
insert.close
diff --git a/lib/sisu/v5/concordance.rb b/lib/sisu/v5/concordance.rb
index 55892ab7..b9030123 100644
--- a/lib/sisu/v5/concordance.rb
+++ b/lib/sisu/v5/concordance.rb
@@ -240,12 +240,13 @@ WOK
end
end
protected
- def location_scroll(wordlocation,show)
- %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{wordlocation}">#{wordlocation}</a>; }
+ def location_scroll(wordlocation,show) # not used
+ %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{Mx[:ocn_id_char]}#{wordlocation}">#{wordlocation}</a>; }
end
- def location_seg(wordlocation,show) ##fix
+ def location_seg(wordlocation,show)
unless wordlocation.nil?
- wl=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{@md.lang_code_insert}#{Sfx[:html]}#\\2")
+ wl=wordlocation.gsub(/(.+?)\#(\d+)/,
+ "\\1#{@md.lang_code_insert}#{Sfx[:html]}##{Mx[:ocn_id_char]}\\2") # id="o\d+" always available; a name="\d+" not available if html strict used
case wordlocation
when /#{@rxp_t1}|@rxp_t2}|#{@rxp_t3}/
%{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show}, }
diff --git a/lib/sisu/v5/constants.rb b/lib/sisu/v5/constants.rb
index e84c0901..a9be54f0 100644
--- a/lib/sisu/v5/constants.rb
+++ b/lib/sisu/v5/constants.rb
@@ -101,6 +101,13 @@ Xx={
html_relative1: '※',
}
Mx={
+ ocn_id_char: 'o',
+ note: 'note_',
+ note_ref: 'noteref_',
+ note_astx: 'note_astx_',
+ note_ref_astx: 'noteref_astx_',
+ note_plus: 'note_plus_',
+ note_ref_plus: 'noteref_plus_',
meta_o: '〔@', meta_c: '〕',
lv_o_0: 0,
lv_o_1: 1,
diff --git a/lib/sisu/v5/db_import.rb b/lib/sisu/v5/db_import.rb
index 8d9fc229..0dc5a29b 100644
--- a/lib/sisu/v5/db_import.rb
+++ b/lib/sisu/v5/db_import.rb
@@ -66,7 +66,6 @@ module SiSU_DbImport
require_relative 'db_load_tuple' # db_load_tuple.rb
require_relative 'db_sqltxt' # db_sqltxt.rb
require_relative 'html_lite_shared' # html_lite_shared.rb
- require 'sqlite3'
class Import < SiSU_DbText::Prepare
include SiSU_Param
include SiSU_Screen
diff --git a/lib/sisu/v5/dbi.rb b/lib/sisu/v5/dbi.rb
index d92f1964..1ab9bc9c 100644
--- a/lib/sisu/v5/dbi.rb
+++ b/lib/sisu/v5/dbi.rb
@@ -120,9 +120,12 @@ manually create the database: "#{cX.green}#{@db.db}#{cX.off}" if it does not yet
end
def read_sqlite
begin
- @conn=@db.sqlite.conn_sqlite3
- rescue
- ensure
+ begin
+ require 'sqlite3'
+ @conn=@db.sqlite.conn_sqlite3
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 NOT FOUND (LoadError)')
+ end
end
end
def connect
diff --git a/lib/sisu/v5/dbi_discrete.rb b/lib/sisu/v5/dbi_discrete.rb
index 0981455c..cd8c7de1 100644
--- a/lib/sisu/v5/dbi_discrete.rb
+++ b/lib/sisu/v5/dbi_discrete.rb
@@ -69,8 +69,12 @@ module SiSU_DBI_Discrete #% database building
include SiSU_DbDBI
require_relative 'html_lite_shared' # html_lite_shared.rb
include SiSU_FormatShared
- require 'fileutils'
- include FileUtils::Verbose
+ begin
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
class SQL
def initialize(opt)
SiSU_Env::Load.new('dbi',true).prog
@@ -145,9 +149,12 @@ module SiSU_DBI_Discrete #% database building
end
def read_sqlite
begin
- @conn=@db.sqlite.conn_sqlite3
- rescue
- ensure
+ begin
+ require 'sqlite3'
+ @conn=@db.sqlite.conn_sqlite3
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 not available')
+ end
end
end
def connect
diff --git a/lib/sisu/v5/defaults.rb b/lib/sisu/v5/defaults.rb
index fd56c2c4..25dd270a 100644
--- a/lib/sisu/v5/defaults.rb
+++ b/lib/sisu/v5/defaults.rb
@@ -62,7 +62,11 @@
=end
$latex_run=nil
module SiSU_Viz
- require 'uri'
+ begin
+ require 'uri'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'css' # css.rb
diff --git a/lib/sisu/v5/digests.rb b/lib/sisu/v5/digests.rb
index 2b010374..7099b646 100644
--- a/lib/sisu/v5/digests.rb
+++ b/lib/sisu/v5/digests.rb
@@ -91,9 +91,13 @@ module SiSU_DigestView
if @opt.act[:verbose_plus][:set]==:on \
or @opt.act[:maintenance][:set]==:on
SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"file://#{@md.file.output_path.hash_digest.dir}/#{@md.file.base_filename.hash_digest}").flow
+ end
+ end
+ if SiSU_Env::SystemCall.new.openssl
+ SiSU_DigestView::Source::Scroll.new(@particulars).songsheet
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('*EXITED* hash digests will not run without openssl')
end
- end
- SiSU_DigestView::Source::Scroll.new(@particulars).songsheet
rescue
SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do
__LINE__.to_s + ':' + __FILE__
diff --git a/lib/sisu/v5/html.rb b/lib/sisu/v5/html.rb
index f473f1b7..4a911d2c 100644
--- a/lib/sisu/v5/html.rb
+++ b/lib/sisu/v5/html.rb
@@ -61,7 +61,11 @@
=end
module SiSU_HTML
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'particulars' # particulars.rb
include SiSU_Particulars
require_relative 'defaults' # defaults.rb
@@ -241,6 +245,7 @@ module SiSU_HTML
def initialize(md=nil,data='')
@data,@md=data,md
@vz=SiSU_Viz::Defaults.new
+ @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
@@ -352,7 +357,7 @@ WOK
title=if dob.ocn ==0 then linkname
else
@@toc[:scr] << '<br />'
- %{<b><a href="##{dob.ocn}">#{linkname}</a></b>}
+ %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}
end
txt_obj={ txt: title }
format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
@@ -394,7 +399,7 @@ WOK
end
else
@@toc[:scr] << '<br />'
- %{<b><a href="##{dob.ocn}">#{linkname}</a></b>}
+ %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}
end
txt_obj={ txt: title }
format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
@@ -511,7 +516,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}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{ocn}">
#{linkname}
</a>}
txt_obj={ txt: lnk_n_txt }
@@ -536,7 +541,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}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{ocn}">
#{linkname}
</a>}
txt_obj={ txt: lnk_n_txt }
@@ -618,7 +623,8 @@ WOK
toc_shared << format_txt_obj.center_bold
@segtoc << format_txt_obj.center_bold
if defined? @md.creator.author
- creator_endnote=@md.creator.author.gsub(/(\*+)/,
+ creator=SiSU_HTML_Tune::CleanHTML.new(@md.creator.author).clean_for_html
+ creator_endnote=creator.gsub(/(\*+)/,
%{&nbsp;<sup><a href="#notes">\\1</a></sup>})
tmp_head=creator_endnote + "\n"
txt_obj={ txt: tmp_head }
diff --git a/lib/sisu/v5/html_format.rb b/lib/sisu/v5/html_format.rb
index 3b15502f..e244bbb8 100644
--- a/lib/sisu/v5/html_format.rb
+++ b/lib/sisu/v5/html_format.rb
@@ -66,30 +66,36 @@ 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
- make=SiSU_Env::ProcessingSettings.new(@md)
- if make.build.ocn?
- ocn_class='ocn'
+ if @make.build.ocn?
if @ocn.to_i==0 \
or @ocn.empty?
- %{<label class="ocn_off">&nbsp;</label>}
+ ''
else
+ name=(@make.build.html_strict?) ? '' : %{ name="#{@ocn}"}
@ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}" href="##{@ocn}" class="lnk#{ocn_class}">\\1</a></label>})
+ %{<label class="ocn"><a#{name} href="##{@ocn_html_identifier}#{@ocn}" class="lnkocn">\\1</a></label>})
end
else
- %{<label class="ocn_off">&nbsp;</label>}
+ ''
end
end
def name
- (@ocn==nil || @ocn.empty?) ? '' : %{<a name="#{@ocn}"></a>}
+ if @make.build.html_strict? \
+ or @ocn==(nil || @ocn.empty?)
+ ''
+ else
+ %{<a name="#{@ocn}"></a>}
+ end
end
def id #w3c? "tidy" complains about numbers as identifiers ! annoying
(@ocn==nil || @ocn.empty?) ? '' : %{id="o#{@ocn}"}
end
def goto
- (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn}">}
+ (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn_html_identifier}#{@ocn}">}
end
end
class HeadInformation
@@ -271,24 +277,6 @@ module SiSU_HTML_Format
else ''
end
end
- def pdf #retired 2.7.9
- pdf=if @md.programs[:pdf] \
- and @cf_defaults.cf_0 =~/p/
- %{
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_p}" target="_top">
- #{@vz.nav_txt_pdf_portrait}
- </a>
-</td>
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_l}" target="_top">
- #{@vz.nav_txt_pdf_landscape}
- </a>
-</td>
-}
- else ''
- end
- end
end
class XML
end
@@ -514,7 +502,8 @@ WOK
end
def rights
def all
- rights=@md.rights.all.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>&copy;</sup>&nbsp;')
+ rights=SiSU_HTML_Tune::CleanHTML.new(@md.rights.all).clean_for_html
+ rights=rights.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>&copy;</sup>&nbsp;')
%{<p class="small_left">Rights: #{rights}</p>
<p />}
end
@@ -648,8 +637,6 @@ WOK
def initialize(md)
super(md)
end
- def title_banner(title,subtitle,creator)
- end
def dot_control_pre_next
pre="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}"
up=@toc
@@ -894,6 +881,7 @@ WOK
attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
def initialize(md,t_o)
@md,@t_o=md,t_o
+ @make=SiSU_Env::ProcessingSettings.new(@md)
if t_o.is_a?(Hash)
@txt =t_o[:txt] || nil
@ocn =t_o[:ocn] || nil
@@ -917,19 +905,19 @@ WOK
p caller
end
end
- @headnamed= (@headname ? %{<a name="h#{@headname}" id="h#{@headname}"></a>} : nil)
+ @headnamed=(@headname ? %{<a id="h#{@headname}"></a>} : nil)
if @txt and not @txt.empty?
@txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
end
@p_num=ParagraphNumber.new(@md,@ocn)
@vz=SiSU_Viz::Defaults.new
- @make=SiSU_Env::ProcessingSettings.new(@md)
end
def nametags_scroll(dob)
tags=''
if defined? dob.tags \
and dob.tags.length > 0 # insert tags "hypertargets"
dob.tags.each do |t|
+ t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier
tags=tags << %{<named id="#{t}" />}
end
end
@@ -940,7 +928,16 @@ WOK
if defined? dob.tags \
and dob.tags.length > 0 # insert tags "hypertargets"
dob.tags.each do |t|
- tags=tags << %{<a name="#{t}" ></a>}
+ t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier
+ if @make.build.html_strict?
+ tags=(t =~/^[#{Mx[:ocn_id_char]}]?[0-9.]+$/) \
+ ? tags #check what can be sorted in ao
+ : (tags << %{<a name="#{t}" ></a>})
+ else
+ tags=(t =~/^[#{Mx[:ocn_id_char]}][0-9.]+$/) \
+ ? tags #check what can be sorted in ao
+ : (tags << %{<a name="#{t}" ></a>})
+ end
end
end
tags
@@ -949,8 +946,8 @@ WOK
hn=if @t_o.is ==:heading \
and not @t_o.name.empty? #determine use
hn=(@t_o.is ==:heading) \
- ? (%{<a name="h#{@t_o.name}" id="h#{@t_o.name}"></a>})
- : (%{<a name="#{@t_o.name}" id="#{@t_o.name}"></a>})
+ ? (%{<a id="h#{@t_o.name}"></a>})
+ : (%{<a id="#{@t_o.name}"></a>})
else nil
end
hn
@@ -981,7 +978,9 @@ WOK
end
def para_form_css(tag,attrib) # regular paragraphs shaped here
ul=ulc=''
- ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/
+ if tag =~/li/
+ ul,ulc="<ul>\n ","\n </ul>"
+ end
%{
<div class="substance">
#{@p_num.ocn_display}
@@ -1037,7 +1036,7 @@ WOK
<div class="substance">
#{@p_num.ocn_display}
<#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name}
- #{@named}<a name="h#{@headname}">#{@txt}</a>
+ #{@named}#{@txt}
</#{tag}>
</div>
}
@@ -1151,8 +1150,6 @@ WOK
#{@vz.table_close}}
end
def bold_heading
- @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>').
- gsub(/[1-9]~/,'')
%{<p class="bold">
#{@txt}
</p>
@@ -1245,6 +1242,7 @@ 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>|<a\s+name="\S+?">/mi
@txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text
@@ -1253,12 +1251,12 @@ WOK
note=''
if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
note=$1
- note=note.gsub(/[\n\s]+/m,' ')
+ note=note.gsub(/[\s]+/m,' ')
txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
- gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
+ gsub(/<a[\s]+name="-\d+"[\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
end
%{<#{tag} class="#{attrib}">
- <a href="##{@ocn}"><i>#{txt}</i></a> #{note}
+ <a href="##{@ocn_html_identifier}#{@ocn}"><i>#{txt}</i></a> #{note}
</#{tag}>}
end
def subtoc_lev5
diff --git a/lib/sisu/v5/html_lite_shared.rb b/lib/sisu/v5/html_lite_shared.rb
index 8c447352..e109debc 100644
--- a/lib/sisu/v5/html_lite_shared.rb
+++ b/lib/sisu/v5/html_lite_shared.rb
@@ -83,6 +83,7 @@ module SiSU_FormatShared
end
@tab="\t"
@brace_url=SiSU_Viz::Defaults.new.url_decoration
+ @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier
@@tablehead,@@tablefoot=[],[]
@vz=SiSU_Viz::Defaults.new
@env=SiSU_Env::InfoEnv.new(@md.fns)
@@ -205,7 +206,7 @@ GSUB
%{<p class="#{h[:class]}" type="#{h[:type]}">#{h[:txt]}</a></p>\n} << "\n"
end
def lev_toc_hname
- %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn}">#{@txt}</a></p>\n} #<< "\n"
+ %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn_html_identifier}#{@ocn}">#{@txt}</a></p>\n} #<< "\n"
end
def lev_toc
h={ txt: txt, class: "toc#{@lv}", type: 'toc' }
@@ -309,10 +310,10 @@ GSUB
def paragraph
attrib=%{class="#{@attrib}" }
if @ocn
- id=%{id="#{@ocn}" }
+ id=%{id="#{Mx[:ocn_id_char]}#{@ocn}" }
type=%{type="substantive" }
else
- id=%{id="none" }
+ id=''
type=%{type="comment" }
end
header=%{header="#{@hname}" } if @hname
diff --git a/lib/sisu/v5/html_minitoc.rb b/lib/sisu/v5/html_minitoc.rb
index dae74c46..5366b127 100644
--- a/lib/sisu/v5/html_minitoc.rb
+++ b/lib/sisu/v5/html_minitoc.rb
@@ -71,6 +71,7 @@
def initialize(md,data)
@md,@data=md,data
@pat_strip_heading_name=/<a name="h?\d.*?">(.+?)<\/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
@@ -204,7 +205,7 @@
fn: @@seg_url,
}
f=@md.file.base_filename.html_seg(fnh)
- lnk_n_txt=%{ <a href="#{f}##{txt.ocn}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">
#{txt.obj}
</a>}
txt_obj={ txt: lnk_n_txt }
@@ -223,7 +224,7 @@
fn: @@seg_url,
}
f=@md.file.base_filename.html_seg(fnh)
- lnk_n_txt=%{ <a href="#{f}##{txt.ocn}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">
#{txt.obj}
</a>}
txt_obj={ txt: lnk_n_txt }
diff --git a/lib/sisu/v5/html_segments.rb b/lib/sisu/v5/html_segments.rb
index b710db81..7a368b9d 100644
--- a/lib/sisu/v5/html_segments.rb
+++ b/lib/sisu/v5/html_segments.rb
@@ -502,7 +502,7 @@ module SiSU_HTML_Seg
'<br /><hr width=90% /><br />'
end
if @md.flag_separate_endnotes
- dob.obj=dob.obj.gsub(/"\s+href="#_(\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#_\\1">}) #endnote- twice #removed file type
+ dob.obj=dob.obj.gsub(/"\s+href="#(#{Mx[:note]}\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#\\1">}) #endnote- twice #removed file type
end
if dob.obj !~/#{@vz.margin_txt_w1}|#{@vz.margin_txt_w2}/
if (dob.is==:heading \
@@ -600,7 +600,7 @@ module SiSU_HTML_Seg
@@seg_subtoc_array << subtoc
end
if @md.flag_auto_endnotes
- if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <a name="_[\d*+]+"/) \
+ if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <a name="#{Mx[:note]}[\d*+]+"/) \
&& dob.is !=:code # endnote-
endnote_array=[]
if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
@@ -629,7 +629,7 @@ module SiSU_HTML_Seg
end
try.join('<br \/>')
#% creation of separate end segment/page of all endnotes referenced back to reference segment
- m=/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?href=")(#-[\d*+]+".+)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/mi
+ m=/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?href=")(##{Mx[:note_ref]}[\d*+]+".+)(?:#{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 }
diff --git a/lib/sisu/v5/html_tune.rb b/lib/sisu/v5/html_tune.rb
index e9392ca8..39cbb708 100644
--- a/lib/sisu/v5/html_tune.rb
+++ b/lib/sisu/v5/html_tune.rb
@@ -104,6 +104,16 @@ module SiSU_HTML_Tune
def initialize(html='')
@html=html
end
+ def clean_for_html
+ html=@html
+ str=if html.is_a?(String)
+ html
+ else html.obj
+ end
+ str=str.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;').
+ gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;').
+ gsub(/[<]/m,'&lt;').gsub(/[>]/m,'&gt;')
+ end
def clean
html=@html
str=if html.is_a?(String)
@@ -111,7 +121,8 @@ module SiSU_HTML_Tune
else html.obj
end
str=str.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;').
- gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
+ gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;').
+ gsub(/[\\]{2}/m,'<br />')
end
end
class Tune
@@ -256,14 +267,14 @@ module SiSU_HTML_Tune
def endnotes_html(dob)
unless dob.is ==:code
dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
+ %{&nbsp;<a name="#{Mx[:note_ref]}\\2" href="##{Mx[:note]}\\2">&nbsp;<sup>\\2</sup>&nbsp;</a> } +
+ %{\\1\\2 <a name="#{Mx[:note]}\\2" href="##{Mx[:note_ref]}\\2">&nbsp;<sup>\\2.</sup></a> \\3 \\4}).
gsub(/(#{Mx[:en_b_o]})([*+]\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
+ %{&nbsp;<a name="#{Mx[:note_ref]}\\2" href="##{Mx[:note]}\\2">&nbsp;<sup>\\2</sup>&nbsp;</a> } +
+ %{\\1\\2 <a name="#{Mx[:note]}\\2" href="##{Mx[:note_ref]}\\2">&nbsp;<sup>\\2.</sup></a> \\3 \\4}).
gsub(/(#{Mx[:en_a_o]})([*+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2</sup></a> \3 \4') #endnote- note- (careful may have switched)
+ %{&nbsp;<a name="#{Mx[:note_ref]}\\2" href="##{Mx[:note]}\\2">&nbsp;<sup>\\2</sup>&nbsp;</a> } +
+ %{\\1\\2 <a name="#{Mx[:note]}\\2" href="##{Mx[:note_ref]}\\2">&nbsp;<sup>\\2</sup></a> \\3 \\4})
end
dob
end
diff --git a/lib/sisu/v5/hub.rb b/lib/sisu/v5/hub.rb
index d0393a3b..8a430e71 100644
--- a/lib/sisu/v5/hub.rb
+++ b/lib/sisu/v5/hub.rb
@@ -72,7 +72,11 @@ module SiSU
require_relative 'defaults' # defaults.rb
include SiSU_Viz
require_relative 'utils' # utils.rb
- require 'uri'
+ begin
+ require 'uri'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri NOT FOUND (LoadError)')
+ end
class HubMaster
def initialize(argv)
pwd_the=Dir.pwd
@@ -246,8 +250,12 @@ module SiSU
end
end
class Processing
- require 'fileutils'
- include FileUtils
+ begin
+ require 'fileutils'
+ include FileUtils
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
@@env=nil
attr_accessor :op
def initialize(opt)
@@ -645,7 +653,11 @@ module SiSU
end
def actions
if @opt.act[:profile][:set]==:on
- require 'profile'
+ begin
+ require 'profile'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('profile NOT FOUND (LoadError)')
+ end
end
action_on_file_ =if @opt.act[:rsync][:set]==:on \
&& @opt.act[:site_init][:set]==:on
@@ -748,7 +760,7 @@ module SiSU
STDERR.puts %{requested action requires valid sisu markup file [filename (.sst .ssm)] or wildcard (that includes a valid filename)}
if (@opt.act[:verbose_plus][:set]==:on \
|| @opt.act[:maintenance][:set]==:on)
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:fuchsia)
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).warn(:fuchsia)
end
end
elsif @opt.mod.inspect =~/--query/
diff --git a/lib/sisu/v5/options.rb b/lib/sisu/v5/options.rb
index 65af15b4..bce0a8a4 100644
--- a/lib/sisu/v5/options.rb
+++ b/lib/sisu/v5/options.rb
@@ -62,7 +62,11 @@
=end
module SiSU_Commandline
- require 'pathname'
+ begin
+ require 'pathname'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
require_relative 'param_make' # param_make.rb
@@sisu_call_origin_path=nil
@@ -662,9 +666,9 @@ module SiSU_Commandline
{ set: :filetype }
else { set: :na }
end
- act[:ocn]=if mod.inspect =~/"--inc-ocn"/
+ act[:ocn]=if mod.inspect =~/"--ocn"|"--inc-ocn"/
{ bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-ocn"/ \
+ elsif mod.inspect =~/"--no-ocn"|"--exc-ocn"/ \
|| act[:switch][:off].inspect =~/"ocn"/
{ bool: false, set: :off }
else { bool: true, set: :na }
@@ -765,12 +769,23 @@ module SiSU_Commandline
{ bool: false, set: :off }
else { bool: true, set: :na }
end
- act[:html]=if (cmd =~/h/ \
+ act[:html]=if mod.inspect =~/"--html-strict"/ \
+ or ((cmd =~/h/ || mod.inspect =~/"--html"/) \
+ && mod.inspect =~/"--strict"/)
+ act[:html_strict]={ bool: true, set: :on }
+ act[:html_scroll]={ bool: true, set: :on }
+ act[:html_seg]={ bool: true, set: :on }
+ { bool: true, set: :on }
+ elsif (cmd =~/h/ \
|| mod.inspect =~/"--html"/)
+ act[:html_strict]={ bool: false, set: :off }
act[:html_scroll]={ bool: true, set: :on }
act[:html_seg]={ bool: true, set: :on }
{ bool: true, set: :on }
else
+ act[:html_strict]=(mod.inspect =~/"--strict"/) \
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:html_scroll]=(mod.inspect =~/"--html-scroll"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
@@ -850,10 +865,20 @@ module SiSU_Commandline
|| mod.inspect =~/"--epub"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
- act[:odt]=(cmd =~/o/ \
- || mod.inspect =~/"--odt"|"--odf"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
+ act[:odt]=if cmd =~/o/ \
+ or mod.inspect =~/"--odt"|"--odf"|"--odt-ocn"|"--odf-ocn"/
+ act[:odt_ocn]=if (mod.inspect =~/"--odt-ocn"|"--odf-ocn"/ \
+ or mod.inspect =~/"--ocn"|"--inc-ocn"/)
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--no-ocn"|"--exc-ocn"/
+ { bool: false, set: :off }
+ else
+ { bool: false, set: :na }
+ end
+ { bool: true, set: :on }
+ else
+ { bool: false, set: :na }
+ end
act[:xml_sax]=(cmd =~/x/ \
|| mod.inspect =~/"--xml-sax"/) \
? { bool: true, set: :on }
@@ -879,10 +904,20 @@ module SiSU_Commandline
|| mod.inspect =~/"--xhtml"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
- act[:txt]=(cmd =~/[at]/ \
- || mod.inspect =~/"--txt"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
+ act[:txt]=if cmd =~/[at]/ \
+ or mod.inspect =~/"--txt"|"--text"|"--plaintext"|"--txt-ocn"|"--text-ocn"|"--plaintext-ocn"/
+ act[:txt_ocn]=if (mod.inspect =~/"--txt-ocn"|"--text-ocn"|"--plaintext-ocn"/ \
+ or mod.inspect =~/"--ocn"|"--inc-ocn"/)
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--no-ocn"|"--exc-ocn"/
+ { bool: false, set: :off }
+ else
+ { bool: false, set: :na }
+ end
+ { bool: true, set: :on }
+ else
+ { bool: false, set: :na }
+ end
act[:txt_textile]=(mod.inspect =~/"--textile"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
diff --git a/lib/sisu/v5/param.rb b/lib/sisu/v5/param.rb
index e8eb3fc6..ba75bfb0 100644
--- a/lib/sisu/v5/param.rb
+++ b/lib/sisu/v5/param.rb
@@ -61,8 +61,12 @@
=end
module SiSU_Param
- require 'uri'
- require 'pstore'
+ begin
+ require 'uri'
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri or pstore NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'param_make' # param_make.rb
@@ -95,8 +99,7 @@ module SiSU_Param
# you may need to change Dir.pwd to @opt.f_pth[:pth] where the latter
# has a path value that is different, however, f_pth is not always set!
Dir.chdir(@opt.f_pth[:pth])
- p '-- bug alert -- '
- p __FILE__ + ':' + __LINE__.to_s
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('-- bug alert --')
p 'f_pth ' + @opt.f_pth[:pth]
p 'pwd ' + Dir.pwd
end
diff --git a/lib/sisu/v5/particulars.rb b/lib/sisu/v5/particulars.rb
index 0687150a..6efbc94c 100644
--- a/lib/sisu/v5/particulars.rb
+++ b/lib/sisu/v5/particulars.rb
@@ -62,7 +62,11 @@
=end
module SiSU_Particulars
- require 'singleton'
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('singleton NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'param' # param.rb
diff --git a/lib/sisu/v5/remote.rb b/lib/sisu/v5/remote.rb
index 145ec9b2..e06e7b33 100644
--- a/lib/sisu/v5/remote.rb
+++ b/lib/sisu/v5/remote.rb
@@ -112,8 +112,12 @@ module SiSU_Remote
@tell=lambda { SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@msg,"#{@msgs.inspect if @msgs}") }
end
def fns
- require 'open-uri'
- require 'pp'
+ begin
+ require 'open-uri'
+ require 'pp'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('open-uri or pp NOT FOUND (LoadError)')
+ end
require_relative 'composite' # composite.rb
@rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
threads=[]
@@ -158,7 +162,11 @@ module SiSU_Remote
def sisupod
get_p=@get_s
if get_p.length > 0 #% remote sisupod
- require 'net/http'
+ begin
+ require 'net/http'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('net/http NOT FOUND (LoadError)')
+ end
for requested_pod in get_p
pod_info=RemoteDownload.new(requested_pod)
Net::HTTP.start(pod_info.pod.site) do |http|
diff --git a/lib/sisu/v5/rexml.rb b/lib/sisu/v5/rexml.rb
index c00797a3..bc9f7541 100644
--- a/lib/sisu/v5/rexml.rb
+++ b/lib/sisu/v5/rexml.rb
@@ -62,14 +62,22 @@
=end
module SiSU_Rexml
# load XML file for REXML parsing
- require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ begin
+ require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)')
+ end
require_relative 'param' # param.rb
include SiSU_Param
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
include SiSU_Viz
class Rexml
- require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ begin
+ require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)')
+ end
def initialize(md,fno)
@md,@fno=md,fno
@env=SiSU_Env::InfoEnv.new(@md.fns)
diff --git a/lib/sisu/v5/shared_markup_alt.rb b/lib/sisu/v5/shared_markup_alt.rb
index 4a1959e8..5a37c934 100644
--- a/lib/sisu/v5/shared_markup_alt.rb
+++ b/lib/sisu/v5/shared_markup_alt.rb
@@ -208,7 +208,11 @@ module SiSU_TextRepresentation
end
@env ||=SiSU_Env::InfoEnv.new(@md.fns)
@sha_ =((@env.digest.type =='sha256') ? true : false)
- @sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ begin
+ @sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error((@sha_ ? 'digest/sha2' : 'digest/md5') + ' NOT FOUND')
+ end
end
def digest(txt)
d=nil
diff --git a/lib/sisu/v5/src_kdissert_share.rb b/lib/sisu/v5/src_kdissert_share.rb
index f91aec55..8ccb9708 100644
--- a/lib/sisu/v5/src_kdissert_share.rb
+++ b/lib/sisu/v5/src_kdissert_share.rb
@@ -64,8 +64,12 @@ module SiSU_KdiSource
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
class Source
- require 'fileutils'
- include FileUtils
+ begin
+ require 'fileutils'
+ include FileUtils
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
@env=SiSU_Env::InfoEnv.new(@opt.fns)
diff --git a/lib/sisu/v5/sst_from_xml.rb b/lib/sisu/v5/sst_from_xml.rb
index 110d7df5..c969ac31 100644
--- a/lib/sisu/v5/sst_from_xml.rb
+++ b/lib/sisu/v5/sst_from_xml.rb
@@ -64,8 +64,12 @@
module SiSU_sstFromXML
require_relative 'sysenv' # sysenv.rb
class Convert
- require 'rexml/document'
- include REXML
+ begin
+ require 'rexml/document'
+ include REXML
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
@sisu,@sisu_base=[],[]
diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb
index a8fcbd7a..f2b5bd27 100644
--- a/lib/sisu/v5/sysenv.rb
+++ b/lib/sisu/v5/sysenv.rb
@@ -66,12 +66,20 @@
module SiSU_Env
require_relative 'constants' # constants.rb
require_relative 'utils' # utils.rb
- require 'fileutils'
- include FileUtils::Verbose
- require 'singleton'
+ begin
+ require 'singleton'
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('singleton or fileutils NOT FOUND (LoadError)')
+ end
@@noyaml=false
class InfoDate
- require 'date'
+ begin
+ require 'date'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('date NOT FOUND (LoadError)')
+ end
attr_accessor :dt,:t
def initialize
@dt,@t=Date.today.to_s,Time.now
@@ -97,7 +105,11 @@ module SiSU_Env
end
end
class InfoSystemGen
- require 'rbconfig'
+ begin
+ require 'rbconfig'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig NOT FOUND (LoadError)')
+ end
@@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@rc,@@sisurc_path,@@ad=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'],Config::CONFIG['sysconfdir'] + '/sisu',Config::CONFIG['host'],Config::CONFIG['arch'],%x{ruby -v}.strip,Config::CONFIG['archdir'],Config::CONFIG['sitearchdir'],Config::CONFIG['bindir'],%x{locale charmap}.strip,nil,nil,{} # %x{ruby -v}.strip # Config::CONFIG['rb_ver']
out=Config::CONFIG['localstatedir']
etc=Config::CONFIG['sysconfdir'] + '/sisu'
@@ -242,10 +254,18 @@ module SiSU_Env
end
if load_prog \
and @prog=~/dbi/
- require 'dbi' #revisit
+ begin
+ require 'dbi'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('dbi NOT FOUND (LoadError)')
+ end
end
if load_prog
- require @prog
+ begin
+ require @prog
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error("#{@prog} NOT FOUND (LoadError)")
+ end
else
@mandatory \
? (SiSU_Screen::Ansi.new(@prog,"*WARN* module required: #{@prog}").warn)
@@ -330,7 +350,11 @@ module SiSU_Env
f=S_CONF[:rc_yml]
p_f="#{v}/#{f}"
if FileTest.exist?(p_f)
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@sisurc_path=v
@@rc=YAML::load(File::open(p_f))
break
@@ -339,7 +363,11 @@ module SiSU_Env
f='sisurc.yaml'
p_f="#{v}/#{f}"
if FileTest.exist?(p_f)
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@sisurc_path=v
@@rc=YAML::load(File::open(p_f))
break
@@ -378,7 +406,11 @@ module SiSU_Env
else
if FileTest.exist?("#{v}/list.yml")
unless @@ad[:promo_list]
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@ad[:promo_list] ||= YAML::load(File::open("#{v}/list.yml"))
end
@@ad[:flag_promo]=true
@@ -396,7 +428,11 @@ module SiSU_Env
else
if FileTest.exist?("#{v}/promo.yml")
unless @@ad[:promo]
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@ad[:promo] ||= YAML::load(File::open("#{v}/promo.yml"))
end
@@ad[:flag_promo]=true
@@ -716,7 +752,7 @@ module SiSU_Env
program='rcs'
program_ref="\n\t\tdocument version information requested"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -724,7 +760,15 @@ module SiSU_Env
program='cvs'
program_ref="\n\t\tdocument version information requested"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ 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"
+ if program_found?(program); true
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("*WARN* #{program} is not installed #{program_ref}")
false
end
end
@@ -732,7 +776,7 @@ module SiSU_Env
program='openssl'
program_ref="\n\t\tused to generate requested source document identification digest"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -745,7 +789,7 @@ module SiSU_Env
dgst=%x{openssl dgst -md5 #{File.basename(filename)}}.strip #use file name without file path
Dir.chdir(pwd)
dgst.scan(/\S+/)
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -758,7 +802,7 @@ module SiSU_Env
dgst=%x{openssl dgst -sha256 #{File.basename(filename)}}.strip #use file name without file path
Dir.chdir(pwd)
dgst.scan(/\S+/)
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -766,7 +810,7 @@ module SiSU_Env
program='psql'
program_ref="\n\t\tpsql requested"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -1030,9 +1074,13 @@ module SiSU_Env
end
end
class InfoEnv < EnvCall
- require 'pathname'
- require 'fileutils'
- include FileUtils
+ begin
+ require 'pathname'
+ require 'fileutils'
+ include FileUtils
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname or fileutils NOT FOUND (LoadError)')
+ end
attr_accessor :filename,:sys,:home,:hostname,:user,:env,:rc,:www,:fnb,:fnn,:fnt,:flv,:webserv_path,:stub_pwd,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir
@@image_flag,@@local_image=true,true #warning on @@image_flag
@@fb,@@man_path=nil,nil
@@ -1080,7 +1128,7 @@ module SiSU_Env
elsif output_dir_structure.by_filename?
''
else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('set output type, by: language, filetype or filename')
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn('set output type, by: language, filetype or filename')
end
@stub_set_manifest=stub + '/manifest'
end
@@ -3169,8 +3217,12 @@ WOK
end
end
class CleanOutput
- require 'fileutils'
- include FileUtils::Verbose
+ begin
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
z=SiSU_Env::FileMap.new(opt)
@@ -3326,7 +3378,11 @@ WOK
end
class InfoRemote < FileMap
@@flag_remote=false
- require 'socket'
+ begin
+ require 'socket'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('socket NOT FOUND (LoadError)')
+ end
def initialize(opt)
super(opt) #
@opt=opt
@@ -3674,8 +3730,12 @@ WOK
end
class InfoVersion <InfoEnv
include Singleton
- require 'rbconfig'
- require 'yaml'
+ begin
+ require 'rbconfig'
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig or yaml NOT FOUND (LoadError)')
+ end
@@lib_path=nil
def get_version
@version={}
@@ -3845,6 +3905,53 @@ WOK
true
end
end
+ def plaintext_ocn?
+ if cmd_rc_act[:txt_ocn][:set]==:on \
+ or cmd_rc_act[:ocn][:set]==:on
+ true
+ elsif cmd_rc_act[:txt_ocn][:set]==:off \
+ or cmd_rc_act[:ocn][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.ocn? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ false
+ end
+ end
+ def odt_ocn?
+ if cmd_rc_act[:odt_ocn][:set]==:on \
+ or cmd_rc_act[:ocn][:set]==:on
+ true
+ elsif cmd_rc_act[:odt_ocn][:set]==:off \
+ or cmd_rc_act[:ocn][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.ocn? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ false
+ end
+ end
+ def html_strict?
+ if cmd_rc_act[:html_strict][:set]==:on
+ true
+ elsif cmd_rc_act[:html_strict][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_strict? \
+ and doc_rc.html_strict? ==:on
+ true
+ else
+ false
+ end
+ end
def toc?
if cmd_rc_act[:toc][:set]==:on
true
@@ -4081,6 +4188,11 @@ WOK
end
self
end
+ def ocn_html_identifier
+ (build.html_strict?) \
+ ? Mx[:ocn_id_char]
+ : ''
+ end
def output_dir_structure
def by_language_code?
if cmd_rc_act[:output_by][:set] == :language
@@ -4291,7 +4403,14 @@ WOK
DBI.connect(sqlite_discrete.dbi)
end
def conn_sqlite3
- SQLite3::Database.new(sqlite_discrete.sqlite3)
+ begin
+ $sqlite3=:yes
+ require 'sqlite3'
+ SQLite3::Database.new(sqlite_discrete.sqlite3)
+ rescue LoadError
+ $sqlite3=:no
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 NOT FOUND (LoadError)')
+ end
end
self
end
diff --git a/lib/sisu/v5/texpdf.rb b/lib/sisu/v5/texpdf.rb
index d0d88886..b67bb545 100644
--- a/lib/sisu/v5/texpdf.rb
+++ b/lib/sisu/v5/texpdf.rb
@@ -61,7 +61,11 @@
=end
module SiSU_TeX
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'defaults' # defaults.rb
include SiSU_Viz
require_relative 'particulars' # particulars.rb
@@ -78,7 +82,11 @@ module SiSU_TeX
@@n=@@tableheader=@@rights=nil
@@date ||=SiSU_Env::InfoDate.new
class Source
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
include SiSU_Viz
@@ -270,7 +278,7 @@ module SiSU_TeX
and File.size(texfile) > 0
#@tex_f_no+=1
else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("\tzero file size #{@env.processing_path.tex}/#{texfile}")
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error("\tzero file size #{@env.processing_path.tex}/#{texfile}")
end
end
end
@@ -365,7 +373,7 @@ module SiSU_TeX
elsif @md.opt.act[:pdf_p][:set]==:on
'pdfTex portrait'
else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('error: neither landscape nor portrait')
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('error: neither landscape nor portrait')
end
if (@md.opt.act[:verbose][:set]==:on \
|| @md.opt.act[:verbose_plus][:set]==:on \
diff --git a/lib/sisu/v5/txt_plain.rb b/lib/sisu/v5/txt_plain.rb
index ca944a1f..e27e9231 100644
--- a/lib/sisu/v5/txt_plain.rb
+++ b/lib/sisu/v5/txt_plain.rb
@@ -400,7 +400,8 @@ WOK
@@endnotes[:para]=[]
end
def ocn_display(dob)
- if @env.plaintext_ocn?
+ make=SiSU_Env::ProcessingSettings.new(@md)
+ if make.build.plaintext_ocn?
if defined? dob.ocn \
and dob.ocn.is_a?(Fixnum)
(defined? dob.ocn) ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" : ''
diff --git a/lib/sisu/v5/utils.rb b/lib/sisu/v5/utils.rb
index 97ca24be..1c04d886 100644
--- a/lib/sisu/v5/utils.rb
+++ b/lib/sisu/v5/utils.rb
@@ -127,6 +127,12 @@ module SiSU_Utils
def mark(v=nil,x=nil)
puts set(v,x)
end
+ def warn(v=nil,x=nil)
+ STDERR.puts set(v,'*WARN* ' + x)
+ end
+ def error(v=nil,x=nil)
+ STDERR.puts set(v,'*ERROR* ' + x)
+ end
end
class Path
def initialize(dir=Dir.pwd)
diff --git a/lib/sisu/v5/webrick.rb b/lib/sisu/v5/webrick.rb
index baf468c2..e43d8cd1 100644
--- a/lib/sisu/v5/webrick.rb
+++ b/lib/sisu/v5/webrick.rb
@@ -63,12 +63,16 @@
=end
module SiSU_Webserv
class WebrickStart
+ begin
+ require 'time'
require 'webrick'
include WEBrick
- require 'time'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- include SiSU_Screen
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('time or webrick NOT FOUND (LoadError)')
+ end
+ require_relative 'sysenv' # sysenv.rb
+ include SiSU_Env
+ include SiSU_Screen
def initialize
begin #%
@cX=SiSU_Screen::Ansi.new('yes').cX
@@ -97,9 +101,13 @@ module SiSU_Webserv
#% wb_top
wb_top=%q(#!/usr/bin/env ruby
# * arch-tag: webrick info on environment, mounted directories, and contents of pwd
- require 'time'
- require 'cgi'
- require 'fcgi'
+ begin
+ require 'time'
+ require 'cgi'
+ require 'fcgi'
+ rescue LoadError
+ puts 'time, cgi or fcgi NOT FOUND (LoadError)'
+ end
ls=Dir.entries('./')
dir_contents=[]
ls.each { |x| dir_contents << "<a href=\"./#{x}/\">#{x}</a><br>" unless x =~/^(\.)+$/ }
diff --git a/lib/sisu/v5/xhtml_epub2.rb b/lib/sisu/v5/xhtml_epub2.rb
index 33e3a529..40033101 100644
--- a/lib/sisu/v5/xhtml_epub2.rb
+++ b/lib/sisu/v5/xhtml_epub2.rb
@@ -61,7 +61,11 @@
=end
module SiSU_XHTML_EPUB2
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'particulars' # particulars.rb
include SiSU_Particulars
require_relative 'defaults' # defaults.rb
@@ -744,7 +748,8 @@ module SiSU_XHTML_EPUB2
end
def output_zip
FileUtils::mkdir_p(@md.file.output_path.epub.dir) unless FileTest.directory?(@md.file.output_path.epub.dir)
- if FileTest.directory?(@md.env.processing_path.epub)
+ if FileTest.directory?(@md.env.processing_path.epub) \
+ and SiSU_Env::SystemCall.new.zip
pwd=Dir.pwd
Dir.chdir(@md.env.processing_path.epub)
system("
@@ -755,6 +760,8 @@ module SiSU_XHTML_EPUB2
unless @md.opt.act[:maintenance][:set]==:on
FileUtils::rm_r(@md.env.processing_path.epub)
end
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('*EXITED epub* zip program not found') unless SiSU_Env::SystemCall.new.zip
end
end
def make_cover_image
diff --git a/lib/sisu/v5/xhtml_epub2_format.rb b/lib/sisu/v5/xhtml_epub2_format.rb
index 8dd8a88e..6522378b 100644
--- a/lib/sisu/v5/xhtml_epub2_format.rb
+++ b/lib/sisu/v5/xhtml_epub2_format.rb
@@ -1362,12 +1362,13 @@ output_epub_cont_seg.close
depth=@md.lvs[1] + @md.lvs[2] + @md.lvs[3] + @md.lvs[4]
title=SanitizeXML.xml(@md.title.full)
author=SanitizeXML.xml(@md.author)
+ dgst=(@md.dgst.is_a?(Array) and @md.dgst.length > 1) ? @md.dgst[1] : 'na'
<<-WOK
<!-- four required metadata items (for all NCX documents,
(including the relaxed constraints of OPS 2.0) -->
<title>#{title} by #{author}</title>
<link href="css/xhtml.css" rel="stylesheet" type="text/css" id="main-css" />
- <meta name="dtb:uid" content="urn:uuid:#{@md.dgst[1]}" />
+ <meta name="dtb:uid" content="urn:uuid:#{dgst}" />
<!-- <meta name="epub-creator" content="#{@md.publisher}" /> -->
<meta name="dtb:depth" content="#{depth}" />
<meta name="dtb:totalPageCount" content="0" />
@@ -1579,18 +1580,19 @@ output_epub_cont_seg.close
else ''
end
f=SiSU_Env::FileOp.new(@md)
+ dgst=(@md.dgst.is_a?(Array) and @md.dgst.length > 1) ? @md.dgst[1] : 'na'
<<-WOK
<#{$ep[:o]}metadata
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:opf="http://www.idpf.org/2007/opf"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
- unique-identifier="urn:uuid:#{@md.dgst[1]}" version="2.0">
+ unique-identifier="urn:uuid:#{dgst}" version="2.0">
<dc:title>#{@md.title.full}</dc:title>
#{cover_image}#{author}#{editor}#{translator}#{illustrator}#{language}#{date_published}#{subject}#{rights}
<dc:identifier opf:scheme="URI">#{f.output_path.epub.url.gsub(/http:\/\//,'')}/#{f.base_filename.epub}</dc:identifier>
- <dc:identifier id="bookid">urn:uuid:#{@md.dgst[1]}</dc:identifier>
- <!-- <dc:identifier id="EPB-UUID">urn:uuid:#{@md.dgst[1]}</dc:identifier> -->
+ <dc:identifier id="bookid">urn:uuid:#{dgst}</dc:identifier>
+ <!-- <dc:identifier id="EPB-UUID">urn:uuid:#{dgst}</dc:identifier> -->
</#{$ep[:o]}metadata>
WOK
end
@@ -2132,10 +2134,10 @@ output_epub_cont_seg.close
note=''
if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
note=$1
- note=note.gsub(/[\n\s]+/m,' ')
+ note=note.gsub(/[\s]+/m,' ')
txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
- gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{$ep[:hsp]}<sup id="note\d+">\d+<\/sup>#{$ep[:hsp]}/m,'').
- gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{$ep[:hsp]}<sup id="note\d+">\d+<\/sup>#{$ep[:hsp]}/m,'') #remove
+ gsub(/<a[\n\s]+"[\n\s]+href="##{Mx[:note_ref]}\d+">#{$ep[:hsp]}<sup id="#{Mx[:note]}\d+">\d+<\/sup>#{$ep[:hsp]}/m,'').
+ gsub(/<a[\n\s]+"[\n\s]+href="##{Mx[:note_ref]}\d+">#{$ep[:hsp]}<sup id="#{Mx[:note]}\d+">\d+<\/sup>#{$ep[:hsp]}/m,'') #remove
end
%{<#{tag} class="#{attrib}">
<a href="#o#{@ocn}"><i>#{txt}</i></a> #{note}
diff --git a/lib/sisu/v5/xhtml_epub2_segments.rb b/lib/sisu/v5/xhtml_epub2_segments.rb
index 764fcc17..8612696f 100644
--- a/lib/sisu/v5/xhtml_epub2_segments.rb
+++ b/lib/sisu/v5/xhtml_epub2_segments.rb
@@ -401,7 +401,7 @@ WOK
sto.break
end
if @md.flag_separate_endnotes # may need to revisit, check
- dob.obj=dob.obj.gsub(/"\s+href="#note_ref(\d+)">/,%{" href=\"endnotes#{Sfx[:epub_xhtml]}#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 \
diff --git a/lib/sisu/v5/xhtml_epub2_tune.rb b/lib/sisu/v5/xhtml_epub2_tune.rb
index 6ac53c39..82f90366 100644
--- a/lib/sisu/v5/xhtml_epub2_tune.rb
+++ b/lib/sisu/v5/xhtml_epub2_tune.rb
@@ -298,22 +298,22 @@ module SiSU_XHTML_EPUB2_Tune
data.each do |dob|
unless dob.is ==:code
dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note\\2">#{Mx[:nbsp]}<sup id="note_ref\\2">\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1\\2 <a href="#note_ref\\2">#{Mx[:nbsp]}<sup id="note\\2">\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref]}\\2">\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1\\2 <a href="##{Mx[:note_ref]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note]}\\2">\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
gsub(/(#{Mx[:en_b_o]})[*](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_astx\\2">#{Mx[:nbsp]}<sup id="note_ref_astx\\2">#{ast}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast}\\2 <a href="#note_ref_astx\\2">#{Mx[:nbsp]}<sup id="note_astx\\2">#{ast}\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note_astx]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref_astx]}\\2">#{ast}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{ast}\\2 <a href="##{Mx[:note_ref_astx]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_astx]}\\2">#{ast}\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
gsub(/(#{Mx[:en_b_o]})[+](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_plus\\2">#{Mx[:nbsp]}<sup id="note_ref_plus\\2">#{pls}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls}\\2 <a href="#note_ref_plus\\2">#{Mx[:nbsp]}<sup id="note_plus\\2">#{pls}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched) # double-check there may here be a bug
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note_plus]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref_plus]}\\2">#{pls}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{pls}\\2 <a href="##{Mx[:note_ref_plus]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_plus]}\\2">#{pls}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched) # double-check there may here be a bug
if dob.obj =~/#{Mx[:en_a_o]}([*+]+)\s+.+?#{Mx[:en_a_c]}/
m=$1.length.to_i
dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]})[*]+\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{a*m}">#{Mx[:nbsp]}<sup id="note_ref#{a*m}">#{ast*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast*m} <a href="#note_ref#{a*m}">#{Mx[:nbsp]}<sup id="note#{a*m}">#{ast*m}</sup></a> \\2 \\3}). #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note]}#{a*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref]}#{a*m}">#{ast*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{ast*m} <a href="##{Mx[:note_ref]}#{a*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note]}#{a*m}">#{ast*m}</sup></a> \\2 \\3}). #endnote- note- (careful may have switched)
gsub(/(#{Mx[:en_a_o]})([+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{s*m}">#{Mx[:nbsp]}<sup id="note_ref#{s*m}">#{pls*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls*m} <a href="#note_ref#{s*m}">#{Mx[:nbsp]}<sup id="note#{s*m}">#{pls*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note]}#{s*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref]}#{s*m}">#{pls*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{pls*m} <a href="##{Mx[:note_ref]}#{s*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note]}#{s*m}">#{pls*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
end
end
@tuned_file << dob
diff --git a/lib/sisu/v5/xml_fictionbook2.rb b/lib/sisu/v5/xml_fictionbook2.rb
index 6549fa12..c72332bb 100644
--- a/lib/sisu/v5/xml_fictionbook2.rb
+++ b/lib/sisu/v5/xml_fictionbook2.rb
@@ -227,7 +227,11 @@ module SiSU_XML_Fictionbook
endnotes
end
def extract_images #work on
- require "base64"
+ begin
+ require 'base64'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('base64 NOT FOUND (LoadError)')
+ end
images_raw,images_base64_fb2=[],[]
images_base64={}
if defined? @md.make.cover_image[:cover]
diff --git a/lib/sisu/v5/xml_odf_odt.rb b/lib/sisu/v5/xml_odf_odt.rb
index a6a7a127..d2ab0477 100644
--- a/lib/sisu/v5/xml_odf_odt.rb
+++ b/lib/sisu/v5/xml_odf_odt.rb
@@ -73,8 +73,12 @@ module SiSU_XML_ODF_ODT
require_relative 'txt_shared' # txt_shared.rb
@@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0
class Source
- require 'zlib'
- require 'find'
+ begin
+ require 'zlib'
+ require 'find'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('zlib or find NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
@particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
@@ -117,6 +121,7 @@ module SiSU_XML_ODF_ODT
@@fns=nil
def initialize(particulars)
@md,@env,@ao_array=particulars.md,particulars.env,particulars.ao_array
+ @make=SiSU_Env::ProcessingSettings.new(@md)
@vz=SiSU_Viz::Defaults.new
@tab="\t"
@brace_url=SiSU_Viz::Defaults.new.url_decoration
@@ -552,10 +557,10 @@ module SiSU_XML_ODF_ODT
end
p_num={ display: '', set_ref: '' }
if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- if @env.odt_ocn?
+ if @make.build.odt_ocn?
if defined? dob.ocn \
and dob.ocn.is_a?(Fixnum)
- p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn).set_bookmark_and_display
+ p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn).set_bookmark_and_display
end
end
end
@@ -678,7 +683,7 @@ module SiSU_XML_ODF_ODT
and (dob.obj =~/~metadata/ or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o]
if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check
if defined? dob.ocn and dob.ocn =~/\d+/
- @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn)
+ @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn)
end
if dob.is ==:heading \
|| dob.is ==:para \
@@ -805,7 +810,8 @@ WOK
od.close
opendoc=@md.file.base_filename.odt #watch where output by language
FileUtils::mkdir_p(@md.file.output_path.odt.dir) unless FileTest.directory?(@md.file.output_path.odt.dir)
- if FileTest.directory?(@env.processing_path.odt)
+ if FileTest.directory?(@env.processing_path.odt) \
+ and SiSU_Env::SystemCall.new.zip
pwd=Dir.pwd
Dir.chdir(@env.processing_path.odt)
system("
@@ -813,6 +819,8 @@ WOK
")
FileUtils::mv(opendoc, @md.file.place_file.odt.dir)
Dir.chdir(pwd)
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('*EXITED odf* zip program not found') unless SiSU_Env::SystemCall.new.zip
end
end
end
diff --git a/lib/sisu/v5/xml_odf_odt_format.rb b/lib/sisu/v5/xml_odf_odt_format.rb
index 2a092011..b56e4284 100644
--- a/lib/sisu/v5/xml_odf_odt_format.rb
+++ b/lib/sisu/v5/xml_odf_odt_format.rb
@@ -65,17 +65,26 @@ module SiSU_XML_ODF_ODT_Format
include SiSU_Param
include SiSU_Viz
class ParagraphNumber
- def initialize(paranum)
+ def initialize(make,paranum)
+ @make=make
@paranum=/(\d+)/m.match(paranum.to_s)[1]
end
def set_ref_and_display
- set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>')
- disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>})
+ set_ref=@paranum.gsub(/(\d+)/,
+ ' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>')
+ disp=@paranum.gsub(/(\d+)/,
+ (@make.build.odt_ocn?) \
+ ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}
+ : '')
{ display: disp, set_ref: set_ref }
end
def set_bookmark_and_display
- set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>')
- disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>})
+ set_ref=@paranum.gsub(/(\d+)/,
+ ' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>')
+ disp=@paranum.gsub(/(\d+)/,
+ (@make.build.odt_ocn?) \
+ ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}
+ : '')
{ display: disp, set_ref: set_ref }
end
def name
diff --git a/lib/sisu/v6/ao_doc_str.rb b/lib/sisu/v6/ao_doc_str.rb
index 0cdd553b..d8c012fd 100644
--- a/lib/sisu/v6/ao_doc_str.rb
+++ b/lib/sisu/v6/ao_doc_str.rb
@@ -163,10 +163,13 @@ module SiSU_AO_DocumentStructureExtract
str=str.gsub(/(^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/i,
"\\1#{Mx[:tag_o]}\\2#{Mx[:tag_c]}").
gsub(/ [ ]+/i,' ')
- tags=str.scan(/#{Mx[:tag_o]}(\S+?)#{Mx[:tag_c]}/).flatten
+ tags=str.scan(/#{Mx[:tag_o]}(\S+?)#{Mx[:tag_c]}/).flatten.uniq
str=str.gsub(/[ ]?#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}[ ]?/,' ') #may be issues with spaces would leave one, but "code" blocks?
end
tags=nametag ? (tags << nametag) : tags
+ tags.each do |t|
+ t.gsub!(/[^a-z0-9._-]/,'')
+ end
end
[str,tags]
end
diff --git a/lib/sisu/v6/ao_hash_digest.rb b/lib/sisu/v6/ao_hash_digest.rb
index b2fd8bfd..ce45b9e4 100644
--- a/lib/sisu/v6/ao_hash_digest.rb
+++ b/lib/sisu/v6/ao_hash_digest.rb
@@ -75,7 +75,11 @@ module SiSU_AO_Hash
data=@data.compact
@tuned_file=[]
sha_ =(@env.digest.type=='sha256' ? true : false)
- sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ begin
+ sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error((sha_ ? 'digest/sha2' : 'digest/md5') + ' NOT FOUND')
+ end
data.each do |t_o|
unless t_o.obj.is_a?(Array)
t_o.obj=t_o.obj.strip
diff --git a/lib/sisu/v6/ao_images.rb b/lib/sisu/v6/ao_images.rb
index 76721d63..0279994d 100644
--- a/lib/sisu/v6/ao_images.rb
+++ b/lib/sisu/v6/ao_images.rb
@@ -62,8 +62,12 @@
=end
module SiSU_AO_Images
class Images
- #require 'RMagick'
- #include Magick
+ #begin
+ # require 'RMagick'
+ # include Magick
+ #rescue LoadError
+ # SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('RMagic NOT FOUND (LoadError)')
+ #end
def initialize(md,data)
@md,@data=md,data
end
diff --git a/lib/sisu/v6/ao_numbering.rb b/lib/sisu/v6/ao_numbering.rb
index 23d9fd73..acb2351a 100644
--- a/lib/sisu/v6/ao_numbering.rb
+++ b/lib/sisu/v6/ao_numbering.rb
@@ -78,6 +78,14 @@ module SiSU_AO_Numbering
data=set_heading_top(data) unless @md.set_heading_top
[data,tags_map,ocn_html_seg_map]
end
+ def set_tags(tags,tag)
+ tags=if not tag.empty? \
+ and tag !~/^\d+$/
+ tag=tag.gsub(/[^a-z0-9._-]/,'')
+ [tag,tags].flatten
+ else tags
+ end
+ end
def number_plaintext_para(data)
@tuned_file=[]
data.each do |dob|
@@ -168,10 +176,10 @@ module SiSU_AO_Numbering
and not @md.seg_names.include?(title_no)
if dob.ln==no1
dob.name="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,title_no)
tag=dob.obj.gsub(/(Article|Clause|Section|Chapter)\s+/,"\\1_#{title_no}").downcase
tag=heading_tag_clean(tag)
- dob.tags=[tag,dob.tags].flatten if tag !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,tag)
dob.obj=(dob.obj =~/(Article|Clause|Section)\s+/) \
? (dob.obj.gsub(/(Article|Clause|Section)\s+/,"\\1 #{title_no} "))
: (dob.obj.gsub(/^/,"#{title_no}. ")) #fix stop later
@@ -179,7 +187,7 @@ module SiSU_AO_Numbering
if dob.ln !=no1 \
and dob.obj =~/^[\d.]+\s/ #fix -> if the title starts with a numbering scheme, do not auto-number, review
dob.name ="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,title_no)
dob.obj=dob.obj.gsub(/^/,"#{title_no}. ")
end
@md.seg_names << title_no
@@ -187,28 +195,28 @@ module SiSU_AO_Numbering
if dob.ln!=no1 \
and dob.name!~/^[a-z_\.]+$/ \
and dob.obj !~/[A-Z]\.?\s/ #bug -> tmp fix, excludes A. B. C. lettering, but not roman numerals, is arbitrary, review required # not fixed, work on
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,title_no)
dob.obj=dob.obj.gsub(/^/i,"#{title_no}. ")
end
end
if dob.ln==no1 #watch because here you change dob.name
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,"h#{title_no}")
end
if dob.ln==no2 #watch because here you change dob.name
t_no2+=1; t_no3=0
title_no="#{t_no1}.#{t_no2}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,"h#{title_no}")
dob=number_sub_heading(dob,no2,title_no)
end
if dob.ln==no3 #watch because here you change dob.name
t_no3+=1
title_no="#{t_no1}.#{t_no2}.#{t_no3}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,"h#{title_no}")
dob=number_sub_heading(dob,no3,title_no)
end
elsif dob.ln.to_s =~/^[0-6]/ \
and dob.name =~ /^[\w-]+-/ # endnotes, watch2005# endnotes, watch2005
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
dob.name.gsub(/^([a-z_\.]+)-$/,'\1')
end
elsif dob.is ==:heading \
@@ -219,13 +227,13 @@ module SiSU_AO_Numbering
and dob.ln.to_s =~/^[0-9]/ \
and dob.obj =~ /^([\d\.]+)/ #risky (must be unique) consider output to 4~~\d instead of 4~\d
dob.name=$1
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
end
if @md.toc_lev_limit
end
elsif defined? dob.name \
and dob.name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
end
dob.tags=dob.tags.uniq if defined? dob.tags
@tuned_file << dob
@@ -312,7 +320,7 @@ module SiSU_AO_Numbering
if @md.seg_names.is_a?(Array) \
and not @md.seg_names.include?(possible_seg_name)
dob.name=possible_seg_name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
+ dob.tags=set_tags(dob.tags,dob.name)
@md.seg_names << possible_seg_name
elsif (@md.opt.act[:verbose_plus][:set]==:on \
or @md.opt.act[:maintenance][:set]==:on)
@@ -323,7 +331,7 @@ module SiSU_AO_Numbering
and dob.name #extract segment name from embedded document structure info
if @md.seg_names.is_a?(Array) \
and not @md.seg_names.include?(dob.name)
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
+ dob.tags=set_tags(dob.tags,dob.name)
@md.seg_names << dob.name
end
end
@@ -334,7 +342,7 @@ module SiSU_AO_Numbering
if @md.seg_names.is_a?(Array) \
and not @md.seg_names.include?(segn_auto)
dob.name=segn_auto
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
+ dob.tags=set_tags(dob.tags,dob.name)
@md.seg_names << segn_auto
else puts 'segment name (numbering) error'
end
diff --git a/lib/sisu/v6/cgi_pgsql.rb b/lib/sisu/v6/cgi_pgsql.rb
index 2bcd42e3..26db0341 100644
--- a/lib/sisu/v6/cgi_pgsql.rb
+++ b/lib/sisu/v6/cgi_pgsql.rb
@@ -74,12 +74,12 @@ module SiSU_CGI_PgSQL
get_init=SiSU_Env::GetInit.new
@rc=get_init.sisu_yaml.rc
@name_of={}
- @name_of[:output_dir_structure]=if @opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
- @opt.dir_structure_by.to_s
+ @name_of[:output_dir_structure]=if opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
+ opt.dir_structure_by.to_s
else 'language'
end
- @name_of[:lingual]=if @opt.lingual.to_s =~/(?:mono|multi)/
- @opt.lingual.to_s
+ @name_of[:lingual]=if opt.lingual.to_s =~/(?:mono|multi)/
+ opt.lingual.to_s
else 'multi'
end
if defined? @rc['search'] \
@@ -93,13 +93,13 @@ module SiSU_CGI_PgSQL
@name_of[:db]=@env.path.stub_pwd #'sisu' #breaks if not present
false
end
- @name_of[:host_url_cgi]="#{@env.url.webserv_base_cgi(@opt)}/cgi-bin"
- @name_of[:host_url_docs]=@env.url.webserv_files_from_db(@opt)
- @name_of[:cgi_script]=@env.url.cgi_sample_search_form_name(@opt)
- @name_of[:user]=@db.psql.user(@opt)
+ @name_of[:host_url_cgi]="#{@env.url.webserv_base_cgi(opt)}/cgi-bin"
+ @name_of[:host_url_docs]=@env.url.webserv_files_from_db(opt)
+ @name_of[:cgi_script]=@env.url.cgi_sample_search_form_name(opt)
+ @name_of[:user]=@db.psql.user(opt)
@cgi_file_name=@name_of[:cgi_script]
- @image_src="#{@env.url.webserv_base_cgi(@opt)}/_sisu/image_sys"
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
+ @image_src="#{@env.url.webserv_base_cgi(opt)}/_sisu/image_sys"
+ @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,opt,@image_src,@env)
end
def pgsql
serve=[]
@@ -174,13 +174,13 @@ module SiSU_CGI_PgSQL
sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
WOK
end
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).warn
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).warn
a=<<-WOK
#{@env.webserv_base_cgi(@opt)}/cgi-bin/#{@cgi_file_name}
WOK
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).print_blue
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).print_blue
a="\n\t(to create and populate postgresql database see 'man sisu' and in particular the --pg option)\n\t[the database to be used for this directory (#{@db.psql.db}) will have to be created manually if it does not exist,\n\tusing postgresql tools directly: 'createdb #{@db.psql.db}' for a list of existing databases try 'psql --list']"
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).txt_grey
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).txt_grey
else puts 'failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?'
end
end
@@ -192,9 +192,13 @@ module SiSU_CGI_PgSQL
* Description: generates naive cgi search form for search of sisu database (pgsql)
#{gpl}
=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
+ begin
+ require 'cgi'
+ require 'fcgi'
+ require 'dbi'
+ rescue LoadError
+ puts 'cgi, fcgi or dbi NOT FOUND (LoadError)'
+ end
@stub_default='#{@name_of[:db]}'
@image_src='#{@image_src}'
@hosturl_cgi='#{@name_of[:host_url_cgi]}'
diff --git a/lib/sisu/v6/cgi_sqlite.rb b/lib/sisu/v6/cgi_sqlite.rb
index fff0f98f..6db31b48 100644
--- a/lib/sisu/v6/cgi_sqlite.rb
+++ b/lib/sisu/v6/cgi_sqlite.rb
@@ -69,18 +69,18 @@ module SiSU_CGI_SQLite
@opt,@webserv=opt,webserv
@cX=SiSU_Screen::Ansi.new(opt.act[:color_state][:set]).cX
@env=SiSU_Env::InfoEnv.new('',opt)
- @image_src="#{@env.url.webserv_cgi(@opt)}/_sisu/image_sys"
+ @image_src="#{@env.url.webserv_cgi(opt)}/_sisu/image_sys"
@name_of={}
- @name_of[:output_dir_structure]=if @opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
- @opt.dir_structure_by.to_s
+ @name_of[:output_dir_structure]=if opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
+ opt.dir_structure_by.to_s
else 'language'
end
- @name_of[:lingual]=if @opt.lingual.to_s =~/(?:mono|multi)/
- @opt.lingual.to_s
+ @name_of[:lingual]=if opt.lingual.to_s =~/(?:mono|multi)/
+ opt.lingual.to_s
else 'multi'
end
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
- @cgi_file_name=@env.url.cgi_sample_search_form_name(@opt)
+ @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,opt,@image_src,@env)
+ @cgi_file_name=@env.url.cgi_sample_search_form_name(opt)
@name_of_sqlite_db_file='sisu_sqlite.db'
end
def sqlite
@@ -147,13 +147,13 @@ module SiSU_CGI_SQLite
WOK
end
b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)'
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a,b).warn
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a,b).warn
a=<<-WOK
#{@env.webserv_base_cgi(@opt)}/cgi-bin/#{@cgi_file_name}
WOK
- SiSU_Screen::Ansi.new(opt.act[:color_state][:set],a).print_blue
+ SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).print_blue
else puts "failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?"
end
end
@@ -165,9 +165,13 @@ module SiSU_CGI_SQLite
* Description: generates naive cgi search form for search of sisu database (sqlite)
#{gpl}
=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
+ begin
+ require 'cgi'
+ require 'fcgi'
+ require 'dbi'
+ rescue LoadError
+ puts 'cgi, fcgi or dbi NOT FOUND (LoadError)'
+ end
@stub_default='sisu_sqlite'
@image_src='#{@image_src}'
@hosturl_cgi='#{@env.url.webserv_base_cgi(@opt)}/cgi-bin'
diff --git a/lib/sisu/v6/composite.rb b/lib/sisu/v6/composite.rb
index 044f31c4..ebbd14f6 100644
--- a/lib/sisu/v6/composite.rb
+++ b/lib/sisu/v6/composite.rb
@@ -178,10 +178,14 @@ module SiSU_Assemble
end
tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/ # and NetTest
imagedir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch
- require 'uri'
+ begin
+ require 'uri'
+ require 'open-uri'
+ require 'pp'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri, open-uri or pp NOT FOUND (LoadError)')
+ end
image_uri=URI.parse(imagedir)
- require 'open-uri'
- require 'pp'
insert=open(loadfile)
insert_array=insert.dup
insert.close
diff --git a/lib/sisu/v6/concordance.rb b/lib/sisu/v6/concordance.rb
index a20178ab..5422056f 100644
--- a/lib/sisu/v6/concordance.rb
+++ b/lib/sisu/v6/concordance.rb
@@ -240,12 +240,13 @@ WOK
end
end
protected
- def location_scroll(wordlocation,show)
- %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{wordlocation}">#{wordlocation}</a>; }
+ def location_scroll(wordlocation,show) # not used
+ %{<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}\##{Mx[:ocn_id_char]}#{wordlocation}">#{wordlocation}</a>; }
end
- def location_seg(wordlocation,show) ##fix
+ def location_seg(wordlocation,show)
unless wordlocation.nil?
- wl=wordlocation.gsub(/(.+?)\#(\d+)/,"\\1#{@md.lang_code_insert}#{Sfx[:html]}#\\2")
+ wl=wordlocation.gsub(/(.+?)\#(\d+)/,
+ "\\1#{@md.lang_code_insert}#{Sfx[:html]}##{Mx[:ocn_id_char]}\\2") # id="o\d+" always available; a name="\d+" not available if html strict used
case wordlocation
when /#{@rxp_t1}|@rxp_t2}|#{@rxp_t3}/
%{[<a href="doc#{@md.lang_code_insert}#{Sfx[:html]}##{show}">H</a>]#{show}, }
diff --git a/lib/sisu/v6/constants.rb b/lib/sisu/v6/constants.rb
index 34ff92e7..e70a2f98 100644
--- a/lib/sisu/v6/constants.rb
+++ b/lib/sisu/v6/constants.rb
@@ -101,6 +101,13 @@ Xx={
html_relative1: '※',
}
Mx={
+ ocn_id_char: 'o',
+ note: 'note_',
+ note_ref: 'noteref_',
+ note_astx: 'note_astx_',
+ note_ref_astx: 'noteref_astx_',
+ note_plus: 'note_plus_',
+ note_ref_plus: 'noteref_plus_',
meta_o: '〔@', meta_c: '〕',
lv_o_0: 0,
lv_o_1: 1,
diff --git a/lib/sisu/v6/db_import.rb b/lib/sisu/v6/db_import.rb
index e9fc4d5c..e1342b1d 100644
--- a/lib/sisu/v6/db_import.rb
+++ b/lib/sisu/v6/db_import.rb
@@ -66,7 +66,6 @@ module SiSU_DbImport
require_relative 'db_load_tuple' # db_load_tuple.rb
require_relative 'db_sqltxt' # db_sqltxt.rb
require_relative 'html_lite_shared' # html_lite_shared.rb
- require 'sqlite3'
class Import < SiSU_DbText::Prepare
include SiSU_Param
include SiSU_Screen
diff --git a/lib/sisu/v6/dbi.rb b/lib/sisu/v6/dbi.rb
index 6804ab97..acb75e0f 100644
--- a/lib/sisu/v6/dbi.rb
+++ b/lib/sisu/v6/dbi.rb
@@ -120,9 +120,12 @@ manually create the database: "#{cX.green}#{@db.db}#{cX.off}" if it does not yet
end
def read_sqlite
begin
- @conn=@db.sqlite.conn_sqlite3
- rescue
- ensure
+ begin
+ require 'sqlite3'
+ @conn=@db.sqlite.conn_sqlite3
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 NOT FOUND (LoadError)')
+ end
end
end
def connect
diff --git a/lib/sisu/v6/dbi_discrete.rb b/lib/sisu/v6/dbi_discrete.rb
index b842c767..0ac84db4 100644
--- a/lib/sisu/v6/dbi_discrete.rb
+++ b/lib/sisu/v6/dbi_discrete.rb
@@ -69,8 +69,12 @@ module SiSU_DBI_Discrete #% database building
include SiSU_DbDBI
require_relative 'html_lite_shared' # html_lite_shared.rb
include SiSU_FormatShared
- require 'fileutils'
- include FileUtils::Verbose
+ begin
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
class SQL
def initialize(opt)
SiSU_Env::Load.new('dbi',true).prog
@@ -145,9 +149,12 @@ module SiSU_DBI_Discrete #% database building
end
def read_sqlite
begin
- @conn=@db.sqlite.conn_sqlite3
- rescue
- ensure
+ begin
+ require 'sqlite3'
+ @conn=@db.sqlite.conn_sqlite3
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 not available')
+ end
end
end
def connect
diff --git a/lib/sisu/v6/defaults.rb b/lib/sisu/v6/defaults.rb
index ca3c0c04..a26edae9 100644
--- a/lib/sisu/v6/defaults.rb
+++ b/lib/sisu/v6/defaults.rb
@@ -62,7 +62,11 @@
=end
$latex_run=nil
module SiSU_Viz
- require 'uri'
+ begin
+ require 'uri'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'css' # css.rb
diff --git a/lib/sisu/v6/digests.rb b/lib/sisu/v6/digests.rb
index 954185d9..e708e4e9 100644
--- a/lib/sisu/v6/digests.rb
+++ b/lib/sisu/v6/digests.rb
@@ -91,9 +91,13 @@ module SiSU_DigestView
if @opt.act[:verbose_plus][:set]==:on \
or @opt.act[:maintenance][:set]==:on
SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@opt.fns,"file://#{@md.file.output_path.hash_digest.dir}/#{@md.file.base_filename.hash_digest}").flow
+ end
+ end
+ if SiSU_Env::SystemCall.new.openssl
+ SiSU_DigestView::Source::Scroll.new(@particulars).songsheet
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('*EXITED* hash digests will not run without openssl')
end
- end
- SiSU_DigestView::Source::Scroll.new(@particulars).songsheet
rescue
SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do
__LINE__.to_s + ':' + __FILE__
diff --git a/lib/sisu/v6/html.rb b/lib/sisu/v6/html.rb
index 8a909677..8c9869e2 100644
--- a/lib/sisu/v6/html.rb
+++ b/lib/sisu/v6/html.rb
@@ -61,7 +61,11 @@
=end
module SiSU_HTML
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'particulars' # particulars.rb
include SiSU_Particulars
require_relative 'defaults' # defaults.rb
@@ -241,6 +245,7 @@ module SiSU_HTML
def initialize(md=nil,data='')
@data,@md=data,md
@vz=SiSU_Viz::Defaults.new
+ @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
@@ -352,7 +357,7 @@ WOK
title=if dob.ocn ==0 then linkname
else
@@toc[:scr] << '<br />'
- %{<b><a href="##{dob.ocn}">#{linkname}</a></b>}
+ %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}
end
txt_obj={ txt: title }
format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
@@ -394,7 +399,7 @@ WOK
end
else
@@toc[:scr] << '<br />'
- %{<b><a href="##{dob.ocn}">#{linkname}</a></b>}
+ %{<b><a href="##{@ocn_html_identifier}#{dob.ocn}">#{linkname}</a></b>}
end
txt_obj={ txt: title }
format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
@@ -511,7 +516,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}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{ocn}">
#{linkname}
</a>}
txt_obj={ txt: lnk_n_txt }
@@ -536,7 +541,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}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{ocn}">
#{linkname}
</a>}
txt_obj={ txt: lnk_n_txt }
@@ -618,7 +623,8 @@ WOK
toc_shared << format_txt_obj.center_bold
@segtoc << format_txt_obj.center_bold
if defined? @md.creator.author
- creator_endnote=@md.creator.author.gsub(/(\*+)/,
+ creator=SiSU_HTML_Tune::CleanHTML.new(@md.creator.author).clean_for_html
+ creator_endnote=creator.gsub(/(\*+)/,
%{&nbsp;<sup><a href="#notes">\\1</a></sup>})
tmp_head=creator_endnote + "\n"
txt_obj={ txt: tmp_head }
diff --git a/lib/sisu/v6/html_format.rb b/lib/sisu/v6/html_format.rb
index bf1703a1..de5a7144 100644
--- a/lib/sisu/v6/html_format.rb
+++ b/lib/sisu/v6/html_format.rb
@@ -66,30 +66,36 @@ 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
- make=SiSU_Env::ProcessingSettings.new(@md)
- if make.build.ocn?
- ocn_class='ocn'
+ if @make.build.ocn?
if @ocn.to_i==0 \
or @ocn.empty?
- %{<label class="ocn_off">&nbsp;</label>}
+ ''
else
+ name=(@make.build.html_strict?) ? '' : %{ name="#{@ocn}"}
@ocn.gsub(/^(\d+|)$/,
- %{<label class="#{ocn_class}"><a name="#{@ocn}" href="##{@ocn}" class="lnk#{ocn_class}">\\1</a></label>})
+ %{<label class="ocn"><a#{name} href="##{@ocn_html_identifier}#{@ocn}" class="lnkocn">\\1</a></label>})
end
else
- %{<label class="ocn_off">&nbsp;</label>}
+ ''
end
end
def name
- (@ocn==nil || @ocn.empty?) ? '' : %{<a name="#{@ocn}"></a>}
+ if @make.build.html_strict? \
+ or @ocn==(nil || @ocn.empty?)
+ ''
+ else
+ %{<a name="#{@ocn}"></a>}
+ end
end
def id #w3c? "tidy" complains about numbers as identifiers ! annoying
(@ocn==nil || @ocn.empty?) ? '' : %{id="o#{@ocn}"}
end
def goto
- (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn}">}
+ (@ocn==nil || @ocn.empty?) ? '' : %{<a href="##{@ocn_html_identifier}#{@ocn}">}
end
end
class HeadInformation
@@ -271,24 +277,6 @@ module SiSU_HTML_Format
else ''
end
end
- def pdf #retired 2.7.9
- pdf=if @md.programs[:pdf] \
- and @cf_defaults.cf_0 =~/p/
- %{
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_p}" target="_top">
- #{@vz.nav_txt_pdf_portrait}
- </a>
-</td>
-<td align="center" bgcolor=#{@vz.color_band2}>
- <a href="#{Xx[:html_relative1]}pdf/#{@file.base_filename.pdf_l}" target="_top">
- #{@vz.nav_txt_pdf_landscape}
- </a>
-</td>
-}
- else ''
- end
- end
end
class XML
end
@@ -514,7 +502,8 @@ WOK
end
def rights
def all
- rights=@md.rights.all.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>&copy;</sup>&nbsp;')
+ rights=SiSU_HTML_Tune::CleanHTML.new(@md.rights.all).clean_for_html
+ rights=rights.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>&copy;</sup>&nbsp;')
%{<p class="small_left">Rights: #{rights}</p>
<p />}
end
@@ -648,8 +637,6 @@ WOK
def initialize(md)
super(md)
end
- def title_banner(title,subtitle,creator)
- end
def dot_control_pre_next
pre="#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}"
up=@toc
@@ -894,6 +881,7 @@ WOK
attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url
def initialize(md,t_o)
@md,@t_o=md,t_o
+ @make=SiSU_Env::ProcessingSettings.new(@md)
if t_o.is_a?(Hash)
@txt =t_o[:txt] || nil
@ocn =t_o[:ocn] || nil
@@ -917,19 +905,19 @@ WOK
p caller
end
end
- @headnamed= (@headname ? %{<a name="h#{@headname}" id="h#{@headname}"></a>} : nil)
+ @headnamed=(@headname ? %{<a id="h#{@headname}"></a>} : nil)
if @txt and not @txt.empty?
@txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'')
end
@p_num=ParagraphNumber.new(@md,@ocn)
@vz=SiSU_Viz::Defaults.new
- @make=SiSU_Env::ProcessingSettings.new(@md)
end
def nametags_scroll(dob)
tags=''
if defined? dob.tags \
and dob.tags.length > 0 # insert tags "hypertargets"
dob.tags.each do |t|
+ t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier
tags=tags << %{<named id="#{t}" />}
end
end
@@ -940,7 +928,16 @@ WOK
if defined? dob.tags \
and dob.tags.length > 0 # insert tags "hypertargets"
dob.tags.each do |t|
- tags=tags << %{<a name="#{t}" ></a>}
+ t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier
+ if @make.build.html_strict?
+ tags=(t =~/^[#{Mx[:ocn_id_char]}]?[0-9.]+$/) \
+ ? tags #check what can be sorted in ao
+ : (tags << %{<a name="#{t}" ></a>})
+ else
+ tags=(t =~/^[#{Mx[:ocn_id_char]}][0-9.]+$/) \
+ ? tags #check what can be sorted in ao
+ : (tags << %{<a name="#{t}" ></a>})
+ end
end
end
tags
@@ -949,8 +946,8 @@ WOK
hn=if @t_o.is ==:heading \
and not @t_o.name.empty? #determine use
hn=(@t_o.is ==:heading) \
- ? (%{<a name="h#{@t_o.name}" id="h#{@t_o.name}"></a>})
- : (%{<a name="#{@t_o.name}" id="#{@t_o.name}"></a>})
+ ? (%{<a id="h#{@t_o.name}"></a>})
+ : (%{<a id="#{@t_o.name}"></a>})
else nil
end
hn
@@ -981,7 +978,9 @@ WOK
end
def para_form_css(tag,attrib) # regular paragraphs shaped here
ul=ulc=''
- ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/
+ if tag =~/li/
+ ul,ulc="<ul>\n ","\n </ul>"
+ end
%{
<div class="substance">
#{@p_num.ocn_display}
@@ -1037,7 +1036,7 @@ WOK
<div class="substance">
#{@p_num.ocn_display}
<#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name}
- #{@named}<a name="h#{@headname}">#{@txt}</a>
+ #{@named}#{@txt}
</#{tag}>
</div>
}
@@ -1151,8 +1150,6 @@ WOK
#{@vz.table_close}}
end
def bold_heading
- @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>').
- gsub(/[1-9]~/,'')
%{<p class="bold">
#{@txt}
</p>
@@ -1245,6 +1242,7 @@ 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>|<a\s+name="\S+?">/mi
@txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text
@@ -1253,12 +1251,12 @@ WOK
note=''
if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
note=$1
- note=note.gsub(/[\n\s]+/m,' ')
+ note=note.gsub(/[\s]+/m,' ')
txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
- gsub(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
+ gsub(/<a[\s]+name="-\d+"[\s]+href="#_\d+">&nbsp;<sup>\d+<\/sup>&nbsp;/m,'')
end
%{<#{tag} class="#{attrib}">
- <a href="##{@ocn}"><i>#{txt}</i></a> #{note}
+ <a href="##{@ocn_html_identifier}#{@ocn}"><i>#{txt}</i></a> #{note}
</#{tag}>}
end
def subtoc_lev5
diff --git a/lib/sisu/v6/html_lite_shared.rb b/lib/sisu/v6/html_lite_shared.rb
index b675fbd3..88510f04 100644
--- a/lib/sisu/v6/html_lite_shared.rb
+++ b/lib/sisu/v6/html_lite_shared.rb
@@ -83,6 +83,7 @@ module SiSU_FormatShared
end
@tab="\t"
@brace_url=SiSU_Viz::Defaults.new.url_decoration
+ @ocn_html_identifier=SiSU_Env::ProcessingSettings.new(@md).ocn_html_identifier
@@tablehead,@@tablefoot=[],[]
@vz=SiSU_Viz::Defaults.new
@env=SiSU_Env::InfoEnv.new(@md.fns)
@@ -205,7 +206,7 @@ GSUB
%{<p class="#{h[:class]}" type="#{h[:type]}">#{h[:txt]}</a></p>\n} << "\n"
end
def lev_toc_hname
- %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn}">#{@txt}</a></p>\n} #<< "\n"
+ %{<p class="toc#{@lv}" header="#{@hname}"><a href="##{@ocn_html_identifier}#{@ocn}">#{@txt}</a></p>\n} #<< "\n"
end
def lev_toc
h={ txt: txt, class: "toc#{@lv}", type: 'toc' }
@@ -309,10 +310,10 @@ GSUB
def paragraph
attrib=%{class="#{@attrib}" }
if @ocn
- id=%{id="#{@ocn}" }
+ id=%{id="#{Mx[:ocn_id_char]}#{@ocn}" }
type=%{type="substantive" }
else
- id=%{id="none" }
+ id=''
type=%{type="comment" }
end
header=%{header="#{@hname}" } if @hname
diff --git a/lib/sisu/v6/html_minitoc.rb b/lib/sisu/v6/html_minitoc.rb
index 0bb2794f..13045b0d 100644
--- a/lib/sisu/v6/html_minitoc.rb
+++ b/lib/sisu/v6/html_minitoc.rb
@@ -71,6 +71,7 @@
def initialize(md,data)
@md,@data=md,data
@pat_strip_heading_name=/<a name="h?\d.*?">(.+?)<\/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
@@ -204,7 +205,7 @@
fn: @@seg_url,
}
f=@md.file.base_filename.html_seg(fnh)
- lnk_n_txt=%{ <a href="#{f}##{txt.ocn}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">
#{txt.obj}
</a>}
txt_obj={ txt: lnk_n_txt }
@@ -223,7 +224,7 @@
fn: @@seg_url,
}
f=@md.file.base_filename.html_seg(fnh)
- lnk_n_txt=%{ <a href="#{f}##{txt.ocn}">
+ lnk_n_txt=%{ <a href="#{f}##{@ocn_html_identifier}#{txt.ocn}">
#{txt.obj}
</a>}
txt_obj={ txt: lnk_n_txt }
diff --git a/lib/sisu/v6/html_segments.rb b/lib/sisu/v6/html_segments.rb
index efe37024..0586cdf6 100644
--- a/lib/sisu/v6/html_segments.rb
+++ b/lib/sisu/v6/html_segments.rb
@@ -502,7 +502,7 @@ module SiSU_HTML_Seg
'<br /><hr width=90% /><br />'
end
if @md.flag_separate_endnotes
- dob.obj=dob.obj.gsub(/"\s+href="#_(\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#_\\1">}) #endnote- twice #removed file type
+ dob.obj=dob.obj.gsub(/"\s+href="#(#{Mx[:note]}\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#\\1">}) #endnote- twice #removed file type
end
if dob.obj !~/#{@vz.margin_txt_w1}|#{@vz.margin_txt_w2}/
if (dob.is==:heading \
@@ -600,7 +600,7 @@ module SiSU_HTML_Seg
@@seg_subtoc_array << subtoc
end
if @md.flag_auto_endnotes
- if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <a name="_[\d*+]+"/) \
+ if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <a name="#{Mx[:note]}[\d*+]+"/) \
&& dob.is !=:code # endnote-
endnote_array=[]
if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
@@ -629,7 +629,7 @@ module SiSU_HTML_Seg
end
try.join('<br \/>')
#% creation of separate end segment/page of all endnotes referenced back to reference segment
- m=/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?href=")(#-[\d*+]+".+)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/mi
+ m=/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?href=")(##{Mx[:note_ref]}[\d*+]+".+)(?:#{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 }
diff --git a/lib/sisu/v6/html_tune.rb b/lib/sisu/v6/html_tune.rb
index 384a19b0..42568a36 100644
--- a/lib/sisu/v6/html_tune.rb
+++ b/lib/sisu/v6/html_tune.rb
@@ -104,6 +104,16 @@ module SiSU_HTML_Tune
def initialize(html='')
@html=html
end
+ def clean_for_html
+ html=@html
+ str=if html.is_a?(String)
+ html
+ else html.obj
+ end
+ str=str.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;').
+ gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;').
+ gsub(/[<]/m,'&lt;').gsub(/[>]/m,'&gt;')
+ end
def clean
html=@html
str=if html.is_a?(String)
@@ -111,7 +121,8 @@ module SiSU_HTML_Tune
else html.obj
end
str=str.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;').
- gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
+ gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;').
+ gsub(/[\\]{2}/m,'<br />')
end
end
class Tune
@@ -256,14 +267,14 @@ module SiSU_HTML_Tune
def endnotes_html(dob)
unless dob.is ==:code
dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
+ %{&nbsp;<a name="#{Mx[:note_ref]}\\2" href="##{Mx[:note]}\\2">&nbsp;<sup>\\2</sup>&nbsp;</a> } +
+ %{\\1\\2 <a name="#{Mx[:note]}\\2" href="##{Mx[:note_ref]}\\2">&nbsp;<sup>\\2.</sup></a> \\3 \\4}).
gsub(/(#{Mx[:en_b_o]})([*+]\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2.</sup></a> \3 \4'). #endnote- note- (careful may have switched)
+ %{&nbsp;<a name="#{Mx[:note_ref]}\\2" href="##{Mx[:note]}\\2">&nbsp;<sup>\\2</sup>&nbsp;</a> } +
+ %{\\1\\2 <a name="#{Mx[:note]}\\2" href="##{Mx[:note_ref]}\\2">&nbsp;<sup>\\2.</sup></a> \\3 \\4}).
gsub(/(#{Mx[:en_a_o]})([*+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- '&nbsp;<a name="-\2" href="#_\2">&nbsp;<sup>\2</sup>&nbsp;</a> ' + #note- endnote-
- '\1\2 <a name="_\2" href="#-\2">&nbsp;<sup>\2</sup></a> \3 \4') #endnote- note- (careful may have switched)
+ %{&nbsp;<a name="#{Mx[:note_ref]}\\2" href="##{Mx[:note]}\\2">&nbsp;<sup>\\2</sup>&nbsp;</a> } +
+ %{\\1\\2 <a name="#{Mx[:note]}\\2" href="##{Mx[:note_ref]}\\2">&nbsp;<sup>\\2</sup></a> \\3 \\4})
end
dob
end
diff --git a/lib/sisu/v6/hub.rb b/lib/sisu/v6/hub.rb
index 7e2a009d..35e9140d 100644
--- a/lib/sisu/v6/hub.rb
+++ b/lib/sisu/v6/hub.rb
@@ -72,7 +72,11 @@ module SiSU
require_relative 'defaults' # defaults.rb
include SiSU_Viz
require_relative 'utils' # utils.rb
- require 'uri'
+ begin
+ require 'uri'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri NOT FOUND (LoadError)')
+ end
class HubMaster
def initialize(argv)
pwd_the=Dir.pwd
@@ -246,8 +250,12 @@ module SiSU
end
end
class Processing
- require 'fileutils'
- include FileUtils
+ begin
+ require 'fileutils'
+ include FileUtils
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
@@env=nil
attr_accessor :op
def initialize(opt)
@@ -645,7 +653,11 @@ module SiSU
end
def actions
if @opt.act[:profile][:set]==:on
- require 'profile'
+ begin
+ require 'profile'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('profile NOT FOUND (LoadError)')
+ end
end
action_on_file_ =if @opt.act[:rsync][:set]==:on \
&& @opt.act[:site_init][:set]==:on
@@ -748,7 +760,7 @@ module SiSU
STDERR.puts %{requested action requires valid sisu markup file [filename (.sst .ssm)] or wildcard (that includes a valid filename)}
if (@opt.act[:verbose_plus][:set]==:on \
|| @opt.act[:maintenance][:set]==:on)
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:fuchsia)
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).warn(:fuchsia)
end
end
elsif @opt.mod.inspect =~/--query/
diff --git a/lib/sisu/v6/options.rb b/lib/sisu/v6/options.rb
index 632ac5a8..6f4cce37 100644
--- a/lib/sisu/v6/options.rb
+++ b/lib/sisu/v6/options.rb
@@ -62,7 +62,11 @@
=end
module SiSU_Commandline
- require 'pathname'
+ begin
+ require 'pathname'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
require_relative 'param_make' # param_make.rb
@@sisu_call_origin_path=nil
@@ -662,9 +666,9 @@ module SiSU_Commandline
{ set: :filetype }
else { set: :na }
end
- act[:ocn]=if mod.inspect =~/"--inc-ocn"/
+ act[:ocn]=if mod.inspect =~/"--ocn"|"--inc-ocn"/
{ bool: true, set: :on }
- elsif mod.inspect =~/"--(?:exc|no)-ocn"/ \
+ elsif mod.inspect =~/"--no-ocn"|"--exc-ocn"/ \
|| act[:switch][:off].inspect =~/"ocn"/
{ bool: false, set: :off }
else { bool: true, set: :na }
@@ -765,12 +769,23 @@ module SiSU_Commandline
{ bool: false, set: :off }
else { bool: true, set: :na }
end
- act[:html]=if (cmd =~/h/ \
+ act[:html]=if mod.inspect =~/"--html-strict"/ \
+ or ((cmd =~/h/ || mod.inspect =~/"--html"/) \
+ && mod.inspect =~/"--strict"/)
+ act[:html_strict]={ bool: true, set: :on }
+ act[:html_scroll]={ bool: true, set: :on }
+ act[:html_seg]={ bool: true, set: :on }
+ { bool: true, set: :on }
+ elsif (cmd =~/h/ \
|| mod.inspect =~/"--html"/)
+ act[:html_strict]={ bool: false, set: :off }
act[:html_scroll]={ bool: true, set: :on }
act[:html_seg]={ bool: true, set: :on }
{ bool: true, set: :on }
else
+ act[:html_strict]=(mod.inspect =~/"--strict"/) \
+ ? { bool: true, set: :on }
+ : { bool: false, set: :na }
act[:html_scroll]=(mod.inspect =~/"--html-scroll"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
@@ -850,10 +865,20 @@ module SiSU_Commandline
|| mod.inspect =~/"--epub"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
- act[:odt]=(cmd =~/o/ \
- || mod.inspect =~/"--odt"|"--odf"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
+ act[:odt]=if cmd =~/o/ \
+ or mod.inspect =~/"--odt"|"--odf"|"--odt-ocn"|"--odf-ocn"/
+ act[:odt_ocn]=if (mod.inspect =~/"--odt-ocn"|"--odf-ocn"/ \
+ or mod.inspect =~/"--ocn"|"--inc-ocn"/)
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--no-ocn"|"--exc-ocn"/
+ { bool: false, set: :off }
+ else
+ { bool: false, set: :na }
+ end
+ { bool: true, set: :on }
+ else
+ { bool: false, set: :na }
+ end
act[:xml_sax]=(cmd =~/x/ \
|| mod.inspect =~/"--xml-sax"/) \
? { bool: true, set: :on }
@@ -879,10 +904,20 @@ module SiSU_Commandline
|| mod.inspect =~/"--xhtml"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
- act[:txt]=(cmd =~/[at]/ \
- || mod.inspect =~/"--txt"/) \
- ? { bool: true, set: :on }
- : { bool: false, set: :na }
+ act[:txt]=if cmd =~/[at]/ \
+ or mod.inspect =~/"--txt"|"--text"|"--plaintext"|"--txt-ocn"|"--text-ocn"|"--plaintext-ocn"/
+ act[:txt_ocn]=if (mod.inspect =~/"--txt-ocn"|"--text-ocn"|"--plaintext-ocn"/ \
+ or mod.inspect =~/"--ocn"|"--inc-ocn"/)
+ { bool: true, set: :on }
+ elsif mod.inspect =~/"--no-ocn"|"--exc-ocn"/
+ { bool: false, set: :off }
+ else
+ { bool: false, set: :na }
+ end
+ { bool: true, set: :on }
+ else
+ { bool: false, set: :na }
+ end
act[:txt_textile]=(mod.inspect =~/"--textile"/) \
? { bool: true, set: :on }
: { bool: false, set: :na }
diff --git a/lib/sisu/v6/param.rb b/lib/sisu/v6/param.rb
index b74e0dc1..e3eaebae 100644
--- a/lib/sisu/v6/param.rb
+++ b/lib/sisu/v6/param.rb
@@ -61,8 +61,12 @@
=end
module SiSU_Param
- require 'uri'
- require 'pstore'
+ begin
+ require 'uri'
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri or pstore NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'param_make' # param_make.rb
@@ -95,8 +99,7 @@ module SiSU_Param
# you may need to change Dir.pwd to @opt.f_pth[:pth] where the latter
# has a path value that is different, however, f_pth is not always set!
Dir.chdir(@opt.f_pth[:pth])
- p '-- bug alert -- '
- p __FILE__ + ':' + __LINE__.to_s
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('-- bug alert --')
p 'f_pth ' + @opt.f_pth[:pth]
p 'pwd ' + Dir.pwd
end
diff --git a/lib/sisu/v6/particulars.rb b/lib/sisu/v6/particulars.rb
index 44fa536a..7e850f4c 100644
--- a/lib/sisu/v6/particulars.rb
+++ b/lib/sisu/v6/particulars.rb
@@ -62,7 +62,11 @@
=end
module SiSU_Particulars
- require 'singleton'
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('singleton NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
require_relative 'param' # param.rb
diff --git a/lib/sisu/v6/remote.rb b/lib/sisu/v6/remote.rb
index 3c4982c8..ed5d7fba 100644
--- a/lib/sisu/v6/remote.rb
+++ b/lib/sisu/v6/remote.rb
@@ -112,8 +112,12 @@ module SiSU_Remote
@tell=lambda { SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],@msg,"#{@msgs.inspect if @msgs}") }
end
def fns
- require 'open-uri'
- require 'pp'
+ begin
+ require 'open-uri'
+ require 'pp'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('open-uri or pp NOT FOUND (LoadError)')
+ end
require_relative 'composite' # composite.rb
@rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
threads=[]
@@ -158,7 +162,11 @@ module SiSU_Remote
def sisupod
get_p=@get_s
if get_p.length > 0 #% remote sisupod
- require 'net/http'
+ begin
+ require 'net/http'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('net/http NOT FOUND (LoadError)')
+ end
for requested_pod in get_p
pod_info=RemoteDownload.new(requested_pod)
Net::HTTP.start(pod_info.pod.site) do |http|
diff --git a/lib/sisu/v6/rexml.rb b/lib/sisu/v6/rexml.rb
index f9b94cee..63e70a42 100644
--- a/lib/sisu/v6/rexml.rb
+++ b/lib/sisu/v6/rexml.rb
@@ -62,14 +62,22 @@
=end
module SiSU_Rexml
# load XML file for REXML parsing
- require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ begin
+ require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)')
+ end
require_relative 'param' # param.rb
include SiSU_Param
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
include SiSU_Viz
class Rexml
- require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ begin
+ require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir']
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)')
+ end
def initialize(md,fno)
@md,@fno=md,fno
@env=SiSU_Env::InfoEnv.new(@md.fns)
diff --git a/lib/sisu/v6/shared_markup_alt.rb b/lib/sisu/v6/shared_markup_alt.rb
index b84d167a..4971dde0 100644
--- a/lib/sisu/v6/shared_markup_alt.rb
+++ b/lib/sisu/v6/shared_markup_alt.rb
@@ -208,7 +208,11 @@ module SiSU_TextRepresentation
end
@env ||=SiSU_Env::InfoEnv.new(@md.fns)
@sha_ =((@env.digest.type =='sha256') ? true : false)
- @sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ begin
+ @sha_ ? (require 'digest/sha2') : (require 'digest/md5')
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error((@sha_ ? 'digest/sha2' : 'digest/md5') + ' NOT FOUND')
+ end
end
def digest(txt)
d=nil
diff --git a/lib/sisu/v6/src_kdissert_share.rb b/lib/sisu/v6/src_kdissert_share.rb
index ecf559fb..9624e460 100644
--- a/lib/sisu/v6/src_kdissert_share.rb
+++ b/lib/sisu/v6/src_kdissert_share.rb
@@ -64,8 +64,12 @@ module SiSU_KdiSource
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
class Source
- require 'fileutils'
- include FileUtils
+ begin
+ require 'fileutils'
+ include FileUtils
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
@env=SiSU_Env::InfoEnv.new(@opt.fns)
diff --git a/lib/sisu/v6/sst_from_xml.rb b/lib/sisu/v6/sst_from_xml.rb
index 728f3f54..ee864b03 100644
--- a/lib/sisu/v6/sst_from_xml.rb
+++ b/lib/sisu/v6/sst_from_xml.rb
@@ -64,8 +64,12 @@
module SiSU_sstFromXML
require_relative 'sysenv' # sysenv.rb
class Convert
- require 'rexml/document'
- include REXML
+ begin
+ require 'rexml/document'
+ include REXML
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
@sisu,@sisu_base=[],[]
diff --git a/lib/sisu/v6/sysenv.rb b/lib/sisu/v6/sysenv.rb
index 46bb30ca..db1bdc91 100644
--- a/lib/sisu/v6/sysenv.rb
+++ b/lib/sisu/v6/sysenv.rb
@@ -66,12 +66,20 @@
module SiSU_Env
require_relative 'constants' # constants.rb
require_relative 'utils' # utils.rb
- require 'fileutils'
- include FileUtils::Verbose
- require 'singleton'
+ begin
+ require 'singleton'
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('singleton or fileutils NOT FOUND (LoadError)')
+ end
@@noyaml=false
class InfoDate
- require 'date'
+ begin
+ require 'date'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('date NOT FOUND (LoadError)')
+ end
attr_accessor :dt,:t
def initialize
@dt,@t=Date.today.to_s,Time.now
@@ -97,7 +105,11 @@ module SiSU_Env
end
end
class InfoSystemGen
- require 'rbconfig'
+ begin
+ require 'rbconfig'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig NOT FOUND (LoadError)')
+ end
@@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@rc,@@sisurc_path,@@ad=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'],Config::CONFIG['sysconfdir'] + '/sisu',Config::CONFIG['host'],Config::CONFIG['arch'],%x{ruby -v}.strip,Config::CONFIG['archdir'],Config::CONFIG['sitearchdir'],Config::CONFIG['bindir'],%x{locale charmap}.strip,nil,nil,{} # %x{ruby -v}.strip # Config::CONFIG['rb_ver']
out=Config::CONFIG['localstatedir']
etc=Config::CONFIG['sysconfdir'] + '/sisu'
@@ -242,10 +254,18 @@ module SiSU_Env
end
if load_prog \
and @prog=~/dbi/
- require 'dbi' #revisit
+ begin
+ require 'dbi'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('dbi NOT FOUND (LoadError)')
+ end
end
if load_prog
- require @prog
+ begin
+ require @prog
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error("#{@prog} NOT FOUND (LoadError)")
+ end
else
@mandatory \
? (SiSU_Screen::Ansi.new(@prog,"*WARN* module required: #{@prog}").warn)
@@ -330,7 +350,11 @@ module SiSU_Env
f=S_CONF[:rc_yml]
p_f="#{v}/#{f}"
if FileTest.exist?(p_f)
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@sisurc_path=v
@@rc=YAML::load(File::open(p_f))
break
@@ -339,7 +363,11 @@ module SiSU_Env
f='sisurc.yaml'
p_f="#{v}/#{f}"
if FileTest.exist?(p_f)
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@sisurc_path=v
@@rc=YAML::load(File::open(p_f))
break
@@ -378,7 +406,11 @@ module SiSU_Env
else
if FileTest.exist?("#{v}/list.yml")
unless @@ad[:promo_list]
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@ad[:promo_list] ||= YAML::load(File::open("#{v}/list.yml"))
end
@@ad[:flag_promo]=true
@@ -396,7 +428,11 @@ module SiSU_Env
else
if FileTest.exist?("#{v}/promo.yml")
unless @@ad[:promo]
- require 'yaml'
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('yaml NOT FOUND (LoadError)')
+ end
@@ad[:promo] ||= YAML::load(File::open("#{v}/promo.yml"))
end
@@ad[:flag_promo]=true
@@ -716,7 +752,7 @@ module SiSU_Env
program='rcs'
program_ref="\n\t\tdocument version information requested"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -724,7 +760,15 @@ module SiSU_Env
program='cvs'
program_ref="\n\t\tdocument version information requested"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ 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"
+ if program_found?(program); true
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("*WARN* #{program} is not installed #{program_ref}")
false
end
end
@@ -732,7 +776,7 @@ module SiSU_Env
program='openssl'
program_ref="\n\t\tused to generate requested source document identification digest"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -745,7 +789,7 @@ module SiSU_Env
dgst=%x{openssl dgst -md5 #{File.basename(filename)}}.strip #use file name without file path
Dir.chdir(pwd)
dgst.scan(/\S+/)
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -758,7 +802,7 @@ module SiSU_Env
dgst=%x{openssl dgst -sha256 #{File.basename(filename)}}.strip #use file name without file path
Dir.chdir(pwd)
dgst.scan(/\S+/)
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -766,7 +810,7 @@ module SiSU_Env
program='psql'
program_ref="\n\t\tpsql requested"
if program_found?(program); true
- else STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" #if @cmd =~/v/
+ else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{program} is not installed #{program_ref}")
false
end
end
@@ -1030,9 +1074,13 @@ module SiSU_Env
end
end
class InfoEnv < EnvCall
- require 'pathname'
- require 'fileutils'
- include FileUtils
+ begin
+ require 'pathname'
+ require 'fileutils'
+ include FileUtils
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname or fileutils NOT FOUND (LoadError)')
+ end
attr_accessor :filename,:sys,:home,:hostname,:user,:env,:rc,:www,:fnb,:fnn,:fnt,:flv,:webserv_path,:stub_pwd,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir
@@image_flag,@@local_image=true,true #warning on @@image_flag
@@fb,@@man_path=nil,nil
@@ -1080,7 +1128,7 @@ module SiSU_Env
elsif output_dir_structure.by_filename?
''
else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('set output type, by: language, filetype or filename')
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn('set output type, by: language, filetype or filename')
end
@stub_set_manifest=stub + '/manifest'
end
@@ -3169,8 +3217,12 @@ WOK
end
end
class CleanOutput
- require 'fileutils'
- include FileUtils::Verbose
+ begin
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
z=SiSU_Env::FileMap.new(opt)
@@ -3326,7 +3378,11 @@ WOK
end
class InfoRemote < FileMap
@@flag_remote=false
- require 'socket'
+ begin
+ require 'socket'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('socket NOT FOUND (LoadError)')
+ end
def initialize(opt)
super(opt) #
@opt=opt
@@ -3674,8 +3730,12 @@ WOK
end
class InfoVersion <InfoEnv
include Singleton
- require 'rbconfig'
- require 'yaml'
+ begin
+ require 'rbconfig'
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig or yaml NOT FOUND (LoadError)')
+ end
@@lib_path=nil
def get_version
@version={}
@@ -3845,6 +3905,53 @@ WOK
true
end
end
+ def plaintext_ocn?
+ if cmd_rc_act[:txt_ocn][:set]==:on \
+ or cmd_rc_act[:ocn][:set]==:on
+ true
+ elsif cmd_rc_act[:txt_ocn][:set]==:off \
+ or cmd_rc_act[:ocn][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.ocn? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ false
+ end
+ end
+ def odt_ocn?
+ if cmd_rc_act[:odt_ocn][:set]==:on \
+ or cmd_rc_act[:ocn][:set]==:on
+ true
+ elsif cmd_rc_act[:odt_ocn][:set]==:off \
+ or cmd_rc_act[:ocn][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.ocn? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ false
+ end
+ end
+ def html_strict?
+ if cmd_rc_act[:html_strict][:set]==:on
+ true
+ elsif cmd_rc_act[:html_strict][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_strict? \
+ and doc_rc.html_strict? ==:on
+ true
+ else
+ false
+ end
+ end
def toc?
if cmd_rc_act[:toc][:set]==:on
true
@@ -4081,6 +4188,11 @@ WOK
end
self
end
+ def ocn_html_identifier
+ (build.html_strict?) \
+ ? Mx[:ocn_id_char]
+ : ''
+ end
def output_dir_structure
def by_language_code?
if cmd_rc_act[:output_by][:set] == :language
@@ -4291,7 +4403,14 @@ WOK
DBI.connect(sqlite_discrete.dbi)
end
def conn_sqlite3
- SQLite3::Database.new(sqlite_discrete.sqlite3)
+ begin
+ $sqlite3=:yes
+ require 'sqlite3'
+ SQLite3::Database.new(sqlite_discrete.sqlite3)
+ rescue LoadError
+ $sqlite3=:no
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 NOT FOUND (LoadError)')
+ end
end
self
end
diff --git a/lib/sisu/v6/texpdf.rb b/lib/sisu/v6/texpdf.rb
index 496f77fe..97961701 100644
--- a/lib/sisu/v6/texpdf.rb
+++ b/lib/sisu/v6/texpdf.rb
@@ -61,7 +61,11 @@
=end
module SiSU_TeX
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'defaults' # defaults.rb
include SiSU_Viz
require_relative 'particulars' # particulars.rb
@@ -78,7 +82,11 @@ module SiSU_TeX
@@n=@@tableheader=@@rights=nil
@@date ||=SiSU_Env::InfoDate.new
class Source
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'sysenv' # sysenv.rb
include SiSU_Env
include SiSU_Viz
@@ -270,7 +278,7 @@ module SiSU_TeX
and File.size(texfile) > 0
#@tex_f_no+=1
else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("\tzero file size #{@env.processing_path.tex}/#{texfile}")
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error("\tzero file size #{@env.processing_path.tex}/#{texfile}")
end
end
end
@@ -365,7 +373,7 @@ module SiSU_TeX
elsif @md.opt.act[:pdf_p][:set]==:on
'pdfTex portrait'
else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('error: neither landscape nor portrait')
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('error: neither landscape nor portrait')
end
if (@md.opt.act[:verbose][:set]==:on \
|| @md.opt.act[:verbose_plus][:set]==:on \
diff --git a/lib/sisu/v6/txt_plain.rb b/lib/sisu/v6/txt_plain.rb
index bb97f679..1aa08f0e 100644
--- a/lib/sisu/v6/txt_plain.rb
+++ b/lib/sisu/v6/txt_plain.rb
@@ -400,7 +400,8 @@ WOK
@@endnotes[:para]=[]
end
def ocn_display(dob)
- if @env.plaintext_ocn?
+ make=SiSU_Env::ProcessingSettings.new(@md)
+ if make.build.plaintext_ocn?
if defined? dob.ocn \
and dob.ocn.is_a?(Fixnum)
(defined? dob.ocn) ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" : ''
diff --git a/lib/sisu/v6/utils.rb b/lib/sisu/v6/utils.rb
index b0efb3bc..60925f22 100644
--- a/lib/sisu/v6/utils.rb
+++ b/lib/sisu/v6/utils.rb
@@ -127,6 +127,12 @@ module SiSU_Utils
def mark(v=nil,x=nil)
puts set(v,x)
end
+ def warn(v=nil,x=nil)
+ STDERR.puts set(v,'*WARN* ' + x)
+ end
+ def error(v=nil,x=nil)
+ STDERR.puts set(v,'*ERROR* ' + x)
+ end
end
class Path
def initialize(dir=Dir.pwd)
diff --git a/lib/sisu/v6/webrick.rb b/lib/sisu/v6/webrick.rb
index 7a66a1af..97e6548d 100644
--- a/lib/sisu/v6/webrick.rb
+++ b/lib/sisu/v6/webrick.rb
@@ -63,12 +63,16 @@
=end
module SiSU_Webserv
class WebrickStart
+ begin
+ require 'time'
require 'webrick'
include WEBrick
- require 'time'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- include SiSU_Screen
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('time or webrick NOT FOUND (LoadError)')
+ end
+ require_relative 'sysenv' # sysenv.rb
+ include SiSU_Env
+ include SiSU_Screen
def initialize
begin #%
@cX=SiSU_Screen::Ansi.new('yes').cX
@@ -97,9 +101,13 @@ module SiSU_Webserv
#% wb_top
wb_top=%q(#!/usr/bin/env ruby
# * arch-tag: webrick info on environment, mounted directories, and contents of pwd
- require 'time'
- require 'cgi'
- require 'fcgi'
+ begin
+ require 'time'
+ require 'cgi'
+ require 'fcgi'
+ rescue LoadError
+ puts 'time, cgi or fcgi NOT FOUND (LoadError)'
+ end
ls=Dir.entries('./')
dir_contents=[]
ls.each { |x| dir_contents << "<a href=\"./#{x}/\">#{x}</a><br>" unless x =~/^(\.)+$/ }
diff --git a/lib/sisu/v6/xhtml_epub2.rb b/lib/sisu/v6/xhtml_epub2.rb
index 6447431f..3164e575 100644
--- a/lib/sisu/v6/xhtml_epub2.rb
+++ b/lib/sisu/v6/xhtml_epub2.rb
@@ -61,7 +61,11 @@
=end
module SiSU_XHTML_EPUB2
- require 'pstore'
+ begin
+ require 'pstore'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)')
+ end
require_relative 'particulars' # particulars.rb
include SiSU_Particulars
require_relative 'defaults' # defaults.rb
@@ -744,7 +748,8 @@ module SiSU_XHTML_EPUB2
end
def output_zip
FileUtils::mkdir_p(@md.file.output_path.epub.dir) unless FileTest.directory?(@md.file.output_path.epub.dir)
- if FileTest.directory?(@md.env.processing_path.epub)
+ if FileTest.directory?(@md.env.processing_path.epub) \
+ and SiSU_Env::SystemCall.new.zip
pwd=Dir.pwd
Dir.chdir(@md.env.processing_path.epub)
system("
@@ -755,6 +760,8 @@ module SiSU_XHTML_EPUB2
unless @md.opt.act[:maintenance][:set]==:on
FileUtils::rm_r(@md.env.processing_path.epub)
end
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('*EXITED epub* zip program not found') unless SiSU_Env::SystemCall.new.zip
end
end
def make_cover_image
diff --git a/lib/sisu/v6/xhtml_epub2_format.rb b/lib/sisu/v6/xhtml_epub2_format.rb
index d5b7e85e..626eb79f 100644
--- a/lib/sisu/v6/xhtml_epub2_format.rb
+++ b/lib/sisu/v6/xhtml_epub2_format.rb
@@ -1362,12 +1362,13 @@ output_epub_cont_seg.close
depth=@md.lvs[1] + @md.lvs[2] + @md.lvs[3] + @md.lvs[4]
title=SanitizeXML.xml(@md.title.full)
author=SanitizeXML.xml(@md.author)
+ dgst=(@md.dgst.is_a?(Array) and @md.dgst.length > 1) ? @md.dgst[1] : 'na'
<<-WOK
<!-- four required metadata items (for all NCX documents,
(including the relaxed constraints of OPS 2.0) -->
<title>#{title} by #{author}</title>
<link href="css/xhtml.css" rel="stylesheet" type="text/css" id="main-css" />
- <meta name="dtb:uid" content="urn:uuid:#{@md.dgst[1]}" />
+ <meta name="dtb:uid" content="urn:uuid:#{dgst}" />
<!-- <meta name="epub-creator" content="#{@md.publisher}" /> -->
<meta name="dtb:depth" content="#{depth}" />
<meta name="dtb:totalPageCount" content="0" />
@@ -1579,18 +1580,19 @@ output_epub_cont_seg.close
else ''
end
f=SiSU_Env::FileOp.new(@md)
+ dgst=(@md.dgst.is_a?(Array) and @md.dgst.length > 1) ? @md.dgst[1] : 'na'
<<-WOK
<#{$ep[:o]}metadata
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:opf="http://www.idpf.org/2007/opf"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
- unique-identifier="urn:uuid:#{@md.dgst[1]}" version="2.0">
+ unique-identifier="urn:uuid:#{dgst}" version="2.0">
<dc:title>#{@md.title.full}</dc:title>
#{cover_image}#{author}#{editor}#{translator}#{illustrator}#{language}#{date_published}#{subject}#{rights}
<dc:identifier opf:scheme="URI">#{f.output_path.epub.url.gsub(/http:\/\//,'')}/#{f.base_filename.epub}</dc:identifier>
- <dc:identifier id="bookid">urn:uuid:#{@md.dgst[1]}</dc:identifier>
- <!-- <dc:identifier id="EPB-UUID">urn:uuid:#{@md.dgst[1]}</dc:identifier> -->
+ <dc:identifier id="bookid">urn:uuid:#{dgst}</dc:identifier>
+ <!-- <dc:identifier id="EPB-UUID">urn:uuid:#{dgst}</dc:identifier> -->
</#{$ep[:o]}metadata>
WOK
end
@@ -2132,10 +2134,10 @@ output_epub_cont_seg.close
note=''
if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end
note=$1
- note=note.gsub(/[\n\s]+/m,' ')
+ note=note.gsub(/[\s]+/m,' ')
txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ').
- gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{$ep[:hsp]}<sup id="note\d+">\d+<\/sup>#{$ep[:hsp]}/m,'').
- gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{$ep[:hsp]}<sup id="note\d+">\d+<\/sup>#{$ep[:hsp]}/m,'') #remove
+ gsub(/<a[\n\s]+"[\n\s]+href="##{Mx[:note_ref]}\d+">#{$ep[:hsp]}<sup id="#{Mx[:note]}\d+">\d+<\/sup>#{$ep[:hsp]}/m,'').
+ gsub(/<a[\n\s]+"[\n\s]+href="##{Mx[:note_ref]}\d+">#{$ep[:hsp]}<sup id="#{Mx[:note]}\d+">\d+<\/sup>#{$ep[:hsp]}/m,'') #remove
end
%{<#{tag} class="#{attrib}">
<a href="#o#{@ocn}"><i>#{txt}</i></a> #{note}
diff --git a/lib/sisu/v6/xhtml_epub2_segments.rb b/lib/sisu/v6/xhtml_epub2_segments.rb
index 2be4afd9..d249b0ff 100644
--- a/lib/sisu/v6/xhtml_epub2_segments.rb
+++ b/lib/sisu/v6/xhtml_epub2_segments.rb
@@ -401,7 +401,7 @@ WOK
sto.break
end
if @md.flag_separate_endnotes # may need to revisit, check
- dob.obj=dob.obj.gsub(/"\s+href="#note_ref(\d+)">/,%{" href=\"endnotes#{Sfx[:epub_xhtml]}#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 \
diff --git a/lib/sisu/v6/xhtml_epub2_tune.rb b/lib/sisu/v6/xhtml_epub2_tune.rb
index 12f70fcf..fd90ae54 100644
--- a/lib/sisu/v6/xhtml_epub2_tune.rb
+++ b/lib/sisu/v6/xhtml_epub2_tune.rb
@@ -298,22 +298,22 @@ module SiSU_XHTML_EPUB2_Tune
data.each do |dob|
unless dob.is ==:code
dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(\d+)\s+(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note\\2">#{Mx[:nbsp]}<sup id="note_ref\\2">\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1\\2 <a href="#note_ref\\2">#{Mx[:nbsp]}<sup id="note\\2">\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref]}\\2">\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1\\2 <a href="##{Mx[:note_ref]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note]}\\2">\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
gsub(/(#{Mx[:en_b_o]})[*](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_astx\\2">#{Mx[:nbsp]}<sup id="note_ref_astx\\2">#{ast}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast}\\2 <a href="#note_ref_astx\\2">#{Mx[:nbsp]}<sup id="note_astx\\2">#{ast}\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note_astx]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref_astx]}\\2">#{ast}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{ast}\\2 <a href="##{Mx[:note_ref_astx]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_astx]}\\2">#{ast}\\2.</sup></a> \\3 \\4}). #endnote- note- (careful may have switched)
gsub(/(#{Mx[:en_b_o]})[+](\d+)\s+(.+?)(#{Mx[:en_b_c]})/,
- %{#{Mx[:nbsp]}<a href="#note_plus\\2">#{Mx[:nbsp]}<sup id="note_ref_plus\\2">#{pls}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls}\\2 <a href="#note_ref_plus\\2">#{Mx[:nbsp]}<sup id="note_plus\\2">#{pls}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched) # double-check there may here be a bug
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note_plus]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref_plus]}\\2">#{pls}\\2</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{pls}\\2 <a href="##{Mx[:note_ref_plus]}\\2">#{Mx[:nbsp]}<sup id="#{Mx[:note_plus]}\\2">#{pls}\\2.</sup></a> \\3 \\4}) #endnote- note- (careful may have switched) # double-check there may here be a bug
if dob.obj =~/#{Mx[:en_a_o]}([*+]+)\s+.+?#{Mx[:en_a_c]}/
m=$1.length.to_i
dob.obj=dob.obj.gsub(/(#{Mx[:en_a_o]})[*]+\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{a*m}">#{Mx[:nbsp]}<sup id="note_ref#{a*m}">#{ast*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{ast*m} <a href="#note_ref#{a*m}">#{Mx[:nbsp]}<sup id="note#{a*m}">#{ast*m}</sup></a> \\2 \\3}). #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note]}#{a*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref]}#{a*m}">#{ast*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{ast*m} <a href="##{Mx[:note_ref]}#{a*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note]}#{a*m}">#{ast*m}</sup></a> \\2 \\3}). #endnote- note- (careful may have switched)
gsub(/(#{Mx[:en_a_o]})([+]+)\s+(.+?)(#{Mx[:en_a_c]})/,
- %{#{Mx[:nbsp]}<a href="#note#{s*m}">#{Mx[:nbsp]}<sup id="note_ref#{s*m}">#{pls*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
- %{\\1#{pls*m} <a href="#note_ref#{s*m}">#{Mx[:nbsp]}<sup id="note#{s*m}">#{pls*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
+ %{#{Mx[:nbsp]}<a href="##{Mx[:note]}#{s*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note_ref]}#{s*m}">#{pls*m}</sup>#{Mx[:nbsp]}</a> } + #note- endnote-
+ %{\\1#{pls*m} <a href="##{Mx[:note_ref]}#{s*m}">#{Mx[:nbsp]}<sup id="#{Mx[:note]}#{s*m}">#{pls*m}</sup></a> \\2 \\3}) #endnote- note- (careful may have switched)
end
end
@tuned_file << dob
diff --git a/lib/sisu/v6/xml_fictionbook2.rb b/lib/sisu/v6/xml_fictionbook2.rb
index 9cd7909e..0498a7f0 100644
--- a/lib/sisu/v6/xml_fictionbook2.rb
+++ b/lib/sisu/v6/xml_fictionbook2.rb
@@ -227,7 +227,11 @@ module SiSU_XML_Fictionbook
endnotes
end
def extract_images #work on
- require "base64"
+ begin
+ require 'base64'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('base64 NOT FOUND (LoadError)')
+ end
images_raw,images_base64_fb2=[],[]
images_base64={}
if defined? @md.make.cover_image[:cover]
diff --git a/lib/sisu/v6/xml_odf_odt.rb b/lib/sisu/v6/xml_odf_odt.rb
index bf9d8df8..0457ad7d 100644
--- a/lib/sisu/v6/xml_odf_odt.rb
+++ b/lib/sisu/v6/xml_odf_odt.rb
@@ -73,8 +73,12 @@ module SiSU_XML_ODF_ODT
require_relative 'txt_shared' # txt_shared.rb
@@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0
class Source
- require 'zlib'
- require 'find'
+ begin
+ require 'zlib'
+ require 'find'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('zlib or find NOT FOUND (LoadError)')
+ end
def initialize(opt)
@opt=opt
@particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
@@ -117,6 +121,7 @@ module SiSU_XML_ODF_ODT
@@fns=nil
def initialize(particulars)
@md,@env,@ao_array=particulars.md,particulars.env,particulars.ao_array
+ @make=SiSU_Env::ProcessingSettings.new(@md)
@vz=SiSU_Viz::Defaults.new
@tab="\t"
@brace_url=SiSU_Viz::Defaults.new.url_decoration
@@ -552,10 +557,10 @@ module SiSU_XML_ODF_ODT
end
p_num={ display: '', set_ref: '' }
if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
- if @env.odt_ocn?
+ if @make.build.odt_ocn?
if defined? dob.ocn \
and dob.ocn.is_a?(Fixnum)
- p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn).set_bookmark_and_display
+ p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn).set_bookmark_and_display
end
end
end
@@ -678,7 +683,7 @@ module SiSU_XML_ODF_ODT
and (dob.obj =~/~metadata/ or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o]
if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check
if defined? dob.ocn and dob.ocn =~/\d+/
- @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(dob.ocn)
+ @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn)
end
if dob.is ==:heading \
|| dob.is ==:para \
@@ -805,7 +810,8 @@ WOK
od.close
opendoc=@md.file.base_filename.odt #watch where output by language
FileUtils::mkdir_p(@md.file.output_path.odt.dir) unless FileTest.directory?(@md.file.output_path.odt.dir)
- if FileTest.directory?(@env.processing_path.odt)
+ if FileTest.directory?(@env.processing_path.odt) \
+ and SiSU_Env::SystemCall.new.zip
pwd=Dir.pwd
Dir.chdir(@env.processing_path.odt)
system("
@@ -813,6 +819,8 @@ WOK
")
FileUtils::mv(opendoc, @md.file.place_file.odt.dir)
Dir.chdir(pwd)
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('*EXITED odf* zip program not found') unless SiSU_Env::SystemCall.new.zip
end
end
end
diff --git a/lib/sisu/v6/xml_odf_odt_format.rb b/lib/sisu/v6/xml_odf_odt_format.rb
index bc7fadea..b2539dfd 100644
--- a/lib/sisu/v6/xml_odf_odt_format.rb
+++ b/lib/sisu/v6/xml_odf_odt_format.rb
@@ -65,17 +65,26 @@ module SiSU_XML_ODF_ODT_Format
include SiSU_Param
include SiSU_Viz
class ParagraphNumber
- def initialize(paranum)
+ def initialize(make,paranum)
+ @make=make
@paranum=/(\d+)/m.match(paranum.to_s)[1]
end
def set_ref_and_display
- set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>')
- disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>})
+ set_ref=@paranum.gsub(/(\d+)/,
+ ' <text:span text:style-name="Span_subscript"><text:reference-mark-start text:name="\1"/><text:reference-mark-end text:name="\1"/></text:span>')
+ disp=@paranum.gsub(/(\d+)/,
+ (@make.build.odt_ocn?) \
+ ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}
+ : '')
{ display: disp, set_ref: set_ref }
end
def set_bookmark_and_display
- set_ref=@paranum.gsub(/(\d+)/,' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>')
- disp=@paranum.gsub(/(\d+)/,%{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>})
+ set_ref=@paranum.gsub(/(\d+)/,
+ ' <text:span text:style-name="Span_subscript"><text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/></text:span>')
+ disp=@paranum.gsub(/(\d+)/,
+ (@make.build.odt_ocn?) \
+ ? %{ <text:span text:style-name="Span_subscript">#{Dx[:ocn_o]}\\1#{Dx[:ocn_c]}</text:span>}
+ : '')
{ display: disp, set_ref: set_ref }
end
def name