diff options
author | Ralph Amissah <ralph@amissah.com> | 2014-08-20 20:36:21 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2014-08-20 20:36:21 -0400 |
commit | 68113824863c29cf751f492a170593360ea31f82 (patch) | |
tree | a4a1b776adeb9935321b26f98bae68c83ac3ed61 /lib | |
parent | debian/changelog (5.6.1-1) (diff) | |
parent | documentation related, sisu manual book index, and --no-stop command (diff) |
Merge tag 'sisu_5.6.2' into debian/sid
SiSU 5.6.2
Diffstat (limited to 'lib')
60 files changed, 754 insertions, 252 deletions
diff --git a/lib/sisu/v5/ao.rb b/lib/sisu/v5/ao.rb index 0a494184..e06259d6 100644 --- a/lib/sisu/v5/ao.rb +++ b/lib/sisu/v5/ao.rb @@ -497,27 +497,33 @@ module SiSU_AO end def make_marshal_idx_sst_html_seg marshal_ao=@make.marshal.ao_idx_sst_rel_html_seg - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_idx_sst_rel marshal_ao=@make.marshal.ao_idx_sst_rel - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_idx_html marshal_ao=@make.marshal.ao_idx_html - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_idx_xhtml marshal_ao=@make.marshal.ao_idx_xhtml - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_map_nametags marshal_ao=@make.marshal.ao_map_nametags - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Hash) end def make_marshal_map_name_ocn_htmlseg marshal_ao=@make.marshal.ao_map_ocn_htmlseg - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Hash) end end class Make diff --git a/lib/sisu/v5/ao_doc_str.rb b/lib/sisu/v5/ao_doc_str.rb index 11990abf..e10cc4ef 100644 --- a/lib/sisu/v5/ao_doc_str.rb +++ b/lib/sisu/v5/ao_doc_str.rb @@ -230,8 +230,11 @@ module SiSU_AO_DocumentStructureExtract term_nodes << term_node use,plus=rgx_idx_ocn_seg.match(term_node)[1,2] @use=use.strip - idx_hash[@use]= - { sub: [], plus: plus } unless idx_hash[@use] and defined? idx_hash[@use] + unless idx_hash[@use] \ + and defined? idx_hash[@use] + idx_hash[@use]= + { sub: [], plus: plus } + end when Array subterm_nodes=[] term_node.each do |subterm_node| @@ -240,8 +243,11 @@ module SiSU_AO_DocumentStructureExtract : (subterm_node + '+0') subterm_nodes << subterm_node sub,sub_plus=rgx_idx_ocn_seg.match(subterm_node)[1,2] - idx_hash[@use]= - { sub: [], plus: 0 } unless idx_hash[@use] and defined? idx_hash[@use] + unless idx_hash[@use] \ + and defined? idx_hash[@use] + idx_hash[@use]= + { sub: [], plus: 0 } + end idx_hash[@use][:sub] << { sub.strip => { plus: sub_plus } } end @@ -299,6 +305,18 @@ module SiSU_AO_DocumentStructureExtract next end t_o=t_o.gsub(/(?:\n\s*\n)+/m,"\n") if @@flag[:code]==:off + unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any + idx=if t_o=~/^=\{\s*(.+)\s*\}\s*$\Z/m + m=$1 + m=m.split(/[ ]*\n/).join(' '). + gsub(/\s+([|:;])\s+/,'\1'). + gsub(/\s+([+]\d+)\s+/,'\1') + t_o=t_o.gsub(/\n=\{.+?\}\s*$/m,'') + idx_array_and_hash=construct_idx_array_and_hash(m) + idx_array_and_hash[:hash] + else nil + end + end if t_o !~/^(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block)\{|^\}(?:code|poem|alt|group|block)|^(?:table\{|\{table)[ ~]/ \ and t_o !~/^```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)|^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$|^`:quote_(?:open|close)`/ \ and @@flag[:code]==:off \ @@ -308,17 +326,6 @@ module SiSU_AO_DocumentStructureExtract and @@flag[:alt]==:off \ and @@flag[:box]==:off \ and @@flag[:table]==:off - unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any - idx=if t_o=~/^=\{\s*(.+)\s*\}\s*$\Z/m; m=$1 - m=m.split(/[ ]*\n/).join(' '). - gsub(/\s+([|:;])\s+/,'\1'). - gsub(/\s+([+]\d+)\s+/,'\1') - t_o=t_o.gsub(/\n=\{.+?\}\s*$/m,'') - idx_array_and_hash=construct_idx_array_and_hash(m) - idx_array_and_hash[:hash] - else nil - end - end t_o=case t_o when /^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/ #metadata, header if t_o=~/^#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}\s*(.+)/m @@ -707,7 +714,8 @@ module SiSU_AO_DocumentStructureExtract tags: tags, num: @num_id[:table], } - t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \ + unless h.nil? tuned_file << t_o h={ is_for: :table, @@ -743,7 +751,8 @@ module SiSU_AO_DocumentStructureExtract tags: tags, num: @num_id[:table], } - t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \ + unless h.nil? tuned_file << t_o h={ is_for: :table, @@ -779,7 +788,8 @@ module SiSU_AO_DocumentStructureExtract tags: tags, num: @num_id[:table], } - t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \ + unless h.nil? tuned_file << t_o h={ is_for: :table, @@ -828,15 +838,22 @@ module SiSU_AO_DocumentStructureExtract t_o=nil end end - if @@flag[:code]==:curls or @@flag[:code]==:tics - if (@@flag[:code]==:curls and t_o =~/^\}code/) \ - or (@@flag[:code]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + if @@flag[:code]==:curls \ + or @@flag[:code]==:tics + if (@@flag[:code]==:curls \ + && t_o =~/^\}code/) \ + or (@@flag[:code]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/m) @@flag[:code]=:off - @tuned_code[-1].gsub!(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*\Z/m,'') + if @tuned_code[-1] + @tuned_code[-1]. + gsub!(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*\Z/m,'') + end obj=@tuned_code.join("\n") tags=[] h={ obj: obj, + idx: idx, syntax: @@flag[:lngsyn], tags: tags, num: @num_id[:code_block], @@ -854,7 +871,8 @@ module SiSU_AO_DocumentStructureExtract } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) end - if (@@flag[:code]==:curls or @@flag[:code]==:tics) \ + if (@@flag[:code]==:curls \ + || @@flag[:code]==:tics) \ and t_o.is_a?(String) sub_array=t_o.dup + "#{Mx[:br_nl]}" @line_mode=[] @@ -863,28 +881,40 @@ module SiSU_AO_DocumentStructureExtract @tuned_code << t_o t_o=nil end - elsif (@@flag[:poem]==:curls or @@flag[:poem]==:tics) \ - or (@@flag[:box]==:curls or @@flag[:box]==:tics) \ - or (@@flag[:group]==:curls or @@flag[:group]==:tics) \ - or (@@flag[:block]==:curls or @@flag[:block]==:tics) \ - or (@@flag[:alt]==:curls or @@flag[:alt]==:tics) \ - or (@@flag[:quote]==:open and t_o =~/`:quote_close`/m) #not - if (@@flag[:poem]==:curls and t_o =~/^\}poem/) \ - or (@@flag[:poem]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:poem]==:curls \ + || @@flag[:poem]==:tics) \ + or (@@flag[:box]==:curls \ + || @@flag[:box]==:tics) \ + or (@@flag[:group]==:curls \ + || @@flag[:group]==:tics) \ + or (@@flag[:block]==:curls \ + || @@flag[:block]==:tics) \ + or (@@flag[:alt]==:curls \ + || @@flag[:alt]==:tics) \ + or (@@flag[:quote]==:open \ + && t_o =~/`:quote_close`/m) #not + if (@@flag[:poem]==:curls \ + && t_o =~/^\}poem$/m) \ + or (@@flag[:poem]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:poem]=:off h={ is_for: :poem, obj: '', + idx: idx, sym: :poem_close, num: @num_id[:poem], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:box]==:curls and t_o =~/^\}box/) \ - or (@@flag[:box]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:box]==:curls \ + && t_o =~/^\}box/) \ + or (@@flag[:box]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:box]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:box], } @@ -894,16 +924,20 @@ module SiSU_AO_DocumentStructureExtract h={ is_for: :box, obj: '', + idx: idx, sym: :box_close, num: @num_id[:box], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:group]==:curls and t_o =~/^\}group/) \ - or (@@flag[:group]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:group]==:curls \ + && t_o =~/^\}group/) \ + or (@@flag[:group]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:group]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:group], } @@ -917,12 +951,15 @@ module SiSU_AO_DocumentStructureExtract num: @num_id[:group], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:block]==:curls and t_o =~/^\}block/) \ - or (@@flag[:block]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:block]==:curls \ + && t_o =~/^\}block/) \ + or (@@flag[:block]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:block]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:block], } @@ -936,12 +973,15 @@ module SiSU_AO_DocumentStructureExtract num: @num_id[:block], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:alt]==:curls and t_o =~/^\}alt/) \ - or (@@flag[:alt]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:alt]==:curls \ + && t_o =~/^\}alt/) \ + or (@@flag[:alt]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:alt]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:alt], } @@ -955,10 +995,12 @@ module SiSU_AO_DocumentStructureExtract num: @num_id[:alt], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif @@flag[:quote]==:open and t_o =~/`:quote_close`/m + elsif @@flag[:quote]==:open \ + and t_o =~/`:quote_close`/m @@flag[:quote]=:off h={ is_for: :quote, + idx: idx, obj: '', sym: :quote_close, num: @num_id[:quote], @@ -977,9 +1019,12 @@ module SiSU_AO_DocumentStructureExtract } SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end - if (@@flag[:poem]==:curls or @@flag[:poem]==:tics \ - or @@flag[:group]==:curls or @@flag[:group]==:tics \ - or @@flag[:alt]==:curls or @@flag[:alt]==:tics) \ + if (@@flag[:poem]==:curls \ + || @@flag[:poem]==:tics) \ + or (@@flag[:group]==:curls \ + || @@flag[:group]==:tics) \ + or (@@flag[:alt]==:curls \ + || @@flag[:alt]==:tics) \ and t_o =~/\S/ \ and t_o !~/^(?:\}(?:verse|code|box|alt|group|block)|(?:verse|code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|alt|group|block)\{)/ \ and t_o !~/^```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block)|^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/ # fix logic diff --git a/lib/sisu/v5/ao_expand_insertions.rb b/lib/sisu/v5/ao_expand_insertions.rb index 47ac9887..483e9fdb 100644 --- a/lib/sisu/v5/ao_expand_insertions.rb +++ b/lib/sisu/v5/ao_expand_insertions.rb @@ -142,7 +142,7 @@ module SiSU_AO_Insertions } end def path_and_file(fn,pth) - "#{@base_path}/#{pth}/#{fn}" + @base_path + '/' + pth + '/' + fn end def manifest fn=@md.file.base_filename.manifest(fnh) @@ -150,7 +150,7 @@ module SiSU_AO_Insertions end def html_toc fn=@md.file.base_filename.html_segtoc(fnh) - "#{@base_path}/html/#{@linked_doc}/#{fn}" + @base_path + '/html/' + @linked_doc + '/' + fn end def html_doc fn=@md.file.base_filename.html_scroll(fnh) @@ -158,7 +158,7 @@ module SiSU_AO_Insertions end def html_concordance fn=@md.file.base_filename.html_concordance - "#{@base_path}/html/#{@linked_doc}/#{fn}" + @base_path + '/html/' + @linked_doc + '/' + fn end def epub fn=@md.file.base_filename.epub(fnh) @@ -197,16 +197,17 @@ module SiSU_AO_Insertions path_and_file(fn,'digest') end def source - "#{@base_path}/src/#{@src}" + @base_path + '/src/' + @src end def sisupod - "#{@base_path}/src/#{@src}.zip" + @base_path + '/src/' + @src + '.zip' end self end def by_filetype(linked_doc,lng,src=nil) @linked_doc,@lng,@src=linked_doc,lng,src - @lc=SiSU_Env::FilenameLanguageCodeInsert.new(@md.opt,lng).language_code_insert + @lc=SiSU_Env::FilenameLanguageCodeInsert.new(@md.opt,lng). + language_code_insert @base_path="#{@md.file.output_path.base.url}" def fnh { @@ -215,7 +216,7 @@ module SiSU_AO_Insertions } end def path_and_file(fn,pth) - "#{@base_path}/#{pth}/#{fn}" + @base_path + '/' + pth + '/' + fn end def manifest fn=@md.file.base_filename.manifest(fnh) @@ -270,10 +271,10 @@ module SiSU_AO_Insertions path_and_file(fn,'digest') end def source - "#{@base_path}/src/#{@src}" + @base_path + '/src/' + @src end def sisupod - "#{@base_path}/src/#{@src}.zip" + @base_path + '/src/' + @src + '.zip' end self end @@ -289,8 +290,8 @@ module SiSU_AO_Insertions end def path_and_file(fn,pth=nil) (pth.nil?) \ - ? "#{@base_path}/#{fn}" - : "#{@base_path}/#{pth}/#{fn}" + ? @base_path + '/' + fn + : @base_path + '/' + pth + '/' + fn end def manifest fn=@md.file.base_filename.manifest(fnh) @@ -345,28 +346,50 @@ module SiSU_AO_Insertions path_and_file(fn) end def source - "#{@base_path}/#{@src}" + @base_path + '/' + @src end def sisupod - "#{@base_path}/#{@src}.zip" + @base_path + '/' + @src + '.zip' end self end def expand_insertions? data=@data tuned_file,tuned_file_tmp=[],[] - codeblock_=false + codeblock_={ + status: :false, + type: :na, + } data.each do |para| - codeblock_=if para =~/^(?:code(?:\.[a-z][0-9a-z_]+)?\{|```[ ]+code(?:\.[a-z][0-9a-z_]+)?)/ - true - elsif para =~/^(?:\}code|```(?:\s|$))/m - false + codeblock_=if para =~/^code(?:\.[a-z][0-9a-z_]+)?\{/ \ + and codeblock_[:status]==:false + { + status: :true, + type: :curl, + } + elsif para =~/^```[ ]+code(?:\.[a-z][0-9a-z_]+)?/ \ + and codeblock_[:status]==:false + { + status: :true, + type: :tics, + } + elsif codeblock_[:type]==:curl \ + and para =~/^\}code/m + { + status: :false, + type: :na, + } + elsif codeblock_[:type]==:tics \ + and para =~/^```(?:\s|$)/m + { + status: :false, + type: :na, + } else codeblock_ end if para !~/^%+\s/ \ - and not codeblock_ \ + and codeblock_[:status] != :true \ and para =~/\{(?:~\^\s+)?(.+?)\s\[(?:\d(?:[sS]*))\]\}(?:\.\.\/\S+?\/|\S+?\.ss[tm]\b)/ - manifest=nil @u=SiSU_Env::InfoEnv.new.url m_cmd='' if defined? @u.remote diff --git a/lib/sisu/v5/ao_idx.rb b/lib/sisu/v5/ao_idx.rb index c0dba12a..19f58082 100644 --- a/lib/sisu/v5/ao_idx.rb +++ b/lib/sisu/v5/ao_idx.rb @@ -79,7 +79,10 @@ module SiSU_AO_BookIndex html_idx,xhtml_idx= extract_book_index(data) data= - clean_and_insert_index(data,sisu_markup_idx_rel_html_seg) + clean_and_insert_index( + data, + sisu_markup_idx_rel_html_seg + ) [ data, sisu_markup_idx_rel, @@ -99,7 +102,11 @@ module SiSU_AO_BookIndex end if defined? dob.idx \ and dob.idx.is_a?(Hash) - idx_array << {idx: dob.idx, ocn: dob.ocn, seg: @seg } + idx_array << { + idx: dob.idx, + ocn: dob.ocn, + seg: @seg + } end tuned_file << dob if dob end diff --git a/lib/sisu/v5/ao_images.rb b/lib/sisu/v5/ao_images.rb index dce92fc5..dd33833d 100644 --- a/lib/sisu/v5/ao_images.rb +++ b/lib/sisu/v5/ao_images.rb @@ -134,6 +134,17 @@ module SiSU_AO_Images end img_col,img_row=/(\d+)x(\d+)/m.match(imgsys)[1,2] img_col,img_row=img_col.to_i,img_row.to_i + else + errmsg='imagemagick or graphicksmagick are required to process images' + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding (as requested) without image processing") + break + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end row=((img && defined? img.rows) ? img.rows : img_row) diff --git a/lib/sisu/v5/ao_misc_arrange.rb b/lib/sisu/v5/ao_misc_arrange.rb index 09842fcc..ab61671c 100644 --- a/lib/sisu/v5/ao_misc_arrange.rb +++ b/lib/sisu/v5/ao_misc_arrange.rb @@ -98,11 +98,11 @@ module SiSU_AO_MiscArrangeText else para << block_open end - elsif para =~/\A.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m \ + elsif para =~/\A.+?\n```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(\s*=\{.+?\})?\s*\Z/m \ and @flag==:open @flag=:close text,block_close= - /\A(.+?)\n(```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1,2] + /\A(.+?)\n(```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(?:\s+=\{.+?\})?)\s*\Z/m.match(para)[1,2] para=[] if not text.to_s.empty? para << text.to_s << block_close diff --git a/lib/sisu/v5/db_create.rb b/lib/sisu/v5/db_create.rb index 956a470a..19e81998 100644 --- a/lib/sisu/v5/db_create.rb +++ b/lib/sisu/v5/db_create.rb @@ -117,10 +117,38 @@ module SiSU_DbCreate end end def conn_exec_pg(sql) - @conn.exec_params(sql) + begin + @conn.exec_params(sql) + rescue + if @conn.is_a?(NilClass) + errmsg="No pg connection (check pg dependencies)" + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pg output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end + end + end end def conn_exec_sqlite(sql) + begin @conn.execute(sql) + rescue + if @conn.is_a?(NilClass) + errmsg="No sqlite3 connection (check sqlite3 dependencies)" + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without sqlite output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end + end + end end def metadata_and_text if (@opt.act[:verbose_plus][:set]==:on \ diff --git a/lib/sisu/v5/db_indexes.rb b/lib/sisu/v5/db_indexes.rb index b76e4b26..a27deb67 100644 --- a/lib/sisu/v5/db_indexes.rb +++ b/lib/sisu/v5/db_indexes.rb @@ -82,9 +82,23 @@ module SiSU_DbIndex end end def conn_execute_array(sql_arr) - @conn.transaction do |conn| - sql_arr.each do |sql| - conn_execute_sql(conn,sql) + begin + @conn.transaction do |conn| + sql_arr.each do |sql| + conn_execute_sql(conn,sql) + end + end + rescue + if @conn.is_a?(NilClass) + errmsg="No sqlite3 connection (check sqlite3 dependencies)" + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without sqlite output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end end diff --git a/lib/sisu/v5/dbi.rb b/lib/sisu/v5/dbi.rb index a7bbd822..df4b3180 100644 --- a/lib/sisu/v5/dbi.rb +++ b/lib/sisu/v5/dbi.rb @@ -102,7 +102,12 @@ module SiSU_DBI end def read_psql begin - require 'pg' + begin + require 'pg' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pg NOT FOUND (LoadError)') + end @conn=@db.psql.conn_pg rescue if @opt.act[:psql_create][:set]==:on @@ -119,10 +124,23 @@ manually create the database: "#{cX.green}#{@db.db}#{cX.off}" if it does not yet def read_sqlite begin begin - require 'sqlite3' + begin + require 'sqlite3' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('sqlite3 NOT FOUND (LoadError)') + end @conn=@db.sqlite.conn_sqlite3 rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 NOT FOUND (LoadError)') + errmsg='sqlite3 NOT FOUND (LoadError)' + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error(errmsg + ', ' + 'attempt to proceed without sqlite output (as requested)') + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error(errmsg + ', ' + 'STOPPING') + exit + end end end end diff --git a/lib/sisu/v5/dbi_discrete.rb b/lib/sisu/v5/dbi_discrete.rb index b9c3eebe..51755469 100644 --- a/lib/sisu/v5/dbi_discrete.rb +++ b/lib/sisu/v5/dbi_discrete.rb @@ -73,7 +73,8 @@ module SiSU_DBI_Discrete #% database building require 'fileutils' include FileUtils::Verbose rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('fileutils NOT FOUND (LoadError)') end class SQL def initialize(opt) diff --git a/lib/sisu/v5/defaults.rb b/lib/sisu/v5/defaults.rb index c2f0f19c..2da6c73d 100644 --- a/lib/sisu/v5/defaults.rb +++ b/lib/sisu/v5/defaults.rb @@ -65,7 +65,8 @@ module SiSU_Viz begin require 'uri' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('uri NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env diff --git a/lib/sisu/v5/dp.rb b/lib/sisu/v5/dp.rb index ef61f6b4..33c6c565 100644 --- a/lib/sisu/v5/dp.rb +++ b/lib/sisu/v5/dp.rb @@ -583,6 +583,34 @@ module SiSU_Param def sep(str) ' \\\\ ' end + def copyright_and_license + s=if @h['all'] then @h['all'] + else + s='' + if defined? copyright.text \ + and copyright.text \ + and not copyright.text.empty? + v=sep(copyright.text) + s +=copyright.text + v + end + if defined? copyright.license \ + and copyright.license \ + and not copyright.license.empty? + s +=copyright.license + end + if s.empty? + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + 'WARNING Document Rights information missing; provide @rights: :copyright:' + ).warn unless @opt.act[:quiet][:set]==:on + else + l,n=Db[:col_info_note],'rights.all' + validate_length(s,l,n) + end + s=s.gsub(/ [\\]+\s+$/,'') + end + s + end def all s=if @h['all'] then @h['all'] else diff --git a/lib/sisu/v5/html.rb b/lib/sisu/v5/html.rb index 683eba96..33253c78 100644 --- a/lib/sisu/v5/html.rb +++ b/lib/sisu/v5/html.rb @@ -64,7 +64,8 @@ module SiSU_HTML begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'se_hub_particulars' # se_hub_particulars.rb include SiSU_Particulars @@ -146,7 +147,14 @@ module SiSU_HTML data=tuned_file_array if @opt.act[:html_scroll][:set]==:on scr=SiSU_HTML::Source::Scroll.new(@md,data,scr_endnotes).songsheet - scroll=SiSU_HTML::Source::ScrollOutput.new(scr_toc,scr[:body],scr[:metadata],scr[:owner_details],scr[:tails],@md).publish + scroll=SiSU_HTML::Source::ScrollOutput.new( + scr_toc, + scr[:body], + scr[:metadata], + scr[:owner_details], + scr[:tails], + @md + ).publish SiSU_HTML::Source::Output.new(scroll,@md).scroll end rescue @@ -206,7 +214,11 @@ module SiSU_HTML ? 'external' : '_top' s_lnk_url,s_lnk_lnk=l[:url],l[:say] - txt_obj={ lnk_url: s_lnk_url, lnk_txt: s_lnk_lnk, target: target } + txt_obj={ + lnk_url: s_lnk_url, + lnk_txt: s_lnk_lnk, + target: target, + } lev_dob_ocn=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @links_guide_toc << lev_dob_ocn.links_guide if s_lnk_lnk end @@ -259,7 +271,8 @@ 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 + @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 diff --git a/lib/sisu/v5/html_segments.rb b/lib/sisu/v5/html_segments.rb index 9b0cc1c7..dab3159f 100644 --- a/lib/sisu/v5/html_segments.rb +++ b/lib/sisu/v5/html_segments.rb @@ -243,7 +243,9 @@ module SiSU_HTML_Seg #my_make_source_file=SiSU_Env::CreateFile.new(@md.fns) idx_html=SiSU_Particulars::CombinedSingleton. instance.get_idx_html(@md.opt).html_idx - idx_html.each {|x| @@seg[:idx] << x } + idx_html.each do |x| + @@seg[:idx] << x + end @@seg[:heading_idx]='' end data.each do |dob| diff --git a/lib/sisu/v5/hub_options.rb b/lib/sisu/v5/hub_options.rb index 849be52f..bc96b878 100644 --- a/lib/sisu/v5/hub_options.rb +++ b/lib/sisu/v5/hub_options.rb @@ -65,7 +65,8 @@ module SiSU_Commandline begin require 'pathname' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pathname NOT FOUND (LoadError)') end require_relative 'se' # se.rb require_relative 'dp_make' # dp_make.rb @@ -780,6 +781,12 @@ module SiSU_Commandline @act=@@act else act={} + act[:no_stop]=if select_arr.inspect \ + =~/"--no-stop"|"--errors-as-warnings"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end act[:license]=(select_arr.inspect \ =~/"--license/) \ ? { bool: true, set: :on } diff --git a/lib/sisu/v5/remote.rb b/lib/sisu/v5/remote.rb index 1a1a9f0a..81c0ed91 100644 --- a/lib/sisu/v5/remote.rb +++ b/lib/sisu/v5/remote.rb @@ -152,7 +152,8 @@ module SiSU_Remote require 'open-uri' require 'pp' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('open-uri or pp NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('open-uri or pp NOT FOUND (LoadError)') end require_relative 'ao_composite' # ao_composite.rb @rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/ @@ -201,7 +202,8 @@ module SiSU_Remote begin require 'net/http' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('net/http NOT FOUND (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) diff --git a/lib/sisu/v5/rexml.rb b/lib/sisu/v5/rexml.rb index 98263899..93018be9 100644 --- a/lib/sisu/v5/rexml.rb +++ b/lib/sisu/v5/rexml.rb @@ -63,9 +63,11 @@ module SiSU_Rexml # load XML file for REXML parsing begin - require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir'] + 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)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('rexml/document NOT FOUND (LoadError)') end require_relative 'dp' # dp.rb include SiSU_Param @@ -74,9 +76,11 @@ module SiSU_Rexml include SiSU_Viz class Rexml begin - require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir'] + 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)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('rexml/document NOT FOUND (LoadError)') end def initialize(md,fno) @md,@fno=md,fno diff --git a/lib/sisu/v5/se_db.rb b/lib/sisu/v5/se_db.rb index fcb5fc0d..84fd6ba6 100644 --- a/lib/sisu/v5/se_db.rb +++ b/lib/sisu/v5/se_db.rb @@ -140,7 +140,12 @@ module SiSU_Info_Db DBI.connect(psql.dbi,psql.user,psql.db) end def conn_pg - require 'pg' + begin + require 'pg' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pg NOT FOUND (LoadError)') + end PG::Connection.new(dbname: psql.db, port: psql.port) end self diff --git a/lib/sisu/v5/se_hub_particulars.rb b/lib/sisu/v5/se_hub_particulars.rb index 17942a71..89744476 100644 --- a/lib/sisu/v5/se_hub_particulars.rb +++ b/lib/sisu/v5/se_hub_particulars.rb @@ -65,7 +65,8 @@ module SiSU_Particulars begin require 'singleton' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('singleton NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('singleton NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env diff --git a/lib/sisu/v5/se_info_env.rb b/lib/sisu/v5/se_info_env.rb index 6e3dc2ef..777644d7 100644 --- a/lib/sisu/v5/se_info_env.rb +++ b/lib/sisu/v5/se_info_env.rb @@ -77,7 +77,8 @@ module SiSU_Info_Env require 'fileutils' include FileUtils rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname or fileutils NOT FOUND (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,:base_markup_dir_stub,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir @@image_flag,@@local_image=true,true #warning on @@image_flag diff --git a/lib/sisu/v5/se_info_system.rb b/lib/sisu/v5/se_info_system.rb index 7f0e7a00..9bf61c4c 100644 --- a/lib/sisu/v5/se_info_system.rb +++ b/lib/sisu/v5/se_info_system.rb @@ -67,7 +67,8 @@ module SiSU_Info_Sys_Gen begin require 'rbconfig' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig NOT FOUND (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'] diff --git a/lib/sisu/v5/src_kdissert_share.rb b/lib/sisu/v5/src_kdissert_share.rb index e67d4249..0938ad26 100644 --- a/lib/sisu/v5/src_kdissert_share.rb +++ b/lib/sisu/v5/src_kdissert_share.rb @@ -68,7 +68,8 @@ module SiSU_KdiSource require 'fileutils' include FileUtils rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('fileutils NOT FOUND (LoadError)') end def initialize(opt) @opt=opt diff --git a/lib/sisu/v5/sst_from_xml.rb b/lib/sisu/v5/sst_from_xml.rb index b6fccd92..ea1f3d11 100644 --- a/lib/sisu/v5/sst_from_xml.rb +++ b/lib/sisu/v5/sst_from_xml.rb @@ -68,7 +68,8 @@ module SiSU_sstFromXML require 'rexml/document' include REXML rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('rexml/document NOT FOUND (LoadError)') end def initialize(opt) @opt=opt diff --git a/lib/sisu/v5/texpdf.rb b/lib/sisu/v5/texpdf.rb index fe7ec47e..c2c9dc70 100644 --- a/lib/sisu/v5/texpdf.rb +++ b/lib/sisu/v5/texpdf.rb @@ -64,7 +64,8 @@ module SiSU_TeX begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'defaults' # defaults.rb include SiSU_Viz @@ -85,7 +86,8 @@ module SiSU_TeX begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env @@ -267,8 +269,16 @@ module SiSU_TeX FileUtils::cp(portrait_pdf,"#{@md.file.output_path.pdf.dir}/#{pdf_p}") FileUtils::rm(portrait_pdf) else - STDERR.puts "#{cX.fuchsia}pdf file not generated#{cX.off} <#{cX.blue}#{portrait_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')}#{cX.off}> (check texlive dependencies)" STDERR.puts "#{__FILE__}:#{__LINE__} NOT FOUND: #{portrait_pdf}" if @md.opt.act[:maintenance][:set]==:on + errmsg="pdf file not generated #{portrait_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')} (check texlive dependencies)" + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pdf output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end if @md.opt.act[:pdf_l][:set]==:on @@ -276,8 +286,16 @@ module SiSU_TeX FileUtils::cp(landscape_pdf,"#{@md.file.output_path.pdf.dir}/#{pdf_l}") FileUtils::rm(landscape_pdf) else - STDERR.puts "#{cX.fuchsia}pdf file not generated#{cX.off} <#{cX.blue}#{landscape_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')}#{cX.off}> (check texlive dependencies)" STDERR.puts "#{__FILE__}:#{__LINE__} NOT FOUND: #{landscape_pdf}" if @md.opt.act[:maintenance][:set]==:on + errmsg="pdf file not generated #{landscape_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')} (check texlive dependencies)" + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pdf output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end if (@md.opt.act[:verbose][:set]==:on \ @@ -312,7 +330,15 @@ module SiSU_TeX and File.size(texfile) > 0 #@tex_f_no+=1 else - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error("\tzero file size #{@env.processing_path.tex}/#{texfile}") + errmsg="zero file size #{@env.processing_path.tex}/#{texfile}" + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pdf output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end end @@ -423,12 +449,10 @@ module SiSU_TeX if defined? @md.rights.all \ and not @md.rights.all.empty? rght=@md.rights #.author.dup #dup is necessary, else contents of :rights changed - sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,rght.copyright.all) - copymark=@md.author_copymark \ - ? '{\begin{small}\copyright\end{small}} ' - : '' - copymark='Copyright {\begin{small}\copyright\end{small}} ' - copyright=sp_char.special_characters_safe.gsub(/^\s*Copyright \(C\)/, copymark) + sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,rght.copyright.copyright_and_license) + copymark='Copyright {\begin{small}{\copyright\end{small}} ' + #copymark='Copyright {\begin{small}^{\copyright\end{small}} ' + copyright=sp_char.special_characters_safe.gsub(/\s*Copyright \(C\)/, copymark) @@rights||="\n #{Tex[:backslash]*2}[3]\\ \\linebreak #{copyright}" end if defined? @md.notes.prefix_b \ diff --git a/lib/sisu/v5/texpdf_format.rb b/lib/sisu/v5/texpdf_format.rb index 9957ab48..d0c2ca5d 100644 --- a/lib/sisu/v5/texpdf_format.rb +++ b/lib/sisu/v5/texpdf_format.rb @@ -184,7 +184,7 @@ module SiSU_TeX_Pdf when /legal/i then @tx.legal.portrait.w #U.S. alternative when /book|b5/i then @tx.b5.portrait.w #book default - larger when /a5/i then @tx.a5.portrait.w - else @tx.a4.portrait.w #default currently A4 + else @tx.a4.portrait.w #default currently A4 end textwidth=tw.to_i - 20 colW=[] @@ -1445,7 +1445,7 @@ module SiSU_TeX_Pdf str=str.gsub(/\\textbackslash (copyright|clearpage|newpage)/,"\\\\\\1") #kludge bad solution, find out where tail is sent through specChar ! str end - def special_characters #special characters - some substitutions are sequence sensitive, rearrange with care. + def special_characters # special characters - some substitutions are sequence sensitive, rearrange with care str,is=@txt,@is str=xetex_special_characters_1(str,is) unless str.nil? str=special_characters_unsafe_1(str) unless str.nil? #xetex_special_characters_unsafe_1(@txt) @@ -1464,10 +1464,10 @@ module SiSU_TeX_Pdf str=str.gsub(/([0-9a-f]{8})/i,'\1\-') @txt=str end - def special_characters_safe #special characters - some substitutions are sequence sensitive, rearrange with care. + def special_characters_safe # special characters - some substitutions are sequence sensitive, rearrange with care str,is=@txt,@is str=xetex_special_characters_1(str,is) unless str.nil? - str=xetex_special_characters_2(str,is) unless str.nil? # remove this to start with, causes issues + str=xetex_special_characters_2(str,is) unless str.nil? # remove this to start with, causes issues str=special_characters_safe_close(str) unless str.nil? @txt=str end @@ -1478,7 +1478,7 @@ module SiSU_TeX_Pdf str=special_characters_safe_close(str) unless str.nil? @txt=str end - def characters_code_listings #special characters - some substitutions are sequence sensitive, rearrange with care. + def characters_code_listings # special characters - some substitutions are sequence sensitive, rearrange with care str,is=@txt,@is str=xetex_code_listings(str,is) unless str.nil? @txt=str @@ -1541,7 +1541,7 @@ module SiSU_TeX_Pdf else '' end end - def sitename #owners site, eg freeculture, free.for.all, gutenberg etc. + def sitename # owners site, eg freeculture, free.for.all, gutenberg etc. "\\href{#{@vz.url_home}}{#{@vz.txt_home}}" end def owner_chapter diff --git a/lib/sisu/v5/utils.rb b/lib/sisu/v5/utils.rb index c5a312d2..1f4e6f05 100644 --- a/lib/sisu/v5/utils.rb +++ b/lib/sisu/v5/utils.rb @@ -130,7 +130,10 @@ module SiSU_Utils def set(v=nil,x=nil) v=var(v,x) file,path=File.basename(@file),File.dirname(@file) - v[:c][:on] + @line + v[:c][:off] + ' ' + path + '/' "#{v[:c][:on]}#{file}#{v[:c][:off]}" + v[:m] + v[:c][:on] + @line + v[:c][:off] + ' ' \ + + path + '/' \ + + "#{v[:c][:on]}#{file}#{v[:c][:off]}" \ + + v[:m] end def mark(v=nil,x=nil) puts set(v,x) @@ -150,9 +153,9 @@ module SiSU_Utils def warn(v=nil,x=nil) if (v.is_a?(Symbol) \ and x.is_a?(String)) - x= '*WARN* ' + x + x="\n " + '*WARN* ' + x elsif v.is_a?(String) - v='*WARN* ' + v + v="\n " + '*WARN* ' + v x=nil else v,x='*WARN*',nil @@ -162,9 +165,9 @@ module SiSU_Utils def error(v=nil,x=nil) if (v.is_a?(Symbol) \ and x.is_a?(String)) - x= '*ERROR* ' + x + x="\n " + '*ERROR* ' + x elsif v.is_a?(String) - v='*ERROR* ' + v + v="\n " + '*ERROR* ' + v x=nil else v,x='*ERROR*',nil diff --git a/lib/sisu/v5/webrick.rb b/lib/sisu/v5/webrick.rb index 5a8a3223..b36c1c8e 100644 --- a/lib/sisu/v5/webrick.rb +++ b/lib/sisu/v5/webrick.rb @@ -68,7 +68,8 @@ module SiSU_Webserv require 'webrick' include WEBrick rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('time or webrick NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('time or webrick NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env diff --git a/lib/sisu/v5/xhtml_epub2.rb b/lib/sisu/v5/xhtml_epub2.rb index ae83214e..e0aa70cb 100644 --- a/lib/sisu/v5/xhtml_epub2.rb +++ b/lib/sisu/v5/xhtml_epub2.rb @@ -64,7 +64,8 @@ module SiSU_XHTML_EPUB2 begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'se_hub_particulars' # se_hub_particulars.rb include SiSU_Particulars diff --git a/lib/sisu/v5/xml_fictionbook2.rb b/lib/sisu/v5/xml_fictionbook2.rb index c7c54b30..80ebf371 100644 --- a/lib/sisu/v5/xml_fictionbook2.rb +++ b/lib/sisu/v5/xml_fictionbook2.rb @@ -243,7 +243,8 @@ module SiSU_XML_Fictionbook begin require 'base64' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('base64 NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('base64 NOT FOUND (LoadError)') end images_raw,images_base64_fb2=[],[] images_base64={} diff --git a/lib/sisu/v5/xml_odf_odt.rb b/lib/sisu/v5/xml_odf_odt.rb index 9598e189..4e540fde 100644 --- a/lib/sisu/v5/xml_odf_odt.rb +++ b/lib/sisu/v5/xml_odf_odt.rb @@ -77,7 +77,8 @@ module SiSU_XML_ODF_ODT require 'zlib' require 'find' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('zlib or find NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('zlib or find NOT FOUND (LoadError)') end def initialize(opt) @opt=opt diff --git a/lib/sisu/v6/ao.rb b/lib/sisu/v6/ao.rb index 56334b05..81dfc9bd 100644 --- a/lib/sisu/v6/ao.rb +++ b/lib/sisu/v6/ao.rb @@ -497,27 +497,33 @@ module SiSU_AO end def make_marshal_idx_sst_html_seg marshal_ao=@make.marshal.ao_idx_sst_rel_html_seg - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_idx_sst_rel marshal_ao=@make.marshal.ao_idx_sst_rel - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_idx_html marshal_ao=@make.marshal.ao_idx_html - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_idx_xhtml marshal_ao=@make.marshal.ao_idx_xhtml - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Array) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Array) end def make_marshal_map_nametags marshal_ao=@make.marshal.ao_map_nametags - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Hash) end def make_marshal_map_name_ocn_htmlseg marshal_ao=@make.marshal.ao_map_ocn_htmlseg - File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} if @data.is_a?(Hash) + File.open(marshal_ao,'w'){|f| Marshal.dump(@data,f)} \ + if @data.is_a?(Hash) end end class Make diff --git a/lib/sisu/v6/ao_doc_str.rb b/lib/sisu/v6/ao_doc_str.rb index 67670a55..6e7a103f 100644 --- a/lib/sisu/v6/ao_doc_str.rb +++ b/lib/sisu/v6/ao_doc_str.rb @@ -230,8 +230,11 @@ module SiSU_AO_DocumentStructureExtract term_nodes << term_node use,plus=rgx_idx_ocn_seg.match(term_node)[1,2] @use=use.strip - idx_hash[@use]= - { sub: [], plus: plus } unless idx_hash[@use] and defined? idx_hash[@use] + unless idx_hash[@use] \ + and defined? idx_hash[@use] + idx_hash[@use]= + { sub: [], plus: plus } + end when Array subterm_nodes=[] term_node.each do |subterm_node| @@ -240,8 +243,11 @@ module SiSU_AO_DocumentStructureExtract : (subterm_node + '+0') subterm_nodes << subterm_node sub,sub_plus=rgx_idx_ocn_seg.match(subterm_node)[1,2] - idx_hash[@use]= - { sub: [], plus: 0 } unless idx_hash[@use] and defined? idx_hash[@use] + unless idx_hash[@use] \ + and defined? idx_hash[@use] + idx_hash[@use]= + { sub: [], plus: 0 } + end idx_hash[@use][:sub] << { sub.strip => { plus: sub_plus } } end @@ -299,6 +305,18 @@ module SiSU_AO_DocumentStructureExtract next end t_o=t_o.gsub(/(?:\n\s*\n)+/m,"\n") if @@flag[:code]==:off + unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any + idx=if t_o=~/^=\{\s*(.+)\s*\}\s*$\Z/m + m=$1 + m=m.split(/[ ]*\n/).join(' '). + gsub(/\s+([|:;])\s+/,'\1'). + gsub(/\s+([+]\d+)\s+/,'\1') + t_o=t_o.gsub(/\n=\{.+?\}\s*$/m,'') + idx_array_and_hash=construct_idx_array_and_hash(m) + idx_array_and_hash[:hash] + else nil + end + end if t_o !~/^(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block)\{|^\}(?:code|poem|alt|group|block)|^(?:table\{|\{table)[ ~]/ \ and t_o !~/^```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)|^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$|^`:quote_(?:open|close)`/ \ and @@flag[:code]==:off \ @@ -308,17 +326,6 @@ module SiSU_AO_DocumentStructureExtract and @@flag[:alt]==:off \ and @@flag[:box]==:off \ and @@flag[:table]==:off - unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any - idx=if t_o=~/^=\{\s*(.+)\s*\}\s*$\Z/m; m=$1 - m=m.split(/[ ]*\n/).join(' '). - gsub(/\s+([|:;])\s+/,'\1'). - gsub(/\s+([+]\d+)\s+/,'\1') - t_o=t_o.gsub(/\n=\{.+?\}\s*$/m,'') - idx_array_and_hash=construct_idx_array_and_hash(m) - idx_array_and_hash[:hash] - else nil - end - end t_o=case t_o when /^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/ #metadata, header if t_o=~/^#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}\s*(.+)/m @@ -707,7 +714,8 @@ module SiSU_AO_DocumentStructureExtract tags: tags, num: @num_id[:table], } - t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \ + unless h.nil? tuned_file << t_o h={ is_for: :table, @@ -743,7 +751,8 @@ module SiSU_AO_DocumentStructureExtract tags: tags, num: @num_id[:table], } - t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \ + unless h.nil? tuned_file << t_o h={ is_for: :table, @@ -779,7 +788,8 @@ module SiSU_AO_DocumentStructureExtract tags: tags, num: @num_id[:table], } - t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) unless h.nil? + t_o=SiSU_AO_DocumentStructure::ObjectTable.new.table(h) \ + unless h.nil? tuned_file << t_o h={ is_for: :table, @@ -828,15 +838,22 @@ module SiSU_AO_DocumentStructureExtract t_o=nil end end - if @@flag[:code]==:curls or @@flag[:code]==:tics - if (@@flag[:code]==:curls and t_o =~/^\}code/) \ - or (@@flag[:code]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + if @@flag[:code]==:curls \ + or @@flag[:code]==:tics + if (@@flag[:code]==:curls \ + && t_o =~/^\}code/) \ + or (@@flag[:code]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/m) @@flag[:code]=:off - @tuned_code[-1].gsub!(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*\Z/m,'') + if @tuned_code[-1] + @tuned_code[-1]. + gsub!(/\s*(?:#{Mx[:br_line]}|#{Mx[:br_nl]})\s*\Z/m,'') + end obj=@tuned_code.join("\n") tags=[] h={ obj: obj, + idx: idx, syntax: @@flag[:lngsyn], tags: tags, num: @num_id[:code_block], @@ -854,7 +871,8 @@ module SiSU_AO_DocumentStructureExtract } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) end - if (@@flag[:code]==:curls or @@flag[:code]==:tics) \ + if (@@flag[:code]==:curls \ + || @@flag[:code]==:tics) \ and t_o.is_a?(String) sub_array=t_o.dup + "#{Mx[:br_nl]}" @line_mode=[] @@ -863,28 +881,40 @@ module SiSU_AO_DocumentStructureExtract @tuned_code << t_o t_o=nil end - elsif (@@flag[:poem]==:curls or @@flag[:poem]==:tics) \ - or (@@flag[:box]==:curls or @@flag[:box]==:tics) \ - or (@@flag[:group]==:curls or @@flag[:group]==:tics) \ - or (@@flag[:block]==:curls or @@flag[:block]==:tics) \ - or (@@flag[:alt]==:curls or @@flag[:alt]==:tics) \ - or (@@flag[:quote]==:open and t_o =~/`:quote_close`/m) #not - if (@@flag[:poem]==:curls and t_o =~/^\}poem/) \ - or (@@flag[:poem]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:poem]==:curls \ + || @@flag[:poem]==:tics) \ + or (@@flag[:box]==:curls \ + || @@flag[:box]==:tics) \ + or (@@flag[:group]==:curls \ + || @@flag[:group]==:tics) \ + or (@@flag[:block]==:curls \ + || @@flag[:block]==:tics) \ + or (@@flag[:alt]==:curls \ + || @@flag[:alt]==:tics) \ + or (@@flag[:quote]==:open \ + && t_o =~/`:quote_close`/m) #not + if (@@flag[:poem]==:curls \ + && t_o =~/^\}poem$/m) \ + or (@@flag[:poem]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:poem]=:off h={ is_for: :poem, obj: '', + idx: idx, sym: :poem_close, num: @num_id[:poem], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:box]==:curls and t_o =~/^\}box/) \ - or (@@flag[:box]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:box]==:curls \ + && t_o =~/^\}box/) \ + or (@@flag[:box]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:box]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:box], } @@ -894,16 +924,20 @@ module SiSU_AO_DocumentStructureExtract h={ is_for: :box, obj: '', + idx: idx, sym: :box_close, num: @num_id[:box], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:group]==:curls and t_o =~/^\}group/) \ - or (@@flag[:group]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:group]==:curls \ + && t_o =~/^\}group/) \ + or (@@flag[:group]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:group]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:group], } @@ -917,12 +951,15 @@ module SiSU_AO_DocumentStructureExtract num: @num_id[:group], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:block]==:curls and t_o =~/^\}block/) \ - or (@@flag[:block]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:block]==:curls \ + && t_o =~/^\}block/) \ + or (@@flag[:block]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:block]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:block], } @@ -936,12 +973,15 @@ module SiSU_AO_DocumentStructureExtract num: @num_id[:block], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif (@@flag[:alt]==:curls and t_o =~/^\}alt/) \ - or (@@flag[:alt]==:tics and t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) + elsif (@@flag[:alt]==:curls \ + && t_o =~/^\}alt/) \ + or (@@flag[:alt]==:tics \ + && t_o =~/^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/) @@flag[:alt]=:off obj,tags=extract_tags(@tuned_block.join("\n")) h={ obj: obj, + idx: idx, tags: tags, num: @num_id[:alt], } @@ -955,10 +995,12 @@ module SiSU_AO_DocumentStructureExtract num: @num_id[:alt], } t_o=SiSU_AO_DocumentStructure::ObjectLayout.new.open_close(h) - elsif @@flag[:quote]==:open and t_o =~/`:quote_close`/m + elsif @@flag[:quote]==:open \ + and t_o =~/`:quote_close`/m @@flag[:quote]=:off h={ is_for: :quote, + idx: idx, obj: '', sym: :quote_close, num: @num_id[:quote], @@ -977,9 +1019,12 @@ module SiSU_AO_DocumentStructureExtract } SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h) end - if (@@flag[:poem]==:curls or @@flag[:poem]==:tics \ - or @@flag[:group]==:curls or @@flag[:group]==:tics \ - or @@flag[:alt]==:curls or @@flag[:alt]==:tics) \ + if (@@flag[:poem]==:curls \ + || @@flag[:poem]==:tics) \ + or (@@flag[:group]==:curls \ + || @@flag[:group]==:tics) \ + or (@@flag[:alt]==:curls \ + || @@flag[:alt]==:tics) \ and t_o =~/\S/ \ and t_o !~/^(?:\}(?:verse|code|box|alt|group|block)|(?:verse|code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|alt|group|block)\{)/ \ and t_o !~/^```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block)|^```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*$/ # fix logic diff --git a/lib/sisu/v6/ao_expand_insertions.rb b/lib/sisu/v6/ao_expand_insertions.rb index 45a3a4ab..8eb0e5c4 100644 --- a/lib/sisu/v6/ao_expand_insertions.rb +++ b/lib/sisu/v6/ao_expand_insertions.rb @@ -142,7 +142,7 @@ module SiSU_AO_Insertions } end def path_and_file(fn,pth) - "#{@base_path}/#{pth}/#{fn}" + @base_path + '/' + pth + '/' + fn end def manifest fn=@md.file.base_filename.manifest(fnh) @@ -150,7 +150,7 @@ module SiSU_AO_Insertions end def html_toc fn=@md.file.base_filename.html_segtoc(fnh) - "#{@base_path}/html/#{@linked_doc}/#{fn}" + @base_path + '/html/' + @linked_doc + '/' + fn end def html_doc fn=@md.file.base_filename.html_scroll(fnh) @@ -158,7 +158,7 @@ module SiSU_AO_Insertions end def html_concordance fn=@md.file.base_filename.html_concordance - "#{@base_path}/html/#{@linked_doc}/#{fn}" + @base_path + '/html/' + @linked_doc + '/' + fn end def epub fn=@md.file.base_filename.epub(fnh) @@ -197,16 +197,17 @@ module SiSU_AO_Insertions path_and_file(fn,'digest') end def source - "#{@base_path}/src/#{@src}" + @base_path + '/src/' + @src end def sisupod - "#{@base_path}/src/#{@src}.zip" + @base_path + '/src/' + @src + '.zip' end self end def by_filetype(linked_doc,lng,src=nil) @linked_doc,@lng,@src=linked_doc,lng,src - @lc=SiSU_Env::FilenameLanguageCodeInsert.new(@md.opt,lng).language_code_insert + @lc=SiSU_Env::FilenameLanguageCodeInsert.new(@md.opt,lng). + language_code_insert @base_path="#{@md.file.output_path.base.url}" def fnh { @@ -215,7 +216,7 @@ module SiSU_AO_Insertions } end def path_and_file(fn,pth) - "#{@base_path}/#{pth}/#{fn}" + @base_path + '/' + pth + '/' + fn end def manifest fn=@md.file.base_filename.manifest(fnh) @@ -270,10 +271,10 @@ module SiSU_AO_Insertions path_and_file(fn,'digest') end def source - "#{@base_path}/src/#{@src}" + @base_path + '/src/' + @src end def sisupod - "#{@base_path}/src/#{@src}.zip" + @base_path + '/src/' + @src + '.zip' end self end @@ -289,8 +290,8 @@ module SiSU_AO_Insertions end def path_and_file(fn,pth=nil) (pth.nil?) \ - ? "#{@base_path}/#{fn}" - : "#{@base_path}/#{pth}/#{fn}" + ? @base_path + '/' + fn + : @base_path + '/' + pth + '/' + fn end def manifest fn=@md.file.base_filename.manifest(fnh) @@ -345,28 +346,50 @@ module SiSU_AO_Insertions path_and_file(fn) end def source - "#{@base_path}/#{@src}" + @base_path + '/' + @src end def sisupod - "#{@base_path}/#{@src}.zip" + @base_path + '/' + @src + '.zip' end self end def expand_insertions? data=@data tuned_file,tuned_file_tmp=[],[] - codeblock_=false + codeblock_={ + status: :false, + type: :na, + } data.each do |para| - codeblock_=if para =~/^(?:code(?:\.[a-z][0-9a-z_]+)?\{|```[ ]+code(?:\.[a-z][0-9a-z_]+)?)/ - true - elsif para =~/^(?:\}code|```(?:\s|$))/m - false + codeblock_=if para =~/^code(?:\.[a-z][0-9a-z_]+)?\{/ \ + and codeblock_[:status]==:false + { + status: :true, + type: :curl, + } + elsif para =~/^```[ ]+code(?:\.[a-z][0-9a-z_]+)?/ \ + and codeblock_[:status]==:false + { + status: :true, + type: :tics, + } + elsif codeblock_[:type]==:curl \ + and para =~/^\}code/m + { + status: :false, + type: :na, + } + elsif codeblock_[:type]==:tics \ + and para =~/^```(?:\s|$)/m + { + status: :false, + type: :na, + } else codeblock_ end if para !~/^%+\s/ \ - and not codeblock_ \ + and codeblock_[:status] != :true \ and para =~/\{(?:~\^\s+)?(.+?)\s\[(?:\d(?:[sS]*))\]\}(?:\.\.\/\S+?\/|\S+?\.ss[tm]\b)/ - manifest=nil @u=SiSU_Env::InfoEnv.new.url m_cmd='' if defined? @u.remote diff --git a/lib/sisu/v6/ao_idx.rb b/lib/sisu/v6/ao_idx.rb index 7a4b1f03..048a4457 100644 --- a/lib/sisu/v6/ao_idx.rb +++ b/lib/sisu/v6/ao_idx.rb @@ -79,7 +79,10 @@ module SiSU_AO_BookIndex html_idx,xhtml_idx= extract_book_index(data) data= - clean_and_insert_index(data,sisu_markup_idx_rel_html_seg) + clean_and_insert_index( + data, + sisu_markup_idx_rel_html_seg + ) [ data, sisu_markup_idx_rel, @@ -99,7 +102,11 @@ module SiSU_AO_BookIndex end if defined? dob.idx \ and dob.idx.is_a?(Hash) - idx_array << {idx: dob.idx, ocn: dob.ocn, seg: @seg } + idx_array << { + idx: dob.idx, + ocn: dob.ocn, + seg: @seg + } end tuned_file << dob if dob end diff --git a/lib/sisu/v6/ao_images.rb b/lib/sisu/v6/ao_images.rb index 93ed4d84..e934ec1a 100644 --- a/lib/sisu/v6/ao_images.rb +++ b/lib/sisu/v6/ao_images.rb @@ -134,6 +134,17 @@ module SiSU_AO_Images end img_col,img_row=/(\d+)x(\d+)/m.match(imgsys)[1,2] img_col,img_row=img_col.to_i,img_row.to_i + else + errmsg='imagemagick or graphicksmagick are required to process images' + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding (as requested) without image processing") + break + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end row=((img && defined? img.rows) ? img.rows : img_row) diff --git a/lib/sisu/v6/ao_misc_arrange.rb b/lib/sisu/v6/ao_misc_arrange.rb index 8adebfd5..f1aa1e02 100644 --- a/lib/sisu/v6/ao_misc_arrange.rb +++ b/lib/sisu/v6/ao_misc_arrange.rb @@ -98,11 +98,11 @@ module SiSU_AO_MiscArrangeText else para << block_open end - elsif para =~/\A.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m \ + elsif para =~/\A.+?\n```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(\s*=\{.+?\})?\s*\Z/m \ and @flag==:open @flag=:close text,block_close= - /\A(.+?)\n(```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1,2] + /\A(.+?)\n(```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(?:\s+=\{.+?\})?)\s*\Z/m.match(para)[1,2] para=[] if not text.to_s.empty? para << text.to_s << block_close diff --git a/lib/sisu/v6/db_create.rb b/lib/sisu/v6/db_create.rb index 55eab144..a9083b61 100644 --- a/lib/sisu/v6/db_create.rb +++ b/lib/sisu/v6/db_create.rb @@ -117,10 +117,38 @@ module SiSU_DbCreate end end def conn_exec_pg(sql) - @conn.exec_params(sql) + begin + @conn.exec_params(sql) + rescue + if @conn.is_a?(NilClass) + errmsg="No pg connection (check pg dependencies)" + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pg output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end + end + end end def conn_exec_sqlite(sql) + begin @conn.execute(sql) + rescue + if @conn.is_a?(NilClass) + errmsg="No sqlite3 connection (check sqlite3 dependencies)" + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without sqlite output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end + end + end end def metadata_and_text if (@opt.act[:verbose_plus][:set]==:on \ diff --git a/lib/sisu/v6/db_indexes.rb b/lib/sisu/v6/db_indexes.rb index 876fd856..12c427dd 100644 --- a/lib/sisu/v6/db_indexes.rb +++ b/lib/sisu/v6/db_indexes.rb @@ -82,9 +82,23 @@ module SiSU_DbIndex end end def conn_execute_array(sql_arr) - @conn.transaction do |conn| - sql_arr.each do |sql| - conn_execute_sql(conn,sql) + begin + @conn.transaction do |conn| + sql_arr.each do |sql| + conn_execute_sql(conn,sql) + end + end + rescue + if @conn.is_a?(NilClass) + errmsg="No sqlite3 connection (check sqlite3 dependencies)" + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without sqlite output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end end diff --git a/lib/sisu/v6/dbi.rb b/lib/sisu/v6/dbi.rb index 3ee6bf0a..47173d4f 100644 --- a/lib/sisu/v6/dbi.rb +++ b/lib/sisu/v6/dbi.rb @@ -102,7 +102,12 @@ module SiSU_DBI end def read_psql begin - require 'pg' + begin + require 'pg' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pg NOT FOUND (LoadError)') + end @conn=@db.psql.conn_pg rescue if @opt.act[:psql_create][:set]==:on @@ -119,10 +124,23 @@ manually create the database: "#{cX.green}#{@db.db}#{cX.off}" if it does not yet def read_sqlite begin begin - require 'sqlite3' + begin + require 'sqlite3' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('sqlite3 NOT FOUND (LoadError)') + end @conn=@db.sqlite.conn_sqlite3 rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('sqlite3 NOT FOUND (LoadError)') + errmsg='sqlite3 NOT FOUND (LoadError)' + if @opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error(errmsg + ', ' + 'attempt to proceed without sqlite output (as requested)') + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error(errmsg + ', ' + 'STOPPING') + exit + end end end end diff --git a/lib/sisu/v6/dbi_discrete.rb b/lib/sisu/v6/dbi_discrete.rb index 99c8a7b3..5149614a 100644 --- a/lib/sisu/v6/dbi_discrete.rb +++ b/lib/sisu/v6/dbi_discrete.rb @@ -73,7 +73,8 @@ module SiSU_DBI_Discrete #% database building require 'fileutils' include FileUtils::Verbose rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('fileutils NOT FOUND (LoadError)') end class SQL def initialize(opt) diff --git a/lib/sisu/v6/defaults.rb b/lib/sisu/v6/defaults.rb index c725b11d..de8ae429 100644 --- a/lib/sisu/v6/defaults.rb +++ b/lib/sisu/v6/defaults.rb @@ -65,7 +65,8 @@ module SiSU_Viz begin require 'uri' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('uri NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('uri NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env diff --git a/lib/sisu/v6/dp.rb b/lib/sisu/v6/dp.rb index 50317108..111896d7 100644 --- a/lib/sisu/v6/dp.rb +++ b/lib/sisu/v6/dp.rb @@ -583,6 +583,34 @@ module SiSU_Param def sep(str) ' \\\\ ' end + def copyright_and_license + s=if @h['all'] then @h['all'] + else + s='' + if defined? copyright.text \ + and copyright.text \ + and not copyright.text.empty? + v=sep(copyright.text) + s +=copyright.text + v + end + if defined? copyright.license \ + and copyright.license \ + and not copyright.license.empty? + s +=copyright.license + end + if s.empty? + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + 'WARNING Document Rights information missing; provide @rights: :copyright:' + ).warn unless @opt.act[:quiet][:set]==:on + else + l,n=Db[:col_info_note],'rights.all' + validate_length(s,l,n) + end + s=s.gsub(/ [\\]+\s+$/,'') + end + s + end def all s=if @h['all'] then @h['all'] else diff --git a/lib/sisu/v6/html.rb b/lib/sisu/v6/html.rb index afd69118..bd1c4d6b 100644 --- a/lib/sisu/v6/html.rb +++ b/lib/sisu/v6/html.rb @@ -64,7 +64,8 @@ module SiSU_HTML begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'se_hub_particulars' # se_hub_particulars.rb include SiSU_Particulars @@ -146,7 +147,14 @@ module SiSU_HTML data=tuned_file_array if @opt.act[:html_scroll][:set]==:on scr=SiSU_HTML::Source::Scroll.new(@md,data,scr_endnotes).songsheet - scroll=SiSU_HTML::Source::ScrollOutput.new(scr_toc,scr[:body],scr[:metadata],scr[:owner_details],scr[:tails],@md).publish + scroll=SiSU_HTML::Source::ScrollOutput.new( + scr_toc, + scr[:body], + scr[:metadata], + scr[:owner_details], + scr[:tails], + @md + ).publish SiSU_HTML::Source::Output.new(scroll,@md).scroll end rescue @@ -206,7 +214,11 @@ module SiSU_HTML ? 'external' : '_top' s_lnk_url,s_lnk_lnk=l[:url],l[:say] - txt_obj={ lnk_url: s_lnk_url, lnk_txt: s_lnk_lnk, target: target } + txt_obj={ + lnk_url: s_lnk_url, + lnk_txt: s_lnk_lnk, + target: target, + } lev_dob_ocn=SiSU_HTML_Format::FormatToc.new(@md,txt_obj) @links_guide_toc << lev_dob_ocn.links_guide if s_lnk_lnk end @@ -259,7 +271,8 @@ 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 + @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 diff --git a/lib/sisu/v6/html_segments.rb b/lib/sisu/v6/html_segments.rb index b410d0b0..3240d6a4 100644 --- a/lib/sisu/v6/html_segments.rb +++ b/lib/sisu/v6/html_segments.rb @@ -243,7 +243,9 @@ module SiSU_HTML_Seg #my_make_source_file=SiSU_Env::CreateFile.new(@md.fns) idx_html=SiSU_Particulars::CombinedSingleton. instance.get_idx_html(@md.opt).html_idx - idx_html.each {|x| @@seg[:idx] << x } + idx_html.each do |x| + @@seg[:idx] << x + end @@seg[:heading_idx]='' end data.each do |dob| diff --git a/lib/sisu/v6/hub_options.rb b/lib/sisu/v6/hub_options.rb index cedcdcfe..5625963b 100644 --- a/lib/sisu/v6/hub_options.rb +++ b/lib/sisu/v6/hub_options.rb @@ -65,7 +65,8 @@ module SiSU_Commandline begin require 'pathname' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pathname NOT FOUND (LoadError)') end require_relative 'se' # se.rb require_relative 'dp_make' # dp_make.rb @@ -780,6 +781,12 @@ module SiSU_Commandline @act=@@act else act={} + act[:no_stop]=if select_arr.inspect \ + =~/"--no-stop"|"--errors-as-warnings"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end act[:license]=(select_arr.inspect \ =~/"--license/) \ ? { bool: true, set: :on } diff --git a/lib/sisu/v6/remote.rb b/lib/sisu/v6/remote.rb index 3a8b58d0..895c1737 100644 --- a/lib/sisu/v6/remote.rb +++ b/lib/sisu/v6/remote.rb @@ -152,7 +152,8 @@ module SiSU_Remote require 'open-uri' require 'pp' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('open-uri or pp NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('open-uri or pp NOT FOUND (LoadError)') end require_relative 'ao_composite' # ao_composite.rb @rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/ @@ -201,7 +202,8 @@ module SiSU_Remote begin require 'net/http' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('net/http NOT FOUND (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) diff --git a/lib/sisu/v6/rexml.rb b/lib/sisu/v6/rexml.rb index 7960a3ec..0d87defc 100644 --- a/lib/sisu/v6/rexml.rb +++ b/lib/sisu/v6/rexml.rb @@ -63,9 +63,11 @@ module SiSU_Rexml # load XML file for REXML parsing begin - require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir'] + 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)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('rexml/document NOT FOUND (LoadError)') end require_relative 'dp' # dp.rb include SiSU_Param @@ -74,9 +76,11 @@ module SiSU_Rexml include SiSU_Viz class Rexml begin - require 'rexml/document' if FileTest.directory?("#{Config::CONFIG['rubylibdir']}/rexml") #Config::CONFIG['sitedir'] + 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)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('rexml/document NOT FOUND (LoadError)') end def initialize(md,fno) @md,@fno=md,fno diff --git a/lib/sisu/v6/se_db.rb b/lib/sisu/v6/se_db.rb index ac226675..abf80b32 100644 --- a/lib/sisu/v6/se_db.rb +++ b/lib/sisu/v6/se_db.rb @@ -140,7 +140,12 @@ module SiSU_Info_Db DBI.connect(psql.dbi,psql.user,psql.db) end def conn_pg - require 'pg' + begin + require 'pg' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pg NOT FOUND (LoadError)') + end PG::Connection.new(dbname: psql.db, port: psql.port) end self diff --git a/lib/sisu/v6/se_hub_particulars.rb b/lib/sisu/v6/se_hub_particulars.rb index 99bdf9f6..320bb769 100644 --- a/lib/sisu/v6/se_hub_particulars.rb +++ b/lib/sisu/v6/se_hub_particulars.rb @@ -65,7 +65,8 @@ module SiSU_Particulars begin require 'singleton' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('singleton NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('singleton NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env diff --git a/lib/sisu/v6/se_info_env.rb b/lib/sisu/v6/se_info_env.rb index 0ce6f63a..abd46542 100644 --- a/lib/sisu/v6/se_info_env.rb +++ b/lib/sisu/v6/se_info_env.rb @@ -77,7 +77,8 @@ module SiSU_Info_Env require 'fileutils' include FileUtils rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname or fileutils NOT FOUND (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,:base_markup_dir_stub,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir @@image_flag,@@local_image=true,true #warning on @@image_flag diff --git a/lib/sisu/v6/se_info_system.rb b/lib/sisu/v6/se_info_system.rb index 6f290a4e..cc85f28d 100644 --- a/lib/sisu/v6/se_info_system.rb +++ b/lib/sisu/v6/se_info_system.rb @@ -67,7 +67,8 @@ module SiSU_Info_Sys_Gen begin require 'rbconfig' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig NOT FOUND (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'] diff --git a/lib/sisu/v6/src_kdissert_share.rb b/lib/sisu/v6/src_kdissert_share.rb index ebe761f0..7cf421aa 100644 --- a/lib/sisu/v6/src_kdissert_share.rb +++ b/lib/sisu/v6/src_kdissert_share.rb @@ -68,7 +68,8 @@ module SiSU_KdiSource require 'fileutils' include FileUtils rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('fileutils NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('fileutils NOT FOUND (LoadError)') end def initialize(opt) @opt=opt diff --git a/lib/sisu/v6/sst_from_xml.rb b/lib/sisu/v6/sst_from_xml.rb index 56083ff9..62a293fd 100644 --- a/lib/sisu/v6/sst_from_xml.rb +++ b/lib/sisu/v6/sst_from_xml.rb @@ -68,7 +68,8 @@ module SiSU_sstFromXML require 'rexml/document' include REXML rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rexml/document NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('rexml/document NOT FOUND (LoadError)') end def initialize(opt) @opt=opt diff --git a/lib/sisu/v6/texpdf.rb b/lib/sisu/v6/texpdf.rb index 9861a5b5..10bfa961 100644 --- a/lib/sisu/v6/texpdf.rb +++ b/lib/sisu/v6/texpdf.rb @@ -64,7 +64,8 @@ module SiSU_TeX begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'defaults' # defaults.rb include SiSU_Viz @@ -85,7 +86,8 @@ module SiSU_TeX begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env @@ -267,8 +269,16 @@ module SiSU_TeX FileUtils::cp(portrait_pdf,"#{@md.file.output_path.pdf.dir}/#{pdf_p}") FileUtils::rm(portrait_pdf) else - STDERR.puts "#{cX.fuchsia}pdf file not generated#{cX.off} <#{cX.blue}#{portrait_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')}#{cX.off}> (check texlive dependencies)" STDERR.puts "#{__FILE__}:#{__LINE__} NOT FOUND: #{portrait_pdf}" if @md.opt.act[:maintenance][:set]==:on + errmsg="pdf file not generated #{portrait_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')} (check texlive dependencies)" + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pdf output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end if @md.opt.act[:pdf_l][:set]==:on @@ -276,8 +286,16 @@ module SiSU_TeX FileUtils::cp(landscape_pdf,"#{@md.file.output_path.pdf.dir}/#{pdf_l}") FileUtils::rm(landscape_pdf) else - STDERR.puts "#{cX.fuchsia}pdf file not generated#{cX.off} <#{cX.blue}#{landscape_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')}#{cX.off}> (check texlive dependencies)" STDERR.puts "#{__FILE__}:#{__LINE__} NOT FOUND: #{landscape_pdf}" if @md.opt.act[:maintenance][:set]==:on + errmsg="pdf file not generated #{landscape_pdf.gsub(/.+?([^\/]+?\.pdf)$/,'\1')} (check texlive dependencies)" + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pdf output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end if (@md.opt.act[:verbose][:set]==:on \ @@ -312,7 +330,15 @@ module SiSU_TeX and File.size(texfile) > 0 #@tex_f_no+=1 else - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error("\tzero file size #{@env.processing_path.tex}/#{texfile}") + errmsg="zero file size #{@env.processing_path.tex}/#{texfile}" + if @md.opt.act[:no_stop][:set]==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, proceeding without pdf output (as requested)") + else + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error("#{errmsg}, STOPPING") + exit + end end end end @@ -423,12 +449,10 @@ module SiSU_TeX if defined? @md.rights.all \ and not @md.rights.all.empty? rght=@md.rights #.author.dup #dup is necessary, else contents of :rights changed - sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,rght.copyright.all) - copymark=@md.author_copymark \ - ? '{\begin{small}\copyright\end{small}} ' - : '' - copymark='Copyright {\begin{small}\copyright\end{small}} ' - copyright=sp_char.special_characters_safe.gsub(/^\s*Copyright \(C\)/, copymark) + sp_char=SiSU_TeX_Pdf::SpecialCharacters.new(@md,rght.copyright.copyright_and_license) + copymark='Copyright {\begin{small}{\copyright\end{small}} ' + #copymark='Copyright {\begin{small}^{\copyright\end{small}} ' + copyright=sp_char.special_characters_safe.gsub(/\s*Copyright \(C\)/, copymark) @@rights||="\n #{Tex[:backslash]*2}[3]\\ \\linebreak #{copyright}" end if defined? @md.notes.prefix_b \ diff --git a/lib/sisu/v6/texpdf_format.rb b/lib/sisu/v6/texpdf_format.rb index 95764b60..12b88fac 100644 --- a/lib/sisu/v6/texpdf_format.rb +++ b/lib/sisu/v6/texpdf_format.rb @@ -184,7 +184,7 @@ module SiSU_TeX_Pdf when /legal/i then @tx.legal.portrait.w #U.S. alternative when /book|b5/i then @tx.b5.portrait.w #book default - larger when /a5/i then @tx.a5.portrait.w - else @tx.a4.portrait.w #default currently A4 + else @tx.a4.portrait.w #default currently A4 end textwidth=tw.to_i - 20 colW=[] @@ -1445,7 +1445,7 @@ module SiSU_TeX_Pdf str=str.gsub(/\\textbackslash (copyright|clearpage|newpage)/,"\\\\\\1") #kludge bad solution, find out where tail is sent through specChar ! str end - def special_characters #special characters - some substitutions are sequence sensitive, rearrange with care. + def special_characters # special characters - some substitutions are sequence sensitive, rearrange with care str,is=@txt,@is str=xetex_special_characters_1(str,is) unless str.nil? str=special_characters_unsafe_1(str) unless str.nil? #xetex_special_characters_unsafe_1(@txt) @@ -1464,10 +1464,10 @@ module SiSU_TeX_Pdf str=str.gsub(/([0-9a-f]{8})/i,'\1\-') @txt=str end - def special_characters_safe #special characters - some substitutions are sequence sensitive, rearrange with care. + def special_characters_safe # special characters - some substitutions are sequence sensitive, rearrange with care str,is=@txt,@is str=xetex_special_characters_1(str,is) unless str.nil? - str=xetex_special_characters_2(str,is) unless str.nil? # remove this to start with, causes issues + str=xetex_special_characters_2(str,is) unless str.nil? # remove this to start with, causes issues str=special_characters_safe_close(str) unless str.nil? @txt=str end @@ -1478,7 +1478,7 @@ module SiSU_TeX_Pdf str=special_characters_safe_close(str) unless str.nil? @txt=str end - def characters_code_listings #special characters - some substitutions are sequence sensitive, rearrange with care. + def characters_code_listings # special characters - some substitutions are sequence sensitive, rearrange with care str,is=@txt,@is str=xetex_code_listings(str,is) unless str.nil? @txt=str @@ -1541,7 +1541,7 @@ module SiSU_TeX_Pdf else '' end end - def sitename #owners site, eg freeculture, free.for.all, gutenberg etc. + def sitename # owners site, eg freeculture, free.for.all, gutenberg etc. "\\href{#{@vz.url_home}}{#{@vz.txt_home}}" end def owner_chapter diff --git a/lib/sisu/v6/utils.rb b/lib/sisu/v6/utils.rb index 7e915429..af464572 100644 --- a/lib/sisu/v6/utils.rb +++ b/lib/sisu/v6/utils.rb @@ -130,7 +130,10 @@ module SiSU_Utils def set(v=nil,x=nil) v=var(v,x) file,path=File.basename(@file),File.dirname(@file) - v[:c][:on] + @line + v[:c][:off] + ' ' + path + '/' "#{v[:c][:on]}#{file}#{v[:c][:off]}" + v[:m] + v[:c][:on] + @line + v[:c][:off] + ' ' \ + + path + '/' \ + + "#{v[:c][:on]}#{file}#{v[:c][:off]}" \ + + v[:m] end def mark(v=nil,x=nil) puts set(v,x) @@ -150,9 +153,9 @@ module SiSU_Utils def warn(v=nil,x=nil) if (v.is_a?(Symbol) \ and x.is_a?(String)) - x= '*WARN* ' + x + x="\n " + '*WARN* ' + x elsif v.is_a?(String) - v='*WARN* ' + v + v="\n " + '*WARN* ' + v x=nil else v,x='*WARN*',nil @@ -162,9 +165,9 @@ module SiSU_Utils def error(v=nil,x=nil) if (v.is_a?(Symbol) \ and x.is_a?(String)) - x= '*ERROR* ' + x + x="\n " + '*ERROR* ' + x elsif v.is_a?(String) - v='*ERROR* ' + v + v="\n " + '*ERROR* ' + v x=nil else v,x='*ERROR*',nil diff --git a/lib/sisu/v6/webrick.rb b/lib/sisu/v6/webrick.rb index feb28c7d..000eab57 100644 --- a/lib/sisu/v6/webrick.rb +++ b/lib/sisu/v6/webrick.rb @@ -68,7 +68,8 @@ module SiSU_Webserv require 'webrick' include WEBrick rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('time or webrick NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('time or webrick NOT FOUND (LoadError)') end require_relative 'se' # se.rb include SiSU_Env diff --git a/lib/sisu/v6/xhtml_epub2.rb b/lib/sisu/v6/xhtml_epub2.rb index 9ab7c6ec..26399ef7 100644 --- a/lib/sisu/v6/xhtml_epub2.rb +++ b/lib/sisu/v6/xhtml_epub2.rb @@ -64,7 +64,8 @@ module SiSU_XHTML_EPUB2 begin require 'pstore' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pstore NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pstore NOT FOUND (LoadError)') end require_relative 'se_hub_particulars' # se_hub_particulars.rb include SiSU_Particulars diff --git a/lib/sisu/v6/xml_fictionbook2.rb b/lib/sisu/v6/xml_fictionbook2.rb index 36b42f8f..3e43dbec 100644 --- a/lib/sisu/v6/xml_fictionbook2.rb +++ b/lib/sisu/v6/xml_fictionbook2.rb @@ -243,7 +243,8 @@ module SiSU_XML_Fictionbook begin require 'base64' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('base64 NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('base64 NOT FOUND (LoadError)') end images_raw,images_base64_fb2=[],[] images_base64={} diff --git a/lib/sisu/v6/xml_odf_odt.rb b/lib/sisu/v6/xml_odf_odt.rb index c5e06109..967812db 100644 --- a/lib/sisu/v6/xml_odf_odt.rb +++ b/lib/sisu/v6/xml_odf_odt.rb @@ -77,7 +77,8 @@ module SiSU_XML_ODF_ODT require 'zlib' require 'find' rescue LoadError - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('zlib or find NOT FOUND (LoadError)') + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('zlib or find NOT FOUND (LoadError)') end def initialize(opt) @opt=opt |