[#34991] a = 4 ; p((a < 3) or (a > 5)) — Take_tk <ggb03124@...>

 次のものがエラーになるのは何故なんでしょうか?

12 messages 2002/05/06

[#35028] win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp>

小西 弘将です。

20 messages 2002/05/09
[#35034] Re: win32.c 中の my* 関数について — nobu.nakada@... 2002/05/10

なかだです。

[#35042] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/11

 小西 弘将です。

[#35044] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/11

 小西 弘将です。

[#35045] Re: win32.c 中の my* 関数について — "U.Nakamura" <usa@...> 2002/05/11

こんにちは、なかむら(う)です。

[#35046] Re: win32.c 中の my* 関数について — nobu.nakada@... 2002/05/11

なかだです。

[#35047] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/11

 小西 弘将です。

[#35048] Re: win32.c 中の my* 関数について — nobu.nakada@... 2002/05/11

なかだです。

[#35062] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/12

 小西 弘将です。

[#35052] ruby_lib/html/ — Wakou Aoyama <wakou@...>

青山です。

32 messages 2002/05/11
[#35057] Re: ruby_lib/html/ — TN <nyonyoru@...> 2002/05/12

 にょにょると申します。(ここハンドル投稿ダメなのでしょうか?ダメなら本

[#35063] Re: ruby_lib/html/ — Wakou Aoyama <wakou@...> 2002/05/12

青山です。

[#35074] Re: ruby_lib/html/ — nnr <nyonyoru@...> 2002/05/12

 にょにょるです。オンラインではずっとこれを使っているので、これでいきま

[#35054] 「 Ruby/GTK プログラミング入門」 — Noritsugu Nakamura <nnakamur@...>

14 messages 2002/05/12

[#35102] ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...>

はじめまして、須藤です。

57 messages 2002/05/13
[#35115] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/14

なひです。

[#35125] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...> 2002/05/14

須藤です。

[#35130] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/15

なひです。

[#35140] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...> 2002/05/15

須藤です。

[#35141] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — nobu.nakada@... 2002/05/15

なかだです。

[#35157] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — TAKAHASHI Masayoshi <maki@...> 2002/05/15

高橋征義です。

[#35159] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/16

なひです。

[#35160] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/16

なひです。

[#35162] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — matz@... (Yukihiro Matsumoto) 2002/05/16

まつもと ゆきひろです

[#35186] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/17

なひです。

[#35192] Re: ANNOUNCE: REXML のドキュメント — siena@... (Siena.) 2002/05/17

Siena. です。

[#35253] ((1.2)..(3.4)).to_a — Take_tk <ggb03124@...>

1.2..3.4 を配列にすると、その範囲に属しない整数「1」が含まれるという点に

29 messages 2002/05/25
[#35257] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto) 2002/05/25

まつもと ゆきひろです

[#35265] Re: ((1.2)..(3.4)).to_a — Take_tk <ggb03124@...> 2002/05/27

たけ(tk)です。

[#35272] Re: ((1.2)..(3.4)).to_a — siena@... (Siena.) 2002/05/27

Siena. です。

[#35279] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto) 2002/05/28

まつもと ゆきひろです

[ruby-list:35174] Re: ANNOUNCE: REXML のドキュメント

From: siena@... (Siena.)
Date: 2002-05-16 21:45:31 UTC
List: ruby-list #35174
Siena. です。

▼ [ruby-list:35170] < 須藤功平 さん

》> readline して(*)、encoding を見て、rewind して、readlines して、
》> 必要なら $_[0] の XML 宣言を 'utf-8' に書き換えて、join して、
》> uconv (or iconv) して、StringIO でラップして、parse_stream する、と。

》こんな風にREXMLに渡す前にコード変換するラッパークラス
》(REXML::JDocument)がREXMLに取り込まれたら、日本語処理の問題は解決です
》か?

むりやりごまかしているので、取り込まれるのは危険ですねぇ。
それと、Iconv が使いこなせなくて、NKF と Uconv のキメラな
{ shift_jis, euc-jp, iso-2022-jp, utf-8, utf-16, ucs-4 } の
相互変換ライブラリを使ってます。汚いですし、効率も悪いですし。
日本語以外の XML 文書を扱おうとすると、むしろ不幸になります ^^;

》もしよければ、Sienaさんが使ってらっしゃるラッパークラスを見せて頂けま
》せんか?

では、お目汚しをば。
Wrapper はモジュールでなくクラスにして、REXML::Document と
同じインターフェイスを持つようにするのが筋とは思いますが、
何分、やっつけ仕事で作ったまま使い回してますので ^^;
# って、ラッパー *クラス* じゃないじゃん >> Siena.
# ... あとで作り直そう ^^;


^--- xmloader.rb
#! ruby -Ks

## REXML_Wrapper モジュール
## update 2001/??/?? v.0.1 : 初

module Siena
CONF_USE_ICONV = false  ## Iconv を正しく使えるようになってから ;_;
end

if( Siena::CONF_USE_ICONV )
  require 'iconv'
else
  require 'codeconv'
end

require 'rexml/document'
require 'rexml/xmldecl'
require 'stringio'

module Siena

module REXML_Wrapper
  DEFAULT_ENCODING = 'utf-8'

  def self.xmldecl( path, close_file = true )
    file = ver = enc = nil
    begin
      file = File.open( path )
      line = file.readline()
      pat = line.scan( /^<\?\s*xml(\s+version=["'](\d+\.\d+)["'])?(\s+encoding=["']([^"']+)["'])?\s*\?>\s*$/ )[ 0 ]
      ver = pat[ 1 ] || '1.0'
      enc = pat[ 3 ]	## nil if encoding is not specified
    rescue
      raise
    ensure
      if( file != nil )
        if( close_file )
          file.close()
          file = nil
        else
          file.rewind()
        end
      end
    end
    return ver, enc, file
  end

  def self.load( path )
    doc = file = nil
    begin
      ver, enc, file = xmldecl( path, false )
      doc = file.readlines()
      if( enc != nil )
        pat = /encoding=("[^"]*"|'[^']*')/
        doc[ 0 ] = doc[ 0 ].sub( pat, 'encoding="' + DEFAULT_ENCODING + '"' )
      end
if( CONF_USE_ICONV )
      doc = Iconv.iconv( DEFAULT_ENCODING, enc, doc.join() )
      ## 次の Document.new( doc ) でパースエラー (--;?  @ REXML v.2.3.3
      ## |T:/lib/ruby/site_ruby/1.6/rexml/document.rb:224:
      ## |in `parse': undefined method `empty?' for nil (REXML::ParseException)
else
      doc = CodeConv.conv( doc.join(), enc, DEFAULT_ENCODING )
end
      raise if( doc == nil )
      doc = REXML::Document.new( doc )
    rescue
      raise
    ensure
      file.close()	if( file != nil )
    end
    return doc
  end

  def self.save( doc, file, enc = nil )
    if( ( enc != nil )	\
    &&  ( doc.xml_decl.encoding.downcase() != enc.downcase() ) )
      result = ''
      ## XML 宣言の encoding を整合させるため、一時的にすり替え
      ## write 中に XMLDecl#encoding を参照しない事を前提とする
      ## REXML の仕様変更に注意
      doc_enc = doc.xml_decl.encoding
      doc.xml_decl.encoding = enc
      doc.write( StringIO.new( result ) )
if( CONF_USE_ICONV )
      result = Iconv.iconv( enc, doc_enc, result )
else
      result = CodeConv.conv( result, doc_enc, enc )
end
      file.puts( result )
      doc.xml_decl.encoding = doc_enc
    else
      doc.write( file )
    end
  end
end
end

if( $0 == __FILE__ )
  include Siena
  doc = REXML_Wrapper::load( ARGV[ 0 ] )
  REXML_Wrapper::save( doc, File.new( 'testout.utf8.xml', 'w' ), 'utf-8' )
  REXML_Wrapper::save( doc, File.new( 'testout.sjis.xml', 'w' ), 'shift_jis' )
  REXML_Wrapper::save( doc, File.new( 'testout.euc.xml', 'w' ), 'euc-jp' )
  REXML_Wrapper::save( doc, File.new( 'testout.jis.xml', 'w' ), 'iso-2022-jp' )
end
$---

^--- codeconv.rb  # 中田さんの codeconv.rb とファイル名がかぶってます ^^;
#! ruby -Ks

require 'uconv'
require 'nkf'

## CodeConv モジュール
## update 2001/??/?? v.0.1 : 初

module Siena
class CodeConv
  extend Uconv
  extend NKF
  @@ENCODING_ID  = { 'euc-jp' => 0, 'shift_jis' => 1, 'iso-2022-jp' => 2, 
                     'utf-8'  => 3, 'utf-16'    => 4, 'ucs-4'       => 5 }
  @@ENCODING_MAP = [
    [ 'isomorph',       'nkf "-Esm0",',    'nkf "-Ejm0",', 
      'euctou8',        'euctou16',        'u8tou4 euctou8' ],
    [ 'nkf "-Sem0",',   'isomorph',        'nkf "-Sjm0",',
      'sjistou8',       'sjistou16',       'u8tou4 sjistou8' ],
    [ 'nkf "-Jem0",',   'nkf "-Jsm0",',    'isomorph',
      'sjistou8 nkf "-Jsm0",', 'sjistou16 nkf "-Jsm0",',
      'u8tou4 sjistou8 nkf "-Jsm0",' ],
    [ 'u8toeuc',        'u8tosjis',        'nkf "-Sjm0", u8tosjis',
      'isomorph',       'u8tou16',         'u8tou4' ],
    [ 'u16toeuc',       'u16tosjis',       'nkf "-Sjm0", u16tosjis',
      'u16tou8',        'u16swap',         'u16tou4' ],
    [ 'u8toeuc u4tou8', 'u8tosjis u4tou8', 'nkf "-Sjm0", u8tosjis u4tou8',
      'u4tou8',         'u4tou16',         'u4swap' ]
  ]

  def self.isomorph( str )
    str
  end

  def self.encid( enc )
    @@ENCODING_ID[ enc.downcase() ]
  end

  def self.conv( str, inenc, outenc )
    eval( @@ENCODING_MAP[ encid( inenc ) ][ encid( outenc ) ] + ' str' )
  end

  attr_accessor :source_encoding, :result_encoding

  def initialize( inenc, outenc )
    @source_encoding = inenc
    @result_encoding = outenc
  end

  def conv( str, inenc = @source_encoding, outenc = @result_encoding )
    CodeConv.conv( str, inenc, outenc )
  end
end
end

if( $0 == __FILE__ )
  include Siena

  def test_codeconv( text, enc )
    puts( '[ => ' + enc + ' ] ' + text )
    [ 'shift_jis', 'euc-jp', 'iso-2022-jp',
      'utf-8', 'utf-16', 'ucs-4' ].each do |src|
      puts( CodeConv.conv( text, enc, src ) )
    end
    puts( '' )
  end

  msg = ARGV[ 0 ] || 'あれこれ書いてみようかな'

  src = 'shift_jis';   msg = NKF.nkf( '-s', msg )
  enc = 'shift_jis';   test_codeconv( msg,                   enc )
  enc = 'euc-jp';      test_codeconv( NKF.nkf( '-Se', msg ), enc )
  enc = 'iso-2022-jp'; test_codeconv( NKF.nkf( '-Sj', msg ), enc )

  src = 'utf-8';  msg = CodeConv.conv( msg, 'shift_jis', 'utf-8' )
  enc = 'utf-8';  test_codeconv( msg,                            enc )
  enc = 'utf-16'; test_codeconv( CodeConv.conv( msg, src, enc ), enc )
  enc = 'ucs-4';  test_codeconv( CodeConv.conv( msg, src, enc ), enc )
end
$---

---
Siena. <mailto:siena@cr.chiba-u.ac.jp>

In This Thread