From cba9954621398b70973a7fea2ba7a8d38460817e Mon Sep 17 00:00:00 2001 From: Rene Saarsoo Date: Fri, 18 Sep 2020 15:23:07 +0300 Subject: [PATCH] Derive partial AST types inside parser --- src/ast.ts | 7 ++----- src/parser.ts | 10 ++++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/ast.ts b/src/ast.ts index 88f1786..2288481 100644 --- a/src/ast.ts +++ b/src/ast.ts @@ -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; -}; diff --git a/src/parser.ts b/src/parser.ts index 75421e0..c51c720 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -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>; const extractText = (tokens: Token[]): [string, Token[]] => { let text; @@ -49,6 +45,8 @@ const parseHeader = (tokens: Token[]): [Header, Token[]] => { return [header, tokens]; }; +type IntervalData = Omit; + const parseIntervalParams = (tokens: Token[]): [IntervalData, Token[]] => { const data: Partial = {};