lib/dao/mode.rb in dao-5.0.0 vs lib/dao/mode.rb in dao-5.1.1
- old
+ new
@@ -37,31 +37,38 @@
end
end
# instance methods
#
- def cases
- @cases ||= []
+ def aliases
+ @aliases ||= []
end
+ def Mode.alias(a, b)
+ a, b = Mode.for(a), Mode.for(b)
+ a.aliases.push(b) unless a.aliases.include?(b)
+ b.aliases.push(a) unless b.aliases.include?(a)
+ (a.aliases + b.aliases).uniq
+ end
+
def case_of?(other)
- self == other or other.cases.include?(self)
+ a, b = self, Mode.for(other)
+ a == b or a.aliases.include?(b) or b.aliases.include?(a)
end
def ===(other)
case_of?(other)
end
- Read = %w( options get head )
- Write = %w( post put delete trace connect )
- Http = Read + Write
- Http.each do |verb|
- Mode.add(verb)
- end
+ # setup mode singletons and their aliases
+ #
+ HTTP = ( READ = %w[ get options head ] ) + ( WRITE = %w[ post put delete trace connect ] )
Mode.add(:read)
- Read.each{|m| Mode.read.cases.push(Mode.send(m))}
-
Mode.add(:write)
- Write.each{|m| Mode.write.cases.push(Mode.send(m))}
+
+ HTTP.each{|verb| Mode.add(verb)}
+
+ Mode.alias(:read, :get)
+ Mode.alias(:write, :post)
end
end