blob: f7bf2b92ca13c908a894863dee27164171e78a42 [file] [log] [blame]
/**
* The MIT License (MIT)
* Copyright (c) 2017-present Dmitry Soshnikov <dmitry.soshnikov@gmail.com>
*/
'use strict';
var NFA = require('./nfa/nfa');
var DFA = require('./dfa/dfa');
var nfaFromRegExp = require('./nfa/nfa-from-regexp');
var builders = require('./nfa/builders');
module.exports = {
/**
* Export NFA and DFA classes.
*/
NFA: NFA,
DFA: DFA,
/**
* Expose builders.
*/
builders: builders,
/**
* Builds an NFA for the passed regexp.
*
* @param string | AST | RegExp:
*
* a regular expression in different representations: a string,
* a RegExp object, or an AST.
*/
toNFA: function toNFA(regexp) {
return nfaFromRegExp.build(regexp);
},
/**
* Builds DFA for the passed regexp.
*
* @param string | AST | RegExp:
*
* a regular expression in different representations: a string,
* a RegExp object, or an AST.
*/
toDFA: function toDFA(regexp) {
return new DFA(this.toNFA(regexp));
},
/**
* Returns true if regexp accepts the string.
*/
test: function test(regexp, string) {
return this.toDFA(regexp).matches(string);
}
};