class Mkxms::Mssql::ClrFunctionHandler

Public Class Methods

new(functions, node) click to toggle source
# File lib/mkxms/mssql/clr_function_handler.rb, line 107
def initialize(functions, node)
  a = node.attributes
  
  @function = ClrFunction.new(a).tap do |f|
    store_properties_on f
    functions << f
  end
end

Public Instance Methods

handle_column_element(parse) click to toggle source
# File lib/mkxms/mssql/clr_function_handler.rb, line 153
def handle_column_element(parse)
  a = parse.node.attributes
  ClrFunction::ResultTable::Column.new(
    a['name'],
    ResultType.new(
      a['type-schema'],
      a['type'],
      a['capacity'],
      a['precision'],
      a['scale'],
      a['collation'],
    )
  ).tap do |col|
    @result_table.columns << col
    # Dispatch parse for column properties
    parse.context = ResultTableColumnHandler.new(col)
  end
end
handle_implementation_element(parse) click to toggle source
# File lib/mkxms/mssql/clr_function_handler.rb, line 116
def handle_implementation_element(parse)
  a = parse.node.attributes
  @function.clr_impl = ClrMethod.new(a['assembly'], a['class'], a['method'])
end
handle_parameter_element(parse) click to toggle source
# File lib/mkxms/mssql/clr_function_handler.rb, line 121
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|
    @function.params << param
    parse.context = ParameterHandler.new(param)
  end
end
handle_result_table_element(parse) click to toggle source
# File lib/mkxms/mssql/clr_function_handler.rb, line 149
def handle_result_table_element(parse)
  @function.result_table = @result_table = ClrFunction::ResultTable.new
end
handle_returns_element(parse) click to toggle source
# File lib/mkxms/mssql/clr_function_handler.rb, line 138
def handle_returns_element(parse)
  a = parse.node.attributes
  @function.returns = ResultType.new(
    a['type-schema'],
    a['type'],
    a['capacity'],
    a['precision'],
    a['scale'],
  )
end