diff options
Diffstat (limited to 'lib/sisu/0.52/composite.rb')
-rw-r--r-- | lib/sisu/0.52/composite.rb | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/lib/sisu/0.52/composite.rb b/lib/sisu/0.52/composite.rb deleted file mode 100644 index 99069b8f..00000000 --- a/lib/sisu/0.52/composite.rb +++ /dev/null @@ -1,215 +0,0 @@ -=begin - * Name: SiSU information Structuring Universe - Structured information, Serialized Units - * Author: Ralph Amissah - * http://www.jus.uio.no/sisu - * http://www.jus.uio.no/sisu/SiSU/download.html - - * Description: composite documents, assemble/build documents from other documents or parts of marked up text - - * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Ralph Amissah - - * License: GPL 2 or later - - Summary of GPL 2 - - 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 2 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, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - - 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/gpl2.fsf - - SiSU was first released to the public on January 4th 2005 - - SiSU uses: - - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - © Ralph Amissah 1997, current 2007. - All Rights Reserved. - - * Ralph Amissah: ralph@amissah.com - ralph.amissah@gmail.com -=end -module SiSU_Assemble - require SiSU_lib + '/sysenv' - class Remote_image - def initialize - @env=SiSU_Env::Info_env.new - end - def image(dir) - images=[] - images[0]=dir - images - end - def download_images(images_array) #first element in array is source url - path="#{@env.path.processing}/external_document/image" - File.mkpath(path) unless FileTest.directory?(path) - download_from=images_array.shift - images_array.each do |i| - image="#{path}/#{i}" - #unless FileTest.exists?(image) - imagefile=File.new(image,'w+') - open("#{download_from}/#{i}") do |g| - imagefile << g.read - end - imagefile.close - #end - end - end - def download_doc_skin(doc_skin) #first element in array is source url - path="#{@env.path.processing}/external_document/skin/doc" - File.mkpath(path) unless FileTest.directory?(path) - download_from=doc_skin.shift - doc_skin.each do |i| - skin="#{path}/#{i}.rb" - unless FileTest.exists?(skin) - skinfile=File.new(skin,'w+') - open("#{download_from}/#{i}.rb") do |g| - skinfile << g.read - end - skinfile.close - end - end - end - end - class Composite - @@imager={} - def initialize(opt) - @opt=opt - @env=SiSU_Env::Info_env.new - end - def read - begin - @fns_array=IO.readlines(@opt.fns,'') - assembled=insertions? - write(assembled) - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - ensure - end - end - def write(assembled) - m=/(.+)?(\.ssm$)/m - assembled_file=File.new("#{@opt.fnb}._sst",'w+') - assembled.each{|a| assembled_file << a } - assembled_file.close - end - def download_images(download_from,images_array) - path="#{@env.path.processing}/external_document/image" - File.mkpath(path) unless FileTest.directory?(path) - images_array.each do |i| - image="#{path}/#{i}" - unless FileTest.exists?(image) - imagefile=File.new(image,'w+') - open("#{download_from}/#{i}") do |g| - imagefile << g.read - end - imagefile.close - end - end - end - def download_doc_skin(doc_skin) #first element in array is source url - path="#{@env.path.processing}/external_document/skin/doc" - File.mkpath(path) unless FileTest.directory?(path) - download_from=doc_skin.shift - doc_skin.each do |i| - skin="#{path}/#{i}.rb" - unless FileTest.exists?(skin) - skinfile=File.new(skin,'w+') - open("#{download_from}/#{i}.rb") do |g| - skinfile << g.read - end - skinfile.close - end - end - end - def insertion(fni,insert_array) - file={ :prepared=>[],:images=>[] } - rgx_image=/([a-zA-Z0-9._-]+?\.(?:png|jpg|gif))/ - #file[:prepared] << "#% Date " << "\n" - file[:prepared] << "\n% |#{fni}|@|^|>>ok\n" - insert_array.each do |i| - i.gsub!(/^([12]|:?[AB])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax) - if i =~/^0~|^@\S+?:/ - i.gsub!(/\n/m,"\n% ") - i.gsub!(/\n%\s+$/m,'') - i.gsub!(/^0~|^@\S+?:/m,"\n% [imported header:] ") #off imported headers - end - file[:prepared] << i - file[:images] << i.scan(rgx_image).uniq if i =~rgx_image #flag - end - file[:prepared] << "\n% end import" << "\n\n" - file[:images].uniq! if file[:images].length > 0 - file[:images].flatten! if file[:images].length > 0 - file - end - def insertions? - data=@fns_array - tuned_file,imagedir=[],[] - tell=SiSU_Screen::Ansi.new(@opt.cmd,'Composite Document',@opt.fns) - tell.grey_title_hi unless @opt.cmd =~/q/ - para=data.each do |para| - if para =~/^r\{(.+?)\}/ \ - or para =~/^(?:<<\s*)\{(.+?)\}(?:req(?:quire)?\b|\s*\})?/ \ - or para =~/^(?:<<\s*)\|(\S+?)\|@\|.+?\|(?:req(?:quire)?\b|\s*\})?/ \ - or para =~/^(?:<<\s*)<(?:URL|url):(\S+?)>(?:req(?:require)\b|\s*\})?/ \ - or para =~/^\{(.+?)\}(?:req(?:require)?)\b/ \ - or para =~/^\|(\S+?)\|@\|.+?\|(?:req(?:require)?)\b/ \ - or para =~/^<(?:URL|url):(\S+?)>(?:req(?:require))\b/ - loadfile=$1.strip - tell=SiSU_Screen::Ansi.new(@opt.cmd,'loading:',loadfile) - tell.txt_grey if @opt.cmd =~/[MVv]/ - tuned_file << if loadfile =~ /http:\/\/\S+?\.ss[ti]$/ # and NetTest - imagedir = /(http:\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch - require 'uri' - image_uri=URI.parse(imagedir) - require 'open-uri' - require 'pp' - insert=open(loadfile) - insert_array=insert.dup - insert.close - file=insertion(loadfile,insert_array) - @@imager[image_uri] ||=[] - @@imager[image_uri] << file[:images] - file[:prepared] - elsif loadfile =~ /\.ss[ti]$/ and FileTest.file?(loadfile) - insert_array=IO.readlines(loadfile,'') - file=insertion(loadfile,insert_array) - file[:prepared] - else - cX=SiSU_Screen::Ansi.new(@opt.cmd).cX - puts "\t #{cX.fuschia}ERROR#{cX.off} #{cX.brown}#{@opt.fns}#{cX.off} #{cX.fuschia}requires invalid or non-existent file:#{cX.off} #{cX.brown}#{loadfile}#{cX.off}" - para - end - else tuned_file << para - end - tuned_file.compact! - end - if @@imager.length >0 - @@imager.each do |d,i| - i.flatten! - i.uniq! - download_images(d,i) - end - end - tuned_file - end - end -end -__END__ - |