module Mondrian::OLAP::Schema::ScriptElements

Private Instance Methods

ruby(*options, &block) click to toggle source
# File lib/mondrian/olap/schema_udf.rb, line 14
def ruby(*options, &block)
  udf_class_name = if options.include?(:shared)
    "#{name.capitalize}Udf"
  end
  if udf_class_name && self.class.const_defined?(udf_class_name)
    udf_class = self.class.const_get(udf_class_name)
  else
    udf_class = Class.new(RubyUdfBase)
    self.class.const_set(udf_class_name, udf_class) if udf_class_name
  end
  udf_class.function_name = name
  udf_class.class_eval(&block)
  udf_java_class = udf_class.become_java!(false)

  class_name udf_java_class.getName
end
ruby_formatter(options, interface_class, method, signature, &block) click to toggle source
# File lib/mondrian/olap/schema_udf.rb, line 31
def ruby_formatter(options, interface_class, method, signature, &block)
  formatter_class_name = if options.include?(:shared) && @attributes[:name]
    ruby_formatter_name_to_class_name(@attributes[:name])
  end
  if formatter_class_name && self.class.const_defined?(formatter_class_name)
    formatter_class = self.class.const_get(formatter_class_name)
  else
    formatter_class = Class.new
    self.class.const_set(formatter_class_name, formatter_class) if formatter_class_name
  end

  formatter_class.class_eval do
    include interface_class
    define_method method, &block
    add_method_signature(method, signature)
  end
  formatter_java_class = formatter_class.become_java!(false)
  class_name formatter_java_class.getName
end
ruby_formatter_java_class_name(name) click to toggle source
# File lib/mondrian/olap/schema_udf.rb, line 56
def ruby_formatter_java_class_name(name)
  "rubyobj.#{self.class.name.gsub('::', '.')}.#{ruby_formatter_name_to_class_name(name)}"
end
ruby_formatter_name_to_class_name(name) click to toggle source
# File lib/mondrian/olap/schema_udf.rb, line 51
def ruby_formatter_name_to_class_name(name)
  # upcase just first character
  "#{name.sub(/\A./){|m| m.upcase}}Udf"
end