Class: CommandBuilderGenerator::RubyCodeWriter
- Inherits:
-
Object
- Object
- CommandBuilderGenerator::RubyCodeWriter
- Defined in:
- lib/command_builder_generator/ruby_code_writer.rb
Constant Summary collapse
- INDENT_SPACES =
2
Instance Attribute Summary collapse
-
#indent ⇒ Object
Returns the value of attribute indent.
Instance Method Summary collapse
- #dedent ⇒ Object
-
#initialize(stream) ⇒ RubyCodeWriter
constructor
A new instance of RubyCodeWriter.
- #write(code) ⇒ Object
- #write_block(line) ⇒ Object
- #write_class(class_name, base_class_name = nil) ⇒ Object
- #write_line(line = '') ⇒ Object
- #write_method(method_name, *args) ⇒ Object
- #write_module(module_name) ⇒ Object
Constructor Details
#initialize(stream) ⇒ RubyCodeWriter
8 9 10 11 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 8 def initialize(stream) @stream = stream @indent = 0 end |
Instance Attribute Details
#indent ⇒ Object
Returns the value of attribute indent.
6 7 8 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 6 def indent @indent end |
Instance Method Details
#dedent ⇒ Object
21 22 23 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 21 def dedent @indent -= 1 end |
#write(code) ⇒ Object
25 26 27 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 25 def write(code) @stream.print code end |
#write_block(line) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 33 def write_block(line) write_line line indent yield dedent write_line 'end' line end |
#write_class(class_name, base_class_name = nil) ⇒ Object
46 47 48 49 50 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 46 def write_class(class_name, base_class_name=nil) line = "class #{class_name}" line << " < #{base_class_name}" if base_class_name write_block(line) { yield } end |
#write_line(line = '') ⇒ Object
29 30 31 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 29 def write_line(line='') @stream.puts line.rjust(line.length + @indent * INDENT_SPACES, ' ') end |
#write_method(method_name, *args) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 52 def write_method(method_name, *args) args = [args].flatten line = "def #{method_name}" line << "(#{args.join ', '})" unless args.empty? write_block(line) { yield } @stream.puts end |
#write_module(module_name) ⇒ Object
42 43 44 |
# File 'lib/command_builder_generator/ruby_code_writer.rb', line 42 def write_module(module_name) write_block("module #{module_name}") { yield } end |