commit ae31567cbf97d46d04360dacb0e643423518e6b1 Author: Rene Saarsoo Date: Thu Sep 17 22:47:18 2020 +0300 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/examples/threshold-pushing.txt b/examples/threshold-pushing.txt new file mode 100644 index 0000000..a940689 --- /dev/null +++ b/examples/threshold-pushing.txt @@ -0,0 +1,21 @@ +Name: Threshold pushing +Author: R.Saarsoo +Description: + Start with a good warm up (10 minutes Zone 1, then 5 minutes Zone 2, + 5 minutes Zone 3 followed by 5 minutes easy spinning). + Then straight in at Threshold Pushing powers for 12 mins. + Have 10 mins easy soft pedalling and repeat - warm down 15 minutes. + This session is designed to increase your FTP from below. + Working predominately aerobic metabolism. + In time your body will become more comfortable at these powers + and your FTP will increase. + +Warmup: 20:00 45%..75% + +Rest: 5:00 52% +Interval: 12:00 100% 90rpm +Rest: 10:00 52% +Interval: 12:00 100% 90rpm +Rest: 10:00 52% + +Cooldown: 10:00 65%..45% diff --git a/examples/threshold-pushing.zwo b/examples/threshold-pushing.zwo new file mode 100644 index 0000000..2e8dedb --- /dev/null +++ b/examples/threshold-pushing.zwo @@ -0,0 +1,31 @@ + + R.Saarsoo + Threshold pushing + + Start with a good warm up (10 minutes Zone 1, then 5 minutes Zone 2, + 5 minutes Zone 3 followed by 5 minutes easy spinning). + Then straight in at Threshold Pushing powers for 12 mins. + Have 10 mins easy soft pedalling and repeat - warm down 15 minutes. + This session is designed to increase your FTP from below. + Working predominately aerobic metabolism. + In time your body will become more comfortable at these powers + and your FTP will increase. + + bike + + + + + + + + + + + + + + + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..956d2ea --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "make-workout", + "version": "0.0.0", + "license": "GPL-3.0-or-later", + "scripts": { + "lint:ts": "tsc --no-emit", + "test": "ts-node src/index.ts examples/threshold-pushing.txt" + }, + "devDependencies": { + "@types/node": "^14.10.3", + "ts-node": "^9.0.0", + "typescript": "^4.0.2" + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..abf38b1 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,30 @@ +import * as fs from "fs"; + +type Def = { + type: string; + text: string; +}; + +const parseDefinition = (line: string): Def | undefined => { + const matches = line.match(/^(\w+):(.*)$/); + if (!matches) { + return undefined; + } + return { + type: matches[1], + text: matches[2], + } +}; + +const isDefined = (x: T | undefined): x is T => Boolean(x); + +const filename = process.argv[2]; + +console.log(`Parsing: ${filename}`); + +const file = fs.readFileSync(filename, "utf8"); + +file.split(/\n/) + .map(parseDefinition) + .filter(isDefined) + .forEach((def) => console.log(def.type)); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f175db5 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "sourceMap": true, + "outDir": "dist", + "strict": true, + }, + "include": [ + "src/**/*" + ] +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..22b6cc3 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,62 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/node@^14.10.3": + version "14.10.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.10.3.tgz#5ae1f119c96643fc9b19b2d1a83bfa2ec3dbb7ea" + integrity sha512-zdN0hor7TLkjAdKTnYW+Y22oIhUUpil5ZD1V1OFq0CR0CLKw+NdR6dkziTfkWRLo6sKzisayoj/GNpNbe4LY9Q== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +source-map-support@^0.5.17: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +ts-node@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3" + integrity sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +typescript@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" + integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==