A spreadsheet will be a grid of fields. Every field can contain a string or an expression, as demonstrated in the following screenshot:
In lib/model/sheet.ts
, we will define the sheet and create functions to parse, show and calculate all expressions in the field.
First, we will import types and functions that we will use in this file.
import { Expression, Variable, calculateExpression, Constant, Failure, FailureKind, validate, expressionToString } from "./expression"; import { parse, parseConstant, parseExpression} from "./parser";
We can define a field as an expression or a string, and a sheet as a grid of fields:
export type Field = Expression | string; export class Sheet { constructor( public title: string, public grid: Field[][] ) {} }
Now we will write functions that give the amount of columns and rows of the sheet.
export function columns(sheet: Sheet) { return sheet.grid.length; } ...