Skip to content

Repository files navigation

simfile-parser

npmnpm bundle size

Original parsing code from city41/stepcharts. Props to Matt for building a really sweet site.

Works both in node (server-side or CLI) and in browser. Bun and Deno support is untested, but an interesting future to explore!

Usage

Install with npm install --save simfile-parser or yarn add simfile-parser

// in node.js >= 16.9.0import{parseAllPacks,parsePack,parseSong,calculateStats,}from"simfile-parser";// Use one of the three parsing functions depending on your needs:constallMyStuff=parseAllPacks("/pathToStepmania/Songs");constaGreatPack=parsePack("/pathToStepmania/Songs/DDRMAX2");constaGreatSong=parseSong(".../Songs/Easy as Pie 2/Abracadabra");// you can get some top level info about a song's contents too:calculateStats(aGreatSong.charts["single-challenge"]);/* returns:{ "freezes": 111, "gallops": 0, "jacks": 22, "jumps": 8,}*/

Browser support

Support dragging packs directly into a web app by parsing in-browser!

// requires typescript 5.0 in "Bundler" module resolution mode for typingsimport{parsePack}from"simfile-parser/browser";// necessary to enable data dropsdocument.body.addEventListener("dragover",function(e){e.preventDefault();});document.body.addEventListener("drop",asyncfunction(e){// also necessary to prevent browser navigating to dropped folderevt.preventDefault();if(!evt.dataTransfer){return;}if(evt.dataTransfer.items.length!==1){console.error("too many items dropped, try just one folder");return;}try{constpack=awaitparsePack(evt.dataTransfer.items[0]);console.log(`parsed pack "${pack.name}" with ${pack.songCount} songs`);}catch(e){console.error(e);}});

About

Read stepmania charts with javascript!

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages