public void EvaluateRow(IRow row, LiquidLoop loop) { foreach (var cell in row.Cells) { var cellValue = GetStringCellValue(cell); var cellOriginalValue = cellValue; foreach (var liquidObject in LiquidHelper.GetLiquidObjects(cellValue)) { var objectName = LiquidHelper.UnwrapLiquidObject(liquidObject); // strip loop variable name objectName = Regex.Replace(objectName, @"^" + loop.VariableName + @"\.", ""); var value = Binder.Eval(objectName, loop.CollectionName, loop.Index); if (value != null) { cellValue = cellValue.Replace(liquidObject, value); } } if (cellValue != cellOriginalValue) { cell.SetCellValue(cellValue); } } }