Exemplo n.º 1
0
        /// <summary>
        /// Creates an object literal from a list of named values.
        /// </summary>
        internal static ObjectLiteral Create(IReadOnlyList <NamedValue> namedValues, LineInfo location, AbsolutePath path)
        {
            switch (namedValues.Count)
            {
            case 0:
                return(new ObjectLiteral0(location, path));

            case 1:
                return(new ObjectLiteralSlim <StructArray1 <NamedValue> >(
                           StructArray.Create(namedValues[0]),
                           location,
                           path));

            case 2:
                return(new ObjectLiteralSlim <StructArray2 <NamedValue> >(
                           StructArray.Create(namedValues[0], namedValues[1]),
                           location,
                           path));

            case 3:
                return(new ObjectLiteralSlim <StructArray3 <NamedValue> >(
                           StructArray.Create(namedValues[0], namedValues[1], namedValues[2]),
                           location,
                           path));

            case 4:
                return(new ObjectLiteralSlim <StructArray4 <NamedValue> >(
                           StructArray.Create(namedValues[0], namedValues[1], namedValues[2], namedValues[3]),
                           location,
                           path));

            case 5:
                return(new ObjectLiteralSlim <StructArray5 <NamedValue> >(
                           StructArray.Create(namedValues[0], namedValues[1], namedValues[2], namedValues[3], namedValues[4]),
                           location,
                           path));

            default:
                return(new ObjectLiteralN(namedValues, location, path));
            }
        }