diff --git a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb index c2166a9b9..821cb1d2a 100644 --- a/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +++ b/mrbgems/mruby-symbol-ext/mrblib/symbol.rb @@ -69,4 +69,10 @@ class Symbol self.length == 0 end + def slice *args + to_s.slice(*args) + end + + alias [] slice + end diff --git a/mrbgems/mruby-symbol-ext/test/symbol.rb b/mrbgems/mruby-symbol-ext/test/symbol.rb index 239f8c270..2dd26467d 100644 --- a/mrbgems/mruby-symbol-ext/test/symbol.rb +++ b/mrbgems/mruby-symbol-ext/test/symbol.rb @@ -53,3 +53,15 @@ 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) + assert_nil :abc.slice(4, 4) +end + +assert('Symbol#[]') do + assert_equal 'a', :abc[0] + assert_equal 'ab', :abc[0, 2] + assert_nil :abc[4, 4] +end