Class: Mkxms::Mssql::ClrArggregateHandler

Inherits:
Object
  • Object
show all
Includes:
PropertyHandler::ElementHandler
Defined in:
lib/mkxms/mssql/clr_aggregate_handler.rb

Instance Method Summary collapse

Methods included from PropertyHandler::ElementHandler

#handle_property_element

Constructor Details

#initialize(aggregates, node) ⇒ ClrArggregateHandler

Returns a new instance of ClrArggregateHandler.



56
57
58
59
60
61
62
63
# File 'lib/mkxms/mssql/clr_aggregate_handler.rb', line 56

def initialize(aggregates, node)
  a = node.attributes
  
  @aggregate = ClrAggregate.new(a).tap do |agg|
    store_properties_on agg
    aggregates << agg
  end
end

Instance Method Details

#handle_implementation_element(parse) ⇒ Object



65
66
67
68
# File 'lib/mkxms/mssql/clr_aggregate_handler.rb', line 65

def handle_implementation_element(parse)
  a = parse.node.attributes
  @aggregate.clr_impl = ClrClass.new(a['assembly'], a['class'])
end

#handle_parameter_element(parse) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/mkxms/mssql/clr_aggregate_handler.rb', line 70

def handle_parameter_element(parse)
  a = parse.node.attributes
  Parameter.new(
    a['name'],
    a['type-schema'],
    a['type'],
    a['capacity'],
    a['precision'],
    a['scale'],
    a['default'],
    a['output'],
  ).tap do |param|
    @aggregate.params << param
    parse.context = ParameterHandler.new(param)
  end
end

#handle_returns_element(parse) ⇒ Object



87
88
89
90
91
92
93
94
95
96
# File 'lib/mkxms/mssql/clr_aggregate_handler.rb', line 87

def handle_returns_element(parse)
  a = parse.node.attributes
  @aggregate.returns = ResultType.new(
    a['type-schema'],
    a['type'],
    a['capacity'],
    a['precision'],
    a['scale'],
  )
end