=begin header
localization extension
IO supporting coding system conversion
$Author: igarashi $
$Date: 2001/01/02 00:21:18 $
Copyright (C) 1998-2001 Hiroshi IGARASHI
=end
require 'kconv'
#require 'uconv'
$vsave, $VERBOSE = $VERBOSE, FALSE
module Kernel
private
def println(*args)
=begin
print with ln
=end
STDOUT.println(*args)
end
def eprint(*args)
=begin
print to stderr
=end
STDERR.print(*args)
end
def eprintln(*args)
=begin
eprint with ln
=end
STDERR.println(*args)
end
end
# IO class extension
class IO
def println(*args)
=begin
print with ln
=end
if args.length > 0
print(*args)
end
print("\n")
end
public(:println)
end
class << ARGF
def lineno
$.
end
def path
filename
end
end
## available only if kconv ext module imported
if defined?(Kconv)
module Kernel
private
# lreadline
def lreadline(*arg)
Kconv.tointern(readline(*arg))
end
# lgets
def lgets(*arg)
ret = gets(*arg)
unless ret.nil?
Kconv.tointern(ret)
else
nil
end
end
def p(*args)
args.each { |arg|
println(Kconv.toextern(arg.inspect))
}
end
# lprint
def lprint(*args)
STDOUT.lprint(*args)
end
# lprint with ln
def lprintln(*args)
STDOUT.lprintln(*args)
end
# leprint
def leprint(*args)
STDERR.lprint(*args)
end
def leprintln(*args)
=begin
leprint with ln
=end
STDERR.lprintln(*args)
end
end
# Kconv module extension
module Kconv
## local encoding
case $KIOCODE
## EUC
when 'EUC'
alias_method(:toextern, :toeuc)
## JIS
when 'JIS'
alias_method(:toextern, :tojis)
## SJIS
when 'SJIS'
alias_method(:toextern, :tosjis)
else
case $KCODE
## EUC
when 'EUC'
alias_method(:toextern, :toeuc)
## JIS
when 'JIS'
alias_method(:toextern, :tojis)
## SJIS
when 'SJIS'
alias_method(:toextern, :tosjis)
when 'NONE'
def toextern(str)
str
end
else
raise "Unknown coding system(\"#{$KIOCODE}\")."
end
end
case $KCODE
## EUC
when 'EUC'
alias_method(:tointern, :toeuc)
## SJIS
when 'SJIS'
alias_method(:tointern, :tosjis)
when 'NONE'
def tointern(str)
str
end
else
raise "Unknown coding system(\"#{$KCODE}\")."
end
alias_method(:tolocal, :toextern)
module_function(:toextern, :tolocal, :tointern)
end
end
class << ARGF
if defined?(Kconv)
# lreadline
def lreadline(*arg)
Kconv.tointern(readline(*arg))
end
# lgets
def lgets(*arg)
ret = gets(*arg)
unless ret.nil?
Kconv.tointern(ret)
else
nil
end
end
end
end
class IO
if defined?(Kconv)
# lreadline
def lreadline(*arg)
Kconv.tointern(readline(*arg))
end
# lgets
def lgets(*arg)
ret = gets(*arg)
unless ret.nil?
Kconv.tointern(ret)
else
nil
end
end
# convert to local encoding and print
def lprint(*args)
args.each { |arg|
print(Kconv.toextern(arg.to_s))
}
end
def jisprint(*args)
args.each { |arg|
print(Kconv.tojis(arg.to_s))
}
end
def eucprint(*args)
args.each { |arg|
print(Kconv.toeuc(arg.to_s))
}
end
def sjisprint(*args)
args.each { |arg|
print(Kconv.tosjis(arg.to_s))
}
end
def lprintln(*args)
lprint(*args)
print("\n")
end
def set_codesys(codesys_name)
case codesys_name
## JIS
when 'JIS'
class << self
alias_method(:lprint, :jisprint)
end
## EUC
when 'EUC'
class << self
alias_method(:lprint, :eucprint)
end
## SJIS
when 'SJIS'
class << self
alias_method(:lprint, :sjisprint)
end
when 'NONE'
alias_method(:lprint, :print)
else
raise "Unknown coding system(\"#{codesys_name}\")."
end
end
public(:lreadline, :lprint, :lprintln)
end
end
$VERBOSE = $vsave
syntax highlighted by Code2HTML, v. 0.9.1