[documentation] Escape quotes in generate.js script (#1116)

Signed-off-by: Georgios Moutsos <georgios.moutsos@gmail.com>
Also-by: Yannick Schaus <github@schaus.net>
pull/1123/head
Georgios Moutsos 2021-06-27 19:16:10 +03:00 committed by GitHub
parent 9fec9946e9
commit e91e8c5a15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 26 additions and 18 deletions

View File

@ -59,7 +59,7 @@ A regular or expandable cell
Color to use when highlighted Color to use when highlighted
</PropDescription> </PropDescription>
</PropBlock> </PropBlock>
<PropBlock type="TEXT" name="on" label=""On" expression"> <PropBlock type="TEXT" name="on" label="&quot;On&quot; expression">
<PropDescription> <PropDescription>
Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable. Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable.
</PropDescription> </PropDescription>

View File

@ -59,7 +59,7 @@ A cell expanding to a color picker
Color to use when highlighted Color to use when highlighted
</PropDescription> </PropDescription>
</PropBlock> </PropBlock>
<PropBlock type="TEXT" name="on" label=""On" expression"> <PropBlock type="TEXT" name="on" label="&quot;On&quot; expression">
<PropDescription> <PropDescription>
Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable. Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable.
</PropDescription> </PropDescription>

View File

@ -59,7 +59,7 @@ A cell expanding to a knob control
Color to use when highlighted Color to use when highlighted
</PropDescription> </PropDescription>
</PropBlock> </PropBlock>
<PropBlock type="TEXT" name="on" label=""On" expression"> <PropBlock type="TEXT" name="on" label="&quot;On&quot; expression">
<PropDescription> <PropDescription>
Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable. Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable.
</PropDescription> </PropDescription>

View File

@ -59,7 +59,7 @@ A cell with a big label to show a short item state value
Color to use when highlighted Color to use when highlighted
</PropDescription> </PropDescription>
</PropBlock> </PropBlock>
<PropBlock type="TEXT" name="on" label=""On" expression"> <PropBlock type="TEXT" name="on" label="&quot;On&quot; expression">
<PropDescription> <PropDescription>
Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable. Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable.
</PropDescription> </PropDescription>

View File

@ -86,6 +86,7 @@ A card showing model items in a certain location
Select the badges you wish to show in the header of the card. Display all if none are selected. Select the badges you wish to show in the header of the card. Display all if none are selected.
</PropDescription> </PropDescription>
<PropOptions multiple="true"> <PropOptions multiple="true">
<PropOption value="battery" label="Low Battery Warning" />
<PropOption value="lights" label="Lights On" /> <PropOption value="lights" label="Lights On" />
<PropOption value="windows" label="Open Windows" /> <PropOption value="windows" label="Open Windows" />
<PropOption value="doors" label="Open Doors" /> <PropOption value="doors" label="Open Doors" />

View File

@ -38,12 +38,12 @@ Iterate over an array and repeat the children components in the default slot
What to iterate on What to iterate on
</PropDescription> </PropDescription>
<PropOptions> <PropOptions>
<PropOption value="array" label="Array (default) in the "in" parameter" /> <PropOption value="array" label="Array (default) in the &quot;in&quot; parameter" />
<PropOption value="range" label="Range of integers defined by "rangeStart", "rangeStop", "rangeStep"" /> <PropOption value="range" label="Range of integers defined by &quot;rangeStart&quot;, &quot;rangeStop&quot;, &quot;rangeStep&quot;" />
<PropOption value="itemsInGroup" label="Member of the group defined in the "groupItem" parameter" /> <PropOption value="itemsInGroup" label="Member of the group defined in the &quot;groupItem&quot; parameter" />
<PropOption value="itemsWithTags" label="Items with tags in the "itemTags" parameter" /> <PropOption value="itemsWithTags" label="Items with tags in the &quot;itemTags&quot; parameter" />
<PropOption value="itemStateOptions" label="State options of the item specified in "itemOptions"" /> <PropOption value="itemStateOptions" label="State options of the item specified in &quot;itemOptions&quot;" />
<PropOption value="itemCommandOptions" label="Command options of the item specified in "itemOptions"" /> <PropOption value="itemCommandOptions" label="Command options of the item specified in &quot;itemOptions&quot;" />
</PropOptions> </PropOptions>
</PropBlock> </PropBlock>
<PropBlock type="TEXT" name="in" label="Source array"> <PropBlock type="TEXT" name="in" label="Source array">

View File

@ -59,7 +59,7 @@ A cell expanding to rollershutter controls
Color to use when highlighted Color to use when highlighted
</PropDescription> </PropDescription>
</PropBlock> </PropBlock>
<PropBlock type="TEXT" name="on" label=""On" expression"> <PropBlock type="TEXT" name="on" label="&quot;On&quot; expression">
<PropDescription> <PropDescription>
Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable. Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable.
</PropDescription> </PropDescription>

View File

@ -59,7 +59,7 @@ A cell expanding to a big vertical slider
Color to use when highlighted Color to use when highlighted
</PropDescription> </PropDescription>
</PropBlock> </PropBlock>
<PropBlock type="TEXT" name="on" label=""On" expression"> <PropBlock type="TEXT" name="on" label="&quot;On&quot; expression">
<PropDescription> <PropDescription>
Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable. Expression to determine when the card should be highlighted. If blank, determine automatically from the primary bound item if applicable.
</PropDescription> </PropDescription>

View File

@ -41,13 +41,20 @@ const replaceBetweenComments = (commentTag, text, value) => {
return text.replace(regexp, '$1' + value + '$2') return text.replace(regexp, '$1' + value + '$2')
} }
const escapeQuotes = (text) => {
if (text !== undefined) {
return text.replace(/"/g, "&quot;");
}
return text
}
const buildProp = (prop) => { const buildProp = (prop) => {
let ret = '' let ret = ''
ret += '<PropBlock type="' + prop.type + '" ' ret += '<PropBlock type="' + escapeQuotes(prop.type) + '" '
if (prop.name) ret += 'name="' + prop.name + '" ' if (prop.name) ret += 'name="' + escapeQuotes(prop.name) + '" '
if (prop.label) ret += 'label="' + prop.label + '" ' if (prop.label) ret += 'label="' + escapeQuotes(prop.label) + '" '
if (prop.required) ret += 'required="true" ' if (prop.required) ret += 'required="true" '
if (prop.context) ret += 'context="' + prop.context + '" ' if (prop.context) ret += 'context="' + escapeQuotes(prop.context) + '" '
ret = ret.trim() + '>\n' ret = ret.trim() + '>\n'
if (prop.description) { if (prop.description) {
@ -61,7 +68,7 @@ const buildProp = (prop) => {
if (prop.multiple) ret += ' multiple="true"' if (prop.multiple) ret += ' multiple="true"'
ret += '>\n' ret += '>\n'
prop.options.forEach((o) => { prop.options.forEach((o) => {
ret += ' <PropOption value="' + (o.value || '(empty)') + '" label="' + o.label + '" />\n' ret += ' <PropOption value="' + (escapeQuotes(o.value) || '(empty)') + '" label="' + escapeQuotes(o.label) + '" />\n'
}) })
ret +=' </PropOptions>\n' ret +=' </PropOptions>\n'
} }
@ -82,7 +89,7 @@ const buildProps = (component) => {
if (component.props.parameterGroups) { if (component.props.parameterGroups) {
component.props.parameterGroups.forEach((g) => { component.props.parameterGroups.forEach((g) => {
ret += '### ' + g.label + '\n' ret += '### ' + g.label + '\n'
ret += '<div class="props">\n<PropGroup name="' + g.name + '" label="' + g.label + '">\n' ret += '<div class="props">\n<PropGroup name="' + escapeQuotes(g.name) + '" label="' + escapeQuotes(g.label) + '">\n'
if (g.description) ret += ' ' + g.description + '\n' if (g.description) ret += ' ' + g.description + '\n'
const propsInGroup = component.props.parameters.filter((p) => p.groupName === g.name) const propsInGroup = component.props.parameters.filter((p) => p.groupName === g.name)
propsInGroup.forEach((p) => ret += buildProp(p)) propsInGroup.forEach((p) => ret += buildProp(p))