From 979dfca5faff9e9ea52588220a862bed19a8c731 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 2 Apr 2011 10:54:15 +0200 Subject: [PATCH] utils: support new HTMLEntities interface Since version 4.1.0, HTMLEntities removed the decode_entities() class method and uses a decoder since. Support the new interface as well as the old one. Also slightly optimize by moving the conditional outside of the method definition. Now a rescan is required even if HTMLEntities is loaded at runtime, but the method should be slightly faster. --- lib/rbot/core/utils/utils.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/rbot/core/utils/utils.rb b/lib/rbot/core/utils/utils.rb index ec3b3c5d..7fe83410 100644 --- a/lib/rbot/core/utils/utils.rb +++ b/lib/rbot/core/utils/utils.rb @@ -338,11 +338,21 @@ module ::Irc # Decode HTML entities in the String _str_, using HTMLEntities if the # package was found, or UNESCAPE_TABLE otherwise. # - def Utils.decode_html_entities(str) - if defined? ::HTMLEntities - return HTMLEntities.decode_entities(str) + + if defined? ::HTMLEntities + if ::HTMLEntities.respond_to? :decode_entities + def Utils.decode_html_entities(str) + return HTMLEntities.decode_entities(str) + end else - str.gsub(/(&(.+?);)/) { + @@html_entities = HTMLEntities.new + def Utils.decode_html_entities(str) + return @@html_entities.decode str + end + end + else + def Utils.decode_html_entities(str) + return str.gsub(/(&(.+?);)/) { symbol = $2 # remove the 0-paddng from unicode integers if symbol =~ /^#(\d+)$/ -- 2.39.2