class SiSU_Assemble::Composite

Public Class Methods

new(opt) click to toggle source
# File lib/sisu/ao_composite.rb, line 89
def initialize(opt)
  @opt=opt
  @env=SiSU_Env::InfoEnv.new
end

Public Instance Methods

download_images(download_from,images_array) click to toggle source
# File lib/sisu/ao_composite.rb, line 182
def download_images(download_from,images_array)
  path="#{@env.processing_path.processing}/external_document/image"
  FileUtils::mkdir_p(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
insert?(para) click to toggle source
# File lib/sisu/ao_composite.rb, line 116
def insert?(para)
  if para =~ /^<<\s+((?:https?|file):\/\/\S+?\.ss[it])$/ # and NetTest
    url($1.strip)
  elsif para =~/^<<\s+(\S+?\.ss[it])$/
    loadfilename=$1.strip
    insert_array=loadfile(loadfilename)
    file=insertion(loadfilename,insert_array)
    file[:prepared]
  else para
  end
end
insertion(fni,insert_array) click to toggle source
# File lib/sisu/ao_composite.rb, line 196
def insertion(fni,insert_array)
  file={ prepared: [], images: [] }
  rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
  file[:prepared] << "\n% |#{fni}|@|^|>>ok\n\n"
  @code_flag=false
  insert_array.each do |i|
    @code_flag=if i =~/^code\{/ then true
    elsif i =~/^\}code/         then false
    else @code_flag
    end
    if not @code_flag \
    and i !~/^%+\s/
      i=i.
        gsub(/^([123]|:?[ABCD])~\? /,
          '% [conditional heading:] \1~ ')    #off conditional heading (consider syntax)
      if i =~/^@\S+?:/
        i=i.gsub(/\n/m,"\n%  ").
          gsub(/\n%\s+$/m,'').
          gsub(/^@\S+?:/m,"\n% [imported header:] ")                       #off imported headers
      end
    end
    file[:prepared] << i
    if i !~/^%+\s/ \
    and i =~rgx_image
      file[:images] << i.scan(rgx_image).uniq
    end
  end
  file[:prepared] << "\n% end import" << "\n\n"
  if file[:images].length > 0
    file[:images]=file[:images].flatten.uniq
    file[:images].delete_if {|x| x =~/https?:\/\// }
  end
  file
end
loadfile(loadfilename) click to toggle source
# File lib/sisu/ao_composite.rb, line 127
def loadfile(loadfilename)
  begin
    if FileTest.file?(loadfilename)
      insert_array=IO.readlines(loadfilename,'')
      if loadfilename =~/\S+?\.ss[itm]$/
        if (@opt.act[:verbose][:set]==:on \
        || @opt.act[:verbose_plus][:set]==:on \
        || @opt.act[:maintenance][:set]==:on)
          SiSU_Screen::Ansi.new(
            @opt.act[:color_state][:set],
            'loading:',
            loadfilename,
          ).txt_grey
        end
        tuned_file=if loadfilename =~/\S+?\.ss[im]$/
          insert_array.each.map do |para|
            insert?(para)
          end
        elsif loadfilename =~/\S+?\.sst$/
          insert_array.each.map do |para|
            para
          end
        end.flatten.compact
      end
    end
  rescue
    SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
      __LINE__.to_s + ':' + __FILE__
    end
  ensure
  end
end
read() click to toggle source
# File lib/sisu/ao_composite.rb, line 93
def read
  begin
    pwd=Dir.pwd
    Dir.chdir(@opt.f_pth[:pth])
    if @opt.fno =~/\S+?\.ssm$/
      SiSU_Screen::Ansi.new(
        @opt.act[:color_state][:set],
        'Composite Document',
        "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}",
      ).grey_title_hi unless @opt.act[:quiet][:set]==:on
      composite_and_imported_filenames_array(@opt.fno) # composite doc, .ssm, extract all related insert files, array of filenames test
      assembled=loadfile(@opt.fno)
      write(assembled)
    end
    Dir.chdir(pwd)
  rescue
    SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).
      location do
      __LINE__.to_s + ':' + __FILE__
    end
  ensure
  end
end
url(loadfilename) click to toggle source
# File lib/sisu/ao_composite.rb, line 159
def url(loadfilename)
  if loadfilename =~ /((?:https?|file):\/\/\S+?\.ss[it])$/ # and NetTest
    loadfilename=$1
    begin
      require 'uri'
      require 'open-uri'
      require 'pp'
    rescue LoadError
      SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
        error('uri, open-uri or pp NOT FOUND (LoadError)')
    end
    insert=open(loadfilename)
    insert_array=insert.dup
    insert.close
    file=insertion(loadfilename,insert_array)
    file[:prepared]
  end
end
write(assembled) click to toggle source
# File lib/sisu/ao_composite.rb, line 177
def write(assembled)
  assembled_file=File.new("#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst",'w+')
  assembled.each {|a| assembled_file << a }
  assembled_file.close
end