Simple PGN parser built using PEG.js. Grammar file is from PgnViewerJS.
npm i @levidurfee/pgn-parserimport { pgn } from '@levidurfee/pgn-parser';
let po = pgn("1. e4 e5 2. Nf3 Nc6 3. Bb5");
console.log(po);
// PGN {moves: Array(5), header: ""}
// header: ""
// moves: Array(5)
// 0: Move {moveNumber: 1, notation: Notation, turn: "w", commentAfter: null, commentBefore: null, …}
// 1: Move {moveNumber: null, notation: Notation, turn: "b", commentAfter: null, commentBefore: null, …}
// 2: Move {moveNumber: 2, notation: Notation, turn: "w", commentAfter: null, commentBefore: null, …}
// 3: Move {moveNumber: null, notation: Notation, turn: "b", commentAfter: null, commentBefore: null, …}
// 4: Move {moveNumber: 3, notation: Notation, turn: "w", commentAfter: null, commentBefore: null, …}
// length: 5import { pgn as pgnParser } from '@levidurfee/pgn-parser';
let pgn = pgnParser("1. e4 e5 2. Nf3 Nc6 3. Bb5");
console.log(pgn);
// PGN {moves: Array(5), header: ""}
// header: ""
// moves: Array(5)
// 0: Move {moveNumber: 1, notation: Notation, turn: "w", commentAfter: null, commentBefore: null, …}
// 1: Move {moveNumber: null, notation: Notation, turn: "b", commentAfter: null, commentBefore: null, …}
// 2: Move {moveNumber: 2, notation: Notation, turn: "w", commentAfter: null, commentBefore: null, …}
// 3: Move {moveNumber: null, notation: Notation, turn: "b", commentAfter: null, commentBefore: null, …}
// 4: Move {moveNumber: 3, notation: Notation, turn: "w", commentAfter: null, commentBefore: null, …}
// length: 5