class Origami::PDF::JavaScript::AcrobatObject

Public Class Methods

acro_method(name, *def_args, &b) click to toggle source
# File lib/origami/javascript.rb, line 136
def self.acro_method(name, *def_args, &b)
    define_method(name) do |*args|
        if @engine.options[:log_method_calls]
            @engine.options[:console].puts(
                "LOG: #{self.class}.#{name}(#{args.map{|arg| Arg.inspect(arg)}.join(',')})"
            )
        end

        args = AcrobatObject.check_method_args(args, def_args)
        self.instance_exec(*args, &b) if b
    end
end
acro_method_protected(name, *def_args, &b) click to toggle source
# File lib/origami/javascript.rb, line 149
def self.acro_method_protected(name, *def_args, &b)
    define_method(name) do |*args|
        if @engine.options[:log_method_calls]
            @engine.options[:console].puts(
                "LOG: #{self.class}.#{name}(#{args.map{|arg| arg.inspect}.join(',')})"
            )
        end

        unless @engine.privileged?
            raise NotAllowedError, "Security settings prevent access to this property or method."
        end

        args = AcrobatObject.check_method_args(args, def_args)
        self.instance_exec(*args, &b) if b
    end
end
check_method_args(args, def_args) click to toggle source
# File lib/origami/javascript.rb, line 96
def self.check_method_args(args, def_args)
    if args.first.is_a?(V8::Object)
        check_method_named_args(args.first, def_args)
    else
        check_method_ordered_args(args, def_args)
    end
end
new(engine) click to toggle source
# File lib/origami/javascript.rb, line 92
def initialize(engine)
    @engine = engine
end

Private Class Methods

check_method_named_args(object, def_args) click to toggle source
# File lib/origami/javascript.rb, line 104
def self.check_method_named_args(object, def_args)
    members = object.entries.map {|k, _| k}
    argv = []
    def_args.each do |def_arg|
        raise MissingArgError if def_arg.required and not members.include?(def_arg.name)

        if members.include?(def_arg.name)
            arg = object[def_arg.name]
            raise TypeError if def_arg.type and not arg.is_a?(def_arg.type)
        else
            arg = def_arg.default
        end

        argv.push(arg)
    end

    argv
end
check_method_ordered_args(args, def_args) click to toggle source
# File lib/origami/javascript.rb, line 124
def self.check_method_ordered_args(args, def_args)
    def_args.each_with_index do |def_arg, index|
        raise MissingArgError if def_arg.required and index >= args.length
        raise TypeError if def_arg.type and not args[index].is_a?(def_arg.type)

        args.push(def_arg.default) if index >= args.length
    end

    args
end

Public Instance Methods

inspect()
Alias for: to_s
to_s() click to toggle source
# File lib/origami/javascript.rb, line 166
def to_s
    "[object #{self.class.to_s.split('::').last}]"
end
Also aliased as: inspect