Class: RubyScriptProvider::RubyScript

Inherits:
Object
  • Object
show all
Includes:
Runo::Com::Sun::Star::Script::Provider::XScript, Uno::UnoBase
Defined in:
lib/rubyscriptprovider.rb

Overview

Executes script.

Instance Method Summary collapse

Methods included from Uno::UnoBase

#getImplementationId, #getTypes

Constructor Details

#initialize(capsule, file_name, func_name) ⇒ RubyScript

Returns a new instance of RubyScript.



917
918
919
920
921
# File 'lib/rubyscriptprovider.rb', line 917

def initialize(capsule, file_name, func_name)
  @capsule = capsule
  @file_name = file_name
  @func_name = func_name
end

Instance Method Details

#invoke(args, param_index, out_params) ⇒ Object



923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
# File 'lib/rubyscriptprovider.rb', line 923

def invoke(args, param_index, out_params)
  ret = nil
  begin
    m = @capsule.method(@func_name)
    if m
      ret = m.call(*args)
    end
  rescue Uno::UnoError => e
    trace = e.backtrace
    trace.unshift(trace[0].gsub(
        /`[^']*'/, "\`#{e.uno_method}'")) if e.respond_to? :uno_method
    trace.pop(2)
    e.uno_exception.Message += "\nError during invoking method: \n" + 
        "Script: #{@func_name}\n" + 
        "File: #{@file_name}\nType: #{e.type_name}" + "\n\n" + 
        %Q!#{e.uno_exception}\n#{trace.join("\n")}\n!
    raise
  rescue => e
    ex = RuntimeException.new(
             %Q!\n#{e}\n#{e.backtrace.join("\n")}\n!, self)
    raise Uno::UnoError, ex
  end
  return [ret, [0], [nil]]
end