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