# encoding: utf-8 =begin * Name: SiSU * Description: a framework for document structuring, publishing and search * Author: Ralph Amissah * Copyright: (C) 1997 - 2011, 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 . If you have Internet connection, the latest version of the GPL should be available at these locations: * SiSU uses: * Standard SiSU markup syntax, * Standard SiSU meta-markup syntax, and the * Standard SiSU object citation numbering and system * Hompages: * Download: * Ralph Amissah ** Description: urls for output files =end module SiSU_urls require_relative 'particulars' # particulars.rb include SiSU_Particulars require_relative 'sysenv' # sysenv.rb include SiSU_Env; include SiSU_Screen class Source attr_reader :opt def initialize(opt) @opt=opt end def read begin SiSU_urls::Output_urls.new(@opt).songsheet if @opt.fnb #fnb[/.+?\.(?:[_-]?sst|ssm)$/] rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd).error ensure end end end class Output_urls attr_reader :fns,:fnb,:cmd,:dir,:m_regular,:u def initialize(opt) @opt=opt @particulars=SiSU_Particulars::Combined_singleton.instance.get_env_md(opt) fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns) @cmd=@opt.cmd @md=@particulars.md @env=@particulars.env @fnb=@env.fnb fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns) @fnl=@env.i18n.lang_filename(fn_set_lang[:c]) @fn=SiSU_Env::Env_call.new(@opt.fns).lang(fn_set_lang[:c]) @m_regular=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/ @prog=@env.program source=if @opt.fns =~/\.sst$/; @opt.fns elsif @opt.fns =~/\.ssm\.sst/; "#{@fnb}.ssm.sst" else 'not recognised file' end @u ||= { 'a --txt (Plain-text (footnotes))'=>@fn[:plain], 'b --xhtml (XHTML)'=>@fn[:xhtml], 'D[iu] --psql (DBI import/update postgresql)'=>'dbi psql', 'd[iu] --sqlite (DBI import/update sqlite)'=>'dbi sqlite3', 'e --epub (EPUB)'=>@fn[:epub], 'P --pot (Pot)'=>@fn[:pot], 'h --html (HTML segmented)'=>@fn[:toc], 'H --html (HTML segmented)'=>@fn[:toc], 'h --html (HTML scroll)'=>@fn[:doc], 'H --html (HTML scroll)'=>@fn[:doc], 'I --texinfo (Info file)'=>'info', 'i --man (manpage)'=>'manpage', 'm --dal (Document Abstraction)'=>'dal', 'N (Digests md5/sha256)'=>@fn[:digest], 'o --odt (ODF:ODT - Open Document)'=>@fn[:odf], 'p --pdf (PDF landscape)'=>@fn[:pdf_l], 'p --pdf (PDF portrait)'=>@fn[:pdf_p], 'E --profile (Ruby profiler)'=>'profile', 's --source (sisu markup)'=>source, 'S --sisupod (sisupod)'=>@fn[:sisupod], 't --txt (Plain-text (endnotes))'=>@fn[:plain], 'x --xml-sax (XML sax type)'=>@fn[:sax], 'X --xml-dom (XML dom type)'=>@fn[:dom], 'y --manifest (Manifest, html)'=>@fn[:manifest], 'Y (Sitemap, xml)'=>@fn[:sitemap], 'w -concordance (Concordance, html)'=>@fn[:concordance], }.sort {|a,b| a[0].downcase<=>b[0].downcase} end def songsheet begin @opt.cmd=~/U/ ? urls_all : (urls_select unless @opt.cmd=~/q/) rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error ensure end end def urls_maintenance(opt,x,y) if x=~/^([abcehHmNoptwxXy])/ \ and opt.cmd =~/[abcehHmNoptwxXy]/ \ and x=~/^[#{opt.cmd}]/ \ and opt.cmd =~/M/ m=$1 f=y tool=@prog.text_editor if x =~/^m/ \ and @opt.cmd=~/m/ \ and x=~/^[#{opt.cmd}]/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.dal}/#{@opt.fns}.meta").maintenance if @opt.cmd =~/[MVv]/ end if x=~/^([hHw])/ \ and @opt.cmd=~/[hHw]/ \ and x=~/^[#{@opt.cmd}]/ f=if x !~/segmented/; "#{y}.html" else "#{y}.index.html" end end if x=~/^p/ \ and @opt.cmd=~/p/ \ and x=~/^[#{@opt.cmd}]/ tool=@prog.pdf_viewer fns=@opt.fns.gsub(/~/,'-') unless @opt.cmd =~/q/ tell=if y =~/landscape/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.tex}/#{fns}.landscape.tex") else SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.tex}/#{fns}.tex") end tell.maintenance if @opt.cmd =~/[MVv]/ end end if x=~/^o/ \ and @opt.cmd=~/o/ \ and x=~/^[#{@opt.cmd}]/ tool=@prog.odf_viewer end if x=~/^e/ \ and @opt.cmd=~/e/ \ and x=~/^[#{@opt.cmd}]/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.processing_path.epub}/OPS/toc.xhtml").maintenance if @opt.cmd =~/[MVv]/ end if x !~/^[me]/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{tool} #{@env.path.output}/#{@fnb}/#{y}").maintenance if @opt.cmd =~/[MVv]/ end #@opt.cmd.gsub!(/#{m}/,'') end end def urls_select unless @opt.cmd =~/q/ i="(output manifest) #{@md.file.output_path.manifest}/#{@md.file.base_filename.manifest}" @opt.cmd=~/[MVvz]/ \ ? SiSU_Screen::Ansi.new(@opt.cmd,'URLs').grey_title_hi \ : SiSU_Screen::Ansi.new(@opt.cmd,'URL',i).green_hi_blue SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@md.file.output_path.manifest}/#{@md.file.base_filename.manifest}").flow if @opt.cmd =~/[MVv]/ end m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m @pwd_stub="#{@env.url.output_tell}"[m,1] unless @opt.cmd =~/q/ @u.each do |x,y| if @opt.fns =~ @m_regular if @opt.cmd =~/[MVv]/ if (x=~/^a/ and @opt.cmd =~/a/) \ or (x=~/^t/ and @opt.cmd =~/t/) SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.txt}/#{@md.file.base_filename.txt}").result end if x=~/^b/ \ and @opt.cmd =~/b/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xhtml}/#{@md.file.base_filename.xhtml}").result end # if x=~/^[c]/ \ # and @opt.cmd =~/[c]/ # SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.manifest}/#{@md.file.base_filename.manifest}").result # end if x=~/^D/ \ and @opt.cmd =~/D/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} DBI psql","#{@pwd_stub}::#{@opt.fns}",y).result end if x=~/^d/ \ and @opt.cmd =~/d/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} DBI sqlite","sqlite3 #{@env.path.output}/sisu_sqlite.db", "#{y}").result end if x=~/^e/ \ and @opt.cmd =~/e/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.epub_viewer} #{@md.file.output_path.epub}/#{@md.file.base_filename.epub}").result end if x=~/^h/ \ and @opt.cmd =~/h/ if x =~/scroll/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.html_scroll}/#{@md.file.base_filename.html_scroll}").result else SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.html_seg}/#{@md.file.base_filename.html_segtoc}").result end end if x=~/^I/ \ and @opt.cmd =~/I/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","cd #{@env.processing_path.texinfo}; pinfo ./#{@fnb}.#{y}; cd -").result end if x=~/^i/ \ and @opt.cmd =~/i/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.manpage_viewer} #{@md.file.output_path.manpage}/#{@md.file.base_filename.manpage}").result end if x=~/^N/ \ and @opt.cmd =~/N/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.hash_digest}/#{@md.file.base_filename.hash_digest}").result end if x=~/^o/ \ and @opt.cmd =~/o/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.odf_viewer} file://#{@md.file.output_path.odt}/#{@md.file.base_filename.odt}").result end if x=~/^P/ \ and @opt.cmd =~/P/ if @opt.fns =~/\S+?~\S{2}(?:_\S{2})?\.ss[mt]/ f=y.gsub(/\.pot$/,'.po') SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@md.file.output_path.po}/#{f}").result else SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@md.file.output_path.pot}/#{y}").result end #@opt.cmd.gsub!(/P/,'') end if x=~/^p/ \ and @opt.cmd =~/p/ if x =~/portrait/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.pdf_viewer} #{@md.file.output_path.pdf}/#{@md.file.base_filename.pdf_p}pdf").result else SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.pdf_viewer} #{@md.file.output_path.pdf}/#{@md.file.base_filename.pdf_l}pdf").result end end #if x=~/^P/ \ #and @opt.cmd =~/P/ # SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} Profile","#{@pwd_stub}::#{@opt.fns}",y).result # @opt.cmd.gsub!(/P/,'') #end if x=~/^S/ \ and @opt.cmd =~/S/ zipfile=if @opt.fns =~/\.ssm\.sst$/; y.gsub(/(?:\~\S{2,3})?(\.ssm\.sst\.zip)$/,'.ssm.zip') else y.gsub(/(?:\~\S{2,3})?(\.sst\.zip)$/,'\1') end SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} #{@env.url.output_tell}/pod/#{y}").result end if x=~/^s/ \ and @opt.cmd =~/s/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@md.file.output_path.src}/#{y}").result end if x=~/^w/ \ and @opt.cmd =~/w/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.html_concordance}/#{@md.file.base_filename.html_concordance}").result end if x=~/^X/ \ and @opt.cmd =~/X/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_dom}/#{@md.file.base_filename.xml_dom}").result end if x=~/^x/ \ and @opt.cmd =~/x/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.xml_sax}/#{@md.file.base_filename.xml_sax}").result end if x=~/^Y/ \ and @opt.cmd =~/Y/ #BROKEN SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.sitemap}/#{@md.file.base_filename.sitemap}").result end if x=~/^y/ \ and @opt.cmd =~/y/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.manifest}/#{@md.file.base_filename.manifest}").result end end urls_maintenance(@opt,x,y) if @opt.cmd =~/[MV]/ end end end end def urls_all i="(output manifest) #{@env.url.output_tell}/#{@fnb}/sisu_manifest.html" SiSU_Screen::Ansi.new(@opt.cmd,'URLs',i).grey_title_hi @u.each do |x,y| tell=case x when /^m/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} ~#{y}/#{@fnb}.#{y}") when /^[bBcdhNopswxXy]/ tellx=SiSU_Screen::Ansi.new(@opt.cmd,"-p (LaTeX)","#{@prog.text_editor} ~work/tex_rz/#{@fnb}.tex") if y=~/landscape/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} #{@env.url.output_tell}/#{@fnb}/#{y}") when /^[at]/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.txt}/#{@md.file.base_filename.txt}") #.result when /^e/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.epub_viewer} #{@env.path.output}/epub/#{y}") when /^Y/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} #{@env.url.output_tell}/sitemap/#{y}") when /^I/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","cd #{@env.processing_path.texinfo}; pinfo ./#{@fnb}.#{y}; cd -") when /^i/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.manpage_viewer} #{@env.processing_path.manpage}/#{@fnb}.1") end unless @opt.cmd =~/q/ tellx.result if tellx tell.result if tell end tellx=nil end end end end __END__