private static ICssValue GetItem(CssTupleValue tuple, Int32 index) { if (tuple.Items.Length > index) { return(tuple.Items[index]); } return(GetItemSimple(tuple, index / 2)); }
private static ICssValue GetItemSimple(CssTupleValue tuple, Int32 index) { if (tuple.Items.Length > index) { var nested = tuple.Items[index] as CssTupleValue; if (nested != null && nested.Items.Length == 3 && nested.Items[0] == null && nested.Items[1] == null) { return(nested.Items[2]); } } return(new Constant <Object>(CssKeywords.Auto, null)); }
private static ICssValue CreateValue(CssListValue animatable, CssListValue duration, CssListValue timing, CssListValue delay) { var items = (animatable ?? duration ?? timing ?? delay).Items; var layers = new ICssValue[items.Length]; for (var i = 0; i < items.Length; i++) { layers[i] = new CssTupleValue(new[] { GetValue(animatable, i), GetValue(duration, i), GetValue(timing, i), GetValue(delay, i), }); } return(new CssListValue(layers)); }
private static ICssValue CreateValue(CssListValue duration, CssListValue timing, CssListValue delay, CssListValue iterationCount, CssListValue direction, CssListValue fillMode, CssListValue playState, CssListValue name) { var items = (duration ?? timing ?? delay ?? iterationCount ?? direction ?? fillMode ?? playState ?? name).Items; var layers = new ICssValue[items.Length]; for (var i = 0; i < items.Length; i++) { layers[i] = new CssTupleValue(new[] { GetValue(duration, i), GetValue(timing, i), GetValue(delay, i), GetValue(iterationCount, i), GetValue(direction, i), GetValue(fillMode, i), GetValue(playState, i), GetValue(name, i), }); } return(new CssListValue(layers)); }
public static ICssValue ParseGridTemplate(this StringSource source) { var pos = source.Index; if (source.IsIdentifier(CssKeywords.None)) { return(new Identifier(CssKeywords.None)); } var rows = source.ParseTrackList() ?? source.ParseAutoTrackList(); if (rows != null) { var c = source.SkipSpacesAndComments(); if (c == Symbols.Solidus) { source.SkipCurrentAndSpaces(); var cols = source.ParseTrackList() ?? source.ParseAutoTrackList(); if (cols != null) { source.SkipSpacesAndComments(); return(new GridTemplate(rows, cols, null)); } } } else { var rowValues = new List <ICssValue>(); var col = default(ICssValue); var areaValues = new List <ICssValue>(); var hasValue = false; while (!source.IsDone) { var value = source.ParseGridTemplateAlternative(); if (value == null) { break; } hasValue = true; source.SkipSpacesAndComments(); rowValues.Add(new CssTupleValue(new[] { value.Item1, value.Item3, value.Item4 })); areaValues.Add(new StringValue(value.Item2)); } if (hasValue) { if (source.Current == Symbols.Solidus) { source.SkipCurrentAndSpaces(); col = source.ParseExplicitTrackList(); if (col == null) { source.BackTo(pos); return(null); } } var row = new CssTupleValue(rowValues.ToArray()); var area = new CssTupleValue(areaValues.ToArray()); return(new GridTemplate(row, col, area)); } } source.BackTo(pos); return(null); }