npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gift-parser-ide

v0.2.6

Published

A parser for Moodle's GIFT format designed for error checking in IDE's.

Downloads

450

Readme

GIFT-Parser

A parser for Moodle's GIFT format designed for error checking in IDE's. It is the library that powers the VSCode GIFT Language Extension.

This project builds on fuhrmanator's GIFT grammar, adding heuristic based error recovery and incremental parsing to deliver better error reports for end users.

Install

npm install gift-parser-ide

Usage

There are two parsers available:

  • Class-based incremental parser: This parser diffs the changes in the text from the previous parse and only parses the changes. This improves the speed of parsing drastically for repeated parsing, making it useful for IDE's.
  • Function-based one-shot parser: Parses the whole input text everytime a new text is given.

Importing

ES6+

import GIFTParser from "gift-parser-ide"; // Default: Class-based Incremental Parser
import { parser } from "gift-parser-ide"; // Function-based One-Shot Parser

Node/CommonJS

var Parser = require("gift-parser-ide").default; // Default: Class-based Incremental Parser
var parser = require("gift-parser-ide").parser; // Function-based One-Shot Parser

Example

var text = "::Title:: Gift Question {}";

// Class
var Parser = new GIFTParser();
Parser.update(text); //Updates the parser with new text
var output = Parser.result(); // Returns GIFTResult[]

// Function
var output = parser.parse(text); // Returns GIFTResult[]

API

GIFTParser.update(text: string)

  • Updates the GIFTParser with new text. To return a value, use .result() to get a full result or .parseOnly() and .errorOnly() to get only the parsed output or error output respectively.

GIFTParser.result()

  • Returns a GIFTResult[] which includes both parsed sections of GIFT and sections with errors.

GIFTParser.parseOnly()

  • Returns the parsed output of a GIFT text. Does not throw an error if a section cannot be parsed.

GIFTParser.errorOnly()

  • Returns all errors found within a GIFT text.

parser.parse(text: string)

  • Parses a GIFT text and returns both parsed sections of GIFT and sections with errors. Functionally equivalent to GIFTParser.update(text).result() without keeping previous parses.

parser.parseOnly(text: string)

  • Returns the parsed output of a GIFT text. Does not throw an error if a section cannot be parsed. Functionally equivalent to GIFTParser.update(text).parseOnly() without keeping previous parses.

parser.errorOnly(text: string)

  • Returns all errors found within a GIFT text. Functionally equivalent to GIFTParser.update(text).errorOnly() without keeping previous parses.

parser.parseRaw(text: string)

  • Wraps the raw GIFT parser. Mainly used as a utility class.

License

MIT