Object
# File jcode.rb, line 192
def chop!
self.gsub!(/(?:.|\r?\n)\z/, '')
end
# File jcode.rb, line 156
def delete(del)
(str = self.dup).delete!(del) or str
end
# File jcode.rb, line 151
def delete!(del)
return nil if del == ""
self.gsub!(DeletePatternCache[del] ||= /[#{_regex_quote(del)}]+/, '')
end
# File jcode.rb, line 209
def each_char
if block_given?
scan(/./m) do |x|
yield x
end
else
scan(/./m)
end
end
# File jcode.rb, line 59
def end_regexp
case $KCODE[0]
when ?s, ?S
/#{PATTERN_SJIS}$/on
when ?e, ?E
/#{PATTERN_EUC}$/on
when ?u, ?U
/#{PATTERN_UTF8}$/on
else
/.$/on
end
end
# File jcode.rb, line 205
def jcount(str)
self.delete("^#{str}").jlength
end
# File jcode.rb, line 200
def jlength
self.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
end
# File jcode.rb, line 46
def mbchar?
case $KCODE[0]
when ?s, ?S
self =~ RE_SJIS
when ?e, ?E
self =~ RE_EUC
when ?u, ?U
self =~ RE_UTF8
else
nil
end
end
# File jcode.rb, line 171
def squeeze(del=nil)
(str = self.dup).squeeze!(del) or str
end
# File jcode.rb, line 160
def squeeze!(del=nil)
return nil if del == ""
pattern =
if del
SqueezePatternCache[del] ||= /([#{_regex_quote(del)}])\1+/
else
/(.|\n)\1+/
end
self.gsub!(pattern, '\1')
end
# File jcode.rb, line 92
def succ
str = self.dup
str.succ! or str
end
# File jcode.rb, line 78
def succ!
reg = end_regexp
if $KCODE != 'NONE' && self =~ reg
succ_table = SUCC[$KCODE[0,1].downcase]
begin
self[-1] += succ_table[self[-1]]
self[-2] += 1 if self[-1] == 0
end while self !~ reg
self
else
original_succ!
end
end
# File jcode.rb, line 147
def tr(from, to)
(str = self.dup).tr!(from, to) or str
end
# File jcode.rb, line 133
def tr!(from, to)
return nil if from == ""
return self.delete!(from) if to == ""
pattern = TrPatternCache[from] ||= /[#{_regex_quote(from)}]/
if from[0] == ?^
last = /.$/.match(to)[0]
self.gsub!(pattern, last)
else
h = HashCache[from + "1-0" + to] ||= expand_ch_hash(from, to)
self.gsub!(pattern) do |c| h[c] end
end
end
# File jcode.rb, line 188
def tr_s(from, to)
(str = self.dup).tr_s!(from,to) or str
end
# File jcode.rb, line 175
def tr_s!(from, to)
return self.delete!(from) if to.length == 0
pattern = SqueezePatternCache[from] ||= /([#{_regex_quote(from)}])\1*/
if from[0] == ?^
last = /.$/.match(to)[0]
self.gsub!(pattern, last)
else
h = HashCache[from + "1-0" + to] ||= expand_ch_hash(from, to)
self.gsub!(pattern) do h[$1] end
end
end