Class: Tilt::YajlTemplate
- Defined in:
- lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb
Overview
Yajl Template implementation
Yajl is a fast JSON parsing and encoding library for Ruby See github.com/brianmario/yajl-ruby
The template source is evaluated as a Ruby string, and the result is converted #to_json.
Example
# This is a template example.
# The template can contain any Ruby statement.
tpl " @counter = 0\n\n # The json variable represents the buffer\n # and holds the data to be serialized into json.\n # It defaults to an empty hash, but you can override it at any time.\n json = {\n :\"user\#{@counter += 1}\" => { :name => \"Joshua Peek\", :id => @counter },\n :\"user\#{@counter += 1}\" => { :name => \"Ryan Tomayko\", :id => @counter },\n :\"user\#{@counter += 1}\" => { :name => \"Simone Carletti\", :id => @counter },\n }\n\n # Since the json variable is a Hash,\n # you can use conditional statements or any other Ruby statement\n # to populate it.\n json[:\"user\#{@counter += 1}\"] = { :name => \"Unknown\" } if 1 == 2\n\n # The last line doesn't affect the returned value.\n nil\n"
template = Tilt::YajlTemplate.new { tpl }
template.render(self)
Instance Attribute Summary
Attributes inherited from Template
Class Method Summary collapse
Instance Method Summary collapse
-
#decorate(json) ⇒ Object
Decorates the
jsoninput according to givenoptions. - #evaluate(scope, locals, &block) ⇒ Object
- #initialize_engine ⇒ Object
- #precompiled_postamble(locals) ⇒ Object
- #precompiled_preamble(locals) ⇒ Object
- #precompiled_template(locals) ⇒ Object
- #prepare ⇒ Object
Methods inherited from Template
#allows_script?, #basename, #default_encoding, #eval_file, #initialize, #name, #read_template_file, #render
Constructor Details
This class inherits a constructor from Tilt::Template
Class Method Details
.engine_initialized? ⇒ Boolean
45 46 47 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 45 def self.engine_initialized? defined? ::Yajl end |
Instance Method Details
#decorate(json) ⇒ Object
Decorates the json input according to given options.
json - The json String to decorate. options - The option Hash to customize the behavior.
Returns the decorated String.
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 80 def decorate(json) callback, variable = [:callback], [:variable] if callback && variable "var #{variable} = #{json}; #{callback}(#{variable});" elsif variable "var #{variable} = #{json};" elsif callback "#{callback}(#{json});" else json end end |
#evaluate(scope, locals, &block) ⇒ Object
56 57 58 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 56 def evaluate(scope, locals, &block) decorate super(scope, locals, &block) end |
#initialize_engine ⇒ Object
49 50 51 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 49 def initialize_engine require_template_library 'yajl' end |
#precompiled_postamble(locals) ⇒ Object
65 66 67 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 65 def precompiled_postamble(locals) "Yajl::Encoder.new.encode(json)" end |
#precompiled_preamble(locals) ⇒ Object
60 61 62 63 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 60 def precompiled_preamble(locals) return super if locals.include? :json "json = {}\n#{super}" end |
#precompiled_template(locals) ⇒ Object
69 70 71 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 69 def precompiled_template(locals) data.to_str end |
#prepare ⇒ Object
53 54 |
# File 'lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb', line 53 def prepare end |