Added basic support for enum and list rule properties
This commit is contained in:
parent
c034834dc1
commit
a0af35b467
@ -245,7 +245,7 @@
|
|||||||
|
|
||||||
|
|
||||||
api.register {
|
api.register {
|
||||||
name = "displayName",
|
name = "display",
|
||||||
scope = "rule",
|
scope = "rule",
|
||||||
kind = "string",
|
kind = "string",
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
local defs = r.propertyDefinition
|
local defs = r.propertyDefinition
|
||||||
for i = 1, #defs do
|
for i = 1, #defs do
|
||||||
local def = defs[i]
|
local def = defs[i]
|
||||||
local value = def.defaultValue
|
local value = def.value
|
||||||
if value then
|
if value then
|
||||||
if def.kind == "path" then
|
if def.kind == "path" then
|
||||||
value = path.translate(value)
|
value = path.translate(value)
|
||||||
|
@ -42,6 +42,8 @@
|
|||||||
return {
|
return {
|
||||||
m.dataSource,
|
m.dataSource,
|
||||||
m.categories,
|
m.categories,
|
||||||
|
m.inputs,
|
||||||
|
m.properties,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -96,41 +98,131 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
-- Generate the list of property definitions.
|
||||||
|
---
|
||||||
|
|
||||||
|
function m.properties(r)
|
||||||
|
local defs = r.propertyDefinition
|
||||||
|
for i = 1, #defs do
|
||||||
|
local def = defs[i]
|
||||||
|
if def.kind == "list" then
|
||||||
|
m.stringListProperty(def)
|
||||||
|
elseif type(def.values) == "table" then
|
||||||
|
m.enumProperty(def)
|
||||||
|
else
|
||||||
|
m.stringProperty(def)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function m.baseProperty(def)
|
||||||
|
p.w('Name="%s"', def.name)
|
||||||
|
p.w('HelpContext="0"')
|
||||||
|
p.w('DisplayName="%s"', def.display or def.name)
|
||||||
|
p.w('Description="%s"', def.description or def.display or def.name)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function m.enumProperty(def)
|
||||||
|
p.push('<EnumProperty')
|
||||||
|
m.baseProperty(def)
|
||||||
|
|
||||||
|
local values = def.values
|
||||||
|
local switches = def.switch or {}
|
||||||
|
|
||||||
|
local keys = table.keys(def.values)
|
||||||
|
table.sort(keys)
|
||||||
|
|
||||||
|
for _, key in pairs(keys) do
|
||||||
|
p.push('<EnumValue')
|
||||||
|
p.w('Name="%d"', key)
|
||||||
|
p.w('DisplayName="%s"', values[key])
|
||||||
|
p.w('Switch="%s" />', switches[key] or values[key])
|
||||||
|
p.pop()
|
||||||
|
end
|
||||||
|
|
||||||
|
p.pop('</EnumProperty>')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function m.stringProperty(def)
|
||||||
|
p.push('<StringProperty')
|
||||||
|
m.baseProperty(def)
|
||||||
|
p.w('Switch="[value]" />')
|
||||||
|
p.pop()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function m.stringListProperty(def)
|
||||||
|
p.push('<StringListProperty')
|
||||||
|
m.baseProperty(def)
|
||||||
|
p.w('Switch="[value]" />')
|
||||||
|
p.pop()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Implementations of individual elements.
|
-- Implementations of individual elements.
|
||||||
---
|
---
|
||||||
|
|
||||||
function m.contentType(r)
|
function m.contentType(r)
|
||||||
p.w('<ContentType')
|
p.push('<ContentType')
|
||||||
p.w(' Name="%s"', r.name)
|
p.w('Name="%s"', r.name)
|
||||||
p.w(' DisplayName="%s"', r.name)
|
p.w('DisplayName="%s"', r.name)
|
||||||
p.w(' ItemType="%s" />', r.name)
|
p.w('ItemType="%s" />', r.name)
|
||||||
|
p.pop()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function m.dataSource(r)
|
function m.dataSource(r)
|
||||||
p.push('<Rule.DataSource>')
|
p.push('<Rule.DataSource>')
|
||||||
p.w('<DataSource')
|
p.push('<DataSource')
|
||||||
p.w(' Persistence="ProjectFile"')
|
p.w('Persistence="ProjectFile"')
|
||||||
p.w(' ItemType="%s" />', r.name)
|
p.w('ItemType="%s" />', r.name)
|
||||||
|
p.pop()
|
||||||
p.pop('</Rule.DataSource>')
|
p.pop('</Rule.DataSource>')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function m.fileExtension(r)
|
function m.fileExtension(r)
|
||||||
p.w('<FileExtension')
|
p.push('<FileExtension')
|
||||||
p.w(' Name="*.XYZ"')
|
p.w('Name="*.XYZ"')
|
||||||
p.w(' ContentType="%s" />', r.name)
|
p.w('ContentType="%s" />', r.name)
|
||||||
|
p.pop()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function m.inputs(r)
|
||||||
|
p.push('<StringListProperty')
|
||||||
|
p.w('Name="Inputs"')
|
||||||
|
p.w('Category="Command Line"')
|
||||||
|
p.w('IsRequired="true"')
|
||||||
|
p.w('Switch=" ">')
|
||||||
|
|
||||||
|
p.push('<StringListProperty.DataSource>')
|
||||||
|
p.push('<DataSource')
|
||||||
|
p.w('Persistence="ProjectFile"')
|
||||||
|
p.w('ItemType="%s"', r.name)
|
||||||
|
p.w('SourceType="Item" />')
|
||||||
|
p.pop()
|
||||||
|
|
||||||
|
p.pop('</StringListProperty.DataSource>')
|
||||||
|
p.pop('</StringListProperty>')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function m.ruleItem(r)
|
function m.ruleItem(r)
|
||||||
p.w('<ItemType')
|
p.push('<ItemType')
|
||||||
p.w(' Name="%s"', r.name)
|
p.w('Name="%s"', r.name)
|
||||||
p.w(' DisplayName="%s" />', r.name)
|
p.w('DisplayName="%s" />', r.name)
|
||||||
|
p.pop()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user