diff options
| author | Ralph Amissah <ralph@amissah.com> | 2010-03-17 15:43:23 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2010-03-17 15:43:23 -0400 | 
| commit | 3a05470820f9bc3a88eeb6eb97599a8eb895f325 (patch) | |
| tree | cba8ea1ed592d7a3fb3c6199035d2caf6d985ce5 /lib | |
| parent | debian: NEWS.Debian, changelog, control, sisu.install, sisu.lintian-overrides... (diff) | |
| parent | plaintext docoration (more flexible markings) (diff) | |
Merge branch 'upstream' into debian/sid
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sisu/v2/constants.rb | 19 | ||||
| -rw-r--r-- | lib/sisu/v2/dal_doc_str.rb | 2 | ||||
| -rw-r--r-- | lib/sisu/v2/defaults.rb | 70 | ||||
| -rw-r--r-- | lib/sisu/v2/epub.rb | 34 | ||||
| -rw-r--r-- | lib/sisu/v2/epub_format.rb | 17 | ||||
| -rw-r--r-- | lib/sisu/v2/epub_segments.rb | 7 | ||||
| -rw-r--r-- | lib/sisu/v2/help.rb | 13 | ||||
| -rw-r--r-- | lib/sisu/v2/html.rb | 15 | ||||
| -rw-r--r-- | lib/sisu/v2/html_promo.rb | 6 | ||||
| -rw-r--r-- | lib/sisu/v2/html_scroll.rb | 8 | ||||
| -rw-r--r-- | lib/sisu/v2/html_segments.rb | 2 | ||||
| -rw-r--r-- | lib/sisu/v2/param.rb | 2 | ||||
| -rw-r--r-- | lib/sisu/v2/plaintext.rb | 44 | ||||
| -rw-r--r-- | lib/sisu/v2/sysenv.rb | 18 | ||||
| -rw-r--r-- | lib/sisu/v2/texpdf_format.rb | 3 | 
15 files changed, 182 insertions, 78 deletions
| diff --git a/lib/sisu/v2/constants.rb b/lib/sisu/v2/constants.rb index 384c8c19..9abe9c0b 100644 --- a/lib/sisu/v2/constants.rb +++ b/lib/sisu/v2/constants.rb @@ -58,7 +58,7 @@  =end  Sfx={:txt=>'.txt',:html=>'.html',:xhtml=>'.xhtml',:xml=>'.xml',:epub=>'.epub',:epub_xhtml=>'.xhtml',:odt=>'.odt',:pdf=>'.pdf'} -Ax,Xx,Mx,Rx,Hx,Dx,Db,Tex={},{},{},{},{},{},{},{} +Ax,Xx,Mx,Rx,Hx,Dx,Px,Db,Tex={},{},{},{},{},{},{},{},{}  Ax[:tab]="\t"  Xx[:protect]='☞'  Xx[:segment]='Ф' @@ -115,6 +115,23 @@ Db[:name_prefix]="SiSU#{SiSU_version_dir}_"  Tex[:backslash]="\\\\"  Tex[:backslash]="\\\\"  Tex[:tilde]='\\\\\\~' +Px[:bold_o]=       '*';     Px[:bold_c]=       '*' +Px[:italics_o]=    '/';     Px[:italics_c]=    '/' +Px[:underscore_o]= '_';     Px[:underscore_c]= '_' +Px[:cite_o]=       '"';     Px[:cite_c]=       '"' +Px[:insert_o]=     '+';     Px[:insert_c]=     '+' +Px[:strike_o]=     '-';     Px[:strike_c]=     '-' +Px[:superscript_o]='^';     Px[:superscript_c]='^' +Px[:subscript_o]=  '[';     Px[:subscript_c]=  ']' +Px[:hilite_o]=     '*';     Px[:hilite_c]=     '*' +Px[:lv1]=     '*' +Px[:lv2]=     '=' +Px[:lv3]=     '=' +#Px[:lv2_3]=   '=' +Px[:lv4]=     '-' +Px[:lv5]=     '.' +Px[:lv6]=     '.' +#Px[:lv5_6]=   '.'  __END__  consider:    〔comment〕 diff --git a/lib/sisu/v2/dal_doc_str.rb b/lib/sisu/v2/dal_doc_str.rb index 88ddaec9..dc9a55b7 100644 --- a/lib/sisu/v2/dal_doc_str.rb +++ b/lib/sisu/v2/dal_doc_str.rb @@ -234,7 +234,7 @@ module SiSU_document_structure_extract                @h={:head_=>heading,:cols=>cols,:widths=>col,:idx=>idx}              elsif t_o=~/^\{table(?:~h)?(?:\s+\d+;?)?\}\n.+\Z/m                m1,m2,hd=nil,nil,nil -              tbl= /^\{table(?:~h)?(?:\s+\d+;?)?\}\n(.+)\Z/m.match(t_o)[1]            #two table representations should be consolidated as one +              tbl=/^\{table(?:~h)?(?:\s+\d+;?)?\}\n(.+)\Z/m.match(t_o)[1]            #two table representations should be consolidated as one                hd=((t_o =~/^\{table~h/) ? true : false)                tbl,tags=extract_tags(tbl)                rws=tbl.split(/\n/) diff --git a/lib/sisu/v2/defaults.rb b/lib/sisu/v2/defaults.rb index 52c2cd45..a654aed7 100644 --- a/lib/sisu/v2/defaults.rb +++ b/lib/sisu/v2/defaults.rb @@ -1715,13 +1715,14 @@ WOK  <title>SiSU information Structuring Universe - Structured  information, Serialized Units - software for electronic texts,  documents, books, digital libraries in plaintext, html, XHTML, XML, -ODF (OpenDocument), LaTeX, PDF, SQL (PostgreSQL and SQLite), and +ODF (OpenDocument), EPUB, LaTeX, PDF, SQL (PostgreSQL and SQLite), and  for search</title>  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> -<meta name="dc.title" content="SiSU information Structuring Universe, Structured information Serialised Units, #{@date.year_static}" /> -<meta name="dc.author" content="Ralph Amissah" /> +<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, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" /> +"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.jus.uio.no/sisu" />  <meta name="dc.language" content="en" /> @@ -1751,20 +1752,10 @@ software for electronic texts, document collections, books, digital libraries, a   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), LaTeX, PDF, SQL (PostgreSQL and SQLite) +outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), EPUB, LaTeX, PDF, SQL (PostgreSQL and SQLite)  </h2>  </div>  <div id="top_band_search"> -<!-- SiSU Search --> -<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="SiSU_sisu" /> -<input type="radio" name="view" value="index" checked="checked" /> idx -<input type="radio" name="view" value="text" /> txt -</form> -<!-- SiSU Search -->  </div>  <div id="column_left">  <p class="bold"> @@ -1776,7 +1767,7 @@ outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), LaTeX, PDF, SQ    ---  </p>  <p class="small"> -  <a href="http://www.jus.uio.no/sisu/sisu_manual/" target="_top" > +  <a href="http://www.sisudoc.org/sisu/sisu_manual/" target="_top" >      SiSU Manual    </a>  </p> @@ -1784,7 +1775,7 @@ outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), LaTeX, PDF, SQ    ---  </p>  <p class="small"> -  <a href="http://www.jus.uio.no/sisu/SiSU/1.html#summary" target="_top" > +  <a href="http://www.jus.uio.no/sisu/SiSU/examples.html#summary" target="_top" >      What does SiSU do? Summary    </a>  </p> @@ -1796,6 +1787,16 @@ outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), LaTeX, PDF, SQ      Book Samples and Markup Examples    </a>  </p> +<p class="small"> +  <a href="http://www.jus.uio.no/sisu/sisu_site_metadata/harvest_authors.html" target="_top" > +   sorted by Author (sisu metadata) +  </a> +</p> +<p class="small"> +  <a href="http://www.jus.uio.no/sisu/sisu_site_metadata/harvest_topics.html" target="_top" > +   sorted by Topic (sisu metadata) +  </a> +</p>  <p class="tiny">    ---  </p> @@ -1849,6 +1850,21 @@ outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), LaTeX, PDF, SQ    =============  </p>  <p class="small"> +<a href="http://www.jus.uio.no/sisu/sisu_markup/" target="_top" > +    sisu markup +  </a> +</p> +<p class="small"> +  <a href="http://www.jus.uio.no/sisu/sisu_commands/" target="_top" > +    sisu commands +  </a> +</p> +<p class="small"> +  <a href="http://www.jus.uio.no/sisu/sisu_manual/" target="_top" > +    sisu manual +  </a> +</p> +<p class="small">    <a href="http://www.jus.uio.no/sisu/man" target="_top" >      sisu man pages    </a> @@ -1964,13 +1980,13 @@ markup defines document structure (this may be done once in a header pattern-mat  </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)l; 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). +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, sqlite, postgresql), this numbering system can be used to reference content.</p> +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> @@ -2040,7 +2056,7 @@ document source may be bundled together (automatically) with associated document  </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, 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. +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 @@ -2051,6 +2067,20 @@ More information on <a href="http://www.jus.uio.no/sisu/SiSU/"><b>SiSU</b></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="SiSUv2_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" >search.sisudoc.org</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"> diff --git a/lib/sisu/v2/epub.rb b/lib/sisu/v2/epub.rb index 6df06025..e6ab1e12 100644 --- a/lib/sisu/v2/epub.rb +++ b/lib/sisu/v2/epub.rb @@ -499,7 +499,8 @@ module SiSU_EPUB          segtoc << format_head_toc.head #<< ads.div.major          toc_shared << format_head_toc.toc_head_escript if SiSU_EPUB_Format::Head_toc.method_defined? :toc_head_escript          segtoc << format_head_toc.toc_head_escript if SiSU_EPUB_Format::Head_toc.method_defined? :toc_head_escript -        if @md.rights.all +        if defined? @md.rights.all \ +        and @md.rights.all            rights=format_head_toc.rights.all            rights=SiSU_EPUB_Tune::Clean_xhtml.new(rights).clean          end @@ -517,7 +518,8 @@ module SiSU_EPUB          format_txt_obj=SiSU_EPUB_Format::Format_text_object.new(@md,txt_obj)          toc_shared << format_txt_obj.center_bold          segtoc << format_txt_obj.center_bold -        if @md.creator.author +        if defined? @md.creator.author \ +        and @md.creator.author            creator_endnote=@md.creator.author.gsub(/(\*+)/,%{ <sup><a href="#notes">\\1</a></sup>})            tmp_head=creator_endnote + "\n"            txt_obj={:txt =>tmp_head} @@ -529,21 +531,34 @@ module SiSU_EPUB          segtoc << format_head_toc.copyat          segtoc << seg_toc_band          tmp_head=nil -        if @md.prefix_a +        if defined? @md.prefix_a \ +        and @md.prefix_a            tmp_head ||= %{#{@md.prefix_a}\n}            toc_shared << tmp_head.dup            segtoc << tmp_head.dup          end          tmp_head=nil          toc_shared << @links_guide_toc -        toc_shared << rights if @md.rights.all -        toc_shared << prefix_b if @md.prefix_b +        if defined? @md.rights.all \ +        and @md.rights.all +          toc_shared << rights +        end +        if defined? @md.prefix_b \ +        and @md.prefix_b +          toc_shared << prefix_b +        end          #Table of Contents added/appended here          toc_shared << @toc[:scr]          segtoc << @links_guide_toc          segtoc << @toc[:seg] -        segtoc << rights if @md.rights.all -        segtoc << prefix_b if @md.prefix_b +        if defined? @md.rights.all \ +        and @md.rights.all +          segtoc << rights +        end +        if defined? @md.prefix_b \ +        and @md.prefix_b +          segtoc << prefix_b +        end          #Segtoc tail added here          segtoc << seg_toc_band_bottom          segtoc << format_head_toc.xhtml_close @@ -618,7 +633,10 @@ module SiSU_EPUB        def images          img_pth=@md.env.path.image_source_local_tex          @md.ec[:image].each do |x| -          cp("#{img_pth}/#{x}","#{@md.env.path.epub}/OPS/image") if FileTest.directory?("#{@md.env.path.epub}/OPS/image") +          if FileTest.directory?("#{@md.env.path.epub}/OPS/image") \ +          and FileTest.file?("#{img_pth}/#{x}") +            cp("#{img_pth}/#{x}","#{@md.env.path.epub}/OPS/image") +          end          end        end        def concordance diff --git a/lib/sisu/v2/epub_format.rb b/lib/sisu/v2/epub_format.rb index 5599a435..498912a3 100644 --- a/lib/sisu/v2/epub_format.rb +++ b/lib/sisu/v2/epub_format.rb @@ -1024,17 +1024,28 @@ WOK  WOK        end        def metadata #metadata dc -        illustrator=if defined? @md.creator.illustrator and @md.creator.illustrator =~/\S+/ +        author=if defined? @md.creator.author \ +        and @md.creator.author =~/\S+/ +          %{\n    <dc:creator opf:file-as="#{@md.creator.author}" opf:role="aut">#{@md.creator.author}</dc:creator>} +        else '' +        end +        illustrator=if defined? @md.creator.illustrator \ +        and @md.creator.illustrator =~/\S+/            %{\n    <dc:creator opf:file-as="#{@md.creator.illustrator}" opf:role="ill">#{@md.creator.illustrator}</dc:creator>}          else ''          end +        rights=if defined? @md.rights.all \ +        and @md.rights.all =~/\S+/ +          %{\n    <dc:rights>#{@md.rights.all}</dc:rights>} +        else '' +        end          <<WOK    <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">      <dc:title>#{@md.title.full}</dc:title> -    <dc:creator opf:file-as="#{@md.creator.author}" opf:role="aut">#{@md.creator.author}</dc:creator>#{illustrator} +    #{author}#{illustrator}      <dc:language>en-US</dc:language>      <dc:identifier id="bookid">...</dc:identifier> -    <dc:rights>#{@md.rights.all}</dc:rights> +    #{rights}      <dc:identifier id="EPB-UUID">urn:uuid:#{@md.dgst[1]}</dc:identifier>    </metadata>  WOK diff --git a/lib/sisu/v2/epub_segments.rb b/lib/sisu/v2/epub_segments.rb index 3f402c92..5f0b74d3 100644 --- a/lib/sisu/v2/epub_segments.rb +++ b/lib/sisu/v2/epub_segments.rb @@ -300,7 +300,10 @@ WOK        end        @p_num ||= ''        if @@is1==1 -        @author=%{<b>#{@md.creator.author}</b>\n} if @md.creator.author.to_s =~/\S/ +        if defined? @md.creator.author \ +        and @md.creator.author +          @author=%{<b>#{@md.creator.author}</b>\n} +        end          @@seg[:nav] << format_head_seg.navigation_band(@@segtocband)          ocn=if @@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]; $1 #fix          else '' @@ -376,7 +379,7 @@ WOK          end          elsif dob.is =~/^(?:group|alt)$/            sto.para #fix this should be group type specific #FIX -        elsif dob.is =~/^verse$/ +        elsif dob.is=='verse'            sto.verse          elsif dob.is=='code'            sto.code diff --git a/lib/sisu/v2/help.rb b/lib/sisu/v2/help.rb index 894f1654..38f0a782 100644 --- a/lib/sisu/v2/help.rb +++ b/lib/sisu/v2/help.rb @@ -75,7 +75,7 @@ module SiSU_Help      def help_request        begin          gotten=nil -        regx=/^(list|com(?:mands)?|mod(?:ifiers)|markup|syntax|example(?:37|38)?|head(?:ers?)?|(?:heading|title|level|structure)s?|endnotes|footnotes|tables?|customise|skin|dir(?:ectories)?|paths?|lang(?:uage)?|modules|setup|conf(?:ig(?:ure)?)?|standards?|li[cs]en[sc]e|scratch|install|termsheet|dublin(?:core)?|dc|customise|styles?|appearance|theme|env(ironment)?|dir(?:ector(?:y|ies))?|metaverse|abstract|features|summary|(?:short)?cuts?|sisu|about|ext(?:ernal)?(?:_?prog(?:rams)?)?)|utf-?8|plaintext|html|xml|xhtml|odf|odt|opendocument|css|pdf|latex|tex|(?:tex)?info|search|(?:hyper)?est(?:raier)?|searchform|cgi|sql|db|postgresql|pg?sql|sqlite|convert|php|webrick|sitemaps?|ya?ml|ansi|colors|-[AabcDdEeFHhIMmNnopqrRSstUuVvwXxyZz0-9]|-[Ddcv]|-[CcFLSVvW]/ +        regx=/^(list|com(?:mands)?|mod(?:ifiers)|markup|syntax|example(?:37|38)?|head(?:ers?)?|(?:heading|title|level|structure)s?|endnotes|footnotes|tables?|customise|skin|dir(?:ectories)?|paths?|lang(?:uage)?|modules|setup|conf(?:ig(?:ure)?)?|standards?|li[cs]en[sc]e|scratch|install|termsheet|dublin(?:core)?|dc|customise|styles?|appearance|theme|env(ironment)?|dir(?:ector(?:y|ies))?|metaverse|abstract|features|summary|(?:short)?cuts?|sisu|about|ext(?:ernal)?(?:_?prog(?:rams)?)?)|utf-?8|plaintext|html|xml|xhtml|epub|odf|odt|opendocument|css|pdf|latex|tex|(?:tex)?info|search|(?:hyper)?est(?:raier)?|searchform|cgi|sql|db|postgresql|pg?sql|sqlite|convert|php|webrick|sitemaps?|ya?ml|ansi|colors|-[AabcDdEeFHhIMmNnopqrRSstUuVvwXxyZz0-9]|-[Ddcv]|-[CcFLSVvW]/        help_info=%{#{@cX.blue_hi}SiSU help#{@cX.off} #{@cX.ruby}~#{@cX.off} #{@request}}        help_list=%{#{@cX.blue}sisu --help#{@cX.off} #{@cX.cyan}type keyword else "enter" to exit help:\n\tkeywords include:#{@cX.off} #{@cX.brown}list, (com)mands, short(cuts), (mod)ifiers, (env)ironment, markup, syntax, headers, headings, endnotes, tables, example, customise, skin, (dir)ectories, path, (lang)uage, db, install, setup, (conf)igure, convert, external_programs, dublincore, termsheet, search, sql, hyper(est)raier, features, external_programs, license#{@cX.off} \n}        help_prompt=%{#{@cX.fuschia}exit, [or carriage return to exit help] #{@cX.off}\n#{@cX.blue_hi}SiSU help#{@cX.off} #{@cX.ruby}~#{@cX.off} } @@ -125,6 +125,7 @@ module SiSU_Help            when /xhtml|-b/;                             @help.xhtml            when /xml|-[xX]/;                            @help.xml            when /odf|odt|opendocument|-o/;              @help.odf +          when /epub|-e/;                              @help.epub            when /php/;                                  @help.php            when /pdf|-p/;                               @help.pdf            when /latex|tex/;                            @help.latex @@ -995,6 +996,7 @@ WOK    pdf viewer:                                    #{@cX.blue}#{@env.program.pdf_viewer}#{@cX.off}    xml viewer:                                    #{@cX.blue}#{@env.program.xml_editor}#{@cX.off}    odf viewer:                                    #{@cX.blue}#{@env.program.odf_viewer}#{@cX.off} +  epub viewer:                                   #{@cX.blue}#{@env.program.epub_viewer}#{@cX.off}                                                    (default selections can be changed in sisurc.yml under program_select:)    #{@cX.green}programs used if available#{@cX.off}    word count:                                    #{program_found?(@env.program.wc)} @@ -1504,6 +1506,8 @@ WOK      sisu -X [filename/wildcard]    xml document (dom type parsing)      sisu -o [filename/wildcard]    odt document, (odf open document format) + +    sisu -e [filename/wildcard]    odt document, (epub document)  WOK        help_commands      end @@ -1514,6 +1518,13 @@ WOK  WOK        help_commands      end +    def epub +      print <<WOK + +    sisu -e [filename/wildcard]    epub document, (open format for e-books) +WOK +      help_commands +    end      def php        print <<WOK diff --git a/lib/sisu/v2/html.rb b/lib/sisu/v2/html.rb index 4959d683..834eefa1 100644 --- a/lib/sisu/v2/html.rb +++ b/lib/sisu/v2/html.rb @@ -533,7 +533,7 @@ WOK          format_txt_obj=SiSU_HTML_Format::Format_text_object.new(@md,txt_obj)          toc_shared << format_txt_obj.center_bold          @segtoc << format_txt_obj.center_bold -        if @md.creator.author +        if defined? @md.creator.author            creator_endnote=@md.creator.author.gsub(/(\*+)/,%{ <sup><a href="#notes">\\1</a></sup>})            tmp_head=creator_endnote + "\n"            txt_obj={:txt =>tmp_head} @@ -553,13 +553,20 @@ WOK          end          tmp_head=nil          toc_shared << @links_guide_toc -        toc_shared << rights if @md.rights.all -        toc_shared << prefix_b if @md.prefix_b +        if defined? @md.rights.all #and ? @md.rights.all +          toc_shared << rights +        end +        if defined? @md.prefix_b +          toc_shared << prefix_b +        end          #Table of Contents added/appended here          toc_shared << @toc[:scr]          @segtoc << @links_guide_toc          @segtoc << @toc[:seg] -        @segtoc << rights if @md.rights.all +        if defined? @md.rights.all \ +        and not @md.rights.all.empty? +          @segtoc << rights +        end          @segtoc << prefix_b if @md.prefix_b          #Segtoc tail added here          @segtoc << "</p>\n" #bugfix sort later DEBUGNOW diff --git a/lib/sisu/v2/html_promo.rb b/lib/sisu/v2/html_promo.rb index 962184f2..df13393e 100644 --- a/lib/sisu/v2/html_promo.rb +++ b/lib/sisu/v2/html_promo.rb @@ -146,10 +146,12 @@ module SiSU_HTML_promo        end        def search_form_sisu(table=true)          db=if @prod['db']=~/\S+/ -          (@prod['db']=~/^SiSU_\S+/) ? @prod['db'] : "SiSU_#{@prod['db']}" +          (@prod['db']=~/^#{Db[:name_prefix]}\S+/) ? @prod['db'] : "#{Db[:name_prefix]}#{@prod['db']}"          elsif defined? @rc['search']['sisu']['db'] \          and @rc['search']['sisu']['db'] =~/\S+/ -          (@rc['search']['sisu']['db']=~/^SiSU_\S+/) ? @prod['search']['sisu']['db'] : "SiSU_#{@prod['db']}" +          (@rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \ +          ? @prod['search']['sisu']['db'] \ +          : "#{Db[:name_prefix]}#{@prod['db']}"          else nil          end          action=if @prod['action']=~/^http:\/\// diff --git a/lib/sisu/v2/html_scroll.rb b/lib/sisu/v2/html_scroll.rb index 59a3ee42..a5ff9b00 100644 --- a/lib/sisu/v2/html_scroll.rb +++ b/lib/sisu/v2/html_scroll.rb @@ -147,13 +147,11 @@ module SiSU_HTML_scroll                else sto.para                end              end -          elsif dob.is =~/^(?:group|alt)$/m -            sto.para #fix this should be group type specific #FIX -          elsif dob.is =='group' +          elsif dob.is=='group'              sto.group -          elsif dob.is =='alt' +          elsif dob.is=='alt'              sto.alt -          elsif dob.is =='verse' +          elsif dob.is=='verse'              sto.verse            elsif dob.is=='code'              sto.code diff --git a/lib/sisu/v2/html_segments.rb b/lib/sisu/v2/html_segments.rb index 79aa699e..022a1d0c 100644 --- a/lib/sisu/v2/html_segments.rb +++ b/lib/sisu/v2/html_segments.rb @@ -373,7 +373,7 @@ module SiSU_HTML_seg            sto.group          elsif dob.is=='alt'            sto.alt -        elsif dob.is='verse' +        elsif dob.is=='verse'            sto.verse          elsif dob.is=='code'            sto.code diff --git a/lib/sisu/v2/param.rb b/lib/sisu/v2/param.rb index 947c018e..f5085d50 100644 --- a/lib/sisu/v2/param.rb +++ b/lib/sisu/v2/param.rb @@ -535,7 +535,7 @@ module SiSU_Param              manpage['name']='man page "name/whatis" information not provided, set in header @man: name=[whatis information]'            end            if manpage['synopsis'] -            manpage['synopsis']=manpage['synopsis'].join("\n.BR\n") +            manpage['synopsis']=manpage['synopsis'].join("\n\n.BR\n")              manpage['synopsis'].gsub!(/(-)/m,"\\\\\\1")              manpage['synopsis'].gsub!(/\A/,"\n.SH SYNOPSIS\n")            else diff --git a/lib/sisu/v2/plaintext.rb b/lib/sisu/v2/plaintext.rb index 4e7cb2f1..ddc82839 100644 --- a/lib/sisu/v2/plaintext.rb +++ b/lib/sisu/v2/plaintext.rb @@ -237,10 +237,14 @@ WOK            times=wrapped.length            times=78 if times > 78            @plaintext[:body] << case lv -          when 1;      wrapped.upcase << @br << '*'*times << @br -          when 2..3;   wrapped.upcase << @br << '='*times << @br -          when 4;      wrapped.upcase << @br << '-'*times << @br -          when 5..6;   wrapped.upcase << @br << '.'*times << @br +          when 1;      wrapped.upcase << @br << Px[:lv1]*times << @br +          when 2;      wrapped.upcase << @br << Px[:lv2]*times << @br +          when 3;      wrapped.upcase << @br << Px[:lv3]*times << @br +          #when 2..3;   wrapped.upcase << @br << Px[:lv2_3]*times << @br +          when 4;      wrapped.upcase << @br << Px[:lv4]*times << @br +          when 5;      wrapped.upcase << @br << Px[:lv5]*times << @br +          when 6;      wrapped.upcase << @br << Px[:lv6]*times << @br +          #when 5..6;   wrapped.upcase << @br << Px[:lv5_6]*times << @br            end          else            @plaintext[:body] << wrapped << @br # main text, contents, body KEEP @@ -266,15 +270,23 @@ WOK          fix=[]          data.each do |dob|            dob.obj.gsub!(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{@br}#{table_message}") #fix -          dob.obj.gsub!(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,'')                                           # remove dummy headings (used by html) #check -          dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'*\1*') -          dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'/\1/') -          dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'_\1_') -          dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'[\1]') -          dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'^\1^') -          dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'+\1+') -          dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'"\1"') -          dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'-\1-') +          dob.obj.gsub!(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,'')                              # remove dummy headings (used by html) #check also [~-]# +          dob.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, +            "#{Px[:bold_o]}\\1#{Px[:bold_c]}") +          dob.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/, +            "#{Px[:italics_o]}\\1#{Px[:italics_c]}") +          dob.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/, +            "#{Px[:underscore_o]}\\1#{Px[:underscore_c]}") +          dob.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/, +            "#{Px[:subscript_o]}\\1#{Px[:subscript_c]}") +          dob.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/, +            "#{Px[:superscript_o]}\\1#{Px[:superscript_c]}") +          dob.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/, +            "#{Px[:insert_o]}\\1#{Px[:insert_c]}") +          dob.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/, +            "#{Px[:cite_o]}\\1#{Px[:cite_c]}") +          dob.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/, +            "#{Px[:strike_o]}\\1#{Px[:strike_c]}")            unless dob.is=='code'              dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1')              dob.obj.gsub!(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]') @@ -305,11 +317,11 @@ WOK              dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _> _<              dob.obj.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _<_<            end -          dob.obj.gsub!(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,'')                                         # remove page breaks +          dob.obj.gsub!(/#{Mx[:br_page]}\s*|#{Mx[:br_page_new]}/,'')                     # remove page breaks            dob.obj.gsub!(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1')            dob.obj.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1') -          dob.obj.gsub!(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'')                                       # remove name links -          dob.obj.gsub!(/ |#{Mx[:nbsp]}/,' ')                                            # decide on +          dob.obj.gsub!(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'')                       # remove name links +          dob.obj.gsub!(/ |#{Mx[:nbsp]}/,' ')                                       # decide on            dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'    [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")            dob.obj.gsub!(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,'    [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")            dob.obj.gsub!(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') diff --git a/lib/sisu/v2/sysenv.rb b/lib/sisu/v2/sysenv.rb index 9f69ccfe..ddb48bba 100644 --- a/lib/sisu/v2/sysenv.rb +++ b/lib/sisu/v2/sysenv.rb @@ -1004,9 +1004,9 @@ module SiSU_Env          elsif widget.search?            db=if rc['search']['sisu']['flag']==true \            and rc['search']['sisu']['db']=~/\S+/ -            (rc['search']['sisu']['db']=~/^SiSU_\S+/) \ +            (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \              ? rc['search']['sisu']['db'] \ -            : "SiSU_#{rc['search']['sisu']['db']}" +            : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"            else nil            end            action=rc['search']['sisu']['action'] @@ -1074,9 +1074,9 @@ WOK          elsif widget.search_fixed?            db=if rc['search']['sisu']['flag']==true \            and rc['search']['sisu']['db']=~/\S+/ -            (rc['search']['sisu']['db']=~/^SiSU_\S+/) \ +            (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \              ? rc['search']['sisu']['db'] \ -            : "SiSU_#{rc['search']['sisu']['db']}" +            : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"            else nil            end            action=rc['search']['sisu']['action'] @@ -1171,9 +1171,9 @@ WOK          elsif widget_static.search? \          and rc['search']['sisu']['flag']==true            db=if rc['search']['sisu']['db']=~/\S+/ -            (rc['search']['sisu']['db']=~/^SiSU_\S+/) \ +            (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \              ? rc['search']['sisu']['db'] \ -            : "SiSU_#{rc['search']['sisu']['db']}" +            : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"            else nil            end            action=rc['search']['sisu']['action'] @@ -1948,12 +1948,6 @@ WOK          ? @rc['program_select']['odf_viewer'] \          : 'oowriter'                                                          #'odf-viewer','oowriter'        end -      def epub_viewer -        ((defined? @rc['program_select']['epub_viewer']) \ -        && @rc['program_select']['epub_viewer'] =~/\S\S+/) \ -        ? @rc['program_select']['epub_viewer'] \ -        : web_browser -      end        def manpage_generator          ((defined? @rc['program_select']['man']) \          && @rc['program_select']['man'] =~/\S\S+/) \ diff --git a/lib/sisu/v2/texpdf_format.rb b/lib/sisu/v2/texpdf_format.rb index 9847d092..aca5378e 100644 --- a/lib/sisu/v2/texpdf_format.rb +++ b/lib/sisu/v2/texpdf_format.rb @@ -492,8 +492,9 @@ module SiSU_TeX_Pdf                hsp="\n{\\color{mywhite} .}&~\n" # ~ character for hardspace                caption=(c ?  "{\\\\\ \n\\begin{scriptsize}#{hsp*3}#{c}\\end{scriptsize}&}" : '')              elsif images_hash[ps] =~/#{Mx[:lnk_o]}\s*(\S+\.?\.(?:png|jpg|gif))/m -              tell=SiSU_Screen::Ansi.new(@md.cmd,%{document built without image: "#{$1}" as image dimensions not provided (& librmagick-ruby is not installed)?\n}) +              tell=SiSU_Screen::Ansi.new(@md.cmd,%{document built without image: "#{$1}" as image dimensions not provided (either image not found or neither imagemagick nor graphicsmagick is installed)?\n})                tell.print_grey #unless @opt.cmd =~/q/ +              images_hash[ps].gsub!(/#{Mx[:lnk_o]}\s*(\S+\.?\.(?:png|jpg|gif))/,'[image]')              end              if image #most images fc etc. #% clean up !                if @md.fns =~/\.(?:ssm\.)?sst$/ \ | 
