src/language/providers/intellisense/attributeValueItems.ts (385 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import * as vscode from 'vscode' import { insertSnippet } from '../utils' export const noChoiceAttributes = [ 'name', 'ref', 'occursCount', 'length', 'prefixLengthType', 'nilValue', 'lengthPattern', 'inputValueCalc', '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', 'source', 'schemaLocation', 'targetNamespace', 'namespace', ] export function attributeValues( attributeName: string, startPos: vscode.Position, additionalTypes: string ) { switch (attributeName) { case 'minOccurs': insertSnippet('"${1|0,1|}"$0', startPos) break case 'maxOccurs': insertSnippet('"${1|0,1,unbounded|}"$0', startPos) break case 'occursCount': insertSnippet('"$1"$0', startPos) break case 'byteOrder': insertSnippet('"${1|bigEndian,littleEndian|}"$0', startPos) break case 'bitOrder': insertSnippet( '"${1|mostSignificantBitFirst,leastSignificantBitFirst|}"$0', startPos ) break case 'occursCountKind': insertSnippet( '"${1|expression,fixed,implicit,parsed,stopValue|}"$0', startPos ) break case 'length': insertSnippet('"$1"$0', startPos) break case 'lengthKind': insertSnippet( '"${1|delimited,fixed,explicit,implicit,prefixed,patternendOfParent|}"$0', startPos ) break case 'prefixIncludesPrefixLength': insertSnippet('"${1|yes,no|}"$0', startPos) break case 'prefixLengthType': insertSnippet('"$1"$0', startPos) break case 'utf16Width': insertSnippet('"${1|fixed,variable|}"$0', startPos) break case 'encoding': insertSnippet( '"${1|US-ASCII,ASCII,UTF-8,UTF-16,UTF-16BE,UTF-16LE,ISO-8859-1|}"$0', startPos ) break case 'encodingErrorPolicy': insertSnippet('"${1|error,replace|}"$0', startPos) break case 'nilKind': insertSnippet( '"${1|literalCharacter,literalValue,logicalValue|}"$0', startPos ) break case 'nilValue': insertSnippet('nilValue="$1"$0', startPos) break 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 case 'lengthUnits': insertSnippet('"${1|bits,bytes,characters|}"$0', startPos) break case 'lengthPattern': insertSnippet('"$1"$0', startPos) break case 'inputValueCalc': insertSnippet('"{$1}"$0', startPos) break case 'outputValueCalc': insertSnippet('"{$1}"$0', startPos) break case 'alignmentUnits': insertSnippet('"${1|bits,bytes|}"$0', startPos) break case 'outputNewLine': insertSnippet('"${1|%CR;,%LF;,%CR;%LF;,%NEL;,%LS;|}"$0', startPos) break case 'choiceBranchKey': insertSnippet('"$1"$0', startPos) break case 'representation': insertSnippet('"${1|binary,text|}"$0', startPos) break case 'textStringJustification': insertSnippet('"${1|left,right,center|}"$0', startPos) break case 'textStandardZeroRep': insertSnippet('"0$1"$0', startPos) break case 'textStandardInfinityRep': insertSnippet('"Inf$1"$0', startPos) break case 'textStandardExponentRep': insertSnippet('"E$1"$0', startPos) break case 'textStandardNaNRep': insertSnippet('"NaN$1"$0', startPos) break case 'textNumberPattern': insertSnippet('"#,##0.###;-#,##0.###$1"$0', startPos) break case 'textNumberRep': insertSnippet('"${1|standard,zoned|}"$0', startPos) break case 'textNumberRoundingMode': insertSnippet( '"${1|roundCeiling,roundFloor,roundDown,roundUp,roundHalfEven,roundHalfDown,roundHalfUp,roundUnnecessary|}"$0', startPos ) break case 'textNumberRoundingIncrement': insertSnippet('"0"$0', startPos) break case 'textNumberRounding': insertSnippet('"${1|explicit,pattern|}"$0', startPos) break case 'textNumberCheckPolicy': insertSnippet('"${1|lax,strict|}"$0', startPos) break case 'textOutputMinLength': insertSnippet('"0"$0', startPos) break case 'textStandardDecimalSeparator': insertSnippet('"$1"$0', startPos) break case 'textStandardGroupingSeparator': insertSnippet('",$1"$0', startPos) break case 'textPadKind': insertSnippet('"${1|none,padChar|}"$0', startPos) break 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 case 'trailingSkip': insertSnippet('"0$1"$0', startPos) break case 'truncateSpecifiedLengthString': insertSnippet('"${1|no,yes|}"$0', startPos) break case 'sequenceKind': insertSnippet('"${1|ordered,unordered|}"$0', startPos) break case 'separator': insertSnippet('"$1"$0', startPos) break case 'separatorPosition': insertSnippet('"${1|infix,postfix,prefix|}"$0', startPos) break case 'separatorSuppressionPolicy': insertSnippet( '"${1|anyEmpty,never,trailingEmpty,trailingEmptyStrict|}"$0', startPos ) break case 'terminator': insertSnippet('"$1"$0', startPos) break case 'textBidi': insertSnippet('"${1|no,yes|}"$0', startPos) break case 'hiddenGroupRef': insertSnippet('"$1"\n$0', startPos) break case 'choiceLengthKind': insertSnippet('"${1|explicit,implicit|}"$0', startPos) break case 'choiceLength': insertSnippet('"$1"$0', startPos) break case 'fillByte': insertSnippet('"$1"$0', startPos) break case 'ignoreCase': insertSnippet('"${1|no,yes|}"$0', startPos) break case 'initiatedContent': insertSnippet('"${1|yes,no|}"$0', startPos) break case 'initiator': insertSnippet('"$1"$0', startPos) break case 'choiceDispatchKey': insertSnippet('"$1"$0', startPos) break case 'binaryNumberRep': insertSnippet('"${1|binary,packed,bcd,ibm4690Packed|}"$0', startPos) break case 'floating': insertSnippet('"${1|no,yes|}"$0', startPos) break 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 case 'test': insertSnippet('"{$1}"$0', startPos) break case 'testPattern': insertSnippet('"$1"$0', startPos) break case 'message': insertSnippet('"$1"$0', startPos) break case 'failureType': insertSnippet('"${1|processingError,recoverableError|}"$0', startPos) break case 'type': insertSnippet( '"${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' + additionalTypes + '|}"$0', startPos ) break } }