Sha256: fe73dfcb75e09bc05964f7c7dc0d77a56b3c4cbc5b73e5c9ed3f7c0c7de63d4e
Contents?: true
Size: 934 Bytes
Versions: 1
Compression:
Stored size: 934 Bytes
Contents
module PM # A ListContainer responds to messages that manipulate the cursors for one # or more List objects. module ListContainer def method_missing(sym, *args) case sym.to_s when /^curr_(\w+)=$/ name = $1 ivar_sym = "@#{pluralize(name)}".to_sym raise "no such ivar #{ivar_sym} in #{self.class}" unless instance_variable_defined?(ivar_sym) instance_variable_get(ivar_sym).send(:curr=, args[0]) when /^(first|next|prev|curr|last)_(\w+)(\?)?$/ method, ivar, qmark = $1, $2, $3 ivar_sym = "@#{pluralize(ivar)}".to_sym raise "no such ivar #{ivar_sym} in #{self.class}" unless instance_variable_defined?(ivar_sym) instance_variable_get(ivar_sym).send("#{method}#{qmark}".to_sym) else super end end def pluralize(str) case str when /s$/, /ch$/ "#{str}es" when /y$/ "#{str[0..-2]}ies}" else "#{str}s" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
patchmaster-0.0.0 | lib/patchmaster/list_container.rb |