summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authortake_cheeze <[email protected]>2014-06-20 21:49:41 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-06-23 19:51:27 +0900
commit0a6b54acd63f0f396eda6e1e5e2366ce91a35d79 (patch)
treee00e2e7851905e2984fee2b24c75722e137cdc3f
parentc938b2f65647aae87a7bcfeb3a9462b90aaa0ce4 (diff)
downloadmruby-0a6b54acd63f0f396eda6e1e5e2366ce91a35d79.tar.gz
mruby-0a6b54acd63f0f396eda6e1e5e2366ce91a35d79.zip
Reduce new string creation in `capitalize`, `downcase`, `upcase` method of `Symbol` class extension.
Add test to check unmodified result is working.
-rw-r--r--mrbgems/mruby-symbol-ext/mrblib/symbol.rb6
-rw-r--r--mrbgems/mruby-symbol-ext/test/symbol.rb3
2 files changed, 6 insertions, 3 deletions
diff --git a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb
index 4cf18f647..b2615a760 100644
--- a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb
+++ b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb
@@ -25,7 +25,7 @@ class Symbol
# Same as <code>sym.to_s.capitalize.intern</code>.
def capitalize
- self.to_s.capitalize.intern
+ (self.to_s.capitalize! || self).to_sym
end
##
@@ -35,7 +35,7 @@ class Symbol
# Same as <code>sym.to_s.downcase.intern</code>.
def downcase
- self.to_s.downcase.intern
+ (self.to_s.downcase! || self).to_sym
end
##
@@ -45,7 +45,7 @@ class Symbol
# Same as <code>sym.to_s.upcase.intern</code>.
def upcase
- self.to_s.upcase.intern
+ (self.to_s.upcase! || self).to_sym
end
##
diff --git a/mrbgems/mruby-symbol-ext/test/symbol.rb b/mrbgems/mruby-symbol-ext/test/symbol.rb
index 59df7ea9d..c2695f1f8 100644
--- a/mrbgems/mruby-symbol-ext/test/symbol.rb
+++ b/mrbgems/mruby-symbol-ext/test/symbol.rb
@@ -19,14 +19,17 @@ end
assert("Symbol#capitalize") do
assert_equal :Hello, :hello.capitalize
assert_equal :Hello, :HELLO.capitalize
+ assert_equal :Hello, :Hello.capitalize
end
assert("Symbol#downcase") do
assert_equal :hello, :hEllO.downcase
+ assert_equal :hello, :hello.downcase
end
assert("Symbol#upcase") do
assert_equal :HELLO, :hEllO.upcase
+ assert_equal :HELLO, :HELLO.upcase
end
assert("Symbol#casecmp") do