From: "kou (Kouhei Sutou)" Date: 2013-07-26T23:23:54+09:00 Subject: [ruby-dev:47546] [ruby-trunk - Bug #8689] REXML::StreamListener#entityが呼び出されない Issue #8689 has been updated by kou (Kouhei Sutou). ちょっとみたらすぐにいけそうだったので実装しておきました!あと、パースして情報が落ちるのは切ないなぁという気持ちもありました。 まぁ、なにに使うんですかねぇ。。。未定義のパラメーター実体参照をしていないか、というチェックをするプログラムを書くためには使えそうですかねぇ。。。 ---------------------------------------- Bug #8689: REXML::StreamListener#entityが呼び出されない https://bugs.ruby-lang.org/issues/8689#change-40693 Author: ohai (Ippei Obayashi) Status: Closed Priority: Normal Assignee: kou (Kouhei Sutou) Category: lib Target version: ruby -v: ruby 2.1.0dev (2013-07-25 trunk 42169) [x86_64-linux] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN REXML::StreamListener#entity のドキュメントによると # Called when %foo; is encountered in a doctype declaration. # @p content "foo" def entity content end と書かれていますが、以下のコードを動かしても何も表示されません require 'rexml/parsers/baseparser' require 'rexml/parsers/streamparser' require 'rexml/streamlistener' xml = < EOS class Listener include REXML::StreamListener def entity(content) p content end end REXML::Parsers::StreamParser.new(xml, Listener.new).parse lib/rexml/parsers/streamparser.rb でもこの entity というメソッドを呼びだしている 場所はないようです。 というわけで、なんらかの修正をする必要があるように思われます。 * このメソッドを削除 * このメソッドを StreamParser から呼びだすようにする のいずれかの変更が良いでしょう。 私の意見としては、このコールバックの使い道が思いつかない、おそらく誰も使っていない、ので、削除してしまって よいのではと思います。 -- http://bugs.ruby-lang.org/