summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-class-ext/mrblib/module.rb
diff options
context:
space:
mode:
Diffstat (limited to 'mrbgems/mruby-class-ext/mrblib/module.rb')
-rw-r--r--mrbgems/mruby-class-ext/mrblib/module.rb39
1 files changed, 39 insertions, 0 deletions
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 <i>mod</i> is a subclass of <i>other</i>. Returns
+ # <code>nil</code> 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 <i>mod</i> is a subclass of <i>other</i> or
+ # is the same as <i>other</i>. Returns
+ # <code>nil</code> 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