class SiSU_Modify::ConvertMarkup

Public Class Methods

new(opt) click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 63
def initialize(opt)
  @opt=opt
  @description='This is a script that contains canned text conversions for reuse'
  @warn='WARNING, PROCEED AT YOUR OWN RISK, will make file changes.'
end

Public Instance Methods

conversion() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 189
def conversion
  #%% do it                                   -------------------------->
  if @opt.files \
  and @opt.files.length > 0
    mr=nil
    #%% changes to make m match, r replace      -------------------------->
    if @opt.selections.str =~/--help/ then help
    elsif @opt.selections.str =~/(?:convert|to)[=-](?:xml |sxs|sax|sxd|dom|sxn|node)/
      ext=case @opt.selections.str
      when /(?:convert|to)[=-](?:xml|sxs|sax)/ then '.sxs.xml'
      when /(?:convert|to)[=-](?:sxd|dom)/     then '.sxd.xml'
      when /(?:convert|to)[=-](?:sxn|node)/    then '.sxn.xml'
      end
      message("#{@opt.files.inspect}\n\nWARNING, PROCEED AT YOUR OWN RISK,\noverwriting any equivalent file with the extension #{ext}")
      mr=case @opt.selections.str
      when /(?:convert|to)[=-](?:sxs|sax|xml )/ then convert_to_simple_xml_model_sax
      when /(?:convert|to)[=-](?:sxd|dom)/      then convert_to_simple_xml_model_dom
      when /(?:convert|to)[=-](?:sxn|node)/     then convert_to_simple_xml_model_node
      else help
      end
    else
      mr=case @opt.selections.str
      when /(?:(?:37)?to-?38|--(?:convert|to)[=-](?:current|0.38))/           then convert_37_to_38
      when /(?:(?:38)?to-?37|--(?:convert|to)[=-](?:0.37))/                   then convert_38_to_37
      when /(?:36to37)/                                                       then convert_filename_36_to_37
      when /(?:convert|from)[=-]kdi/                                          then convert_kdi_to_sst
      when /(?:(?:convert|from)[=-])?(?:xml_to_sst|xml2sst|sxml|sxs|sxd|sxd)/ then convert_s_xml_to_sst
      when /(?:convert|to)[=-]footnotes/                                      then convert_footnotes
      when /convert|default/                                                  then current_match_and_replace
      else help
      end
    end
    unless @opt.selections.str =~/kdi/
      match_and_replace=mr
      #start_processing =/not used in this example/i
      end_processing =/END\s+OF\s+FILE/
      i=@opt.fns
      if i =~/(?:\.sst|\.ssm|\.ssi)$/
        @new,@matched,@flag_start,@flag_end,@empty1,@empty2=true,false,false,false,false,false
        o="#{i}.bk" #o is for old
        markup_version=SiSU_Markup::MarkupIdentify.new(@opt).markup_version?
        if (@opt.selections.str=~/37/ and markup_version=~/0.38/) \
        or (@opt.selections.str=~/current|38/ and markup_version=~/0.37/)
          puts "#{i} #{markup_version}"
          file=File.open(i,'r')
          cont=file.readlines
          file.close
          cont.each do |y|
            match_and_replace.each do |m,r,w|
              if y =~m \
              and y =~w
                if @new
                  @new=false
                  File.unlink(o) if File.exist?(o)
                  File.rename(i,o)
                  File.unlink(i) if File.exist?(i)
                  @file=File.new(i,'w')
                  @matched=true
                  break
                end
              end
            end
          end
          if @matched
            puts "conversion match in #{i}" unless @opt.act[:quiet][:set]==:on
            @flag_start=true
            cont.each do |y|
              if y =~end_processing
                @flag_end=true
              end
              if @flag_start \
              and not @flag_end
                match_and_replace.each do |m,r,w|
                  if y =~m \
                  and y =~w
                    puts m.inspect + ' -> ' + r unless @opt.act[:quiet][:set]==:on
                    if (@opt.act[:verbose][:set]==:on \
                    || @opt.act[:verbose_plus][:set]==:on \
                    || @opt.act[:maintenance][:set]==:on)
                      puts "in:  #{y}"
                    end
                    y.gsub!(m,r) if m and r
                    if (@opt.act[:verbose][:set]==:on \
                    || @opt.act[:verbose_plus][:set]==:on \
                    || @opt.act[:maintenance][:set]==:on)
                      puts "out: #{y}"
                    end
                  end
                end
              end
              @empty1=(y=~/^\s*$/) \
              ? true
              : false
              @file.puts y unless (@empty1==true and @empty2==true)
              @empty2=(y=~/^\s*$/) \
              ? true
              : false
            end
            @file.close
          else puts "NO conversion match in #{i}" unless @opt.act[:quiet][:set]==:on
          end
        else
          if (@opt.act[:verbose][:set]==:on \
          || @opt.act[:verbose_plus][:set]==:on \
          || @opt.act[:maintenance][:set]==:on)
            puts "Requested conversion #{@opt.selections.str} markup #{markup_version} identified in #{i}"
          end
        end
      end
    end
  else puts 'this routine makes permanent changes to the contents of the files matched, as instructed within [no matches]'
  end
end
convert_37_to_38() click to toggle source

%% substitutions to be made

# File lib/sisu/sst_convert_markup.rb, line 106
def convert_37_to_38
  message("#{@warn}\nConvert sisu markup from 0.37 to 0.38")
  [
    [/^0~(\S+?)([+-])\s+/,    '@\1:\2 ',               //],
    [/^0~(\S+)\s+/,           '@\1: ',                 //],
    [/^@toc:\s+/,             '@structure: ',          //],
    [/^1~/,                   ':A~',                   //],
    [/^2~/,                   ':B~',                   //],
    [/^3~/,                   ':C~',                   //],
    [/^4~/,                   '1~',                    //],
    [/^5~/,                   '2~',                    //],
    [/^6~/,                   '3~',                    //],
    [/^7~/,                   '4~',                    //],
    [/^8~/,                   '5~',                    //],
    [/^9~/,                   '6~',                    //],
    [/1/,                     ':A',                    /^@(?:level|markup):\s/],
    [/2/,                     ':B',                    /^@(?:level|markup):\s/],
    [/3/,                     ':C',                    /^@(?:level|markup):\s/],
    [/4/,                     '1',                     /^@(?:level|markup):\s/],
    [/5/,                     '2',                     /^@(?:level|markup):\s/],
    [/6/,                     '3',                     /^@(?:level|markup):\s/]
  ]
end
convert_38_to_37() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 129
def convert_38_to_37
  message("#{@warn}\nConvert sisu markup from 0.38 to 0.37")
  [
    [/^@(\S+?):([+-])\s+/,    '0~\1\2 ',               //],
    [/^@(\S+?):\s+/,          '0~\1 ',                 //],
    [/^0~structure\s+/,       '0~toc ',                //],
    [/^1~/,                   '4~',                    //],
    [/^2~/,                   '5~',                    //],
    [/^3~/,                   '6~',                    //],
    [/^4~/,                   '7~',                    //],
    [/^5~/,                   '8~',                    //],
    [/^6~/,                   '9~',                    //],
    [/^:?A~/,                 '1~',                    //],
    [/^:?B~/,                 '2~',                    //],
    [/^:?C~/,                 '3~',                    //],
    [/1/,                     '4',                     /^0~(?:level|markup)\s/],
    [/2/,                     '5',                     /^0~(?:level|markup)\s/],
    [/3/,                     '6',                     /^0~(?:level|markup)\s/],
    [/:?A/,                   '1',                     /^0~(?:level|markup)\s/],
    [/:?B/,                   '2',                     /^0~(?:level|markup)\s/],
    [/:?C/,                   '3',                     /^0~(?:level|markup)\s/]
  ]
end
convert_filename_36_to_37() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 152
def convert_filename_36_to_37
  @opt.files.each do |f|
    s=case f
    when /(\.s[1-3])$/ then f.sub($1,'.sst')
    when /(\.r[1-3])$/ then f.sub($1,'.ssm')
    when /(\.ri)$/     then f.sub($1,'.ssi')
    else f
    end
    pwd=Dir.pwd
    unless f==s
      unless File.exist?("#{pwd}/#{s}")
        puts "./#{f} -> ./#{s}"
        FileUtils::cp("#{pwd}/#{f}","#{pwd}/#{s}")
      else "File already exists, < #{s} >  will not overwrite"
      end
    end
  end
end
convert_footnotes() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 185
def convert_footnotes
  require_relative 'sst_do_inline_footnotes'
  SiSU_ConvertFootnotes::Source.new(@opt).read
end
convert_kdi_to_sst() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 179
def convert_kdi_to_sst
  SiSU_Kdissert::Convert.new(@opt).read
end
convert_s_xml_to_sst() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 182
def convert_s_xml_to_sst
  SiSU_sstFromXML::Convert.new(@opt).read
end
convert_to_simple_xml_model_dom() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 173
def convert_to_simple_xml_model_dom
  SiSU_simple_xml_model_dom::Convert.new(@opt).read
end
convert_to_simple_xml_model_node() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 176
def convert_to_simple_xml_model_node
  SiSU_simple_xml_model_node::Convert.new(@opt).read
end
convert_to_simple_xml_model_sax() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 170
def convert_to_simple_xml_model_sax
  SiSU_SimpleXML_ModelSax::Convert.new(@opt).read
end
current_match_and_replace() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 68
def current_match_and_replace
  convert_37_to_38
end
help() click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 78
    def help
    print <<WOK

#{@description}

sisu --convert --to38 [filename/wildcard]
  converts pre 0.37 sisu markup to 0.38 experimental
  [--37to38]

sisu --convert --to37 [filename/wildcard]
  converts pre 0.37 sisu markup to 0.38 experimental
  [--38to37]

sisu --convert --36to37 [filename/wildcard]
  converts pre 0.36 file-name, to 0.37 file-name
  [--36to37]

sisu --identify [filename]
  attempts to identify markup version used in file

sisu --query [version number]
  gives short summary of distinguishing characteristic
  of that version of markup

WOK
      exit
    end
message(text) click to toggle source
# File lib/sisu/sst_convert_markup.rb, line 71
def message(text)
  response=''
  unless @opt.cmd=~/QQ/ \
  or @opt.act[:quiet][:set]==:on
    response=response?(%{#{  text}\nProceed? })
  end
end