lib/marvin/util.rb in jeffrafter-marvin-0.1.20081115 vs lib/marvin/util.rb in jeffrafter-marvin-0.1.20081120

- old
+ new

@@ -1,29 +1,46 @@ module Marvin module Util + GLOB_PATTERN_MAP = { + '*' => '.*', + '?' => '.', + '[' => '[', + ']' => ']' + } + # Return the channel-name version of a string by # appending "#" to the front if it doesn't already # start with it. def channel_name(name) return name.to_s[0..0] == "#" ? name.to_s : "##{name}" end alias chan channel_name def arguments(input) - prefix, *ending = input.split(":") + prefix, ending = input.split(":", 2) prefix = prefix.split(" ") - prefix << ending.join(":").strip + prefix << ending unless ending.blank? return prefix end # Specifies the last parameter of a response, used to # specify parameters which have spaces etc (for example, # the actual message part of a response). def last_param(section) - section && ":#{section.to_s.strip} " + section && ":#{section.to_s.strip}" end alias lp last_param + + # Converts a glob-like pattern into a regular + # expression for easy / fast matching. Code is + # from PLEAC at http://pleac.sourceforge.net/pleac_ruby/patternmatching.html + def glob2pattern(glob_string) + inner_pattern = glob_string.gsub(/(.)/) do |c| + GLOB_PATTERN_MAP[c] || Regexp::escape(c) + end + return Regexp.new("^#{inner_pattern}$") + end extend self end end \ No newline at end of file