Sha256: df1b148d9c142094436afaf5172d8fdeb139534e7a9b2722e4e7004e308ed9f8

Contents?: true

Size: 866 Bytes

Versions: 2

Compression:

Stored size: 866 Bytes

Contents

class Musterb::Musterbifier
  def initialize(template)
    @template = template
  end

  def fetch(tokens)
    tokens = tokens.strip.split(".")
    last_token = tokens.pop
    fetch_command = tokens.inject("musterb") do |str, token|
      "#{str}.chain('#{token}')"
    end
    "#{fetch_command}['#{last_token}']"
  end

  def to_erb
    @template.gsub(/\{\{(\{?[^\}]*\}?)\}\}/) do |match|
      match = $1
      case match[0]
      when '#'
        "<% musterb.block_if #{fetch match[1..-1]} do %>"
      when '^'
        "<% musterb.block_unless #{fetch match[1..-1]} do %>"
      when "/"
        "<% end %>"
      when '{'
        "<%= #{fetch match[1..-2]} %>"
      when '&'
        "<%= #{fetch match[1..-1]} %>"
      when '!'
        ""
      when '.'
        "<%== musterb.current %>"
      else
        "<%== #{fetch match} %>"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
musterb-0.0.5 lib/musterb/musterbifier.rb
musterb-0.0.4 lib/musterb/musterbifier.rb