/// <summary>
        /// Formats or reformats the name according to the rules of this formatter.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="strategy">The strategy to invoke.</param>
        /// <returns>System.String.</returns>
        private string FormatName(string name, GraphNameFormatStrategy strategy)
        {
            if (name == null)
            {
                return(null);
            }

            switch (strategy)
            {
            case GraphNameFormatStrategy.ProperCase:
                return(name.FirstCharacterToUpperInvariant());

            case GraphNameFormatStrategy.CamelCase:
                return(name.FirstCharacterToLowerInvariant());

            case GraphNameFormatStrategy.UpperCase:
                return(name.ToUpperInvariant());

            case GraphNameFormatStrategy.LowerCase:
                return(name.ToLowerInvariant());

            // ReSharper disable once RedundantCaseLabel
            case GraphNameFormatStrategy.NoChanges:
            default:
                return(name);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="GraphNameFormatter" /> class.
 /// </summary>
 /// <param name="typeNameStrategy">The strategy to use for naming graph types.</param>
 /// <param name="fieldNameStrategy">The strategy to use for naming fields.</param>
 /// <param name="enumValueStrategy">The strategy to use for naming individual enum values.</param>
 public GraphNameFormatter(
     GraphNameFormatStrategy typeNameStrategy  = GraphNameFormatStrategy.ProperCase,
     GraphNameFormatStrategy fieldNameStrategy = GraphNameFormatStrategy.CamelCase,
     GraphNameFormatStrategy enumValueStrategy = GraphNameFormatStrategy.UpperCase)
 {
     _typeNameStrategy  = typeNameStrategy;
     _fieldNameStrategy = fieldNameStrategy;
     _enumValueStrategy = enumValueStrategy;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GraphNameFormatter"/> class.
 /// </summary>
 /// <param name="singleStrategy">The single strategy to use for all naming options.</param>
 public GraphNameFormatter(GraphNameFormatStrategy singleStrategy)
 {
     _typeNameStrategy  = singleStrategy;
     _fieldNameStrategy = singleStrategy;
     _enumValueStrategy = singleStrategy;
 }