Pre-alpha. Horrible performance, only functions for working with FSMs implemented. Stay tuned. See TODO list.
- Regular Expressions Gym - Slim your regexes one step at a time! Source is here.
- FSM Simulator - Visually simulate the operation of your DFAs, NFAs and eNFAs one input symbol at a time! Source is here.
- FSM2Regex - Convert your FSMs to regexes and your regexes to FSMs! Source is here.
If you just want to use noam (and not contribute to development), install using npm:
npm install noam
To use noam in a browser, add a
<script> link to the browser-based versions found in
or minified version:
- Fork and/or clone repo:
git clone https://github.com/izuzak/noam.git
- Change dir to noam:
- Install dependencies:
- Make changes to noam sources (
./src), tests (
./test) or benchmarks (
- Build using grunt (validate -> lint -> concat -> test -> minify):
grunt(on linux and osx),
- (bonus points) Run
istanbul cover node_modules/jasmine-node/bin/jasmine-node testto get code coverage reports in
./coverage. Add more tests or change existing tests to improve coverage
- Fix issues reported by tests and coverage reports, and then repeat 5) and 6)
- Commit, push and make a pull request, or send a git patch by e-mail
- E-mail me if you have questions (e-mail address is below)
Noam is built with many awesome open-source projects:
- structure.js - used for its JS hashtable implementation
- cli-table - used for drawing ascii tables in the command-line version of noam
- jQuery - used for the FSM Web application playgrounds
- NodeJS - used for running the command-line version of noam
- viz.js - used for drawing FSM graphs in Web applications
- Bootstrap - used for styles in regex simplification webapp
- JsDiff - used for diffing regexes in regex simplifier webapp
- jasmine-node and grunt-jasmine-node - used for unit testing
- benchtable and benchmark.js - used for performance benchmarking
- grunt - used as the build tool for the project
- JSHint - used for linting the noam lib
- UglifyJS - used for minifying the noam lib
- PhantomJS - used for testing webapps
- WD.js - used for testing webapps
- Istanbul - used for code coverage
Licensed under the Apache 2.0 License.