Derive partial AST types inside parser

This commit is contained in:
Rene Saarsoo 2020-09-18 15:23:07 +03:00
parent 6563f4fd5a
commit cba9954621
2 changed files with 6 additions and 11 deletions

View File

@ -7,12 +7,9 @@ export type Workout = {
intervals: Interval[];
};
export type IntervalData = {
export type Interval = {
type: IntervalLabelTokenValue;
duration: number;
power: { from: number; to: number };
cadence?: number;
};
export type Interval = IntervalData & {
type: IntervalLabelTokenValue;
};

View File

@ -1,11 +1,7 @@
import { Interval, IntervalData, Workout } from "./ast";
import { Interval, Workout } from "./ast";
import { isIntervalLabelTokenValue, Token } from "./tokenizer";
type Header = {
name?: string;
author?: string;
description?: string;
};
type Header = Partial<Omit<Workout, "intervals">>;
const extractText = (tokens: Token[]): [string, Token[]] => {
let text;
@ -49,6 +45,8 @@ const parseHeader = (tokens: Token[]): [Header, Token[]] => {
return [header, tokens];
};
type IntervalData = Omit<Interval, "type">;
const parseIntervalParams = (tokens: Token[]): [IntervalData, Token[]] => {
const data: Partial<IntervalData> = {};