summaryrefslogtreecommitdiffstats
path: root/lib/sisu/develop/shared_metadata.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/develop/shared_metadata.rb')
-rw-r--r--lib/sisu/develop/shared_metadata.rb1361
1 files changed, 0 insertions, 1361 deletions
diff --git a/lib/sisu/develop/shared_metadata.rb b/lib/sisu/develop/shared_metadata.rb
deleted file mode 100644
index 3cfd72f..0000000
--- a/lib/sisu/develop/shared_metadata.rb
+++ /dev/null
@@ -1,1361 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** system environment, resource control and configuration details
-
-** Author: Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
- All Rights Reserved.
-
-** License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <http://www.gnu.org/licenses/>.
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
- <http://www.fsf.org/licensing/licenses/gpl.html>
- <http://www.gnu.org/licenses/gpl.html>
-
- <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
-
-** SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
-** Hompages:
- <http://www.jus.uio.no/sisu>
- <http://www.sisudoc.org>
-
-** Git
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
- <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/shared_metadata.rb;hb=HEAD>
-
-=end
-module SiSU_Metadata
- require_relative 'xml_parts' # xml_parts.rb
- require_relative 'xml_shared' # xml_shared.rb
- class Summary
- include SiSU_Parts_XML
- attr_accessor :tag,:inf,:class,:attrib
- def initialize(md,display_heading=false)
- @md,@display_heading=md,display_heading
- @tag,@inf,@class,@attrib=nil
- end
- def metadata_base
- meta=[]
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- language=l[:n]
- tr=SiSU_Translate::Source.new(@md,language)
- @attrib='md'
- def meta_content_clean(content='')
- content=if not content.nil?
- content=content.tr('"',"'").
- gsub(/&/,'&amp;')
- content=SiSU_XML_Munge::Trans.new(@md).char_enc.utf8(content)
- else content
- end
- end
- if @display_heading
- @tag,@inf=%{<b><u>Document Metadata</u></b>},''
- meta << self.meta_para
- end
- if defined? @md.title.full \
- and @md.title.full=~/\S+/
- @tag,@inf,@class=tr.full_title,@md.title.full,'dc' #1
- meta << self.meta_para
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- @tag,@inf,@class=tr.author,@md.creator.author,'dc' #2
- meta << self.meta_para
- end
- if defined? @md.creator.translator \
- and @md.creator.translator=~/\S+/
- @tag,@inf,@class=tr.translator,@md.creator.translator,'ext'
- meta << self.meta_para
- end
- if defined? @md.creator.illustrator \
- and @md.creator.illustrator=~/\S+/
- @tag,@inf,@class=tr.illustrator,@md.creator.illustrator,'ext'
- meta << self.meta_para
- end
- if defined? @md.creator.prepared_by \
- and @md.creator.prepared_by=~/\S+/
- @tag,@inf,@class=tr.prepared_by,@md.creator.prepared_by,'ext'
- meta << self.meta_para
- end
- if defined? @md.creator.digitized_by \
- and @md.creator.digitized_by=~/\S+/
- @tag,@inf,@class=tr.digitized_by,@md.creator.digitized_by,'ext'
- meta << self.meta_para
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/
- @tag,@inf,@class=tr.contributor,@md.creator.contributor,'dc' #6
- meta << self.meta_para
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/
- @tag,@inf,@class=tr.rights,meta_content_clean(@md.rights.all),'dc' #15
- meta << self.meta_para
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- @tag,@inf,@class=tr.subject,@md.classify.subject,'dc' #3
- meta << self.meta_para
- end
- if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- @tag,@inf,@class=tr.keywords,@md.classify.keywords,'ext'
- meta << self.meta_para
- end
- if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- @tag,@inf,@class=tr.cls_loc,@md.classify.loc,'id'
- meta << self.meta_para
- end
- if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- @tag,@inf,@class=tr.cls_dewey,@md.classify.dewey,'id'
- meta << self.meta_para
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/
- @tag,@inf,@class=tr.publisher,@md.publisher,'dc' #5
- meta << self.meta_para
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/
- @tag,@inf,@class=tr.date_created,@md.date.created,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/
- @tag,@inf,@class=tr.date_issued,@md.date.issued,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/
- @tag,@inf,@class=tr.date_available,@md.date.available,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/
- @tag,@inf,@class=tr.date_modified,@md.date.modified,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/
- @tag,@inf,@class=tr.date_valid,@md.date.valid,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.date.published \
- and @md.date.published=~/\S+/
- @tag,@inf,@class=tr.date,@md.date.published,'dc' #7
- meta << self.meta_para
- end
- if defined? @md.identifier.isbn \
- and @md.identifier.isbn=~/\S+/
- @tag,@inf,@class=tr.cls_isbn,@md.identifier.isbn,'id'
- meta << self.meta_para
- end
- if defined? @md.identifier.oclc \
- and @md.identifier.oclc=~/\S+/
- @tag,@inf,@class=tr.cls_oclc,@md.identifier.oclc,'id'
- meta << self.meta_para
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- @tag,@inf,@class=tr.description,@md.notes.description,'dc' #4
- meta << self.meta_para
- end
- if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- @tag,@inf,@class=tr.abstract,@md.notes.abstract,'ext'
- meta << self.meta_para
- end
- if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- @tag,@inf,@class=tr.comments,@md.notes.comment,'ext'
- meta << self.meta_para
- end
- if defined? @md.notes.coverage \
- and @md.notes.coverage=~/\S+/
- @tag,@inf,@class=tr.coverage,@md.notes.coverage,'dc' #14
- meta << self.meta_para
- end
- if defined? @md.notes.relation \
- and @md.notes.relation=~/\S+/
- @tag,@inf,@class=tr.relation,@md.notes.relation,'dc' #13
- meta << self.meta_para
- end
- #if defined? @md.notes.source \
- #and @md.notes.source=~/\S+/
- # @tag,@inf,@class=tr.source,@md.notes.source,'dc' #11
- # meta << self.meta_para
- #end
- if defined? @md.notes.history \
- and @md.notes.history=~/\S+/
- @tag,@inf,@class=tr.type,@md.notes.history,'dc' #8
- meta << self.meta_para
- end
- if defined? @md.notes.type \
- and @md.notes.type=~/\S+/
- @tag,@inf,@class=tr.type,@md.notes.type,'dc' #8
- meta << self.meta_para
- end
- if defined? @md.notes.format \
- and @md.notes.format=~/\S+/
- @tag,@inf,@class=tr.format,@md.notes.format,'dc' #9
- meta << self.meta_para
- end
- if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- @tag,@inf,@class=tr.prefix_a,@md.notes.prefix_a,'inf'
- meta << self.meta_para
- end
- if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- @tag,@inf,@class=tr.prefix_b,@md.notes.prefix_b,'inf'
- meta << self.meta_para
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/
- @tag,@inf,@class=tr.source,@md.original.source,'dc' #11
- meta << self.meta_para
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/
- @tag,@inf,@class=tr.language,@md.title.language,'dc' #12
- meta << self.meta_para
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- @tag,@inf,@class=tr.language_original,@md.original.language,'ext'
- meta << self.meta_para
- end
- if @display_heading
- @tag,@inf=%{<b><u>Version Information</u></b>},''
- meta << self.meta_para
- end
- if defined? @md.fns \
- and @md.fns=~/\S+/
- @tag,@inf,@class=tr.sourcefile,@md.fns,'src'
- meta << self.meta_para
- end
- if defined? @md.file_encoding \
- and @md.file_encoding=~/\S+/
- @tag,@inf,@class='Filetype',@md.file_encoding,'src'
- meta << self.meta_para
- end
- if defined? @md.dgst \
- and @md.dgst.is_a?(Array)
- @tag,@inf,@class='Source Digest',"#{@md.dgst[0]} #{@md.dgst[1]}",'src'
- meta << self.meta_para
- end
- if @display_heading
- @tag,@inf=%{<b><u>Generated</u></b>},''
- meta << self.meta_para
- end
- if defined? @md.project_details \
- and @md.project_details.version=~/\S+/
- v="#{tr.sisu_version}: " +
- "#{@md.project_details.project} " +
- "#{@md.project_details.version} " +
- "of #{@md.project_details.date_stamp} " +
- "(#{@md.project_details.date})"
- @tag,@inf,@class='Generated by',v,'ver'
- meta << self.meta_para
- end
- if defined? @md.ruby_version \
- and @md.ruby_version=~/\S+/
- @tag,@inf,@class=tr.ruby_version,@md.ruby_version,'ver'
- meta << self.meta_para
- end
- if defined? @md.generated \
- and @md.generated.is_a?(Time)
- @tag,@inf,@class=tr.last_generated,@md.generated,'date'
- meta << self.meta_para
- end
- meta
- end
- def metadata_alt
- meta=[]
- if @display_heading
- @tag,@inf=%{<b><u>Document Metadata</u></b>},''
- meta << self.meta_para
- end
- if defined? @md.title.main \
- and @md.title.main=~/\S+/
- @tag='title'
- @inf=@md.title.main
- meta << self.meta_para
- end
- if defined? @md.title.sub \
- and @md.title.sub=~/\S+/
- @tag='subtitle'
- @inf=@md.title.sub
- meta << self.meta_para
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- @tag='author'
- @inf=@md.creator.author
- meta << self.meta_para
- end
- if defined? @md.creator.translator \
- and @md.creator.translator=~/\S+/
- @tag='translator'
- @inf=@md.creator.translator
- meta << self.meta_para
- end
- if defined? @md.creator.illustrator \
- and @md.creator.illustrator=~/\S+/
- @tag='illustrator'
- @inf=@md.creator.illustrator
- meta << self.meta_para
- end
- if defined? @md.rights.copyright.text \
- and @md.rights.copyright.text=~/\S+/
- @tag='copyright'
- @inf=@md.rights.copyright.text # year & holder
- @inf=@inf.gsub(/(?:Copyright|\(C\))+\s*/,'')
- meta << self.meta_para
- end
- if defined? @md.rights.license \
- and @md.rights.license=~/\S+/
- @tag='license'
- @inf=@md.rights.license
- meta << self.meta_para
- end
- meta
- end
- def processing_tags
- def make
- def language
- if defined? @md.make.language \
- and @md.make.language
- ' :language: ' + @md.make.language.join(', ')
- else nil
- end
- end
- def headings
- if defined? @md.make.headings \
- and @md.make.headings
- ' :headings: ' + @md.make.headings[0].join('; ')
- else nil
- end
- end
- def num_top
- if defined? @md.make.num_top \
- and @md.make.num_top
- ' :num_top: ' + @md.make.num_top
- else nil
- end
- end
- def breaks
- x=if defined? @md.make.breaks \
- and @md.make.breaks
- x=' :breaks:'
- if @md.make.breaks[:page_break]
- x +=' break=' + @md.make.breaks[:page_break] + ';'
- end
- if @md.make.breaks[:page_new]
- x +=' new=' + @md.make.breaks[:page_new] + ';'
- end
- else nil
- end
- end
- def emphasis
- if defined? @md.make.emphasis \
- and @md.make.emphasis
- ' :emphasis: ' + @md.make.emphasis[:regx].inspect
- else nil
- end
- end
- def bold
- if defined? @md.make.bold \
- and @md.make.bold
- ' :bold: ' + @md.make.bold[:regx].inspect
- else nil
- end
- end
- def italics
- if defined? @md.make.italics \
- and @md.make.italics
- ' :italics: ' + @md.make.italics[:regx].inspect
- else nil
- end
- end
- def texpdf_font
- if defined? @md.make.texpdf_font \
- and @md.make.texpdf_font
- ' :texpdf_font: ' + @md.make.texpdf_font.main
- else nil
- end
- end
- self
- end
- self
- end
- def metadata_tags
- def title
- def main
- if defined? @md.title.main \
- and @md.title.main
- '@title: ' + @md.title.main
- else '@title:'
- end
- end
- def sub
- if defined? @md.title.sub \
- and @md.title.sub
- ' :subtitle: ' + @md.title.sub
- else nil
- end
- end
- def edition
- if defined? @md.title.edition \
- and @md.title.edition
- ' :edition: ' + @md.title.edition
- else nil
- end
- end
- def note
- if defined? @md.title.note \
- and @md.title.note
- ' :note: ' + @md.title.note
- else nil
- end
- end
- def short
- if defined? @md.title.short \
- and @md.title.short
- ' :short: ' + @md.title.short
- else nil
- end
- end
- def language
- if defined? @md.title.language \
- and @md.title.language
- ' :language: ' + @md.title.language
- else nil
- end
- end
- def language_char
- if defined? @md.title.language_char \
- and @md.title.language_char
- ' :language_char: ' + @md.title.language_char
- else nil
- end
- end
- self
- end
- def creator
- def head
- '@creator:'
- end
- def author
- x=if defined? @md.creator.author_detail \
- and @md.creator.author_detail
- x=''
- @md.creator.author_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :author: ' + x
- else nil
- end
- end
- def contributor
- x=if defined? @md.creator.contributor_detail \
- and @md.creator.contributor_detail
- x=''
- @md.creator.contributor_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :contributor: ' + x
- else nil
- end
- end
- def illustrator
- x=if defined? @md.creator.illustrator_detail \
- and @md.creator.illustrator_detail
- x=''
- @md.creator.illustrator_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :illustrator: ' + x
- else nil
- end
- end
- def photographer
- x=if defined? @md.creator.photographer_detail \
- and @md.creator.photographer_detail
- x=''
- @md.creator.photographer_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :photographer: ' + x
- else nil
- end
- end
- def translator
- x=if defined? @md.creator.translator_detail \
- and @md.creator.translator_detail
- x=''
- @md.creator.translator_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :translator: ' + x
- else nil
- end
- end
- def audio
- x=if defined? @md.creator.audio_detail \
- and @md.creator.audio_detail
- x=''
- @md.creator.audio_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :audio: ' + x
- else nil
- end
- end
- def digitized_by
- x=if defined? @md.creator.digitized_by_detail \
- and @md.creator.digitized_by_detail
- x=''
- @md.creator.digitized_by_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :digitized_by: ' + x
- else nil
- end
- end
- def prepared_by
- x=if defined? @md.creator.prepared_by_detail \
- and @md.creator.prepared_by_detail
- x=''
- @md.creator.prepared_by_detail.each do |n|
- x += "#{n[:the]}, #{n[:others]}; "
- end
- x=x.gsub(/;\s*$/,'')
- ' :prepared_by: ' + x
- else nil
- end
- end
- self
- end
- def rights
- def head
- '@rights:'
- end
- def copyright
- def text
- if defined? @md.rights.copyright.text \
- and @md.rights.copyright.text
- ' :copyright: ' + @md.rights.copyright.text
- else nil
- end
- end
- def translation
- if defined? @md.rights.copyright.translation \
- and @md.rights.copyright.translation
- ' :translation: ' + @md.rights.copyright.translation
- else nil
- end
- end
- def illustrations
- if defined? @md.rights.copyright.illustrations \
- and @md.rights.copyright.illustrations
- ' :illustrations: ' + @md.rights.copyright.illustrations
- else nil
- end
- end
- def photographs
- if defined? @md.rights.copyright.photographs \
- and @md.rights.copyright.photographs
- ' :photographs: ' + @md.rights.copyright.photographs
- else nil
- end
- end
- def digitization
- if defined? @md.rights.copyright.digitization \
- and @md.rights.copyright.digitization
- ' :digitization: ' + @md.rights.copyright.digitization
- else nil
- end
- end
- def audio
- if defined? @md.rights.copyright.audio \
- and @md.rights.copyright.audio
- ' :audio: ' + @md.rights.copyright.audio
- else nil
- end
- end
- self
- end
- def license
- if defined? @md.rights.license \
- and @md.rights.license
- ' :license: ' + @md.rights.license
- else nil
- end
- end
- self
- end
- def classify
- def head
- '@classify:'
- end
- def coverage
- if defined? @md.classify.coverage \
- and @md.classify.coverage
- ' :coverage: ' + @md.classify.coverage
- else nil
- end
- end
- def relation
- if defined? @md.classify.relation \
- and @md.classify.relation
- ' :relation: ' + @md.classify.relation
- else nil
- end
- end
- def subject
- if defined? @md.classify.subject \
- and @md.classify.subject
- ' :subject: ' + @md.classify.subject
- else nil
- end
- end
- def topic_register
- if defined? @md.classify.topic_register \
- and @md.classify.topic_register
- ' :topic_register: ' + @md.classify.topic_register
- else nil
- end
- end
- def type
-# if defined? @md.classify.type \
-# and @md.classify.type
-# ' :type: ' + @md.classify.type
-# else nil
-# end
- nil
- end
- #def identifier
- # if defined? @md.classify.identifier \
- # and @md.classify.identifier
- # ' :identifier: ' + @md.classify.identifier
- # else nil
- # end
- #end
- def loc
- if defined? @md.classify.loc \
- and @md.classify.loc
- ' :loc: ' + @md.classify.loc
- else nil
- end
- end
- def dewey
- if defined? @md.classify.dewey \
- and @md.classify.dewey
- ' :dewey: ' + @md.classify.dewey
- else nil
- end
- end
- def oclc
- if defined? @md.classify.oclc \
- and @md.classify.oclc
- ' :oclc: ' + @md.classify.oclc
- else nil
- end
- end
- def pg
- if defined? @md.classify.pg \
- and @md.classify.pg
- ' :pg: ' + @md.classify.pg
- else nil
- end
- end
- def isbn
- if defined? @md.classify.isbn \
- and @md.classify.isbn
- ' :isbn: ' + @md.classify.isbn
- else nil
- end
- end
- self
- end
- def date
- def head
- '@date:'
- end
- def added_to_site
- if defined? @md.date.added_to_site \
- and @md.date.added_to_site
- ' :added_to_site: ' + @md.date.added_to_site
- else nil
- end
- end
- def available
- if defined? @md.date.available \
- and @md.date.available
- ' :available: ' + @md.date.available
- else nil
- end
- end
- def created
- if defined? @md.date.created \
- and @md.date.created
- ' :created: ' + @md.date.created
- else nil
- end
- end
- def issued
- if defined? @md.date.issued \
- and @md.date.issued
- ' :issued: ' + @md.date.issued
- else nil
- end
- end
- def modified
- if defined? @md.date.modified \
- and @md.date.modified
- ' :modified: ' + @md.date.modified
- else nil
- end
- end
- def published
- if defined? @md.date.published \
- and @md.date.published
- ' :published: ' + @md.date.published
- else nil
- end
- end
- def valid
- if defined? @md.date.valid \
- and @md.date.valid
- ' :valid: ' + @md.date.valid
- else nil
- end
- end
- self
- end
- #def make
- # def headings
- # @md.make.headings \
- # ? (' :headings: ' + @md.make.headings) \
- # : nil
- # end
- #end
- self
- end
- def char_enc(str)
- @s=str
- def amp
- if @s \
- and @s.is_a?(String)
- @s=@s.gsub(/&/u,'&amp;')
- end
- @s
- end
- def br
- if @s \
- and @s.is_a?(String)
- @s=@s.gsub(/(?:#{Mx[:br_line]}|\\\\)+/,'<br />')
- end
- @s
- end
- def utf8
- if @s \
- and @s.is_a?(String)
- @s=@s.gsub(/<br(?: \/)?>/u,Mx[:br_paragraph]).
- gsub(/</um,'&lt;').gsub(/>/um,'&gt;').
- #gsub(/</um,'&#60;').gsub(/>/um,'&#62;').
- gsub(/ /um,' '). # space identify
- gsub(/ /um,' '). # space identify
- gsub(/#{Mx[:br_paragraph]}/u,'<br />')
- end
- @s
- end
- self
- end
- def xml_docbook
- def meta_para
- inf_xml=char_enc(@inf).amp
- inf_xml=char_enc(inf_xml).utf8
- inf_xml=char_enc(inf_xml).br
- <<WOK
-#{Ax[:tab]}<#{@tag}>
-#{Ax[:tab]*2}#{inf_xml}
-#{Ax[:tab]}</#{@tag}>
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_alt
- end
- self
- end
- def html_display
- def meta_para
- inf_xml=char_enc(@inf).amp
- inf_xml=char_enc(inf_xml).utf8
- inf_xml=char_enc(inf_xml).br
- %{<p class="norm">
- <b>#{@tag}</b>: #{inf_xml}
-</p>}
- end
- def metadata
- SiSU_Metadata::Summary.new(@md,true).metadata_base
- end
- self
- end
- def xml_sax
- def meta_para
- inf_xml=char_enc(@inf).utf8
- inf_xml=char_enc(inf_xml).br
- <<WOK
-<metadata>
-#{Ax[:tab]}<meta>#{@tag.capitalize}:</meta>
-#{Ax[:tab]}<data class="#{@attrib}">
-#{Ax[:tab]*2}#{inf_xml}
-#{Ax[:tab]}</data>
-</metadata>
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def xml_dom
- def meta_para
- inf_xml=char_enc(inf_xml).amp
- inf_xml=char_enc(@inf).utf8
- inf_xml=char_enc(inf_xml).br
- <<WOK
-#{Ax[:tab]}<header>
-#{Ax[:tab]*2}<meta>#{@tag.capitalize}:</meta>
-#{Ax[:tab]*2}<#{@attrib}>
-#{Ax[:tab]*3}#{inf_xml}
-#{Ax[:tab]*2}</#{@attrib}>
-#{Ax[:tab]}</header>
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def xhtml_scroll
- def meta_para
- inf_xml=char_enc(inf_xml).amp
- inf_xml=char_enc(@inf).utf8
- inf_xml=char_enc(inf_xml).br
- <<WOK
-#{Ax[:tab]}<metadata>
-#{Ax[:tab]}<meta>#{@tag.capitalize}:</meta>
-#{Ax[:tab]}<#{@attrib} class="#{@class}">
-#{Ax[:tab]*2}#{inf_xml}
-#{Ax[:tab]}</#{@attrib}>
-#{Ax[:tab]}</metadata>
- <br />
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def xhtml_display
- def meta_para
- inf_xml=char_enc(@inf).amp
- inf_xml=char_enc(inf_xml).utf8
- inf_xml=char_enc(inf_xml).br
- %{<p class="norm">
- <b>#{@tag}</b>: #{inf_xml}
-</p>}
- end
- def metadata
- SiSU_Metadata::Summary.new(@md,true).metadata_base
- end
- self
- end
- def odf
- def meta_para
- if @inf.is_a?(String)
- @inf=@inf.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;br(?: \/)?&gt;/,'<br />')
- if @inf =~/&/
- inf_array=[]
- word=@inf.scan(/\S+|\n/)
- word.each do |w| # _ - / # | : ! ^ ~
- w=w.gsub(/&nbsp;/,'&#160;')
- if w !~/&\S{2,7}?;/
- w=w.gsub(/&/,'&amp;')
- end
- inf_array << w
- end
- @inf=inf_array.join(' ')
- end
- @inf=@inf.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
- '<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration
- gsub(/(#{Mx[:lnk_c]})#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- '\1<text:a xl:type="simple" xl:href="\2">\2</text:a>') #special case \{ e.g. \}http://url
- @inf=if @inf =~/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/
- @inf.gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- %{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{the_url_decoration.xml_close}}) #http ftp matches with decoration
- else
- @inf.gsub(/(https?:\/\/[^<>()'"\s]+)/,
- %{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{the_url_decoration.xml_close}}) #http ftp matches with decoration
- end
- @inf=@inf.gsub(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/,
- %{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{the_url_decoration.xml_close}}) if @inf !~/http:\/\// # improve upon, document crash where url contains '@' symbol
- end
- <<WOK
-<text:p text:style-name="P1">#{@tag.capitalize}: #{@inf}</text:p>
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def plaintext
- def meta_para
- <<WOK
-
-#{@tag.capitalize}: #{@inf}
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- def manpage
- def meta_para
- <<WOK
-
-.TP
-#{@tag.capitalize}:
-.I #{@inf}
-WOK
- end
- def metadata
- SiSU_Metadata::Summary.new(@md).metadata_base
- end
- self
- end
- end
- class TeX_Metadata
- def initialize(md)
- @md=md
- @br="\\\\\n"
- @make=SiSU_Env::ProcessingSettings.new(md)
- @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
- end
- def meta_para(tag,inf,sc=true)
- inf=((inf.is_a?(String) && sc) ? spec_char(inf) : inf)
- %{\\begin\{bfseries\}#{tag}:\\end\{bfseries\} #{inf}
-}
- end
- def spec_char(inf)
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_characters
- end
- def word_break_points(inf)
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_word_break_points
- end
- def number_break_points(inf)
- SiSU_TeX_Pdf::SpecialCharacters.new(@md,inf).special_number_break_points
- end
- def metadata_tex
- meta=[]
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- language=l[:n]
- tr=SiSU_Translate::Source.new(@md,language)
- if @make.build.links_to_manifest? \
- and not @o_str.dump_or_redirect?
- tag="Document Manifest @"
- inf="#{@br}#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}"
- meta << meta_para(tag,inf)
- end
- if defined? @md.title.full \
- and @md.title.full=~/\S+/
- tag,inf=tr.full_title,@md.title.full
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.author \
- and @md.creator.author=~/\S+/
- tag,inf=tr.author,@md.creator.author
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.translator \
- and @md.creator.translator=~/\S+/
- tag,inf=tr.translator,@md.creator.translator
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.illustrator \
- and @md.creator.illustrator=~/\S+/
- tag,inf=tr.illustrator,@md.creator.illustrator
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.prepared_by \
- and @md.creator.prepared_by=~/\S+/
- tag,inf=tr.prepared_by,@md.creator.prepared_by
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.digitized_by \
- and @md.creator.digitized_by=~/\S+/
- tag,inf=tr.digitized_by,@md.creator.digitized_by
- meta << meta_para(tag,inf)
- end
- if defined? @md.rights.all \
- and @md.rights.all=~/\S+/
- tag,inf=tr.rights,@md.rights.all
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- tag,inf=tr.description,@md.notes.description
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- tag,inf=tr.subject,@md.classify.subject
- meta << meta_para(tag,inf)
- end
- if defined? @md.publisher \
- and @md.publisher=~/\S+/
- tag,inf=tr.publisher,@md.publisher
- meta << meta_para(tag,inf)
- end
- if defined? @md.creator.contributor \
- and @md.creator.contributor=~/\S+/
- tag,inf=tr.contributor,@md.creator.contributor
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- tag,inf=tr.abstract,@md.notes.abstract
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.created \
- and @md.date.created=~/\S+/
- tag,inf=tr.date_created,@md.date.created
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.issued \
- and @md.date.issued=~/\S+/
- tag,inf=tr.date_issued,@md.date.issued
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.available \
- and @md.date.available=~/\S+/
- tag,inf=tr.date_available,@md.date.available
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.modified \
- and @md.date.modified=~/\S+/
- tag,inf=tr.date_modified,@md.date.modified
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.valid \
- and @md.date.valid=~/\S+/
- tag,inf=tr.date_valid,@md.date.valid
- meta << meta_para(tag,inf)
- end
- if defined? @md.date.published \
- and @md.date.published=~/\S+/
- tag,inf=tr.date,@md.date.published
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.topic_register \
- and @md.classify.topic_register=~/\S+/
- tag,inf=tr.topic_register,@md.classify.topic_register
- inf=word_break_points(inf)
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- tag,inf=tr.cls_loc,@md.classify.loc
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- tag,inf=tr.cls_dewey,@md.classify.dewey
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.oclc \
- and @md.classify.oclc=~/\S+/
- tag,inf=tr.cls_oclc,@md.classify.oclc
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.pg \
- and @md.classify.pg=~/\S+/
- tag,inf=tr.cls_gutenberg,@md.classify.pg
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.isbn \
- and @md.classify.isbn=~/\S+/
- tag,inf=tr.cls_isbn,@md.classify.isbn
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- tag,inf=tr.comments,@md.notes.comment
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- tag,inf=tr.prefix_a,@md.notes.prefix_a
- meta << meta_para(tag,inf)
- end
- if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- tag,inf=tr.prefix_b,@md.notes.prefix_b
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- tag,inf=tr.identifier,@md.classify.identifier
- meta << meta_para(tag,inf)
- end
- if defined? @md.original.source \
- and @md.original.source=~/\S+/
- tag,inf=tr.source,@md.original.source
- meta << meta_para(tag,inf)
- end
- if defined? @md.title.language \
- and @md.title.language=~/\S+/
- tag,inf=tr.language,@md.title.language
- meta << meta_para(tag,inf)
- end
- if defined? @md.original.language \
- and @md.original.language=~/\S+/
- tag,inf=tr.language_original,@md.original.language
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- tag,inf=tr.format,@md.classify.format
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- tag,inf=tr.relation,@md.classify.relation
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- tag,inf=tr.coverage,@md.classify.coverage
- meta << meta_para(tag,inf)
- end
- if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- tag,inf=tr.keywords,@md.classify.keywords
- meta << meta_para(tag,inf)
- end
- meta << %{#{@br}\\begin\{bfseries\}Version Information \\end\{bfseries\}}
- if defined? @md.fns \
- and @md.fns=~/\S+/
- fn=spec_char(@md.fns)
- fn=word_break_points(fn)
- fn="\\begin\{footnotesize\}#{fn}\\end\{footnotesize\}"
- tag,inf=tr.sourcefile,fn
- meta << meta_para(tag,inf,false)
- end
- if defined? @md.file_encoding \
- and @md.file_encoding=~/\S+/
- tag,inf='Filetype',@md.file_encoding
- meta << meta_para(tag,inf)
- end
- if defined? @md.dgst \
- and @md.dgst.is_a?(Array)
- hash_of=spec_char(@md.dgst[0])
- hash_of=word_break_points(hash_of)
- dgst=number_break_points(@md.dgst[1])
- tag,inf='Source Digest',"\\begin\{footnotesize\}#{hash_of}\\end\{footnotesize\}\\-\\begin\{scriptsize\}#{dgst}\\end\{scriptsize\}"
- meta << meta_para(tag,inf,false)
- end
- meta << %{#{@br}\\begin\{bfseries\}Generated \\end\{bfseries\}}
- if defined? @md.generated \
- and @md.generated.is_a?(Time)
- tag,inf=tr.last_generated,@md.generated
- meta << meta_para(tag,inf)
- end
- if defined? @md.project_details \
- and @md.project_details.version=~/\S+/
- tag=tr.sisu_version
- inf="#{@md.project_details.project} " +
- "#{@md.project_details.version} " +
- "of #{@md.project_details.date_stamp} " +
- "(#{@md.project_details.date})"
- meta << meta_para(tag,inf)
- end
- if defined? @md.ruby_version \
- and @md.ruby_version=~/\S+/
- tag,inf=tr.ruby_version,@md.ruby_version
- meta << meta_para(tag,inf)
- end
- meta
- end
- end
-end
-__END__
-if @md.title
- x=[
- @md.title.main,
- @md.title.sub,
- @md.title.edition,
- @md.title.note,
- @md.title.short,
- @md.title.full,
- @md.title.language,
- @md.title.language_char
- ]
- x.each {|y| p y if y}
-end
-if @md.creator
- x=[
- @md.creator.author,
- @md.creator.author_detail,
- @md.creator.contributor,
- @md.creator.contributor_detail,
- @md.creator.illustrator,
- @md.creator.illustrator_detail,
- @md.creator.photographer,
- @md.creator.photographer_detail,
- @md.creator.translator,
- @md.creator.translator_detail,
- @md.creator.audio,
- @md.creator.audio_detail,
- @md.creator.digitized_by,
- @md.creator.digitized_by_detail,
- @md.creator.prepared_by,
- @md.creator.prepared_by_detail
- ]
- x.each {|y| p y if y}
-end
-if @md.rights
- x=[
- @md.rights.copyright.text,
- @md.rights.copyright.translation,
- @md.rights.copyright.illustrations,
- @md.rights.copyright.photographs,
- @md.rights.copyright.digitization,
- @md.rights.copyright.audio,
- @md.rights.license,
- @md.rights.all
- ]
- x.each {|y| p y if y}
-end
-if @md.classify
- x=[
- @md.classify.coverage,
- @md.classify.relation,
- @md.classify.subject,
- @md.classify.topic_register,
- @md.classify.type,
- @md.classify.identifier,
- @md.classify.loc,
- @md.classify.dewey,
- @md.classify.oclc,
- @md.classify.pg,
- @md.classify.isbn,
- ]
- x.each {|y| p y if y}
-end
-if @md.date
- x=[
- @md.date.added_to_site,
- @md.date.available,
- @md.date.created,
- @md.date.issued,
- @md.date.modified,
- @md.date.published,
- @md.date.valid
- ]
- x.each {|y| p y if y}
-end
-#if @md.language
-# p @md.language.document
-# p @md.language.document_char
-# p @md.language.original
-# p @md.language.original_char
-#end
-if @md.make
- x=[
- @md.make.headings,
- @md.make.num_top,
- @md.make.breaks,
- @md.make.bold,
- @md.make.italics,
- @md.make.emphasis,
- @md.make.plaintext_wrap,
- @md.make.texpdf_font,
- @md.make.promo,
- @md.make.ad,
- @md.make.manpage
- ]
- x.each {|y| p y if y}
-end
-if @md.current_publisher # @md.publisher
- x=[
- @md.current_publisher
- ]
- x.each {|y| p y if y}
-end
-if @md.original
- x=[
- @md.original.publisher,
- @md.original.language,
- @md.original.language_char,
- @md.original.source,
- @md.original.institution,
- @md.original.nationality
- ]
- x.each {|y| p y if y}
-end
-if @md.notes
- x=[
- @md.notes.abstract,
- @md.notes.comment,
- @md.notes.description,
- @md.notes.history,
- @md.notes.prefix
- ]
- x.each {|y| p y if y}
-end