From: Giuseppe Bilotta Date: Tue, 6 Feb 2007 14:31:26 +0000 (+0000) Subject: Move extensions to standard classes into a specific extends.rb util module X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=64689811ca5ee4e190d1837463675c68f9a094ff;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git Move extensions to standard classes into a specific extends.rb util module --- diff --git a/data/rbot/plugins/rss.rb b/data/rbot/plugins/rss.rb index 08b2c775..acebda9c 100644 --- a/data/rbot/plugins/rss.rb +++ b/data/rbot/plugins/rss.rb @@ -19,12 +19,6 @@ require 'rss/dublincore' # warning "Unable to load RSS libraries, RSS plugin functionality crippled" # end -class ::String - def riphtml - self.gsub(/<[^>]+>/, '').gsub(/&/,'&').gsub(/"/,'"').gsub(/</,'<').gsub(/>/,'>').gsub(/&ellip;/,'...').gsub(/'/, "'").gsub("\n",'') - end -end - class ::RssBlob attr_accessor :url attr_accessor :handle diff --git a/data/rbot/plugins/salut.rb b/data/rbot/plugins/salut.rb index e4295a06..b0bf67e7 100644 --- a/data/rbot/plugins/salut.rb +++ b/data/rbot/plugins/salut.rb @@ -4,17 +4,6 @@ # TODO *REMEMBER* to set @changed to true after edit # TODO or changes won't be saved -unless Array.new.respond_to?(:pick_one) - debug "Defining the pick_one method for Array" - class ::Array - def pick_one - return nil if self.empty? - self[rand(self.length)] - end - end -end - - class SalutPlugin < Plugin BotConfig.register BotConfigBooleanValue.new('salut.all_languages', :default => true, diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb index 27f9519c..6fb1959a 100644 --- a/data/rbot/plugins/search.rb +++ b/data/rbot/plugins/search.rb @@ -4,39 +4,6 @@ Net::HTTP.version_1_2 GOOGLE_WAP_LINK = /(.*?)<\/a>/im -class ::String - def ircify_html - txt = self - - # bold and strong -> bold - txt.gsub!(/<\/?(?:b|strong)\s*>/, "#{Bold}") - - # italic, emphasis and underline -> underline - txt.gsub!(/<\/?(?:i|em|u)\s*>/, "#{Underline}") - - ## This would be a nice addition, but the results are horrible - ## Maybe make it configurable? - # txt.gsub!(/<\/?a( [^>]*)?>/, "#{Reverse}") - - # Paragraph and br tags are converted to whitespace. - txt.gsub!(/<\/?(p|br)\s*\/?\s*>/, ' ') - txt.gsub!("\n", ' ') - - # All other tags are just removed - txt.gsub!(/<[^>]+>/, '') - - # Remove double formatting options, since they only waste bytes - txt.gsub!(/#{Bold}\s*#{Bold}/,"") - txt.gsub!(/#{Underline}\s*#{Underline}/,"") - - # And finally whitespace is squeezed - txt.gsub!(/\s+/, ' ') - - # Decode entities and strip whitespace - return Utils.decode_html_entities(txt).strip! - end -end - class SearchPlugin < Plugin BotConfig.register BotConfigIntegerValue.new('google.hits', :default => 3, diff --git a/lib/rbot/core/utils/extends.rb b/lib/rbot/core/utils/extends.rb new file mode 100644 index 00000000..b1da19c5 --- /dev/null +++ b/lib/rbot/core/utils/extends.rb @@ -0,0 +1,69 @@ +#-- vim:sw=2:et +#++ +# +# Extensions to standard classes, to be used by the various plugins +# Please note that global symbols have to be prefixed by :: because this plugin +# will be read into an anonymous module + +# Extensions to the Array class +# +class ::Array + + # This method returns a random element from the array, or nil if the array is + # empty + # + def pick_one + return nil if self.empty? + self[rand(self.length)] + end +end + +# Extensions to the String class +# +# TODO make ircify_html() accept an Hash of options, and make riphtml() just +# call ircify_html() with stronger purify options. +# +class ::String + + # This method will return a purified version of the receiver, with all HTML + # stripped off and some of it converted to IRC formatting + # + def ircify_html + txt = self + + # bold and strong -> bold + txt.gsub!(/<\/?(?:b|strong)\s*>/, "#{Bold}") + + # italic, emphasis and underline -> underline + txt.gsub!(/<\/?(?:i|em|u)\s*>/, "#{Underline}") + + ## This would be a nice addition, but the results are horrible + ## Maybe make it configurable? + # txt.gsub!(/<\/?a( [^>]*)?>/, "#{Reverse}") + + # Paragraph and br tags are converted to whitespace. + txt.gsub!(/<\/?(p|br)\s*\/?\s*>/, ' ') + txt.gsub!("\n", ' ') + + # All other tags are just removed + txt.gsub!(/<[^>]+>/, '') + + # Remove double formatting options, since they only waste bytes + txt.gsub!(/#{Bold}\s*#{Bold}/,"") + txt.gsub!(/#{Underline}\s*#{Underline}/,"") + + # And finally whitespace is squeezed + txt.gsub!(/\s+/, ' ') + + # Decode entities and strip whitespace + return Utils.decode_html_entities(txt).strip! + end + + # This method will strip all HTML crud from the receiver + # + def riphtml + self.gsub(/<[^>]+>/, '').gsub(/&/,'&').gsub(/"/,'"').gsub(/</,'<').gsub(/>/,'>').gsub(/&ellip;/,'...').gsub(/'/, "'").gsub("\n",'') + end +end + +