From 2249cf7c7ff6a7249e6961cdee22e8b40679b5ea Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Fri, 18 Jul 2014 22:30:07 +0900 Subject: [PATCH 1/2] Implement `Symbol#slice` and `Symbol#[]` in mruby-symbol-ext. --- mrbgems/mruby-symbol-ext/mrblib/symbol.rb | 6 ++++++ mrbgems/mruby-symbol-ext/test/symbol.rb | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb index 1e3d24b80..5c5e6000f 100644 --- a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +++ b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb @@ -62,4 +62,10 @@ class Symbol self.length == 0 end + def slice *args + to_s.slice(*args).to_sym + end + + alias [] slice + end diff --git a/mrbgems/mruby-symbol-ext/test/symbol.rb b/mrbgems/mruby-symbol-ext/test/symbol.rb index 6070d1418..a82f47a3f 100644 --- a/mrbgems/mruby-symbol-ext/test/symbol.rb +++ b/mrbgems/mruby-symbol-ext/test/symbol.rb @@ -46,3 +46,13 @@ end assert('Symbol#intern') do assert_equal :test, :test.intern end + +assert('Symbol#slice') do + assert_equal :a, :abc.slice(0) + assert_equal :ab, :abc.slice(0, 2) +end + +assert('Symbol#[]') do + assert_equal :a, :abc[0] + assert_equal :ab, :abc[0, 2] +end From 0bd391bc6fc829847c3054e0b7811b5622439a13 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Mon, 28 Jul 2014 16:23:05 +0900 Subject: [PATCH 2/2] Fix return type of symbol slicing. Thanks to @suzukake . --- mrbgems/mruby-symbol-ext/mrblib/symbol.rb | 2 +- mrbgems/mruby-symbol-ext/test/symbol.rb | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb index 5c5e6000f..432fc4539 100644 --- a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +++ b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb @@ -63,7 +63,7 @@ class Symbol end def slice *args - to_s.slice(*args).to_sym + to_s.slice(*args) end alias [] slice diff --git a/mrbgems/mruby-symbol-ext/test/symbol.rb b/mrbgems/mruby-symbol-ext/test/symbol.rb index a82f47a3f..4b6064070 100644 --- a/mrbgems/mruby-symbol-ext/test/symbol.rb +++ b/mrbgems/mruby-symbol-ext/test/symbol.rb @@ -48,11 +48,13 @@ assert('Symbol#intern') do end assert('Symbol#slice') do - assert_equal :a, :abc.slice(0) - assert_equal :ab, :abc.slice(0, 2) + assert_equal 'a', :abc.slice(0) + assert_equal 'ab', :abc.slice(0, 2) + assert_nil :abc.slice(4, 4) end assert('Symbol#[]') do - assert_equal :a, :abc[0] - assert_equal :ab, :abc[0, 2] + assert_equal 'a', :abc[0] + assert_equal 'ab', :abc[0, 2] + assert_nil :abc[4, 4] end