1.2.3 • Published 3 years ago

@confuzzle/puz-crossword v1.2.3

Weekly downloads
4
License
MIT
Repository
github
Last release
3 years ago

@confuzzle/puz-crossword

This package is for reading, writing, and parsing .puz format files. It contains a single class, PuzCrossword. For standalone reading or writing, see also:

Methods

  • PuzCrossword.from(x) - equivalent to Buffer.from(x), reads .puz file from x and returns a new PuzCrossword.
  • toBytes() - returns a Uint8Array containing this crossword in .puz binary format
  • toBuffer() - returns a Buffer containing this crossword in .puz binary format

Fields

PuzCrossword objects have the following fields as defined in the .puz file format. They are all strings unless otherwise specified.

  • title
  • author
  • copyright
  • note
  • width - integer
  • height - integer
  • clues - array of strings
  • solution
  • state

In addition to these, there are the following fields:

  • hasState - boolean indicating whether state is all blank squares
  • parsedClues - array of parsed clue objects

There is no clue numbering explicitly encoded in the .puz file format, so parsed clues are provided as a convenience. Here is an example of a parsed clue object.

{
  number: 42,
  text: 'The ultimate question',
  solution: 'GFOPIOFJ',
  state: '--------',
  row: 9,
  col: 0,
  isAcross: true,
  length: 8
}

Example Usage

const PuzCrossword = require('@confuzzle/puz-crossword').PuzCrossword;
const fs = require('fs');
const cw = PuzCrossword.from(fs.readFileSync("test.puz"));
cw.title = "A new title"
const cw2 = PuzCrossword.from(cw.toBytes());
console.log(cw2.title)

Limitations

The solution in the above clue is scrambled, unscrambling is not yet implemented. Other .puz features such as rebuses and timers have also not yet been implemented.