class SiSU_Env_Call::EnvCall

Attributes

ad[RW]
fnb[RW]
fnn[RW]
fnt[RW]
fnv[RW]
fnz[RW]
rc[RW]

Public Class Methods

new(fns='') click to toggle source
# File lib/sisu/se_envcall.rb, line 66
def initialize(fns='')
  @fns=fns
  @sys=SiSU_Info_Sys::InfoSystem.instance
  get_init=SiSU_Env::GetInit.new
  @rc=get_init.sisu_yaml.rc
  @ad=get_init.ads
  if @fns \
  and @fns != '' \
  and @fns !=@@fns
    @@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=@fns,nil,nil,nil,nil,nil
  end
  if @fns \
  and @fns != '' #watch
    m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/
    @@fnn ||=@fns[m,1]
    @@fnb ||=@fns[m,2]
    @@fnt ||=@fns[m,3]
    @@flv ||=document_language_versions_found[:f]
    unless @@fns =~/\S+?\.txz/
      @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; @@fnb + '.ssm.txz'
      elsif @@fnb; @@fnb + '.sst.txz'
      else '' # e.g. termsheet
      end
    end
  end
  @fnn,@fnb,@fnt,@flv,@fnz=@@fnn,@@fnb,@@fnt,@@flv,@@fnz
end

Public Instance Methods

by?() click to toggle source
# File lib/sisu/se_envcall.rb, line 122
def by?
  output_structure=:filename #set default output structure
  if @rc \
  && defined? @rc['output_dir_structure_by']
    output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
    or ((defined? @rc['output_structure']['dump']) \
    && @rc['output_structure']['dump'] ==true)
      :dump
    elsif (@rc['output_dir_structure_by'] =~/redirect/) \
    or ((defined? @rc['output_structure']['redirect']) \
    && @rc['output_structure']['redirect'] ==true)
      :redirect
    elsif (@rc['output_dir_structure_by'] =~/language/) \
    or ((defined? @rc['output_structure']['by_language']) \
    && @rc['output_structure']['by_language'] ==true)
      :language
    elsif (@rc['output_dir_structure_by'] =~/filetype/) \
    or ((defined? @rc['output_structure']['by_filetype']) \
    && @rc['output_structure']['by_filetype'] ==true)
      :filetype
    elsif (@rc['output_dir_structure_by'] =~/filename/) \
    or ((defined? @rc['output_structure']['by_filename']) \
    && @rc['output_structure']['by_filename'] ==true)
      :filename
    else #set default
      :language
    end
  else #set default
    :language
  end
end
by_filename?() click to toggle source
# File lib/sisu/se_envcall.rb, line 173
def by_filename?
  ((by?) ==:filename) \
  ? true
  : false
end
by_filetype?() click to toggle source
# File lib/sisu/se_envcall.rb, line 168
def by_filetype?
  ((by?) ==:filetype) \
  ? true
  : false
end
by_language_code?() click to toggle source
# File lib/sisu/se_envcall.rb, line 163
def by_language_code?
  ((by?) ==:language) \
  ? true
  : false
end
default_language?() click to toggle source
# File lib/sisu/se_envcall.rb, line 93
def default_language?
  if @rc \
  && defined? @rc['language_default']
    if (@rc['language_default'].is_a?(String)) \
    && (@rc['language_default'] =~/#{Px[:lng_lst_rgx]}/)
      @rc['language_default']
    else 'en'
    end
  else 'en'
  end
end
document_language_versions_found() click to toggle source
# File lib/sisu/se_envcall.rb, line 183
def document_language_versions_found #REVISIT
  @fn={}
  filename=(@fns =~/\.ssm\.sst$/) \
  ? @fns.gsub(/\.ssm\.sst$/,'.ssm')
  : @fns
  if filename.is_a?(String) \
  and not filename.empty?
    if output_dir_structure.by_language_code?
      m=/((.+?)(?:\~\w{2,3})?)\.(sst|ssm)$/
      @fn[:b],@fn[:m],@fn[:t]=filename[m,1],filename[m,2],filename[m,3]
    else m=/(.+?)\.(sst|ssm)$/
      @fn[:b]=@fn[:m]=filename[m,1]
      @fn[:t]=filename[m,2]
    end
  end
  lng_base=SiSU_Env::InfoEnv.new.language_default_set
  lang=SiSU_Env::StandardiseLanguage.new
  langs=lang.codes
  x=[]
  if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}")
    n=@fn[:m].gsub(/^.+?\//,'')
    n =n + '.' + @fn[:t]
    x << { f: "#{@fn[:m]}.#{@fn[:t]}", l: lng_base, n: n }
  end
  langs.each do |l|
    lng=SiSU_Env::StandardiseLanguage.new(l)
    if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
      x << { f: "#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
    elsif FileTest.file?("#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
      x << { f: "#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
    end
    if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
      if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
        x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
      elsif FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
        x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
      end
    end
    if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
      if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
        x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
      elsif FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
        x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
      end
    end
  end
  @fn[:f]=x
  @fn
end
dump?() click to toggle source
# File lib/sisu/se_envcall.rb, line 153
def dump?
  ((by?) ==:dump) \
  ? true
  : false
end
filename(code,name,suffix) click to toggle source
# File lib/sisu/se_envcall.rb, line 272
def filename(code,name,suffix)
  "#{name}#{suffix}"
end
lang(code) click to toggle source
# File lib/sisu/se_envcall.rb, line 275
def lang(code)
  {
    html:            filename(code,'','.html'),
    book_index:      filename(code,'book_index','.html'),
    concordance:     filename(code,'concordance','.html'),
    sax:             filename(code,'sax','.xml'),
    dom:             filename(code,'dom','.xml'),
    docbook:         filename(code,'docbook','.xml'),
    xhtml:           filename(code,'scroll','.xhtml'),
    pdf_l:           filename(code,'','.pdf'),
    pdf_p:           filename(code,'','.pdf'),
    pdf_l_a4:        filename(code,"a4",'.pdf'),
    pdf_p_a4:        filename(code,"a4",'.pdf'),
    pdf_l_a5:        filename(code,"a5",'.pdf'),
    pdf_p_a5:        filename(code,"a5",'.pdf'),
    pdf_l_b5:        filename(code,"b5",'.pdf'),
    pdf_p_b5:        filename(code,"b5",'.pdf'),
    pdf_l_letter:    filename(code,"letter",'.pdf'),
    pdf_p_letter:    filename(code,"letter",'.pdf'),
    pdf_l_legal:     filename(code,"legal",'.pdf'),
    pdf_p_legal:     filename(code,"legal",'.pdf'),
    toc:             filename(code,'toc','.html'),
    doc:             filename(code,fnb,'.html'),
    index:           filename(code,'index','.html'),
    po:              filename(code,@fns,'.po'),
    pot:             filename(code,@fns,'.pot'),
    odf:             filename(code,'','.odt'),
    epub:            filename(code,'','.epub'),
    plain:           filename(code,'','.txt'),
    qrcode:          filename(code,'','.jpg'),
    manpage:         filename(code,'','.1'),          #fix, section number
    wiki:            filename(code,'wiki','.txt'),
    digest:          filename(code,'digest','.txt'),
    metadata:        filename(code,'metadata','.html'), #chk
    manifest:        filename(code,'manifest','.html'),
    oai_pmh:         filename(code,'oai_pmh','.xml'),
    sitemap:         filename(code,'sitemap','.xml'),
    sitemap_touch:   filename(code,"sitemap_#{fnb}",'.xml'),
    sxs:             filename(code,fnb,'.sxs.xml'),
    sxd:             filename(code,fnb,'.sxd.xml'),
    sxn:             filename(code,fnb,'.sxn.xml'),
    sisupod:         filename(nil,@fnz,''),
    book_idx_html:   filename(code,'book_index','.html'),
    book_idx_epub:   filename(code,'book_index','.xhtml'),
    epub_concord:    filename(code,'concordance','.xhtml'),
  }
end
mono_multi_lingual?() click to toggle source
# File lib/sisu/se_envcall.rb, line 104
def mono_multi_lingual?
  if @rc \
  && defined? @rc['output_dir_structure_by']
    if @rc['output_dir_structure_by'] \
    =~/dump/
      :mono
    elsif @rc['output_dir_structure_by'] \
    =~/language|redirect/
      :multi
    elsif @rc['output_dir_structure_by'] \
    =~/monolingual|filetype_mono|filenaneme_mono/
      :mono
    else :multi
    end
  else :multi
  end
end
multilingual?() click to toggle source
# File lib/sisu/se_envcall.rb, line 178
def multilingual?
  by_language_code?
end
output_dir_structure() click to toggle source
# File lib/sisu/se_envcall.rb, line 121
def output_dir_structure
  def by?
    output_structure=:filename #set default output structure
    if @rc \
    && defined? @rc['output_dir_structure_by']
      output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
      or ((defined? @rc['output_structure']['dump']) \
      && @rc['output_structure']['dump'] ==true)
        :dump
      elsif (@rc['output_dir_structure_by'] =~/redirect/) \
      or ((defined? @rc['output_structure']['redirect']) \
      && @rc['output_structure']['redirect'] ==true)
        :redirect
      elsif (@rc['output_dir_structure_by'] =~/language/) \
      or ((defined? @rc['output_structure']['by_language']) \
      && @rc['output_structure']['by_language'] ==true)
        :language
      elsif (@rc['output_dir_structure_by'] =~/filetype/) \
      or ((defined? @rc['output_structure']['by_filetype']) \
      && @rc['output_structure']['by_filetype'] ==true)
        :filetype
      elsif (@rc['output_dir_structure_by'] =~/filename/) \
      or ((defined? @rc['output_structure']['by_filename']) \
      && @rc['output_structure']['by_filename'] ==true)
        :filename
      else #set default
        :language
      end
    else #set default
      :language
    end
  end
  def dump?
    ((by?) ==:dump) \
    ? true
    : false
  end
  def redirect?
    ((by?) ==:redirect) \
    ? true
    : false
  end
  def by_language_code?
    ((by?) ==:language) \
    ? true
    : false
  end
  def by_filetype?
    ((by?) ==:filetype) \
    ? true
    : false
  end
  def by_filename?
    ((by?) ==:filename) \
    ? true
    : false
  end
  def multilingual?
    by_language_code?
  end
  self
end
published_manifests?(output_base) click to toggle source
# File lib/sisu/se_envcall.rb, line 232
def published_manifests?(output_base)
  @fn={}
  @m=[]
  unless (@fns.nil? \
  or @fns.empty?)
    if output_dir_structure.by_language_code?
      m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst$)/
      @fn[:b],@fn[:m],@fn[:t]=@fns[m,1],@fns[m,2],@fns[m,3]
    else m=/(.+?)\.((?:-|ssm\.)?sst$)/
      @fn[:b]=@fn[:m]=@fns[m,1]
      @fn[:t]=@fns[m,2]
    end
  end
  lang=SiSU_Env::StandardiseLanguage.new
  langs=lang.codes
  x=[]
  if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}"); x << "#{@fn[:m]}.#{@fn[:t]}"
  end
  dir=SiSU_Env::InfoEnv.new(@fns)
  @m << { m: 'sisu_manifest.html', l: 'English' } #fix later, default language
  langs.each do |l|
    lng=SiSU_Env::StandardiseLanguage.new(l)
    fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"
    fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
    if FileTest.file?(fns_c)
      fn_set_lang=SiSU_Env::StandardiseLanguage.new.
        file_to_language(fns_c) #reconsider file_to_language
      lng=fn_set_lang[:n]
      fn=SiSU_Env::EnvCall.new(fns_c).lang(fn_set_lang[:c])
      @m << { m: fn[:manifest], l: lng }
    elsif FileTest.file?(fns_l)
      fn_set_lang=SiSU_Env::StandardiseLanguage.new.
        file_to_language(fns_l) #reconsider file_to_language
      @fnl=dir.i18n.lang_filename(fn_set_lang[:c])
      fn=SiSU_Env::EnvCall.new(fns_l).lang(fn_set_lang[:c])
      @m << { m: fn[:manifest], l: lng }
    end
  end
  @m=@m.uniq
end
redirect?() click to toggle source
# File lib/sisu/se_envcall.rb, line 158
def redirect?
  ((by?) ==:redirect) \
  ? true
  : false
end