New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

sealegs

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sealegs

custom toy lexer for css

latest
Source
npmnpm
Version
0.0.2
Version published
Maintainers
1
Created
Source

#Css lexing for the rest of us

Look here sonny, back in my day we didn't have no fancy regular expressions or tools that generated lexers/parsers from grammar definitions.

What we DID have was a can-do attitude, a spring in our step, and first order functions. And we made due, dammit.

Ok, but what is this?

This is a (bad) css lexer with some search functionality bolted on the front of it

Getting stuff out in node

Lexer.js provides a Lexer constructor. The lexer object inherits from EventEmitter

var Lexer = require('sealegs').Lexer;
    
//instantiate lexer
var lexy = new Lexer();
    
// Lexer emits 2 kinds of events:

//'lexerToken' events are emitted when lexer has lexes another token and it's ready.
lexy.on('lexerToken', function (token) {
  //do something with your token.
});

// The 'finished' event is emitted when the lexer runs out of string to lex or encounters and error. 
// (Unfortunately, no error events yet)
lexy.on('finished', function () {
  // All done
});
    
//To get the lexer rolling, simply call 
lexy.begin('.one .two');

Command Line Usage

Run captain.js on a file to get all tokens in stdout:

./captain.js sample.css

Run captain.js with the search flag like this:

./captain.js sample.css -s ".one .two"

you will get an output of how many times this selector was found in the code (possibly as a subset of another selector)

Why not save yourself a lot of time and use a regex?

This, basically.

Credits

Ideas for writing a lexer come from this excellent presentation. Ideas for what makes lexing useful outside of a parser/interpreter come from pfff.

FAQs

Package last updated on 06 Sep 2012

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts