all files / parsers/ unicode-and-emoji.js

68.75% Statements 11/16
25% Branches 1/4
66.67% Functions 2/3
68.75% Lines 11/16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                                    870×   870×       870× 6090×      
'use strict';
 
var Emoji = require('./emoji.js').Emoji;
var Parsimmon = require('parsimmon');
var flattenDeep = require('lodash.flattenDeep');
 
var SurrogatePair = Parsimmon.regex(/[\uD800-\uDBFF][\uDC00-\uDFFF]/);
 
var Unicode = exports.Unicode = Parsimmon.alt(
  Emoji,
  Parsimmon.regex(/[\u0000-\uD799]/),
  SurrogatePair
);
 
exports.parseOne = function (string) {
  var result = Unicode.parse(string);
 
  if (!result.status) {
    return false;
  }
 
  return flattenDeep(result.value).join('');
};
 
exports.parse = function (string) {
  var result = Unicode.many().parse(string);
 
  Iif (!result.status) {
    return false;
  }
 
  return result.value.map(function (p) {
    return flattenDeep(p).join('');
  });
};