class Snippr::Processor::Block

Public Instance Methods

process(content, opts = {}) click to toggle source
# File lib/snippr/processor/block.rb, line 7
def process(content, opts = {})
  opts.inject(content) do |c, pv|
    placeholder, value = pv
    c.gsub(/\{(.*)\((.*)\)\}(.*)\{\/\1\}/m) do |match|
      # match[0] = {a.b("1","2")} INNEN {/a.b}
      # match[1] = a.b
      # match[2] = "1","2"
      # match[3] =  INNEN
      message = $1
      signature = $2
      block_quoted = $3.gsub("\"","\"").strip
      new_signature = []
      new_signature << signature unless signature.empty?
      new_signature << block_quoted unless block_quoted.empty?
      "{#{message}(#{new_signature.map { |e| "\"#{e}\""}.join(',')})}"
    end
  end
end