From 2249cf7c7ff6a7249e6961cdee22e8b40679b5ea Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Fri, 18 Jul 2014 22:30:07 +0900 Subject: [PATCH] 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