/// <summary> /// Auxiliary function to convert assignment value to its string representation. /// </summary> /// <param name="assignment"></param> /// <returns></returns> internal static string AssignmentToString(AssignmentEnum assignment) { switch (assignment) { case AssignmentEnum.C: return(":"); case AssignmentEnum.CC: return("::"); case AssignmentEnum.CCC: return(":::"); case AssignmentEnum.E: return("="); case AssignmentEnum.EC: return("=:"); case AssignmentEnum.ECC: return("=::"); case AssignmentEnum.EE: return("=="); case AssignmentEnum.CE: return(":="); } return(""); }
private string GetValue(ITextSource input, AssignmentEnum assignment, int valueQuotesType, Interval valueInterval, int valueIndent) { if (valueInterval == null) { if (assignment == AssignmentEnum.E || assignment == AssignmentEnum.EE) { return(string.Empty); } return(null); } if (valueInterval.Begin.Index == -1) { return(string.Empty); } if (valueQuotesType == '\'' || valueQuotesType == '"') { var c = input.GetChar(valueInterval.End.Index); var missingValueQuote = valueQuotesType == '\'' && c != '\'' || valueQuotesType == '"' && c != '"'; if (!missingValueQuote) { return(GetValueFromValueInterval(input, assignment, valueQuotesType, valueInterval.Begin.Index + 1, valueInterval.End.Index - 1, valueIndent)); } return(GetValueFromValueInterval(input, assignment, valueQuotesType, valueInterval.Begin.Index + 1, valueInterval.End.Index, valueIndent)); } return(GetValueFromValueInterval(input, assignment, valueQuotesType, valueInterval.Begin.Index, valueInterval.End.Index, valueIndent)); }
public static bool IsObjectAssignment(this AssignmentEnum assignment) { switch (assignment) { case AssignmentEnum.C: case AssignmentEnum.CC: case AssignmentEnum.CCC: return(true); } return(false); }
/// <summary> /// Creates a new instance of <see cref="Argument"/>. /// </summary> /// <param name="name">Pair name.</param> /// <param name="assignment">Pair assignment.</param> /// <param name="value">Pair value.</param> /// <param name="nameInterval">Name <see cref="Interval"/>.</param> /// <param name="valueInterval">Value <see cref="Interval"/>.</param> /// <param name="assignmentInterval">Assignment <see cref="Interval"/>.</param> /// <param name="nameQuotesType">Name quotes type.</param> /// <param name="valueQuotesType">Value quotes type.</param> /// <param name="valueType">Type of value.</param> /// <param name="interpolationItems">List of interpolation objects.</param> /// <param name="valueIndent">Indent of value in the source code.</param> public Argument(string name = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null, Interval nameInterval = null, Interval valueInterval = null, Interval assignmentInterval = null, int nameQuotesType = 0, int valueQuotesType = 0, ValueType valueType = ValueType.None, List <object> interpolationItems = null, int valueIndent = 0 ) : base(name, assignment, value) { ValueInterval = valueInterval; AssignmentInterval = assignmentInterval; NameInterval = nameInterval; NameQuotesType = nameQuotesType; ValueQuotesType = valueQuotesType; ValueType = valueType; InterpolationItems = interpolationItems; ValueIndent = valueIndent; }
/// <summary> /// Creates a new instance of <see cref="Parameter"/>. /// </summary> /// <param name="name">Pair name.</param> /// <param name="assignment">Pair assignment.</param> /// <param name="value">Pair value.</param> /// <param name="nameInterval">Name <see cref="Interval"/>.</param> /// <param name="valueInterval">Value <see cref="Interval"/>.</param> /// <param name="assignmentInterval">Assignment <see cref="Interval"/>.</param> /// <param name="nameQuotesType">Name quotes type.</param> /// <param name="valueQuotesType">Value quotes type.</param> /// <param name="valueType">Type of value.</param> /// <param name="interpolationItems">List of interpolation objects.</param> /// <param name="valueIndent">Indent of value in the source code.</param> /// <param name="isValueNode">True if node is associated with or has literal value.</param> public Parameter(string name = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null, Interval nameInterval = null, Interval valueInterval = null, Interval assignmentInterval = null, int nameQuotesType = 0, int valueQuotesType = 0, ValueType valueType = ValueType.None, List <object> interpolationItems = null, int valueIndent = 0, bool isValueNode = false ) : base(name, assignment, value) { ValueInterval = valueInterval; AssignmentInterval = assignmentInterval; NameInterval = nameInterval; NameQuotesType = nameQuotesType; ValueQuotesType = valueQuotesType; ValueType = valueType; InterpolationItems = interpolationItems; ValueIndent = valueIndent; IsValueNode = isValueNode; }
private ValueType GetValueType(AssignmentEnum assignment, string value, int valueQuotesType) { switch (assignment) { case AssignmentEnum.CE: return(ValueType.PairValue); case AssignmentEnum.EC: return(ValueType.Concatenation); case AssignmentEnum.ECC: return(ValueType.LiteralChoice); case AssignmentEnum.C: case AssignmentEnum.CC: case AssignmentEnum.CCC: return(ValueType.None); } if (value == null) { return(ValueType.None); } if (valueQuotesType == '\'') { return(ValueType.SingleQuotedString); } if (valueQuotesType == '"') { return(ValueType.DoubleQuotedString); } if (assignment == AssignmentEnum.E) { return(GetJsonValueType(value, ValueType.FreeOpenString)); } if (assignment == AssignmentEnum.EE) { return(GetJsonValueType(value, ValueType.OpenString)); } return(ValueType.None); }
internal static Tuple <string, List <object> > GetValue(ITextSource input, AssignmentEnum assignment, int valueQuotesType, Interval valueInterval, int valueIndent, CompilerContext context, Module module) { if (valueInterval == null) { if (assignment == AssignmentEnum.E || assignment == AssignmentEnum.EE) { return(new Tuple <string, List <object> >(string.Empty, null)); } return(new Tuple <string, List <object> >(null, null)); } if (valueInterval.Begin.Index == -1) { return(new Tuple <string, List <object> >(string.Empty, null)); } if (valueQuotesType == '\'') { if (!ValueIsMissingQuote(input, valueQuotesType, valueInterval)) { return(new Tuple <string, List <object> >(GetValueFromValueInterval(input, assignment, valueQuotesType, valueInterval.Begin.Index + 1, valueInterval.End.Index - 1, valueIndent), null)); } return(new Tuple <string, List <object> >(GetValueFromValueInterval(input, assignment, valueQuotesType, valueInterval.Begin.Index + 1, valueInterval.End.Index, valueIndent), null)); } if (valueQuotesType == '"') { var ii = GetInterpolationItems(input, valueInterval, context, module); string value = (string)(ii.Count == 1 && ii[0] is string?ii[0] : string.Empty); return(new Tuple <string, List <object> >(value, ii)); } return(new Tuple <string, List <object> >(GetValueFromValueInterval(input, assignment, valueQuotesType, valueInterval.Begin.Index, valueInterval.End.Index, valueIndent), null)); }
/// <summary> /// Creates an instance of <see cref="NamespaceDefinition"/>. /// </summary> /// <param name="name">Namespace prefix.</param> /// <param name="assignment">Must be a literal assignment.</param> /// <param name="value">Namespace URI.</param> public NamespaceDefinition(string name = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null) : base(name, assignment, value) { }
/// <inheritdoc /> public Pair CreateMappedPair(ITextSource textSource, int nameQuotesType, Interval nameInterval, AssignmentEnum assignment, Interval assignmentInterval, int valueQuotesType, Interval valueInterval, int valueIndent) { IMappedPair pair; var nameText = GetNameText(textSource, nameQuotesType, nameInterval); var value = GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent, _context, _module); if (nameQuotesType > 0) { pair = new Element ( VerifyElementName(nameText, nameInterval, _module), nameQuotesType: nameQuotesType, nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("@")) { var tuple = Element.GetNameAndNs(nameText.Substring(1), nameQuotesType); var ns = string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1; pair = new Attribute ( VerifyName(tuple.Item2, nameInterval, _module), ns, nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("!$")) { pair = new AliasDefinition ( VerifyName(nameText.Substring(2), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("!#")) { pair = new NamespaceDefinition ( VerifyNsName(nameText.Substring(2), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("!%")) { pair = new Parameter ( VerifyNsName(nameText.Substring(2), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("!")) { pair = new Document ( VerifyName(nameText.Substring(1), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("$")) { pair = new Alias ( VerifyName(nameText.Substring(1), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("%")) { pair = new Argument ( VerifyName(nameText.Substring(1), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (nameText.StartsWith("#")) { var tuple = Element.GetNameAndNs(nameText.Substring(1), nameQuotesType); var ns = string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1; if (ns == null) { pair = new Scope ( null, VerifyScopeName(nameText.Substring(1), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else { pair = new Scope ( VerifyElementName(tuple.Item2, nameInterval, _module), VerifyScopeName(ns, nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } } else { var tuple = Element.GetNameAndNs(nameText, nameQuotesType); var ns = string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1; pair = new Element ( VerifyElementName(tuple.Item2, nameInterval, _module), VerifyScopeName(ns, nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } return((Pair)pair); }
static string GetValueFromValueInterval(ITextSource charStream, AssignmentEnum assignment, int valueQuotesType, int begin, int end, int valueIndent) { var sb = new StringBuilder(); //Splitting text. Getting array of text lines var lines = charStream.GetText(begin, end).Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); bool folded = lines.Length > 1 && assignment == AssignmentEnum.EE && (valueQuotesType == 0 || valueQuotesType == '"'); var first = true; var firstEmptyLine = true; //If true then previous line was not empty therefor newline shouldn't be added var checkIfFirstLineIsEmpty = true; foreach (var item in lines) { var line = TrimEndOfFoldedStringLine(item, folded); if (checkIfFirstLineIsEmpty) //ignoring first empty line for open strings { checkIfFirstLineIsEmpty = false; if (valueQuotesType == 0 && line == string.Empty) { first = false; continue; } } if (first) { sb.Append(line); first = false; continue; } //adding first line without appending new line symbol if (line.Length <= valueIndent) //this is just empty line { if (folded) //Folded string { if (firstEmptyLine) { firstEmptyLine = false; continue; //Ignore first empty line for folded string } } sb.AppendLine(); continue; } var lineIndent = line.TakeWhile(c => c == ' ' || c == '\t').Count(); if (lineIndent < valueIndent) // this is multiline string terminator === or indent mismatch { line = line.Substring(lineIndent); //Removing indents if (line.TrimEnd() == "===") { sb.AppendLine(); } break; // this is multiline string terminator === } line = line.Substring(valueIndent); //Removing indents if (sb.Length == 0) // If it is first line to be added just add it. No new line or spacing needed. { sb.Append(line); continue; } if (folded && firstEmptyLine) { sb.Append(" "); } if (!folded || !firstEmptyLine) { sb.AppendLine(); } firstEmptyLine = true; //reseting the flag for folded string logic sb.Append(line); } return(sb.ToString()); }
/// <inheritdoc /> public AliasDefinition(string name, AssignmentEnum assignment, string value) : base(name, assignment, value) { SyncTime = DateTime.Now.Ticks; }
/// <summary> /// Creates an instance of <see cref="Element"/>. /// </summary> /// <param name="name">Element name.</param> /// <param name="nsPrefix">Namespace prefix.</param> /// <param name="assignment">Pair assignment.</param> /// <param name="value">Element value.</param> public Element(string name = null, string nsPrefix = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null) : base(name, assignment, value) { _nsPrefix = nsPrefix; }
/// <summary> /// Creates an instance of the <see cref="Pair"/>. /// </summary> /// <param name="assignment"></param> protected Pair(AssignmentEnum assignment) { _assignment = assignment; }
/// <summary> /// Creates an instance of <see cref="Attribute"/>. /// </summary> /// <param name="name">Attribute name.</param> /// <param name="nsPrefix">Namespace prefix.</param> /// <param name="assignment">Pair assignment.</param> /// <param name="value">Attribute value.</param> public Attribute(string name, string nsPrefix, AssignmentEnum assignment, string value) : base(name, assignment, value) { _nsPrefix = nsPrefix; }
/// <summary> /// Creates an instance of the <see cref="Pair"/>. /// </summary> /// <param name="name">Pair name.</param> /// <param name="assignment"></param> /// <param name="value">Pair value.</param> protected Pair(string name, AssignmentEnum assignment, string value) { _name = name; _assignment = assignment; _value = value; }
protected Operator(OperatorType operatorType, AssignmentEnum assigment, int precedence) { OperatorType = operatorType; Assigment = assigment; Precedence = precedence; }
/// <summary> /// Creates an instance of the <see cref="Pair"/>. /// </summary> /// <param name="name">Pair name.</param> /// <param name="assignment"></param> protected Pair(string name, AssignmentEnum assignment) { _name = name; _assignment = assignment; }
public Pair CreateMappedPair(ITextSource textSource, int nameQuotesType, Interval nameInterval, AssignmentEnum assignment, Interval assignmentInterval, int valueQuotesType, Interval valueInterval, int valueIndent) { var name = GetName(textSource, nameQuotesType, nameInterval); if (nameQuotesType > 0) { return(new Syntactik.DOM.Mapped.Element ( name, nameQuotesType: nameQuotesType, nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("@")) { return(new Syntactik.DOM.Mapped.Attribute ( name.Substring(1), null, nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("!$")) { return(new Syntactik.DOM.Mapped.AliasDefinition ( name.Substring(2), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("!#")) { return(new Syntactik.DOM.Mapped.NamespaceDefinition ( name.Substring(2), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("!%")) { return(new Syntactik.DOM.Mapped.Parameter ( name.Substring(2), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("!")) { return(new Syntactik.DOM.Mapped.Document ( name.Substring(1), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("$")) { return(new Syntactik.DOM.Mapped.Alias ( name.Substring(1), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("%")) { return(new Syntactik.DOM.Mapped.Argument ( name.Substring(1), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); } if (name.StartsWith("#")) { return(new Syntactik.DOM.Mapped.Scope ( nsPrefix: name.Substring(1), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval )); } var tuple = Syntactik.DOM.Mapped.Element.GetNameAndNs(name, nameQuotesType); return(new Syntactik.DOM.Mapped.Element ( tuple.Item2, string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1, nameQuotesType: nameQuotesType, nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent), valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: null, valueIndent: valueIndent )); }
/// <summary> /// Creates an instance of <see cref="Entity"/>. /// </summary> /// <param name="name">Entity name.</param> /// <param name="assignment">Pair assignment.</param> /// <param name="value">Entity value.</param> protected Entity(string name, AssignmentEnum assignment, string value) : base(name, assignment, value) { }
public BinaryOperator(OperatorType operatorType, AssignmentEnum assigment, int precendence) : base(operatorType, assigment, precendence) { }
/// <summary> /// Creates a new instance of <see cref="AliasDefinition"/>. /// </summary> /// <param name="name">Pair name.</param> /// <param name="assignment">Pair assignment.</param> /// <param name="value">Pair value.</param> public AliasDefinition(string name, AssignmentEnum assignment, string value) : base(name, assignment, value) { }
/// <summary> /// Creates an instance of <see cref="ModuleMember"/>. /// </summary> /// <param name="name"></param> /// <param name="assignment"></param> /// <param name="value"></param> protected ModuleMember(string name = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null) : base(name, assignment, value) { }
/// <summary> /// Creates an instance of the <see cref="Pair"/>. /// </summary> /// <param name="assignment"></param> /// <param name="value">Pair value.</param> protected Pair(AssignmentEnum assignment, string value) { _assignment = assignment; _value = value; }
public FunctionOperator(OperatorType operatorType, AssignmentEnum assigment, int precendence) : base(operatorType, assigment, precendence) { }
/// <inheritdoc /> public Pair CreateMappedPair(ITextSource textSource, int nameQuotesType, Interval nameInterval, AssignmentEnum assignment, Interval assignmentInterval, int valueQuotesType, Interval valueInterval, int valueIndent) { Pair pair; var name = PairFactoryForXml.GetNameText(textSource, nameQuotesType, nameInterval); var value = PairFactoryForXml.GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent, _context, (Module)_module); if (nameQuotesType > 0) { if (assignment == AssignmentEnum.None) { value = PairFactoryForXml.GetValue(textSource, assignment, nameQuotesType, nameInterval, 0, _context, (Module)_module); valueQuotesType = nameQuotesType; } pair = new Element( name, nameQuotesType: nameQuotesType, nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (name.StartsWith("@")) { pair = new DOM.Mapped.Attribute( name.Substring(1), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (name.StartsWith("!$")) { pair = new DOM.Mapped.AliasDefinition ( VerifyName(name.Substring(2), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (name.StartsWith("!#")) { pair = new DOM.Mapped.NamespaceDefinition ( VerifyNsName(name.Substring(2), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (name.StartsWith("!%")) { pair = new DOM.Mapped.Parameter ( VerifyNsName(name.Substring(2), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (name.StartsWith("!")) { pair = new DOM.Mapped.Document ( VerifyName(name.Substring(1), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (name.StartsWith("$")) { pair = new DOM.Mapped.Alias ( VerifyName(name.Substring(1), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } else if (name.StartsWith("%")) { pair = new DOM.Mapped.Argument ( VerifyName(name.Substring(1), nameInterval, _module), nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, value.Item1, valueQuotesType) ); } //else if (name.StartsWith("#")) //{ // pair = new DOM.Mapped.Scope // { // NsPrefix = VerifyScopeName(name.Substring(1), nameInterval, _module), // NameInterval = nameInterval, // Assignment = assignment, // AssignmentInterval = assignmentInterval // }; // SetValueType((IMappedPair) pair, assignment, value.Item1, valueQuotesType); //} else { pair = new Element ( name, nameInterval: nameInterval, assignment: assignment, assignmentInterval: assignmentInterval, value: value.Item1, valueQuotesType: valueQuotesType, valueInterval: valueInterval, interpolationItems: value.Item2, valueIndent: valueIndent, valueType: GetValueType(assignment, (assignment == AssignmentEnum.None? PairFactoryForXml.GetValue(textSource, assignment, nameQuotesType, nameInterval, 0, _context, (Module)_module).Item1:value.Item1), assignment == AssignmentEnum.None ? nameQuotesType: valueQuotesType) ); } return(pair); }