module FsTemplate::TemplateFile::NewWay

Public Instance Methods

apply_body_to_long(base_body) click to toggle source
# File lib/fs_template/template_file.rb, line 33
def apply_body_to_long(base_body)
  params = note_params
  if note == 'append'
    base_body + body
  elsif params[:action] == 'insert' && params[:after]
    base_body.gsub(params[:after],"#{params[:after]}#{body}").tap do |subbed|
      if subbed == base_body
        raise "no change, couldn't find #{params[:after]} in \n#{base_body}"
      end
    end
  elsif params[:action] == 'insert' && params[:before]
    base_body.gsub(params[:before],"#{body}#{params[:before]}").tap do |subbed|
      if subbed == base_body
        raise "no change, couldn't find #{params[:before]} in \n#{base_body}"
      end
    end
  elsif params[:action] == 'replace' && params[:base]
    base_body.gsub(params[:base],body).tap do |subbed|
      if subbed == base_body
        raise "no change, couldn't find #{params[:base]} in \n#{base_body}"
      end
    end
  else
    raise "bad"
  end
end
note_params() click to toggle source
# File lib/fs_template/template_file.rb, line 17
def note_params
  res = {}
  lines = note.split("\n").select { |x| x.present? }
  if lines.size == 1
    res[:action] = lines.first.strip
  else
    lines.each do |line|
      parts = line.split(":").map { |x| x.strip }.select { |x| x.present? }
      raise "bad #{path} #{parts.inspect}" unless parts.size == 2
      res[parts[0].to_sym] = parts[1]
    end
  end
  res
end
split_note_and_body_long() click to toggle source
# File lib/fs_template/template_file.rb, line 7
def split_note_and_body_long
  if full_body =~ /<overlay>(.+)<\/overlay>/m
    note = $1
    rest = full_body.gsub(/<overlay>.+<\/overlay>/m,"")
    {:note => note, :body => rest, :format => :long}
  else
    nil
  end
end