=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 Ralph Amissah All Rights Reserved. * License: GPL 3 or later: SiSU, a framework for document structuring, publishing and search Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 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 "#{SiSU_lib}/sysenv" include SiSU_Env include SiSU_Screen require "#{SiSU_lib}/param" include SiSU_Param 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($!,$@,nil,@opt.cmd).error ensure end end end class Output_urls include SiSU_Param attr_reader :fns,:fnb,:cmd,:dir,:m_regular,:u def initialize(opt) @opt=opt fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns) @cmd=@opt.cmd env=SiSU_Env::Env_call.new(@opt.fns) @fnb=env.fnb @env=SiSU_Env::Info_env.new(@opt.fns) 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)$/ @path=SiSU_Env::Info_env.new(@opt.fns) @webserv_url=@path.url.output_tell @tool=@env.program.text_editor @editor=@env.program.text_editor @browser=@env.program.web_browser @console_browser=@env.program.console_web_browser @pdf_viewer=@env.program.pdf_viewer @odf_viewer=@env.program.odf_viewer @manpage_gen=@env.program.manpage_generator source=if @opt.fns =~/\.sst$/; @opt.fns elsif @opt.fns =~/\.ssm\.sst/; "#@fnb.ssm.sst" else 'not recognised file' end @u ||= { 'a (Plain-text (footnotes))'=>@fn[:plain], 'A (Plain-text (footnotes) dos)'=>@fn[:plain], 'b (XHTML)'=>@fn[:xhtml], #'B (Docbook XML)'=>@fn[:docbook], 'D[iu] (DBI import/update postgresql)'=>'dbi psql', 'd[iu] (DBI import/update sqlite)'=>'dbi sqlite', 'e (Plain-text (endnotes))'=>@fn[:plain], 'E (Plain-text (endnotes) dos)'=>@fn[:plain], 'h (HTML segmented)'=>@fn[:toc], 'H (HTML segmented)'=>@fn[:toc], 'h (HTML scroll)'=>@fn[:doc], 'H (HTML scroll)'=>@fn[:doc], 'I (Info file)'=>'info', 'i (manpage)'=>'manpage', 'm (Document Abstraction)'=>'dal', 'N (Digests md5/sha256)'=>@fn[:digest], 'o (ODF:ODT - Open Document)'=>@fn[:odf], 'p (PDF landscape)'=>@fn[:pdf_l], 'p (PDF portrait)'=>@fn[:pdf_p], 'P[iu] (DB postgresql import/update)'=>'psql', 's (sisu markup)'=>source, 'S (sisupod)'=>@fn[:sisupod], 'x (XML sax type)'=>@fn[:sax], 'X (XML dom type)'=>@fn[:dom], 'y (Manifest, html)'=>@fn[:manifest], 'Y (Sitemap, xml)'=>@fn[:sitemap], 'w (Concordance, html)'=>@fn[:concordance], }.sort {|a,b| a[0].downcase<=>b[0].downcase} end def songsheet begin urls_all if @opt.cmd=~/U/ urls_select if @opt.cmd=~/[uvVM]/ rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error ensure end end def urls_maintenance(opt,x,y) if x=~/^([abchHmNopwxXy])/ \ and opt.cmd =~/[abchHmNopwxXy]/ \ and x=~/^[#{opt.cmd}]/ m=$1 f=y tool=@editor if x =~/^m/ \ and @opt.cmd=~/m/ \ and x=~/^[#{opt.cmd}]/ \ and @opt.cmd =~/M/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@editor #{@env.path.dal}/#{@opt.fns}.meta") tell.maintenance unless @opt.cmd =~/q/ 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=@pdf_viewer if opt.cmd =~/M/ fns=@opt.fns.gsub(/~/,'-') tell=if y =~/landscape/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@editor #{@env.path.tex}/#{fns}.landscape.tex") else SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@editor #{@env.path.tex}/#{fns}.tex") end tell.maintenance unless @opt.cmd =~/q/ end end if x=~/^o/ \ and @opt.cmd=~/o/ \ and x=~/^[#{@opt.cmd}]/ tool=@odf_viewer end #if x=~/^i/ and @opt.cmd=~/i/ and x=~/^[#{@opt.cmd}]/ # #end if x !~/^m/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{tool} #{@env.path.output}/#@fnb/#{y}") tell.maintenance unless @opt.cmd =~/q/ end @opt.cmd.gsub!(/#{m}/,'') end end def urls_select tell=SiSU_Screen::Ansi.new(@opt.cmd,"URLs") tell.grey_title_hi unless @opt.cmd =~/q/ tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output}/#@fnb") tell.flow unless @opt.cmd =~/q/ m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m @pwd_stub="#@webserv_url"[m,1] @u.each do |x,y| if @opt.fns =~ @m_regular if x=~/^([abchHNopwxXyY])/ \ and @opt.cmd=~/[abchHNopwxXyY]/ \ and x=~/^[#{@opt.cmd}]/ m=$1 tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@browser #@webserv_url/#@fnb/#{y}") tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/#{m}/,'') end if x=~/^I/ \ and @opt.cmd =~/I/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","cd #{@path.path.texinfo}; pinfo ./#@fnb.#{y}; cd -") tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/I/,'') end if x=~/^D/ \ and @opt.cmd =~/D/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} DBI psql","#@pwd_stub::#{@opt.fns}",y) tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/D[iu]/,'') end if x=~/^d/ \ and @opt.cmd =~/d/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} DBI sqlite","sqlite #{@env.path.output}/sisu_sqlite.db", "#{y}") tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/d[iu]/,'') end if x=~/^i/ \ and @opt.cmd =~/i/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@manpage_gen #{@path.path.manpage}/#@fnb.1 |most") tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/I/,'') end if x=~/^P/ \ and @opt.cmd =~/P/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} Psql","#@pwd_stub::#{@opt.fns}",y) tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/P[iu]/,'') end if x=~/^s/ \ and @opt.cmd =~/s/ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@browser #@webserv_url/src/#{y}") tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/I/,'') end if x=~/^S/ \ and @opt.cmd =~/[sS]/ 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 tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@browser #@webserv_url/pod/#{y}") tell.result unless @opt.cmd =~/q/ @opt.cmd.gsub!(/I/,'') end urls_maintenance(@opt,x,y) if @opt.cmd =~/[MV]/ end end end def urls_all tell=SiSU_Screen::Ansi.new(@opt.cmd,'URLs') tell.grey_title_hi unless @opt.cmd =~/q/ tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output}/#@fnb") tell.flow unless @opt.cmd =~/q/ @u.each do |x,y| tell=case x when /^m/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@env.program.text_editor} ~#{y}/#@fnb.#{y}") when /^[abBcdhNopswxXy]/ tellx=SiSU_Screen::Ansi.new(@opt.cmd,"-p (LaTeX)","#{@env.program.text_editor} ~work/tex_rz/#@fnb.tex") if y=~/landscape/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@browser #@webserv_url/#@fnb/#{y}") when /^Y/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@browser #@webserv_url/sitemap/#{y}") when /^I/ SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","cd #{@path.path.texinfo}; pinfo ./#@fnb.#{y}; cd -") end tellx.result if tellx tell.result if tell tellx=nil end end end end __END__