public static SheetCtx New(Metadata meta, Dictionary <string, object> headerValues, AsyncExprCtx parent) { var sc = meta.ctxHdr; var values = new object[sc.values.Count]; sc.values.CopyTo(values, 0); var k2n = sc.name2ndx; values[k2n[HdrCellsRef.name]] = headerValues; { var prevRowVals = new OPs.ListOfConst(); for (int i = meta.ctxRow.values.Count; i > 0; i--) { prevRowVals.Add(null); } // imitate empty zero row prevRowVals[iRowVals] = new Dictionary <string, object>(); values[k2n[PrevValsRef.name]] = prevRowVals; } // template metadata info context var aec = new AsyncExprCtx(sc.parent, sc.parent.values, parent); // var ctx = new SheetCtx(meta, values, aec); return(ctx.Condition ? ctx : null); }
public SheetCtx TryGetSheetCtx(AsyncExprCtx parent, Dictionary <string, object> headerValues, int nHeaderRows) { if (nHeaderRows == iHdrMaxUsedRow) { return(SheetCtx.New(this, headerValues, parent)); } if (nHeaderRows > iHdrMaxUsedRow) { return(SheetCtx.Empty); } else { return(null); } }