Sha256: 120eef0f62584dc2f1af0f260b5a35944accc08bfdf724999c4929a4b4b7c479
Contents?: true
Size: 706 Bytes
Versions: 72
Compression:
Stored size: 706 Bytes
Contents
module Temple module Filters # Convert [:dynamic, code] to [:static, text] if code is static Ruby expression. class StaticAnalyzer < Filter def call(exp) # Optimize only when Ripper is available. if ::Temple::StaticAnalyzer.available? super else exp end end def on_dynamic(code) if ::Temple::StaticAnalyzer.static?(code) exp = [:static, eval(code).to_s] newlines = code.count("\n") if newlines == 0 exp else [:multi, exp, *newlines.times.map { [:newline] }] end else [:dynamic, code] end end end end end
Version data entries
72 entries across 58 versions & 6 rubygems