This is an automated email from the ASF dual-hosted git repository.
davin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil-vscode.git
The following commit(s) were added to refs/heads/main by this push:
new 8a1d690 - add missing element items xs:pattern, xs:totalDigits,
xs:fractionDigits, dfdl:property - add missing xs:restriction child elements -
add missing dfdl:escapeScheme element and the escapeScheme attributes - add
missing dfdl:newVariableInstance element - add additional missing dfdl:format
attributes - add a preceeding space if missing when auto completing an
attribute - add additional missing attributes - add a space after inserting an
attribute if missing - add getAnnota [...]
8a1d690 is described below
commit 8a1d690bf712a2eb3db0562c0424dac9e22c8d73
Author: rthomas320 <[email protected]>
AuthorDate: Wed Jul 19 07:35:15 2023 -0400
- add missing element items xs:pattern, xs:totalDigits,
xs:fractionDigits, dfdl:property
- add missing xs:restriction child elements
- add missing dfdl:escapeScheme element and the escapeScheme attributes
- add missing dfdl:newVariableInstance element
- add additional missing dfdl:format attributes
- add a preceeding space if missing when auto completing an attribute
- add additional missing attributes
- add a space after inserting an attribute if missing
- add getAnnotationParent function
- add appinfo switch statement
- add getAnnotationParent function
- add switch statement to appinfo case statement
- add missing dfdl:newVariableINstance to sequence/annotation/appinfo
- Update src/language/providers/attributeCompletion.ts
- Update src/language/providers/elementCompletion.ts
Co-authored-by: Shane Dell <[email protected]>
Closes #587
Closes #588
Closes #591
Closes #592
Closes #593
Closes #609
Closes #624
Closes #629
Closes #630
Closes #637
---
src/language/providers/attributeCompletion.ts | 142 +++++++--
src/language/providers/elementCompletion.ts | 179 ++++++++++--
.../providers/intellisense/attributeItems.ts | 320 ++++++++++++++++-----
.../providers/intellisense/attributeValueItems.ts | 120 +++++++-
src/language/providers/intellisense/commonItems.ts | 2 +-
.../providers/intellisense/elementItems.ts | 72 ++++-
src/language/providers/utils.ts | 6 +-
src/tests/suite/language/items.test.ts | 48 +++-
8 files changed, 752 insertions(+), 137 deletions(-)
diff --git a/src/language/providers/attributeCompletion.ts
b/src/language/providers/attributeCompletion.ts
index b423a8b..28d5d47 100644
--- a/src/language/providers/attributeCompletion.ts
+++ b/src/language/providers/attributeCompletion.ts
@@ -39,7 +39,9 @@ function getCompletionItems(
preVal: string = '',
additionalItems: string = '',
nsPrefix: string,
- dfdlPrefix: string
+ dfdlPrefix: string,
+ spacingChar: string,
+ afterChar: string
) {
let compItems: vscode.CompletionItem[] = getCommonItems(
itemsToUse,
@@ -48,7 +50,13 @@ function getCompletionItems(
nsPrefix
)
- attributeCompletion(dfdlPrefix).items.forEach((e) => {
+ attributeCompletion(
+ additionalItems,
+ nsPrefix,
+ dfdlPrefix,
+ spacingChar,
+ afterChar
+ ).items.forEach((e) => {
if (itemsToUse.includes(e.item)) {
const completionItem = createCompletionItem(e, preVal, nsPrefix)
compItems.push(completionItem)
@@ -69,6 +77,8 @@ export function getAttributeCompletionProvider() {
const triggerText = document
.lineAt(position)
.text.substring(0, position.character)
+ const charBeforeTrigger = triggerText.charAt(position.character - 1)
+ const charAfterTrigger = triggerText.charAt(position.character)
let nearestOpenItem = nearestOpen(document, position)
let itemsOnLine = getItemsOnLineCount(triggerText)
const nsPrefix = getXsdNsPrefix(document, position)
@@ -97,7 +107,9 @@ export function getAttributeCompletionProvider() {
triggerText,
nsPrefix,
preVal,
- additionalItems
+ additionalItems,
+ charBeforeTrigger,
+ charAfterTrigger
)
},
},
@@ -141,20 +153,33 @@ function checkNearestOpenItem(
triggerText: string,
nsPrefix: string,
preVal: string,
- additionalItems: string
+ additionalItems: string,
+ charBeforeTrigger: string,
+ charAfterTrigger: string
): vscode.CompletionItem[] | undefined {
+ const spacingChar: string =
+ charBeforeTrigger !== ' ' &&
+ charBeforeTrigger !== '\n' &&
+ charBeforeTrigger !== '\t'
+ ? ' '
+ : ''
+ const afterChar: string =
+ charAfterTrigger !== ' ' &&
+ charAfterTrigger !== '\n' &&
+ charAfterTrigger !== '\t'
+ ? ' '
+ : ''
switch (nearestOpenItem) {
case 'element':
return getCompletionItems(
[
'name',
'ref',
- 'dfdl:defineFormat',
- 'dfdl:defineEscapeScheme',
'type',
'minOccurs',
'maxOccurs',
'dfdl:occursCount',
+ 'dfdl:bitOrder',
'dfdl:byteOrder',
'dfdl:occursCountKind',
'dfdl:length',
@@ -166,17 +191,22 @@ function checkNearestOpenItem(
'dfdl:inputValueCalc',
'dfdl:outputValueCalc',
'dfdl:alignmentUnits',
+ 'dfdl:binaryNumberRep',
'dfdl:terminator',
'dfdl:outputNewLine',
'dfdl:choiceBranchKey',
'dfdl:prefixIncludesPrefixLength',
'dfdl:prefixLengthType',
'dfdl:representation',
+ 'dfdl:binaryBooleanTrueRep',
+ 'dfdl:binaryBooleanFalseRep',
],
preVal,
additionalItems,
nsPrefix,
- dfdlDefaultPrefix
+ dfdlDefaultPrefix,
+ spacingChar,
+ afterChar
)
case 'sequence':
return getCompletionItems(
@@ -190,7 +220,9 @@ function checkNearestOpenItem(
preVal,
'',
nsPrefix,
- dfdlDefaultPrefix
+ dfdlDefaultPrefix,
+ spacingChar,
+ afterChar
)
case 'choice':
return getCompletionItems(
@@ -204,7 +236,9 @@ function checkNearestOpenItem(
'',
'',
nsPrefix,
- dfdlDefaultPrefix
+ dfdlDefaultPrefix,
+ spacingChar,
+ afterChar
)
case 'group':
return getCompletionItems(
@@ -212,7 +246,9 @@ function checkNearestOpenItem(
'',
'',
nsPrefix,
- dfdlDefaultPrefix
+ dfdlDefaultPrefix,
+ spacingChar,
+ afterChar
)
case 'simpleType':
@@ -222,11 +258,15 @@ function checkNearestOpenItem(
'dfdl:length',
'dfdl:lengthKind',
'dfdl:representation',
+ 'dfdl:binaryBooleanTrueRep',
+ 'dfdl:binaryBooleanFalseRep',
],
'',
'',
nsPrefix,
- dfdlDefaultPrefix
+ dfdlDefaultPrefix,
+ spacingChar,
+ afterChar
)
case 'assert':
return getCompletionItems(
@@ -234,10 +274,20 @@ function checkNearestOpenItem(
'',
'',
nsPrefix,
- ''
+ '',
+ spacingChar,
+ afterChar
)
case 'discriminator':
- return getCompletionItems(['test', 'message'], '', '', nsPrefix, '')
+ return getCompletionItems(
+ ['test', 'message'],
+ '',
+ '',
+ nsPrefix,
+ '',
+ spacingChar,
+ afterChar
+ )
case 'format':
return getCompletionItems(
[
@@ -245,6 +295,9 @@ function checkNearestOpenItem(
'dfdl:bitOrder',
'dfdl:binaryNumberRep',
'dfdl:binaryFloatRep',
+ 'dfdl:binaryDecimalVirtualPoint',
+ 'dfdl:binaryPackedSignCodes',
+ 'dfdl:binaryNumberCheckPolicy',
'dfdl:encoding',
'dfdl:encodingErrorPolicy',
'dfdl:initiator',
@@ -255,6 +308,7 @@ function checkNearestOpenItem(
'dfdl:nilKind',
'dfdl:nilValue',
'dfdl:nilValueDelimiterPolicy',
+ 'dfdl:useNilForDefault',
'dfdl:lengthPattern',
'dfdl:outputNewLine',
'dfdl:separator',
@@ -262,12 +316,14 @@ function checkNearestOpenItem(
'dfdl:separatorSuppressionPolicy',
'dfdl:terminator',
'dfdl:occursCountKind',
+ 'dfdl:decimalSigned',
'dfdl:textStandardZeroRep',
'dfdl:textStandardInfinityRep',
'dfdl:textStandardExponentRep',
'dfdl:textStandardNaNRep',
'dfdl:textNumberPattern',
'dfdl:textNumberRep',
+ 'dfdl:textNumberJustification',
'dfdl:textNumberRoundingIncrement',
'dfdl:textNumberRoundingMode',
'dfdl:textStandardRoundingIncrement',
@@ -275,10 +331,13 @@ function checkNearestOpenItem(
'dfdl:textNumberCheckPolicy',
'dfdl:textOutputMinLength',
'dfdl:textPolicyOutputMinLength',
+ 'dfdl:textStandardDecimalSeparator',
'dfdl:textStandardGroupingSeparator',
'dfdl:textStringJustification',
+ 'dfdl:textStringPadCharacter',
'dfdl:textPadKind',
'dfdl:textStandardBase',
+ 'dfdl:textZonedSignStyle',
'dfdl:textTrimKind',
'dfdl:leadingSkip',
'dfdl:trailingSkip',
@@ -300,17 +359,61 @@ function checkNearestOpenItem(
'dfdl:outputNewLine',
'dfdl:representation',
'dfdl:escapeSchemeRef',
+ 'dfdl:calendarPattern',
'dfdl:calendarPatternKind',
+ 'dfdl:calendarCheckPolicy',
+ 'dfdl:calendarTimeZone',
+ 'dfdl:calendarObserveDST',
+ 'dfdl:calendarFirstDayOfWeek',
+ 'dfdl:calendarDaysInFirstWeek',
+ 'dfdl:calendarCenturyStart',
+ 'dfdl:calendarLanguage',
'dfdl:documentFinalTerminatorCanBeMissing',
'dfdl:emptyValueDelimiterPolicy',
+ 'dfdl:emptyElementParsePolicy',
+ ],
+ '',
+ '',
+ nsPrefix,
+ '',
+ spacingChar,
+ afterChar
+ )
+ case 'escapeScheme':
+ return getCompletionItems(
+ [
+ 'dfdl:escapeKind',
+ 'dfdl:escapeCharacter',
+ 'dfdl:escapeBlockStart',
+ 'dfdl:escapeBlockEnd',
+ 'dfdl:escapeEscapeCharacter',
+ 'dfdl:extraEscapedCharacters',
+ 'dfdl:generateEscapeBlock',
+ 'dfdl:escapeCharacterPolicy',
],
'',
'',
nsPrefix,
- ''
+ '',
+ spacingChar,
+ afterChar
)
case 'defineVariable':
- return getDefineVariableCompletionItems(preVal, additionalItems,
nsPrefix)
+ return getDefineVariableCompletionItems(
+ preVal,
+ additionalItems,
+ nsPrefix,
+ spacingChar,
+ afterChar
+ )
+ case 'newVariableInstance':
+ return getDefineVariableCompletionItems(
+ preVal,
+ additionalItems,
+ nsPrefix,
+ spacingChar,
+ afterChar
+ )
case 'setVariable':
const xmlValue = new vscode.CompletionItem('value')
xmlValue.insertText = new vscode.SnippetString('value="$1"$0')
@@ -324,16 +427,19 @@ function checkNearestOpenItem(
function getDefineVariableCompletionItems(
preVal: string,
additionalItems: string,
- nsPrefix: string
+ nsPrefix: string,
+ spacingChar: string,
+ afterChar: string
): vscode.CompletionItem[] {
let xmlItems = [
{
item: 'external',
- snippetString: preVal + 'external="${1|true,false|}"$0',
+ snippetString:
+ spacingChar + preVal + 'external="${1|true,false|}"$0' + afterChar,
},
{
item: 'defaultValue',
- snippetString: preVal + 'defaultValue="0$1"$0',
+ snippetString: spacingChar + preVal + 'defaultValue="0$1"$0' + afterChar,
},
]
diff --git a/src/language/providers/elementCompletion.ts
b/src/language/providers/elementCompletion.ts
index d3a7c0b..492b0f2 100644
--- a/src/language/providers/elementCompletion.ts
+++ b/src/language/providers/elementCompletion.ts
@@ -74,7 +74,7 @@ export function
getElementCompletionProvider(dfdlFormatString: string) {
let definedVariables = getDefinedVariables(document)
- let tagNearestTrigger = getTagNearestTrigger(
+ let [tagNearestTrigger, tagPosition] = getTagNearestTrigger(
document,
position,
triggerText,
@@ -84,10 +84,11 @@ export function
getElementCompletionProvider(dfdlFormatString: string) {
nsPrefix
)
- return checkTagNearestOpen(
+ return nearestOpenTagChildElements(
document,
position,
tagNearestTrigger,
+ tagPosition,
definedVariables,
nsPrefix
)
@@ -153,10 +154,11 @@ function getDefinedVariables(document:
vscode.TextDocument) {
return additionalTypes
}
-function checkTagNearestOpen(
+function nearestOpenTagChildElements(
document: vscode.TextDocument,
position: vscode.Position,
tagNearestTrigger: string,
+ tagPosition: vscode.Position,
definedVariables: string,
nsPrefix: string
) {
@@ -205,7 +207,16 @@ function checkTagNearestOpen(
)
case 'restriction':
return getElementCompletionItems(
- ['maxInclusive', 'maxExclusive', 'minInclusive', 'minExclusive'],
+ [
+ 'maxInclusive',
+ 'maxExclusive',
+ 'minInclusive',
+ 'minExclusive',
+ 'pattern',
+ 'totalDigits',
+ 'fractionDigits',
+ 'enumeration',
+ ],
'',
'',
nsPrefix
@@ -213,28 +224,103 @@ function checkTagNearestOpen(
case 'annotation':
return getElementCompletionItems(['appinfo'], '', '', nsPrefix)
case 'appinfo':
- return getElementCompletionItems(
- [
- 'dfdl:assert',
- 'dfdl:discriminator',
- 'dfdl:defineFormat',
- 'dfdl:format',
- 'dfdl:defineVariable',
- 'dfdl:setVariable',
- 'dfdl:defineEscapeScheme',
- 'dfdl:element',
- 'dfdl:simpleType',
- ],
- '',
- '',
- nsPrefix
- )
+ let triggerText = document.lineAt(tagPosition.line).text
+ let iCount = getItemsOnLineCount(triggerText)
+ const newPosition =
+ iCount < 2
+ ? new vscode.Position(tagPosition.line - 1, tagPosition.character)
+ : tagPosition
+ let pElement = getAnnotationParent(document, newPosition, nsPrefix)
+ switch (pElement) {
+ case 'schema':
+ return getElementCompletionItems(
+ [
+ 'dfdl:defineFormat',
+ 'dfdl:defineVariable',
+ 'dfdl:defineEscapeScheme',
+ 'dfdl:format',
+ ],
+ '',
+ '',
+ nsPrefix
+ )
+ case 'element':
+ return getElementCompletionItems(
+ ['dfdl:assert', 'dfdl:discriminator', 'dfdl:setVariable'],
+ '',
+ '',
+ nsPrefix
+ )
+ case 'element ref':
+ return getElementCompletionItems(
+ ['dfdl:assert', 'dfdl:discriminator', 'dfdl:setVariable'],
+ '',
+ '',
+ nsPrefix
+ )
+ case 'sequence':
+ return getElementCompletionItems(
+ [
+ 'dfdl:assert',
+ 'dfdl:discriminator',
+ 'dfdl:newVariableInstance',
+ 'dfdl:sequence',
+ ],
+ '',
+ '',
+ nsPrefix
+ )
+ case 'choice':
+ return getElementCompletionItems(
+ [
+ 'dfdl:assert',
+ 'dfdl:choice',
+ 'dfdl:discriminator',
+ 'dfdl:newVariableInstance',
+ 'dfdl:setVariable',
+ ],
+ '',
+ '',
+ nsPrefix
+ )
+ case 'group ref':
+ return getElementCompletionItems(
+ [
+ 'dfdl:assert',
+ 'dfdl:group',
+ 'dfdl:discriminator',
+ 'dfdl:newVariableInstance',
+ 'dfdl:setVariable',
+ ],
+ '',
+ '',
+ nsPrefix
+ )
+ case 'simpleType':
+ return getElementCompletionItems(
+ [
+ 'dfdl:assert',
+ 'dfdl:discriminator',
+ 'dfdl:setVariable',
+ 'dfdl:simpleType',
+ ],
+ '',
+ '',
+ nsPrefix
+ )
+ default:
+ return undefined
+ }
case 'assert':
return getElementCompletionItems(['CDATA', '{}'], '', '', nsPrefix)
case 'discriminator':
return getElementCompletionItems(['CDATA', '{}'], '', '', nsPrefix)
case 'defineFormat':
- return getElementCompletionItems(['format'], '', '', nsPrefix)
+ return getElementCompletionItems(['dfdl:format'], '', '', nsPrefix)
+ case 'defineEscapeScheme':
+ return getElementCompletionItems(['dfdl:escapeScheme'], '', '', nsPrefix)
+ case 'format':
+ return getElementCompletionItems(['dfdl:property'], '', '', nsPrefix)
case 'schema':
return getElementCompletionItems(
[
@@ -259,6 +345,47 @@ function checkTagNearestOpen(
}
}
+export function getAnnotationParent(
+ document: vscode.TextDocument,
+ tagPosition: vscode.Position,
+ nsPrefix: string
+): string {
+ let pElementText = document.lineAt(tagPosition.line).text
+ let iCount = getItemsOnLineCount(pElementText)
+ let pElement = ''
+ let [nElement, newPosition] = getTagNearestTrigger(
+ document,
+ tagPosition,
+ pElementText,
+ tagPosition.line,
+ tagPosition.character,
+ iCount,
+ nsPrefix
+ )
+ pElement = nElement
+ //get parent of annotation tag
+ if (pElement === 'annotation') {
+ if (iCount < 2) {
+ newPosition = new vscode.Position(
+ newPosition.line - 1,
+ newPosition.character
+ )
+ }
+ pElementText = document.lineAt(newPosition.line).text
+ let [nElement] = getTagNearestTrigger(
+ document,
+ newPosition,
+ pElementText,
+ newPosition.line,
+ newPosition.character,
+ iCount,
+ nsPrefix
+ )
+ pElement = nElement
+ }
+ return pElement
+}
+
export function getTagNearestTrigger(
document: vscode.TextDocument,
position: vscode.Position,
@@ -267,7 +394,7 @@ export function getTagNearestTrigger(
triggerPos: number,
itemsOnLine: number,
nsPrefix: string
-): string {
+): [string, vscode.Position] {
let [startLine, startPos] = [triggerLine, triggerPos]
let tagNearestTrigger = 'none'
@@ -276,7 +403,7 @@ export function getTagNearestTrigger(
document.lineCount === 1 &&
position.character === 0
) {
- return 'emptySchema'
+ return ['emptySchema', position]
}
while (true) {
@@ -304,7 +431,7 @@ export function getTagNearestTrigger(
!beforeTriggerTag.startsWith('</')
) {
tagNearestTrigger = foundTag
- return tagNearestTrigger
+ return [tagNearestTrigger, new vscode.Position(foundLine, foundPos)]
}
}
@@ -322,7 +449,7 @@ export function getTagNearestTrigger(
if (itemsOnLine > 1 && foundLine === triggerLine) {
if (foundTag === endTag && endTagPos >= triggerPos) {
tagNearestTrigger = foundTag
- return tagNearestTrigger
+ return [tagNearestTrigger, new vscode.Position(foundLine, foundPos)]
}
if (endTag === 'none') {
@@ -338,7 +465,7 @@ export function getTagNearestTrigger(
endTag === 'xml version'
) {
tagNearestTrigger = foundTag
- return tagNearestTrigger
+ return [tagNearestTrigger, new vscode.Position(foundLine, foundPos)]
}
startLine = foundLine - 1
diff --git a/src/language/providers/intellisense/attributeItems.ts
b/src/language/providers/intellisense/attributeItems.ts
index e17d47b..b999a41 100644
--- a/src/language/providers/intellisense/attributeItems.ts
+++ b/src/language/providers/intellisense/attributeItems.ts
@@ -16,367 +16,533 @@
*/
// prettier-ignore
-export const attributeCompletion = (dfdlPrefix: string) => {
+export const attributeCompletion = (
+ additionalItems,
+ nsPrefix: string,
+ dfdlPrefix: string,
+ spacingChar: string,
+ afterChar: string
+ ) => {
return {
items: [
{
item: 'name',
- snippetString: 'name="$1"$0',
+ snippetString: spacingChar + 'name="$1"$0' + afterChar,
markdownString: 'specify name',
},
{
item: 'ref',
- snippetString: 'ref="$1"$0',
- markdownString: 'specify reference name'
+ snippetString: spacingChar + 'ref="$1"$0' + afterChar,
+ markdownString: 'Specifies the name of an element in this schema'
},
{
item: 'minOccurs',
- snippetString: 'minOccurs="${1|0,1|}"$0',
+ snippetString: spacingChar + 'minOccurs="${1|0,1|}"$0' + afterChar,
markdownString: 'Minimum number of times element will occur',
},
{
item: 'maxOccurs',
- snippetString: 'maxOccurs="${1|0,1,unbounded|}"$0',
+ snippetString: spacingChar + 'maxOccurs="${1|0,1,unbounded|}"$0' +
afterChar,
markdownString: 'Maximum number of times element will occur',
},
{
item: 'dfdl:occursCount',
- snippetString: dfdlPrefix + 'occursCount="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'occursCount="$1"$0' +
afterChar,
markdownString: 'dfdl:occursCount property takes an expression which
commonly looks in the Infoset via an expression, to obtain the count from
another element.',
},
{
item: 'dfdl:byteOrder',
- snippetString: dfdlPrefix +
'byteOrder="${1|bigEndian,littleEndian|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'byteOrder="${1|bigEndian,littleEndian|}"$0' + afterChar,
markdownString: 'This property applies to all Number, Calendar (date
and time), and Boolean types with representation binary',
},
{
item: 'dfdl:bitOrder',
- snippetString: dfdlPrefix +
'bitOrder="${1|mostSignificantBitFirst,leastSignificantBitFirst|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'bitOrder="${1|mostSignificantBitFirst,leastSignificantBitFirst|}"$0' +
afterChar,
markdownString: 'Determines the specific bits of any grammar region',
},
{
item: 'dfdl:occursCountKind',
- snippetString: dfdlPrefix +
'occursCountKind="${1|expression,fixed,implicit,parsed,stopValue|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'occursCountKind="${1|expression,fixed,implicit,parsed,stopValue|}"$0' +
afterChar,
markdownString: 'Specifies how the actual number of occurrences is to
be established',
},
{
item: 'dfdl:length',
- snippetString: dfdlPrefix + 'length="$1"$0',
- markdownString: 'length can be an expression that resolves to an
unsigned integer, or a literal unsigned integer',
+ snippetString: spacingChar + dfdlPrefix + 'length="$1"$0',
+ markdownString: 'length can be an expression that resolves to an
unsigned integer, or a literal unsigned integer' + afterChar,
},
{
item: 'dfdl:lengthKind',
- snippetString: dfdlPrefix +
'lengthKind="${1|delimited,fixed,explicit,implicit,prefixed,pattern,endOfParent|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'lengthKind="${1|delimited,fixed,explicit,implicit,prefixed,pattern,endOfParent|}"$0'
+ afterChar,
markdownString: 'lengthKind can be delimited, fixed, explicit,
implicit, prefixed,pattern, or endOfParent',
},
{
item: 'dfdl:prefixIncludesPrefixLength',
- snippetString: dfdlPrefix +
'prefixIncludesPrefixLength="${1|yes,no|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'prefixIncludesPrefixLength="${1|yes,no|}"$0' + afterChar,
markdownString: 'Specifies whether the length given by a prefix
includes the length of the prefix as well as the length of the content region',
},
{
item: 'dfdl:prefixLengthType',
- snippetString: dfdlPrefix + 'prefixLengthType="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'prefixLengthType="$1"$0' +
afterChar,
markdownString: 'Name of a simple type derived from xs:integer or any
subtype of it.',
},
{
item: 'dfdl:utf16Width',
- snippetString: dfdlPrefix + 'utf16Width="${1|fixed,variable|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'utf16Width="${1|fixed,variable|}"$0' + afterChar,
markdownString: 'Specifies whether the encoding UTF-16 is treated as a
fixed or variable width encoding',
},
{
item: 'dfdl:encoding',
- snippetString: dfdlPrefix +
'encoding="${1|US-ASCII,ASCII,UTF-8,UTF-16,UTF-16BE,UTF-16LE,ISO-8859-1|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'encoding="${1|US-ASCII,ASCII,UTF-8,UTF-16,UTF-16BE,UTF-16LE,ISO-8859-1|}"$0' +
afterChar,
markdownString: 'This property can be computed by way of an expression
which returns an appropriate string value',
},
{
item: 'dfdl:encodingErrorPolicy',
- snippetString: dfdlPrefix +
'encodingErrorPolicy="${1|error,replace|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'encodingErrorPolicy="${1|error,replace|}"$0' + afterChar,
markdownString: 'This property provides control of how decoding and
encoding errors are handled when converting the data to text, or text to data',
},
{
item: 'dfdl:nilKind',
- snippetString: dfdlPrefix +
'nilKind="${1|literalCharacter,literalValue,logicalValue|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'nilKind="${1|literalCharacter,literalValue,logicalValue|}"$0' + afterChar,
markdownString: 'Specifies how dfdl:<nilValue> is interpreted to
represent the nil value in the data stream'
},
{
item: 'dfdl:nilValue',
- snippetString: dfdlPrefix + 'nilValue="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'nilValue="$1"$0' +
afterChar,
markdownString: 'Used to provide a logical value that is used to
indicate the data is nilled'
},
{
item: 'dfdl:nilValueDelimiterPolicy',
- snippetString: dfdlPrefix +
'nilValueDelimiterPolicy="${1|initiator,terminator,both,none|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'nilValueDelimiterPolicy="${1|initiator,terminator,both,none|}"$0' + afterChar,
markdownString: 'Controls whether matching one of the nil values also
involves matching the initiator or terminator specified by the element',
},
+ {
+ item: 'dfdl:useNilForDefault',
+ snippetString: spacingChar + dfdlPrefix +
'useNilForDefault="${1|yes,no|}"$0' + afterChar,
+ markdownString: 'Controls whether to set the Infoset item [nilled]
boolean member, or to use the XSD default or fixed properties to obtain a data
value'
+ },
{
item: 'dfdl:alignment',
- snippetString: dfdlPrefix + 'alignment="${1|1,2,implicit|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'alignment="${1|1,2,implicit|}"$0' + afterChar,
markdownString: "Alignment required for the beginning of the
item.\nCan be non-negative integer or 'implicit'.",
},
{
item: 'dfdl:lengthUnits',
- snippetString: dfdlPrefix +
'lengthUnits="${1|bits,bytes,characters|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'lengthUnits="${1|bits,bytes,characters|}"$0' + afterChar,
markdownString: 'lengthUnits can be specified as bits, bytes, or
characters',
},
{
item: 'dfdl:lengthPattern',
- snippetString: dfdlPrefix + 'lengthPattern="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'lengthPattern="$1"$0' +
afterChar,
markdownString: 'lengthPattern takes a regular expression which is
used to scan the data stream for matching data',
},
{
item: 'dfdl:inputValueCalc',
- snippetString: dfdlPrefix + 'inputValueCalc="{$1}"$0',
+ snippetString: spacingChar + dfdlPrefix + 'inputValueCalc="{$1}"$0' +
afterChar,
markdownString: 'An expression that calculates the value of the
element when parsing',
},
{
item: 'dfdl:outputValueCalc',
- snippetString: dfdlPrefix + 'outputValueCalc="{$1}"$0',
+ snippetString: spacingChar + dfdlPrefix + 'outputValueCalc="{$1}"$0' +
afterChar,
markdownString: 'An expression that calculates the value of the
current element when unparsing',
},
{
item: 'dfdl:alignmentUnits',
- snippetString: dfdlPrefix + 'alignmentUnits="${1|bits,bytes|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'alignmentUnits="${1|bits,bytes|}"$0' + afterChar,
markdownString: "Scales the alignment.\nCan only be used when
alignment is bits or bytes.\nValid values are 'bits or 'bytes'.",
},
{
item: 'dfdl:outputNewLine',
- snippetString: dfdlPrefix +
'outputNewLine="${1|%CR;,%LF;,%CR;%LF;,%NEL;,%LS;|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'outputNewLine="${1|%CR;,%LF;,%CR;%LF;,%NEL;,%LS;|}"$0' + afterChar,
markdownString: 'Specifies the character or characters that are used
to replace the %NL; character class entity during unparse',
},
{
item: 'dfdl:choiceBranchKey',
- snippetString: dfdlPrefix + 'choiceBranchKey="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'choiceBranchKey="$1"$0' +
afterChar,
markdownString: 'List of DFDL String Literals',
},
{
item: 'dfdl:representation',
- snippetString: dfdlPrefix + 'representation="${1|binary,text|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'representation="${1|binary,text|}"$0' + afterChar,
markdownString: 'Identifies the physical representation of the element
as text or binary',
},
{
item: 'dfdl:textStringJustification',
- snippetString: dfdlPrefix +
'textStringJustification="${1|left,right,center|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textStringJustification="${1|left,right,center|}"$0' + afterChar,
+ markdownString: 'Specifies the string justification',
+ },
+ {
+ item: 'dfdl:textStringPadCharacter',
+ snippetString: spacingChar + dfdlPrefix +
'textStringPadCharacter="$1"$0' + afterChar,
markdownString: 'Specifies the string justification',
},
{
item: 'dfdl:textStandardZeroRep',
- snippetString: dfdlPrefix + 'textStandardZeroRep="0"$0',
+ snippetString: spacingChar + dfdlPrefix + 'textStandardZeroRep="0"$0'
+ afterChar,
markdownString: 'Specifies the whitespace separated list of
alternative DFDL String Literals that are equivalent to zero ',
},
{
item: 'dfdl:textStandardInfinityRep',
- snippetString: dfdlPrefix + 'textStandardInfinityRep="Inf"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textStandardInfinityRep="Inf"$0' + afterChar,
markdownString: 'The value used to represent infinity.',
},
{
item: 'dfdl:textStandardExponentRep',
- snippetString: dfdlPrefix + 'textStandardExponentRep="E"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textStandardExponentRep="E"$0' + afterChar,
markdownString: 'Defines the actual character(s) that appear in the
data as the exponent indicator',
},
{
item: 'dfdl:textStandardNaNRep',
- snippetString: dfdlPrefix + 'textStandardNaNRep="NaN"$0',
+ snippetString: spacingChar + dfdlPrefix + 'textStandardNaNRep="NaN"$0'
+ afterChar,
markdownString: 'Specifies the value used to represent NaN ',
},
{
item: 'dfdl:textNumberPattern',
- snippetString: dfdlPrefix +
'textNumberPattern="#,##0.###;-#,##0.###"$0',
- markdownString: 'Defines the ICU-like pattern that describes the
format of the text number',
+ snippetString: spacingChar + dfdlPrefix +
'textNumberPattern="#,##0.###;-#,##0.###"$0' + afterChar,
+ markdownString: 'Indicates whether an xs:decimal element is signed',
+ },
+ {
+ item: 'dfdl:decimalSigned',
+ snippetString: spacingChar + dfdlPrefix +
'decimalSigned="${1|yes,no|}"$0' + afterChar,
+ markdownString: 'Represented as standard characters in the character
set encoding or represented as a zoned decimal in the character set encoding',
},
{
item: 'dfdl:textNumberRep',
- snippetString: dfdlPrefix + 'textNumberRep="${1|standard,zoned|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textNumberRep="${1|standard,zoned|}"$0' + afterChar,
markdownString: 'Represented as standard characters in the character
set encoding or represented as a zoned decimal in the character set encoding',
},
+ {
+ item: 'dfdl:textNumberJustification',
+ snippetString: spacingChar + dfdlPrefix +
'textNumberJustification=${1|left,right,center|}"$0' + afterChar,
+ markdownString: 'Controls how the data is padded or trimmed on parsing
and unparsing',
+ },
{
item: 'dfdl:textNumberRoundingMode',
- snippetString: dfdlPrefix +
'textNumberRoundingMode="${1|roundCeiling,roundFloor,roundDown,roundUp,roundHalfEven,roundHalfDown,roundHalfUp,roundUnnecessary|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textNumberRoundingMode="${1|roundCeiling,roundFloor,roundDown,roundUp,roundHalfEven,roundHalfDown,roundHalfUp,roundUnnecessary|}"$0'
+ afterChar,
markdownString: 'Specifies how rounding occurs during unparsing',
},
{
item: 'dfdl:textNumberRoundingIncrement',
- snippetString: dfdlPrefix + 'textNumberRoundingIncrement="0"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textNumberRoundingIncrement="0"$0' + afterChar,
markdownString: 'Specifies the rounding increment to use during
unparsing',
},
{
item: 'dfdl:textNumberRounding',
- snippetString: dfdlPrefix +
'textNumberRounding="${1|explicit,pattern|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textNumberRounding="${1|explicit,pattern|}"$0' + afterChar,
markdownString: 'Specifies how rounding is controlled during
unparsing',
},
{
item: 'dfdl:textNumberCheckPolicy',
- snippetString: dfdlPrefix +
'textNumberCheckPolicy="${1|lax,strict|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textNumberCheckPolicy="${1|lax,strict|}"$0' + afterChar,
markdownString: 'Indicates how lenient to be when parsing against the
dfdl:textNumberPattern',
},
{
item: 'dfdl:textOutputMinLength',
- snippetString: dfdlPrefix + 'textOutputMinLength="0"$0',
+ snippetString: spacingChar + dfdlPrefix + 'textOutputMinLength="0"$0'
+ afterChar,
markdownString: 'Specifies the minimum content length during unparsing
for simple types that do not allow the XSD minLength facet to be specified',
},
+ {
+ item: 'dfdl:textStandardDecimalSeparator',
+ snippetString: spacingChar + 'dfdl:textStandardDecimalSeparator=","$0'
+ afterChar,
+ markdownString: 'Defines a whitespace separated list of single
characters that appear (individually) in the data as the decimal separator',
+ },
{
item: 'dfdl:textStandardGroupingSeparator',
- snippetString: 'ddl:textStandardGroupingSeparator=","$0',
+ snippetString: spacingChar +
'dfdl:textStandardGroupingSeparator=","$0' + afterChar,
markdownString: 'Specifies the single character that can appear in the
data as the grouping separator',
},
{
item: 'dfdl:textPadKind',
- snippetString: dfdlPrefix + 'textPadKind="${1|none,padChar|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textPadKind="${1|none,padChar|}"$0' + afterChar,
markdownString: 'Indicates whether to pad the data value on unparsing',
},
{
item: 'dfdl:textStandardBase',
- snippetString: dfdlPrefix + 'textStandardBase="${1|2,8,10,16|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textStandardBase="${1|2,8,10,16|}"$0' + afterChar,
markdownString: 'Indicates the number base',
},
+ {
+ item: 'dfdl:textZonedSignStyle',
+ snippetString: spacingChar + dfdlPrefix + 'textZonedSignStyle="$1"$0'
+ afterChar,
+ markdownString: 'Specifies the code points that are used to modify the
sign nibble of the byte containing the sign',
+ },
{
item: 'dfdl:textTrimKind',
- snippetString: dfdlPrefix + 'textTrimKind="${1|none,padChar|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'textTrimKind="${1|none,padChar|}"$0' + afterChar,
markdownString: 'Indicates whether to trim data on parsing',
},
+ {
+ item: 'dfdl:textBooleanTrueRep',
+ snippetString: spacingChar + dfdlPrefix + 'textBooleanTrueRep="$1"$0'
+ afterChar,
+ markdownString: 'A whitespace separated list of representations to be
used for true',
+ },
+ {
+ item: 'dfdl:textBooleanFalseRep',
+ snippetString: spacingChar + dfdlPrefix + 'textBooleanFalseRep="$1"$0'
+ afterChar,
+ markdownString: 'A whitespace separated list of representations to be
used for false',
+ },
+ {
+ item: 'dfdl:textBooleanJustification',
+ snippetString: spacingChar + dfdlPrefix +
'textBooleanJustification="${1|left,right,center|}"$0' + afterChar,
+ markdownString: 'Controls how the data is padded or trimmed on parsing
and unparsing',
+ },
+ {
+ item: 'dfdl:textBooleanPadCharacter',
+ snippetString: spacingChar + dfdlPrefix +
'textBooleanPadCharacter="$1"$0' + afterChar,
+ markdownString: 'The value that is used when padding or trimming
boolean elements',
+ },
{
item: 'dfdl:leadingSkip',
- snippetString: dfdlPrefix + 'leadingSkip="0$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'leadingSkip="0$1"$0' +
afterChar,
markdownString: 'A non-negative number of bytes or bits to skip before
alignment is applied',
},
{
item: 'dfdl:trailingSkip',
- snippetString: dfdlPrefix + 'trailingSkip="0$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'trailingSkip="0$1"$0' +
afterChar,
markdownString: 'A non-negative number of bytes or bits to skip after
the element,',
},
{
item: 'dfdl:truncateSpecifiedLengthString',
- snippetString: dfdlPrefix +
'truncateSpecifiedLengthString="${1|no,yes|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'truncateSpecifiedLengthString="${1|no,yes|}"$0' + afterChar,
markdownString: 'This property provides the means to express an error,
or the strings can be truncated to fit when the strings in an Infoset being
unparsed do not fit within those specified lengths',
},
{
item: 'dfdl:sequenceKind',
- snippetString: dfdlPrefix + 'SequenceKind
="${1|ordered,unordered|}"$0',
+ snippetString: spacingChar + dfdlPrefix + 'SequenceKind
="${1|ordered,unordered|}"$0' + afterChar,
markdownString: 'Defines whether the items are expected in the same
order that they appear in the schema or in any order',
},
{
item: 'dfdl:separator',
- snippetString: dfdlPrefix + 'separator="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'separator="$1"$0' +
afterChar,
markdownString: 'Specifies a whitespace separated list of alternative
DFDL String Literals that are the possible separators for the sequence',
},
{
item: 'dfdl:separatorPosition',
- snippetString: dfdlPrefix +
'separatorPosition="${1|infix,postfix,prefix|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'separatorPosition="${1|infix,postfix,prefix|}"$0' + afterChar,
markdownString: 'specifies where the separator occurs between the
elements',
},
{
item: 'dfdl:separatorSuppressionPolicy',
- snippetString: dfdlPrefix +
'separatorSuppressionPolicy="${1|anyEmpty,never,trailingEmpty,trailingEmptyStrict|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'separatorSuppressionPolicy="${1|anyEmpty,never,trailingEmpty,trailingEmptyStrict|}"$0'
+ afterChar,
markdownString: 'Controls the circumstances when separators are
expected in the data when parsing, or generated when unparsing',
},
{
item: 'dfdl:terminator',
- snippetString: dfdlPrefix + 'terminator="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'terminator="$1"$0' +
afterChar,
markdownString: 'charater or bytes found in the input stream that
designate termination of an element',
},
{
item: 'dfdl:textBidi',
- snippetString: dfdlPrefix + 'textBidi="${1|no,yes|}"$0',
+ snippetString: spacingChar + dfdlPrefix + 'textBidi="${1|no,yes|}"$0'
+ afterChar,
markdownString: 'This property exists in anticipation of future DFDL
features that enable bidirectional text processing',
},
{
item: 'dfdl:hiddenGroupRef',
- snippetString: 'dfdl:hiddenGroupRef="$1"$0',
+ snippetString: spacingChar + 'dfdl:hiddenGroupRef="$1"$0' + afterChar,
markdownString: 'Reference to a global model group definition',
},
{
item: 'dfdl:choiceLengthKind',
- snippetString: dfdlPrefix +
'choiceLengthKind="${1|explicit,implicit|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'choiceLengthKind="${1|explicit,implicit|}"$0' + afterChar,
markdownString: 'Determines whether the branches of the choice are
always filled (explicit) to the fixed-length specified by dfdl:choiceLength or
not filled (implicit)',
},
{
item: 'dfdl:choiceLength',
- snippetString: dfdlPrefix + 'choiceLength="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'choiceLength="$1"$0' +
afterChar,
markdownString: 'Specifies the length of the choice in bytes, only
used when dfdl:choiceLengthKind is explicit',
},
{
item: 'dfdl:fillByte',
- snippetString: dfdlPrefix + 'fillByte="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'fillByte="$1"$0' +
afterChar,
markdownString: 'A single byte specified as a DFDL byte value entity
or a single character, used on unparsing to fill empty space',
},
{
item: 'dfdl:ignoreCase',
- snippetString: dfdlPrefix + 'ignoreCase="${1|no,yes|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'ignoreCase="${1|no,yes|}"$0' + afterChar,
markdownString: 'Whether mixed case data is accepted when matching
delimiters and data values on input',
},
{
item: 'dfdl:initiatedContent',
- snippetString: dfdlPrefix + 'initiatedContent="${1|yes,no|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'initiatedContent="${1|yes,no|}"$0' + afterChar,
markdownString: 'yes indicates all branches of a choice are
initiated\nno indicates the branch dfdl:initator property may be ste to empty
string',
},
{
item: 'dfdl:initiator',
- snippetString: dfdlPrefix + 'initiator="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'initiator="$1"$0' +
afterChar,
markdownString: 'Specifies an ordered whitespace separated list of
alternative DFDL String Literals one of which marks the beginning of the
element or group of elements ',
},
{
item: 'dfdl:choiceDispatchKey',
- snippetString: dfdlPrefix + 'choiceDispatchKey="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'choiceDispatchKey="$1"$0' +
afterChar,
markdownString: 'The expression must evaluate to a string, the string
must match one of the dfdl:choiceBranchKey property values of one of the
branches of the choice',
},
{
item: 'dfdl:binaryNumberRep',
- snippetString: dfdlPrefix +
'binaryNumberRep="${1|binary,packed,bcd,ibm4690Packed|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'binaryNumberRep="${1|binary,packed,bcd,ibm4690Packed|}"$0' + afterChar,
markdownString: 'binary,packed,bcd, or ibm4690Packed',
},
{
item: 'dfdl:floating',
- snippetString: dfdlPrefix + 'floating="${1|no,yes|}"$0',
+ snippetString: spacingChar + dfdlPrefix + 'floating="${1|no,yes|}"$0'
+ afterChar,
markdownString: 'yes or no',
},
{
item: 'dfdl:binaryFloatRep',
- snippetString: dfdlPrefix + 'binaryFloatRep="${1|ieee,ibm390Hex|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'binaryFloatRep="${1|ieee,ibm390Hex|}"$0' + afterChar,
markdownString: 'ieee or ibm390Hex',
},
+ {
+ item: 'dfdl:binaryDecimalVirtualPoint',
+ snippetString: spacingChar + dfdlPrefix +
'binaryDecimalVirtualPoint="$1"$0' + afterChar,
+ markdownString: 'An integer that represents the position of an implied
decimal point within a number',
+ },
+ {
+ item: 'dfdl:binaryPackedSignCodes',
+ snippetString: spacingChar + dfdlPrefix +
'binaryPackedSignCodes="$1"$0' + afterChar,
+ markdownString: 'A whitespace separated string giving the hex sign
nibbles to use for a positive value, a negative value, an unsigned value, and
zero',
+ },
+ {
+ item: 'dfdl:binaryNumberCheckPolicy',
+ snippetString: spacingChar + dfdlPrefix +
'binaryNumberCheckPolicy="${1|strict,lax|}"$0' + afterChar,
+ markdownString: 'Indicates how lenient to be when parsing binary
numbers',
+ },
+ {
+ item: 'dfdl:binaryBooleanTrueRep',
+ snippetString: spacingChar + dfdlPrefix +
'binaryBooleanTrueRep="$1"$0' + afterChar,
+ markdownString: 'A binary xs:unsignedInt gives the representation for
true',
+ },
+ {
+ item: 'dfdl:binaryBooleanFalseRep',
+ snippetString: spacingChar + dfdlPrefix +
'binaryBooleanFalseRep="$1"$0' + afterChar,
+ markdownString: 'A binary xs:unsignedInt gives the representation for
false',
+ },
+ {
+ item: 'dfdl:calendarPattern',
+ snippetString: spacingChar + dfdlPrefix + 'calendarPattern="$1"$0' +
afterChar,
+ markdownString: 'Defines the ICU pattern that describes the format of
the calendar. The pattern defines where the year, month, day, hour, minute,
second, fractional second and time zone components appear',
+ },
{
item: 'dfdl:calendarPatternKind',
- snippetString: dfdlPrefix +
'calendarPatternKind="${1|explicit,implicit|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'calendarPatternKind="${1|explicit,implicit|}"$0' + afterChar,
markdownString: 'The pattern is given by dfdl:calendarPattern explicit
or the pattern is derived from the XML schema date/time type (implicit)',
},
{
- item: "dfdl:documentFinalTerminatorCanBeMissing",
- snippetString: dfdlPrefix +
'documentFinalTerminatorCanBeMissing="${1|yes,no|}"$0',
+ item: 'dfdl:calendarCheckPolicy',
+ snippetString: spacingChar + dfdlPrefix +
'calendarCheckPolicy="${1|strict,lax|}"$0' + afterChar,
+ markdownString: 'Indicates how lenient to be when parsing against the
pattern',
+ },
+ {
+ item: 'dfdl:calendarTimeZone',
+ snippetString: spacingChar + dfdlPrefix + 'calendarTimeZone="$1"$0' +
afterChar,
+ markdownString: 'Provides the time zone that is assumed if no time
zone explicitly occurs in the data',
+ },
+ {
+ item: 'dfdl:calendarObserveDST',
+ snippetString: spacingChar + dfdlPrefix +
'calendarObserveDST="${1|yes,no|}"$0' + afterChar,
+ markdownString: 'Whether the time zone given in dfdl:calendarTimeZone
observes daylight savings time',
+ },
+ {
+ item: 'dfdl:calendarFirstDayOfWeek',
+ snippetString: spacingChar + dfdlPrefix +
'calendarFirstDayOfWeek="${1|Monday,Sunday|}"$0' + afterChar,
+ markdownString: 'The day of the week upon which a new week is
considered to start',
+ },
+ {
+ item: 'dfdl:calendarDaysInFirstWeek',
+ snippetString: spacingChar + dfdlPrefix +
'calendarDaysInFirstWeek="${1|1,2,3,4,5,6,7|}"$0' + afterChar,
+ markdownString: 'Specify the number of days of the new year that must
fall within the first week',
+ },
+ {
+ item: 'dfdl:calendarCenturyStart',
+ snippetString: spacingChar + dfdlPrefix +
'calendarCenturyStart="$1"$0' + afterChar,
+ markdownString: 'specifies the two digits that start a 100-year window
that contains the current year',
+ },
+ {
+ item: 'dfdl:calendarLanguage',
+ snippetString: spacingChar + dfdlPrefix + 'calendarLanguage="$1"$0' +
afterChar,
+ markdownString: 'The language that is used when the pattern produces a
presentation in text',
+ },
+ {
+ item: "dfdl:documentFinalTerminatorCanBeMissing" + afterChar,
+ snippetString: spacingChar + dfdlPrefix +
'documentFinalTerminatorCanBeMissing="${1|yes,no|}"$0',
markdownString: 'Specifies whether the final line can be missing',
},
{
item:'dfdl:emptyValueDelimiterPolicy',
- snippetString: dfdlPrefix +
'emptyValueDelimiterPolicy="${1|initiator,terminator,both,none|}"$0',
+ snippetString: spacingChar + dfdlPrefix +
'emptyValueDelimiterPolicy="${1|initiator,terminator,both,none|}"$0' +
afterChar,
+ markdownString: 'Indicates which of initiator, terminator, both, or
neither must be present when an element in the data stream is empty.',
+ },
+ {
+ item:'dfdl:emptyElementParsePolicy',
+ snippetString: spacingChar + dfdlPrefix +
'emptyElementParsePolicy="${1|treatAsAbsent,treatAsEmpty|}"$0' + afterChar,
markdownString: 'Indicates which of initiator, terminator, both, or
neither must be present when an element in the data stream is empty.',
},
{
item: 'dfdl:escapeSchemeRef',
- snippetString: dfdlPrefix + 'escapeSchemeRef="$1"$0',
+ snippetString: spacingChar + dfdlPrefix + 'escapeSchemeRef="$1"$0' +
afterChar,
markdownString: "Refers to a named escape scheme definition via its
qualified name",
},
+ {
+ item: 'dfdl:escapeKind',
+ snippetString: spacingChar + dfdlPrefix +
'escapeKind="${1|escapeCharacter,escapeBlock|}"$0' + afterChar,
+ markdownString: "The type of escape mechanism defined in the escape
scheme",
+ },
+ {
+ item: 'dfdl:escapeCharacter',
+ snippetString: spacingChar + dfdlPrefix + 'escapeCharacter="$1"$0' +
afterChar,
+ markdownString: "Specifies one character that escapes the subsequent
character",
+ },
+ {
+ item: 'dfdl:escapeBlockStart',
+ snippetString: dfdlPrefix + 'escapeBlockStart="$1"$0',
+ markdownString: "The string of characters that denotes the beginning
of a sequence of characters escaped by a pair of escape strings" + afterChar,
+ },
+ {
+ item: 'dfdl:escapeBlockEnd',
+ snippetString: spacingChar + dfdlPrefix + 'escapeBlockEnd="$1"$0',
+ markdownString: "The string of characters that denotes the end of a
sequence of characters escaped by a pair of escape strings" + afterChar,
+ },
+ {
+ item: 'dfdl:escapeEscapeCharacter',
+ snippetString: spacingChar + dfdlPrefix +
'escapeEscapeCharacter="$1"$0',
+ markdownString: "Specifies one character that escapes an immediately
following dfdl:escapeCharacter" + afterChar,
+ },
+ {
+ item: 'dfdl:extraEscapedCharacters',
+ snippetString: spacingChar + dfdlPrefix +
'extraEscapedCharacters="$1"$0',
+ markdownString: "A whitespace separated list of single characters that
must be escaped in addition to the in-scope delimiters" + afterChar,
+ },
+ {
+ item: 'dfdl:generateEscapeBlock',
+ snippetString: spacingChar + dfdlPrefix +
'generateEscapeBlock="${1|always,whenNeeded|}"$0' + afterChar,
+ markdownString: "The type of escape mechanism defined in the escape
scheme",
+ },
+ {
+ item: 'dfdl:escapeCharacterPolicy',
+ snippetString: spacingChar + dfdlPrefix +
'escapeCharacterPolicy="${1|all,delimiters|}"$0' + afterChar,
+ markdownString: "The type of escape mechanism defined in the escape
scheme",
+ },
{
item: 'testKind',
- snippetString: 'testKind="${1|expression,pattern|}"$0',
+ snippetString: spacingChar + 'testKind="${1|expression,pattern|}"$0' +
afterChar,
markdownString: 'Specifies whether a DFDL expression or DFDL regular
expression pattern is used in the dfdl:assert',
},
{
item: 'test',
- snippetString: dfdlPrefix + 'test="{$1}"$0',
+ snippetString: spacingChar + dfdlPrefix + 'test="{$1}"$0' + afterChar,
markdownString: 'A DFDL expression that evaluates to true or false.',
},
{
item: 'testPattern',
- snippetString: 'testPattern="$1"$0',
+ snippetString: spacingChar + 'testPattern="$1"$0' + afterChar,
markdownString: 'A DFDL regular expression that is applied against the
data stream',
},
{
item: 'message',
- snippetString: 'message="$1"$0',
+ snippetString: spacingChar + 'message="$1"$0' + afterChar,
markdownString: 'Defines text for use in an error message',
},
{
item: 'failureType',
- snippetString:
'failureType="${1|processingError,recoverableError|}"$0',
+ snippetString: spacingChar +
'failureType="${1|processingError,recoverableError|}"$0' + afterChar,
markdownString: 'Specifies the type of failure that occurs when the
dfdl:assert is unsuccessful',
},
],
diff --git a/src/language/providers/intellisense/attributeValueItems.ts
b/src/language/providers/intellisense/attributeValueItems.ts
index 9b28a18..0b2b908 100644
--- a/src/language/providers/intellisense/attributeValueItems.ts
+++ b/src/language/providers/intellisense/attributeValueItems.ts
@@ -30,14 +30,35 @@ export const noChoiceAttributes = [
'outputValueCalc',
'hiddenGroupRef',
'choiceBranchKey',
+ 'textOutputMinLength',
+ 'textStandardDecimalSeparator',
+ 'textStandardGroupingSeparator',
+ 'textZonedSignStyle',
'textNumberRoundingIncrement',
+ 'textBooleanTrueRep',
+ 'textBooleanFalseRep',
+ 'textBooleanJustification',
+ 'textBooleanPadCharacter',
'separator',
'terminator',
'choiceLength',
'fillByte',
'initiator',
'choiceDispatchKey',
+ 'binaryDecimalVirtualPoint',
+ 'binaryPackedSignCodes',
+ 'binaryBooleantrueRep',
+ 'binaryBooleanFalseRep',
+ 'calendarPattern',
+ 'calendarTimeZone',
+ 'calendarCenturyStart',
+ 'calendarLanguage',
'escapeSchemeRef',
+ 'escapeCharacter',
+ 'escapeBlockStart',
+ 'escapeBlockEnd',
+ 'escapeEscapeCharacter',
+ 'extraEscapedCharacters',
'test',
'testPattern',
'message',
@@ -112,6 +133,9 @@ export function attributeValues(
case 'nilValueDelimiterPolicy':
insertSnippet('"${1|initiator,terminator,both,none|}"$0', startPos)
break
+ case 'useNilForDefault':
+ insertSnippet('"${1|yes,no|}"$0', startPos)
+ break
case 'alignment':
insertSnippet('"${1|1,2,implicit|}"$0', startPos)
break
@@ -143,19 +167,19 @@ export function attributeValues(
insertSnippet('"${1|left,right,center|}"$0', startPos)
break
case 'textStandardZeroRep':
- insertSnippet('"0"$0', startPos)
+ insertSnippet('"0$1"$0', startPos)
break
case 'textStandardInfinityRep':
- insertSnippet('"Inf"$0', startPos)
+ insertSnippet('"Inf$1"$0', startPos)
break
case 'textStandardExponentRep':
- insertSnippet('"E"$0', startPos)
+ insertSnippet('"E$1"$0', startPos)
break
case 'textStandardNaNRep':
- insertSnippet('"NaN"$0', startPos)
+ insertSnippet('"NaN$1"$0', startPos)
break
case 'textNumberPattern':
- insertSnippet('"#,##0.###;-#,##0.###"$0', startPos)
+ insertSnippet('"#,##0.###;-#,##0.###$1"$0', startPos)
break
case 'textNumberRep':
insertSnippet('"${1|standard,zoned|}"$0', startPos)
@@ -178,8 +202,11 @@ export function attributeValues(
case 'textOutputMinLength':
insertSnippet('"0"$0', startPos)
break
+ case 'textStandardDecimalSeparator':
+ insertSnippet('"$1"$0', startPos)
+ break
case 'textStandardGroupingSeparator':
- insertSnippet('","$0', startPos)
+ insertSnippet('",$1"$0', startPos)
break
case 'textPadKind':
insertSnippet('"${1|none,padChar|}"$0', startPos)
@@ -187,9 +214,24 @@ export function attributeValues(
case 'textStandardBase':
insertSnippet('"${1|2,8,10,16|}"$0', startPos)
break
+ case 'textZonedSignStyle':
+ insertSnippet('"$1"$0', startPos)
+ break
case 'textTrimKind':
insertSnippet('"${1|none,padChar|}"$0', startPos)
break
+ case 'textBooleanTrueRep':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'textBooleanFalseRep':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'textBooleanJustification':
+ insertSnippet('"${1|left,right,center|}"$0', startPos)
+ break
+ case 'textBooleanPadCharacter':
+ insertSnippet('"$1"$0', startPos)
+ break
case 'leadingSkip':
insertSnippet('"0$1"$0', startPos)
break
@@ -253,18 +295,84 @@ export function attributeValues(
case 'binaryFloatRep':
insertSnippet('"${1|ieee,ibm390Hex|}"$0', startPos)
break
+ case 'binaryDecimalVirtualPoint':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'binaryPackedSignCodes':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'binaryNumberCheckPolicy':
+ insertSnippet('"${1|strict,lax|}"$0', startPos)
+ break
+ case 'dfdl:binaryBooleanTrueRep':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'dfdl:binaryBooleanFalseRep':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'calendarPattern':
+ insertSnippet('"$1"$0', startPos)
+ break
case 'calendarPatternKind':
insertSnippet('"${1|explicit,implicit|}"$0', startPos)
break
+ case 'dfdl:calendarCheckPolicy':
+ insertSnippet('"${1|strict,lax|}"$0', startPos)
+ break
+ case 'dfdl:calendarTimeZone':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'dfdl:calendarObserveDST':
+ insertSnippet('"${1|yes,no|}"$0', startPos)
+ break
+ case 'dfdl:calendarFirstDayOfWeek':
+ insertSnippet('"${1|Monday,Sunday|}"$0', startPos)
+ break
+ case 'dfdl:calendarDaysInFirstWeek':
+ insertSnippet('"${1|1,2,3,4,5,6,7|}"$0', startPos)
+ break
+ case 'dfdl:calendarCenturyStart':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'dfdl:calendarLanguage':
+ insertSnippet('"$1"$0', startPos)
+ break
case 'documentFinalTerminatorCanBeMissing':
insertSnippet('"${1|yes,no|}"$0', startPos)
break
case 'emptyValueDelimiterPolicy':
insertSnippet('"${1|initiator,terminator,both,none|}"$0', startPos)
break
+ case 'emptyElementParsePolicy':
+ insertSnippet('"${1|treatAsAbsent,treatAsEmpty|}"$0', startPos)
+ break
case 'escapeSchemeRef':
insertSnippet('"$1"$0', startPos)
break
+ case 'escapeKind':
+ insertSnippet('"${1|escapeCharacter,escapeBlock|}"$0', startPos)
+ break
+ case ':escapeCharacter':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'escapeBlockStart':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'escapeBlockEnd':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'escapeEscapeCharacter':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'extraEscapedCharacters':
+ insertSnippet('"$1"$0', startPos)
+ break
+ case 'generateEscapeBlock':
+ insertSnippet('"${1|always,whenNeeded|}"$0', startPos)
+ break
+ case 'escapeCharacterPolicy':
+ insertSnippet('"${1|all,delimiters|}"$0', startPos)
+ break
case 'testKind':
insertSnippet('"${1|expression,pattern|}"$0', startPos)
break
diff --git a/src/language/providers/intellisense/commonItems.ts
b/src/language/providers/intellisense/commonItems.ts
index c748412..b7d1f44 100644
--- a/src/language/providers/intellisense/commonItems.ts
+++ b/src/language/providers/intellisense/commonItems.ts
@@ -23,7 +23,7 @@ export const commonCompletion = (additionalItems) => {
item: 'type',
// use the "xs:" prefix for primitive types to differentiate them from
custom simple types
snippetString:
'type="${1|xs:string,xs:decimal,xs:float,xs:double,xs:integer,xs:nonNegativeInteger,xs:int,xs:unsignedInt,xs:short,xs:unsignedShort,xs:long,xs:unsignedLong,xs:byte,xs:unsignedByte,xs:hexBinary,xs:boolean'
+ additionalItems + '|}"$0',
- markdownString: 'an attribute which specifies the type of a
simply-typed element',
+ markdownString: 'The name of a built in data type, or the name of a
simpleType or complexType element defined in this schema',
},
],
}
diff --git a/src/language/providers/intellisense/elementItems.ts
b/src/language/providers/intellisense/elementItems.ts
index db6e52a..cf13b6e 100644
--- a/src/language/providers/intellisense/elementItems.ts
+++ b/src/language/providers/intellisense/elementItems.ts
@@ -23,10 +23,6 @@ export const elementCompletion = (definedVariables,
nsPrefix) => {
item: 'xml version',
snippetString: '<?xml version="1.0" encoding="UTF-8"?>\n$0',
},
-/* {
- item: nsPrefix + 'schema',
- snippetString: '<${1|\0,xs:,xsd:|}$2' + 'schema
xmlns:xs="http://www.w3.org/2001/xmlSchema"\n\t\txmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"\n\t\txmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"\n\t\txmlns:fn="http:/www.w3.org/2005/xpath-functions"\n\t\t
elementFormDefault="unqualified">\n$0\n</' + nsPrefix + 'schema>',
- },*/
{
item: nsPrefix + 'schema',
snippetString: '<${1|\0,xs:,xsd:|}$2' + 'schema
xmlns:xs="http://www.w3.org/2001/xmlSchema"\n\t\txmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"\n\t\txmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"\n\t\txmlns:fn="http:/www.w3.org/2005/xpath-functions"\nelementFormDefault="unqualified"$0',
@@ -63,7 +59,7 @@ export const elementCompletion = (definedVariables, nsPrefix)
=> {
},
{
item: 'dfdl:format',
- snippetString: '<dfdl:format $0/>',
+ snippetString: '<dfdl:format $0',
markdownString: 'Defines the physical data format properties for
multiple DFDL schema constructs',
},
{
@@ -104,6 +100,11 @@ export const elementCompletion = (definedVariables,
nsPrefix) => {
snippetString: '<' + nsPrefix + 'choice',
markdownString: 'Define group of mutually exclusive elements that
resolve points of uncertainty that cannot be resolved by speculative parsing',
},
+ {
+ item: 'dfdl:newVariableInstance',
+ snippetString: '<dfdl:newVariableInstance ref="$1"$0',
+ markdownString: 'Defines the name, type, and optional default value
for the variable'
+ },
{
item: 'dfdl:defineVariable',
snippetString: '<dfdl:defineVariable name="$1"$0',
@@ -124,6 +125,11 @@ export const elementCompletion = (definedVariables,
nsPrefix) => {
snippetString: '<dfdl:defineEscapeScheme name=$1
>\n\t$0,/dfdl:defineEscapeScheme>',
markdownString: 'Defines a named, reusable escapeScheme',
},
+ {
+ item: 'dfdl:escapeScheme',
+ snippetString: '<dfdl:escapeScheme $0',
+ markdownString: 'Allows a common set of properties to be defined that
can be reused',
+ },
{
item: 'dfdl:simpleType',
snippetString: '<dfdl:simpleType $1/>$0',
@@ -132,7 +138,27 @@ export const elementCompletion = (definedVariables,
nsPrefix) => {
{
item: 'dfdl:element',
snippetString: '<dfdl:element $1/>$0',
- markdownString: 'Defines the physical data format properties of an
xs:element and xs:element reference',
+ markdownString: 'Defines the physical data format properties of an
xs:element',
+ },
+ {
+ item: 'dfdl:sequence',
+ snippetString: '<dfdl:sequence $1/>$0',
+ markdownString: 'Defines the physical data format properties of an
xs:sequence group',
+ },
+ {
+ item: 'dfdl:group',
+ snippetString: '<dfdl:group $1/>$0',
+ markdownString: 'Defines the physical data format properties of an
xs:group reference',
+ },
+ {
+ item: 'dfdl:choice',
+ snippetString: '<dfdl:choice $1/>$0',
+ markdownString: 'Defines the physical data format properties of an
xs:choice group',
+ },
+ {
+ item: 'dfdl:property',
+ snippetString: '<dfdl:property name="$1">\n\t$2\n</dfdl:property>$0',
+ markdownString: 'Used in the syntax of format annotations',
},
{
item: 'restriction',
@@ -160,6 +186,40 @@ export const elementCompletion = (definedVariables,
nsPrefix) => {
snippetString: '<' + nsPrefix + 'maxExclusive value="$1"/>$0',
markdownString: 'Used to check the validity of an element'
},
+ {
+ item: 'pattern',
+ snippetString: '<' + nsPrefix + 'pattern value="$1"/>$0',
+ markdownString: 'Used to derive new simple types by specifying a
regular expression against which values of the type are compared'
+ },
+ {
+ item: 'totalDigits',
+ snippetString: '<' + nsPrefix + 'totalDigits value="$1"/>$0',
+ markdownString: 'Indicates the maximum allowed value for the number of
digits'
+ },
+ {
+ item: 'fractionDigits',
+ snippetString: '<' + nsPrefix + 'fractionDigits value="$1"/>$0',
+ markdownString: 'Indicates the maximum number of digits in the
fractional part'
+ },
+ {
+ item: 'enumeration',
+ snippetString: '<' + nsPrefix + 'enumeration value="$1"/>$0',
+ markdownString: 'Used to restrict a datatype to a finite set of values'
+ },
+ {
+ item: 'include',
+ snippetString: '<' + nsPrefix + 'include "$1"/>$0',
+ markdownString: 'Used to add all the components of an included schema'
+ },
+ {
+ item: 'documentation',
+ snippetString: '<' + nsPrefix +
'documentation>\n\t$1\n</documentation>$0'
+ },
+ {
+ item: 'import',
+ snippetString: '<' + nsPrefix + 'import "$1"/>$0',
+ markdownString: 'Used to add all the components of an included schema'
+ },
{
item: '<[CDATA[]]>',
snippetString: '<[CDATA[$1]]>$0',
diff --git a/src/language/providers/utils.ts b/src/language/providers/utils.ts
index 9dd15c9..f01613d 100644
--- a/src/language/providers/utils.ts
+++ b/src/language/providers/utils.ts
@@ -35,8 +35,11 @@ const items = [
'discriminator',
'defineFormat',
'format',
+ 'newVariableInstance',
'defineVariable',
'setVariable',
+ 'defineEscapeScheme',
+ 'escapeScheme',
'dfdl:element',
'dfdl:simpleType',
'restriction',
@@ -274,7 +277,8 @@ export function getItemPrefix(item: string, nsPrefix:
string) {
item === 'discriminator' ||
item === 'defineFormat' ||
item === 'format' ||
- item.includes('Variable')
+ item.includes('Variable') ||
+ item.includes('scape')
) {
itemPrefix = 'dfdl:'
}
diff --git a/src/tests/suite/language/items.test.ts
b/src/tests/suite/language/items.test.ts
index 3f85722..c771404 100644
--- a/src/tests/suite/language/items.test.ts
+++ b/src/tests/suite/language/items.test.ts
@@ -30,7 +30,6 @@ suite('Items Test Suite', () => {
'group ref',
'dfdl:assert',
'dfdl:discriminator',
- 'dfdl:hiddenGroupRef',
'dfdl:format',
'annotation',
'appinfo',
@@ -40,17 +39,30 @@ suite('Items Test Suite', () => {
'simpleType name=',
'sequence',
'choice',
+ 'dfdl:newVariableInstance',
'dfdl:defineVariable',
'dfdl:setVariable',
'dfdl:defineFormat',
'dfdl:defineEscapeScheme',
+ 'dfdl:escapeScheme',
'dfdl:simpleType',
'dfdl:element',
+ 'dfdl:sequence',
+ 'dfdl:group',
+ 'dfdl:choice',
+ 'dfdl:property',
'restriction',
'minInclusive',
'minExclusive',
'maxInclusive',
'maxExclusive',
+ 'pattern',
+ 'totalDigits',
+ 'fractionDigits',
+ 'enumeration',
+ 'include',
+ 'documentation',
+ 'import',
'<[CDATA[]]>',
'<![CDATA[]]>',
'{}',
@@ -74,6 +86,7 @@ suite('Items Test Suite', () => {
'dfdl:nilKind',
'dfdl:nilValue',
'dfdl:nilValueDelimiterPolicy',
+ 'dfdl:useNilForDefault',
'dfdl:alignment',
'dfdl:lengthUnits',
'dfdl:lengthPattern',
@@ -84,21 +97,30 @@ suite('Items Test Suite', () => {
'dfdl:choiceBranchKey',
'dfdl:representation',
'dfdl:textStringJustification',
+ 'dfdl:textStringPadCharacter',
'dfdl:textStandardZeroRep',
'dfdl:textStandardInfinityRep',
'dfdl:textStandardExponentRep',
'dfdl:textStandardNaNRep',
'dfdl:textNumberPattern',
+ 'dfdl:decimalSigned',
'dfdl:textNumberRep',
+ 'dfdl:textNumberJustification',
'dfdl:textNumberRoundingMode',
'dfdl:textNumberRoundingIncrement',
'dfdl:textNumberRounding',
'dfdl:textNumberCheckPolicy',
'dfdl:textOutputMinLength',
+ 'dfdl:textStandardDecimalSeparator',
'dfdl:textStandardGroupingSeparator',
'dfdl:textPadKind',
'dfdl:textStandardBase',
+ 'dfdl:textZonedSignStyle',
'dfdl:textTrimKind',
+ 'dfdl:textBooleanTrueRep',
+ 'dfdl:textBooleanFalseRep',
+ 'dfdl:textBooleanJustification',
+ 'dfdl:textBooleanPadCharacter',
'dfdl:leadingSkip',
'dfdl:trailingSkip',
'dfdl:truncateSpecifiedLengthString',
@@ -119,10 +141,32 @@ suite('Items Test Suite', () => {
'dfdl:binaryNumberRep',
'dfdl:floating',
'dfdl:binaryFloatRep',
+ 'dfdl:binaryDecimalVirtualPoint',
+ 'dfdl:binaryPackedSignCodes',
+ 'dfdl:binaryNumberCheckPolicy',
+ 'dfdl:binaryBooleanTrueRep',
+ 'dfdl:binaryBooleanFalseRep',
+ 'dfdl:calendarPattern',
'dfdl:calendarPatternKind',
+ 'dfdl:calendarCheckPolicy',
+ 'dfdl:calendarTimeZone',
+ 'dfdl:calendarObserveDST',
+ 'dfdl:calendarFirstDayOfWeek',
+ 'dfdl:calendarDaysInFirstWeek',
+ 'dfdl:calendarCenturyStart',
+ 'dfdl:calendarLanguage',
'dfdl:documentFinalTerminatorCanBeMissing',
'dfdl:emptyValueDelimiterPolicy',
+ 'dfdl:emptyElementParsePolicy',
'dfdl:escapeSchemeRef',
+ 'dfdl:escapeKind',
+ 'dfdl:escapeCharacter',
+ 'dfdl:escapeBlockStart',
+ 'dfdl:escapeBlockEnd',
+ 'dfdl:escapeEscapeCharacter',
+ 'dfdl:extraEscapedCharacters',
+ 'dfdl:generateEscapeBlock',
+ 'dfdl:escapeCharacterPolicy',
'testKind',
'test',
'testPattern',
@@ -143,7 +187,7 @@ suite('Items Test Suite', () => {
})
test('all attributeItems available', async () => {
- attributeCompletion('dfdl:').items.forEach((item) => {
+ attributeCompletion('', '', 'dfdl:', '', '').items.forEach((item) => {
assert.strictEqual(expectedAttributeItems.includes(item.item), true)
})
})