class Dentaku::AST::Modulo
def self.arity
def self.arity @arity end
def self.peek(input)
def self.peek(input) @arity = 1 @arity = 2 if input.length > 1 end
def self.precedence
def self.precedence 20 end
def dependencies(context = {})
def dependencies(context = {}) if percent? @right.dependencies(context) else super end end
def initialize(left, right = nil)
def initialize(left, right = nil) if right @left = left @right = right else @right = left end unless valid_left? raise NodeError.new(%i[numeric nil], left.type, :left), "#{self.class} requires numeric operands or nil" end unless valid_right? raise NodeError.new(:numeric, right.type, :right), "#{self.class} requires numeric operands" end end
def operator
def operator :% end
def percent?
def percent? left.nil? end
def valid_left?
def valid_left? valid_node?(left) || left.nil? end
def value(context = {})
def value(context = {}) if percent? cast(right.value(context)) * 0.01 else super end end