aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v2/shared_xml.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v2/shared_xml.rb')
-rw-r--r--lib/sisu/v2/shared_xml.rb698
1 files changed, 698 insertions, 0 deletions
diff --git a/lib/sisu/v2/shared_xml.rb b/lib/sisu/v2/shared_xml.rb
new file mode 100644
index 00000000..d70e0808
--- /dev/null
+++ b/lib/sisu/v2/shared_xml.rb
@@ -0,0 +1,698 @@
+# coding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997 - 2010, 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.jus.uio.no/sisu/gpl.fsf/toc.html>
+ <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
+ <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
+
+ * 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>
+
+ * Download:
+ <http://www.jus.uio.no/sisu/SiSU/download.html>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: common file for xml generation
+=end
+module SiSU_XML_munge
+ class Trans
+ require "#{SiSU_lib}/defaults" # defaults.rb
+ def initialize(md)
+ @md=md
+ @sys=SiSU_Env::System_call.new
+ @dir=SiSU_Env::Info_env.new(@md.fns)
+ @brace_url=SiSU_Viz::Skin.new.url_decoration
+ if @md.sem_tag
+ @ab ||=semantic_tags.default
+ end
+ end
+ def semantic_tags
+ def default
+ {
+ :pub => 'publication',
+ :conv => 'convention',
+ :vol => 'volume',
+ :pg => 'page',
+ :cty => 'city',
+ :org => 'organization',
+ :uni => 'university',
+ :dept => 'department',
+ :fac => 'faculty',
+ :inst => 'institute',
+ :co => 'company',
+ :com => 'company',
+ :conv => 'convention',
+ :dt => 'date',
+ :y => 'year',
+ :m => 'month',
+ :d => 'day',
+ :ti => 'title',
+ :au => 'author',
+ :ed => 'editor', #editor?
+ :v => 'version', #edition
+ :n => 'name',
+ :fn => 'firstname',
+ :mn => 'middlename',
+ :ln => 'lastname',
+ :in => 'initials',
+ :qt => 'quote',
+ :ct => 'cite',
+ :ref => 'reference',
+ :ab => 'abreviation',
+ :def => 'define',
+ :desc => 'description',
+ :trans => 'translate',
+ }
+ end
+ self
+ end
+ def char_enc #character encode
+ def utf8(dob='')
+ if @sys.locale =~/utf-?8/i # instead ucs for utf8 #require 'iconv' ? Iñtërnâtiônàlizætiøn
+ str=if defined? dob.obj; dob.obj
+ elsif dob.class==String; dob
+ end
+ if str
+ #¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûü
+ #¢£¥§©ª«®°±²³µ¶¹º»¼½¾×÷
+ str.gsub!(/</um,'&#60;') # '&lt;' # &#060;
+ str.gsub!(/>/um,'&#62;') # '&gt;' # &#062;
+ str.gsub!(/¢/um,'&#162;') # '&cent;' # &#162;
+ str.gsub!(/£/um,'&#163;') # '&pound;' # &#163;
+ str.gsub!(/¥/um,'&#165;') # '&yen;' # &#165;
+ str.gsub!(/§/um,'&#167;') # '&sect;' # &#167;
+ str.gsub!(/©/um,'&#169;') # '&copy;' # &#169;
+ str.gsub!(/ª/um,'&#170;') # '&ordf;' # &#170;
+ str.gsub!(/«/um,'&#171;') # '&laquo;' # &#171;
+ str.gsub!(/®/um,'&#174;') # '&reg;' # &#174;
+ str.gsub!(/°/um,'&#176;') # '&deg;' # &#176;
+ str.gsub!(/±/um,'&#177;') # '&plusmn;' # &#177;
+ str.gsub!(/²/um,'&#178;') # '&sup2;' # &#178;
+ str.gsub!(/³/um,'&#179;') # '&sup3;' # &#179;
+ str.gsub!(/µ/um,'&#181;') # '&micro;' # &#181;
+ str.gsub!(/¶/um,'&#182;') # '&para;' # &#182;
+ str.gsub!(/¹/um,'&#185;') # '&sup1;' # &#185;
+ str.gsub!(/º/um,'&#186;') # '&ordm;' # &#186;
+ str.gsub!(/»/um,'&#187;') # '&raquo;' # &#187;
+ str.gsub!(/¼/um,'&#188;') # '&frac14;' # &#188;
+ str.gsub!(/½/um,'&#189;') # '&frac12;' # &#189;
+ str.gsub!(/¾/um,'&#190;') # '&frac34;' # &#190;
+ str.gsub!(/×/um,'&#215;') # '&times;' # &#215;
+ str.gsub!(/÷/um,'&#247;') # '&divide;' # &#247;
+ str.gsub!(/¿/um,'&#191;') # '&iquest;' # &#191;
+ str.gsub!(/À/um,'&#192;') # '&Agrave;' # &#192;
+ str.gsub!(/Á/um,'&#193;') # '&Aacute;' # &#193;
+ str.gsub!(/Â/um,'&#194;') # '&Acirc;' # &#194;
+ str.gsub!(/Ã/um,'&#195;') # '&Atilde;' # &#195;
+ str.gsub!(/Ä/um,'&#196;') # '&Auml;' # &#196;
+ str.gsub!(/Å/um,'&#197;') # '&Aring;' # &#197;
+ str.gsub!(/Æ/um,'&#198;') # '&AElig;' # &#198;
+ str.gsub!(/Ç/um,'&#199;') # '&Ccedil;' # &#199;
+ str.gsub!(/È/um,'&#200;') # '&Egrave;' # &#200;
+ str.gsub!(/É/um,'&#201;') # '&Eacute;' # &#201;
+ str.gsub!(/Ê/um,'&#202;') # '&Ecirc;' # &#202;
+ str.gsub!(/Ë/um,'&#203;') # '&Euml;' # &#203;
+ str.gsub!(/Ì/um,'&#204;') # '&Igrave;' # &#204;
+ str.gsub!(/Í/um,'&#205;') # '&Iacute;' # &#205;
+ str.gsub!(/Î/um,'&#206;') # '&Icirc;' # &#206;
+ str.gsub!(/Ï/um,'&#207;') # '&Iuml;' # &#207;
+ str.gsub!(/Ð/um,'&#208;') # '&ETH;' # &#208;
+ str.gsub!(/Ñ/um,'&#209;') # '&Ntilde;' # &#209;
+ str.gsub!(/Ò/um,'&#210;') # '&Ograve;' # &#210;
+ str.gsub!(/Ó/um,'&#211;') # '&Oacute;' # &#211;
+ str.gsub!(/Ô/um,'&#212;') # '&Ocirc;' # &#212;
+ str.gsub!(/Õ/um,'&#213;') # '&Otilde;' # &#213;
+ str.gsub!(/Ö/um,'&#214;') # '&Ouml;' # &#214;
+ str.gsub!(/Ø/um,'&#216;') # '&Oslash;' # &#216;
+ str.gsub!(/Ù/um,'&#217;') # '&Ugrave;' # &#217;
+ str.gsub!(/Ú/um,'&#218;') # '&Uacute;' # &#218;
+ str.gsub!(/Û/um,'&#219;') # '&Ucirc;' # &#219;
+ str.gsub!(/Ü/um,'&#220;') # '&Uuml;' # &#220;
+ str.gsub!(/Ý/um,'&#221;') # '&Yacute;' # &#221;
+ str.gsub!(/Þ/um,'&#222;') # '&THORN;' # &#222;
+ str.gsub!(/ß/um,'&#223;') # '&szlig;' # &#223;
+ str.gsub!(/à/um,'&#224;') # '&agrave;' # &#224;
+ str.gsub!(/á/um,'&#225;') # '&aacute;' # &#225;
+ str.gsub!(/â/um,'&#226;') # '&acirc;' # &#226;
+ str.gsub!(/ã/um,'&#227;') # '&atilde;' # &#227;
+ str.gsub!(/ä/um,'&#228;') # '&auml;' # &#228;
+ str.gsub!(/å/um,'&#229;') # '&aring;' # &#229;
+ str.gsub!(/æ/um,'&#230;') # '&aelig;' # &#230;
+ str.gsub!(/ç/um,'&#231;') # '&ccedil;' # &#231;
+ str.gsub!(/è/um,'&#232;') # '&egrave;' # &#232;
+ str.gsub!(/é/um,'&#233;') # '&acute;' # &#233;
+ str.gsub!(/ê/um,'&#234;') # '&circ;' # &#234;
+ str.gsub!(/ë/um,'&#235;') # '&euml;' # &#235;
+ str.gsub!(/ì/um,'&#236;') # '&igrave;' # &#236;
+ str.gsub!(/í/um,'&#237;') # '&acute;' # &#237;
+ str.gsub!(/î/um,'&#238;') # '&icirc;' # &#238;
+ str.gsub!(/ï/um,'&#239;') # '&iuml;' # &#239;
+ str.gsub!(/ð/um,'&#240;') # '&eth;' # &#240;
+ str.gsub!(/ñ/um,'&#241;') # '&ntilde;' # &#241;
+ str.gsub!(/ò/um,'&#242;') # '&ograve;' # &#242;
+ str.gsub!(/ó/um,'&#243;') # '&oacute;' # &#243;
+ str.gsub!(/ô/um,'&#244;') # '&ocirc;' # &#244;
+ str.gsub!(/õ/um,'&#245;') # '&otilde;' # &#245;
+ str.gsub!(/ö/um,'&#246;') # '&ouml;' # &#246;
+ str.gsub!(/ø/um,'&#248;') # '&oslash;' # &#248;
+ str.gsub!(/ù/um,'&#250;') # '&ugrave;' # &#250;
+ str.gsub!(/ú/um,'&#251;') # '&uacute;' # &#251;
+ str.gsub!(/û/um,'&#252;') # '&ucirc;' # &#252;
+ str.gsub!(/ü/um,'&#253;') # '&uuml;' # &#253;
+ str.gsub!(/þ/um,'&#254;') # '&thorn;' # &#254;
+ str.gsub!(/ÿ/um,'&#255;') # '&yuml;' # &#255;
+ str.gsub!(/‘/um,'&#8216;') # '&lsquo;' # &#8216;
+ str.gsub!(/’/um,'&#8217;') # '&rsquo;' # &#8217;
+ str.gsub!(/“/um,'&#8220;') # &ldquo; # &#8220;
+ str.gsub!(/”/um,'&#8221;') # &rdquo; # &#8221;
+ str.gsub!(/–/um,'&#8211;') # &ndash; # &#8211;
+ str.gsub!(/—/um,'&#8212;') # &mdash; # &#8212;
+ str.gsub!(/∝/um,'&#8733;') # &prop; # &#8733;
+ str.gsub!(/∞/um,'&#8734;') # &infin; # &#8734;
+ str.gsub!(/™/um,'&#8482;') # &trade; # &#8482;
+ str.gsub!(/✠/um,'&#10016;') # &cross; # &#10016;
+ str.gsub!(/ /um,' ') # space identify
+ str.gsub!(/ /um,' ') # space identify
+ end
+ dob=if defined? dob.obj
+ dob.obj=str
+ dob
+ elsif dob.class==String; dob
+ end
+ dob
+ end
+ end
+ def html(dob='')
+ if @sys.locale =~/utf-?8/i # instead ucs for utf8 #require 'iconv' ? Iñtërnâtiônàlizætiøn
+ dob.obj.gsub!(/ /u,' ') # space identify
+ dob.obj.gsub!(/ /u,' ') # space identify
+ else
+ dob.obj.gsub!(/¢/u,'&cent;') # &#162;
+ dob.obj.gsub!(/£/u,'&pound;') # &#163;
+ dob.obj.gsub!(/¥/u,'&yen;') # &#165;
+ dob.obj.gsub!(/§/u,'&sect;') # &#167;
+ dob.obj.gsub!(/©/u,'&copy;') # &#169;
+ dob.obj.gsub!(/ª/u,'&ordf;') # &#170;
+ dob.obj.gsub!(/«/u,'&laquo;') # &#171;
+ dob.obj.gsub!(/®/u,'&reg;') # &#174;
+ dob.obj.gsub!(/°/u,'&deg;') # &#176;
+ dob.obj.gsub!(/±/u,'&plusmn;') # &#177;
+ dob.obj.gsub!(/²/u,'&sup2;') # &#178;
+ dob.obj.gsub!(/³/u,'&sup3;') # &#179;
+ dob.obj.gsub!(/µ/u,'&micro;') # &#181;
+ dob.obj.gsub!(/¶/u,'&para;') # &#182;
+ dob.obj.gsub!(/¹/u,'&sup1;') # &#185;
+ dob.obj.gsub!(/º/u,'&ordm;') # &#186;
+ dob.obj.gsub!(/»/u,'&raquo;') # &#187;
+ dob.obj.gsub!(/¼/u,'&frac14;') # &#188;
+ dob.obj.gsub!(/½/u,'&frac12;') # &#189;
+ dob.obj.gsub!(/¾/u,'&frac34;') # &#190;
+ dob.obj.gsub!(/×/u,'&times;') # &#215;
+ dob.obj.gsub!(/÷/u,'&divide;') # &#247;
+ dob.obj.gsub!(/¿/u,'&iquest;') # &#191;
+ dob.obj.gsub!(/À/u,'&Agrave;') # &#192;
+ dob.obj.gsub!(/Á/u,'&Aacute;') # &#193;
+ dob.obj.gsub!(/Â/u,'&Acirc;') # &#194;
+ dob.obj.gsub!(/Ã/u,'&Atilde;') # &#195;
+ dob.obj.gsub!(/Ä/u,'&Auml;') # &#196;
+ dob.obj.gsub!(/Å/u,'&Aring;') # &#197;
+ dob.obj.gsub!(/Æ/u,'&AElig;') # &#198;
+ dob.obj.gsub!(/Ç/u,'&Ccedil;') # &#199;
+ dob.obj.gsub!(/È/u,'&Egrave;') # &#200;
+ dob.obj.gsub!(/É/u,'&Eacute;') # &#201;
+ dob.obj.gsub!(/Ê/u,'&Ecirc;') # &#202;
+ dob.obj.gsub!(/Ë/u,'&Euml;') # &#203;
+ dob.obj.gsub!(/Ì/u,'&Igrave;') # &#204;
+ dob.obj.gsub!(/Í/u,'&Iacute;') # &#205;
+ dob.obj.gsub!(/Î/u,'&Icirc;') # &#206;
+ dob.obj.gsub!(/Ï/u,'&Iuml;') # &#207;
+ dob.obj.gsub!(/Ð/u,'&ETH;') # &#208;
+ dob.obj.gsub!(/Ñ/u,'&Ntilde;') # &#209;
+ dob.obj.gsub!(/Ò/u,'&Ograve;') # &#210;
+ dob.obj.gsub!(/Ó/u,'&Oacute;') # &#211;
+ dob.obj.gsub!(/Ô/u,'&Ocirc;') # &#212;
+ dob.obj.gsub!(/Õ/u,'&Otilde;') # &#213;
+ dob.obj.gsub!(/Ö/u,'&Ouml;') # &#214;
+ dob.obj.gsub!(/Ø/u,'&Oslash;') # &#216;
+ dob.obj.gsub!(/Ù/u,'&Ugrave;') # &#217;
+ dob.obj.gsub!(/Ú/u,'&Uacute;') # &#218;
+ dob.obj.gsub!(/Û/u,'&Ucirc;') # &#219;
+ dob.obj.gsub!(/Ü/u,'&Uuml;') # &#220;
+ dob.obj.gsub!(/Ý/u,'&Yacute;') # &#221;
+ dob.obj.gsub!(/Þ/u,'&THORN;') # &#222;
+ dob.obj.gsub!(/ß/u,'&szlig;') # &#223;
+ dob.obj.gsub!(/à/u,'&agrave;') # &#224;
+ dob.obj.gsub!(/á/u,'&aacute;') # &#225;
+ dob.obj.gsub!(/â/u,'&acirc;') # &#226;
+ dob.obj.gsub!(/ã/u,'&atilde;') # &#227;
+ dob.obj.gsub!(/ä/u,'&auml;') # &#228;
+ dob.obj.gsub!(/å/u,'&aring;') # &#229;
+ dob.obj.gsub!(/æ/u,'&aelig;') # &#230;
+ dob.obj.gsub!(/ç/u,'&ccedil;') # &#231;
+ dob.obj.gsub!(/è/u,'&egrave;') # &#232;
+ dob.obj.gsub!(/é/u,'&acute;') # &#233;
+ dob.obj.gsub!(/ê/u,'&circ;') # &#234;
+ dob.obj.gsub!(/ë/u,'&euml;') # &#235;
+ dob.obj.gsub!(/ì/u,'&igrave;') # &#236;
+ dob.obj.gsub!(/í/u,'&acute;') # &#237;
+ dob.obj.gsub!(/î/u,'&icirc;') # &#238;
+ dob.obj.gsub!(/ï/u,'&iuml;') # &#239;
+ dob.obj.gsub!(/ð/u,'&eth;') # &#240;
+ dob.obj.gsub!(/ñ/u,'&ntilde;') # &#241;
+ dob.obj.gsub!(/ò/u,'&ograve;') # &#242;
+ dob.obj.gsub!(/ó/u,'&oacute;') # &#243;
+ dob.obj.gsub!(/ô/u,'&ocirc;') # &#244;
+ dob.obj.gsub!(/õ/u,'&otilde;') # &#245;
+ dob.obj.gsub!(/ö/u,'&ouml;') # &#246;
+ dob.obj.gsub!(/ø/u,'&oslash;') # &#248;
+ dob.obj.gsub!(/ù/u,'&ugrave;') # &#250;
+ dob.obj.gsub!(/ú/u,'&uacute;') # &#251;
+ dob.obj.gsub!(/û/u,'&ucirc;') # &#252;
+ dob.obj.gsub!(/ü/u,'&uuml;') # &#253;
+ dob.obj.gsub!(/þ/u,'&thorn;') # &#254;
+ dob.obj.gsub!(/ÿ/u,'&yuml;') # &#255;
+ dob.obj.gsub!(/‘/u,'&#lsquo;') # &lsquo; # &#8216;
+ dob.obj.gsub!(/’/u,'&#rsquo;') # &rsquo; # &#8217;
+ dob.obj.gsub!(/“/u,'&ldquo;') # &ldquo; # &#8220;
+ dob.obj.gsub!(/”/u,'&rdquo;') # &rdquo; # &#8221;
+ dob.obj.gsub!(/–/u,'&ndash;') # &ndash; # &#8211;
+ dob.obj.gsub!(/—/u,'&mdash;') # &mdash; # &#8212;
+ dob.obj.gsub!(/∝/u,'&prop;') # &prop; # &#8733;
+ dob.obj.gsub!(/∞/u,'&infin;') # &infin; # &#8734;
+ dob.obj.gsub!(/™/u,'&trade;') # &trade; # &#8482;
+ dob.obj.gsub!(/✠/u,'&#10016;') # &#10016;
+ #par.obja.gsub!(/✠/u '&dagger;') # &dagger; # &#8224; incorrect replacement †
+ dob.obj.gsub!(/ /u,' ') # space identify
+ dob.obj.gsub!(/ /u,' ') # space identify
+ end
+ end
+ self
+ end
+ def tidywords(wordlist)
+ wordlist.each do |x|
+ #imperfect solution will not catch all possible cases
+ x.gsub!(/&/,'&amp;') unless x =~/&\S+;/
+ x.gsub!(/&([A-Z])/,'&amp;\1')
+ end
+ end
+ def markup(dob='')
+ wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
+ dob.obj=tidywords(wordlist).join(' ').strip
+ unless dob.is=='table'
+ dob.obj.gsub!(/#{Mx[:br_line]}/u,'<br />')
+ dob.obj.gsub!(/#{Mx[:br_paragraph]}/u,'<br />')
+ dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />')
+ end
+ dob.obj.gsub!(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'')
+ dob.obj.gsub!(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;')
+ dob.obj.gsub!(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
+ dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s+)<\s+/,'\1&lt; '); dob.obj.gsub!(/\s+>(\s+|$)/,' &gt;\1')
+ #dob.obj.gsub!(/#{Mx[:fa_emphasis_o]}(.+?)#{Mx[:fa_emphasis_c]}/,'<em>\1</em>') #reinstate
+ dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/m,'<b>\1</b>')
+ dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/m,'<i>\1</i>')
+ dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
+ dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>')
+ dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>')
+ dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>')
+ dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>')
+ dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
+ dob.obj.gsub!(/<:pb>\s*/,'') #Fix
+ dob.obj.gsub!(/<+[-~]#>+/,'')
+ if dob.is !~/^code/
+ #embeds a red-bullet image -->
+ dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>')
+ dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>')
+ dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>')
+ dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
+ dob.obj.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is=='table'
+ dob.obj.gsub!(/#{Mx[:br_page]}\s*/,'')
+ dob.obj.gsub!(/#{Mx[:br_page_new]}\s*/,'')
+ dob.obj.gsub!(/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/,''); dob.obj.gsub!(/<[-~]#>/,'')
+ dob.obj.gsub!(/href="#{Xx[:segment]}/m,'href="')
+ dob.obj.gsub!(/#{Mx[:lnk_o]}([^#{Mx[:lnk_o]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{Mx[:rel_c]}]+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\.\.\/\S+?)#{Mx[:rel_c]}/,
+ '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\2">\1</link>')
+ dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]}/,
+ '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="#\2">\1</link>')
+ dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))[ ]+(\d+)x(\d+)(\s+[^}]+)?#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
+ %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\1" width="\\2" height="\\3" />[\\1] \\4})
+ dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))([ ]+[^}]+)?#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
+ %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\1"/>\\1})
+ dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))[ ]+(\d+)x(\d+)(\s+[^}]+)?#{Mx[:lnk_c]}image/,
+ %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\1" width="\\2" height="\\3" />[\\1] \\4})
+ dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))([ ]+[^}]+)?#{Mx[:lnk_c]}image/,
+ %{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\1"/>\\1})
+ dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
+ '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\2">\1</link>') #watch, compare html_tune
+ dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
+ %{#{@brace_url.xml_open}<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\\1">\\1</link>#{@brace_url.xml_close}})
+ dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
+ '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\1">\1</link>') #escaped urls not linked, deal with later
+ else
+ dob.obj.gsub!(/(^|[^}])_</m,'\1&lt;'); dob.obj.gsub!(/(^|[^}])_>/m,'\1&gt;') #code-block: angle brackets special characters
+ dob.obj.gsub!(/(^|[^}])_</m,'\1&lt;'); dob.obj.gsub!(/(^|[^}])_>/m,'\1&gt;')
+ end
+ dob.obj.gsub!(/#{Dx[:url_o]}/,"#{Dx[:url_o_xml]}")
+ dob.obj.gsub!(/#{Dx[:url_c]}/,"#{Dx[:url_c_xml]}")
+ dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/m,'&#160;')
+ dob
+ end
+ def markup_light(dob='')
+ dob.obj.gsub!(/\/\{(.+?)\}\//,'<i>\1</i>')
+ dob.obj.gsub!(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>')
+ dob.obj.gsub!(/_\{(.+?)\}_/,'<u>\1</u>')
+ dob.obj.gsub!(/-\{(.+?)\}-/,'<del>\1</del>')
+ dob.obj.gsub!(/<br(\s*\/)?>/,'<br />')
+ dob.obj.gsub!(/<:pb>\s*/,'')
+ dob.obj.gsub!(/<[-~]#>/,'')
+ dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; ') #sort
+ dob.obj.gsub!(/&([^;]{1,5})/,'&amp;\1') #sort, rough estimate, revisit #WATCH found in node not sax
+ dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif))[ ]+.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,
+ "<image.path>#{@dir.url.images_local}\/\\1</image.path>")
+ dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
+ wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
+ dob.obj=tidywords(wordlist).join(' ').strip
+ dob
+ end
+ def markup_fictionbook(dob='')
+ dob.obj.gsub!(/~\{([\d*+]+).+?\}~/,'[\1]')
+ dob.obj.gsub!(/\/\{(.+?)\}\//,'<i>\1</i>')
+ dob.obj.gsub!(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>')
+ dob.obj.gsub!(/_\{(.+?)\}_/,'<u>\1</u>')
+ dob.obj.gsub!(/-\{(.+?)\}-/,'<del>\1</del>')
+ dob.obj.gsub!(/<br(?:\s*\/)?>/,'<br />')
+ dob.obj.gsub!(/<:pb>\s*/,'')
+ dob.obj.gsub!(/<[-~]#>/,'')
+ #temporary -->
+ dob.obj.gsub!(/<:\S+?>/,'')
+ #<-- temporary
+ dob.obj.gsub!(/<[-~]#>/,'')
+ dob.obj.gsub!(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; ') #sort
+ dob.obj.gsub!(/&([^;]{1,5})/,'&amp;\1') #sort, rough estimate, revisit #WATCH found in node not sax
+ dob.obj.gsub!(/(#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif))[ ]+.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,
+ "<image.path>#{@dir.url.images_local}\/\\1</image.path>")
+ dob.obj.gsub!(/&nbsp;|#{Mx[:nbsp]}/,'&#160;')
+ wordlist=dob.obj.scan(/&[#0-9a-z]+;|\S+|\n/) #\n needed for tables, check though added 2005w17
+ dob.obj=tidywords(wordlist).join(' ').strip
+ dob
+ end
+ def markup_group(dob='')
+ dob.obj.gsub!(/</,'&lt;'); dob.obj.gsub!(/>/,'&gt;')
+ dob.obj.gsub!(/&lt;:?br(?:\s+\/)?&gt;/,'<br />')
+ dob.obj.gsub!(/&lt;(link xmlns:xlink=".+?")&gt;/,'<\1>')
+ dob.obj.gsub!(/&lt;(\/link)&gt;/,'<\1>')
+ dob.obj.gsub!(/&lt;(\/?en)&gt;/,'<\1>')
+ dob
+ end
+ def xml_sem_block_paired(matched) # colon depth: many, recurs
+ matched.gsub!(/\b(au):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:au]} depth="many">\\2</sem:#{@ab[:au]}>})
+ matched.gsub!(/\b(vol):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:vol]} depth="many">\\2</sem:#{@ab[:vol]}>})
+ matched.gsub!(/\b(pub):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:pub]} depth="many">\\2</sem:#{@ab[:pub]}>})
+ matched.gsub!(/\b(ref):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ref]} depth="many">\\2</sem:#{@ab[:ref]}>})
+ matched.gsub!(/\b(desc):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:desc]} depth="many">\\2</sem:#{@ab[:desc]}>})
+ matched.gsub!(/\b(conv):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:conv]} depth="many">\\2</sem:#{@ab[:conv]}>})
+ matched.gsub!(/\b(ct):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ct]} depth="many">\\2</sem:#{@ab[:ct]}>})
+ matched.gsub!(/\b(cty):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:cty]} depth="many">\\2</sem:#{@ab[:cty]}>})
+ matched.gsub!(/\b(org):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:org]} depth="many">\\2</sem:#{@ab[:org]}>})
+ matched.gsub!(/\b(dt):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:dt]} depth="many">\\2</sem:#{@ab[:dt]}>})
+ matched.gsub!(/\b(n):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:n]} depth="many">\\2</sem:#{@ab[:n]}>})
+ matched.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m,'<sem:\1 depth="many">\2</sem:\1>')
+ end
+ def xml_semantic_tags(dob)
+ if @md.sem_tag
+ dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
+ dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
+ dob.obj.gsub!(/([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\1)/m) {|c| xml_sem_block_paired(c) }
+ dob.obj.gsub!(/:\{(.+?)\}:au\b/m, %{<sem:#{@ab[:au]} depth="one">\\1</sem:#{@ab[:au]}>})
+ dob.obj.gsub!(/:\{(.+?)\}:n\b/m, %{<sem:#{@ab[:n]} depth="one">\\1</sem:#{@ab[:n]}>})
+ dob.obj.gsub!(/:\{(.+?)\}:ti\b/m, %{<sem:#{@ab[:ti]} depth="one">\\1</sem:#{@ab[:ti]}>})
+ dob.obj.gsub!(/:\{(.+?)\}:ref\b/m, %{<sem:#{@ab[:ref]} depth="one">\\1</sem:#{@ab[:ref]}>})
+ dob.obj.gsub!(/:\{(.+?)\}:desc\b/m, %{<sem:#{@ab[:desc]} depth="one">\\1</sem:#{@ab[:desc]}>})
+ dob.obj.gsub!(/:\{(.+?)\}:cty\b/m, %{<sem:#{@ab[:cty]} depth="one">\\1</sem:#{@ab[:cty]}>})
+ dob.obj.gsub!(/:\{(.+?)\}:org\b/m, %{<sem:#{@ab[:org]} depth="one">\\1</sem:#{@ab[:org]}>})
+ dob.obj.gsub!(/:\{(.+?)\}:([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="one">\1</sem:\2>')
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};ti\b/m, %{<sem:#{@ab[:ti]} depth="zero">\\1</sem:#{@ab[:ti]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};qt\b/m, %{<sem:#{@ab[:qt]} depth="zero">\\1</sem:#{@ab[:qt]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};ref\b/m, %{<sem:#{@ab[:ref]} depth="zero">\\1</sem:#{@ab[:ref]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};ed\b/m, %{<sem:#{@ab[:ed]} depth="zero">\\1</sem:#{@ab[:ed]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};v\b/m, %{<sem:#{@ab[:v]} depth="zero">\\1</sem:#{@ab[:v]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};desc\b/m, %{<sem:#{@ab[:desc]} depth="zero">\\1</sem:#{@ab[:desc]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};def\b/m, %{<sem:#{@ab[:def]} depth="zero">\\1</sem:#{@ab[:def]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};trans\b/m, %{<sem:#{@ab[:trans]} depth="zero">\\1</sem:#{@ab[:trans]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};y\b/m, %{<sem:#{@ab[:y]} depth="zero">\\1</sem:#{@ab[:y]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};ab\b/m, %{<sem:#{@ab[:ab]} depth="zero">\\1</sem:#{@ab[:ab]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};pg\b/m, %{<sem:#{@ab[:pg]} depth="zero">\\1</sem:#{@ab[:pg]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};fn?\b/m, %{<sem:#{@ab[:fn]} depth="zero">\\1</sem:#{@ab[:fn]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};mn?\b/m, %{<sem:#{@ab[:mn]} depth="zero">\\1</sem:#{@ab[:mn]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};ln?\b/m, %{<sem:#{@ab[:ln]} depth="zero">\\1</sem:#{@ab[:ln]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};in\b/m, %{<sem:#{@ab[:in]} depth="zero">\\1</sem:#{@ab[:in]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};uni\b/m, %{<sem:#{@ab[:uni]} depth="zero">\\1</sem:#{@ab[:uni]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};fac\b/m, %{<sem:#{@ab[:fac]} depth="zero">\\1</sem:#{@ab[:fac]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};inst\b/m, %{<sem:#{@ab[:inst]} depth="zero">\\1</sem:#{@ab[:inst]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};dept\b/m, %{<sem:#{@ab[:dpt]} depth="zero">\\1</sem:#{@ab[:dept]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};org\b/m, %{<sem:#{@ab[:org]} depth="zero">\\1</sem:#{@ab[:org]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};com?\b/m, %{<sem:#{@ab[:com]} depth="zero">\\1</sem:#{@ab[:com]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};cty\b/m, %{<sem:#{@ab[:cty]} depth="zero">\\1</sem:#{@ab[:cty]}>})
+ dob.obj.gsub!(/;\{([^}]+(?![;]))\};([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="zero">\1</sem:\2>')
+ end
+ dob
+ end
+ end
+end
+module SiSU_XML_tags #Format
+ require "#{SiSU_lib}/param" # param.rb
+ include SiSU_Param
+ include SiSU_Viz
+ class RDF
+ def initialize(md='',seg_name=[],tracker=0)
+ @full_title=@subtitle=@author=@subject=@description=@publisher=@contributor=@date=@date_created=@date_issued=@date_available=@date_valid=@date_modified=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@copyright=@owner=@keywords=''
+ @md=md
+ @rdfurl=%{ rdf:about="http://www.jus.uio.no/lm/toc"\n}
+ if defined? @md.title.full \
+ and @md.title.full # DublinCore 1 - title
+ @rdf_title=%{ dc.title="#{seg_name}#{@md.title.full}"\n}
+ @full_title=%{ <meta name="dc.title" content="#{@md.title.full}" />\n}
+ end
+ if defined? @md.creator.author \
+ and @md.creator.author=~/\S+/ # DublinCore 2 - creator/author (author)
+ @rdf_author=%{ dc.author="#{@md.creator.author}"\n}
+ content=meta_content_clean(@md.creator.author)
+ @author=%{ <meta name="dc.author" content="#{content}" />\n}
+ end
+ if defined? @md.classify.subject \
+ and @md.classify.subject=~/\S+/ # DublinCore 3 - subject (us library of congress, eric or udc, or schema???)
+ @rdf_subject=%{ dc.subject="#{@md.classify.subject}"\n}
+ content=meta_content_clean(@md.classify.subject)
+ @subject=%{ <meta name="dc.subject" content="#{content}" />\n}
+ end
+ if defined? @md.notes.description \
+ and @md.notes.description=~/\S+/ # DublinCore 4 - description
+ @rdf_description=%{ dc.description="#{@md.notes.description}"\n}
+ content=meta_content_clean(@md.notes.description)
+ @description=%{ <meta name="dc.description" content="#{content}" />\n}
+ end
+ if defined? @md.publisher \
+ and @md.publisher # DublinCore 5 - publisher (current copy published by)
+ @rdf_publisher=%{ dc.publisher="#{@md.publisher}"\n}
+ content=meta_content_clean(@md.publisher)
+ @publisher=%{ <meta name="dc.publisher" content="#{content}" />\n}
+ end
+ if defined? @md.creator.contributor \
+ and @md.creator.contributor=~/\S+/ # DublinCore 6 - contributor
+ @rdf_contributor=%{ dc.contributor="#{@md.creator.contributor}"\n}
+ content=meta_content_clean(@md.creator.contributor)
+ @contributor=%{ <meta name="dc.contributor" content="#{content}" />\n}
+ end
+ if defined? @md.date.published \
+ and @md.date.published=~/\S+/ # DublinCore 7 - date year-mm-dd
+ @rdf_date=%{ dc.date="#{@md.date.published}"\n}
+ @date=%{ <meta name="dc.date" content="#{@md.date.published}" #{@md.date_scheme} />\n} # fix @md.date_scheme
+ end
+ if defined? @md.date.created \
+ and @md.date.created=~/\S+/ # DublinCore 7 - date.created year-mm-dd
+ @rdf_date_created=%{ dc.date.created="#{@md.date.created}"\n}
+ @date_created=%{ <meta name="dc.date.created" content="#{@md.date.created}" #{@md.date_scheme} />\n}
+ end
+ if defined? @md.date.issued \
+ and @md.date.issued=~/\S+/ # DublinCore 7 - date.issued year-mm-dd
+ @rdf_date_issued=%{ dc.date.issued="#{@md.date.issued}"\n}
+ @date_issued=%{ <meta name="dc.date.issued" content="#{@md.date.issued}" #{@md.date_scheme} />\n}
+ end
+ if defined? @md.date.available \
+ and @md.date.available=~/\S+/ # DublinCore 7 - date.available year-mm-dd
+ @rdf_date_available=%{ dc.date.available="#{@md.date.available}"\n}
+ @date_available=%{ <meta name="dc.date.available" content="#{@md.date.available}" #{@md.date_scheme} />\n}
+ end
+ if defined? @md.date.valid \
+ and @md.date.valid=~/\S+/ # DublinCore 7 - date.valid year-mm-dd
+ @rdf_date_valid=%{ dc.date.valid="#{@md.date.valid}"\n}
+ @date_valid=%{ <meta name="dc.date.valid" content="#{@md.date.valid}" #{@md.date_scheme} />\n}
+ end
+ if defined? @md.date.modified \
+ and @md.date.modified=~/\S+/ # DublinCore 7 - date.modified year-mm-dd
+ @rdf_date_modified=%{ dc.date.modified="#{@md.date.modified}"\n}
+ @date_modified=%{ <meta name="dc.date.modified" content="#{@md.date.modified}" #{@md.date_scheme} />\n}
+ end
+ if defined? @md.type \
+ and @md.type # DublinCore 8 - type (genre eg. report, convention etc)
+ @rdf_type=%{ dc.type="#{@md.type}"\n}
+ content=meta_content_clean(@md.type)
+ @type=%{ <meta name="dc.type" content="#{content}" />\n}
+ end
+ if defined? @md.classify.format \
+ and @md.classify.format=~/\S+/ # DublinCore 9 - format (use your mime type)
+ @rdf_format=%{ dc.format="#{@md.classify.format}"\n}
+ content=meta_content_clean(@md.classify.format)
+ @format=%{ <meta name="dc.format" content="#{content}" />\n}
+ end
+ if defined? @md.classify.identifier \
+ and @md.classify.identifier=~/\S+/ # DublinCore 10 - identifier (your identifier, could use urn which is free)
+ @rdf_identifier=%{ dc.identifier="#{@md.classify.identifier}"\n}
+ content=meta_content_clean(@md.classify.identifier)
+ @identifier=%{ <meta name="dc.identifier" content="#{content}" />\n}
+ end
+ if defined? @md.original.source \
+ and @md.original.source=~/\S+/ # DublinCore 11 - source (document source)
+ @rdf_source=%{ dc.source="#{@md.original.source}"\n}
+ content=meta_content_clean(@md.original.source)
+ @source=%{ <meta name="dc.source" content="#{content}" />\n}
+ end
+ if defined? @md.title.language \
+ and @md.title.language=~/\S+/ # DublinCore 12 - language (English)
+ @rdf_language=%{ dc.language="#{@md.title.language}"\n}
+ @language=%{ <meta name="dc.language" content="#{@md.title.language}" />\n}
+ end
+ if defined? @md.original.language \
+ and @md.original.language=~/\S+/
+ @rdf_language_original=%{ dc.language="#{@md.original.language}"\n}
+ @language_original=%{ <meta name="dc.language" content="#{@md.original.language}" />\n}
+ end
+ if defined? @md.classify.relation \
+ and @md.classify.relation=~/\S+/ # DublinCore 13 - relation
+ @rdf_relation=%{ dc.relation="#{@md.classify.relation}"\n}
+ content=meta_content_clean(@md.classify.relation)
+ @relation=%{ <meta name="dc.relation" content="#{content}" />\n}
+ end
+ if defined? @md.classify.coverage \
+ and @md.classify.coverage=~/\S+/ # DublinCore 14 - coverage
+ @rdf_coverage=%{ dc.coverage="#{@md.classify.coverage}"\n}
+ content=meta_content_clean(@md.classify.coverage)
+ @coverage=%{ <meta name="dc.coverage" content="#{content}" />\n}
+ end
+ if defined? @md.rights.all \
+ and @md.rights.all # DublinCore 15 - rights
+ @rdf_rights=%{ dc.rights="#{@md.rights.all}"\n}
+ content=meta_content_clean(@md.rights.all)
+ @rights=%{ <meta name="dc.rights" content="#{content}" />\n}
+ end
+ content=meta_content_clean(@md.keywords)
+ @keywords=%{ <meta name="keywords" content="#{content}" />\n} if @md.keywords
+ @vz=SiSU_Env::Get_init.instance.skin
+ end
+ def meta_content_clean(content='')
+ content
+ unless content.nil?
+ content.tr!('"',"'")
+ content=SiSU_XML_munge::Trans.new(@md).char_enc.utf8(content)
+ end
+ content
+ end
+ def rdfseg #segHead
+ rdftoc
+ end
+ def comment_xml(extra='')
+ generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version]
+ lastdone="Last Generated on: #{Time.now}"
+ rubyv="Ruby version: #{@md.ruby_version}"
+ sc=if @md.sc_info
+ "Source file: #{@md.sc_filename} version: #{@md.sc_number} of: #{@md.sc_date}"
+ else ''
+ end
+ if extra.empty?
+<<WOK
+<!-- Document processing information:
+ * #{generator}
+ * #{rubyv}
+ * #{sc}
+ * #{lastdone}
+ * SiSU http://www.jus.uio.no/sisu
+-->
+WOK
+ else
+<<WOK
+<!-- Document processing information:
+ * #{extra}
+ * #{generator}
+ * #{rubyv}
+ * #{sc}
+ * #{lastdone}
+ * SiSU http://www.jus.uio.no/sisu
+-->
+WOK
+ end
+ end
+ def comment_xml_sax
+ desc='SiSU XML, SAX type representation'
+ comment_xml(desc)
+ end
+ def comment_xml_node
+ desc='SiSU XML, Node type representation'
+ comment_xml(desc)
+ end
+ def comment_xml_dom
+ desc='SiSU XML, DOM type representation'
+ comment_xml(desc)
+ end
+ def metatag_html #values strung together, because some empty, and resulting output (line breaks) is much better
+<<WOK
+#{@full_title}#{@subtitle}#{@author}#{@subject}#{@description}#{@publisher}#{@contributor}#{@date}#{@date_created}#{@date_issued}#{@date_available}#{@date_valid}#{@date_modified}#{@type}#{@format}#{@identifier}#{@source}#{@language}#{@relation}#{@coverage}#{@rights}#{@copyright}#{@owner}
+#{@vz.txt_generator}
+#{@vz.png_ico}
+WOK
+ end
+ end
+end
+module SiSU_Tables
+ require "#{SiSU_lib}/xml_tables" # xml_tables.rb
+end
+__END__