Class: CommandBuilder::CodeGenerator::RubyCodeWriter
- Inherits:
-
Object
- Object
- CommandBuilder::CodeGenerator::RubyCodeWriter
- Defined in:
- lib/command_builder/code_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
Returns a new instance of RubyCodeWriter.
9 10 11 12 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 9 def initialize(stream) @stream = stream @indent = 0 end |
Instance Attribute Details
#indent ⇒ Object
Returns the value of attribute indent.
7 8 9 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 7 def indent @indent end |
Instance Method Details
#dedent ⇒ Object
22 23 24 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 22 def dedent @indent -= 1 end |
#write(code) ⇒ Object
26 27 28 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 26 def write(code) @stream.print code end |
#write_block(line) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 34 def write_block(line) write_line line indent yield dedent write_line 'end' line end |
#write_class(class_name, base_class_name = nil) ⇒ Object
47 48 49 50 51 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 47 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
30 31 32 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 30 def write_line(line='') @stream.puts line.rjust(line.length + @indent * INDENT_SPACES, ' ') end |
#write_method(method_name, *args) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 53 def write_method(method_name, *args) args = [args].flatten line = "def #{method_name}" line << "(#{args.join ', '})" unless args.empty? write_block(line) { yield } end |
#write_module(module_name) ⇒ Object
43 44 45 |
# File 'lib/command_builder/code_generator/ruby_code_writer.rb', line 43 def write_module(module_name) write_block("module #{module_name}") { yield } end |