Derive partial AST types inside parser
This commit is contained in:
parent
6563f4fd5a
commit
cba9954621
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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> = {};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue