Class: Bade::Runtime::RenderBinding

Inherits:
Object
  • Object
show all
Defined in:
lib/bade/runtime/render_binding.rb

Defined Under Namespace

Classes: KeyError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(vars = {}) ⇒ RenderBinding

Returns a new instance of RenderBinding.

Parameters:

  • vars (Hash) (defaults to: {})


25
26
27
28
29
30
31
32
33
34
35
# File 'lib/bade/runtime/render_binding.rb', line 25

def initialize(vars = {})
  __reset

  vars.each do |key, value|
    raise KeyError, "Already defined variable #{key.inspect} in this binding" if respond_to?(key.to_sym)

    define_singleton_method(key) do
      value
    end
  end
end

Instance Attribute Details

#__base_indentString

Holds

Returns:



21
22
23
# File 'lib/bade/runtime/render_binding.rb', line 21

def __base_indent
  @__base_indent
end

#__buffs_stackArray<Array<String>>

Returns:



12
13
14
# File 'lib/bade/runtime/render_binding.rb', line 12

def __buffs_stack
  @__buffs_stack
end

#__mixinsHash<String, Mixin>

Returns:



16
17
18
# File 'lib/bade/runtime/render_binding.rb', line 16

def __mixins
  @__mixins
end

#__new_lineString

Holds

Returns:



21
22
23
# File 'lib/bade/runtime/render_binding.rb', line 21

def __new_line
  @__new_line
end

Instance Method Details

#__buffObject

— Methods for dealing with pushing and poping buffers in stack



64
65
66
# File 'lib/bade/runtime/render_binding.rb', line 64

def __buff
  __buffs_stack.last
end

#__buffs_popObject



72
73
74
# File 'lib/bade/runtime/render_binding.rb', line 72

def __buffs_pop
  __buffs_stack.pop
end

#__buffs_pushObject



68
69
70
# File 'lib/bade/runtime/render_binding.rb', line 68

def __buffs_push
  __buffs_stack.push([])
end

#__create_block(name, &block) ⇒ Object

Shortcut for creating blocks



54
55
56
# File 'lib/bade/runtime/render_binding.rb', line 54

def __create_block(name, &block)
  Bade::Runtime::Block.new(name, self, &block)
end

#__create_mixin(name, &block) ⇒ Object



58
59
60
# File 'lib/bade/runtime/render_binding.rb', line 58

def __create_mixin(name, &block)
  Bade::Runtime::Mixin.new(name, self, &block)
end

#__get_bindingBinding

Returns:

  • (Binding)


48
49
50
# File 'lib/bade/runtime/render_binding.rb', line 48

def __get_binding
  binding
end

#__html_escaped(text) ⇒ String

Escape input text with html escapes

Parameters:

Returns:



82
83
84
85
86
87
88
89
# File 'lib/bade/runtime/render_binding.rb', line 82

def __html_escaped(text)
  return nil if text.nil?

  text.gsub('&', '&amp;')
      .gsub('<', '&lt;')
      .gsub('>', '&gt;')
      .gsub('"', '&quot;')
end

#__resetnil

Resets this binding to default state, this method should be envoked after running the template lambda

Returns:

  • (nil)


41
42
43
44
# File 'lib/bade/runtime/render_binding.rb', line 41

def __reset
  @__buffs_stack = [[]]
  @__mixins = Hash.new { |_hash, key| raise "Undefined mixin '#{key}'" }
end

#__tag_render_attribute(name, *values) ⇒ Object



91
92
93
94
95
96
# File 'lib/bade/runtime/render_binding.rb', line 91

def __tag_render_attribute(name, *values)
  values = values.compact
  return if values.empty?

  %( #{name}="#{values.join(' ')}")
end