diff --git a/.gitignore b/.gitignore index 083314b..2ba2750 100644 --- a/.gitignore +++ b/.gitignore @@ -144,3 +144,5 @@ dist .svelte-kit # End of https://www.toptal.com/developers/gitignore/api/node + +src/generated \ No newline at end of file diff --git a/flake.nix b/flake.nix index 63eedc2..ccc2063 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,6 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; - flake-utils.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { diff --git a/grammar/task.pegjs b/grammar/task.pegjs new file mode 100644 index 0000000..0087134 --- /dev/null +++ b/grammar/task.pegjs @@ -0,0 +1 @@ +start = ('a' / 'b')+ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0d7808e..3d90be3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "obsidian-tasks-reminder", "version": "0.0.1", "license": "ISC", + "dependencies": { + "peggy": "^4.2.0" + }, "bin": { "obsidian-tasks-reminder": "dist/index.js" }, @@ -464,6 +467,18 @@ "node": ">= 8" } }, + "node_modules/@peggyjs/from-mem": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@peggyjs/from-mem/-/from-mem-1.3.5.tgz", + "integrity": "sha512-oRyzXE7nirAn+5yYjCdWQHg3EG2XXcYRoYNOK8Quqnmm+9FyK/2YWVunwudlYl++M3xY+gIAdf0vAYS+p0nKfQ==", + "license": "MIT", + "dependencies": { + "semver": "7.6.3" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@types/node": { "version": "22.10.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.6.tgz", @@ -828,6 +843,32 @@ "node": ">=8" } }, + "node_modules/peggy": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/peggy/-/peggy-4.2.0.tgz", + "integrity": "sha512-ZjzyJYY8NqW8JOZr2PbS/J0UH/hnfGALxSDsBUVQg5Y/I+ZaPuGeBJ7EclUX2RvWjhlsi4pnuL1C/K/3u+cDeg==", + "license": "MIT", + "dependencies": { + "@peggyjs/from-mem": "1.3.5", + "commander": "^12.1.0", + "source-map-generator": "0.8.0" + }, + "bin": { + "peggy": "bin/peggy.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/peggy/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -943,6 +984,18 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -953,6 +1006,15 @@ "node": ">=8" } }, + "node_modules/source-map-generator": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz", + "integrity": "sha512-psgxdGMwl5MZM9S3FWee4EgsEaIjahYV5AzGnwUvPhWeITz/j6rKpysQHlQ4USdxvINlb8lKfWGIXwfkrgtqkA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 10" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/package.json b/package.json index 1cc13f7..8e00603 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,9 @@ "description": "The utility which scans Obsidian Tasks and triggers proper notification about them", "main": "index.ts", "scripts": { - "start": "tsx src/index.ts", - "build": "tsc && tsc-alias" + "grammar": "peggy grammar/task.pegjs --dts -o src/generated/grammar/task.js", + "start": "npm run grammar && tsx src/index.ts", + "build": "npm run grammar && tsc && tsc-alias" }, "author": "Bartłomiej Pluta ", "license": "ISC", @@ -19,5 +20,6 @@ "typescript": "^5.6.3" }, "dependencies": { + "peggy": "^4.2.0" } } diff --git a/package.nix b/package.nix index 33a359f..7bdfdd4 100644 --- a/package.nix +++ b/package.nix @@ -1,7 +1,11 @@ -{buildNpmPackage, ...}: +{ + buildNpmPackage, + lib, + ... +}: buildNpmPackage { pname = "obsidian-tasks-reminder"; version = "0.0.1"; src = ./.; - npmDepsHash = "sha256-aUNhG2ntgUC14fQyad01nMoV2EY4gg3e6UvPOEhd8vU="; + npmDepsHash = "sha256-rhwGWuw/X7YGdPwIrgkIGukFNpAwpx/a6H3D/2cVP5Y="; } diff --git a/src/index.ts b/src/index.ts index 06f320c..e36cd8a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,3 @@ -console.log("Hello, world!"); \ No newline at end of file +import {parse} from "./generated/grammar/task"; + +console.log(parse("aabbabab")); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index d390236..6124404 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,6 +4,7 @@ "module": "commonjs", "outDir": "./dist", "rootDir": "./src", + "allowJs": true, "strict": true, "esModuleInterop": true, "typeRoots": [ @@ -14,7 +15,7 @@ "@types": ["./src/types"] } }, - "include": ["src/**/*"], + "include": ["src/**/*"], "exclude": [ "node_modules", "src/types"