PHP 8.2.31
Preview: jcode.rb Size: 4.30 KB
//proc/thread-self/root/opt/alt/ruby18/lib64/ruby/1.8/jcode.rb

# jcode.rb - ruby code to handle japanese (EUC/SJIS) string

if $VERBOSE && $KCODE == "NONE"
  warn "Warning: $KCODE is NONE."
end

$vsave, $VERBOSE = $VERBOSE, false
class String
  warn "feel free for some warnings:\n" if $VERBOSE

  def _regex_quote(str)
    str.gsub(/(\\[\[\]\-\\])|\\(.)|([\[\]\\])/) do
      $1 || $2 || '\\' + $3
    end
  end
  private :_regex_quote

  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 = {}
  SUCC['s'] = Hash.new(1)
  for i in 0 .. 0x3f
    SUCC['s'][i.chr] = 0x40 - i
  end
  SUCC['s']["\x7e"] = 0x80 - 0x7e
  SUCC['s']["\xfd"] = 0x100 - 0xfd
  SUCC['s']["\xfe"] = 0x100 - 0xfe
  SUCC['s']["\xff"] = 0x100 - 0xff
  SUCC['e'] = Hash.new(1)
  for i in 0 .. 0xa0
    SUCC['e'][i.chr] = 0xa1 - i
  end
  SUCC['e']["\xfe"] = 2
  SUCC['u'] = Hash.new(1)
  for i in 0 .. 0x7f
    SUCC['u'][i.chr] = 0x80 - i
  end
  SUCC['u']["\xbf"] = 0x100 - 0xbf

  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

  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

  alias original_succ! succ!
  private :original_succ!

  alias original_succ succ
  private :original_succ

  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

  def succ
    str = self.dup
    str.succ! or str
  end

  private

  def _expand_ch str
    a = []
    str.scan(/(?:\\(.)|([^\\]))-(?:\\(.)|([^\\]))|(?:\\(.)|(.))/m) do
      from = $1 || $2
      to = $3 || $4
      one = $5 || $6
      if one
	a.push one
      elsif from.length != to.length
	next
      elsif from.length == 1
	from[0].upto(to[0]) { |c| a.push c.chr }
      else
	from.upto(to) { |c| a.push c }
      end
    end
    a
  end

  def expand_ch_hash from, to
    h = {}
    afrom = _expand_ch(from)
    ato = _expand_ch(to)
    afrom.each_with_index do |x,i| h[x] = ato[i] || ato[-1] end
    h
  end

  HashCache = {}
  TrPatternCache = {}
  DeletePatternCache = {}
  SqueezePatternCache = {}

  public

  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

  def tr(from, to)
    (str = self.dup).tr!(from, to) or str
  end

  def delete!(del)
    return nil if del == ""
    self.gsub!(DeletePatternCache[del] ||= /[#{_regex_quote(del)}]+/, '')
  end

  def delete(del)
    (str = self.dup).delete!(del) or str
  end

  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

  def squeeze(del=nil)
    (str = self.dup).squeeze!(del) or str
  end

  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

  def tr_s(from, to)
    (str = self.dup).tr_s!(from,to) or str
  end

  def chop!
    self.gsub!(/(?:.|\r?\n)\z/, '')
  end

  def chop
    (str = self.dup).chop! or str
  end

  def jlength
    self.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
  end
  alias jsize jlength

  def jcount(str)
    self.delete("^#{str}").jlength
  end

  def each_char
    if block_given?
      scan(/./m) do |x|
        yield x
      end
    else
      scan(/./m)
    end
  end

end
$VERBOSE = $vsave

Directory Contents

Dirs: 27 × Files: 83

Name Size Perms Modified Actions
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
cgi DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
date DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
digest DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
dl DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
drb DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
io DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
irb DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
net DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
openssl DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
optparse DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
racc DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
rdoc DIR
- drwxr-xr-x 2024-03-03 22:48:17
Edit Download
rexml DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
rinda DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
rss DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
runit DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
shell DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
soap DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
test DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
uri DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
webrick DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
wsdl DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
- drwxr-xr-x 2024-03-03 22:50:34
Edit Download
xmlrpc DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
xsd DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
yaml DIR
- drwxr-xr-x 2024-03-03 22:48:14
Edit Download
2.50 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
3.37 KB lrw-r--r-- 2007-07-16 15:47:16
Edit Download
17.73 KB lrw-r--r-- 2008-02-10 15:24:56
Edit Download
6.89 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
73.74 KB lrw-r--r-- 2009-12-14 02:40:07
Edit Download
12.84 KB lrw-r--r-- 2009-08-03 05:59:38
Edit Download
24.46 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
53.02 KB lrw-r--r-- 2010-06-08 04:45:42
Edit Download
128 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
20.61 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
8.81 KB lrw-r--r-- 2009-07-16 00:35:14
Edit Download
1.12 KB lrw-r--r-- 2007-07-28 00:40:58
Edit Download
19 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
4.04 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
5.60 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
274 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
21.38 KB lrw-r--r-- 2009-02-23 17:44:50
Edit Download
487 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
633 B lrw-r--r-- 2008-02-18 01:17:44
Edit Download
42.23 KB lrw-r--r-- 2011-05-20 22:29:13
Edit Download
5.38 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.84 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
6.16 KB lrw-r--r-- 2008-06-06 08:05:24
Edit Download
6.17 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
8.10 KB lrw-r--r-- 2008-04-10 10:52:50
Edit Download
14.88 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
2.25 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
6.43 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
590 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
21.96 KB lrw-r--r-- 2008-07-12 15:08:29
Edit Download
7.43 KB lrw-r--r-- 2009-08-09 08:44:15
Edit Download
4.30 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
8.12 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
17.59 KB lrw-r--r-- 2011-05-30 02:08:57
Edit Download
1.28 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
5.42 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
27.21 KB lrw-r--r-- 2009-01-24 15:02:50
Edit Download
411 B lrw-r--r-- 2007-03-06 10:09:51
Edit Download
50.65 KB lrw-r--r-- 2010-12-04 06:34:10
Edit Download
7.93 KB lrw-r--r-- 2009-11-25 07:45:29
Edit Download
2.07 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
5.15 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
20.49 KB lrw-r--r-- 2007-10-08 11:16:54
Edit Download
2.10 KB lrw-r--r-- 2009-12-14 04:28:06
Edit Download
575 B lrw-r--r-- 2010-11-22 07:21:45
Edit Download
47.12 KB lrw-r--r-- 2009-02-20 11:43:35
Edit Download
3.35 KB lrw-r--r-- 2009-05-26 12:06:21
Edit Download
1.55 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.33 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
29.39 KB lrw-r--r-- 2010-11-23 08:21:08
Edit Download
1.48 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
15.97 KB lrw-r--r-- 2007-06-07 10:06:41
Edit Download
18.33 KB lrw-r--r-- 2007-02-16 19:53:09
Edit Download
90 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.59 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
11.15 KB lrw-r--r-- 2008-06-06 08:05:24
Edit Download
12.05 KB lrw-r--r-- 2010-06-08 05:02:31
Edit Download
835 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.55 KB lrw-r--r-- 2008-08-08 01:58:40
Edit Download
56.83 KB lrw-r--r-- 2010-12-23 03:22:57
Edit Download
504 B lrw-r--r-- 2007-10-21 12:19:43
Edit Download
180 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
20.63 KB lrw-r--r-- 2009-01-20 03:23:46
Edit Download
4.27 KB lrw-r--r-- 2011-12-10 12:17:33
Edit Download
27.08 KB lrw-r--r-- 2008-06-09 09:20:43
Edit Download
418 B lrw-r--r-- 2007-03-06 10:09:51
Edit Download
4.66 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
3.99 KB lrw-r--r-- 2008-03-21 12:16:15
Edit Download
8.08 KB lrw-r--r-- 2008-07-03 11:14:50
Edit Download
6.09 KB lrw-r--r-- 2009-02-19 16:41:12
Edit Download
4.86 KB lrw-r--r-- 2008-04-21 09:43:44
Edit Download
104 B lrw-r--r-- 2007-02-13 19:39:32
Edit Download
4.32 KB lrw-r--r-- 2010-06-08 07:08:15
Edit Download
31.58 KB lrw-r--r-- 2008-06-06 08:05:24
Edit Download
3.00 KB lrw-r--r-- 2010-06-08 06:24:25
Edit Download
3.69 KB lrw-r--r-- 2009-01-26 02:12:10
Edit Download
2.73 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
7.99 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
4.54 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
710 B lrw-r--r-- 2008-04-15 09:41:47
Edit Download
2.68 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
811 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
12.36 KB lrw-r--r-- 2008-04-19 11:45:39
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).