lib/rulp/lv.rb in rulp-0.0.2 vs lib/rulp/lv.rb in rulp-0.0.5
- old
+ new
@@ -11,12 +11,12 @@
def to_proc
->(index){ send(self.meth(index)) }
end
- def meth(index)
- "#{self.name}#{index}_#{self.suffix}"
+ def meth(*args)
+ "#{self.name}#{args.join("_")}_#{self.suffix}"
end
def suffix
"f"
end
@@ -29,11 +29,19 @@
return self.definition(name)
end
def self.definition(name)
self.class.send(:define_method, name){
- LV::names_table["#{name}#{self}"] if LV::names_table["#{name}#{self}"].class == self
+ defined = LV::names_table["#{name}"]
+ if defined && defined.class != self
+ raise StandardError.new("ERROR:\n#{name} was already defined as a variable of type #{defined.class}."+
+ "You are trying to redefine it as a variable of type #{self}")
+ elsif(!defined)
+ self.new(name)
+ else
+ defined
+ end
}
return self.send(name) || self.new(name)
end
def * (numeric)
@@ -52,14 +60,21 @@
def + (expressions)
Expressions[self] + Expressions[expressions]
end
def value
+ return nil unless @value
if self.class == BV
return @value.round(2) == 1
+ elsif self.class == IV
+ return @value
else
@value
end
+ end
+
+ def inspect
+ "#{name}(#{suffix})[#{value || 'undefined'}]"
end
end
class BV < LV;
def suffix
\ No newline at end of file