diff options
| author | Tomoyuki Sahara <[email protected]> | 2013-12-27 15:23:03 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2013-12-27 15:30:20 +0900 |
| commit | 120a02c15dfe91451f01f1283ec53c207f2d39be (patch) | |
| tree | 8ec94cdc7eea205e592fdf92c88e24799b029e43 /mrbgems/mruby-string-ext/mrblib/string.rb | |
| parent | 14bff248c37fd54d0b4afc0f58e12cbc67978f8e (diff) | |
| download | mruby-120a02c15dfe91451f01f1283ec53c207f2d39be.tar.gz mruby-120a02c15dfe91451f01f1283ec53c207f2d39be.zip | |
add String#partition and String#rpartition.
Diffstat (limited to 'mrbgems/mruby-string-ext/mrblib/string.rb')
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index 005438b38..a517aa209 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -49,4 +49,26 @@ class String def casecmp(str) self.downcase <=> str.downcase end + + def partition(sep) + raise TypeError, "type mismatch: #{sep.class} given" unless sep.is_a? String + n = index(sep) + unless n.nil? + m = n + sep.size + [ slice(0, n), sep, slice(m, size - m) ] + else + [ self, "", "" ] + end + end + + def rpartition(sep) + raise TypeError, "type mismatch: #{sep.class} given" unless sep.is_a? String + n = rindex(sep) + unless n.nil? + m = n + sep.size + [ slice(0, n), sep, slice(m, size - m) ] + else + [ "", "", self ] + end + end end |
