module Klam::Template

Public Instance Methods

render_string(template, *args) click to toggle source
# File lib/klam/template.rb, line 3
def render_string(template, *args)
  args = join_array_arguments(args)
  segments = segment_string(template)
  segments.map do |segment|
    if segment =~ /^\$(\d+)$/
      args[$1.to_i - 1]
    else
      segment
    end
  end.join
end

Private Instance Methods

join_array_arguments(args) click to toggle source
# File lib/klam/template.rb, line 17
def join_array_arguments(args)
  args.map do |arg|
    if arg.kind_of?(Array)
      arg.join(',')
    else
      arg
    end
  end
end
segment_string(str) click to toggle source
# File lib/klam/template.rb, line 26
def segment_string(str)
  segments = []
  pre, placeholder, str = str.partition(/\$\d+/)
  until placeholder.empty? && str.empty?
    segments << pre
    segments << placeholder
    pre, placeholder, str = str.partition(/\$\d+/)
  end
  segments << pre
  segments
end