feat: manage Object Properties constraints enum
This commit is contained in:
parent
9d9f263c69
commit
35c4567baf
|
@ -7,6 +7,8 @@ local record Variable_Info
|
||||||
|
|
||||||
name: string
|
name: string
|
||||||
types: List<string>
|
types: List<string>
|
||||||
|
|
||||||
|
constraints: List<string>
|
||||||
end
|
end
|
||||||
|
|
||||||
local __Variable_Info: metatable<Variable_Info> = {
|
local __Variable_Info: metatable<Variable_Info> = {
|
||||||
|
|
|
@ -45,12 +45,6 @@ function snippets.render_record_functions(items: List<Function_Info.Function_Inf
|
||||||
end):concat("\n")
|
end):concat("\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
function snippets.render_record_properties(items: List<Variable_Info.Variable_Info>): string
|
|
||||||
return items:map(function(item: Variable_Info.Variable_Info): string
|
|
||||||
return snippets.render_typed_variable(item.name, item.types)
|
|
||||||
end):concat("\n")
|
|
||||||
end
|
|
||||||
|
|
||||||
function snippets.render_enum(name: string, values: List<string>): string
|
function snippets.render_enum(name: string, values: List<string>): string
|
||||||
local tmpl = [[
|
local tmpl = [[
|
||||||
enum $(name)
|
enum $(name)
|
||||||
|
@ -69,4 +63,18 @@ end
|
||||||
return utils.do_or_fail(template.substitute, tmpl, tmpl_args)
|
return utils.do_or_fail(template.substitute, tmpl, tmpl_args)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function snippets.render_record_properties(items: List<Variable_Info.Variable_Info>): string
|
||||||
|
return items:map(function(item: Variable_Info.Variable_Info): string
|
||||||
|
if not item.constraints or #item.constraints == 0 then
|
||||||
|
return snippets.render_typed_variable(item.name, item.types)
|
||||||
|
end
|
||||||
|
|
||||||
|
local enum_type = utils.capitalize(item.name)
|
||||||
|
return string.format(
|
||||||
|
"%s%s",
|
||||||
|
snippets.render_enum(enum_type, item.constraints),
|
||||||
|
snippets.render_typed_variable(item.name, List({ enum_type })))
|
||||||
|
end):concat("\n")
|
||||||
|
end
|
||||||
|
|
||||||
return snippets
|
return snippets
|
||||||
|
|
|
@ -55,18 +55,12 @@ local function extract_function_return_types(function_return_types_node: scan.HT
|
||||||
return scraper_utils.scrape(html, selector, extract_node_text)
|
return scraper_utils.scrape(html, selector, extract_node_text)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function extract_property_types(property_summary_type: scan.HTMLNode, property_constraint_node: scan.HTMLNode): List<string>
|
local function extract_property_constraints(property_constraint_node: scan.HTMLNode): { string }
|
||||||
-- local constraint_types = scraper_utils.scrape(
|
return scraper_utils.scrape(
|
||||||
-- property_constraint_node:outer_html(),
|
property_constraint_node:outer_html(),
|
||||||
-- "tr.see_also_sublist",
|
"tr.see_also_sublist",
|
||||||
-- extract_node_text
|
extract_node_text
|
||||||
-- )
|
)
|
||||||
|
|
||||||
-- if #constraint_types == 0 then
|
|
||||||
return parse_parameter_types(extract_node_text(property_summary_type))
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- return constraint_types
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function extract_section_functions(dl: string): { Function_Info.Function_Info }
|
local function extract_section_functions(dl: string): { Function_Info.Function_Info }
|
||||||
|
@ -111,9 +105,15 @@ local function extract_section_variables(dl: string): { Variable_Info.Variable_I
|
||||||
local variable_info = Variable_Info()
|
local variable_info = Variable_Info()
|
||||||
|
|
||||||
variable_info.name = extract_item_name(nodes[query_selectors.variable_name])
|
variable_info.name = extract_item_name(nodes[query_selectors.variable_name])
|
||||||
variable_info.types = extract_property_types(
|
variable_info.types = parse_parameter_types(extract_node_text(nodes[query_selectors.variable_summary_type]))
|
||||||
nodes[query_selectors.variable_summary_type],
|
|
||||||
nodes[query_selectors.variable_property_constraint])
|
if variable_info.types:contains("string") then
|
||||||
|
variable_info.constraints = List(extract_property_constraints(nodes[query_selectors.variable_property_constraint])):map(
|
||||||
|
function(constraint: string): string
|
||||||
|
return (constraint:gsub(""", ""))
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
return variable_info
|
return variable_info
|
||||||
end
|
end
|
||||||
|
@ -139,7 +139,7 @@ function module.get_doc_from_page(html: string, module_name: string): Module_Doc
|
||||||
end
|
end
|
||||||
|
|
||||||
local module_doc = Module_Doc()
|
local module_doc = Module_Doc()
|
||||||
module_doc.record_name = module_name:gsub(".*%.", ""):gsub("^%l", string.upper)
|
module_doc.record_name = utils.capitalize((module_name:gsub(".*%.", "")))
|
||||||
|
|
||||||
for i = 1, #nodes:get("h2.section-header") do
|
for i = 1, #nodes:get("h2.section-header") do
|
||||||
local h2 = nodes:get("h2.section-header")[i]
|
local h2 = nodes:get("h2.section-header")[i]
|
||||||
|
|
|
@ -39,6 +39,10 @@ function utils.sanitize_string(s: string): string
|
||||||
return (stringx.strip(web_sanitize.extract_text(s)))
|
return (stringx.strip(web_sanitize.extract_text(s)))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function utils.capitalize(s: string): string
|
||||||
|
return (s:gsub("^%l", string.upper))
|
||||||
|
end
|
||||||
|
|
||||||
-- At some point, we should probably write a wrapper to make penlight's function work with pcalls.
|
-- At some point, we should probably write a wrapper to make penlight's function work with pcalls.
|
||||||
function utils.do_or_fail<T>(func: function<T>(...: any): (T | nil, string), ...: any): T
|
function utils.do_or_fail<T>(func: function<T>(...: any): (T | nil, string), ...: any): T
|
||||||
local logger = require "logger"
|
local logger = require "logger"
|
||||||
|
|
Loading…
Reference in New Issue