/// <summary>Gets or generates the type name for the given schema.</summary>
        /// <param name="schema">The schema.</param>
        /// <param name="typeNameHint">The type name hint.</param>
        /// <returns>The type name.</returns>
        public virtual string GetOrGenerateTypeName(JsonSchema4 schema, string typeNameHint)
        {
            schema = schema.ActualSchema;

            if (!_generatedTypeNames.ContainsKey(schema))
            {
                var typeName = schema.GetTypeName(_typeNameGenerator, typeNameHint);

                if (string.IsNullOrEmpty(typeName))
                {
                    typeName = GenerateTypeName(typeNameHint);
                }
                else
                {
                    if (_generatedTypeNames.ContainsValue(typeName))
                    {
                        typeName = GenerateTypeName(typeName);
                    }
                }

                typeName = typeName
                           .Replace("[", "Of")
                           .Replace("]", string.Empty)
                           .Replace(",", "And")
                           .Replace(" ", string.Empty);

                _generatedTypeNames[schema] = ConversionUtilities.ConvertToUpperCamelCase(typeName, true);
            }

            return(_generatedTypeNames[schema]);
        }
            public static ValueTask <FluidValue> Uppercamelcase(FluidValue input, FilterArguments arguments, TemplateContext context)
            {
                var firstCharacterMustBeAlpha = arguments["firstCharacterMustBeAlpha"].ToBooleanValue();
                var converted = ConversionUtilities.ConvertToUpperCamelCase(input.ToStringValue(), firstCharacterMustBeAlpha);

                return(new ValueTask <FluidValue>(new StringValue(converted)));
            }
        /// <summary>Generates the enumeration name/key of the given enumeration entry.</summary>
        /// <param name="index">The index of the enumeration value (check <see cref="JsonSchema.Enumeration" /> and <see cref="JsonSchema.EnumerationNames" />).</param>
        /// <param name="name">The name/key.</param>
        /// <param name="value">The value.</param>
        /// <param name="schema">The schema.</param>
        /// <returns>The enumeration name.</returns>
        public string Generate(int index, string name, object value, JsonSchema schema)
        {
            if (string.IsNullOrEmpty(name))
            {
                return("Empty");
            }

            switch (name)
            {
            case ("="):
                name = "Eq";
                break;

            case ("!="):
                name = "Ne";
                break;

            case (">"):
                name = "Gt";
                break;

            case ("<"):
                name = "Lt";
                break;

            case (">="):
                name = "Ge";
                break;

            case ("<="):
                name = "Le";
                break;

            case ("~="):
                name = "Approx";
                break;
            }

            if (name.StartsWith("-"))
            {
                name = "Minus" + name.Substring(1);
            }

            if (name.StartsWith("+"))
            {
                name = "Plus" + name.Substring(1);
            }

            if (name.StartsWith("_-"))
            {
                name = "__" + name.Substring(2);
            }

            return(_invalidNameCharactersPattern.Replace(ConversionUtilities.ConvertToUpperCamelCase(name
                                                                                                     .Replace(":", "-").Replace(@"""", @""), true), "_"));
        }
        /// <summary>Gets the enum default value.</summary>
        /// <param name="schema">The schema.</param>
        /// <param name="actualSchema">The actual schema.</param>
        /// <param name="typeNameHint">The type name hint.</param>
        /// <returns>The enum default value.</returns>
        protected virtual string GetEnumDefaultValue(JsonSchema4 schema, JsonSchema4 actualSchema, string typeNameHint)
        {
            var typeName = _typeResolver.Resolve(actualSchema, false, typeNameHint);

            var enumName = schema.Default is string
                           ?schema.Default.ToString()
                               : actualSchema.EnumerationNames[actualSchema.Enumeration.ToList().IndexOf(schema.Default)];

            return(typeName + "." + ConversionUtilities.ConvertToUpperCamelCase(enumName, true));
        }
        /// <summary>Generates the enumeration name/key of the given enumeration entry.</summary>
        /// <param name="index">The index of the enumeration value (check <see cref="JsonSchema.Enumeration" /> and <see cref="JsonSchema.EnumerationNames" />).</param>
        /// <param name="name">The name/key.</param>
        /// <param name="value">The value.</param>
        /// <param name="schema">The schema.</param>
        /// <returns>The enumeration name.</returns>
        public string Generate(int index, string name, object value, JsonSchema schema)
        {
            if (string.IsNullOrEmpty(name))
            {
                return("Empty");
            }

            if (name.StartsWith("_-"))
            {
                name = "__" + name.Substring(2);
            }

            return(_invalidNameCharactersPattern.Replace(ConversionUtilities.ConvertToUpperCamelCase(name
                                                                                                     .Replace(":", "-").Replace(@"""", @""), true), "_"));
        }
        /// <summary>Gets the default value code.</summary>
        /// <param name="schema">The schema.</param>
        /// <param name="allowsNull">Specifies whether the default value assignment also allows null.</param>
        /// <param name="targetType">The type of the target.</param>
        /// <param name="typeNameHint">The type name hint to use when generating the type and the type name is missing.</param>
        /// <returns>The code.</returns>
        public virtual string GetDefaultValue(JsonSchema4 schema, bool allowsNull, string targetType, string typeNameHint)
        {
            if (schema.Default == null)
            {
                return(null);
            }

            var actualSchema = schema is JsonProperty ? ((JsonProperty)schema).ActualPropertySchema : schema.ActualSchema;

            if (actualSchema.IsEnumeration)
            {
                var typeName = _typeResolver.Resolve(actualSchema, false, typeNameHint);

                var enumName = schema.Default is string?
                               schema.Default.ToString() :
                                   actualSchema.EnumerationNames[actualSchema.Enumeration.ToList().IndexOf(schema.Default)];

                return(typeName + "." + ConversionUtilities.ConvertToUpperCamelCase(enumName, true));
            }

            if (schema.Type.HasFlag(JsonObjectType.String))
            {
                return("\"" + schema.Default + "\"");
            }
            else if (schema.Type.HasFlag(JsonObjectType.Boolean))
            {
                return(schema.Default.ToString().ToLower());
            }
            else if (schema.Type.HasFlag(JsonObjectType.Integer) ||
                     schema.Type.HasFlag(JsonObjectType.Number) ||
                     schema.Type.HasFlag(JsonObjectType.Integer))
            {
                return(schema.Default.ToString());
            }
            return(null);
        }
Beispiel #7
0
 public static string Uppercamelcase(Context context, string input, bool firstCharacterMustBeAlpha = true)
 {
     return(ConversionUtilities.ConvertToUpperCamelCase(input, firstCharacterMustBeAlpha));
 }