From e300ac8e3a100aa9538560700050dc3df6cdb09d Mon Sep 17 00:00:00 2001 From: Rob Date: Sun, 2 Dec 2018 18:38:40 -0500 Subject: Adds Module#< and Module#<= --- mrbgems/mruby-class-ext/mrblib/module.rb | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 mrbgems/mruby-class-ext/mrblib/module.rb (limited to 'mrbgems/mruby-class-ext/mrblib') diff --git a/mrbgems/mruby-class-ext/mrblib/module.rb b/mrbgems/mruby-class-ext/mrblib/module.rb new file mode 100644 index 000000000..d35b4cbae --- /dev/null +++ b/mrbgems/mruby-class-ext/mrblib/module.rb @@ -0,0 +1,39 @@ +class Module + + ## + # call-seq: + # mod < other -> true, false, or nil + # + # Returns true if mod is a subclass of other. Returns + # nil if there's no relationship between the two. + # (Think of the relationship in terms of the class definition: + # "class A < B" implies "A < B".) + # + def <(other) + raise TypeError, 'compared with non class/module' unless other.is_a?(Module) + if self.equal?(other) + false + else + self <= other + end + end + + ## + # call-seq: + # mod <= other -> true, false, or nil + # + # Returns true if mod is a subclass of other or + # is the same as other. Returns + # nil if there's no relationship between the two. + # (Think of the relationship in terms of the class definition: + # "class A < B" implies "A < B".) + def <=(other) + raise TypeError, 'compared with non class/module' unless other.is_a?(Module) + if self.ancestors.include?(other) + return true + elsif other.ancestors.include?(self) + return false + end + end + +end -- cgit v1.2.3