diff options
-rw-r--r-- | data/doc/sisu/CHANGELOG_v5 | 1 | ||||
-rw-r--r-- | lib/sisu/v5/constants.rb | 1 | ||||
-rw-r--r-- | lib/sisu/v5/hub.rb | 5 | ||||
-rw-r--r-- | lib/sisu/v5/manifest.rb | 7 | ||||
-rw-r--r-- | lib/sisu/v5/options.rb | 6 | ||||
-rw-r--r-- | lib/sisu/v5/sysenv.rb | 99 | ||||
-rw-r--r-- | lib/sisu/v5/urls.rb | 8 | ||||
-rw-r--r-- | lib/sisu/v5/xml_fictionbook2.rb | 366 | ||||
-rw-r--r-- | lib/sisu/v5/xml_shared.rb | 8 |
9 files changed, 497 insertions, 4 deletions
diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5 index 742a6e70..7a09c091 100644 --- a/data/doc/sisu/CHANGELOG_v5 +++ b/data/doc/sisu/CHANGELOG_v5 @@ -60,6 +60,7 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.1.0.orig.tar.xz * rst * xml * docbook, book + * fictionbook * sisu.gemspec diff --git a/lib/sisu/v5/constants.rb b/lib/sisu/v5/constants.rb index 1f96f0aa..da9858f2 100644 --- a/lib/sisu/v5/constants.rb +++ b/lib/sisu/v5/constants.rb @@ -79,6 +79,7 @@ Sfx={ xml_docbook: '.docbook.xml', xml_docbook_article: '.article.docbook.xml', xml_docbook_book: '.book.docbook.xml', + xml_fictionbook: '.fb2', epub: '.epub', epub_xhtml: '.xhtml', odt: '.odt', diff --git a/lib/sisu/v5/hub.rb b/lib/sisu/v5/hub.rb index 08147d96..f09bd832 100644 --- a/lib/sisu/v5/hub.rb +++ b/lib/sisu/v5/hub.rb @@ -359,6 +359,10 @@ module SiSU require_relative 'xml_docbook5' # xml_docbook5.rb SiSU_XML_Docbook_Book::Source.new(@opt).read end + if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook + require_relative 'xml_fictionbook2' # xml_fictionbook2.rb + SiSU_XML_Fictionbook::Source.new(@opt).read + end if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type require_relative 'xml_sax' # xml_sax.rb SiSU_XML_SAX::Source.new(@opt).read @@ -673,6 +677,7 @@ module SiSU || @opt.act[:xml_scaffold_structure_sisu][:set]==:on \ || @opt.act[:xml_scaffold_structure_collapse][:set]==:on \ || @opt.act[:xml_docbook_book][:set]==:on \ + || @opt.act[:xml_fictionbook][:set]==:on \ || @opt.act[:pdf][:set]==:on \ || @opt.act[:pdf_p][:set]==:on \ || @opt.act[:pdf_l][:set]==:on \ diff --git a/lib/sisu/v5/manifest.rb b/lib/sisu/v5/manifest.rb index 42755151..fb3064e7 100644 --- a/lib/sisu/v5/manifest.rb +++ b/lib/sisu/v5/manifest.rb @@ -410,6 +410,13 @@ module SiSU_Manifest id,file='XML Docbook Book',@f.base_filename.xml_docbook_book summarize(id,file,pth,rel,url) end + if FileTest.file?(@f.place_file.xml_fictionbook.dir)==true + pth=@f.output_path.xml_fictionbook.dir + rel=@f.output_path.xml_fictionbook.rel_sm + url=@f.output_path.xml_fictionbook.url + id,file='XML Fictionbook',@f.base_filename.xml_fictionbook + summarize(id,file,pth,rel,url) + end if FileTest.file?(@f.place_file.xml_scaffold_structure_sisu.dir)==true pth=@f.output_path.xml_scaffold_structure_sisu.dir rel=@f.output_path.xml_scaffold_structure_sisu.rel_sm diff --git a/lib/sisu/v5/options.rb b/lib/sisu/v5/options.rb index 1e11b711..f410e61f 100644 --- a/lib/sisu/v5/options.rb +++ b/lib/sisu/v5/options.rb @@ -864,6 +864,10 @@ module SiSU_Commandline act[:xml_docbook_book]=mod.inspect =~/"--docbook"|"--docbook-book"|"--xml-docbook"|"--xml-docbook_book"/ \ ? { bool: true, set: :on } : { bool: false, set: :na } + act[:xml_fictionbook]=(cmd =~/f/ \ + || mod.inspect =~/"--fictionbook"|"--xml-fictionbook"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } act[:xml_scaffold_structure_sisu]=mod.inspect =~/"--xml-scaffold"|"--xml-scaffold-sisu"/ \ ? { bool: true, set: :on } : { bool: false, set: :na } @@ -1002,6 +1006,7 @@ module SiSU_Commandline || act[:xml_dom][:set]==:on \ || act[:xml_sax][:set]==:on \ || act[:xml_docbook_book][:set]==:on \ + || act[:xml_fictionbook][:set]==:on \ || act[:xml_scaffold_structure_sisu][:set]==:on \ || act[:xml_scaffold_structure_collapse][:set]==:on ) { bool: true, set: :on } @@ -1051,6 +1056,7 @@ module SiSU_Commandline || act[:xml_dom][:set]==:on \ || act[:xml_sax][:set]==:on \ || act[:xml_docbook_book][:set]==:on \ + || act[:xml_fictionbook][:set]==:on \ || act[:xml_scaffold_structure_sisu][:set]==:on \ || act[:xml_scaffold_structure_collapse][:set]==:on ) { bool: true, set: :on } diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb index f25cd027..1f5d7d3a 100644 --- a/lib/sisu/v5/sysenv.rb +++ b/lib/sisu/v5/sysenv.rb @@ -1484,6 +1484,12 @@ module SiSU_Env ? @rc['xml_docbook']['ocn'] : true end + def xml_fictionbook_ocn? + ((defined? @rc['xml_fictionbook']['ocn']) \ + && @rc['xml_fictionbook']['ocn']==false) \ + ? @rc['xml_fictionbook']['ocn'] + : true + end def xml_scaffold_ocn? ((defined? @rc['xml_scaffold']['ocn']) \ && @rc['xml_scaffold']['ocn']==false) \ @@ -2772,6 +2778,12 @@ WOK ? @rc['program_select']['xml_viewer'] : text_editor end + def fictionbook_viewer + ((defined? @rc['program_select']['xml_viewer']) \ + && @rc['program_select']['xml_viewer'] =~/\S\S+/) \ + ? @rc['program_select']['xml_viewer'] + : text_editor + end def xml_editor xml_viewer end @@ -3076,6 +3088,9 @@ WOK if @md.opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book ft << @md.fn[:xml_docbook_book] end + if @md.opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook + ft << @md.fn[:xml_fictionbook] + end if @md.opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu ft << @md.fn[:xml_scaffold_structure_sisu] end @@ -3141,6 +3156,9 @@ WOK if @opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book ft << 'docbook.xml' << '??.docbook.xml' << 'docbook.??.xml' end + if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook + ft << 'fictionbook.xml' << '??.fictionbook.xml' << 'fictionbook.??.xml' + end if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu ft << 'scaffold.xml' << '??.scaffold.xml' << 'scaffold.??.xml' end @@ -4511,6 +4529,12 @@ WOK fn=base_filename.xml_docbook_book make_file(path,fn) end + def xml_fictionbook + path=output_path.xml_fictionbook.dir + make_path(path) + fn=base_filename.xml_fictionbook + make_file(path,fn) + end def xml_scaffold_structure_sisu path=output_path.xml_scaffold_structure_sisu.dir make_path(path) @@ -4730,6 +4754,15 @@ WOK end self end + def xml_fictionbook + def dir + output_path.xml_fictionbook.dir + '/' + base_filename.xml_fictionbook + end + def rel + output_path.xml_fictionbook.rel + '/' + base_filename.xml_fictionbook + end + self + end def xml_scaffold_structure_sisu def dir output_path.xml.dir + '/' + base_filename.xml_scaffold_structure_sisu @@ -5183,6 +5216,24 @@ WOK end i18n(fnh) end + def xml_fictionbook(fh=nil) + fh=default_hash_build(fh,Sfx[:xml_fictionbook]) + fh[:lng]=lang_code?(fh[:lng]) + fnh=if output_dir_structure.by_filename? + { + fn: 'scroll', + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end def xml_scaffold_structure_sisu(fh=nil) fh=default_hash_build(fh,Sfx[:xml_scaffold_structure_sisu]) fh[:lng]=lang_code?(fh[:lng]) @@ -6098,6 +6149,30 @@ WOK end self end + def xml_docbook_article + def ft + 'docbook' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + def rel_image + '../../_sisu/image' + end + self + end def xml_docbook_book def ft 'docbook_CONSTRUCTION_ZONE' @@ -6122,6 +6197,30 @@ WOK end self end + def xml_fictionbook + def ft + 'fictionbook_CONSTRUCTION_ZONE' + end + def dir + set_path(ft).dir.abc + end + def url + set_path(ft).url.abc + end + def rel + set_path(ft).rel.abc + end + def rcp + set_path(ft).rcp.abc + end + def rel_sm + set_path(ft).rel_sm.ab + end + def rel_image + '../../_sisu/image' + end + self + end def xml_scaffold_structure_sisu def ft 'sisu.scaffold.xml' diff --git a/lib/sisu/v5/urls.rb b/lib/sisu/v5/urls.rb index bdd66a59..ce3be66b 100644 --- a/lib/sisu/v5/urls.rb +++ b/lib/sisu/v5/urls.rb @@ -119,6 +119,7 @@ module SiSU_Urls ' --markdown (markdown txt)'=>@fn[:txt_markdown], ' --rst (rST restructured-text)'=>@fn[:txt_rst], ' --docbook-book (DocBook Book)'=>@fn[:xml_docbook_book], + ' --fictionbook (Fictionbook)'=>@fn[:xml_fictionbook], 'x --xml-sax (XML sax type)'=>@fn[:sax], 'X --xml-dom (XML dom type)'=>@fn[:dom], ' --xml-scaffold-sisu (XML scaffold)'=>@fn[:xml_scaffold_structure_sisu], @@ -231,6 +232,9 @@ module SiSU_Urls def docbook_book(x) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_docbook_book.dir}/#{@md.file.base_filename.xml_docbook_book}").result end + def fictionbook(x) + SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_fictionbook.dir}/#{@md.file.base_filename.xml_fictionbook}").result + end def scaffold_structure_sisu(x) SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_scaffold_structure_sisu.dir}/#{@md.file.base_filename.xml_scaffold_structure_sisu}").result end @@ -446,6 +450,10 @@ module SiSU_Urls and @opt.act[:xml_docbook_book][:set]==:on show.xml.docbook_book(x) end + if x=~/--fictionbook\b/ \ + and @opt.act[:xml_fictionbook][:set]==:on + show.xml.fictionbook(x) + end if x=~/--xml-scaffold-sisu\b/ \ and @opt.act[:xml_scaffold_structure_sisu][:set]==:on show.xml.scaffold_structure_sisu(x) diff --git a/lib/sisu/v5/xml_fictionbook2.rb b/lib/sisu/v5/xml_fictionbook2.rb new file mode 100644 index 00000000..8ee2fb89 --- /dev/null +++ b/lib/sisu/v5/xml_fictionbook2.rb @@ -0,0 +1,366 @@ +# 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> + |