lib/yargi/markable.rb in yargi-0.1.1 vs lib/yargi/markable.rb in yargi-0.1.2

- old
+ new

@@ -11,10 +11,15 @@ # Tag this element with some modules def tag(*modules) modules.each {|mod| self.extend(mod)} end + + # Checks if a given mark exists + def has_mark?(key) + @marks and @marks.has_key?(key) + end # Returns the mark value installed under _key_. Returns nil if no such mark. def get_mark(key) @marks ? @marks[key] : nil; end @@ -36,11 +41,15 @@ end end alias :[]= :set_mark # Add all marks provided by a Hash instance _marks_. - def add_marks(marks) - marks.each_pair {|k,v| self[k]=v} + def add_marks(marks=nil) + marks.each_pair {|k,v| self[k]=v} if marks + if block_given? + result = yield self + add_marks(result) if Hash===result + end end alias :merge_marks :add_marks # Converts this Markable to a Hash. When _nonil_ is true, nil mark values # do not lead to hash entries. \ No newline at end of file