summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mrbgems/default.gembox6
-rw-r--r--mrbgems/mruby-complex/mrbgem.rake1
-rw-r--r--mrbgems/mruby-rational/mrbgem.rake1
-rw-r--r--mrbgems/mruby-rational/mrblib/rational.rb12
-rw-r--r--mrbgems/mruby-rational/test/rational.rb15
5 files changed, 29 insertions, 6 deletions
diff --git a/mrbgems/default.gembox b/mrbgems/default.gembox
index ae085309c..23e65fcee 100644
--- a/mrbgems/default.gembox
+++ b/mrbgems/default.gembox
@@ -68,12 +68,6 @@ MRuby::GemBox.new do |conf|
# Use Enumerator::Lazy class (require mruby-enumerator)
conf.gem :core => "mruby-enum-lazy"
- # Use Complex class
- # conf.gem :core => "mruby-complex"
-
- # Use Rational class
- # conf.gem :core => "mruby-rational"
-
# Use toplevel object (main) methods extension
conf.gem :core => "mruby-toplevel-ext"
diff --git a/mrbgems/mruby-complex/mrbgem.rake b/mrbgems/mruby-complex/mrbgem.rake
index 25b8966da..19612e74d 100644
--- a/mrbgems/mruby-complex/mrbgem.rake
+++ b/mrbgems/mruby-complex/mrbgem.rake
@@ -3,6 +3,7 @@ MRuby::Gem::Specification.new('mruby-complex') do |spec|
spec.author = 'mruby developers'
spec.summary = 'Complex class'
+ spec.add_dependency 'mruby-metaprog', core: 'mruby-metaprog'
spec.add_dependency 'mruby-object-ext', core: 'mruby-object-ext'
spec.add_dependency 'mruby-numeric-ext', core: 'mruby-numeric-ext'
spec.add_dependency 'mruby-math', core: 'mruby-math'
diff --git a/mrbgems/mruby-rational/mrbgem.rake b/mrbgems/mruby-rational/mrbgem.rake
index 496082709..93f5b601c 100644
--- a/mrbgems/mruby-rational/mrbgem.rake
+++ b/mrbgems/mruby-rational/mrbgem.rake
@@ -3,6 +3,7 @@ MRuby::Gem::Specification.new('mruby-rational') do |spec|
spec.author = 'mruby developers'
spec.summary = 'Rational class'
+ spec.add_dependency 'mruby-metaprog', core: 'mruby-metaprog'
spec.add_dependency 'mruby-object-ext', core: 'mruby-object-ext'
spec.add_dependency 'mruby-numeric-ext', core: 'mruby-numeric-ext'
end
diff --git a/mrbgems/mruby-rational/mrblib/rational.rb b/mrbgems/mruby-rational/mrblib/rational.rb
index ffadd55eb..7d5b87362 100644
--- a/mrbgems/mruby-rational/mrblib/rational.rb
+++ b/mrbgems/mruby-rational/mrblib/rational.rb
@@ -10,6 +10,18 @@ class Rational < Numeric
"(#{to_s})"
end
+ def to_f
+ @numerator.to_f / @denominator.to_f
+ end
+
+ def to_i
+ to_f.to_i
+ end
+
+ def to_r
+ self
+ end
+
def to_s
"#{numerator}/#{denominator}"
end
diff --git a/mrbgems/mruby-rational/test/rational.rb b/mrbgems/mruby-rational/test/rational.rb
index a86f00690..85cebc316 100644
--- a/mrbgems/mruby-rational/test/rational.rb
+++ b/mrbgems/mruby-rational/test/rational.rb
@@ -9,6 +9,21 @@ assert 'Rational' do
assert_equal [r.numerator, r.denominator], [5, 1]
end
+assert 'Rational#to_f' do
+ assert_float Rational(2).to_f, 2.0
+ assert_float Rational(9, 4).to_f, 2.25
+ assert_float Rational(-3, 4).to_f, -0.75
+ assert_float Rational(20, 3).to_f, 6.666666666666667
+end
+
+assert 'Rational#to_i' do
+ assert_equal Rational(2, 3).to_i, 0
+ assert_equal Rational(3).to_i, 3
+ assert_equal Rational(300.6).to_i, 300
+ assert_equal Rational(98, 71).to_i, 1
+ assert_equal Rational(-30, 2).to_i, -15
+end
+
assert 'Rational#*' do
assert_rational Rational(2, 3) * Rational(2, 3), Rational(4, 9)
assert_rational Rational(900) * Rational(1), Rational(900, 1)