Modify self by replacing the content of self at
the position pos with value.
# File mrblib/string.rb, line 131
def []=(pos, value)
b = self[0, pos]
a = self[pos+1..-1]
self.replace([b, value, a].join(''))
end
Case-insensitive version of String#<=>.
"abcdef".casecmp("abcde") #=> 1 "aBcDeF".casecmp("abcdef") #=> 0 "abcdef".casecmp("abcdefg") #=> -1 "abcdef".casecmp("ABCDEF") #=> 0
# File mrbgems/mruby-string-ext/mrblib/string.rb, line 49
def casecmp(str)
self.downcase <=> str.downcase
end
Call the given block for each byte of self.
# File mrblib/string.rb, line 118
def each_byte(&block)
bytes = self.bytes
pos = 0
while(pos < bytes.size)
block.call(bytes[pos])
pos += 1
end
self
end
Call the given block for each character of self.
# File mrblib/string.rb, line 107
def each_char(&block)
pos = 0
while(pos < self.size)
block.call(self[pos])
pos += 1
end
self
end
Calls the given block for each line and pass the respective line.
ISO 15.2.10.5.15
# File mrblib/string.rb, line 12
def each_line(&block)
# expect that str.index accepts an Integer for 1st argument as a byte data
offset = 0
while(pos = self.index(0x0a, offset))
block.call(self[offset, pos + 1 - offset])
offset = pos + 1
end
block.call(self[offset, self.size - offset]) if self.size > offset
self
end
# File minirake, line 11
def ext(newext='')
return self.dup if ['.', '..'].include? self
if newext != ''
newext = (newext =~ /^\./) ? newext : ("." + newext)
end
self.chomp(File.extname(self)) << newext
end
Replace all matches of pattern with replacement.
Call block (if given) for each match and replace pattern with
the value of the block. Return the final value.
ISO 15.2.10.5.18
# File mrblib/string.rb, line 30
def gsub(*args, &block)
if args.size == 2
split(args[0], -1).join(args[1])
elsif args.size == 1 && block
split(args[0], -1).join(block.call(args[0]))
else
raise ArgumentError, "wrong number of arguments"
end
end
Replace all matches of pattern with replacement.
Call block (if given) for each match and replace pattern with
the value of the block. Modify self with the final value.
ISO 15.2.10.5.19
# File mrblib/string.rb, line 47
def gsub!(*args, &block)
str = self.gsub(*args, &block)
if str != self
self.replace(str)
self
else
nil
end
end
# File mrbgems/mruby-string-ext/mrblib/string.rb, line 2
def lstrip
a = 0
z = self.size - 1
a += 1 while " \f\n\r\t\v".include?(self[a]) and a <= z
(z >= 0) ? self[a..z] : ""
end
# File mrbgems/mruby-string-ext/mrblib/string.rb, line 24
def lstrip!
s = self.lstrip
(s == self) ? nil : self.replace(s)
end
# File minirake, line 19
def pathmap(spec=nil, &block)
return self if spec.nil?
result = ''
spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag|
case frag
when '%f'
result << File.basename(self)
when '%n'
result << File.basename(self).ext
when '%d'
result << File.dirname(self)
when '%x'
result << File.extname(self)
when '%X'
result << self.ext
when '%p'
result << self
when '%s'
result << (File::ALT_SEPARATOR || File::SEPARATOR)
when '%-'
# do nothing
when '%%'
result << "%"
when /%(-?\d+)d/
result << pathmap_partial($1.to_i)
when /^%\{([^}]*)\}(\d*[dpfnxX])/
patterns, operator = $1, $2
result << pathmap('%' + operator).pathmap_replace(patterns, &block)
when /^%/
fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'"
else
result << frag
end
end
result
end
# File mrbgems/mruby-string-ext/mrblib/string.rb, line 9
def rstrip
a = 0
z = self.size - 1
z -= 1 while " \f\n\r\t\v\00"".include?(self[z]) and a <= z
(z >= 0) ? self[a..z] : ""
end
# File mrbgems/mruby-string-ext/mrblib/string.rb, line 29
def rstrip!
s = self.rstrip
(s == self) ? nil : self.replace(s)
end
Calls the given block for each match of pattern If no block is
given return an array with all matches of pattern.
ISO 15.2.10.5.32
# File mrblib/string.rb, line 63
def scan(reg, &block)
### *** TODO *** ###
unless Object.const_defined?(:Regexp)
raise NotImplementedError, "scan not available (yet)"
end
end
# File mrbgems/mruby-string-ext/mrblib/string.rb, line 16
def strip
a = 0
z = self.size - 1
a += 1 while " \f\n\r\t\v".include?(self[a]) and a <= z
z -= 1 while " \f\n\r\t\v\00"".include?(self[z]) and a <= z
(z >= 0) ? self[a..z] : ""
end
# File mrbgems/mruby-string-ext/mrblib/string.rb, line 34
def strip!
s = self.strip
(s == self) ? nil : self.replace(s)
end
Replace only the first match of pattern with
replacement. Call block (if given) for each match and replace
pattern with the value of the block. Return the final value.
ISO 15.2.10.5.36
# File mrblib/string.rb, line 77
def sub(*args, &block)
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
end
Replace only the first match of pattern with
replacement. Call block (if given) for each match and replace
pattern with the value of the block. Modify self
with the final value.
ISO 15.2.10.5.37
# File mrblib/string.rb, line 94
def sub!(*args, &block)
str = self.sub(*args, &block)
if str != self
self.replace(str)
self
else
nil
end
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.