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); } }
// 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; }
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; }
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); }
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); }
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); }
/// <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]); }
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); }
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); }