diff --git a/src/ast.ts b/src/ast.ts index 3df5a02..d820f9a 100644 --- a/src/ast.ts +++ b/src/ast.ts @@ -1,4 +1,4 @@ -import { IntervalLabelTokenValue } from "./tokenizer"; +import { IntervalLabelTokenValue } from "./parser/tokenizer"; export type Workout = { name: string; diff --git a/src/index.ts b/src/index.ts index d871f31..82816b9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,6 @@ import * as fs from "fs"; import { generateZwo } from "./generateZwo"; import { parse } from "./parser"; import { stats } from "./stats"; -import { tokenize } from "./tokenizer"; const opts = { stats: false, filename: "" }; if (process.argv[2] === "--stats") { @@ -12,7 +11,7 @@ if (process.argv[2] === "--stats") { opts.filename = process.argv[2]; } -const workout = parse(tokenize(fs.readFileSync(opts.filename, "utf8"))); +const workout = parse(fs.readFileSync(opts.filename, "utf8")); if (opts.stats) { console.log(stats(workout)); diff --git a/src/parser/index.ts b/src/parser/index.ts new file mode 100644 index 0000000..71f2bae --- /dev/null +++ b/src/parser/index.ts @@ -0,0 +1,5 @@ +import { Workout } from "../ast"; +import { parseTokens } from "./parser"; +import { tokenize } from "./tokenizer"; + +export const parse = (source: string): Workout => parseTokens(tokenize(source)); diff --git a/src/parser.ts b/src/parser/parser.ts similarity index 96% rename from src/parser.ts rename to src/parser/parser.ts index 63af0c0..356c13a 100644 --- a/src/parser.ts +++ b/src/parser/parser.ts @@ -1,4 +1,4 @@ -import { Interval, Workout } from "./ast"; +import { Interval, Workout } from "../ast"; import { isIntervalLabelTokenValue, Token } from "./tokenizer"; type Header = Partial>; @@ -105,7 +105,7 @@ const parseIntervals = (tokens: Token[]): Interval[] => { return intervals; }; -export const parse = (tokens: Token[]): Workout => { +export const parseTokens = (tokens: Token[]): Workout => { const [header, intervalTokens] = parseHeader(tokens); return { name: header.name || "", diff --git a/src/tokenizer.ts b/src/parser/tokenizer.ts similarity index 100% rename from src/tokenizer.ts rename to src/parser/tokenizer.ts