class BELParser::Expression::Model::Term
Attributes
arguments[R]
function[R]
Public Class Methods
new(function, *arguments)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 12 def initialize(function, *arguments) self.function = function self.arguments = arguments end
Public Instance Methods
<<(arg)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 36 def <<(arg) raise( ArgumentError, 'arg: expected Parameter or Term') if invalid_argument?(arg) @arguments << item end
==(other)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 89 def ==(other) return false if other == nil @function == other.function && @arguments == other.arguments end
arguments=(*args)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 26 def arguments=(*args) args = (args ||= []).flatten invalid = args.any?(&method(:invalid_argument?)) raise( ArgumentError, "args: expected Parameter or Term objects") if invalid @arguments = args end
function=(function)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 17 def function=(function) unless function && function.is_a?(BELParser::Language::Function) raise( ArgumentError, %(function: expected Function, actual #{function.class})) end @function = function end
hash()
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 85 def hash [@function, @arguments].hash end
invalid?( spec = BELParser::Language.default_specification, uri_reader = BELParser::Resource.default_uri_reader, url_reader = BELParser::Resource.default_url_reader)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 77 def invalid?( spec = BELParser::Language.default_specification, uri_reader = BELParser::Resource.default_uri_reader, url_reader = BELParser::Resource.default_url_reader) !validation(spec, uri_reader, url_reader).valid? end
namespaces()
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 43 def namespaces @arguments.flat_map do |arg| case arg when Term arg.namespaces when Parameter arg.namespace end end end
to_s(form = :short)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 95 def to_s(form = :short) args = [@arguments].flatten.map { |arg| arg.to_s(form) }.join(',') case form when :short "#{@function.short}(#{args})" when :long "#{@function.long}(#{args})" else nil end end
valid?( spec = BELParser::Language.default_specification, uri_reader = BELParser::Resource.default_uri_reader, url_reader = BELParser::Resource.default_url_reader)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 69 def valid?( spec = BELParser::Language.default_specification, uri_reader = BELParser::Resource.default_uri_reader, url_reader = BELParser::Resource.default_url_reader) validation(spec, uri_reader, url_reader).valid? end
validation( spec = BELParser::Language.default_specification, uri_reader = BELParser::Resource.default_uri_reader, url_reader = BELParser::Resource.default_url_reader)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 54 def validation( spec = BELParser::Language.default_specification, uri_reader = BELParser::Resource.default_uri_reader, url_reader = BELParser::Resource.default_url_reader) validator = BELParser::Expression::Validator.new( spec, Hash[namespaces.map { |ns| [ns.keyword, ns] }], uri_reader, url_reader) _, _, _, result = validator.each(StringIO.new("#{to_s}\n")).first result end
Private Instance Methods
invalid_argument?(arg)
click to toggle source
# File lib/bel_parser/expression/model/term.rb, line 109 def invalid_argument?(arg) arg.nil? || [Parameter, Term].none? { |type| arg.is_a?(type) } end