diff options
| -rw-r--r-- | CHANGELOG | 11 | ||||
| -rw-r--r-- | lib/sisu/v0/embedded.rb | 171 | ||||
| -rw-r--r-- | lib/sisu/v0/hub.rb | 77 | ||||
| -rw-r--r-- | lib/sisu/v0/param.rb | 15 | ||||
| -rw-r--r-- | lib/sisu/v0/remote.rb (renamed from lib/sisu/v0/remote_put.rb) | 68 | ||||
| -rw-r--r-- | lib/sisu/v0/semantics.rb | 396 | 
6 files changed, 274 insertions, 464 deletions
| @@ -17,6 +17,17 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_0.61.1.orig.tar.gz    * special character exceptions, exception +  * remote, (put, get) placed in single file (consider separating later) + +  * embedded content, included binaries such as images, audio, video, copy +    content associated with document to desired output locations, [decide how +    audio, video/multimedia are to be handled, initially just links to content] + +  * copy images associated with document along with document, does not take +    care of skins though, for all images still need to use -CC + +  * pruning +  %% sisu_0.61.0.orig.tar.gz (2007-10-12:41/5)  http://www.jus.uio.no/sisu/pkg/src/sisu_0.61.0.orig.tar.gz    3a2329726d49945247b1f4340482c895 1474630 sisu_0.61.0.orig.tar.gz diff --git a/lib/sisu/v0/embedded.rb b/lib/sisu/v0/embedded.rb new file mode 100644 index 00000000..11a5aa24 --- /dev/null +++ b/lib/sisu/v0/embedded.rb @@ -0,0 +1,171 @@ +=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 <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/licenses/gpl.html> +   <http://www.gnu.org/copyleft/gpl.html> +   <http://www.jus.uio.no/sisu/gpl.fsf> + + * SiSU uses: +   * Standard SiSU markup syntax, +   * Standard SiSU meta-markup syntax, and the +   * Standard SiSU object citation numbering and system + + * Hompages: +   <http://www.jus.uio.no/sisu> +   <http://www.sisudoc.org> + + * Download: +   <http://www.jus.uio.no/sisu/SiSU/download.html> + + * Ralph Amissah +   <ralph@amissah.com> +   <ralph.amissah@gmail.com> + + ** Description: sitemap created from parameters extracted from input file(s) + +=end +module SiSU_Embedded +  require "#{SiSU_lib}/param" +  require "#{SiSU_lib}/sysenv" +  include SiSU_Env +  include SiSU_Param +  class Source +    require 'fileutils' +    include FileUtils +    def initialize(opt) +      @opt=opt +      @md=SiSU_Param::Parameters.new(@opt).get +      @env=SiSU_Env::Info_env.new(@md.fns) +      @rhost=SiSU_Env::Info_remote.new(@opt).remote_host_base +    end +    def read +      songsheet +    end +    def songsheet +      images +      audio +      multimedia +      begin +      rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error +      ensure +      end +    end +    def images +      src="#{Dir.pwd}/_sisu/image" +      ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_local" +      rdest="#@rhost/#{@env.path.stub_pwd}/_sisu/image_local" +      if @md.cmd.inspect =~/[vVMR]/ and FileTest.directory?(src) +        File.mkpath(ldest) unless FileTest.directory?(ldest) +        src_ec="#{src}/" + @md.ec[:image].join(" #{src}/") +        SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync +        if @md.cmd.inspect =~/R/ #rsync to remote image directory +          SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync +        end +      end +    end +    def audio +      #p @md.ec[:audio] +      src="#{Dir.pwd}/_sisu/mm/audio" +      ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/audio" +      rdest="#@rhost/#{@env.path.stub_pwd}/_sisu/mm/audio" +      if @md.cmd.inspect =~/[vVMR]/ and FileTest.directory?(src) +        File.mkpath(ldest) unless FileTest.directory?(ldest) +        src_ec="#{src}/" + @md.ec[:audio].join(" #{src}/") +        SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync +        if @md.cmd.inspect =~/R/ #rsync to remote audio directory +          SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync +        end +      end +    end +    def multimedia +      #p @md.ec[:multimedia] +      src="#{Dir.pwd}/_sisu/mm/video" +      ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/video" +      rdest="#@rhost/#{@env.path.stub_pwd}/_sisu/mm/video" +      if @md.cmd.inspect =~/[vVMR]/ and FileTest.directory?(src) +        File.mkpath(ldest) unless FileTest.directory?(ldest) +        src_ec="#{src}/" + @md.ec[:multimedia].join(" #{src}/") +        SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync +        if @md.cmd.inspect =~/R/ #rsync to remote video directory +          SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync +        end +      end +    end +  end +end +__END__ +def images # alternative may be preferable as source taken from local destination, and not sent remotely unless found there +  src="#{Dir.pwd}/_sisu/image" +  ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_local" +  rdest="#@rhost/#{@env.path.stub_pwd}/_sisu/image_local" +  if @md.cmd.inspect =~/[vVMR]/ and FileTest.directory?(src) +    File.mkpath(ldest) unless FileTest.directory?(ldest) +    @md.ec[:image].each do |i| +      SiSU_Env::System_call.new("#{src}/#{i}","#{ldest}/.",'q').rsync +      #cp("#{src}/#{i}","#{ldest}/.") #use rysnc +      if @md.cmd.inspect =~/R/ #rsync to remote image directory #ldest used as source, if not in local repo, don't share +        SiSU_Env::System_call.new("#{ldest}/#{i}","#{rdest}/.",'q').rsync +      end +    end +  end +end +def audio +  #p @md.ec[:audio] +  src="#{Dir.pwd}/_sisu/mm/audio" +  ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/audio" +  if @md.cmd.inspect =~/[vVMR]/ and FileTest.directory?(src) +    File.mkpath(ldest) unless FileTest.directory?(ldest) +    @md.ec[:audio].each do |i| +      SiSU_Env::System_call.new("#{src}/#{i}","#{ldest}/.",'q').rsync +      #cp("#{src}/#{i}","#{ldest}/.") #use rysnc +      if @md.cmd.inspect =~/R/ +        #rsync to remote audio directory +      end +    end +  end +end +def multimedia +  #p @md.ec[:multimedia] +  src="#{Dir.pwd}/_sisu/mm/video" +  ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/video" +  if @md.cmd.inspect =~/[vVMR]/ and FileTest.directory?(src) +    File.mkpath(ldest) unless FileTest.directory?(ldest) +    @md.ec[:multimedia].each do |i| +      SiSU_Env::System_call.new("#{src}/#{i}","#{ldest}/.",'q').rsync +      #cp("#{src}/#{i}","#{ldest}/.") #use rysnc +      if @md.cmd.inspect =~/R/ +        #rsync to remote multimedia directory +      end +    end +  end +end diff --git a/lib/sisu/v0/hub.rb b/lib/sisu/v0/hub.rb index 4880807d..db0bb2a2 100644 --- a/lib/sisu/v0/hub.rb +++ b/lib/sisu/v0/hub.rb @@ -131,7 +131,7 @@ module SiSU            else              put=fns.gsub(/(.+)?\._sst$/,'\1.ssm')              @opt.fns=fns -            if @req !~/(?:urls|remote_put)$/ +            if @req !~/(?:urls|remote)$/                if @req=~/^dal$/ and FileTest.file?(@opt.fns) and @opt.fns =~ /\.(?:[_-]?sst|ssm)$/                  if fns =~ /\.ssm$/; require "#{SiSU_lib}/composite"  #pre-processing                    SiSU_Assemble::Composite.new(@opt).read @@ -168,6 +168,7 @@ module SiSU                    when /^xml$/;             SiSU_XML_SAX::Source.new(@opt).read         # -x                    when /^xml_dom$/;         SiSU_XML_DOM::Source.new(@opt).read         # -X                    when /^xhtml$/;           SiSU_XHTML::Source.new(@opt).read           # -b +                  when /^embedded$/;        SiSU_Embedded::Source.new(@opt).read        # -m (image and other content)                    when /^manifest$/;        SiSU_Manifest::Source.new(@opt).read        # -y                    when /^sitemaps$/;        SiSU_Sitemaps::Source.new(@opt).read        # -Y                    when /^zap$/;             SiSU_Zap::Source.new(@opt).read             # -Z @@ -185,7 +186,7 @@ module SiSU              elsif FileTest.file?(put)                case @req                when /^urls$/;           SiSU_urls::Source.new(@opt).read           # -u -v -V -M -              when /^remote_put$/ +              when /^remote$/                  case @message                  when /scp/;            SiSU_Remote::Put.new(@opt).scp             # -r                  when /rsync/;          SiSU_Remote::Put.new(@opt).rsync           # -R @@ -216,22 +217,22 @@ module SiSU      end      def remote_put_base_site_rsync                                   # -CR  p "here #{__FILE__} #{__LINE__}" if @opt =~/M/ -      require "#{SiSU_lib}/remote_put" +      require "#{SiSU_lib}/remote"        SiSU_Remote::Put.new(@opt).rsync_base      end      def remote_put_base_site_rsync_match                             # -CCRZ  p "here #{__FILE__} #{__LINE__}" if @opt =~/M/ -      require "#{SiSU_lib}/remote_put" +      require "#{SiSU_lib}/remote"        SiSU_Remote::Put.new(@opt).rsync_base_sync      end      def remote_put_base_site                                         # -Cr  p "here #{__FILE__} #{__LINE__}" if @opt =~/M/ -      require "#{SiSU_lib}/remote_put" +      require "#{SiSU_lib}/remote"        SiSU_Remote::Put.new(@opt).scp_base      end      def remote_put_base_site_all                                     # -CCr  p "here #{__FILE__} #{__LINE__}" if @opt =~/M/ -      require "#{SiSU_lib}/remote_put" +      require "#{SiSU_lib}/remote"        SiSU_Remote::Put.new(@opt).scp_base_all      end      def cgi                                                          # -F @@ -256,8 +257,6 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/        puts %{#{@cX.blue}<<#{@cX.off}#{@cX.green}Start Webrick web server on port: #{prt}#{@cX.off}#{@cX.blue}>> #{@cX.off*2} }        system("sisu_webrick #{port}&\n")      end -    def semantics -    end      def not_found        puts "\n#{@cX.fuschia}FILE NOT FOUND:#{@cX.off} << #{@opt.fns} >> - requested #{@opt.cmd} processing skipped\n"      end @@ -393,59 +392,13 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/                end              end              if @get_s.length > 0                                     #% remote markup file .sst -              require 'open-uri' -              require 'pp' -              require "#{SiSU_lib}/composite" -              @rgx_image=/\{\s*(\S+?\.(?:png|jpg|gif))/ -              @rgx_skin=/^0~skin\s+(\S+)/ -              threads=[] -              for requested_page in @get_s -                threads << Thread.new(requested_page) do |url| -                  open(url) do |f| -                    raise "#{url} not found" unless f -                    re_fnb=/((?:https?|file):\/\/[^\/ ]+?\/[^\/ ]+?)\/\S+?\/([^\/]+?)\.ss(t)/ #revisit and remove DO -                    base_uri,fnb,instr=re_fnb.match(url)[1..3] if re_fnb -                    imagedir= base_uri + '/_sisu/image_local' #check on -                    doc_skin_dir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.sst$/.match(url).captures.join + '/_sisu/skin/doc' -                    #"Got file, and ready to process: #{fnb}.t#{instr}" -                    downloaded_file=File.new("#{fnb}.-sst",'w+') -                    images=SiSU_Assemble::Remote_image.new.image(imagedir) -                    skin=SiSU_Assemble::Remote_image.new.image(doc_skin_dir) -                    f.collect.each do |r|                            # work area -                      skin << r.scan(@rgx_skin).uniq if r =~@rgx_skin -                      images << r.scan(@rgx_image).uniq if r =~@rgx_image -                      downloaded_file << r -                    end -                    if skin and skin.length > 0 -                      SiSU_Assemble::Remote_image.new.download_doc_skin(skin) -                    end -                    if images and images.length > 1 -                      images.flatten!.uniq! -                      @msg,@msgs='downloading images:', [ images.join(',') ] -                      @tell.call.warn unless @opt.cmd =~/q/ -                      SiSU_Assemble::Remote_image.new.download_images(images) -                      @msg,@msgs='downloading done',nil -                      @tell.call.warn unless @opt.cmd =~/q/ -                    end -                    downloaded_file.close -                  end -                end -              end +              require "#{SiSU_lib}/remote" +              SiSU_Remote::Get.new(@opt,@get_s).fns                Operations.new.counter              end -            threads.each {|thr| thr.join} if threads #and threads.length > 0              if @get_p.length > 0                                     #% remote sisupod -               require 'net/http' -              for requested_pod in @get_p -                pod_info=Remote_download.new(requested_pod) -                @opt.fns=pod_info.pod.name -                Net::HTTP.start(pod_info.pod.site) do |http| -                  resp=http.get("#{pod_info.pod.path}/#{pod_info.pod.name_source}") -                  open(pod_info.pod.name,'wb') do |file| -                    file.write(resp.body) -                   end -                end -              end +              require "#{SiSU_lib}/remote" +              SiSU_Remote::Get.new(@opt,@get_p).sisupod              end            rescue; SiSU_Errors::Info_error.new($!,$@,@opt,@fns).error #ok              @retry_count +=1 @@ -517,13 +470,15 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/          end          if @opt.cmd =~/G/; Operations.new(@opt).cgi                  #% -G cgi - used to make dbi intecface          end +        if @opt.cmd=~/m/; op('embedded','Embedded Content')          #% -m embedded content +        end          if @opt.cmd =~/y/; op('manifest','Manifest')                 #% -y manifest          end          if @opt.cmd =~/Y/; op('sitemaps','Sitemap')                  #% -Y sitemap          end -        if @opt.cmd =~/r/; op('remote_put','scp')                    #% -r copy to remote server +        if @opt.cmd =~/r/; op('remote','scp')                    #% -r copy to remote server          end -        if @opt.cmd =~/R/; op('remote_put','rsync')                  #% -R copy to remote server +        if @opt.cmd =~/R/; op('remote','rsync')                  #% -R copy to remote server          end          if @opt.cmd =~/[QuUvVM]/; op('urls','urls')                  #% -Q -u -v -V -M urls          end @@ -547,7 +502,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/          require "#{SiSU_lib}/sitemaps"          SiSU_Sitemaps::Source.new(@opt).read          if @opt.cmd =~/R/ -          require "#{SiSU_lib}/remote_put" +          require "#{SiSU_lib}/remote"            SiSU_Remote::Put.new(@opt).rsync_sitemaps          end        else                                                           #% help instructions diff --git a/lib/sisu/v0/param.rb b/lib/sisu/v0/param.rb index 194c42f9..9655afed 100644 --- a/lib/sisu/v0/param.rb +++ b/lib/sisu/v0/param.rb @@ -115,7 +115,7 @@ module SiSU_Param        @doc={ :lv=>[] }        @doc[:fns],@doc[:fnb],@doc[:scr_suffix]='','',''        @@publisher='SiSU scribe' -      attr_accessor :cmd,:mod,:env,:fn,:fns,:fnb,:fnn,:fnt,:fnl,:flv,:fnstex,:ocn,:sfx_src,:sfx,:pdf,:file_type,:dir_out,:dir_tex,:dir_lout,:txt_path,:site_skin,:sisu,:sisu_version,:ruby_version,:title,:dc_title,:html_title,:subtitle,:subtitle_tex,:creator_home,:dc_creator,:translator,:illustrator,:prepared_by,:digitized_by,:dc_subject,:dc_description,:dc_publisher,:dc_contributor,:dc_date,:dc_date_created,:dc_date_issued,:dc_date_available,:dc_date_valid,:dc_date_modified,:date_scheme,:date_created_scheme,:date_issued_scheme,:date_available_scheme,:date_valid_scheme,:date_modified_scheme,:dc_type,:dc_format,:dc_identifier,:dc_source,:dc_language,:language_original,:dc_relation,:dc_coverage,:dc_rights,:keywords,:comments,:abstract,:cls_loc,:cls_dewey,:cls_pg,:cls_isbn,:papersize,:toc,:lv1,:lv2,:lv3,:lv4,:lv5,:lv6,:pagenew,:pagebreak,:num_top,:toc_lev_limit,:flag_endnotes,:flag_auto_endnotes,:flag_separate_endnotes,:flag_separate_endnotes_make,:flag_auto_heading_num,:markup,:markup_instruction,:markup_version,:markup_declared,:make_bold,:make_italic,:flag_tables,:vocabulary,:doc_skin,:doc_css,:yaml,:lnk,:prefix_a,:prefix_b,:suffix,:information,:contact,:icon,:image,:ad_url,:ad_png,:ad_alt,:ad_began,:flag_promo,:promo,:ad_home,:stmp,:stmpd,:sc_filename,:sc_number,:sc_date,:sc_time,:sc_info,:yamladdr,:locale,:wc_lines,:wc_words,:wc_bytes,:file_encoding,:file_size,:user,:home,:hostname,:pwd,:firstseg,:programs,:creator_copymark,:lang,:en,:dgst,:dgst_skin,:generated,:tags,:tag_array,:concord_make,:seg_names,:seg_autoname_safe,:set_header_title,:set_heading_top,:set_heading_seg,:heading_seg_first,:heading_seg_first_flag,:base_program,:man_section,:man_name,:man_synopsis +      attr_accessor :cmd,:mod,:env,:fn,:fns,:fnb,:fnn,:fnt,:fnl,:flv,:fnstex,:ocn,:sfx_src,:sfx,:pdf,:file_type,:dir_out,:dir_tex,:dir_lout,:txt_path,:site_skin,:sisu,:sisu_version,:ruby_version,:title,:dc_title,:html_title,:subtitle,:subtitle_tex,:creator_home,:dc_creator,:translator,:illustrator,:prepared_by,:digitized_by,:dc_subject,:dc_description,:dc_publisher,:dc_contributor,:dc_date,:dc_date_created,:dc_date_issued,:dc_date_available,:dc_date_valid,:dc_date_modified,:date_scheme,:date_created_scheme,:date_issued_scheme,:date_available_scheme,:date_valid_scheme,:date_modified_scheme,:dc_type,:dc_format,:dc_identifier,:dc_source,:dc_language,:language_original,:dc_relation,:dc_coverage,:dc_rights,:keywords,:comments,:abstract,:cls_loc,:cls_dewey,:cls_pg,:cls_isbn,:papersize,:toc,:lv1,:lv2,:lv3,:lv4,:lv5,:lv6,:pagenew,:pagebreak,:num_top,:toc_lev_limit,:flag_endnotes,:flag_auto_endnotes,:flag_separate_endnotes,:flag_separate_endnotes_make,:flag_auto_heading_num,:markup,:markup_instruction,:markup_version,:markup_declared,:make_bold,:make_italic,:flag_tables,:vocabulary,:doc_skin,:doc_css,:yaml,:lnk,:prefix_a,:prefix_b,:suffix,:information,:contact,:icon,:image,:ad_url,:ad_png,:ad_alt,:ad_began,:flag_promo,:promo,:ad_home,:stmp,:stmpd,:sc_filename,:sc_number,:sc_date,:sc_time,:sc_info,:yamladdr,:locale,:wc_lines,:wc_words,:wc_bytes,:file_encoding,:file_size,:user,:home,:hostname,:pwd,:firstseg,:programs,:creator_copymark,:lang,:en,:dgst,:dgst_skin,:generated,:tags,:tag_array,:concord_make,:seg_names,:seg_autoname_safe,:set_header_title,:set_heading_top,:set_heading_seg,:heading_seg_first,:heading_seg_first_flag,:base_program,:man_section,:man_name,:man_synopsis,:ec        def initialize(fns_array,opt)          @env=@fn=@fns=@fnb=@fnn=@fnt=@fnl=@flv=@fnstex=@ocn=@sfx_src=@sfx=@pdf=@file_type=@dir_out=@dir_tex=@dir_lout=@txt_path=@flag_endnotes=@flag_auto_endnotes=@flag_separate_endnotes=@flag_separate_endnotes_make=@site_skin=@sisu=@sisu_version=@ruby_version=@title=@dc_title=@html_title=@subtitle=@subtitle_tex=@creator_home=@dc_creator=@translator=@illustrator=@prepared_by=@digitized_by=@dc_subject=@dc_description=@dc_publisher=@dc_contributor=@dc_date=@dc_date_created=@dc_date_issued=@dc_date_available=@dc_date_valid=@dc_date_modified=@date_scheme=@date_created_scheme=@date_issued_scheme=@date_available_scheme=@date_valid_scheme=@date_modified_scheme=@dc_type=@dc_format=@dc_identifier=@dc_source=@dc_language=@language_original=@dc_relation=@dc_coverage=@dc_rights=@keywords=@comments=@abstract=@cls_loc=@cls_dewey=@cls_pg=@cls_isbn=@papersize=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@pagenew=@pagebreak=@num_top=@toc_lev_limit=@flag_auto_heading_num=@make_bold=@make_italic=@flag_tables=@vocabulary=@doc_skin=@doc_css=@yaml=@lnk=@prefix_a=@prefix_b=@suffix=@information=@contact=@icon=@ad_url=@ad_png=@ad_alt=@ad_began=@promo=@ad_home=@stmp=@stmpd=@sc_filename=@sc_number=@sc_date=@sc_time=@sc_info=@yamladdr=@locale=@wc_lines=@wc_words=@wc_bytes=@file_encoding=@file_size=@firstseg=@programs=@creator_copymark=@lang=@en=@dgst=@dgst_skin=@generated=@heading_seg_first=@base_program=@man_synopsis=nil          @man_section=1 @@ -125,8 +125,11 @@ module SiSU_Param          @seg_autoname_safe=true          @markup_instruction,@markup_declared,@image='','','' #check which other values should be set to empty rather than nil          @markup=@markup_instruction #use @markup_instruction -        @flv,@lang,@seg_names,@tags,@tag_array,@tag_a=Array.new(6){[]} -        @doc,@fn,@make_italic,@make_bold,@tag_hash={},{},{},{},{},{} +        @doc,@fn,@make_italic,@make_bold,@tag_hash,@ec={},{},{},{},{},{},{} +        @flv,@lang,@seg_names,@tags,@tag_array,@tag_a,@ec[:image],@ec[:audio],@ec[:multimedia]=Array.new(9){[]} +        @rgx_image=/\{\s*(\S+?\.(?:png|jpg|gif))/ +        @rgx_audio=/\{\s*(\S+?\.(?:mp3|ogg))/ +        @rgx_mm=/\{\s*(\S+?\.(?:ogg|mpeg))/ #expand and distinguish ogg          begin          rescue; SiSU_Errors::Info_error.new($!,$@,@cmd,@fns).error          ensure @@ -591,7 +594,13 @@ module SiSU_Param                @seg_autoname_safe=false if m=~/^\d{1,3}/ and m !~/^0/              end            end +          @ec[:image] << para.scan(@rgx_image).uniq if para =~@rgx_image #embedded content +          @ec[:audio] << para.scan(@rgx_audio).uniq if para =~@rgx_audio #embedded content +          @ec[:multimedia] << para.scan(@rgx_mm).uniq if para =~@rgx_mm #embedded content          end #% here endeth the document loop +        @ec[:image].uniq!; @ec[:image].flatten!; @ec[:image].sort! +        @ec[:audio].uniq!; @ec[:audio].flatten!; @ec[:audio].sort! +        @ec[:multimedia].uniq!; @ec[:multimedia].flatten!; @ec[:multimedia].sort!          @man_name.gsub!(/(-)/,"\\\\\\1")          @man_name.gsub!(/\n/,"\n.BR\n")          @man_name.gsub!(/\A/,"\n.SH NAME\n") diff --git a/lib/sisu/v0/remote_put.rb b/lib/sisu/v0/remote.rb index 2e7975a3..b35f2396 100644 --- a/lib/sisu/v0/remote_put.rb +++ b/lib/sisu/v0/remote.rb @@ -51,10 +51,7 @@     <ralph@amissah.com>     <ralph.amissah@gmail.com> - ** Description: remote put, copy output to remote server -   ** Note: this operation should probably be threaded & run at its own pace, -      independent of rest of program primary problem will be with notification -      of progress, implement naively to start with + ** Description: remote operations, get source from or copy output to remote server  =end  module SiSU_Remote @@ -106,5 +103,68 @@ module SiSU_Remote        @remote.rsync_sitemaps      end    end +  class Get +    def initialize(opt,get_s) +      @opt,@get_s=opt,get_s +      @msg,@msgs='',nil +      @tell=lambda { SiSU_Screen::Ansi.new(@opt.cmd,@msg,"#{@msgs.inspect if @msgs}") } +    end +    def fns +      require 'open-uri' +      require 'pp' +      require "#{SiSU_lib}/composite" +      @rgx_image=/\{\s*(\S+?\.(?:png|jpg|gif))/ +      @rgx_skin=/(?:0~|@)skin:?\s+(\S+)/ #@rgx_skin=/^0~skin\s+(\S+)/ +      threads=[] +      for requested_page in @get_s +        threads << Thread.new(requested_page) do |url| +          open(url) do |f| +            raise "#{url} not found" unless f +            re_fnb=/((?:https?|file):\/\/[^\/ ]+?\/[^\/ ]+?)\/\S+?\/([^\/]+?)\.ss(t)/ #revisit and remove DO +            base_uri,fnb,instr=re_fnb.match(url)[1..3] if re_fnb +            imagedir= base_uri + '/_sisu/image_local' #check on +            doc_skin_dir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.sst$/.match(url).captures.join + '/_sisu/skin/doc' +            #"Got file, and ready to process: #{fnb}.t#{instr}" +            downloaded_file=File.new("#{fnb}.-sst",'w+') +            images=SiSU_Assemble::Remote_image.new.image(imagedir) +            skin=SiSU_Assemble::Remote_image.new.image(doc_skin_dir) +            f.collect.each do |r|                            # work area +              skin << r.scan(@rgx_skin).uniq if r =~@rgx_skin +              images << r.scan(@rgx_image).uniq if r =~@rgx_image +              downloaded_file << r +            end +            if skin and skin.length > 0 +              SiSU_Assemble::Remote_image.new.download_doc_skin(skin) +            end +            if images and images.length > 1 +              images.flatten!.uniq! +              @msg,@msgs='downloading images:', [ images.join(',') ] +              @tell.call.warn unless @opt.cmd =~/q/ +              SiSU_Assemble::Remote_image.new.download_images(images) +              @msg,@msgs='downloading done',nil +              @tell.call.warn unless @opt.cmd =~/q/ +            end +            downloaded_file.close +          end +        end +      end +      threads.each {|thr| thr.join} if threads #and threads.length > 0 +    end +    def sisupod +      if @get_p.length > 0                                     #% remote sisupod +         require 'net/http' +        for requested_pod in @get_p +          pod_info=Remote_download.new(requested_pod) +          @opt.fns=pod_info.pod.name +          Net::HTTP.start(pod_info.pod.site) do |http| +            resp=http.get("#{pod_info.pod.path}/#{pod_info.pod.name_source}") +            open(pod_info.pod.name,'wb') do |file| +              file.write(resp.body) +             end +          end +        end +      end +    end +  end  end  __END__ diff --git a/lib/sisu/v0/semantics.rb b/lib/sisu/v0/semantics.rb deleted file mode 100644 index 177a5d98..00000000 --- a/lib/sisu/v0/semantics.rb +++ /dev/null @@ -1,396 +0,0 @@ -=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 <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/licenses/gpl.html> -   <http://www.gnu.org/copyleft/gpl.html> -   <http://www.jus.uio.no/sisu/gpl.fsf> - - * SiSU uses: -   * Standard SiSU markup syntax, -   * Standard SiSU meta-markup syntax, and the -   * Standard SiSU object citation numbering and system - - * Hompages: -   <http://www.jus.uio.no/sisu> -   <http://www.sisudoc.org> - - * Download: -   <http://www.jus.uio.no/sisu/SiSU/download.html> - - * Ralph Amissah -   <ralph@amissah.com> -   <ralph.amissah@gmail.com> - - ** Description: semantics - -=end -module Semantic -  require "#{SiSU_lib}/param" -  class YamlInfoCreate -    def initialize(file='') -      @file=file -      @sisu=[] -      @@doc[:title],@@doc[:subtitle],@@doc[:creator],@@doc[:subject],@@doc[:keywords],@@doc[:description],@@doc[:publisher],@@doc[:contributor],@@doc[:date],@@doc[:date_created],@@doc[:date_issued],@@doc[:date_available],@@doc[:date_valid],@@doc[:date_modified],@@doc[:type],@@doc[:format],@@doc[:identifier],@@doc[:source],@@doc[:language],@@doc[:coverage],@@doc[:relation],@@doc[:rights]=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil -    end -    def songsheet -      param -      yamlinfo -    end -    def param -      file_array=IO.readlines(@file,'') -      SiSU_Param(file_array,@file,'a') #problem not updated watch -    end -    def printscreen -      puts "#{@@cX.fuschia}filename:#{@@cX.off}       " + @file -      puts "#{@@cX.fuschia}title:#{@@cX.off}          " + @@doc[:title] -      puts "#{@@cX.fuschia}subtitle:#{@@cX.off}       " + @@doc[:subtitle] if @@doc[:subtitle] -      puts "#{@@cX.fuschia}creator:#{@@cX.off}        " + @@doc[:creator] if @@doc[:creator] -      puts "#{@@cX.fuschia}subject:#{@@cX.off}        " + @@doc[:subject] if @@doc[:subject] -      puts "#{@@cX.fuschia}description:#{@@cX.off}    " + @@doc[:description] if @@doc[:description] -      puts "#{@@cX.fuschia}publisher:#{@@cX.off}      " + @@doc[:publisher] if @@doc[:publisher] -      puts "#{@@cX.fuschia}contributor:#{@@cX.off}    " + @@doc[:contributor] if @@doc[:contributor] -      puts "#{@@cX.fuschia}date:#{@@cX.off}           " + @@doc[:date] if @@doc[:date] -      puts "#{@@cX.fuschia}date created:#{@@cX.off}   " + @@doc[:date_created] if @@doc[:date_created] -      puts "#{@@cX.fuschia}date issued:#{@@cX.off}    " + @@doc[:date_issued] if @@doc[:date_issued] -      puts "#{@@cX.fuschia}date available:#{@@cX.off} " + @@doc[:date_available] if @@doc[:date_available] -      puts "#{@@cX.fuschia}date valid:#{@@cX.off}     " + @@doc[:date_valid] if @@doc[:date_valid] -      puts "#{@@cX.fuschia}date modified:#{@@cX.off}  " + @@doc[:date_modified] if @@doc[:date_modified] -      puts "#{@@cX.fuschia}type:#{@@cX.off}           " + @@doc[:type] if @@doc[:type] -      puts "#{@@cX.fuschia}format:#{@@cX.off}         " + @@doc[:format] if @@doc[:format] -      puts "#{@@cX.fuschia}identifier:#{@@cX.off}     " + @@doc[:identifier] if @@doc[:identifier] -      puts "#{@@cX.fuschia}source:#{@@cX.off}         " + @@doc[:source] if @@doc[:source] -      puts "#{@@cX.fuschia}language:#{@@cX.off}       " + @@doc[:language] if @@doc[:language] -      puts "#{@@cX.fuschia}coverage:#{@@cX.off}       " + @@doc[:coverage] if @@doc[:coverage] -      puts "#{@@cX.fuschia}relation:#{@@cX.off}       " + @@doc[:relation] if @@doc[:relation] -      puts "#{@@cX.fuschia}rights:#{@@cX.off}         " + @@doc[:rights] if @@doc[:rights] -      puts "#{@@cX.fuschia}keywords:#{@@cX.off}       " + @@doc[:keywords] if @@doc[:keywords] -      puts '-----------------------' -    end -    def yamlinfo -      uri=case @file -      when /.+?\.[_-]?sst$/; @file.gsub(/(.+?)\.[_-]?sst$/,'http://localhost/reserved/\1/') -      end -      puts uri -      @sisu << '-' -      @sisu << '  filename:       ' + uri -      @sisu << '  title:          ' + @@doc[:title].gsub(/:/, ' - ') if @@doc[:title] -      @sisu << '  subtitle:       ' + @@doc[:subtitle] if @@doc[:subtitle] -      @sisu << '  creator:        ' + @@doc[:creator] if @@doc[:creator] -      @sisu << '  subject:        ' + @@doc[:subject] if @@doc[:subject] -      @sisu << '  keywords:       ' + @@doc[:keywords] if @@doc[:keywords] -      @sisu << '  description:    ' + @@doc[:description] if @@doc[:description] -      @sisu << '  publisher:      ' + @@doc[:publisher] if @@doc[:publisher] -      @sisu << '  contributor:    ' + @@doc[:contributor] if @@doc[:contributor] -      @sisu << '  date:           ' + @@doc[:date] if @@doc[:date] -      @sisu << '  date_created:   ' + @@doc[:date_created] if @@doc[:date_created] -      @sisu << '  date_issued:    ' + @@doc[:date_issued] if @@doc[:date_issued] -      @sisu << '  date_available: ' + @@doc[:dateavailable] if @@doc[:date_available] -      @sisu << '  date_valid:     ' + @@doc[:date_valid] if @@doc[:date_valid] -      @sisu << '  date_modified:  ' + @@doc[:date_modified] if @@doc[:date_modified] -      @sisu << '  type:           ' + @@doc[:type] if @@doc[:type] -      @sisu << '  format:         ' + @@doc[:format] if @@doc[:format] -      @sisu << '  identifier:     ' + @@doc[:identifier] if @@doc[:identifier] -      @sisu << '  source:         ' + @@doc[:source] if @@doc[:source] -      @sisu << '  language:       ' + @@doc[:language] if @@doc[:language] -      @sisu << '  coverage:       ' + @@doc[:coverage] if @@doc[:coverage] -      @sisu << '  relation:       ' + @@doc[:relation] if @@doc[:relation] -      @sisu << '  rights:         ' + @@doc[:rights] if @@doc[:rights] -      #@sisu << '  copyright:      ' + @@doc[:copyright] if @@doc[:copyright] -      @sisu.each {|para| @@filename_semantic.puts para} -    end -  end -  class Yaml_info_read -    def initialize #(file='') -      @pwd=Dir.pwd -      @sisu=[] -    end -    def loadfile -      if FileTest.file?("#@pwd/semantic.yml") -        @yaml||=YAML::load(File::open("#@pwd/semantic.yml")) -      end -    end -    def printscreen -      @yaml.each do |y| -        puts y['title'] if y['title'] -        puts y['subtitle'] if y['subtitle'] -        puts y['creator'] if y['creator'] -        puts y['subject'] if y['subject'] -        puts y['description'] if y['description'] -        puts y['publisher'] if y['publisher'] -        puts y['contributor'] if y['contributor'] -        puts y['date'] if y['date'] -        puts y['date_created'] if y['date_created'] -        puts y['date_issued'] if y['date_issued'] -        puts y['date_available'] if y['date_available'] -        puts y['date_valid'] if y['date_valid'] -        puts y['date_modified'] if y['date_modified'] -        puts y['type'] if y['type'] -        puts y['format'] if y['format'] -        puts y['identifier'] if y['identifier'] -        puts y['source'] if y['source'] -        puts y['language'] if y['language'] -        puts y['coverage'] if y['coverage'] -        puts y['relation'] if y['relation'] -        puts y['rights'] if y['rights'] -        puts y['copyright'] if y['copyright'] -        puts y['keywords'] if y['keywords'] -        puts '-----' -      end -    end -  end -  class RSS < Yaml_info_read -    def songsheet -      loadfile -      rss_nav -      debris -    end -    def rss(match=//,feedtitle='') -      @sisu=[] -      @sisu <<  %{<rss version="2.0">\n-\n  <channel><title>#{feedtitle}</title> -<link>http://www.jus.uio.no/lm/</link> -<description>Semantic Information Structuring Unit</description> -<language>en-us</language> -- -} -      @yaml.each do |y| -        if y['title'] and ((y['subject'] and "#{y['subject']}"[match]) or (y['keywords'] and "#{y['keywords']}"[match])) -          puts y['subject'] -          @sisu <<  %{- -  <item> -  <title>#{y['title']}</title> -  - -    <guid> -  #{y['filename']} -  </guid> -  - -  } -          @sisu << %{<description>} -          @sisu << %{<h1 id="#{y['title'].gsub(/\s+/, '-')}">#{y['title']}</h1>} -          @sisu << %{#{y['title']} } if y['title'] -          @sisu << %{#{y['subtitle']} } if y['subtitle'] -          @sisu << %{#{y['creator'] }} if y['creator'] -          #@sisu << %{#{y['subject']}} if y['subject'] -          @sisu << %{#{y['description'] }} if y['description'] -          #@sisu << %{#{y['publisher']}} if y['publisher'] -          #@sisu << %{#{y['contributor']}} if y['contributor'] -          @sisu << %{#{y['date']} } if y['date'] -          #@sisu << %{#{y['date_created']}} if y['date_created'] -          #@sisu << %{#{y['date_issued']}} if y['date_issued'] -          #@sisu << %{#{y['date_available']}} if y['date_available'] -          #@sisu << %{#{y['date_valid']}} if y['date_valid'] -          #@sisu << %{#{y['date_modified']}} if y['date_modified'] -          #@sisu << %{#{y['type']}} if y['type'] -          #@sisu << %{#{y['format']}} if y['format'] -          #@sisu << %{#{y['identifier']}} if y['identifier'] -          #@sisu << %{#{y['source']}} if y['source'] -          #@sisu << %{#{y['language']}} if y['language'] -          #@sisu << %{#{y['coverage']}} if y['coverage'] -          #@sisu << %{#{y['relation']}} if y['relation'] -          #@sisu << %{#{y['rights']}} if y['rights'] -          #@sisu << %{#{y['copyright']}} if y['copyright'] -          #@sisu << %{#{y['keyword']}} if y['keyword'] -          @sisu << %{</description>} -          @sisu << %{</item>} -        end -      end -      @sisu <<  %{</channel>\n</rss>} -      #@sisu.each {|para| @@rss.puts para} #KEEP does all -      if "united nations"[match] -        @sisu.each {|para| @@rss_un.puts para} -        @sisu=[] -      end -      if "unidroit"[match] -        @sisu.each {|para| @@rss_unidroit.puts para} -        @sisu=[] -      end -      if "hcpil"[match] -        @sisu.each {|para| @@rss_hcpil.puts para} -        @sisu=[] -      end -      if "contract"[match] -        @sisu.each {|para| @@rss_contracts.puts para} -        @sisu=[] -      end -      if "navigate"[match] -        @sisu.each {|para| @@rss_nav.puts para} -        @sisu=[] -      end -    end -    def rss_un -      match=/united\s+nations|uncitral/i -      rss(match, 'Lex Mercatoria Pages on the United Nations') -    end -    def rss_unidroit -      match=/unidroit/i -      rss(match, 'Lex Mercatoria pages on UNIDROIT') -    end -    def rss_hcpil -      match=/hague\s+conference|hcpil/i -      rss(match, 'Lex Mercatoria pages on the Hague Conference on Private International Law') -    end -    def rss_contracts -      match=/contracts?/i -      rss(match, 'Lex Mercatoria Contract Law pages') -    end -    def rss_nav -      match=/navigate(\s|$)/i -      rss(match, 'Lex Mercatoria Navigation pages') -    end -    def dummy -      @sisu <<  %{<doc>} -      @yaml.each do |y| -        @sisu <<  %{<content>} -        @sisu <<  %{#{y['title']}} if y['title'] -        @sisu <<  %{#{y['subtitle']}} if y['subtitle'] -        @sisu <<  %{#{y['creator']}} if y['creator'] -        @sisu <<  %{#{y['subject']}} if y['subject'] -        @sisu <<  %{#{y['description']}} if y['description'] -        @sisu <<  %{#{y['publisher']}} if y['publisher'] -        @sisu <<  %{#{y['contributor']}} if y['contributor'] -        @sisu <<  %{#{y['date']}} if y['date'] -        @sisu <<  %{#{y['date_created']}} if y['date_created'] -        @sisu <<  %{#{y['date_issued']}} if y['date_issued'] -        @sisu <<  %{#{y['date_available']}} if y['date_available'] -        @sisu <<  %{#{y['date_valid']}} if y['date_valid'] -        @sisu <<  %{#{y['date_modified']}} if y['date_modified'] -        @sisu <<  %{#{y['type']}} if y['type'] -        @sisu <<  %{#{y['format']}} if y['format'] -        @sisu <<  %{#{y['identifier']}} if y['identifier'] -        @sisu <<  %{#{y['source']}} if y['source'] -        @sisu <<  %{#{y['language']}} if y['language'] -        @sisu <<  %{#{y['coverage']}} if y['coverage'] -        @sisu <<  %{#{y['relation']}} if y['relation'] -        @sisu <<  %{#{y['rights']}} if y['rights'] -        @sisu <<  %{#{y['copyright']}} if y['copyright'] -        @sisu <<  %{#{y['keyword']}} if y['keyword'] -        @sisu <<  %{</content>} -      end -      @sisu <<  %{</doc>} -      @sisu.each {|para| @@rss.puts para} -    end -    def debris -      outputdir=SiSU_Env::Info_env.new.path.feed -      x=Dir.new(outputdir).entries -      x.each do |y| -        #unless FileTest.file?("#{outputdir}/#{y}") and File.size?("#{outputdir}/#{y}") == 0 -        if File.size("#{outputdir}/#{y}") == 0 -          #File.unlink("#{outputdir}/#{y}") -          puts "#{outputdir}/#{y}" -          puts File.size("#{outputdir}/#{y}") -        end -      end -    end -  end -  class RDF < Yaml_info_read -    def songsheet -      loadfile -      rdf -      rdf_un -      rdf_unidroit -      rdf_hcpil -      rdf_contracts -      rdf_nav -      debris -    end -    def rdf -    end -    def rdf_un -    end -    def rdf_unidroit -    end -    def rdf_hcpil -    end -    def rdf_contracts -    end -    def rdf_nav -    end -    def debris -    end -  end -end -                                                                                 #% start -require "#{SiSU_lib}/param" -require "#{SiSU_lib}/defaults" -require "#{SiSU_lib}/sysenv" -include SiSU_Param -include SiSU_Env -include SiSU_Viz -outputdir=SiSU_Env::Info_env.new.path.feed -pwd=Dir.pwd -@argv=[] -argv=$* -#p argv -my_make=SiSU_Env::Create_file.new('','') -if argv.to_s =~/yaml/ -  my_make.file_semantic -  files=Dir["*.sst,*._sst,*-sst"] -  end -  files.each {|f| @argv << f[/(.+?)\.[_-]?sst$/,1] if f =~/.+?\.[_-]?sst$/} -  ######### -  files.each do |filename| -    Semantic::YamlInfoCreate.new(filename).songsheet -  end -elsif argv.to_s =~/rss/ -  #rss=%{#{outputdir}/semantic.xml} -  #@@rss=File.new(rss, "w+") -  rss_nav=%{#{outputdir}/navigate.xml} -  @@rss_nav=File.new(rss_nav, "w+") -  # -  #rss_un=%{#{outputdir}/un.xml} -  #@@rss_un=File.new(rss_un, "w+") -  #rss_unidroit=%{#{outputdir}/unidroit.xml} -  #@@rss_unidroit=File.new(rss_unidroit, "w+") -  #rss_hcpil=%{#{outputdir}/hcpil.xml} -  #@@rss_hcpil=File.new(rss_hcpil, "w+") -  #rss_contracts=%{#{outputdir}/contracts.xml} -  #@@rss_contracts=File.new(rss_contracts, "w+") -  ##my_make.file_rss -  Semantic::RSS.new.songsheet -elsif argv.to_s =~/rdf/ -  #rdf=%{#{outputdir}/semantic.rdf} -  #@@rdf=File.new(rdf, "w+") -  #rdf_un=%{#{outputdir}/un.rdf} -  #@@rdf_un=File.new(rdf_un, "w+") -  #rdf_unidroit=%{#{outputdir}/unidroit.rdf} -  #@@rdf_unidroit=File.new(rdf_unidroit, "w+") -  #rdf_hcpil=%{#{outputdir}/hcpil.rdf} -  #@@rdf_hcpil=File.new(rdf_hcpil, "w+") -  #rdf_contracts=%{#{outputdir}/contracts.rdf} -  #@@rdf_contracts=File.new(rdf_contracts, "w+") -  #rdf_nav=%{#{outputdir}/navigate.rdf} -  #@@rdf_nav=File.new(rdf_nav, "w+") -  ##my_make.file_rdf -  #Semantic::RDF.new.songsheet -end -__END__ - | 
