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 = {};