Ejemplo n.º 1
0
        public IEnumerable<CssFunction> ExpandFor(Browser[] browsers)
        {
            foreach (var browser in browsers)
            {
                var args2 = new CssValueList(ValueSeperator.Comma);

                var i = 0;
                foreach (var arg in args)
                {
                    // The legacy syntax didn't contain to on the direction
                    if (i == 0 && arg.ToString().StartsWith("to "))
                    {
                        args2.Add(CssValue.Parse(arg.ToString().Replace("to ", "")));
                    }
                    else
                    {
                        args2.Add(arg);
                    }

                    i++;
                }

                var name = browser.Prefix.Text + "linear-gradient";

                yield return new CssFunction(name, args2);
            }
        }
Ejemplo n.º 2
0
        // transform 0.04s linear, opacity 0.04s linear, visibility 0.04s linear;
        // -webkit-transform 0.04s linear, opacity 0.04s linear, visibility 0.04s linear;

        public static CssValue PatchValue(CssValue value, Browser browser)
        {
            if (value.Kind != NodeKind.ValueList) return value;

            var a = (CssValueList)value;

            var list = new CssValueList(a.Seperator);

            foreach (var node in a)
            {
                if (node.Kind == NodeKind.ValueList) // For comma seperated componented lists
                {
                    list.Add(PatchValue(node, browser));
                }
                else if (node.Kind == NodeKind.String && node.ToString() == "transform")
                {
                    list.Add(new CssString(browser.Prefix.Text + "transform"));
                }
                else
                {
                    list.Add(node);
                }
            }

            return list;
        }
Ejemplo n.º 3
0
        public static CssValue FromComponents(IEnumerable<CssValue> components)
        {
            // A property value can have one or more components.
            // Components are seperated by a space & may include functions, literals, dimensions, etc

            var enumerator = components.GetEnumerator();

            enumerator.MoveNext();

            var first = enumerator.Current;

            if (!enumerator.MoveNext())
            {
                return first;
            }

            var list = new CssValueList(ValueSeperator.Space);

            list.Add(first);
            list.Add(enumerator.Current);

            while (enumerator.MoveNext())
            {
                list.Add(enumerator.Current);
            }

            return list;
        }
Ejemplo n.º 4
0
        public static CssValueList ToSeparatedList(this List <CssValueList> list)
        {
            var values = new CssValueList();

            if (list.Count > 0)
            {
                values.Add(list[0].Reduce());
            }

            for (int i = 1; i < list.Count; i++)
            {
                values.Add(CssValue.Separator);
                values.Add(list[i].Reduce());
            }

            return(values);
        }
Ejemplo n.º 5
0
        public static CssValueList Copy(this CssValueList original)
        {
            var list = new CssValueList();

            for (int i = 0; i < original.Length; i++)
            {
                list.Add(original[i]);
            }

            return(list);
        }
Ejemplo n.º 6
0
        public static CssValueList CopyExcept(this CssValueList original, Int32 index)
        {
            var list = new CssValueList();

            for (int i = 0; i < original.Length; i++)
            {
                if (i != index)
                {
                    list.Add(original[i]);
                }
            }

            return(list);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Creates a value from the given span.
        /// </summary>
        /// <param name="start">The inclusive start index.</param>
        /// <param name="end">The exclusive end index.</param>
        /// <returns>The created value (primitive or list).</returns>
        ICssValue Create(Int32 start, Int32 end)
        {
            if (end - start != 1)
            {
                var list = new CssValueList();

                for (var i = start; i < end; i++)
                {
                    list.Add(_values[i]);
                }

                return(list);
            }

            return(_values[start]);
        }
Ejemplo n.º 8
0
        public static CssValueList CopyToList(this ICssValue value)
        {
            var original = value as CssValueList;

            if (original == null)
            {
                return(new CssValueList(value));
            }

            var newList = new CssValueList();

            foreach (var item in original)
            {
                newList.Add(item);
            }

            return(newList);
        }
Ejemplo n.º 9
0
        public static List <CssValueList> ToList(this CssValueList values)
        {
            var list = new List <CssValueList>();

            for (int i = 0; i < values.Length; i++)
            {
                var entry = new CssValueList();

                for (int j = i; j < values.Length; j++)
                {
                    if (values[j] == CssValue.Separator)
                    {
                        break;
                    }

                    entry.Add(values[j]);
                    i++;
                }

                list.Add(entry);
            }

            return(list);
        }