# encoding: utf-8
=begin

 * Name: SiSU

 * Description: a framework for document structuring, publishing and search

 * Author: Ralph Amissah

 * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
   2007, 2008, 2009, 2010, 2011, 2012, 2013 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>

 * Download:
   <http://www.sisudoc.org/sisu/en/SiSU/download.html>

 * Git
   <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v4/defaults.rb;hb=HEAD>

 * Ralph Amissah
   <ralph@amissah.com>
   <ralph.amissah@gmail.com>

 ** Description: Default values

=end
$latex_run=nil
module SiSU_Viz
  require 'uri'
  require_relative 'sysenv'                             # sysenv.rb
    include SiSU_Env
  require_relative 'css'                                # css.rb
    include SiSU_Style
  class Defaults
    def initialize
      @fonts='verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman' # 'verdana, arial, georgia, tahoma, sans-serif, helvetica, "times new roman", times, roman'
      @dir=SiSU_Env::InfoEnv.new
      @date=SiSU_Env::InfoDate.new #{@date.year}
      @v=SiSU_Env::InfoVersion.instance.get_version
    end
    #% glyph
    def glyph_bullet # &bullet;
      '&#149;&nbsp;' # [&#149; flagged]
    end
    #% html
    def html_hardspace
      '&nbsp;'
    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
    #% decorate
    def decorate_italics
      'title|article|book|journal'
    end
    def decorate_bold
    end
    def decorate_uppercase
      'surname'
    end
    #% semantic
    def sem_title #dc 1
      'title'
    end
    def sem_article
      'article'
    end
    def sem_book
      'book'
    end
    def sem_journal
      'journal'
    end
    def sem_fullname # (contains: firstname, surname) #issues arise as contains surname etc.
      'fullname'
    end
    def sem_first
      'first'
    end
    def sem_surname
      'surname'
    end
    def sem_middle
      'middle'
    end
    def sem_creator #dc 2 #==fullname (contains: firstname, surname)
      'creator'
    end
    def sem_author #==fullname (contains: firstname, surname)
      'author'
    end
    def sem_editor #==fullname (contains: firstname, surname)
      'editor'
    end
    def sem_illustrator #==fullname (contains: firstname, surname)
      'illustrator'
    end
    def sem_translator #==fullname (contains: firstname, surname)
      'translator'
    end
    def sem_isbn # 10 or 13
      'isbn'
    end
    def sem_isbn_10
      'isbn10'
    end
    def sem_isbn_13
      'isbn13'
    end
    def sem_loc # library of congress
      'loc'
    end
    def sem_dewey
      'dewey'
    end
    def sem_pg # project gutenberg number
      'pg'
    end
    def sem_subject #dc 3
      'subject'
    end
    def sem_date #dc 7
      'date'
    end
    def sem_date_created
      'date_created'
    end
    def sem_date_issued
      'date_issued'
    end
    def sem_date_available
      'date_available'
    end
    def sem_date_valid
      'date_valid'
    end
    def sem_date_modified
      'date_modified'
    end
    def sem_type #dc 8
      'type'
    end
    def sem_description #dc 4
      'description'
    end
    def sem_publisher #dc 5
      'publisher'
    end
    def sem_contributor #dc 6
      'contributor'
    end
    def sem_format #dc 9
      'format'
    end
    def sem_identifier #dc 10
      'identifier'
    end
    def sem_source #dc 11
      'source'
    end
    def sem_language #dc 12
      'language'
    end
    def sem_relation #dc 13
      'source'
    end
    def sem_coverage #dc 14
      'coverage'
    end
    def sem_rights #dc 15
      'rights'
    end
    def sem_copyright
      'copyright'
    end
    def sem_license
      'license'
    end
    def sem_prepared_by
      'prepared_by'
    end
    def sem_digitized_by
      'digitized_by'
    end
    def sem_keywords
      'keywords'
    end
    def sem_comments
      'comments'
    end
    def sem_abstract
      'abstract'
    end
    #% path
    def path_stylesheet_home
      %{  <link rel="stylesheet" href="./#{@dir.path.style}/homepage.css" type="text/css" />}
    end
    #% text #changed from txt to avoid naming conflicts #FOLLOW
    def txt_generator
      %{  <meta name="generator" content="#{@v[:project]} #{@v[:version]} of #{@v[:date_stamp]} (#{@v[:date]}) (n*x and Ruby!)" />
    <link rel="generator" href="http://www.sisudoc.org/" />}
    end
    def txt_generator_comment
      %{  <!- #{@v[:project]} #{@v[:version]} of #{@v[:date_stamp]} (#{@v[:date]}) (n*x and Ruby!)" http://www.sisudoc.org/ ->}
    end
    def txt_hp
      '&nbsp;SiSU'
    end
    def txt_hp_alias
      'SiSU'
    end
    def txt_home
      'SiSU'
    end
    def txt_signature # used in latex/pdf footer
      'SiSU'
    end
    #% url
    def url_urify(uri)
      URI.parse(uri)
    end
    def url_sisu
      'http://www.sisudoc.org/'
    end
    def url_sisudoc
      'http://www.sisudoc.org'
    end
    def url_footer_signature
      'http://www.sisudoc.org/'
    end
    def url_root
      '/sisu' #watch
    end
    def url_root_http
      'http://www.sisudoc.org/' #watch
    end
    def url_home
      'http://www.sisudoc.org/' # used in pdf header
    end
    def url_site #used as stub... where there are subdirectories and is different from home
      url_home
      #'http://www.sisudoc.org/' # used in pdf header
    end
    def url_txt
      'www.sisudoc.org/'
    end
    def url_path_image_base #used for html image display
      "#{Xx[:html_relative2]}_sisu/image"
    end
    def url_path_image #used for html image display
      "#{Xx[:html_relative2]}_sisu/image"
    end
    def url_path_image_sys #used for html image display
      "#{Xx[:html_relative2]}_sisu/image_sys"
    end
    def url_decoration
      def tex_open                     #'{\UseTextSymbol{OML}{<}}'
        Dx[:url_o]
      end
      def tex_close                    #'{\UseTextSymbol{OML}{>}}'
        Dx[:url_c]
      end
      def xml_open                     #'&lt;'
        Dx[:url_o]
      end
      def xml_close                    #'&gt;'
        Dx[:url_c]
      end
      def txt_open
        '<'
      end
      def txt_close
        '>'
      end
      self
    end
    def rel_decoration
      def tex_open                     #'{\UseTextSymbol{OML}{<}}'
        Dx[:rel_o]
      end
      def tex_close                    #'{\UseTextSymbol{OML}{>}}'
        Dx[:rel_c]
      end
      def xml_open                     #'&lt;'
        Dx[:rel_o]
      end
      def xml_close                    #'&gt;'
        Dx[:rel_c]
      end
      def txt_open
        '<'
      end
      def txt_close
        '>'
      end
      self
    end
    #% color
    def color_body
      %{<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">}
    end
    def color_white
      '"#ffffff"'
    end
    def color_black
      '#000000'
    end
    def color_blue_ink
      '#003399'
    end
    def color_blue_tinge
      '#e3ecef'
    end
    def color_blue_grey
      '#8faebf'
    end
    def color_blue_murky
      '#437389'
    end
    def color_beige
      '#f1e8de'
    end
    def color_subtleglow
      '#dddccc'
    end
    def color_glow
      '#fff0c3'
    end
    def color_rose
      '#ffdec9'
    end
    def color_turquoise
      '#1c869b'
    end
    def color_grey_pale
      '#eeeeee'
    end
    def color_grey_medium
      '#cccccc'
    end
    def color_grey
      '#999999'
    end
    def color_yellow_light
      '#fff3b6'
    end
    def color_yellow
      '#ffde14'
    end
    def color_yellow_dark
      '#ffcc00'
    end
    def color_green_light
      '#b7d398'  #  #e2efd5 #b7d398 #b1c999 # '#aed19e'
    end
    def color_green
      '#0a8400'
    end
    def color_green_dark
      '#086800'
    end
    def color_ruby
      '#a00000'
    end
    def color_maroon
      '#800000'
    end
    def color_paper
      %{"#{color_white}"}
    end
    def color_band1
      %{"#{color_white}"}
    end
    def color_band2
      %{"#{color_white}"}
    end
    def color_body
      %{<body bgcolor="#ffffff" text="#000000" link="#003090" lang="en" xml:lang="en">}
    end
    def color_font_face #was font WATCH
      "#{color_black}"
    end
    def color_surround
      %{"#{color_white}"}
    end
    def color_band
      %{"#{color_white}"}
    end
    def color_table1
      'ffffcc'
    end
    def color_table2
      'c0d0f0'
    end
    def color_band1
      '"#ffffff"'
    end
    def color_band2
      '"#ffffff"'
    end
    #% icon
    def icon_ico
      'rb7.ico'
    end
    def icon_sisu
      'sisu.png'
    end
    def icon_manifest
      'b_info.png'
    end
    def icon_doc
      'b_doc.png'
    end
    def icon_toc
      'b_toc.png'
    end
    def icon_wmp
      'b_wmp.png'
    end
    def icon_odf
      'b_odf.png'
    end
    def icon_epub
      'b_epub.png'
    end
    def icon_pdf
      'b_pdf.png'
    end
    def icon_pdf_portrait
      'b_pdf.png'
    end
    def icon_pdf_landscape
      'b_pdf.png'
    end
    def icon_choice
      'b_choice.png'
    end
    def icon_new
      'b_new.png'
    end
    def icon_dot_clear
      'dot_clear.png'
    end
    def icon_dot_white
      'dot_white.png'
    end
    def icon_dot
      icon_dot_white
    end
    def icon_home_button
      'sisu.png'
    end
    def icon_next
      'arrow_next_red.png'
    end
    def icon_previous
      'arrow_prev_red.png'
    end
    def icon_up
      'arrow_up_red.png'
    end
    #% font
    def font_fonts
      @fonts
    end
    def font_face
      %{face="#{font_fonts}"}
    end
    def font_color
      'color="#000000"'
    end
    def font_size_endnote
      'size="3"'
    end
    def font_small
      'size="3"'
    end
    def font_tiny
      'size="2"'
    end
    #% markup
    def markup_italics_list #regular expression of words to be italised
    end
    def markup_bold_list #regular expression of words to be made bold
      'SiSU'
    end
    def markup_make_italic
      if defined? italics_list \
      and italics_list
        make={}
        if italics_list
          r=italics_list.dup
          x=case r
          when /\/i$/; 'i'
          else         ''
          end
          r=r.gsub(/^\/(.+?)\/i?/,'\1').
            gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
          m='\b(' + r + ')\b'
          make[:str]
          make[:regx]=(x =~/i/) \
          ? (/#{m}/i)
          : (/#{m}/)
        else nil
        end
      end
    end
    def markup_make_bold
      if defined? bold_list \
      and not bold_list.empty?
        make={}
        if bold_list
          r=bold_list.dup
          x=case r
          when /\/i$/; 'i'
          else         ''
          end
          r.gsub(/^\/(.+?)\/i?/,'\1').
            gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
          m='\b(' + r + ')\b'
          make[:str]
          make[:regx]=(x =~/i/) \
          ? (/#{m}/i)
          : (/#{m}/)
        else nil
        end
        make
      end
    end
    #% paragraph
    def paragraph_txt
      %{<p class="normal">}
    end
    def paragraph_endnote
      %{<p class="endnote">}
    end
    def paragraph_font_tiny
      %{<font #{font_tiny} #{font_face}>}
    end
    def paragraph_font_small
      %{<font #{font_small} #{font_face}>}
    end
    #% table
    def table_close
      '</td></tr>
</table>'
    end
    def table_width_1
      '"100%"'
    end
    def table_width_2
      '"99%"'
    end
    def table_width_txt
      '"94%"'
    end
    def table_width_txt_r
      '"96%"'
    end
    def table_cellpad_box
      '"20"'
    end
    #% indent
    def indent_level_0
      '"1%"'
    end
    def indent_level_1
      '"4%"'
    end
    def indent_level_2
      '"6%"'
    end
    def indent_level_3
      '"8%"'
    end
    def indent_level_4
      '"10%"'
    end
    #% margin
    def margin_num
      '</p> </td><td width="4%" align="right" valign="top">'
    end
    def margin_numless
      '</td><td width="4%" align="right" valign="top">'
    end
    def margin_num_css
      '</td>
<td width="2%" align="right" valign="top">  '
    end
    def margin_txt_w1
      %{<table summary="" width=#{table_width_txt_r} border="0" bgcolor="white" cellpadding="2" align="center">
<tr><td width="6%" align="right">&nbsp;</td>
<td width="90%" valign="top" align="justify">}
    end
    def margin_txt_w2
      %{<table summary="" width=#{table_width_txt_r} border="0" bgcolor="white" cellpadding="2" align="center">
<tr><td width="10%" align="right">&nbsp;</td>
<td width="86%" valign="top" align="justify">}
    end
    def margin_txt_0
      %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
<tr><td width=#{indent_level_0} align="right">
</td><td valign="top" align="justify">}
    end
    def margin_txt_1
      %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
<tr><td width=#{indent_level_1} align="right"></td><td valign="top" align="justify">}
    end
    def margin_txt_2
      %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
<tr><td width=#{indent_level_2} align="right">
</td>
<td valign="top" align="justify">}
    end
    def margin_txt_3
      %{<table summary="" width=#{table_width_txt} border="0" bgcolor="white" cellpadding="2" align="center">
<tr><td width=#{indent_level_3} align="right">
</td>
<td valign="top" align="justify">}
    end
    def margin_css
      '<table summary="normal text css" width="100%" border="0" bgcolor="white" cellpadding="2" align="center">
<tr><td valign="top" align="justify"> '
    end
    #% png
    def png_ico
      %{  <link rel="shortcut icon" href="../_sisu/image/#{icon_ico}" />}
    end
    def png_sisu #check url path
      %{  <a href="#{@url.sisu}">
    <img border="0" width="160" height="60" src="#{url_path_image}/#{icon_sisu}" alt="SiSU" />
    </a>}
    end
    def png_site
      %{<img src="#{url_path_image}/#{icon_site}" alt="@" border="0" />}
    end
    def png_nav
      %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_bluebell}" alt="Contents" />}
    end
    def png_manifest
      %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_manifest}" alt="Document Manifest" />}
    end
    def png_doc
      %{<img border="0" height="15" width="15" src="#{url_path_image_sys}/#{icon_doc}" alt="Full Text" />}
    end
    def png_toc
      %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_toc}" alt="TOC linked" />}
    end
    def png_odf
      %{<img border="0" height="18" width="18" src="#{url_path_image_sys}/#{icon_odf}" alt="ODF/ODT" />}
    end
    def png_epub
      %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_epub}" alt="EPUB" />}
    end
    def png_pdf
      %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_pdf}" alt="PDF" />}
    end
    def png_pdf_portrait
      %{<img border="0" height="18" width="15" src="#{url_path_image_sys}/#{icon_pdf}" alt="PDF portrait" />}
    end
    def png_pdf_landscape
      %{<img border="0" height="15" width="18" src="#{url_path_image_sys}/#{icon_pdf}" alt="PDF landscape" />}
    end
    def png_home
      #dir=SiSU_Env::InfoEnv.new #(@fns)
      %{<img border="0" src="#{url_path_image_base}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
      #%{<img border="0" src="#{dir.url.images_local}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
    end
    def png_home_button
      rel=@dir.path_rel_links.html_scroll_2
      %{<img border="0" src="#{rel}/#{icon_home_button}" alt="#{txt_home} --&gt;" />}
    end
    #% png_nav #not currently used
    #% nav_txt
    def nav_txt_homepage
      %{  <font face="#{font_fonts}" size="2">
    &nbsp;home&nbsp;
  </font> }
    end
    def nav_txt_toc_link
      %{  <font face="#{font_fonts}" size="2">
    &nbsp;&nbsp;toc&nbsp;
  </font> }
    end
    def nav_txt_doc_link
      %{  <font face="#{font_fonts}" size="2">
    &nbsp;scroll&nbsp;
  </font> }
    end
    def nav_txt_manifest
      #{png_manifest}&nbsp;document&nbsp;manifest
      %{  <font face="#{font_fonts}" size="2">
    [&nbsp;document&nbsp;manifest&nbsp;]
  </font> }
    end
    def nav_txt_concordance
      %{  <font face="#{font_fonts}" size="2">
    &nbsp;&nbsp;A-Z&nbsp;
  </font> }
    end
    def nav_txt_pdf_portrait
      %{  <font face="#{font_fonts}" size="2">
    &nbsp;pdf&nbsp;
  </font> }
    end
    def nav_txt_pdf_landscape
      %{  <font face="#{font_fonts}" size="2">
    &nbsp;pdf&nbsp;
  </font> }
    end
    #% banner
    def banner_home_button_only
      %{<a href="#{url_site}/">
    #{png_home_button}
  </a>}
    end
    def banner_band #yellow_dark now white
      %{<table summary="home button" width="100%" border="0" cellpadding="3" bgcolor= "#ffffff" align="center">
<tr><td align="left" valign="middle" bgcolor="#{color_white}">
  <a href="#{url_site}/" target="_top">
    #{png_home}
  </a>
</td>
<td width="90%">
#{table_close}}
    end
    def banner_instrument_cover_band_scr
      '<table summary="scroll instrument cover band" width="100%" border="0" cellpadding="8" bgcolor="#ffffff" align="center">
<tr><td align="center">'
    end
    def banner_instrument_cover_band_seg
      '<table summary="segment instrument cover band, title, author, location" width="100%" border="0" cellpadding="8" bgcolor="#ffffff" align="center">
<tr><td align="center">'
    end
    #% widget
    def widget_promo # Array used to build promo from list.yml and promo.yml
    #  ['sisu_icon','sisu','sisu_search_libre','open_society','fsf','ruby']
    end
    def widgets_open
<<WOK
<table summary="SiSU summary" bgcolor="#ffffff" cellpadding="4" border="0">
WOK
    end
    def widget_sisu_text
<<WOK
  <p class="tiny"><font color="#666666" size="2">
    Output generated by
    <a href="#{url_sisu}">
      #{@v[:project]}
    </a>
    #{@v[:version]} #{@v[:date]} (#{@v[:date_stamp]})
  </font></p>
WOK
    end
    def widget_sisu
<<WOK
<!-- widget sisu -->
<tr><td valign="top" width="100%">
<!-- SiSU Rights -->
#{widget_sisu_text}
</td></tr>
WOK
    end
    def widget_sisu_verbose
<<WOK
<!-- widget sisu -->
<tr><td valign="top" width="10%">
  <p class="tiny_left"><font color="#666666" size="2">
    <a href="#{url_sisu}">
      <img border="0" src="../_sisu/image/sisu.png" alt="SiSU" width="120" height="39" />
    </a>
  </font></p>
</td><td valign="top" width="45%">
<!-- SiSU Rights -->
  <p class="tiny_left"><font color="#666666" size="2">
    Output generated by
    <a href="#{url_sisu}">
      #{@v[:project]}
    </a>
    #{@v[:version]} #{@v[:date]} (#{@v[:date_stamp]})
    <br />
    <a href="#{url_sisu}">
      <b>#{@v[:project]}</b>
    </a>
    Copyright <sup>&copy;</sup> Ralph Amissah
    1997, current #{@date.year_static}.
    All Rights Reserved.
    <br />
    <a href="#{url_sisu}">
      #{@v[:project]}
    </a>
    is software for document structuring, publishing and search,
    <br />
    <a href="#{url_sisu}">
      www.sisudoc.org/
    </a>
    and
    <a href="#{url_sisudoc}">
      www.sisudoc.org
    </a>
  <br />
    <i>w3 since October 3 1993</i>
    <a href="mailto:ralph@amissah.com">
      ralph@amissah.com
    </a>
  </font></p>
</td><td valign="top" width="45%">
  <p class="tiny_left"><font color="#666666" size="2">
    #{@v[:project]} using:
    <br />Standard SiSU markup syntax,
    <br />Standard SiSU meta-markup syntax, and the
    <br />Standard SiSU <u>object citation numbering</u> and system, (object/text positioning system)
  <br />
    Copyright <sup>&copy;</sup> Ralph Amissah 1997, current #{@date.year_static}.
    All Rights Reserved.
  </font></p>
</td></tr>
WOK
    end
    def widget_way_better
      <<WOK
<!-- widget way better -->
<tr><td valign="top" width="10%">
  <p class="tiny_left"><font color="#666666" size="2">
    <a href="http://www.gnu.org/licenses/gpl.html">
      <img border="0" src="../_sisu/image/gplv3_free_software.png" alt="GPLv3" width="127" height="51" />
    </a>
  </font></p>
</td><td valign="top" width="45%">
  <p class="tiny_left"><font color="#666666" size="2">
    <a href="#{url_sisu}">
      #{@v[:project]}
    </a>
    is released under
    <a href="http://www.gnu.org/licenses/gpl.html">GPLv3</a>
    or later,
    #{url_decoration.xml_open}<a href="http://www.gnu.org/licenses/gpl.html">http://www.gnu.org/licenses/gpl.html</a>#{url_decoration.xml_close}
  </font></p>
</td><td valign="top" width="45%">
  <p class="tiny_left"><font color="#666666" size="2">
    #{@v[:project]}, developed using
    <a href="http://www.ruby-lang.org/en/">
      Ruby
    </a>
    on
    <a href="http://www.debian.org/">
      Debian/Gnu/Linux
    </a>
    software infrastructure,
    with the usual GPL (or OSS) suspects.
  <br />
    Better - "performance, reliability, scalability, security &amp; total cost of ownership"
    [not to mention flexibility &amp; choice] use of and adherence to open standards (where practical and fair) and it is software libré.
  <br />
    Get With the Future
    <a href="http://www.sisudoc.org/">
      Way Better!
    </a>
  </font></p>
</td></tr>
WOK
    end
    #% credits
    def credits_sisu_manifest
      widget_sisu_text
    end
    def credits_sisu
      x=%{<div class="substance">
<table summary="SiSU summary" bgcolor="#ffffff" cellpadding="4" border="0">
<tr><td>
  #{widget_sisu}
  #{widget_way_better}
</table></div>}
      ''
    end
    def credits_splash
    end
    def credits_sisu_epub
      x=%{<div class="substance">
<p class="center"><a href="http://www.openebook.org"><b>EPUB</b></a> generated by <a href="http://www.sisudoc.org"><b>#{@v[:project]}</b></a> v#{@v[:version]}, GPL3</p>
</div>}
      ''
    end
  end
  class Home < Defaults
    def initialize
      @v=SiSU_Env::InfoVersion.instance.get_version
      @dir=SiSU_Env::InfoEnv.new
      @date=SiSU_Env::InfoDate.new #{@date.year}
    end
    def redirect
      <<WOK
<html><head>
<title>SiSU</title>
<meta http-equiv="refresh" content="0, url=http://www.sisudoc.org/sisu/SiSU/">
</head>
<body>
SiSU informtion provided at <a href="http://www.sisudoc.org/sisu/SiSU/">www.sisudoc.org/sisu/SiSU</a><p />
If your browser supports redirection, you will be escorted there shortly.
</body>
</html>
WOK
    end
    def homepage
      <<WOK
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>SiSU information Structuring Universe - Structured
information, Serialized Units - software for electronic texts,
documents, books, digital libraries in plaintext, html, XHTML, XML,
ODF (OpenDocument), EPUB, LaTeX, PDF, SQL (PostgreSQL and SQLite), and
for search</title>
<meta name="dc.title"
  content="SiSU information Structuring Universe, Structured information Serialised Units, #{@date.year_static}" />
<meta name="dc.creator" content="Ralph Amissah" />
<meta name="dc.subject" content=
"document structuring, ebook, publishing, PDF, LaTeX, XML, ODF, EPUB, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" />
<meta name="dc.publisher" content=
"SiSU http://www.sisudoc.org/" />
<meta name="dc.language" content="en" />
<meta name="dc.rights" content="Copyright Ralph Amissah" />
<meta name="generator" content="#{@v[:project]} #{@v[:version]} of #{@v[:date_stamp]} (#{@v[:date]}) (n*x and Ruby!)" />
<link rel="generator" href="http://www.sisudoc.org/sisu/SiSU" />
<link rel="stylesheet" href="./#{@dir.path.style}/html.css" type="text/css" />
<link rel="shortcut icon" href="./_sisu/image/rb7.ico" />
</head>
<body>
<div id="top_band">
<p class="top_band_image">
  <a href="http://www.sisudoc.org/sisu/SiSU" target="_top">
    <img border="0" src="./_sisu/image/sisu.png" alt="SiSU &gt;&gt;">
  </a>
</p>
<h1 class="top_band">
  SiSU information Structuring Universe
</h1>
<h2 class="top_band_tiny">
  Structured information, Serialized Units
  &nbsp;&nbsp;
  <a href="http://www.sisudoc.org" target="_top">
    &lt;www.sisudoc.org&gt;
  </a>
  &nbsp;&nbsp;or&nbsp;&nbsp;
  <a href="http://www.jus.uio.no/sisu/" target="_top">
    &lt;www.jus.uio.no/sisu/&gt;
  </a>
</h2>
<h2 class="top_band_tiny">
software for electronic texts, document collections, books, digital libraries, and search,
</h2>
<h2 class="top_band_tiny">
 with "atomic search" and text positioning system (shared text citation numbering: "<i>ocn</i>")
</h2>
<h2 class="top_band_tiny">
outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), EPUB, LaTeX, PDF, SQL (PostgreSQL and SQLite)
</h2>
</div>
<div id="top_band_search">
</div>
<div id="column_left">
<p class="bold">
  <a href="http://www.sisudoc.org/sisu/SiSU" target="_top">
    SiSU
  </a>
</p>
<p class="tiny">
  ---
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/sisu_manual/" target="_top">
    SiSU Manual
  </a>
</p>
<p class="tiny">
  ---
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/SiSU/1.html#summary" target="_top">
    What does SiSU do? Summary
  </a>
</p>
<p class="tiny">
  ---
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/SiSU/examples.html" target="_top">
    Book Samples and Markup Examples
  </a>
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/sisu_site_metadata/harvest_authors.html" target="_top">
   sorted by Author (sisu metadata)
  </a>
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/sisu_site_metadata/harvest_topics.html" target="_top">
   sorted by Topic (sisu metadata)
  </a>
</p>
<p class="tiny">
  ---
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/SiSU/1.html#ocn" target="_top">
    Object Citation Numbering - <i>ocn</i>
  </a>
</p>
<p class="tiny">(a text positioning system)</p>
<p class="tiny">
  ---
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/SiSU/1.html#search" target="_top">
    Search - "<i>granular</i>"
  </a>
</p>
<p class="tiny">
  Of interest is the ease of streaming documents to a relational database, at an object (roughly paragraph) level and the potential for increased precision in the presentation of matches that results thereby. The ability to serialise html, LaTeX, XML, SQL, (whatever) is also inherent in / incidental to the design. For a description see the
  <a href="http://www.sisudoc.org/sisu/sisu_provisional_patent_application_200408" target="_top">
    abandoned U.S. provisional patent application
  </a>
</p>
<p class="tiny">
  ---
</p>
<p class="small">
  <a href="http://git.sisudoc.org/" target="_top">
    <b>Development, SCM - Git</b>
  </a><br />
  <a href="http://git.sisudoc.org/" target="_top">
    &lt;http://git.sisudoc.org&gt;
  </a>
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/SiSU/download.html" target="_top">
    <b>Download</b> alternatives
  </a>
</p>
<p class="tiny">
  ---
</p>
<p class="small">
  <a href="http://www.sisudoc.org/sisu/SiSU/changelog.html" target="_top">
    Changelog
  </a>
</p>
<p class="tiny">
  ---
</p>
<p class="small">
  License, SiSU is licensed under
  <a href="http://www.gnu.org/licenses/gpl.html" target="_top">
    GPLv3 or later
  </a>
</p>
<p class="tiny">
  Gnu / Linux / Unix
</p>
<p class="tiny">
  Note: the placement of SiSU documents on the Net predate the release of SiSU.
</p>
</div>
<div id="column_center">
<p class="bold">
SiSU Short Description
</p>
<p>
SiSU is a comprehensive future-proofing electronic document management system.  Built-in search capabilities allow you to search across multiple documents and highlight matches in an easy-to-follow format.  Paragraph numbering system allows you to cite your electronic documents in a consistent manner across multiple file formats.  Multiple format outputs allow you to display your documents in plain text, PDF (portrait and horizontal), OpenDocument format, HTML, or e-book reading format (EPUB).  Word mapping allows you to easily create word indexes for your documents.  Future-proofing flexibility allows you to quickly adapt your documents to newer output formats as needed.  All these and many other features are achieved with little or no additional work on your documents - by marking up the documents with a super simplistic markup language, leaving the SiSU engine to handle the heavy-lifting processing.
</p>
<p>
Potential users of SiSU include individual authors who want to publish their books or articles electronically to reach a broad audience, web publishers who want to provide multiple channels of access to their electronic documents, or any organizations which centrally manage a medium or large set of electronic documents, especially governmental organizations which may prefer to keep their documents in easily accessible yet non-proprietary formats.
</p>
<p>
SiSU is an Open Source project initiated and led by Ralph Amissah <a href="mailto:ralph.amissah@gmail.com">&lt;ralph.amissah@gmail.com&gt;</a> and can be contacted via mailing list <a href="http://lists.sisudoc.org/listinfo/sisu">&lt;http://lists.sisudoc.org/listinfo/sisu&gt;</a> at <a href="mailto:sisu@lists.sisudoc.org">&lt;sisu@lists.sisudoc.org&gt;</a>. SiSU is licensed under the GNU General Public License.
</p>
<p class="bold">
  For less markup than the most elementary HTML you can have more.
</p>
<p><a href="http://www.sisudoc.org/sisu/SiSU" target="_top"><b>SiSU</b> - Structured information, Serialized Units</a> for electronic documents, is an information structuring, transforming, publishing and search framework with the following features:</p>
<p>
<b>(i)</b> markup syntax:
<b>(a)</b>
simpler than html,
<b>(b)</b>
mnemonic, influenced by mail/messaging/wiki markup practices,
<b>(c)</b> human readable, and easily writable,</p>
<p><b>(ii)</b>
<b>(a)</b>
minimal markup requirement,
<b>(b)</b>
single file marked up for multiple outputs,</p>
<p><b>
notes
</b></p>
<p class="small">
<b>*</b>
documents are prepared in a single UTF-8 file using a minimalistic mnemonic syntax. Typical literature, documents like "War and Peace" require almost no markup, and most of the headers are optional.
</p>
<p class="small">
<b>*</b>
markup is easily readable/parsed by the human eye, (basic markup is simpler and more sparse than the most basic html), [this may also be converted to XML representations of the same input/source document].
</p>
<p class="small">
<b>*</b>
markup defines document structure (this may be done once in a header pattern-match description, or for heading levels individually); basic text attributes (bold, italics, underscore, strike-through etc.) as required; and semantic information related to the document (header information, extended beyond the Dublin core and easily further extended as required); the headers may also contain processing instructions.
</p>
<p><b>(iii)</b>
<b>(a)</b>
multiple outputs primarily industry established and institutionally accepted open standard formats, include amongst others: plaintext (UTF-8); html; (structured) XML; ODF (Open Document text); EPUB; LaTeX; PDF (via LaTeX); SQL type databases (currently PostgreSQL and SQLite). Also produces: concordance files; document content certificates (md5 or sha256 digests of headings, paragraphs, images etc.) and html manifests (and sitemaps of content).

<b>(b)
</b>
takes advantage of the strengths implicit in these very different output types, (e.g. PDFs produced using typesetting of LaTeX, databases populated with documents at an individual object/paragraph level, making possible granular search (and related possibilities))</p>
<p><b>(iv)</b>
outputs share a common numbering system (dubbed "object citation numbering" (ocn)) that is meaningful (to man and machine) across various digital outputs whether paper, screen, or database oriented, (PDF, html, XML, EPUB, sqlite, postgresql), this numbering system can be used to reference content.</p>
<p>
<b>(v)</b>
SQL databases are populated at an object level (roughly headings, paragraphs, verse, tables) and become searchable with that degree of granularity, the output information provides the object/paragraph numbers which are relevant across all generated outputs; it is also possible to look at just the matching paragraphs of the documents in the database; [output indexing also work well with search indexing tools like hyperesteier].</p>
<p>
<b>(vi)</b>
 use of semantic meta-tags in headers permit the addition of semantic information on documents, (the available fields are easily extended)</p>
<p>
<b>(vii)</b>
creates organised directory/file structure for (file-system) output, easily mapped with its clearly defined structure, with all text objects numbered, you know in advance where in each document output type, a bit of text will be found (e.g. from an SQL search, you know where to go to find the prepared html output or PDF etc.)... there is more; easy directory management and document associations, the document preparation (sub-)directory may be used to determine output (sub-)directory and the SQL database used,</p>
<p>
<b>(viii)</b>
"Concordance file" wordmap, consisting of all the words in a document and their (text/ object) locations within the text, (and the possibility of adding vocabularies),</p>
<p>
<b>(ix)</b>
document content certification and comparison considerations:
<b>(a)</b>
the document and each object within it stamped with an md5 hash making it possible to easily check or guarantee that the substantive content of a document is unchanged,
<b>(b)</b>
version control, documents integrated with time based source control system, default RCS or CVS with use of $Id$ tag, which SiSU checks
</p>
<p>
<b>(x)</b>
SiSU's minimalist markup makes for meaningful "diffing" of the substantive content of markup-files,</p>
<p>
<b>(xi)</b>
modifiable document appearance on a project/site wide, directory wide, or document instance level easily controlled/changed,</p>
<p>
<b>(xii)</b>
in many cases a regular expression may be used (once in the document header) to define all or part of a documents structure obviating or reducing the need to provide structural markup within the document,</p>
<p>
<b>(xiii)</b>
prepared files may be batch process, documents produced are static files so this needs to be done only once but may be repeated for various reasons as desired (updated content, addition of new output formats, updated technology document presentations/representations)</p>
<p>
<b>(xiv)</b>
possible to pre-process, which permits: the easy creation of standard form documents, and templates/term-sheets, or; building of composite documents (master documents) from other sisu marked up documents, or marked up parts, i.e. import documents or parts of text into a main document should this be desired</p>
<p>
there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added.
</p>
<p>
<b>(xv)</b>
there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added:
<b>(a)</b>
modular, (thanks in no small part to Ruby) another output format required, write another module....
<b>(b)</b> easy to update output formats (eg html, XHTML, LaTeX/PDF produced can be updated in program and run against whole document set),
<b>(c)</b> easy to add, modify, or have alternative syntax rules for input, should you need to,</p>
<p>
<b>(xvi)</b>
scalability, dependent on your file-system (ext3, Reiserfs, XFS, whatever) and on the relational database used (currently Postgresql and SQLite), and your hardware,</p>
<p>
<b>(xvii)</b>
only marked up files need be backed up, to secure the larger document set produced,</p>
<p>
<b>(xviii)</b>
document management,</p>
<p>
<b>(xix)</b>
Syntax highlighting for SiSU markup is available for a number of text editors.</p>
<p><b>(xx)</b> remote operations:
<b>(a)</b>
run SiSU on a remote server, (having prepared sisu markup documents locally or on that server, i.e. this solution where sisu is installed on the remote server, would work whatever type of machine you chose to prepare your markup documents on),
<b>(b)</b>
generated document outputs may be posted by sisu to remote sites (using rsync/scp)
<b>(c)</b>
document source (plaintext utf-8) if shared on the net may be identified by its url and processed locally to produce the different document outputs.</p>
<p>
<b>(xxi)</b>
document source may be bundled together (automatically) with associated documents (multiple language versions or master document with inclusions) and images and sent as a zip file called a sisupod, if shared on the net these too may be processed locally to produce the desired document outputs, these may be downloaded, shared as email attachments, or processed by running sisu against them, either using a url or the filename.
</p>
<p>
<b>(xxii)</b>
for basic document generation, the only software dependency is Ruby, and a few standard Unix tools (this covers plaintext, html, XML, ODF, EPUB, LaTeX). To use a database you of course need that, and to convert the LaTeX generated to PDF, a LaTeX processor like tetex or texlive.
</p>
<p>
as a developers tool it is flexible and extensible
</p>
<br />
<p class="small">
<a href="http://www.sisudoc.org"><b>SiSU</b></a> at <a href="http://www.sisudoc.org">&lt;www.sisudoc.org&gt;</a> or <a href="http://www.jus.uio.no/sisu/">&lt;www.jus.uio.no/sisu/&gt;</a></p>
</div>
<div id="column_right">
<p class="tiny">
<!-- Search SiSU -->
<a name="search"></a><form method="get" action="http://search.sisudoc.org" target="_top">
<input type="text" name="s1" size="24" maxlength="255" />
<br />
<input type="submit" name="ignore" value="search" />
<input type="hidden" name="db" value="#{Db[:name_prefix]}sisu" />
<input type="hidden" name="a" value="1" />
<input type="radio" name="view" value="index" checked="checked" /> idx
<input type="radio" name="view" value="text" /> txt
<a href="http://search.sisudoc.org" target="_top">&lt;search.sisudoc.org&gt;</a>
</form>
<!-- Search SiSU -->
</p>
<p class="tiny">
SiSU ("SiSU information Structuring Universe" or "Structured information, Serialized Units"),<sup>1</sup> is a Unix command line oriented framework for document structuring, publishing and search. Featuring minimalistic markup, multiple standard outputs, a common citation system, and granular search.
</p>
<p class="tiny">
 Using markup applied to a document, SiSU can produce plain text, HTML, XHTML, XML, OpenDocument, LaTeX or PDF files, and populate an SQL database with objects<sup>2</sup> (equating generally to paragraph-sized chunks) so searches may be performed and matches returned with that degree of granularity (e.g. your search criteria is met by these documents and at these locations within each document). Document output formats share a common object numbering system for locating content. This is particularly suitable for "published" works (finalized texts as opposed to works that are frequently changed or updated) for which it provides a fixed means of reference of content.
</p>

<p class="small">
How it works
</p>
<p class="tiny">
SiSU markup is fairly minimalistic, it consists of: a (largely optional) document header, made up of information about the document (such as when it was published, who authored it, and granting what rights) and any processing instructions; and markup within text which is related to document structure and typeface. SiSU must be able to discern the structure of a document, (text headings and their levels in relation to each other), either from information provided in the instruction header or from markup within the text (or from a combination of both). Processing is done against an abstraction of the document comprising of information on the document's structure and its objects,<sup>2</sup> which the program serializes (providing the object numbers) and which are assigned hash sum values based on their content. This abstraction of information about document structure, objects, (and hash sums), provides considerable flexibility in representing documents different ways and for different purposes (e.g. search, document layout, publishing, content certification, concordance etc.), and makes it possible to take advantage of some of the strengths of established ways of representing documents, (or indeed to create new ones).</p>
<p class="tiny">
<sup>1.</sup> also chosen for the meaning of the Finnish term "sisu".
</p>
<p class="tiny">
<sup>2</sup> objects include: headings, paragraphs, verse, tables, images, but not footnotes/endnotes which are numbered separately and tied to the object from which they are referenced.</p>
<p class="small">
  More information on <a href="http://www.sisudoc.org/sisu/SiSU/"><b>SiSU</b></a> provided at:
  <a href="http://www.sisudoc.org/sisu/SiSU/">
    &lt;www.sisudoc.org/sisu/SiSU&gt;
  </a>
</p>
<p class="tiny">
SiSU was developed in relation to legal documents, and is strong across a wide variety of texts (law, literature...(humanities, law and part of the social sciences)). SiSU handles images but is not suitable for formulae/ statistics, or for technical writing at this time.</p>
<p class="tiny">
SiSU has been developed and has been in use for several years. Requirements to cover a wide range of documents within its use domain have been explored.</p>
<p class="small">
<a href="mailto:ralph@amissah.com">
&lt;ralph@amissah.com&gt;
</a>
</p>
<p class="small">
<a href="mailto:ralph.amissah@gmail.com">
&lt;ralph.amissah@gmail.com&gt;
</a>
</p>
<p class="small">
<a href="mailto:sisu@lists.sisudoc.org">
&lt;sisu@lists.sisudoc.org&gt;
</a>
</p>
<p class="small">
<a href="http://lists.sisudoc.org/listinfo/sisu">
&lt;http://lists.sisudoc.org/listinfo/sisu&gt;
</a>
</p>
<p class="small">
#{@date.year_static}
</p>
<p class="tiny">
w3 since October 3 1993
</p>
</div>
</body>
</html>
WOK
    end
    def home_toc
      ' '
    end
  end
  class Inserts
  end
  class TeX < Defaults
    def initialize(papersize='')
      @papersize=papersize
    end
    def a4
      def portrait
        def w
          160
        end
        def h
          228
        end
        def img_px
          450
        end
        self
      end
      def landscape
        def w
          238
        end
        def h
          160
        end
        def img_px
          300
        end
        self
      end
      self
    end
    def letter
      def portrait
        def w
          166
        end
        def h
          212
        end
        def img_px
          468
        end
        self
      end
      def landscape
        def w
          226
        end
        def h
          166
        end
        def img_px
          290
        end
        self
      end
      self
    end
    def legal
      def portrait
        def w
          168
        end
        def h
          286
        end
        def img_px
          474
        end
        self
      end
      def landscape
        def w
          296
        end
        def h
          166
        end
        def img_px
          420
        end
        self
      end
      self
    end
    def b5
      def portrait
        def w
          140
        end
        def h
          204
        end
        def img_px
          356
        end
        self
      end
      def landscape
        def w
          200
        end
        def h
          130
        end
        def img_px
          260
        end
        self
      end
      self
    end
    def a5
      def portrait
        def w
          112
        end
        def h
          162
        end
        def img_px
          280
        end
        self
      end
      def landscape
        def w
          152
        end
        def h
          100
        end
        def img_px
          190
        end
        self
      end
      self
    end
    def dimensions
      d=case @papersize
      when /a4/;     a4
      when /letter/; letter
      when /legal/;  legal
      when /b5/;     b5
      when /a5/;     a5
      else           a4
      end
    end
  end
end
__END__
