From d4848b41b48569a2fd4f1c96a30b9fce889deb2e Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 7 Apr 2007 11:51:45 +0000 Subject: imdb plugin: fix parsing bug with extra information after roles other than the last --- data/rbot/plugins/imdb.rb | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'data') diff --git a/data/rbot/plugins/imdb.rb b/data/rbot/plugins/imdb.rb index 959b2169..ee6b59fe 100644 --- a/data/rbot/plugins/imdb.rb +++ b/data/rbot/plugins/imdb.rb @@ -202,7 +202,7 @@ class Imdb if year = opts[:movies_in_year] filmoyear = @bot.httputil.get(IMDB + sr + "filmoyear") if filmoyear - info << filmoyear.scan(/#{TITLE_MATCH} \(#{year}\)[^\[\n]*\[(.*)\]([^<]+)?(?:$|\s*<)/) + info << filmoyear.scan(/#{TITLE_MATCH} \(#{year}\)[^\[\n]*((?:\s+\[[^\]]+\](?:\s+\([^\[<]+\))*)+)\s+ (bclip == quot ? 1 : -1) - } - debug data.map { |a| a[1] }.join("\n") - data.each { |url, pre_title, pre_roles, extra| + }.each { |url, pre_title, pre_roles| title = fix_article(pre_title.ircify_html) - role_array = pre_roles.split(/\]\s+\[/).map { |txt| + role_array = [] + pre_roles.strip.scan(/\[([^\]]+)\]((?:\s+\([^\[]+\))+)?/) { |txt, comm| if txt.match(/^(.*)\s+\.\.\.\.\s+(.*)$/) - "#{$1} (#{$2})" + role_array << "#{$1} (#{$2})" else - txt + role_array << txt end + role_array.last << " " + comm.ircify_html if comm } - role_array.last << " " + extra.ircify_html if extra roles = role_array.join(', ') movies << [roles, title].join(": ") -- cgit v1.2.3