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