aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/develop/xml_shared.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/develop/xml_shared.rb')
-rw-r--r--lib/sisu/develop/xml_shared.rb665
1 files changed, 0 insertions, 665 deletions
diff --git a/lib/sisu/develop/xml_shared.rb b/lib/sisu/develop/xml_shared.rb
deleted file mode 100644
index 03e5a2a1..00000000
--- a/lib/sisu/develop/xml_shared.rb
+++ /dev/null
@@ -1,665 +0,0 @@
-# encoding: utf-8
-=begin
-
-* Name: SiSU
-
-** Description: documents, structuring, processing, publishing, search
-*** common file for xml generation
-
-** Author: Ralph Amissah
-
-** 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/xml_shared.rb;hb=HEAD>
-
-** Ralph Amissah
- <ralph@amissah.com>
- <ralph.amissah@gmail.com>
-
-=end
-module SiSU_XML_Munge
- require_relative 'xml_parts' # xml_parts.rb
- class Trans
- include SiSU_Parts_XML
- def initialize(md)
- @md=md
- @sys=SiSU_Env::SystemCall.new
- @dir=SiSU_Env::InfoEnv.new(@md.fns)
- 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 # String#encode Iñtërnâtiônàlizætiøn
- str=if defined? dob.obj then dob.obj
- elsif dob.is_a?(String) then dob
- end
- if str
- #¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûü
- #¢£¥§©ª«®°±²³µ¶¹º»¼½¾×÷
- str=str.gsub(/</um,'&#60;'). # '&lt;' # &#060;
- gsub(/>/um,'&#62;'). # '&gt;' # &#062;
- gsub(/¢/um,'&#162;'). # '&cent;' # &#162;
- gsub(/£/um,'&#163;'). # '&pound;' # &#163;
- gsub(/¥/um,'&#165;'). # '&yen;' # &#165;
- gsub(/§/um,'&#167;'). # '&sect;' # &#167;
- gsub(/©/um,'&#169;'). # '&copy;' # &#169;
- gsub(/ª/um,'&#170;'). # '&ordf;' # &#170;
- gsub(/«/um,'&#171;'). # '&laquo;' # &#171;
- gsub(/®/um,'&#174;'). # '&reg;' # &#174;
- gsub(/°/um,'&#176;'). # '&deg;' # &#176;
- gsub(/±/um,'&#177;'). # '&plusmn;' # &#177;
- gsub(/²/um,'&#178;'). # '&sup2;' # &#178;
- gsub(/³/um,'&#179;'). # '&sup3;' # &#179;
- gsub(/µ/um,'&#181;'). # '&micro;' # &#181;
- gsub(/¶/um,'&#182;'). # '&para;' # &#182;
- gsub(/¹/um,'&#185;'). # '&sup1;' # &#185;
- gsub(/º/um,'&#186;'). # '&ordm;' # &#186;
- gsub(/»/um,'&#187;'). # '&raquo;' # &#187;
- gsub(/¼/um,'&#188;'). # '&frac14;' # &#188;
- gsub(/½/um,'&#189;'). # '&frac12;' # &#189;
- gsub(/¾/um,'&#190;'). # '&frac34;' # &#190;
- gsub(/×/um,'&#215;'). # '&times;' # &#215;
- gsub(/÷/um,'&#247;'). # '&divide;' # &#247;
- gsub(/¿/um,'&#191;'). # '&iquest;' # &#191;
- gsub(/À/um,'&#192;'). # '&Agrave;' # &#192;
- gsub(/Á/um,'&#193;'). # '&Aacute;' # &#193;
- gsub(/Â/um,'&#194;'). # '&Acirc;' # &#194;
- gsub(/Ã/um,'&#195;'). # '&Atilde;' # &#195;
- gsub(/Ä/um,'&#196;'). # '&Auml;' # &#196;
- gsub(/Å/um,'&#197;'). # '&Aring;' # &#197;
- gsub(/Æ/um,'&#198;'). # '&AElig;' # &#198;
- gsub(/Ç/um,'&#199;'). # '&Ccedil;' # &#199;
- gsub(/È/um,'&#200;'). # '&Egrave;' # &#200;
- gsub(/É/um,'&#201;'). # '&Eacute;' # &#201;
- gsub(/Ê/um,'&#202;'). # '&Ecirc;' # &#202;
- gsub(/Ë/um,'&#203;'). # '&Euml;' # &#203;
- gsub(/Ì/um,'&#204;'). # '&Igrave;' # &#204;
- gsub(/Í/um,'&#205;'). # '&Iacute;' # &#205;
- gsub(/Î/um,'&#206;'). # '&Icirc;' # &#206;
- gsub(/Ï/um,'&#207;'). # '&Iuml;' # &#207;
- gsub(/Ð/um,'&#208;'). # '&ETH;' # &#208;
- gsub(/Ñ/um,'&#209;'). # '&Ntilde;' # &#209;
- gsub(/Ò/um,'&#210;'). # '&Ograve;' # &#210;
- gsub(/Ó/um,'&#211;'). # '&Oacute;' # &#211;
- gsub(/Ô/um,'&#212;'). # '&Ocirc;' # &#212;
- gsub(/Õ/um,'&#213;'). # '&Otilde;' # &#213;
- gsub(/Ö/um,'&#214;'). # '&Ouml;' # &#214;
- gsub(/Ø/um,'&#216;'). # '&Oslash;' # &#216;
- gsub(/Ù/um,'&#217;'). # '&Ugrave;' # &#217;
- gsub(/Ú/um,'&#218;'). # '&Uacute;' # &#218;
- gsub(/Û/um,'&#219;'). # '&Ucirc;' # &#219;
- gsub(/Ü/um,'&#220;'). # '&Uuml;' # &#220;
- gsub(/Ý/um,'&#221;'). # '&Yacute;' # &#221;
- gsub(/Þ/um,'&#222;'). # '&THORN;' # &#222;
- gsub(/ß/um,'&#223;'). # '&szlig;' # &#223;
- gsub(/à/um,'&#224;'). # '&agrave;' # &#224;
- gsub(/á/um,'&#225;'). # '&aacute;' # &#225;
- gsub(/â/um,'&#226;'). # '&acirc;' # &#226;
- gsub(/ã/um,'&#227;'). # '&atilde;' # &#227;
- gsub(/ä/um,'&#228;'). # '&auml;' # &#228;
- gsub(/å/um,'&#229;'). # '&aring;' # &#229;
- gsub(/æ/um,'&#230;'). # '&aelig;' # &#230;
- gsub(/ç/um,'&#231;'). # '&ccedil;' # &#231;
- gsub(/è/um,'&#232;'). # '&egrave;' # &#232;
- gsub(/é/um,'&#233;'). # '&acute;' # &#233;
- gsub(/ê/um,'&#234;'). # '&circ;' # &#234;
- gsub(/ë/um,'&#235;'). # '&euml;' # &#235;
- gsub(/ì/um,'&#236;'). # '&igrave;' # &#236;
- gsub(/í/um,'&#237;'). # '&acute;' # &#237;
- gsub(/î/um,'&#238;'). # '&icirc;' # &#238;
- gsub(/ï/um,'&#239;'). # '&iuml;' # &#239;
- gsub(/ð/um,'&#240;'). # '&eth;' # &#240;
- gsub(/ñ/um,'&#241;'). # '&ntilde;' # &#241;
- gsub(/ò/um,'&#242;'). # '&ograve;' # &#242;
- gsub(/ó/um,'&#243;'). # '&oacute;' # &#243;
- gsub(/ô/um,'&#244;'). # '&ocirc;' # &#244;
- gsub(/õ/um,'&#245;'). # '&otilde;' # &#245;
- gsub(/ö/um,'&#246;'). # '&ouml;' # &#246;
- gsub(/ø/um,'&#248;'). # '&oslash;' # &#248;
- gsub(/ù/um,'&#250;'). # '&ugrave;' # &#250;
- gsub(/ú/um,'&#251;'). # '&uacute;' # &#251;
- gsub(/û/um,'&#252;'). # '&ucirc;' # &#252;
- gsub(/ü/um,'&#253;'). # '&uuml;' # &#253;
- gsub(/þ/um,'&#254;'). # '&thorn;' # &#254;
- gsub(/ÿ/um,'&#255;'). # '&yuml;' # &#255;
- gsub(/‘/um,'&#8216;'). # '&lsquo;' # &#8216;
- gsub(/’/um,'&#8217;'). # '&rsquo;' # &#8217;
- gsub(/“/um,'&#8220;'). # &ldquo; # &#8220;
- gsub(/”/um,'&#8221;'). # &rdquo; # &#8221;
- gsub(/–/um,'&#8211;'). # &ndash; # &#8211;
- gsub(/—/um,'&#8212;'). # &mdash; # &#8212;
- gsub(/∝/um,'&#8733;'). # &prop; # &#8733;
- gsub(/∞/um,'&#8734;'). # &infin; # &#8734;
- gsub(/™/um,'&#8482;'). # &trade; # &#8482;
- gsub(/✠/um,'&#10016;'). # &cross; # &#10016;
- gsub(/ /um,' '). # space identify
- gsub(/ /um,' ') # space identify
- end
- dob=if defined? dob.obj
- dob.obj=str
- dob
- elsif dob.is_a?(String)
- str
- end
- dob
- end
- end
- def html(dob='')
- if @sys.locale =~/utf-?8/i # instead ucs for utf8 # String#encode Iñtërnâtiônàlizætiøn
- dob.obj=dob.obj.gsub(/ /u,' '). # space identify
- gsub(/ /u,' ') # space identify
- end
- end
- self
- end
- def tidywords(wordlist)
- wordlist_new=[]
- wordlist.each do |x|
- #imperfect solution will not catch all possible cases
- x=x.gsub(/&/,'&amp;') unless x =~/&\S+;/
- x=x.gsub(/&([A-Z])/,'&amp;\1')
- wordlist_new << x
- end
- wordlist_new
- 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=dob.obj.gsub(/#{Mx[:br_line]}/u,'<br />').
- gsub(/#{Mx[:br_paragraph]}/u,'<br />').
- gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />')
- end
- dob.obj=dob.obj.gsub(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'').
- gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
- gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').
- gsub(/(^|#{Mx[:gl_c]}|\s+)<\s+/,'\1&lt; ').gsub(/\s+>(\s+|$)/,' &gt;\1').
- #gsub(/#{Mx[:fa_emphasis_o]}(.+?)#{Mx[:fa_emphasis_c]}/,'<em>\1</em>'). #reinstate
- gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/m,'<b>\1</b>').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/m,'<i>\1</i>').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>').
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>').
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>').
- gsub(/<:pb>\s*/,''). #Fix
- gsub(/<+[-~]#>+/,'')
- if dob.is !=:code
- #embeds a red-bullet image -->
- dob.obj=dob.obj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>')
- dob.obj=dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is==:table
- dob.obj=dob.obj.gsub(/#{Mx[:br_page]}\s*/,'').
- gsub(/#{Mx[:br_page_new]}\s*/,'').
- gsub(/#{Mx[:br_page_line]}\s*/,'').
- gsub(/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/,'').
- gsub(/<[-~]#>/,'').
- gsub(/href="#{Xx[:segment]}/m,'href="').
- 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:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\2">\1</link>').
- 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:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="../\2">\1</link>').
- gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]}/,
- '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="#\2">\1</link>').
- gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))[ ]+(\d+)x(\d+)(\s+[^}]+)?#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1" width="\\2" height="\\3" />[\\1] \\4}).
- gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))([ ]+[^}]+)?#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1"/>\\1}).
- gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))[ ]+(\d+)x(\d+)(\s+[^}]+)?#{Mx[:lnk_c]}image/,
- %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1" width="\\2" height="\\3" />[\\1] \\4}).
- gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}[ ]*(\S+?\.(?:jpg|png|gif))([ ]+[^}]+)?#{Mx[:lnk_c]}image/,
- %{<image xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:actuate="onLoad" xl:show="embed" xl:href="#{@md.file.output_path.xml.rel_image}/\\1"/>\\1}).
- gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\2">\1</link>'). #watch, compare html_tune
- gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
- %{#{the_url_decoration.xml_open}<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\\1">\\1</link>#{the_url_decoration.xml_close}}).
- gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
- '<link xmlns:xl="http://www.w3.org/1999/xlink" xl:type="simple" xl:href="\1">\1</link>') #escaped urls not linked, deal with later
- else
- dob.obj=dob.obj.gsub(/</m,'&lt;').gsub(/>/m,'&gt;')
- end
- if dob.of==:block
- dob.obj=dob.obj.gsub(/#{Mx[:gl_bullet]}/,'● ')
- end
- dob.obj=dob.obj.gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
- %{#{the_url_decoration.xml_open}\\1#{the_url_decoration.xml_close}}).
- gsub(/#{Dx[:url_o]}/,"#{Dx[:url_o_xml]}").
- gsub(/#{Dx[:url_c]}/,"#{Dx[:url_c_xml]}").
- gsub(/&nbsp;|#{Mx[:nbsp]}/m,'&#160;').
- gsub(/;&([^#]|(?:[^gl][^t]|[^a][^m][^p]|[^n][^b][^s][^p])[^;])/,';&amp;\1') # pattern not to match
- dob
- end
- def markup_light(dob='')
- dob.obj=dob.obj.gsub(/\/\{(.+?)\}\//,'<i>\1</i>').
- gsub(/[*!]\{(.+?)\}[*!]/,'<b>\1</b>').
- gsub(/_\{(.+?)\}_/,'<u>\1</u>').
- gsub(/-\{(.+?)\}-/,'<del>\1</del>').
- gsub(/<br(\s*\/)?>/,'<br />').
- gsub(/<:pb>\s*/,'').
- gsub(/<[-~]#>/,'').
- gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; '). #sort
- gsub(/&([^;]{1,5})/,'&amp;\1'). #sort, rough estimate, revisit #WATCH found in node not sax
- gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif))[ ]+.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,
- "<image.path>#{@md.file.output_path.xml.rel_image}\/\\1</image.path>").
- gsub(/&nbsp;|#{Mx[:nbsp]}/,'&#160;').
- gsub(/;&([^#]|(?:[^gl][^t]|[^a][^m][^p]|[^n][^b][^s][^p])[^;])/,';&amp;\1') # pattern not to match
- 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 clean(str)
- str=str.gsub(/#{Mx[:gl_o]}(#[0-9]{3})#{Mx[:gl_c]}/u,'&\1;').
- gsub(/#{Mx[:gl_o]}#([a-z]{2,4})#{Mx[:gl_c]}/u,'&\1;')
- end
- def markup_fictionbook(str='',is='')
- str=str.gsub(/#{Mx[:en_a_o]}([\d+*]+).+?#{Mx[:en_a_c]}/m,'<a xl:href="#footnote\1" type="note">[\1]</a>').
- gsub(/&/,'&amp;'). #sort
- gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
- gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; '). #sort
- gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
- str=str.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless is==:table
- str=str.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>').
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>').
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>'). # tt, kbd
- gsub(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg|gif)).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/m,'<image xl:href="#\1" />').
- gsub(/#{Mx[:url_o]}(.+?)#{Mx[:url_c]}/,"#{Dx[:url_o]}\\1#{Dx[:url_c]}").
- gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'<a name="\1"></a>').
- gsub(/#{Mx[:gl_bullet]}/m,'● '). #&nbsp; not available
- gsub(/#{Mx[:nbsp]}/,' '). #&nbsp; not available
- gsub(/<(p|br)>/,'<\1 />')
- clean(str)
- end
- def markup_docbook(dob='') # work on, initially a copy of fictionbook!
- if dob.is !=:code
- dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s*(.+?)#{Mx[:en_a_c]}/m,'<footnote><para><!-- fn\1 -->\2</para></footnote>').
- gsub(/\\\\/,'</para><para>').
- gsub(/&/,'&amp;'). #sort
- gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
- gsub(/(^|#{Mx[:gl_c]}|\s)&\s+/,'\1&amp; '). #sort
- gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;')
- dob.obj=dob.obj.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br />') unless dob.is==:table
- dob.obj=dob.obj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>').
- gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>').
- gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>').
- gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'<sup>\1</sup>').
- gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'<sub>\1</sub>').
- gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>').
- gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>').
- gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').
- gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'<tt>\1</tt>'). # tt, kbd
- gsub(/#{Mx[:lnk_o]}\s*(\S+?)\.(png|jpg|gif).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}|image)/m,
- %{#{Xx[:split]}:spaces0:<figure id="fig-\\1">\n:spaces1:<title></title>\n:spaces1:<graphic fileref="../../_sisu/image/\\1.\\2" align="center" width="50%"></graphic>\n:spaces0:</figure>#{Xx[:split]}}). # common image location, else use ./images
- gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(.+?)#{Mx[:url_c]}/,
- '<ulink url="\2">\1</ulink>').
- gsub(/#{Mx[:url_o]}(.+?)#{Mx[:url_c]}/,
- '<ulink url="\1">\1</ulink>').
- gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'<a name="\1"></a>').
- gsub(/#{Mx[:gl_bullet]}/m,'● '). #&nbsp; not available
- gsub(/#{Mx[:nbsp]}/,' '). #&nbsp; not available
- gsub(/<(p|br)>/,'<\1 />')
- dob.obj=clean(dob.obj)
- elsif dob.is == :code
- dob.obj=dob.obj.gsub(/&/m,'&amp;'). #sort
- gsub(/</,'&lt;').gsub(/>/,'&gt;')
- else # p dob.is ??
- end
- dob
- end
- def markup_group(dob='')
- dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;:?br(?:\s+\/)?&gt;/,'<br />').
- gsub(/&lt;(link xmlns:xl=".+?")&gt;/,'<\1>').
- gsub(/&lt;(\/link)&gt;/,'<\1>').
- gsub(/&lt;(\/?en)&gt;/,'<\1>')
- dob
- end
- def markup_block(dob='')
- dob.obj=dob.obj.gsub(/</,'&lt;').gsub(/>/,'&gt;').
- gsub(/&lt;:?br(?:\s+\/)?&gt;/,'<br />').
- gsub(/&lt;(link xmlns:xl=".+?")&gt;/,'<\1>').
- gsub(/&lt;(\/link)&gt;/,'<\1>').
- gsub(/&lt;(\/?en)&gt;/,'<\1>')
- dob
- end
- def xml_sem_block_paired(matched) # colon depth: many, recurs
- matched=matched.gsub(/\b(au):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:au]} depth="many">\\2</sem:#{@ab[:au]}>}).
- gsub(/\b(vol):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:vol]} depth="many">\\2</sem:#{@ab[:vol]}>}).
- gsub(/\b(pub):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:pub]} depth="many">\\2</sem:#{@ab[:pub]}>}).
- gsub(/\b(ref):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ref]} depth="many">\\2</sem:#{@ab[:ref]}>}).
- gsub(/\b(desc):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:desc]} depth="many">\\2</sem:#{@ab[:desc]}>}).
- gsub(/\b(conv):\{(.+?)\}:\1\b/m,%{<sem:#{@ab[:conv]} depth="many">\\2</sem:#{@ab[:conv]}>}).
- gsub(/\b(ct):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:ct]} depth="many">\\2</sem:#{@ab[:ct]}>}).
- gsub(/\b(cty):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:cty]} depth="many">\\2</sem:#{@ab[:cty]}>}).
- gsub(/\b(org):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:org]} depth="many">\\2</sem:#{@ab[:org]}>}).
- gsub(/\b(dt):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:dt]} depth="many">\\2</sem:#{@ab[:dt]}>}).
- gsub(/\b(n):\{(.+?)\}:\1\b/m, %{<sem:#{@ab[:n]} depth="many">\\2</sem:#{@ab[:n]}>}).
- 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=dob.obj.gsub(/:\{(.+?)\}:au\b/m, %{<sem:#{@ab[:au]} depth="one">\\1</sem:#{@ab[:au]}>}).
- gsub(/:\{(.+?)\}:n\b/m, %{<sem:#{@ab[:n]} depth="one">\\1</sem:#{@ab[:n]}>}).
- gsub(/:\{(.+?)\}:ti\b/m, %{<sem:#{@ab[:ti]} depth="one">\\1</sem:#{@ab[:ti]}>}).
- gsub(/:\{(.+?)\}:ref\b/m, %{<sem:#{@ab[:ref]} depth="one">\\1</sem:#{@ab[:ref]}>}).
- gsub(/:\{(.+?)\}:desc\b/m, %{<sem:#{@ab[:desc]} depth="one">\\1</sem:#{@ab[:desc]}>}).
- gsub(/:\{(.+?)\}:cty\b/m, %{<sem:#{@ab[:cty]} depth="one">\\1</sem:#{@ab[:cty]}>}).
- gsub(/:\{(.+?)\}:org\b/m, %{<sem:#{@ab[:org]} depth="one">\\1</sem:#{@ab[:org]}>}).
- gsub(/:\{(.+?)\}:([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="one">\1</sem:\2>').
- gsub(/;\{([^}]+(?![;]))\};ti\b/m, %{<sem:#{@ab[:ti]} depth="zero">\\1</sem:#{@ab[:ti]}>}).
- gsub(/;\{([^}]+(?![;]))\};qt\b/m, %{<sem:#{@ab[:qt]} depth="zero">\\1</sem:#{@ab[:qt]}>}).
- gsub(/;\{([^}]+(?![;]))\};ref\b/m, %{<sem:#{@ab[:ref]} depth="zero">\\1</sem:#{@ab[:ref]}>}).
- gsub(/;\{([^}]+(?![;]))\};ed\b/m, %{<sem:#{@ab[:ed]} depth="zero">\\1</sem:#{@ab[:ed]}>}).
- gsub(/;\{([^}]+(?![;]))\};v\b/m, %{<sem:#{@ab[:v]} depth="zero">\\1</sem:#{@ab[:v]}>}).
- gsub(/;\{([^}]+(?![;]))\};desc\b/m, %{<sem:#{@ab[:desc]} depth="zero">\\1</sem:#{@ab[:desc]}>}).
- gsub(/;\{([^}]+(?![;]))\};def\b/m, %{<sem:#{@ab[:def]} depth="zero">\\1</sem:#{@ab[:def]}>}).
- gsub(/;\{([^}]+(?![;]))\};trans\b/m, %{<sem:#{@ab[:trans]} depth="zero">\\1</sem:#{@ab[:trans]}>}).
- gsub(/;\{([^}]+(?![;]))\};y\b/m, %{<sem:#{@ab[:y]} depth="zero">\\1</sem:#{@ab[:y]}>}).
- gsub(/;\{([^}]+(?![;]))\};ab\b/m, %{<sem:#{@ab[:ab]} depth="zero">\\1</sem:#{@ab[:ab]}>}).
- gsub(/;\{([^}]+(?![;]))\};pg\b/m, %{<sem:#{@ab[:pg]} depth="zero">\\1</sem:#{@ab[:pg]}>}).
- gsub(/;\{([^}]+(?![;]))\};fn?\b/m, %{<sem:#{@ab[:fn]} depth="zero">\\1</sem:#{@ab[:fn]}>}).
- gsub(/;\{([^}]+(?![;]))\};mn?\b/m, %{<sem:#{@ab[:mn]} depth="zero">\\1</sem:#{@ab[:mn]}>}).
- gsub(/;\{([^}]+(?![;]))\};ln?\b/m, %{<sem:#{@ab[:ln]} depth="zero">\\1</sem:#{@ab[:ln]}>}).
- gsub(/;\{([^}]+(?![;]))\};in\b/m, %{<sem:#{@ab[:in]} depth="zero">\\1</sem:#{@ab[:in]}>}).
- gsub(/;\{([^}]+(?![;]))\};uni\b/m, %{<sem:#{@ab[:uni]} depth="zero">\\1</sem:#{@ab[:uni]}>}).
- gsub(/;\{([^}]+(?![;]))\};fac\b/m, %{<sem:#{@ab[:fac]} depth="zero">\\1</sem:#{@ab[:fac]}>}).
- gsub(/;\{([^}]+(?![;]))\};inst\b/m, %{<sem:#{@ab[:inst]} depth="zero">\\1</sem:#{@ab[:inst]}>}).
- gsub(/;\{([^}]+(?![;]))\};dept\b/m, %{<sem:#{@ab[:dpt]} depth="zero">\\1</sem:#{@ab[:dept]}>}).
- gsub(/;\{([^}]+(?![;]))\};org\b/m, %{<sem:#{@ab[:org]} depth="zero">\\1</sem:#{@ab[:org]}>}).
- gsub(/;\{([^}]+(?![;]))\};com?\b/m, %{<sem:#{@ab[:com]} depth="zero">\\1</sem:#{@ab[:com]}>}).
- gsub(/;\{([^}]+(?![;]))\};cty\b/m, %{<sem:#{@ab[:cty]} depth="zero">\\1</sem:#{@ab[:cty]}>}).
- gsub(/;\{([^}]+(?![;]))\};([a-z]+(?:[_:.][a-z]+)*)/m,'<sem:\2 depth="zero">\1</sem:\2>')
- end
- dob
- end
- end
-end
-module SiSU_XML_Tags #Format
- require_relative 'dp' # dp.rb
- include SiSU_Param
- class RDF
- include SiSU_Parts_XML
- 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.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.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
- 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.notes.coverage \
- and @md.notes.coverage=~/\S+/ # DublinCore 14 - coverage
- @rdf_coverage=%{ dc.coverage="#{@md.notes.coverage}"\n}
- content=meta_content_clean(@md.notes.coverage)
- @coverage=%{ <meta name="dc.coverage" content="#{content}" />\n}
- end
- if defined? @md.notes.relation \
- and @md.notes.relation=~/\S+/ # DublinCore 13 - relation
- @rdf_relation=%{ dc.relation="#{@md.notes.relation}"\n}
- content=meta_content_clean(@md.notes.relation)
- @relation=%{ <meta name="dc.relation" content="#{content}" />\n}
- end
- if defined? @md.notes.type \
- and @md.notes.type # DublinCore 8 - type (genre eg. report, convention etc)
- @rdf_type=%{ dc.type="#{@md.notes.type}"\n}
- content=meta_content_clean(@md.notes.type)
- @type=%{ <meta name="dc.type" content="#{content}" />\n}
- end
- if defined? @md.notes.format \
- and @md.notes.format=~/\S+/ # DublinCore 9 - format (use your mime type)
- @rdf_format=%{ dc.format="#{@md.notes.format}"\n}
- content=meta_content_clean(@md.notes.format)
- @format=%{ <meta name="dc.format" content="#{content}" />\n}
- end
- #if defined? @md.identifier.sisupod \
- #and @md.identifier.sisupod=~/\S+/ # DublinCore 10 - identifier (your identifier, could use urn which is free)
- # @rdf_identifier=%{ dc.identifier="#{@md.identifier.sisupod}"\n}
- # content=meta_content_clean(@md.identifier.sisupod)
- # @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
- content=meta_content_clean(@md.keywords)
- @keywords=%{ <meta name="keywords" content="#{content}" />\n} if @md.keywords
- end
- 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
- def rdfseg #segHead
- rdftoc
- end
- def comment_xml(extra='')
- generator="Generated by: #{@md.project_details.project} #{@md.project_details.version} of #{@md.project_details.date_stamp} (#{@md.project_details.date})" if @md.project_details.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}
-#{SiSU_Proj_XML::Bits.new.txt_generator}
-#{the_png.ico}
-WOK
- end
- end
-end
-module SiSU_Tables
- require_relative 'xml_tables' # xml_tables.rb
-end
-__END__