Class: String
- Inherits:
-
Object
- Object
- String
- Defined in:
- lib/jcode.rb
Constant Summary collapse
- PATTERN_SJIS =
'[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]'
- PATTERN_EUC =
'[\xa1-\xfe][\xa1-\xfe]'
- PATTERN_UTF8 =
'[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf]'
- RE_SJIS =
Regexp.new(PATTERN_SJIS, 0, 'n')
- RE_EUC =
Regexp.new(PATTERN_EUC, 0, 'n')
- RE_UTF8 =
Regexp.new(PATTERN_UTF8, 0, 'n')
- SUCC =
{}
- HashCache =
{}
- TrPatternCache =
{}
- DeletePatternCache =
{}
- SqueezePatternCache =
{}
Instance Method Summary collapse
- #chop ⇒ Object
- #chop! ⇒ Object
- #delete(del) ⇒ Object
- #delete!(del) ⇒ Object
- #each_char ⇒ Object
- #end_regexp ⇒ Object
- #jcount(str) ⇒ Object
- #jlength ⇒ Object (also: #jsize)
- #mbchar? ⇒ Boolean
- #squeeze(del = nil) ⇒ Object
- #squeeze!(del = nil) ⇒ Object
- #succ ⇒ Object (also: #original_succ)
- #succ! ⇒ Object (also: #original_succ!)
- #tr(from, to) ⇒ Object
- #tr!(from, to) ⇒ Object
- #tr_s(from, to) ⇒ Object
- #tr_s!(from, to) ⇒ Object
Instance Method Details
#chop ⇒ Object
196 197 198 |
# File 'lib/jcode.rb', line 196 def chop (str = self.dup).chop! or str end |
#chop! ⇒ Object
192 193 194 |
# File 'lib/jcode.rb', line 192 def chop! self.gsub!(/(?:.|\r?\n)\z/, '') end |
#delete(del) ⇒ Object
156 157 158 |
# File 'lib/jcode.rb', line 156 def delete(del) (str = self.dup).delete!(del) or str end |
#delete!(del) ⇒ Object
151 152 153 154 |
# File 'lib/jcode.rb', line 151 def delete!(del) return nil if del == "" self.gsub!(DeletePatternCache[del] ||= /[#{_regex_quote(del)}]+/, '') end |
#each_char ⇒ Object
209 210 211 212 213 214 215 216 217 |
# File 'lib/jcode.rb', line 209 def each_char if block_given? scan(/./m) do |x| yield x end else scan(/./m) end end |
#end_regexp ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/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 |
#jcount(str) ⇒ Object
205 206 207 |
# File 'lib/jcode.rb', line 205 def jcount(str) self.delete("^#{str}").jlength end |
#jlength ⇒ Object Also known as: jsize
200 201 202 |
# File 'lib/jcode.rb', line 200 def jlength self.gsub(/[^\Wa-zA-Z_\d]/, ' ').length end |
#mbchar? ⇒ Boolean
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/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 |
#squeeze(del = nil) ⇒ Object
171 172 173 |
# File 'lib/jcode.rb', line 171 def squeeze(del=nil) (str = self.dup).squeeze!(del) or str end |
#squeeze!(del = nil) ⇒ Object
160 161 162 163 164 165 166 167 168 169 |
# File 'lib/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 |
#succ ⇒ Object Also known as: original_succ
92 93 94 95 |
# File 'lib/jcode.rb', line 92 def succ str = self.dup str.succ! or str end |
#succ! ⇒ Object Also known as: original_succ!
78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/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 |
#tr(from, to) ⇒ Object
147 148 149 |
# File 'lib/jcode.rb', line 147 def tr(from, to) (str = self.dup).tr!(from, to) or str end |
#tr!(from, to) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/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] ||= (from, to) self.gsub!(pattern) do |c| h[c] end end end |
#tr_s(from, to) ⇒ Object
188 189 190 |
# File 'lib/jcode.rb', line 188 def tr_s(from, to) (str = self.dup).tr_s!(from,to) or str end |
#tr_s!(from, to) ⇒ Object
175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/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] ||= (from, to) self.gsub!(pattern) do h[$1] end end end |