summaryrefslogtreecommitdiff
path: root/lib/jcode.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/jcode.rb')
-rw-r--r--lib/jcode.rb208
1 files changed, 0 insertions, 208 deletions
diff --git a/lib/jcode.rb b/lib/jcode.rb
deleted file mode 100644
index 6d71518c70..0000000000
--- a/lib/jcode.rb
+++ /dev/null
@@ -1,208 +0,0 @@
-# jcode.rb - ruby code to handle japanese (EUC/SJIS) string
-
-$vsave, $VERBOSE = $VERBOSE, FALSE
-class String
- printf STDERR, "feel free for some warnings:\n" if $VERBOSE
-
- def jlength
- self.split(//).length
- end
-
- alias original_succ succ
- private :original_succ
-
- def mbchar?
- if $KCODE =~ /^s/i
- self =~ /[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]/n
- elsif $KCODE =~ /^e/i
- self =~ /[\xa1-\xfe][\xa1-\xfe]/n
- else
- false
- end
- end
-
- def succ
- if self[-2] && self[-2] & 0x80 != 0
- s = self.dup
- s[-1] += 1
- s[-1] += 1 if !s.mbchar?
- return s
- else
- original_succ
- end
- end
- alias next succ
-
- def upto(to)
- return if self > to
-
- curr = self
- tail = self[-2..-1]
- if tail.length == 2 and tail =~ /^.$/ then
- if self[0..-2] == to[0..-2]
- first = self[-2].chr
- for c in self[-1] .. to[-1]
- if (first+c.chr).mbchar?
- yield self[0..-2]+c.chr
- end
- end
- end
- else
- loop do
- yield curr
- return if curr == to
- curr = curr.succ
- return if curr.length > to.length
- end
- end
- return nil
- end
-
- def _expand_ch
- a = []
- self.scan(/(.|\n)-(.|\n)|(.|\n)/) do |r|
- if $3
- a.push $3
- elsif $1.length != $2.length
- next
- elsif $1.length == 1
- $1[0].upto($2[0]) { |c| a.push c.chr }
- else
- $1.upto($2) { |c| a.push c }
- end
- end
- a
- end
-
- def tr!(from, to)
- return self.delete!(from) if to.length == 0
-
- if from =~ /^\^/
- comp=TRUE
- from = $'
- end
- afrom = from._expand_ch
- ato = to._expand_ch
- i = 0
- if comp
- self.gsub!(/(.|\n)/) do |c|
- unless afrom.include?(c)
- ato[-1]
- else
- c
- end
- end
- else
- self.gsub!(/(.|\n)/) do |c|
- if i = afrom.index(c)
- if i < ato.size then ato[i] else ato[-1] end
- else
- c
- end
- end
- end
- end
-
- def tr(from, to)
- self.dup.tr!(from, to)
- end
-
- def delete!(del)
- if del =~ /^\^/
- comp=TRUE
- del = $'
- end
- adel = del._expand_ch
- if comp
- self.gsub!(/(.|\n)/) do |c|
- next unless adel.include?(c)
- c
- end
- else
- self.gsub!(/(.|\n)/) do |c|
- next if adel.include?(c)
- c
- end
- end
- end
-
- def delete(del)
- self.dup.delete!(del)
- end
-
- def squeeze!(del=nil)
- if del
- if del =~ /^\^/
- comp=TRUE
- del = $'
- end
- adel = del._expand_ch
- if comp
- self.gsub!(/(.|\n)\1+/) do
- next unless adel.include?($1)
- $&
- end
- else
- for c in adel
- cq = Regexp.quote(c)
- self.gsub!(/#{cq}(#{cq})+/, cq)
- end
- end
- self
- else
- self.gsub!(/(.|\n)\1+/, '\1')
- end
- end
-
- def squeeze(del=nil)
- self.dup.squeeze!(del)
- end
-
- def tr_s!(from, to)
- return self.delete!(from) if to.length == 0
- if from =~ /^\^/
- comp=TRUE
- from = $'
- end
- afrom = from._expand_ch
- ato = to._expand_ch
- i = 0
- c = nil
- last = nil
- self.gsub!(/(.|\n)/) do |c|
- if comp
- unless afrom.include?(c)
- ato[-1]
- else
- c
- end
- elsif i = afrom.index(c)
- c = if i < ato.size then ato[i] else ato[-1] end
- next if c == last
- last = c
- else
- last = nil
- c
- end
- end
- end
-
- def tr_s(from, to)
- self.dup.tr_s!(from,to)
- end
-
- alias original_chop! chop!
- private :original_chop!
-
- def chop!
- if self =~ /(.)$/ and $1.size == 2
- original_chop!
- end
- original_chop!
- end
-
- def chop
- self.dup.chop!
- end
-end
-$VERBOSE = $vsave