class SiSU_Param::Parameters::Instructions
Attributes
abstract[RW]
ad_alt[RW]
ad_began[RW]
ad_home[RW]
ad_png[RW]
ad_url[RW]
audio[RW]
base_program[RW]
bold_match_list[RW]
book_idx[RW]
classify[RW]
cls_dewey[RW]
cls_isbn[RW]
cls_loc[RW]
cls_pg[RW]
comments[RW]
concord_make[RW]
contact[RW]
contributor[RW]
cover_image[RW]
coverage[RW]
creator[RW]
current_publisher[RW]
daisy[RW]
date[RW]
date_added_to_site[RW]
date_available[RW]
date_available_scheme[RW]
date_created[RW]
date_created_scheme[RW]
date_issued[RW]
date_issued_scheme[RW]
date_modified[RW]
date_modified_scheme[RW]
date_scheme[RW]
date_translated[RW]
date_valid[RW]
date_valid_scheme[RW]
description[RW]
dgst[RW]
digitized_by[RW]
dir_lout[RW]
dir_out[RW]
dir_tex[RW]
doc_css[RW]
ec[RW]
email[RW]
emphasis_set_to[RW]
en[RW]
env[RW]
file[RW]
file_encoding[RW]
file_type[RW]
filesize[RW]
firstseg[RW]
flag_auto_biblio[RW]
flag_auto_endnotes[RW]
flag_biblio[RW]
flag_endnotes[RW]
flag_glossary[RW]
flag_promo[RW]
flag_separate_endnotes[RW]
flag_separate_endnotes_make[RW]
flag_tables[RW]
flv[RW]
fn[RW]
fnb[RW]
fnl[RW]
fnn[RW]
fno[RW]
fns[RW]
fnstex[RW]
fnt[RW]
fnz[RW]
format[RW]
full_title[RW]
generated[RW]
heading_seg_first[RW]
heading_seg_first_flag[RW]
home[RW]
hostname[RW]
html_title[RW]
i18n[RW]
icon[RW]
identifier[RW]
illustrator[RW]
image[RW]
information[RW]
italics_match_list[RW]
keywords[RW]
lang[RW]
lang_code_insert[RW]
language[RW]
language_original[RW]
links[RW]
lnk[RW]
locale[RW]
lv0[RW]
lv1[RW]
lv2[RW]
lv3[RW]
lv4[RW]
lv5[RW]
lv6[RW]
lvs[RW]
make[RW]
man_section[RW]
markup[RW]
markup_instruction[RW]
notes[RW]
num_top[RW]
ocn[RW]
opt[RW]
original[RW]
pagebreak[RW]
pageline[RW]
pagenew[RW]
papersize[RW]
papersize_array[RW]
path[RW]
pdf[RW]
prefix_a[RW]
prefix_b[RW]
prepared_by[RW]
programs[RW]
project_details[RW]
promo[RW]
publisher[RW]
pwd[RW]
relation[RW]
rights[RW]
ruby_version[RW]
sc_date[RW]
sc_filename[RW]
sc_info[RW]
sc_number[RW]
sc_time[RW]
seg_autoname_safe[RW]
seg_names[RW]
sem_tag[RW]
set_header_title[RW]
set_heading_seg[RW]
set_heading_top[RW]
sfx_src[RW]
sisu[RW]
source[RW]
stmp[RW]
stmpd[RW]
subject[RW]
substitution_match_list[RW]
subtitle[RW]
subtitle_tex[RW]
suffix[RW]
tag_array[RW]
title[RW]
toc[RW]
toc_lev_limit[RW]
topic_register[RW]
topic_register_array[RW]
translator[RW]
txt_path[RW]
type[RW]
user[RW]
vocabulary[RW]
wc_bytes[RW]
wc_lines[RW]
wc_words[RW]
writing_focus[RW]
yaml[RW]
yamladdr[RW]
Public Class Methods
new(fns_array,opt)
click to toggle source
# File lib/sisu/dp.rb, line 902 def initialize(fns_array,opt) @env=@path,@file=@fn=@fns=@fno=@fnb=@fnn=@fnt=@fnl=@flv=@fnz=@fnstex=@ocn=@sfx_src=@pdf=@file_type=@dir_out=@dir_tex=@dir_lout=@txt_path=@make=@flag_biblio=@flag_auto_biblio=@flag_endnotes=@flag_auto_endnotes=@flag_glossary=@flag_separate_endnotes=@flag_separate_endnotes_make=@sisu=@project_details=@ruby_version=@title=@subtitle=@full_title=@html_title=@subtitle_tex=@creator=@classify=@author_home=@author=@email=@author_title=@author_nationality=@translator=@illustrator=@prepared_by=@digitized_by=@subject=@description=@publisher=@current_publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@date_translated=@date_added_to_site=@date_scheme=@date_created_scheme=@date_issued_scheme=@date_available_scheme=@date_valid_scheme=@date_modified_scheme=@type=@format=@identifier=@source=@language=@language_original=@relation=@coverage=@rights=@keywords=@comments=@abstract=@cls_loc=@cls_dewey=@cls_pg=@cls_isbn=@papersize=@toc=@lv0=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@pagenew=@pagebreak=@pageline=@num_top=@bold_match_list=@italics_match_list=@substitution_match_list=@emphasis_set_to=@toc_lev_limit=@flag_tables=@vocabulary=@doc_css=@yaml=@lnk=@links=@prefix_a=@prefix_b=@suffix=@information=@contact=@icon=@ad_url=@ad_png=@ad_alt=@ad_began=@promo=@ad_home=@stmp=@stmpd=@sc_filename=@sc_number=@sc_date=@sc_time=@sc_info=@yamladdr=@locale=@wc_lines=@wc_words=@wc_bytes=@file_encoding=@filesize=@firstseg=@programs=@author_copymark=@i18n=@lang=@lang_code_insert=@en=@notes=@dgst=@generated=@heading_seg_first=@base_program=@topic_register=@original=@writing_focus=@audio=@home_button_image=@home_button_links=@cover_image=@man_section=nil @data, @path, @fns, @fno, @opt= fns_array,opt.pth,opt.fns,opt.fno,opt #@data used as data @flag_tables,@set_header_title,@set_heading_top,@set_heading_seg,@heading_seg_first_flag,@flag_promo,@book_idx= false, false, false, false, false, false, false @seg_autoname_safe=true @daisy,@sem_tag=false,false @authorship,@markup_instruction,@image='','','','' #check which other values should be set to empty rather than nil @markup=@markup_instruction #use @markup_instruction @doc,@fn,@make_italic,@tag_hash,@ec={},{},{},{},{},{} @flv,@lang,@seg_names,@tags,@tag_array,@tag_a,@ec[:image],@ec[:audio],@ec[:multimedia]=Array.new(9){[]} @authors,@topic_register_array,@papersize_array=[],[],[] @lvs=[nil,0,0,0,0,0,0] @emphasis_set_to='bold' @lang_code_insert=SiSU_Env::FilenameLanguageCodeInsert.new(@opt).language_code_insert @footer_links= { left: { say: '', url: '' }, center: { say: '', url: '' } } @rgx_image=/(?:^|[^_\\])\{(?:\s*|\~\^\s+)(\S+?\.(?:png|jpg|gif)\b)/m @rgx_audio=/\{\s*(\S+?\.(?:mp3|ogg))/ @rgx_mm=/\{\s*(\S+?\.(?:ogg|mpeg))/ #expand and distinguish ogg Dir.chdir(@opt.f_pth[:pth]) begin rescue SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@fns).location do __LINE__.to_s + ':' + __FILE__ end ensure end @header_make_links_append=:no common_makes=(defined? @opt.make_instructions_pod) \ && @opt.make_instructions_pod !=nil \ && @opt.make_instructions_pod[:makeset]==true \ ? @opt.make_instructions_pod : @opt.make_instructions if common_makes[:makeset] @pagenew=common_makes[:pagenew] @pagebreak=common_makes[:pagebreak] @pageline=common_makes[:pageline] @toc=common_makes[:toc] @lv0=common_makes[:lv0] @lv1=common_makes[:lv1] @lv2=common_makes[:lv2] @lv3=common_makes[:lv3] @lv4=common_makes[:lv4] @lv5=common_makes[:lv5] @lv6=common_makes[:lv6] @num_top=common_makes[:num_top] @i18n=common_makes[:i18n] @man_section=common_makes[:man_section] @emphasis_set_to=common_makes[:emphasis_set_to] @bold_match_list=common_makes[:bold_match_list] @italics_match_list=common_makes[:italics_match_list] @substitution_match_list=common_makes[:substitution_match_list] @footer_links=common_makes[:footer_links] @home_button_links=common_makes[:home_button_links] @home_button_image=common_makes[:home_button_image] @cover_image=common_makes[:cover_image] @lnk=@links=common_makes[:links] @header_make_links_append=common_makes[:links_append] end end
Public Instance Methods
extract()
click to toggle source
protected
# File lib/sisu/dp.rb, line 964 def extract begin @user,@home,@hostname,@pwd=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'] @programs,@wc,@language,@language_original={},{},{},{} @en={ sum: 0, mark: 0, note: 0, mismatch: 0 } @prog=SiSU_Env::InfoSettings.new @sys=SiSU_Env::SystemCall.new @env=SiSU_Env::InfoEnv.new(@fns) #watch if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) puts 'system locale: ' + @sys.locale end if @prog.wc \ and @sys.wc wc=%x{wc #{fns}} wca=wc.scan(/\d+/) @wc_lines,@wc_words,@wc_bytes=wca[0].to_i,wca[1].to_i,wca[2].to_i else fns_a=@data.dup tmp=fns_a.join fns_a=tmp.scan(/\S+/) @wc_words=fns_a.length fns_a=tmp=nil end @concord_make=(@wc_words > @env.concord_max) ? false : true @locale=@sys.locale @file_encoding=@sys.file_encoding(fns,@opt.act) # programs set here for things that affect output appearance only @programs[:pdf]=SiSU_Env::SystemCall.new.program_found?('pdflatex') if @opt.act[:psql][:set] == [:ok] m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss @fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3] @flv=@env.document_language_versions_found[:f] else m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm)$/ #watch added match for sss @fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3] @flv=@env.document_language_versions_found[:f] @fnz=(@fns =~/\.(?:ssm\.sst|ssm)$/) ? (@fnn + '.ssm.txz') : (@fnn + '.sst.txz') end @papersize=@env.papersize #'A4' #default size #get first from SiSU_Env:: # @env is probably no longer most appropriate name! as default info is more general @sfx_src=@fns[m,2] if @fns =~ /(?:-|ssm\.)?sst$/ \ and not @opt.act[:psql][:set] == [:ok] @env_out_root=@env.path.output @dir_out="#{@env.path.output}/#{@fnb}" @dir_tex=@env.processing_path.tex @dir_lout=@env.processing_path.lout @@publisher='SiSU http://www.jus.uio.no/sisu' end @txt_path=@txt_path ||= @env.path.output @stmp=%{#{@fns}}[/^(.+?)\..*/m,1] @fnstex=@fns.gsub(/_/,'\_\-').gsub(/\./,'.\-') @flag_endnotes,@flag_auto_endnotes,@flag_separate_endnotes=false,false,false @flag_separate_endnotes_make=true @flag_glossary=false @flag_biblio,@flag_auto_biblio=false,false ver=SiSU_Env::InfoVersion.instance @project_details=ver.get_version @ruby_version=ver.rbversion @generated=Time.now fns_array=@data.dup skip unless fns_array # consider @code_flag=false flag_code_curly=:not_code_curly flag_code_tics=:not_code_tics fns_array.each do |para| #% scan document if para !~/^%+\s/ \ and para =~/<![abcdeghijklmnopqrstuvwxyz]/i # <!f not included raise "Old markup style in file #{@fns}, current version #{@project_details.project} #{@project_details.version} #{@project_details.date_stamp} #{@project_details.date}:\n\t\t#{para}\n\n" end if para =~/^code\{/ flag_code_curly=:code_curly elsif para =~/^\}code/ flag_code_curly=:not_code_curly elsif para =~/^``` code/ flag_code_tics=:code_tics elsif flag_code_tics ==:code_tics \ and para =~/^```/ flag_code_tics=:not_code_tics end @code_flag=if flag_code_curly==:code_curly \ or flag_code_tics==:code_tics true else false end regx_header=/^@\S+?:[+-]?\s/ if para =~regx_header \ and not @code_flag #or para=~/^(?:1|:?A)~/ case para when /^@title:(.+)/m #% * header metadata - title @title=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).title when /^@creator:(.+)/m #% * header metadata - creator @creator=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).creator @authorship=@author=@creator.author @authors=@creator.author_detail when /^@date:(.+)/m #% * header metadata - date @date=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).date when /^@publisher:\s+(.+)/m #% * header metadata - publisher @publisher=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).current_publisher @current_publisher=@publisher when /^@rights:(.+)/m #% * header metadata - rights @rights=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).rights when /^@classify:(.+)/m #% * header metadata - classify @classify=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).classify when /^@identifier:(.+)/m #% * header metadata - identifier @identifier=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).identifier when /^@original:(.+)/m #% * header metadata - original (document) @original=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).original @source=@original.source when /^@notes?:\s(.+)\Z/m #% * header metadata - notes @notes=SiSU_Param::Parameters::Md.new($1.strip,@opt,@env).notes when /^@links:\s+(.+?)\Z/m #% * header metadata - links links=SiSU_Param::Parameters::MdMake.new($1.strip,@opt,@env).make_links.links @lnk=@links=if @header_make_links_append == :yes (links) \ ? (links + @links) : @links else (links) \ ? (links) : @links end when /^@make:(.+)/m #% * header processing - make @make=SiSU_Param::Parameters::MdMake.new($1.strip,@opt,@env).make makes=SiSU_Param_Make::MakeHead.new(@make).make_instruct @pagenew=(makes[:pagenew]) \ ? (makes[:pagenew]) \ : @pagenew @pagebreak=(makes[:pagebreak]) \ ? (makes[:pagebreak]) \ : @pagebreak @pageline=(makes[:pageline]) \ ? (makes[:pageline]) \ : @pageline @toc=(makes[:toc]) ? (makes[:toc]) : @toc @lv0=(makes[:lv0]) ? (makes[:lv0]) : @lv0 @lv1=(makes[:lv1]) ? (makes[:lv1]) : @lv1 @lv2=(makes[:lv2]) ? (makes[:lv2]) : @lv2 @lv3=(makes[:lv3]) ? (makes[:lv3]) : @lv3 @lv4=(makes[:lv4]) ? (makes[:lv4]) : @lv4 @lv5=(makes[:lv5]) ? (makes[:lv5]) : @lv5 @lv6=(makes[:lv6]) ? (makes[:lv6]) : @lv6 @num_top= (makes[:num_top]) \ ? (makes[:num_top]) \ : @num_top @substitution_match_list= (makes[:substitution_match_list]) \ ? (makes[:substitution_match_list]) \ : @substitution_match_list @bold_match_list= (makes[:bold_match_list]) \ ? (makes[:bold_match_list]) \ : @bold_match_list @italics_match_list= (makes[:italics_match_list]) \ ? (makes[:italics_match_list]) \ : @italics_match_list @emphasis_set_to= (makes[:emphasis_set_to]) \ ? (makes[:emphasis_set_to]) \ : @emphasis_set_to @i18n= (makes[:i18n]) \ ? (makes[:i18n]) \ : @i18n @man_section= (makes[:man_section]) \ ? (makes[:man_section]) \ : @man_section @footer_links= (makes[:footer_links]) \ ? (makes[:footer_links]) \ : @footer_links @home_button_links= (makes[:home_button_links]) \ ? (makes[:home_button_links]) \ : @home_button_links @home_button_image= (makes[:home_button_image]) \ ? (makes[:home_button_image]) \ : @home_button_image @cover_image= (makes[:cover_image]) \ ? (makes[:cover_image]) \ : @cover_image end @lv0 ||=/^0~/ @lv1 ||=/^1~/ @lv2 ||=/^2~/ @lv3 ||=/^3~/ @lv4 ||=/^4~/ @lv5 ||=/^5~/ @lv6 ||=/^6~/ else #% * l_0=l_1=l_2=l_3=l_4=l_5='' if defined? @make.headings[0] l_0=if defined? @make.headings[0][0] \ and @make.headings[0][0] =~/\S+/ "|^#{@make.headings[0][0]}" end l_1=if defined? @make.headings[0][1] \ and @make.headings[0][1] =~/\S+/ "|^#{@make.headings[0][1]}" end l_2=if defined? @make.headings[0][2] \ and @make.headings[0][2] =~/\S+/ "|^#{@make.headings[0][2]}" end l_3=if defined? @make.headings[0][3] \ and @make.headings[0][3] =~/\S+/ "|^#{@make.headings[0][3]}" end l_4=if defined? @make.headings[0][4] \ and @make.headings[0][4] =~/\S+/ "|^#{@make.headings[0][4]}" end l_5=if defined? @make.headings[0][5] \ and @make.headings[0][5] =~/\S+/ "|^#{@make.headings[0][5]}" end end case para #when /^:?A~/ when /^:?B~#{l_0}/ @lvs[1]=1 when /^:?C~#{l_1}/ @lvs[2]=1 when /^:?D~#{l_2}/ @lvs[3]=1 when /^1~#{l_3}/ @lvs[4]=1 when /^2~#{l_4}/ @lvs[5]=1 when /^3~#{l_5}/ @lvs[6]=1 end if para =~ /^:?A~/ #% processing if not defined? @title.full.nil? tf=para[/^:A~\S*(.+)$/m,1] tf="@title: #{tf}" @title=SiSU_Param::Parameters::Md.new(tf.strip,@opt,@env).title end creator=(@creator.is_a?(SiSU_Param::Parameters::Md) \ && defined? @creator.author \ && @creator.author.is_a?(String)) \ ? " #{@creator.author}" : '' title=@title.full.gsub(/\s*(?:<p>|<p \/>|<br>|<br \/>)\s*/,' '). gsub(/~\{.+?\}~/,'') SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], 'Document Parameters', %{#{title}#{creator}} ).txt_grey if @opt.act[:verbose][:set]==:on end unless @code_flag if para =~/^1~!biblio(?:graphy)?/ @flag_auto_biblio,@flag_biblio=false,true #@flag_biblio=true elsif @flag_biblio ==true \ and @flag_auto_biblio ==false \ and para =~/^(?:au|author):/m @flag_auto_biblio =true end if para =~/^1~!glossary/ @flag_glossary=true end end if not @book_idx \ and para =~/^=\{(.+?)\}[\s`]*\Z/m @book_idx=true end unless @code_flag case para when /~\{\s+.+?\}~/m #% processing en=para.scan(/~\{.+?\}~/m) en.each { |e| @en[:sum] +=1 } when /~\^(?:\s|$)/m #% processing mk=para.scan(/~\^(?:\s|$)/) mk.each { |e| @en[:mark] +=1 } when /^\^~\s+\S/ then @en[:note] +=1 #% processing end end if para =~/~\{|\^~ |~\^|\{.+?\[[1-6]\]\}\S+?\.ss[tm]/m @flag_auto_endnotes,@flag_endnotes=true,true end if para =~/^(?:table\{|\{table)/i @flag_tables=true end end if para =~/^:?A~/ @set_heading_top=true end if para =~/^1~/ m=nil if para =~/^1~(\S+)\s+(.+)$/ m,t=$1,$2 elsif para =~/^1~\s+(.+)$/ t=$1 end unless @heading_seg_first_flag # extract first segment name @heading_seg_first=t @heading_seg_first_flag=true end if m # list all segment names @seg_names << m @set_heading_seg=true if m=~/^\d{1,3}/ \ and m !~/^0/ @seg_autoname_safe=false end end end para=para.gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image) if para !~/^%+\s/ \ and para =~@rgx_image @ec[:image] << para.scan(@rgx_image).uniq end @ec[:audio] << para.scan(@rgx_audio).uniq if para =~@rgx_audio #embedded content @ec[:multimedia] << para.scan(@rgx_mm).uniq if para =~@rgx_mm #embedded content unless @sem_tag @sem_tag=true if para=~/[:;]\{.+?\}[:;][a-z+]/ #refix later end end #% here endeth the document loop unless @make if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], '@make:', 'header absent' ).warn end @make=SiSU_Param::Parameters::MdMake.new('@make: ',@opt,@env).make end if @cover_image \ and @cover_image.is_a?(Hash) \ and (@cover_image[:cover] =~@rgx_image \ or @cover_image[:cover] =~/\S+?.(?:jpg|png|gif)/) @ec[:image] << @cover_image[:cover] end if @home_button_image \ and @home_button_image.is_a?(Hash) \ and (@home_button_image =~@rgx_image \ or @home_button_image =~/\S+?\.(?:jpg|png|gif)/) @ec[:image] << @home_button_image end if @ec[:image].length > 0 @ec[:image]=@ec[:image].flatten.uniq @ec[:image].delete_if {|x| x =~/https?:\/\// } @ec[:image]=@ec[:image].sort end @ec[:audio]=@ec[:audio].uniq.flatten.sort @ec[:multimedia]=@ec[:multimedia].uniq.flatten.sort unless @rights if defined? @creator.author \ and @creator.author.is_a?(String) \ and defined? @date.published \ and @date.published.is_a?(String) @rights=SiSU_Param::Parameters::MdDefault.new.rights(@creator.author,@date.published) elsif defined? @creator.author \ and @creator.author.is_a?(String) @rights=SiSU_Param::Parameters::MdDefault.new.rights("[#{@creator.author}]",'') end end if defined? @classify.topic_register \ and @classify.topic_register.is_a?(String) \ and @classify.topic_register.length >3 topic_register=@classify.topic_register u=topic_register.scan(/[^;]+/m).sort v=[] u.each do |l| v << l.scan(/[^:]+/m) end v.each do |s| s[-1]=s[-1].scan(/[^|]+/m) if s[-1] =~/[|]/m @topic_register_array << s end @topic_register_array end if @i18n @i18n=@i18n.uniq @i18n << 'en' unless @i18n.find_index("en") else @i18n=[ 'en' ] end translated=[] translate_list=[@pagenew,@pagebreak,@pageline,@num_top,@toc_lev_limit] translate_list.each do |t| translate=t.to_s if t translated << if translate translate.gsub!(/3/,'6') translate.gsub!(/2/,'5') translate.gsub!(/1/,'4') translate.gsub!(/:?C/,'3') translate.gsub!(/:?B/,'2') translate.gsub!(/:?A/,'1') # looks like an ok substituion for the above but is not, causes problems, check why #translate=translate.gsub(/3/,'6'). # gsub(/2/,'5'). # gsub(/1/,'4'). # gsub(/:?C/,'3'). # gsub(/:?B/,'2'). # gsub(/:?A/,'1') translate=(translate =~/^\d+$/) \ ? translate.to_i : translate else nil end end @pagenew,@pagebreak,@pageline,@num_top,@toc_lev_limit=translated @markup=@markup.gsub(/page_new\s*=\s*([\dA-C])/,"page_new=#{@pagenew}"). gsub(/page_break\s*=\s*([\dA-C])/,"page_break=#{@pagebreak}"). gsub(/page_line\s*=\s*([\dA-C])/,"page_line=#{@pageline}"). gsub(/num_top\s*=\s*([\dA-C])/,"num_top=#{@num_top}"). gsub(/toc_lev_limit\s*=\s*([\dA-C])/,"toc_lev_limit=#{@toc_lev_limit}") papersize_array_rc=@papersize.downcase.scan(/(?:a4|letter|legal|book|a5|b5)/) papersize_array_opt=[ ((@opt.act[:pdf_a4][:set]==:on) ? 'a4' : ''), ((@opt.act[:pdf_a5][:set]==:on) ? 'a5' : ''), ((@opt.act[:pdf_b5][:set]==:on) ? 'b5' : ''), ((@opt.act[:pdf_letter][:set]==:on) ? 'letter' : ''), ((@opt.act[:pdf_legal][:set]==:on) ? 'legal' : ''), ] - [""] @papersize_array=(papersize_array_opt.length > 0) \ ? papersize_array_opt : papersize_array_rc fn=@opt.fno #decide what to do a filesize on .ssm tells very little about actual document size @filesize=(File.size(fn)).to_s if @sys.openssl !=false \ and FileTest.file?(@env.source_file_with_path) @dgst=[] case @env.digest(@opt).type when :sha512 dgst=@sys.sha512(@env.source_file_with_path) @dgst=dgst[1].length==128 ? dgst : nil puts 'check document (sha512) digest' if not @dgst when :sha256 dgst=@sys.sha256(@env.source_file_with_path) @dgst=dgst[1].length==64 ? dgst : nil puts 'check document (sha256) digest' if not @dgst when :md5 dgst=@sys.md5(@env.source_file_with_path) @dgst=dgst[1].length==32 ? dgst : nil puts 'check document (md5) digest' if not @dgst else dgst=@sys.sha256(@env.source_file_with_path) @dgst=dgst[1].length==64 ? dgst : nil puts 'check document (sha256) digest' if not @dgst end elsif not FileTest.file?(@env.source_file_with_path) #puts SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).set(:fuchsia) end @publisher ||= "#{@@publisher} (this copy)" fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language unless @language[:code] \ and @language[:name] lang=@env.i18n.language #default language settings for directory by name, or in sysrc.yml @language[:code] ||= lang.code @language[:name] ||= lang.title end unless fn_set_lang[:d]==true #decide, naming convention overrides other settings, within document, etc. @language[:code]=fn_set_lang[:c] @language[:name]=fn_set_lang[:n] end @fnl=@env.i18n.lang_filename(fn_set_lang[:c]) @lang=@lang.uniq @fn=SiSU_Env::EnvCall.new(@fns).lang(fn_set_lang[:c]) if @en[:note] > 0 \ and @en[:sum] > 0 if @en[:sum] > 0 else SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], '*WARN* both endnote styles used', "~{ #{@en[:sum]} }~ and ^~ #{@en[:mark]}" ).warn unless @opt.act[:quiet][:set]==:on end end if @en[:mark] != @en[:note] \ and @en[:note] > 0 @en[:mismatch]=@en[:note] - @en[:mark] SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], '*WARN* endnote number mismatch', "endnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} " \ + "(difference = #{@en[:mismatch]})" ).warn unless @opt.act[:quiet][:set]==:on footnote_conversion_errors=File.new("#{Dir.pwd}/footnote_conversion_errors.txt",'a') footnote_conversion_errors << "#{@fns}:\n\tendnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} " \ + "(difference = #{@en[:mismatch]})\n" end if not @title \ or not defined? @title.main \ or @title.main !~/[\S]/ if @fns =~/\.ssm$/ \ and @opt.inspect =~/P/ #@title=Md.new('Text Insert',@opt,@env).title else SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], 'WARNING: Document Title missing', 'please provide @title:' ).warn if (@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) end end if @author !~/[\S]/ if @fns =~/\.ssm$/ \ and @opt.inspect =~/P/ #@creator=SiSU_Param::Md.new('Text Insert',@opt,@env).creator else SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], 'WARNING: Document Author missing', 'please provide @creator: :author:' ).warn if (@opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) end end @struct={} doc_struct=Hash.new(0) if @lv1.nil? fns_array.each do |para| if para =~/^(Part|Chapter|Section|Article)\b/i case para when /^(Part|PART)\b/ @struct[:part]=doc_struct[:part] doc_struct[:part]=doc_struct[:part] + 1 when /^(Chapter|CHAPTER)\b/ @struct[:chapter]=doc_struct[:chapter] doc_struct[:chapter]=doc_struct[:chapter] + 1 when /^(Section|SECTION)\b/ @struct[:section]=doc_struct[:section] doc_struct[:section]=doc_struct[:section] + 1 when /^(Article|ARTICLE)\b/ @struct[:article]=doc_struct[:article] doc_struct[:article]=doc_struct[:article] + 1 when /^(Clause|CLAUSE)\b/ @struct[:clause]=doc_struct[:clause] doc_struct[:clause]=doc_struct[:clause] + 1 when /^\d\..*[^\.]$/ @struct[:number]=doc_struct[:number] doc_struct[:number]=doc_struct[:number] + 1 end end end if doc_struct[:article] > 2 #%~level 4 @lv4=/^(?:Article|ARTICLE)\b/ elsif doc_struct[:chapter] > 2 \ and doc_struct[:article] \ and doc_struct[:article] < 3 @lv4=/^(?:Chapter|CHAPTER)\b/ elsif doc_struct[:clause] > 2 @lv4=/^(?:Clause|CLAUSE)\b/ elsif doc_struct[:number] > 2 @lv4="^\d\..*[^\.]$" end if doc_struct[:section] > 2 #%~level 3 @lv3=/^(?:Section|SECTION)\b/ end if doc_struct[:chapter] > 2 \ and doc_struct[:article] \ and doc_struct[:article] > 2 @lv2=/^(?:Chapter|CHAPTER)\b/ end if doc_struct[:part] > 2 \ and @lv[2].nil? @lv2=/^(?:Part|PART)\b/ end if doc_struct[:part] > 2 \ and @lv[2].inspect !~/Part/ \ and @lv[1].nil? @lv1=/^(Part|PART)\b/ end end @lnk=@lnk.compact if @lnk @lv0 ||=/^0~/ @lv1 ||=/^1~/ @lv2 ||=/^2~/ @lv3 ||=/^3~/ @lv4 ||=/^4~/ @lv5 ||=/^5~/ @lv6 ||=/^6~/ @data=nil #else whole file's contents are stored in md pstore & is not required to be... big waste actually @file=SiSU_Env::FileOp.new(self) #watch Store.new(self,@env).store #% pstore self rescue if @opt.act[:harvest][:set]==:on exit end end end