From a9f2fb8d1af4ab42d581e1e3924623039470e2b7 Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Tue, 24 Nov 2020 12:32:10 +0200 Subject: [PATCH] [Minor] Selectors: fixes for specific URLs --- lualib/lua_selectors/extractors.lua | 27 +++++++++++++++++++++++++++ lualib/lua_selectors/init.lua | 6 ++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/lualib/lua_selectors/extractors.lua b/lualib/lua_selectors/extractors.lua index 162f01808..770887ff6 100644 --- a/lualib/lua_selectors/extractors.lua +++ b/lualib/lua_selectors/extractors.lua @@ -287,7 +287,34 @@ e.g. `get_tld`]], ['args_schema'] = {ts.shape{ limit = ts.number + ts.string / tonumber, esld_limit = (ts.number + ts.string / tonumber):is_optional(), + flags = ts.array_of(ts.one_of{ + 'content', + 'has_port', + 'has_user', + 'host_encoded', + 'html_displayed', + 'idn', + 'image', + 'missing_slahes', -- sic + 'no_tld', + 'numeric', + 'obscured', + 'path_encoded', + 'query', + 'query_encoded', + 'redirected', + 'schema_encoded', + 'schemaless', + 'subject', + 'text', + 'unnormalised', + 'url_displayed', + 'zw_spaces', + 'phished', + }):is_optional(), + flags_mode = ts.one_of{'explicit'}:is_optional(), prefix = ts.string:is_optional(), + need_content = (ts.boolean + ts.string / lua_util.toboolean):is_optional(), need_emails = (ts.boolean + ts.string / lua_util.toboolean):is_optional(), need_images = (ts.boolean + ts.string / lua_util.toboolean):is_optional(), ignore_redirected = (ts.boolean + ts.string / lua_util.toboolean):is_optional(), diff --git a/lualib/lua_selectors/init.lua b/lualib/lua_selectors/init.lua index 54d42f242..3839cec9e 100644 --- a/lualib/lua_selectors/init.lua +++ b/lualib/lua_selectors/init.lua @@ -236,8 +236,10 @@ local function make_grammar() FUNCTION = l.Ct(atom * spc * (obrace * l.V("ARG_LIST") * ebrace)^0), METHOD = l.Ct(atom / function(e) return '__' .. e end * spc * (obrace * l.V("ARG_LIST") * ebrace)^0), ARG_LIST = l.Ct((l.V("ARG") * comma^0)^0), - ARG = l.Cf(tbl_obrace * l.V("NAMED_ARG") * tbl_ebrace, rawset) + argument, - NAMED_ARG = (l.Ct("") * l.Cg(argument * eqsign * argument * comma^0)^0), + ARG = l.Cf(tbl_obrace * l.V("NAMED_ARG") * tbl_ebrace, rawset) + argument + l.V("LIST_ARGS"), + NAMED_ARG = (l.Ct("") * l.Cg(argument * eqsign * (argument + l.V("LIST_ARGS")) * comma^0)^0), + LIST_ARGS = l.Ct(tbl_obrace * l.V("LIST_ARG") * tbl_ebrace), + LIST_ARG = l.Cg(argument * comma^0)^0, } end -- 2.39.5