public ITableMapper Parse(JobParser parser, ParseState state) { var table = parser.ParseTableDefinition(state.Select("Table") ?? state.Select(null, true)); Type itemType; var selector = Selectors.SelectFromName(GetSelector(parser, state), out itemType); var expand = state.Select("Expand"); if (expand != null) { var expandField = parser.ParseFieldMapper(expand) as SimpleFieldMapper; if (expandField == null) { throw ParseException.AttributeError(expand, "Invalid field specified"); } var delimiter = state.TryGet("Delimiter", "|"); return(new SimpleTableMapper(selector, new TableDefinition("").Map( new SimpleTableMapper( scope => expandField.Selector(scope) .TryGet(v => "" + v, "") .Split(new[] { delimiter }, StringSplitOptions.RemoveEmptyEntries), table)))); } return(new SimpleTableMapper(selector, table)); }
public ITableMapper Parse(JobParser parser, ParseState state) { var repeats = state.TryGet("Repeats", 10); var repeatState = new State(); var def = parser.ParseTableDefinition(state); def.FieldMappers = def.FieldMappers.Concat(new[] { new SimpleFieldMapper("Repeat", scope => "Value" + repeatState.Level, typeof(string), FieldType.Dimension) }).ToArray(); return(new SimpleTableMapper(scope => Repeat(scope, repeats, repeatState), def)); }