Class: Albacore::Asmver::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/albacore/task_types/asmver/engine.rb

Direct Known Subclasses

Cpp, Cs, Fs, Vb

Instance Method Summary collapse

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

Raises:

  • (ArgumentError)


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