diff options
Diffstat (limited to 'osurl')
-rwxr-xr-x | osurl | 38 |
1 files changed, 19 insertions, 19 deletions
@@ -4,37 +4,37 @@ local lpeg = require 'lpeg' local P,C,Cs,Cf,R = lpeg.P, lpeg.C, lpeg.Cs, lpeg.Cf, lpeg.R local tokens = { - NONHASH = C((1 - P("#"))^1), -- any nonempty string not containing # - NUM = C(R("09")^1), -- nonempty digit string - WORD = C(R("AZ","az","09","__")^1) -- nonempty word + NONHASH = C((1 - P("#"))^1), -- any nonempty string not containing # + NUM = C(R("09")^1), -- nonempty digit string + WORD = C(R("AZ","az","09","__")^1) -- nonempty word } local patterns = { - ["bgo#%NUM"] = "http://bugzilla.gnome.org/show_bug.cgi?id=%1", - ["bko#%NUM"] = "http://bugzilla.kernel.org/show_bug.cgi?id=%1", - ["bmo#%NUM"] = "http://bugzilla.mozilla.org/show_bug.cgi?id=%1", - ["boo#%NUM"] = "http://bugzilla.opensuse.org/show_bug.cgi?id=%1", - ["bsc#%NUM"] = "http://bugzilla.suse.com/show_bug.cgi?id=%1", - ["gh#%NONHASH#%WORD"] = "https://github.com/%1/issues/%2", - ["lp#%NUM"] = "https://launchpad.net/bugs/%1", - ["rh#%NUM"] = "http://bugzilla.redhat.com/show_bug.cgi?id=%1" + ["bgo#%NUM"] = "http://bugzilla.gnome.org/show_bug.cgi?id=%1", + ["bko#%NUM"] = "http://bugzilla.kernel.org/show_bug.cgi?id=%1", + ["bmo#%NUM"] = "http://bugzilla.mozilla.org/show_bug.cgi?id=%1", + ["boo#%NUM"] = "http://bugzilla.opensuse.org/show_bug.cgi?id=%1", + ["bsc#%NUM"] = "http://bugzilla.suse.com/show_bug.cgi?id=%1", + ["gh#%NONHASH#%WORD"] = "https://github.com/%1/issues/%2", + ["lp#%NUM"] = "https://launchpad.net/bugs/%1", + ["rh#%NUM"] = "http://bugzilla.redhat.com/show_bug.cgi?id=%1" } -- turn "foo#%BLAH" into a pattern that matches everything literally except -- %BLAH local makepat = Cf( - ( - ((P("%") * C(R("AZ")^1)) / tokens) -- %BLAH is from tokens - + (P"%%" / function() return P"%" end) -- %% treat as literal % - + (C(P(1)) / P) -- anything else is literal - )^0, - function(a,b) return a * b end) + ( + ((P("%") * C(R("AZ")^1)) / tokens) -- %BLAH is from tokens + + (P"%%" / function() return P"%" end) -- %% treat as literal % + + (C(P(1)) / P) -- anything else is literal + )^0, + function(a,b) return a * b end) local function make_pattern(str) - return assert(makepat:match(str), "invalid pattern") + return assert(makepat:match(str), "invalid pattern") end local bugpat = P(false) for k,v in pairs(patterns) do - bugpat = bugpat + (make_pattern(k) / v) + bugpat = bugpat + (make_pattern(k) / v) end local pat = Cs((bugpat + P(1))^0) |