Class: Albacore::Asmver::Engine
- Inherits:
-
Object
- Object
- Albacore::Asmver::Engine
- Defined in:
- lib/albacore/task_types/asmver/engine.rb
Instance Method Summary collapse
- #build_attribute(attr_name, attr_data) ⇒ Object
-
#build_comment(string_data) ⇒ Object
builds a comment, as a single line if it’s a single line otherwise builds a multiline comment.
- #build_named_parameters(data) ⇒ Object
- #build_namespace(namespace, writer, &in_namespace) ⇒ Object
- #build_positional_parameters(data) ⇒ Object
- #build_using_statement(namespace) ⇒ Object
Instance Method Details
#build_attribute(attr_name, attr_data) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/albacore/task_types/asmver/engine.rb', line 3 def build_attribute attr_name, attr_data attribute = "#{@start_token}assembly: #{format_attribute_name attr_name}(" unless attr_data.nil? if attr_data.is_a? Hash # Only named parameters attribute << build_named_parameters(attr_data) elsif attr_data.is_a? Array if attr_data.last.is_a? Hash # Positional and named parameters attribute << build_positional_parameters(attr_data.slice(0, attr_data.length - 1)) attribute << ", " attribute << build_named_parameters(attr_data.last) else # Only positional parameters attribute << build_positional_parameters(attr_data) end else # Single positional parameter attribute << "#{format_value attr_data}" end end attribute << ")#{@end_token}" end |
#build_comment(string_data) ⇒ Object
builds a comment, as a single line if it’s a single line otherwise builds a multiline comment
54 55 56 57 58 59 60 |
# File 'lib/albacore/task_types/asmver/engine.rb', line 54 def build_comment string_data if is_multiline string_data build_multiline_comment string_data else build_singleline_comment string_data end end |
#build_named_parameters(data) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/albacore/task_types/asmver/engine.rb', line 29 def build_named_parameters data params = [] data.each_pair do |k, v| params << "#{k.to_s} #{@assignment} #{format_value v}" end params.join ", " end |
#build_namespace(namespace, writer, &in_namespace) ⇒ Object
45 46 47 48 49 50 |
# File 'lib/albacore/task_types/asmver/engine.rb', line 45 def build_namespace namespace, writer, &in_namespace raise ArgumentError, "missing block to #build_namespace on #{self.inspect}" unless block_given? writer << namespace_start(namespace) in_namespace.call namespace writer << namespace_end end |
#build_positional_parameters(data) ⇒ Object
37 38 39 |
# File 'lib/albacore/task_types/asmver/engine.rb', line 37 def build_positional_parameters data data.flatten.map{ |a| format_value a }.join(", ") end |
#build_using_statement(namespace) ⇒ Object
41 42 43 |
# File 'lib/albacore/task_types/asmver/engine.rb', line 41 def build_using_statement namespace "#{@using} #{namespace}#{@statement_terminator}" end |