Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

noahm/simfile-parser

Repository files navigation

simfile-parser

npm npm 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.0
import {
 parseAllPacks,
 parsePack,
 parseSong,
 calculateStats,
} from "simfile-parser";
// Use one of the three parsing functions depending on your needs:
const allMyStuff = parseAllPacks("/pathToStepmania/Songs");
const aGreatPack = parsePack("/pathToStepmania/Songs/DDRMAX2");
const aGreatSong = 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 typings
import { parsePack } from "simfile-parser/browser";
// necessary to enable data drops
document.body.addEventListener("dragover", function (e) {
 e.preventDefault();
});
document.body.addEventListener("drop", async function (e) {
 // also necessary to prevent browser navigating to dropped folder
 evt.preventDefault();
 if (!evt.dataTransfer) {
 return;
 }
 if (evt.dataTransfer.items.length !== 1) {
 console.error("too many items dropped, try just one folder");
 return;
 }
 try {
 const pack = await parsePack(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

Watchers

Forks

Contributors 2

Languages

AltStyle によって変換されたページ (->オリジナル) /