[],:html=>[] }
@md,@fns=md
@env=SiSU_Env::Info_env.new(@md.fns)
@fnb=@md.fnb
@base_url,@base_url_src,@base_url_pod="#{@env.url.root}/#@fnb","#{@env.url.src_txt}","#{@env.url.src_pod}"
@base_path,@base_path_src,@base_path_pod="#{@env.path.output}/#@fnb","#{@env.path.output_src}","#{@env.path.output_pod}"
@@dg ||=SiSU_Env::Info_env.new.digest.type
@dg=@@dg
l=SiSU_Env::Standardise_language.new.file_to_language(@md.fns)
@language=l[:l]
@translate=SiSU_Translate::Source.new(@md,@language)
@url_brace=SiSU_Viz::Skin.new.url_decoration
end
def output
SiSU_Env::SiSU_file.new(@md).mkdir
manifest=SiSU_Env::SiSU_file.new(@md,@md.fn[:manifest]).mkfile
@manifest[:html].each do |x|
manifest << x
end
end
def summarize(id,file,img='')
size=(File.size("#{@base_path}/#{file}")/1024.00).to_s
kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
@manifest[:txt] << "#{file} #{id} #{kb}\n"
@manifest[:html] << %{#{img}#{id}
#{file}
#{@url_brace.xml_open}#@base_url/#{file} #{@url_brace.xml_close}
#{kb}
\n}
end
def summarize_source(id,file)
sys=SiSU_Env::System_call.new
dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{@base_path_src}/#{file}")
else sys.md5("#{@base_path_src}/#{file}")
end
tell=SiSU_Screen::Ansi.new(@md.cmd,"#{dgst[1]} #{file}")
tell.warn if @md.cmd =~/[vVM]/
size=(File.size("#{@base_path_src}/#{file}")/1024.00).to_s
kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
@manifest[:txt] << "#{file} #{id} #{kb}\n"
@manifest[:html] << %{#{id}
#{file} #{dgst[1]} #{@url_brace.xml_open}#@base_url_src/#{file} #{@url_brace.xml_close}
#{kb}
\n} if kb and kb =~/\d+/
end
def summarize_pod(id,file)
sys=SiSU_Env::System_call.new
dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{@base_path_pod}/#{file}")
else sys.md5("#{@base_path_pod}/#{file}")
end
tell=SiSU_Screen::Ansi.new(@md.cmd,"#{dgst[1]} #{file}")
tell.warn if @md.cmd =~/[vVM]/
size=(File.size("#{@base_path_pod}/#{file}")/1024.00).to_s
kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1]
@manifest[:txt] << "#{file} #{id} #{kb}\n"
@manifest[:html] << %{#{id}
#{file} #{dgst[1]} #{@url_brace.xml_open}#@base_url_pod/#{file} #{@url_brace.xml_close}
#{kb}
\n} if kb and kb =~/\d+/
end
def languages(id,file)
flv=@env.published_manifests?(@base_path)
@manifest[:html] << %{\n}
flv.each do |l|
lang=SiSU_Translate::Source.new(@md,@language,l[:l]).language_list
@manifest[:txt] << "#{l[:m]} #{lang}\n"
@manifest[:html] << %{#{lang} }
end
@manifest[:html] << %{ \n}
end
def published_languages(id,file)
flv=@env.published_manifests?(@base_path)
flv.each do |l|
lang=SiSU_Translate::Source.new(@md,@language,l[:l]).language_list
@manifest[:txt] << "#{l[:m]} #{lang}\n"
@manifest[:html] << %{#{lang}
#{lang}
#{@url_brace.xml_open}#@base_url/#{l[:m]} #{@url_brace.xml_close}
\n}
end
end
def metadata(id,info)
@manifest[:html] << %{#{id}:
#{info}
\n}
end
def links(url,lnk,target)
static=if url =~/^\.\//; url.gsub(/^\.(\.)?/,@base_url)
elsif url =~/^\.\.\//; url.gsub(/^\.(\.)?/,@env.url.root)
else url
end
@manifest[:html] << %{#{lnk}
#{@url_brace.xml_open}#{static} #{@url_brace.xml_close}
\n}
end
def output_tests
if FileTest.file?("#@base_path/#{@md.fn[:toc]}")==true
img=' '
id,file='HTML, table of contents (for segmented text)',@md.fn[:toc]
summarize(id,file,img)
end
if FileTest.file?("#@base_path/#{@md.fn[:doc]}")==true
img=' '
id,file='HTML, full length document',@md.fn[:doc]
summarize(id,file,img)
end
if FileTest.file?("#@base_path/#{@md.fn[:pdf_p]}")==true
img=' '
id,file='PDF document portrait/vertical (recommended for printing)',@md.fn[:pdf_p]
summarize(id,file,img)
end
if FileTest.file?("#@base_path/#{@md.fn[:pdf_l]}")==true
img=' '
id,file='PDF document landscape/horizontal (recommended for screen viewing)',@md.fn[:pdf_l]
summarize(id,file,img)
end
if FileTest.file?("#@base_path/#{@md.fn[:odf]}")==true
img=' '
id,file='ODF:ODT (Open Document Format)',@md.fn[:odf]
summarize(id,file,img)
end
if FileTest.file?("#@base_path/#{@md.fn[:xhtml]}")==true
id,file='XHTML',@md.fn[:xhtml]
summarize(id,file)
end
if FileTest.file?("#@base_path/#{@md.fn[:sax]}")==true
id,file='XML SAX',@md.fn[:sax]
summarize(id,file)
end
if FileTest.file?("#@base_path/#{@md.fn[:dom]}")==true
id,file='XML DOM',@md.fn[:dom]
summarize(id,file)
end
if FileTest.file?("#@base_path/#{@md.fn[:plain]}")==true
if @md.cmd =~/a/; id,file='Plaintext (Unix (UTF-8) with footnotes)',@md.fn[:plain]
elsif @md.cmd =~/e/; id,file='Plaintext (Unix (UTF-8) with endnotes)',@md.fn[:plain]
elsif @md.cmd =~/A/; id,file='Plaintext (dos (UTF-8) with footnotes)',@md.fn[:plain]
elsif @md.cmd =~/E/; id,file='Plaintext (dos (UTF-8) with endnotes)',@md.fn[:plain]
else id,file='Plaintext (UTF-8)',@md.fn[:plain]
end
summarize(id,file)
end
if FileTest.file?("#@base_path/#{@md.fn[:concordance]}")==true
id,file='Concordance file (HTML - wordmap, alphabetical wordlist)',@md.fn[:concordance]
summarize(id,file)
end
if FileTest.file?("#@base_path/#{@md.fns}.tex")==true
id,file='LaTeX (portrait)',"#{@md.fns}.tex"
summarize(id,file)
end
if FileTest.file?("#@base_path/#{@md.fns}.tex")==true
id,file='LaTeX (landscape)',"#{@md.fns}.landscape.tex"
summarize(id,file)
end
if FileTest.file?("#@base_path/#{@md.fn[:digest]}")==true
id,file="Digest/DCC - Document Content Certificate (#@dg)",@md.fn[:digest]
summarize(id,file)
end
end
def published_versions
if FileTest.file?("#@base_path/sisu_manifest.html")==true
id,file='Markup (SiSU source)',@md.fns
languages(id,file)
end
end
def language_versions
if FileTest.file?("#@base_path/sisu_manifest.html")==true
id,file='Markup (SiSU source)',@md.fns
published_languages(id,file)
end
end
def source_tests
if @md.fns =~/\.ssm\.sst$/ #% decide whether to extract and include requested/required documents
req=@md.fns
if FileTest.file?("#@base_path_src/#{req}")==true
id,file='Markup Composite File (SiSU source)',req
summarize_source(id,file)
end
else
if FileTest.file?("#@base_path_src/#{@md.fns}")==true
id,file='Markup (SiSU source)',@md.fns
summarize_source(id,file)
end
end
if FileTest.file?("#@base_path_pod/#{@md.fn[:sisupod]}")==true
id,file='SiSU doc (zip)',@md.fn[:sisupod]
summarize_pod(id,file)
end
if FileTest.file?("#@base_path/#{@md.fnb}")==true \
and @md.fnb =~/\.kdi$/
id,file='Kdissert (.kdi source)',@md.fnb
summarize_pod(id,file)
end
end
def metadata_tests
if @md.dc_title
id,info=@translate.dc_title,@md.dc_title
metadata(id,info)
end
if @md.title
id,info=@translate.title,@md.title
metadata(id,info)
end
if @md.subtitle
id,info=@translate.subtitle,@md.subtitle
metadata(id,info)
end
if @md.dc_creator
id,info=@translate.creator,@md.dc_creator
metadata(id,info)
end
if @md.dc_contributor
id,info=@translate.contributor,@md.dc_contributor
metadata(id,info)
end
if @md.translator
id,info=@translate.translator,@md.translator
metadata(id,info)
end
if @md.illustrator
id,info=@translate.illustrator,@md.illustrator
metadata(id,info)
end
if @md.dc_publisher
id,info=@translate.publisher,@md.dc_publisher
metadata(id,info)
end
if @md.prepared_by
id,info=@translate.prepared_by,@md.prepared_by
metadata(id,info)
end
if @md.digitized_by
id,info=@translate.digitized_by,@md.digitized_by
metadata(id,info)
end
if @md.dc_subject
id,info=@translate.subject,@md.dc_subject
metadata(id,info)
end
if @md.dc_description
id,info=@translate.dc_description,@md.dc_description
metadata(id,info)
end
if @md.abstract
id,info=@translate.abstract,@md.abstract
metadata(id,info)
end
if @md.dc_type
id,info=@translate.type,@md.dc_type
metadata(id,info)
end
if @md.dc_rights
id,info=@translate.rights,@md.dc_rights
metadata(id,info)
end
if @md.dc_date
id,info=@translate.date,@md.dc_date
metadata(id,info)
end
if @md.dc_date_created
id,info=@translate.date_created,@md.dc_date_created
metadata(id,info)
end
if @md.dc_date_issued
id,info=@translate.date_issued,@md.dc_date_issued
metadata(id,info)
end
if @md.dc_date_available
id,info=@translate.date_available,@md.dc_date_available
metadata(id,info)
end
if @md.dc_date_modified
id,info=@translate.date_modified,@md.dc_date_modified
metadata(id,info)
end
if @md.dc_date_valid
id,info=@translate.date_valid,@md.dc_date_valid
metadata(id,info)
end
if @md.dc_language \
and @md.dc_language[:name]
id,info=@translate.language,@md.dc_language[:name]
metadata(id,info)
end
if @md.language_original \
and @md.language_original[:name]
id,info=@translate.language_original,@md.language_original[:name]
metadata(id,info)
end
if @md.dc_format
id,info=@transate.format,@md.dc_format
metadata(id,info)
end
if @md.dc_identifier
id,info=@translate.identifier,@md.dc_identifier
metadata(id,info)
end
if @md.dc_source
id,info=@translate.source,@md.dc_source
metadata(id,info)
end
if @md.dc_relation
id,info=@translate.relation,@md.dc_relation
metadata(id,info)
end
if @md.dc_coverage
id,info=@translate.coverage,@md.dc_coverage
metadata(id,info)
end
if @md.keywords
id,info=@translate.keywords,@md.keywords
metadata(id,info)
end
if @md.comments
id,info=@translate.comments,@md.comments
metadata(id,info)
end
if @md.cls_loc
id,info=@translate.cls_loc,@md.cls_loc
metadata(id,info)
end
if @md.cls_dewey
id,info=@translate.cls_dewey,@md.cls_dewey
metadata(id,info)
end
if @md.cls_pg
id,info=@translate.cls_gutenberg,@md.cls_pg
metadata(id,info)
end
if @md.cls_isbn
id,info=@translate.cls_isbn,@md.cls_isbn
metadata(id,info)
end
if @md.prefix_a
id,info=@translate.prefix_a,@md.prefix_a
metadata(id,info)
end
if @md.prefix_b
id,info=@translate.prefix_b,@md.prefix_b
metadata(id,info)
end
if @md.fns
id,info=@translate.sourcefile,@md.fns
metadata(id,info)
end
if @md.en[:mismatch] > 0
id,info='WARNING document error in endnote markup, number mismatch',"endnotes: #{@md.en[:note]} != endnote reference marks: #{@md.en[:mark]} (difference = #{@md.en[:mismatch]})"
metadata(id,info)
end
if @md.wc_words
id,info=@translate.word_count,@md.wc_words
metadata(id,info)
end
if @md.dgst
id,info="#{@translate.sourcefile_digest} (#@dg)",@md.dgst[1]
metadata(id,info)
end
if @md.sc_number
id,info=@translate.sc_number,@md.sc_number
metadata(id,info)
end
if @md.sc_date
id,info=@translate.sc_date,"#{@md.sc_date} at #{@md.sc_time}"
metadata(id,info)
end
if @md.generated
id,info=@translate.last_generated,@md.generated
metadata(id,info)
end
if @md.sisu_version
id,info=@translate.sisu_version,"#{@md.sisu_version[:project]} #{@md.sisu_version[:version]} #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})"
metadata(id,info)
end
if @md.ruby_version
id,info=@translate.ruby_version,@md.ruby_version
metadata(id,info)
end
end
def links_tests
if defined? @md.lnk \
and @md.lnk
@md.lnk.each do |l|
if defined? l[:say]
target=if l[:url] !~/^\.(\.)?\//; 'external'
else '_top'
end
url,lnk=l[:url],l[:say]
unless url.nil? \
or url.empty?
links(url,lnk,target)
end
end
end
end
end
def check_output
begin
id,file='',''
vz=SiSU_Env::Get_init.instance.skin
banner_table=if vz.banner_home_button_only !~ /http:\/\/www\.jus\.uio\.no\/sisu/ \
and vz.banner_home_button_only !~ /sisu\.home\.png/
<
#{vz.banner_band} #{@url_brace.xml_open}#@base_url/#{file} #{@url_brace.xml_close}
#{@env.widget_static.search_form}
WOK
else
<
#{@url_brace.xml_open}#@base_url/#{file} #{@url_brace.xml_close}
#{@env.widget_static.search_form}
WOK
end
@manifest[:html] <<<
SiSU manifest: #{@md.title}
#{banner_table}
#{@md.dc_title}
#{@md.dc_creator}
WOK
published_versions
@manifest[:html] << '
'
@manifest[:html] <<<#{@translate.manifest_description_output}
#{@translate.description}
#{@translate.filename}
#{@translate.file_size}
(kB)
WOK
output_tests
@manifest[:html] << '
'
@manifest[:html] <<<
WOK
source_tests
@manifest[:html] << ''
@manifest[:html] <<<#{@translate.manifest_description_metadata}
#{@translate.metadata}
#{@translate.description}
WOK
metadata_tests
@manifest[:html] <<<
WOK
@manifest[:html] <<<
#{@translate.suggested_links}:
WOK
links_tests
@manifest[:html] <<<
WOK
@manifest[:html] <<<#{@translate.language_version_list}
#{@translate.filename}
#{@translate.description}
WOK
language_versions
@manifest[:html] <<<
#{vz.credits_splash}
#{vz.credits_sisu}
WOK
output
rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error
ensure
end
end
end
end
end
__END__