Class: ORB::Temple::Generators::Generator
- Inherits:
-
Object
- Object
- ORB::Temple::Generators::Generator
- Includes:
- Temple::Mixins::CompiledDispatcher, Temple::Mixins::Options, Temple::Utils
- Defined in:
- lib/orb/temple/generators.rb
Instance Method Summary collapse
- #call(exp) ⇒ Object
- #create_buffer ⇒ Object
- #on(*exp) ⇒ Object
- #on_capture(name, exp) ⇒ Object
- #on_code(code) ⇒ Object
- #on_dynamic(code) ⇒ Object
- #on_multi(*exp) ⇒ Object
- #on_newline ⇒ Object
- #on_static(text) ⇒ Object
- #postamble ⇒ Object
- #preamble ⇒ Object
- #restore_buffer ⇒ Object
- #return_buffer ⇒ Object
- #save_buffer ⇒ Object
Instance Method Details
#call(exp) ⇒ Object
25 26 27 |
# File 'lib/orb/temple/generators.rb', line 25 def call(exp) [preamble, compile(exp), postamble].flatten.compact.join('; ') end |
#create_buffer ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/orb/temple/generators.rb', line 45 def create_buffer if buffer == '@output_buffer' "#{buffer} = output_buffer || #{options[:buffer_class]}.new" else "#{buffer} = #{options[:buffer_class]}.new" end end |
#on(*exp) ⇒ Object
57 58 59 |
# File 'lib/orb/temple/generators.rb', line 57 def on(*exp) raise InvalidExpression, "Generator supports only core expressions - found #{exp.inspect}" end |
#on_capture(name, exp) ⇒ Object
69 70 71 72 73 |
# File 'lib/orb/temple/generators.rb', line 69 def on_capture(name, exp) capture_generator.new(capture_generator: [:capture_generator], freeze_static: [:freeze_static], buffer: name).call(exp) end |
#on_code(code) ⇒ Object
83 84 85 |
# File 'lib/orb/temple/generators.rb', line 83 def on_code(code) code end |
#on_dynamic(code) ⇒ Object
79 80 81 |
# File 'lib/orb/temple/generators.rb', line 79 def on_dynamic(code) concat(code) end |
#on_multi(*exp) ⇒ Object
61 62 63 |
# File 'lib/orb/temple/generators.rb', line 61 def on_multi(*exp) exp.map { |e| compile(e) }.join('; ') end |
#on_newline ⇒ Object
65 66 67 |
# File 'lib/orb/temple/generators.rb', line 65 def on_newline "\n" end |
#on_static(text) ⇒ Object
75 76 77 |
# File 'lib/orb/temple/generators.rb', line 75 def on_static(text) concat([:freeze_static] ? "#{text.inspect}.freeze" : text.inspect) end |
#postamble ⇒ Object
33 34 35 |
# File 'lib/orb/temple/generators.rb', line 33 def postamble [return_buffer, restore_buffer] end |
#preamble ⇒ Object
29 30 31 |
# File 'lib/orb/temple/generators.rb', line 29 def preamble [save_buffer, create_buffer] end |
#restore_buffer ⇒ Object
41 42 43 |
# File 'lib/orb/temple/generators.rb', line 41 def restore_buffer "ensure; #{buffer} = #{@original_buffer}; end" if [:save_buffer] end |
#return_buffer ⇒ Object
53 54 55 |
# File 'lib/orb/temple/generators.rb', line 53 def return_buffer 'nil' end |
#save_buffer ⇒ Object
37 38 39 |
# File 'lib/orb/temple/generators.rb', line 37 def save_buffer "begin; #{@original_buffer = unique_name} = #{buffer} if defined?(#{buffer})" if [:save_buffer] end |