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