Пример #1
0
 /// <summary>
 /// The CSV format isn't robust enough to describe if different assets define different
 /// types for the same field name. This method checks if a "Text" field has a Boolean
 /// or Number value and returns that type instead of Text.
 /// </summary>
 /// <returns>The field type.</returns>
 /// <param name="value">Value.</param>
 /// <param name="typeSpecifier">Type specifier.</param>
 private FieldType GuessFieldType(string value, string typeSpecifier)
 {
     if (string.Equals(typeSpecifier, "Text") && !string.IsNullOrEmpty(value))
     {
         if (IsBoolean(value))
         {
             return(FieldType.Boolean);
         }
         else if (IsNumber(value))
         {
             return(FieldType.Number);
         }
     }
     return(Field.StringToFieldType(typeSpecifier));
 }
Пример #2
0
        /// <summary>
        /// Reads the asset fields.
        /// </summary>
        /// <param name="fieldNames">Field names.</param>
        /// <param name="fieldTypes">Field types.</param>
        /// <param name="ignore">List of field names to not add.</param>
        /// <param name="values">CSV values.</param>
        /// <param name="fields">Fields list of populate.</param>
        private void ReadAssetFields(string[] fieldNames, string[] fieldTypes, List <string> ignore,
                                     string[] values, List <Field> fields)
        {
            // Look for a special field named "InitialValueType" used in Variables section:
            var isInitialValueTypeKnown = false;
            var initialValueType        = FieldType.Text;

            for (int i = 0; i < fieldNames.Length; i++)
            {
                if (string.Equals(fieldNames[i], "InitialValueType"))
                {
                    initialValueType        = Field.StringToFieldType(values[i]);
                    isInitialValueTypeKnown = true;
                    break;
                }
            }

            // Convert all fields:
            for (int i = 0; i < fieldNames.Length; i++)
            {
                if ((ignore != null) && ignore.Contains(fieldNames[i]))
                {
                    continue;
                }
                if (string.Equals(values[i], "{{omit}}"))
                {
                    continue;
                }
                if (string.IsNullOrEmpty(fieldNames[i]))
                {
                    continue;
                }
                string title = fieldNames[i];
                string value = values[i];
                // Special handling required for Initial Value of Variables section:
                FieldType type = (string.Equals(title, "Initial Value") && isInitialValueTypeKnown) ? initialValueType : GuessFieldType(value, fieldTypes[i]);
                fields.Add(new Field(title, value, type));
            }
        }