From 4b51bc00cda70d3c118401a74f1704df38c947a3 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 1 Feb 2011 09:48:30 -0500 Subject: v3 introduced as development branch, invoked using "sisu --v3 [instructions] --- lib/sisu/v3/urls.rb | 305 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 305 insertions(+) create mode 100644 lib/sisu/v3/urls.rb (limited to 'lib/sisu/v3/urls.rb') diff --git a/lib/sisu/v3/urls.rb b/lib/sisu/v3/urls.rb new file mode 100644 index 00000000..eee4d4c3 --- /dev/null +++ b/lib/sisu/v3/urls.rb @@ -0,0 +1,305 @@ +# coding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997 - 2010, 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 "#{SiSU_lib}/particulars" # particulars.rb + include SiSU_Particulars + require "#{SiSU_lib}/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.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.path.tex}/#{fns}.landscape.tex") + else SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@env.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.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=~/^([bcNwxXY])/ \ + and @opt.cmd=~/[bcNwxXY]/ \ + and x=~/^[#{@opt.cmd}]/ + m=$1 + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} #{@env.url.output_tell}/#{@fnb}/#{y}").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 + if x=~/^[at]/ \ + and @opt.cmd =~/[at]/ + 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=~/^h/ \ + and @opt.cmd =~/h/ + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.web_browser} file://#{@md.file.output_path.html_scroll}/#{@md.file.base_filename.html_scroll}").result + 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 + 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=~/^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/ + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.pdf_viewer} #{@md.file.output_path.pdf}/#{@md.file.base_filename.pdf_p}pdf").result + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.pdf_viewer} #{@md.file.output_path.pdf}/#{@md.file.base_filename.pdf_l}pdf").result + end + if x=~/^I/ \ + and @opt.cmd =~/I/ + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","cd #{@env.path.texinfo}; pinfo ./#{@fnb}.#{y}; cd -").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=~/^i/ \ + and @opt.cmd =~/i/ + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.manpage_viewer} #{@env.path.manpage}/#{@fnb}.1").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/ + # 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/ + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.text_editor} #{@md.file.output_path.src}/#{y}").result + 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 + 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.path.texinfo}; pinfo ./#{@fnb}.#{y}; cd -") + when /^i/ + SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@prog.manpage_viewer} #{@env.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__ -- cgit v1.2.3