class SiSU_Param_Make::MdMake

Public Class Methods

new(str,opt,env) click to toggle source
# File lib/sisu/dp_make.rb, line 58
def initialize(str,opt,env)
  @s,@opt,@env=str,opt,env
end

Public Instance Methods

ad() click to toggle source
# File lib/sisu/dp_make.rb, line 390
def ad
  @h['ad']
end
append?() click to toggle source
# File lib/sisu/dp_make.rb, line 531
def append?
  (@doc_links[0]=='+') \
    ? :yes
    : :no
end
bold() click to toggle source
# File lib/sisu/dp_make.rb, line 184
def bold
  m=@h['bold']
  i=(m=~/\/i$/)? 'i' : ''
  if m
    x=m.gsub(/^\/(.+?)\/i?/,'\1').
      gsub(/\((?:\?:)?/,'(?:')                                         # avoid need to escape use of brackets within regex provided
    rgx='\b(' + x + ')\b'
    y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
    { str: '\b(?:' + x + ')\b', regx: y, i: i }
  else nil
  end
end
breaks() click to toggle source
# File lib/sisu/dp_make.rb, line 164
def breaks
  pagebreaks=((@h['breaks'] =~/;/) \
  ? (@h['breaks'].split(/;\s*/))
  : [ @h['breaks'] ])
  page_new,page_break,page_line=nil,nil,nil
  pagebreaks.each do |x|
    page_new=x[/(:?[\dA-C],?)+/] if x=~/new|clear/
    page_break=x[/(:?[\dA-C],?)+/] if x =~/break/
    page_line=x[/(:?[\dA-C],?)+/] if x =~/line/
  end
  { page_new: page_new, page_break: page_break, page_line: page_line }
end
build_hash(arr) click to toggle source
# File lib/sisu/dp_make.rb, line 122
def build_hash(arr)
  @h={}
  arr.each_with_index do |x,i|
    a,b=nil,nil
    if x =~/^%[:\s]/ #ignore comment
    elsif x =~/:(\S+?):\s+(.+)/
      a,b=/:(\S+?):\s+(.+)\Z/m.match(x)[1,2]
    elsif i == 0
      a='main'
      b=x
    else
    end
    @h[a]=b
  end
  @h
end
cjk() click to toggle source
# File lib/sisu/dp_make.rb, line 361
def cjk
  @h['texpdf_font_cjk'] \
  && (@h['texpdf_font_cjk']=~/\S{3,}/) \
  ? @h['texpdf_font_cjk']
  : @env.font.texpdf.cjk
end
cjk_ja() click to toggle source
# File lib/sisu/dp_make.rb, line 373
def cjk_ja
  @h['texpdf_font_cjk_ja'] \
  && (@h['texpdf_font_cjk_ja']=~/\S{3,}/) \
  ? @h['texpdf_font_cjk_ja']
  : @env.font.texpdf.cjk_ja
end
cjk_ko() click to toggle source
# File lib/sisu/dp_make.rb, line 379
def cjk_ko
  @h['texpdf_font_cjk_ko'] \
  && (@h['texpdf_font_cjk_ko']=~/\S{3,}/) \
  ? @h['texpdf_font_cjk_ko']
  : @env.font.texpdf.cjk_ko
end
cjk_zh() click to toggle source
# File lib/sisu/dp_make.rb, line 367
def cjk_zh
  @h['texpdf_font_cjk_zh'] \
  && (@h['texpdf_font_cjk_zh']=~/\S{3,}/) \
  ? @h['texpdf_font_cjk_zh']
  : @env.font.texpdf.cjk_zh
end
cover_image() click to toggle source
# File lib/sisu/dp_make.rb, line 482
def cover_image
  s=nil
  if @h['cover_image']
    s=@h['cover_image'].split(/\s*;\s*/)
    s=s[0] #if
    image={}
    if s =~/{\s*(\S+\.(?:jpg|png|gif))(?:\s+(\d+x\d+))?(?:\s+"(.+?)")?\s*}image/
      image[:cover]=$1
      if $2
        image[:dimensions]=$2
        image[:w],image[:h]=/(\d+)x(\d+)/m.match(image[:dimensions])[1,2]
      else
        d=get_image_dimensions(image[:cover])
        image[:w],image[:h]=d[:w],d[:h]
        image[:dimensions]="#{d[:w]}x#{d[:h]}"
      end
      image[:note]=$3
    elsif s =~/(\S+\.(?:jpg|png|gif))/
      image[:cover]=$1
      d=get_image_dimensions(image[:cover])
      image[:w],image[:h]=d[:w],d[:h]
      image[:dimensions]="#{d[:w]}x#{d[:h]}"
      image[:note]=nil
    end
    image
  else nil
  end
end
cover_image?() click to toggle source
# File lib/sisu/dp_make.rb, line 326
def cover_image?
  (omit.list.inspect =~/"cover_image"/) \
  ? :off
  : :na
end
emphasis() click to toggle source
# File lib/sisu/dp_make.rb, line 208
def emphasis
  if @h['emphasis'] =~/bold/                   then 'bold'
  elsif @h['emphasis'] =~/italics?/            then 'italics'
  elsif @h['emphasis'] =~/under(?:line|score)/ then 'underscore'
  else nil
  end
end
get_image_dimensions(img) click to toggle source
# File lib/sisu/dp_make.rb, line 425
def get_image_dimensions(img)
  imgk=SiSU_Env::SystemCall.new.imagemagick
  gmgk=SiSU_Env::SystemCall.new.graphicsmagick
  img_pth={
    sst: @env.path.image_source_include,
    pod: File.expand_path("../../../sisupod/image" )
  }
  path_img=if FileTest.file?("#{img_pth[:pod]}/#{img}")
    "#{img_pth[:pod]}/#{img}"
  elsif FileTest.file?("#{img_pth[:sst]}/#{img}")
    "#{img_pth[:sst]}/#{img}"
  else nil
  end
  if path_img
    if imgk or gmgk
      if imgk
        imgsys=`identify #{path_img}`.strip                           #system call
      elsif gmgk
        imgsys=`gm identify #{path_img}`.strip                        #system call
      end
      w,h=/(\d+)x(\d+)/m.match(imgsys)[1,2]
    else
      w,h='600','800'
    end
  else
    w,h=nil,nil
  end
  {w: w, h: h}
end
headings() click to toggle source
# File lib/sisu/dp_make.rb, line 141
def headings
  lv=[]
  x=@h['headings']
  x=((x =~/;/) ? (x.split(/;\s*/)) : [ x ])
  lv[0]=x
  lv0 ||='A~ '             #root level, single document apex, document title
  lv1=x[0] ||='B~ '
  lv[1]=/^#{lv1}/
  lv2=x[1] ||='C~ '
  lv[2]=/^#{lv2}/
  lv3=x[2] ||='D~ '
  lv[3]=/^#{lv3}/
  lv4=x[3] ||='1~ '
  lv[4]=/^#{lv4}/
  lv5=x[4] ||='2~ '
  lv[5]=/^#{lv5}/
  lv6=x[5] ||='3~ '
  lv[6]=/^#{lv6}/
  lv
end
home_button_image() click to toggle source
# File lib/sisu/dp_make.rb, line 460
def home_button_image
  s=nil
  s=if @h['home_button_image']
    s=@h['home_button_image'].split(/\s*;\s*/)
    s0=s[0] #if
    image={}
    s=if s0 =~/{(\S+\.(?:jpg|png|gif))(?:\s+(\d+x\d+))?\s*}(?:(http:\/\/\S+)|image)/
      image[:home_button]=$1
      if $2
        image[:dimensions]=$2
        image[:w],image[:h]=/(\d+)x(\d+)/m.match(image[:dimensions])[1,2]
      else
        d=get_image_dimensions(image[:home_button])
        image[:w],image[:h]=d[:w],d[:h]
        image[:dimensions]="#{d[:w]}x#{d[:h]}"
      end
      image[:link]=$3
      image
    end
  else nil
  end
end
home_button_image?() click to toggle source
# File lib/sisu/dp_make.rb, line 331
def home_button_image?
  (omit.list.inspect =~/"home_button_image"/) \
  ? :off
  : :na
end
home_button_text() click to toggle source
# File lib/sisu/dp_make.rb, line 454
def home_button_text
  if @h['home_button_text']
    @h['home_button_text'].split(/\s*;\s*/)
  else nil
  end
end
html_minitoc?() click to toggle source
# File lib/sisu/dp_make.rb, line 281
def html_minitoc?
  (omit.list.inspect =~/"html_minitoc"/) \
  ? :off
  : :na
end
html_navigation?() click to toggle source
# File lib/sisu/dp_make.rb, line 291
def html_navigation?
  (omit.list.inspect =~/"html_navigation"/) \
  ? :off
  : :na
end
html_navigation_bar?() click to toggle source
# File lib/sisu/dp_make.rb, line 296
def html_navigation_bar?
  (omit.list.inspect =~/"html_navigation_bar"/) \
  ? :off
  : :na
end
html_right_pane?() click to toggle source
# File lib/sisu/dp_make.rb, line 316
def html_right_pane?
  (omit.list.inspect =~/"html_right_column"|"html_right_pane"/) \
  ? :off
  : :na
end
html_search_form?() click to toggle source
# File lib/sisu/dp_make.rb, line 311
def html_search_form?
  (omit.list.inspect =~/"html_search_form"/) \
  ? :off
  : :na
end
html_top_band?() click to toggle source
# File lib/sisu/dp_make.rb, line 286
def html_top_band?
  (omit.list.inspect =~/"html_top_band"/) \
  ? :off
  : :na
end
italics() click to toggle source
# File lib/sisu/dp_make.rb, line 196
def italics
  m=@h['italics']
  i=((m=~/\/i$/) ? 'i' : '')
  if m
    x=m.gsub(/^\/(.+?)\/i?/,'\1').
      gsub(/\((?:\?:)?/,'(?:')                                         # avoid need to escape use of brackets within regex provided
    rgx='\b(' + x + ')\b'
    y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
    { str: '\b(?:' + x + ')\b', regx: y, i: i }
  else nil
  end
end
language() click to toggle source
# File lib/sisu/dp_make.rb, line 176
def language
  if @h['language'] && (@h['language']=~/\S{2,}/)
    ((@h['language'] =~/,/) \
    ? (@h['language'].split(/,\s*/))
    : [ @h['language'] ])
  else [ 'en' ]
  end
end
list() click to toggle source
# File lib/sisu/dp_make.rb, line 246
def list
  @m
end
main() click to toggle source
# File lib/sisu/dp_make.rb, line 337
def main
  @h['texpdf_font'] \
  && (@h['texpdf_font']=~/\S{3,}/) \
  ? @h['texpdf_font']
  : @env.font.texpdf.main
end
make() click to toggle source
# File lib/sisu/dp_make.rb, line 138
def make
  a=@s.split(/\n%\s.+?$|[ ]*\n[ ]*/m)
  @h=build_hash(a)
  def headings
    lv=[]
    x=@h['headings']
    x=((x =~/;/) ? (x.split(/;\s*/)) : [ x ])
    lv[0]=x
    lv0 ||='A~ '             #root level, single document apex, document title
    lv1=x[0] ||='B~ '
    lv[1]=/^#{lv1}/
    lv2=x[1] ||='C~ '
    lv[2]=/^#{lv2}/
    lv3=x[2] ||='D~ '
    lv[3]=/^#{lv3}/
    lv4=x[3] ||='1~ '
    lv[4]=/^#{lv4}/
    lv5=x[4] ||='2~ '
    lv[5]=/^#{lv5}/
    lv6=x[5] ||='3~ '
    lv[6]=/^#{lv6}/
    lv
  end
  def num_top
    @h['num_top']
  end
  def breaks
    pagebreaks=((@h['breaks'] =~/;/) \
    ? (@h['breaks'].split(/;\s*/))
    : [ @h['breaks'] ])
    page_new,page_break,page_line=nil,nil,nil
    pagebreaks.each do |x|
      page_new=x[/(:?[\dA-C],?)+/] if x=~/new|clear/
      page_break=x[/(:?[\dA-C],?)+/] if x =~/break/
      page_line=x[/(:?[\dA-C],?)+/] if x =~/line/
    end
    { page_new: page_new, page_break: page_break, page_line: page_line }
  end
  def language
    if @h['language'] && (@h['language']=~/\S{2,}/)
      ((@h['language'] =~/,/) \
      ? (@h['language'].split(/,\s*/))
      : [ @h['language'] ])
    else [ 'en' ]
    end
  end
  def bold
    m=@h['bold']
    i=(m=~/\/i$/)? 'i' : ''
    if m
      x=m.gsub(/^\/(.+?)\/i?/,'\1').
        gsub(/\((?:\?:)?/,'(?:')                                         # avoid need to escape use of brackets within regex provided
      rgx='\b(' + x + ')\b'
      y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
      { str: '\b(?:' + x + ')\b', regx: y, i: i }
    else nil
    end
  end
  def italics
    m=@h['italics']
    i=((m=~/\/i$/) ? 'i' : '')
    if m
      x=m.gsub(/^\/(.+?)\/i?/,'\1').
        gsub(/\((?:\?:)?/,'(?:')                                         # avoid need to escape use of brackets within regex provided
      rgx='\b(' + x + ')\b'
      y=((i =~/i/) ? (/#{rgx}/i) : (/#{rgx}/))
      { str: '\b(?:' + x + ')\b', regx: y, i: i }
    else nil
    end
  end
  def emphasis
    if @h['emphasis'] =~/bold/                   then 'bold'
    elsif @h['emphasis'] =~/italics?/            then 'italics'
    elsif @h['emphasis'] =~/under(?:line|score)/ then 'underscore'
    else nil
    end
  end
  def substitute
    m=@h['substitute']
    if m
      w=m.scan(/\/(.+?)\/(i?,)\s*'(.+?)'(?:\s+|\s*;\s*|$)/)
      arr_hash=[]
      matches=''
      w.each do |x|
        c=(x[1] =~/[i],/) ? :i : :s
        matches=matches + x[0].gsub(/([${}])/,'\\\\\1') + '|'
        arr_hash << {
          match: x[0].gsub(/([${}])/,'\\\\\1'),
          replace: x[2],
          case_s: c
        }
      end
      matches.chop!
      { match_and_replace: arr_hash, matches: matches }
    else nil
    end
  end
  def plaintext_wrap
    if @h['plaintext_wrap'].to_s =~/\d\d+/ \
    and @h['plaintext_wrap'].to_i > 19 \
    and @h['plaintext_wrap'].to_i < 201
      @h['plaintext_wrap'].to_i
    else nil
    end
  end
  def omit
    m=@h['omit']
    @m=m ? (m.split(/,\s+/)) : nil
    def list
      @m
    end
    self
  end
  def ocn?
    (omit.list.inspect =~/"ocn"/) \
    ? :off
    : :na
  end
  def toc?
    (omit.list.inspect =~/"toc"/) \
    ? :off
    : :na
  end
  def manifest?
    (omit.list.inspect =~/"manifest"/) \
    ? :off
    : :na
  end
  def links_to_manifest?
    (omit.list.inspect =~/"manifest_links"|"links_to_manifest"/) \
    ? :off
    : :na
  end
  def metadata?
    (omit.list.inspect =~/"metadata"/) \
    ? :off
    : :na
  end
  def minitoc?
    (omit.list.inspect =~/"minitoc"/) \
    ? :off
    : :na
  end
  def html_minitoc?
    (omit.list.inspect =~/"html_minitoc"/) \
    ? :off
    : :na
  end
  def html_top_band?
    (omit.list.inspect =~/"html_top_band"/) \
    ? :off
    : :na
  end
  def html_navigation?
    (omit.list.inspect =~/"html_navigation"/) \
    ? :off
    : :na
  end
  def html_navigation_bar?
    (omit.list.inspect =~/"html_navigation_bar"/) \
    ? :off
    : :na
  end
  def segsubtoc?
    (omit.list.inspect =~/"segsubtoc"/) \
    ? :off
    : :na
  end
  def search_form?
    (omit.list.inspect =~/"search_form"/) \
    ? :off
    : :na
  end
  def html_search_form?
    (omit.list.inspect =~/"html_search_form"/) \
    ? :off
    : :na
  end
  def html_right_pane?
    (omit.list.inspect =~/"html_right_column"|"html_right_pane"/) \
    ? :off
    : :na
  end
  def manifest_minitoc?
    (omit.list.inspect =~/"manifest_minitoc"/) \
    ? :off
    : :na
  end
  def cover_image?
    (omit.list.inspect =~/"cover_image"/) \
    ? :off
    : :na
  end
  def home_button_image?
    (omit.list.inspect =~/"home_button_image"/) \
    ? :off
    : :na
  end
  def texpdf_font
    def main
      @h['texpdf_font'] \
      && (@h['texpdf_font']=~/\S{3,}/) \
      ? @h['texpdf_font']
      : @env.font.texpdf.main
    end
    def sans                                                             # not used
      @h['texpdf_font_sans'] \
      && (@h['texpdf_font_sans']=~/\S{3,}/) \
      ? @h['texpdf_font_sans']
      : @env.font.texpdf.sans
    end
    def serif                                                            # not used
      @h['texpdf_font_serif'] \
      && (@h['texpdf_font_serif']=~/\S{3,}/) \
      ? @h['texpdf_font_serif']
      : @env.font.texpdf.serif
    end
    def mono
      @h['texpdf_font_mono'] \
      && (@h['texpdf_font_mono']=~/\S{3,}/) \
      ? @h['texpdf_font_mono']
      : @env.font.texpdf.mono
    end
    def cjk
      @h['texpdf_font_cjk'] \
      && (@h['texpdf_font_cjk']=~/\S{3,}/) \
      ? @h['texpdf_font_cjk']
      : @env.font.texpdf.cjk
    end
    def cjk_zh
      @h['texpdf_font_cjk_zh'] \
      && (@h['texpdf_font_cjk_zh']=~/\S{3,}/) \
      ? @h['texpdf_font_cjk_zh']
      : @env.font.texpdf.cjk_zh
    end
    def cjk_ja
      @h['texpdf_font_cjk_ja'] \
      && (@h['texpdf_font_cjk_ja']=~/\S{3,}/) \
      ? @h['texpdf_font_cjk_ja']
      : @env.font.texpdf.cjk_ja
    end
    def cjk_ko
      @h['texpdf_font_cjk_ko'] \
      && (@h['texpdf_font_cjk_ko']=~/\S{3,}/) \
      ? @h['texpdf_font_cjk_ko']
      : @env.font.texpdf.cjk_ko
    end
    self
  end
  def promo
    @h['promo']
  end
  def ad
    @h['ad']
  end
  def manpage
    manpage={}
    if @h['manpage']
      if @h['manpage'] =~/;/m
        man=@h['manpage'].split(/;/m)
        man.each do |x|
          m=(x=~/=/m) ? x.split(/=/m) : nil
          if m
            manpage[m[0].strip] = m[1].split(/ \. /)
          end
        end
      end
    end
    if manpage['name']
      manpage['name']=manpage['name'].join("\n.br\n").
        gsub(/(-)/m,"\\\\\\1").
        gsub(/\A/,"\n.br\n.SH NAME\n.br\n")
    else
      manpage['name']='man page "name/whatis" information not provided, set in header @man: name=[whatis information]'
    end
    if manpage['synopsis']
      manpage['synopsis']=manpage['synopsis'].join("\n\n.br\n").
        gsub(/(-)/m,"\\\\\\1").
        gsub(/\A/,"\n.br\n.SH SYNOPSIS\n.br\n")
    else
      manpage['synopsis']=''
    end
    unless manpage['section']
      manpage['section']=1
    end
    manpage
  end
  def get_image_dimensions(img)
    imgk=SiSU_Env::SystemCall.new.imagemagick
    gmgk=SiSU_Env::SystemCall.new.graphicsmagick
    img_pth={
      sst: @env.path.image_source_include,
      pod: File.expand_path("../../../sisupod/image" )
    }
    path_img=if FileTest.file?("#{img_pth[:pod]}/#{img}")
      "#{img_pth[:pod]}/#{img}"
    elsif FileTest.file?("#{img_pth[:sst]}/#{img}")
      "#{img_pth[:sst]}/#{img}"
    else nil
    end
    if path_img
      if imgk or gmgk
        if imgk
          imgsys=`identify #{path_img}`.strip                           #system call
        elsif gmgk
          imgsys=`gm identify #{path_img}`.strip                        #system call
        end
        w,h=/(\d+)x(\d+)/m.match(imgsys)[1,2]
      else
        w,h='600','800'
      end
    else
      w,h=nil,nil
    end
    {w: w, h: h}
  end
  def home_button_text
    if @h['home_button_text']
      @h['home_button_text'].split(/\s*;\s*/)
    else nil
    end
  end
  def home_button_image
    s=nil
    s=if @h['home_button_image']
      s=@h['home_button_image'].split(/\s*;\s*/)
      s0=s[0] #if
      image={}
      s=if s0 =~/{(\S+\.(?:jpg|png|gif))(?:\s+(\d+x\d+))?\s*}(?:(http:\/\/\S+)|image)/
        image[:home_button]=$1
        if $2
          image[:dimensions]=$2
          image[:w],image[:h]=/(\d+)x(\d+)/m.match(image[:dimensions])[1,2]
        else
          d=get_image_dimensions(image[:home_button])
          image[:w],image[:h]=d[:w],d[:h]
          image[:dimensions]="#{d[:w]}x#{d[:h]}"
        end
        image[:link]=$3
        image
      end
    else nil
    end
  end
  def cover_image
    s=nil
    if @h['cover_image']
      s=@h['cover_image'].split(/\s*;\s*/)
      s=s[0] #if
      image={}
      if s =~/{\s*(\S+\.(?:jpg|png|gif))(?:\s+(\d+x\d+))?(?:\s+"(.+?)")?\s*}image/
        image[:cover]=$1
        if $2
          image[:dimensions]=$2
          image[:w],image[:h]=/(\d+)x(\d+)/m.match(image[:dimensions])[1,2]
        else
          d=get_image_dimensions(image[:cover])
          image[:w],image[:h]=d[:w],d[:h]
          image[:dimensions]="#{d[:w]}x#{d[:h]}"
        end
        image[:note]=$3
      elsif s =~/(\S+\.(?:jpg|png|gif))/
        image[:cover]=$1
        d=get_image_dimensions(image[:cover])
        image[:w],image[:h]=d[:w],d[:h]
        image[:dimensions]="#{d[:w]}x#{d[:h]}"
        image[:note]=nil
      end
      image
    else nil
    end
  end
  def footer
    if @h['footer']
      @h['footer'].split(/\s*;\s*/)
    else nil
    end
  end
  self
end
manifest?() click to toggle source
# File lib/sisu/dp_make.rb, line 261
def manifest?
  (omit.list.inspect =~/"manifest"/) \
  ? :off
  : :na
end
manifest_minitoc?() click to toggle source
# File lib/sisu/dp_make.rb, line 321
def manifest_minitoc?
  (omit.list.inspect =~/"manifest_minitoc"/) \
  ? :off
  : :na
end
manpage() click to toggle source
# File lib/sisu/dp_make.rb, line 393
def manpage
  manpage={}
  if @h['manpage']
    if @h['manpage'] =~/;/m
      man=@h['manpage'].split(/;/m)
      man.each do |x|
        m=(x=~/=/m) ? x.split(/=/m) : nil
        if m
          manpage[m[0].strip] = m[1].split(/ \. /)
        end
      end
    end
  end
  if manpage['name']
    manpage['name']=manpage['name'].join("\n.br\n").
      gsub(/(-)/m,"\\\\\\1").
      gsub(/\A/,"\n.br\n.SH NAME\n.br\n")
  else
    manpage['name']='man page "name/whatis" information not provided, set in header @man: name=[whatis information]'
  end
  if manpage['synopsis']
    manpage['synopsis']=manpage['synopsis'].join("\n\n.br\n").
      gsub(/(-)/m,"\\\\\\1").
      gsub(/\A/,"\n.br\n.SH SYNOPSIS\n.br\n")
  else
    manpage['synopsis']=''
  end
  unless manpage['section']
    manpage['section']=1
  end
  manpage
end
metadata?() click to toggle source
# File lib/sisu/dp_make.rb, line 271
def metadata?
  (omit.list.inspect =~/"metadata"/) \
  ? :off
  : :na
end
minitoc?() click to toggle source
# File lib/sisu/dp_make.rb, line 276
def minitoc?
  (omit.list.inspect =~/"minitoc"/) \
  ? :off
  : :na
end
mono() click to toggle source
# File lib/sisu/dp_make.rb, line 355
def mono
  @h['texpdf_font_mono'] \
  && (@h['texpdf_font_mono']=~/\S{3,}/) \
  ? @h['texpdf_font_mono']
  : @env.font.texpdf.mono
end
name_format(name) click to toggle source
# File lib/sisu/dp_make.rb, line 80
def name_format(name)
  if name
    name=name.strip
    @name_a_h=[]
    authors=name.scan(/[^;]+/)
    authors.each_with_index do |a,i|
      b=((a =~/\s*\|\s*/) ? (a.split(/\|/)) : [a])
      if b[0] =~/"(.+?)"/
        @name_a_h << { the: $1 }
      else
        x=b[0].scan(/[^,]+/)
        if x.length==1
          @name_a_h << { the: x[0].strip }
        elsif x.length==2
          @name_a_h << { the: x[0].strip, others: x[1].strip }
        else #p x.length
        end
      end
      b.delete_at(0)
      b.each do |d|
        k,c=nil
        k,c=/^(\S+)\s+(.*)/.match(d)[1,2] if d
        @name_a_h[i][:hon]=c.strip if k=='hon'
        @name_a_h[i][:affiliation]=c.strip if k=='affiliation'
        @name_a_h[i][:nationality]=c.strip if k=='nationality'
      end
    end
    l=@name_a_h.length
    name_str=''
    @name_a_h.each_with_index do |a,i|
      name_str += if a[:others]
        z=(((l - i) > 1) ? ', ' : '')
        "#{a[:others].strip} #{a[:the].strip}" + z
      else
        z=(((l - i) > 2) ? ', ' : '')
        "#{a[:the].strip}" + z
      end
    end
    { name_a_h: @name_a_h, name_str: name_str }
  else nil
  end
end
num_top() click to toggle source
# File lib/sisu/dp_make.rb, line 161
def num_top
  @h['num_top']
end
ocn?() click to toggle source
# File lib/sisu/dp_make.rb, line 251
def ocn?
  (omit.list.inspect =~/"ocn"/) \
  ? :off
  : :na
end
omit() click to toggle source
# File lib/sisu/dp_make.rb, line 243
def omit
  m=@h['omit']
  @m=m ? (m.split(/,\s+/)) : nil
  def list
    @m
  end
  self
end
plaintext_wrap() click to toggle source
# File lib/sisu/dp_make.rb, line 235
def plaintext_wrap
  if @h['plaintext_wrap'].to_s =~/\d\d+/ \
  and @h['plaintext_wrap'].to_i > 19 \
  and @h['plaintext_wrap'].to_i < 201
    @h['plaintext_wrap'].to_i
  else nil
  end
end
promo() click to toggle source
# File lib/sisu/dp_make.rb, line 387
def promo
  @h['promo']
end
sans() click to toggle source
# File lib/sisu/dp_make.rb, line 343
def sans                                                             # not used
  @h['texpdf_font_sans'] \
  && (@h['texpdf_font_sans']=~/\S{3,}/) \
  ? @h['texpdf_font_sans']
  : @env.font.texpdf.sans
end
search_form?() click to toggle source
# File lib/sisu/dp_make.rb, line 306
def search_form?
  (omit.list.inspect =~/"search_form"/) \
  ? :off
  : :na
end
segsubtoc?() click to toggle source
# File lib/sisu/dp_make.rb, line 301
def segsubtoc?
  (omit.list.inspect =~/"segsubtoc"/) \
  ? :off
  : :na
end
serif() click to toggle source
# File lib/sisu/dp_make.rb, line 349
def serif                                                            # not used
  @h['texpdf_font_serif'] \
  && (@h['texpdf_font_serif']=~/\S{3,}/) \
  ? @h['texpdf_font_serif']
  : @env.font.texpdf.serif
end
substitute() click to toggle source
# File lib/sisu/dp_make.rb, line 215
def substitute
  m=@h['substitute']
  if m
    w=m.scan(/\/(.+?)\/(i?,)\s*'(.+?)'(?:\s+|\s*;\s*|$)/)
    arr_hash=[]
    matches=''
    w.each do |x|
      c=(x[1] =~/[i],/) ? :i : :s
      matches=matches + x[0].gsub(/([${}])/,'\\\\\1') + '|'
      arr_hash << {
        match: x[0].gsub(/([${}])/,'\\\\\1'),
        replace: x[2],
        case_s: c
      }
    end
    matches.chop!
    { match_and_replace: arr_hash, matches: matches }
  else nil
  end
end
texpdf_font() click to toggle source
# File lib/sisu/dp_make.rb, line 336
def texpdf_font
  def main
    @h['texpdf_font'] \
    && (@h['texpdf_font']=~/\S{3,}/) \
    ? @h['texpdf_font']
    : @env.font.texpdf.main
  end
  def sans                                                             # not used
    @h['texpdf_font_sans'] \
    && (@h['texpdf_font_sans']=~/\S{3,}/) \
    ? @h['texpdf_font_sans']
    : @env.font.texpdf.sans
  end
  def serif                                                            # not used
    @h['texpdf_font_serif'] \
    && (@h['texpdf_font_serif']=~/\S{3,}/) \
    ? @h['texpdf_font_serif']
    : @env.font.texpdf.serif
  end
  def mono
    @h['texpdf_font_mono'] \
    && (@h['texpdf_font_mono']=~/\S{3,}/) \
    ? @h['texpdf_font_mono']
    : @env.font.texpdf.mono
  end
  def cjk
    @h['texpdf_font_cjk'] \
    && (@h['texpdf_font_cjk']=~/\S{3,}/) \
    ? @h['texpdf_font_cjk']
    : @env.font.texpdf.cjk
  end
  def cjk_zh
    @h['texpdf_font_cjk_zh'] \
    && (@h['texpdf_font_cjk_zh']=~/\S{3,}/) \
    ? @h['texpdf_font_cjk_zh']
    : @env.font.texpdf.cjk_zh
  end
  def cjk_ja
    @h['texpdf_font_cjk_ja'] \
    && (@h['texpdf_font_cjk_ja']=~/\S{3,}/) \
    ? @h['texpdf_font_cjk_ja']
    : @env.font.texpdf.cjk_ja
  end
  def cjk_ko
    @h['texpdf_font_cjk_ko'] \
    && (@h['texpdf_font_cjk_ko']=~/\S{3,}/) \
    ? @h['texpdf_font_cjk_ko']
    : @env.font.texpdf.cjk_ko
  end
  self
end
toc?() click to toggle source
# File lib/sisu/dp_make.rb, line 256
def toc?
  (omit.list.inspect =~/"toc"/) \
  ? :off
  : :na
end
validate_length(s,l,n) click to toggle source
# File lib/sisu/dp_make.rb, line 61
def validate_length(s,l,n)
  #s=(s.length <= l) ? s : nil
  s=if s.is_a?(String) \
  and s.length <= l
    s
  elsif s.is_a?(NilClass)
    nil
  elsif s.class !=String
    STDERR.puts "#{n} is #{s.class}: programming error, String expected #{__FILE__}:#{__LINE__}"
    s
  else
    SiSU_Screen::Ansi.new(
      'v',
      "*WARN* #{n} length #{s.length} exceeds set db field length #{l}, metadata dropped",
      @opt.fns
    ).warn unless @opt.act[:quiet][:set]==:on
    nil
  end
end