From: se8.and@... Date: 2017-08-25T22:34:49+00:00 Subject: [ruby-core:82471] [Ruby trunk Feature#13839] String Interpolation Statements Issue #13839 has been reported by se8 (S��bastien Durand). ---------------------------------------- Feature #13839: String Interpolation Statements https://bugs.ruby-lang.org/issues/13839 * Author: se8 (S��bastien Durand) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Hello! Here is a KISS implementation of a template engine in Ruby: ~~~ ruby class Template attr_reader :input def initialize(input) @input = input end def output "output = %\0" + @input.gsub("{%", "\0\n").gsub("%}", "\noutput += %\0") + "\0" end def render(binding) eval(output, binding) end end ~~~ Usage: ~~~ text {% if true %} Hello #{'World'} {% end %} Template.new('...').render(binding) ~~~ It's kind of a hack on top of Ruby string interpolation, so it's hell fast (~4 times faster than ERB). Could it be a good idea to implement this kind of statements directly in Ruby string interpolation? Maybe a syntax like that: ~~~ text "%{3.times do}Hello #{'World'}%{end}" ~~~ So Ruby would have a fast minimal native template engine, with #{expressions} and %{statements}: ~~~ text eval(File.read("..."), binding) ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: