private static void KeywordEqual(EnumKeyword expected, EnumKeyword actual) { Assert.Equal(expected.Values.Count, actual.Values.Count); for (int i = 0; i < expected.Values.Count; i++) { Assert.True(expected.Values[i].IsEquivalentTo(actual.Values[i])); } }
private XmlSchemaSimpleTypeRestriction ExtractStringFacets(JsonSchema jSchema) { XmlSchemaSimpleTypeRestriction content = new XmlSchemaSimpleTypeRestriction { BaseTypeName = new XmlQualifiedName("string", XML_SCHEMA_NS), }; EnumKeyword enumKeyword = jSchema.Get<EnumKeyword>(); if (enumKeyword != null) { foreach (JsonValue enumValue in GetterExtensions.Enum(jSchema)) { XmlSchemaEnumerationFacet enumFacet = new XmlSchemaEnumerationFacet { Value = enumValue.String, }; content.Facets.Add(enumFacet); } } MinLengthKeyword minLength = jSchema.Get<MinLengthKeyword>(); MaxLengthKeyword maxLength = jSchema.Get<MaxLengthKeyword>(); if (minLength != null && maxLength != null && minLength.Value == maxLength.Value) { // special rule that maps equal min and max lengths to xsd length facet XmlSchemaLengthFacet lengthFacet = new XmlSchemaLengthFacet { Value = minLength.Value.ToString(), }; content.Facets.Add(lengthFacet); } else { if (minLength != null) { XmlSchemaMinLengthFacet minLengthFacet = new XmlSchemaMinLengthFacet { Value = minLength.Value.ToString(), }; content.Facets.Add(minLengthFacet); } if (maxLength != null) { XmlSchemaMaxLengthFacet maxLengthFacet = new XmlSchemaMaxLengthFacet { Value = maxLength.Value.ToString(), }; content.Facets.Add(maxLengthFacet); } } PatternKeyword pattern = jSchema.Get<PatternKeyword>(); if (pattern != null) { XmlSchemaPatternFacet patternFacet = new XmlSchemaPatternFacet { Value = pattern.Value.ToString(), }; content.Facets.Add(patternFacet); } FormatKeyword format = jSchema.Get<FormatKeyword>(); if (format != null && format.Value != null && !string.IsNullOrEmpty(format.Value.Key)) { content.BaseTypeName = ExtractBaseTypeNameFromFormat(format.Value.Key); } return content; }
public Keyword(EnumKeyword keyword) { this.keyword = keyword; }
public static Token[] GenerateTokens(string code) { //Generate a list of tokens from the given code List <Token> tokens = new List <Token> (); char[] characters = code.ToCharArray(); string current = ""; for (int i = 0; i < characters.Length; i++) { char c = characters [i]; //Check for PreCompileNotation if (c == '#') { i++; for (; i < characters.Length; i++) { c = characters [i]; if (c == '\n') { break; } } } else if (c == '\"') { bool ignore = false; i++; for (; i < characters.Length; i++) { c = characters [i]; if (c == '\\') { ignore = true; } else if (c == '\"') { if (ignore) { ignore = false; } else { String str = new String(current); tokens.Add(str); current = ""; break; } } else { current += c; } } } else if (c == '\'') { bool ignore = false; i++; for (; i < characters.Length; i++) { c = characters [i]; if (c == '\\') { ignore = true; } else if (c == '\'') { if (ignore) { ignore = false; } else { Character str = new Character(current); tokens.Add(str); current = ""; break; } } else { current += c; } } } //Check for operators else if (SpecialCharacters.Contains(c)) { for (; i < characters.Length; i++) { c = characters [i]; if (!SpecialCharacters.Contains(c)) { //current += c; OperatorType[] types = OperatorGenerator.GetOperators(current); Array.Reverse(types); foreach (OperatorType type in types) { tokens.Add(new Operator(type)); } current = ""; i--; break; } else { current += c; } } } //Word and Keyword token generation else if (char.IsLetter(c) || c == '_') { for (; i < characters.Length; i++) { c = characters [i]; if (!char.IsLetter(c) && c != '_') { if (doesContainKeyword(current)) { EnumKeyword kw = GetKeyword(current); if (kw == EnumKeyword.TRUE || kw == EnumKeyword.FALSE) { Boolean b = new Boolean(current); tokens.Add(b); } else { Keyword keyword = new Keyword(kw); tokens.Add(keyword); } } else { Word word = new Word(current); tokens.Add(word); } current = ""; i--; break; } else { current += c; } } } else if (char.IsNumber(c)) { for (; i < characters.Length; i++) { c = characters[i]; if (!char.IsNumber(c) && c != '.') { Integer number = new Integer(current); tokens.Add(number); current = ""; i--; break; } else { current += c; } } } } return(tokens.ToArray()); }