Skip to content

Commit

Permalink
Output a smaller regular expression using regexgen
Browse files Browse the repository at this point in the history
Closes #8.
  • Loading branch information
devongovett authored and mathiasbynens committed Dec 21, 2016
1 parent edd87c3 commit fd743e7
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 21 deletions.
2 changes: 1 addition & 1 deletion index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,9 @@
"devDependencies": {
"coveralls": "^2.11.1",
"istanbul": "^0.3.5",
"jsesc": "^0.5.0",
"lodash.template": "^3.2.0",
"mocha": "^2.1.0",
"regenerate": "^1.2.1",
"regex-trie": "^1.0.4",
"regexgen": "^1.0.0",
"string.fromcodepoint": "^0.2.1",
"unicode-tr51": "^6.0.0"
}
Expand Down
21 changes: 5 additions & 16 deletions scripts/generate-regex.js
Original file line number Diff line number Diff line change
@@ -1,32 +1,21 @@
var fs = require('fs');
var path = require('path');

var jsesc = require('jsesc');
var regenerate = require('regenerate');
var regExpTrie = require('regex-trie');
var regexgen = require('regexgen');
var template = require('lodash.template');
require('string.fromcodepoint');

var emojiCodePoints = require('unicode-tr51/code-points');

var multipleCodePointsTrie = regExpTrie();
var loneCodePointsSet = regenerate();
emojiCodePoints.forEach(function(value) {
var strings = emojiCodePoints.map(function(value) {
if (Array.isArray(value)) {
var string = String.fromCodePoint.apply(null, value);
multipleCodePointsTrie.add(string);
} else {
loneCodePointsSet.add(value);
return String.fromCodePoint.apply(null, value);
}
return String.fromCodePoint(value);
});

var loneCodePointsPart = loneCodePointsSet.toString();
var multipleCodePointsPart = multipleCodePointsTrie.toString();

var ROOT = path.resolve(__dirname, '..');
var sourceTemplate = template(fs.readFileSync(ROOT + '/templates/index.js'));
var result = sourceTemplate({
'multipleCodePointsPart': multipleCodePointsPart,
'loneCodePointsPart': loneCodePointsPart
'regex': regexgen(strings, 'g')
});
fs.writeFileSync(ROOT + '/index.js', result);
2 changes: 1 addition & 1 deletion templates/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module.exports = function() {
return /<%= multipleCodePointsPart %>|<%= loneCodePointsPart %>/g;
return <%= regex %>;
};

0 comments on commit fd743e7

Please sign in to comment.