mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Added String#sub/sub! and String#gsub/gsub!
This commit is contained in:
+10
-12
@@ -28,14 +28,13 @@ class String
|
||||
#
|
||||
# ISO 15.2.10.5.18
|
||||
def gsub(*args, &block)
|
||||
unless (args.size == 1 && block) || args.size == 2
|
||||
if args.size == 2
|
||||
split(args[0]).join(args[1])
|
||||
elsif args.size == 1 && block
|
||||
split(args[0]).join(block.call(args[0]))
|
||||
else
|
||||
raise ArgumentError, "wrong number of arguments"
|
||||
end
|
||||
|
||||
### *** TODO *** ###
|
||||
unless Object.const_defined?(:Regexp)
|
||||
raise NotImplementedError, "gsub not available (yet)"
|
||||
end
|
||||
end
|
||||
|
||||
##
|
||||
@@ -76,14 +75,13 @@ class String
|
||||
#
|
||||
# ISO 15.2.10.5.36
|
||||
def sub(*args, &block)
|
||||
unless (args.size == 1 && block) || args.size == 2
|
||||
if args.size == 2
|
||||
split(args[0], 2).join(args[1])
|
||||
elsif args.size == 1 && block
|
||||
split(args[0], 2).join(block.call(args[0]))
|
||||
else
|
||||
raise ArgumentError, "wrong number of arguments"
|
||||
end
|
||||
|
||||
### *** TODO *** ###
|
||||
unless Object.const_defined?(:Regexp)
|
||||
raise NotImplementedError, "sub not available (yet)"
|
||||
end
|
||||
end
|
||||
|
||||
##
|
||||
|
||||
+25
-4
@@ -192,9 +192,19 @@ assert('String#eql?', '15.2.10.5.17') do
|
||||
'abc'.eql?('abc') and not 'abc'.eql?('cba')
|
||||
end
|
||||
|
||||
# TODO ATM broken assert('String#gsub', '15.2.10.5.18') do
|
||||
assert('String#gsub', '15.2.10.5.18') do
|
||||
'abcabc'.gsub('b', 'B') == 'aBcaBc' && 'abcabc'.gsub('b') { |w| w.capitalize } == 'aBcaBc'
|
||||
end
|
||||
|
||||
# TODO ATM broken assert('String#gsub!', '15.2.10.5.19') do
|
||||
assert('String#gsub!', '15.2.10.5.19') do
|
||||
a = 'abcabc'
|
||||
a.gsub!('b', 'B')
|
||||
|
||||
b = 'abcabc'
|
||||
b.gsub!('b') { |w| w.capitalize }
|
||||
|
||||
a == 'aBcaBc' && b == 'aBcaBc'
|
||||
end
|
||||
|
||||
assert('String#hash', '15.2.10.5.20') do
|
||||
a = 'abc'
|
||||
@@ -307,9 +317,20 @@ assert('String#split', '15.2.10.5.35') do
|
||||
'abc'.split("") == ['a', 'b', 'c']
|
||||
end
|
||||
|
||||
# TODO ATM broken assert('String#sub', '15.2.10.5.36') do
|
||||
assert('String#sub', '15.2.10.5.36') do
|
||||
'abcabc'.sub('b', 'B') == 'aBcabc' && 'abcabc'.sub('b') { |w| w.capitalize } == 'aBcabc'
|
||||
end
|
||||
|
||||
assert('String#sub!', '15.2.10.5.37') do
|
||||
a = 'abcabc'
|
||||
a.sub!('b', 'B')
|
||||
|
||||
b = 'abcabc'
|
||||
b.sub!('b') { |w| w.capitalize }
|
||||
|
||||
a == 'aBcabc' && b == 'aBcabc'
|
||||
end
|
||||
|
||||
# TODO ATM broken assert('String#sub!', '15.2.10.5.37') do
|
||||
|
||||
assert('String#to_i', '15.2.10.5.38') do
|
||||
a = ''.to_i
|
||||
|
||||
Reference in New Issue
Block a user