diff options
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 28 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/test/string.rb | 8 |
2 files changed, 32 insertions, 4 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index c61f427dc..ff113dd95 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -275,8 +275,8 @@ class String def ljust(idx, padstr = ' ') raise ArgumentError, 'zero width padding' if padstr == '' return self if idx <= self.size - pad_repetitions = (idx / padstr.length).ceil - padding = (padstr * pad_repetitions)[0...(idx - self.length)] + pad_repetitions = idx / padstr.size + padding = (padstr * pad_repetitions)[0, idx-self.size] self + padding end @@ -294,11 +294,31 @@ class String def rjust(idx, padstr = ' ') raise ArgumentError, 'zero width padding' if padstr == '' return self if idx <= self.size - pad_repetitions = (idx / padstr.length).ceil - padding = (padstr * pad_repetitions)[0...(idx - self.length)] + pad_repetitions = idx / padstr.size + padding = (padstr * pad_repetitions)[0, idx-self.size] padding + self end + ## + # call-seq: + # str.center(width, padstr=' ') -> new_str + # + # Centers +str+ in +width+. If +width+ is greater than the length of +str+, + # returns a new String of length +width+ with +str+ centered and padded with + # +padstr+; otherwise, returns +str+. + # + # "hello".center(4) #=> "hello" + # "hello".center(20) #=> " hello " + # "hello".center(20, '123') #=> "1231231hello12312312" + def center(width, padstr = ' ') + raise ArgumentError, 'zero width padding' if padstr == '' + return self if width <= self.size + width -= self.size + pad1 = width / 2 + pad2 = width - pad1 + (padstr*pad1)[0,pad1] + self + (padstr*pad2)[0,pad2] + end + def chars(&block) if block_given? self.split('').each do |i| diff --git a/mrbgems/mruby-string-ext/test/string.rb b/mrbgems/mruby-string-ext/test/string.rb index 3f11c00a0..7be673aa6 100644 --- a/mrbgems/mruby-string-ext/test/string.rb +++ b/mrbgems/mruby-string-ext/test/string.rb @@ -474,6 +474,14 @@ assert('String#rjust') do assert_equal "hello", "hello".rjust(-3) end +assert('String#center') do + assert_equal "hello", "hello".center(4) + assert_equal " hello ", "hello".center(20) + assert_equal 20, "hello".center(20).length + assert_equal "1231231hello12312312", "hello".center(20, '123') + assert_equal "hello", "hello".center(-3) +end + if UTF8STRING assert('String#ljust with UTF8') do assert_equal "helloん ", "helloん".ljust(20) |
