remark-parse-no-trim
Version:
remark plugin to parse Markdown
52 lines (39 loc) • 929 B
JavaScript
var decimal = require('is-decimal')
var alphabetical = require('is-alphabetical')
var plusSign = 43 // '+'
var dash = 45 // '-'
var dot = 46 // '.'
var underscore = 95 // '_'
module.exports = locate
// See: <https://github.github.com/gfm/#extended-email-autolink>
function locate(value, fromIndex) {
var self = this
var at
var position
if (!this.options.gfm) {
return -1
}
at = value.indexOf('@', fromIndex)
if (at === -1) {
return -1
}
position = at
if (position === fromIndex || !isGfmAtext(value.charCodeAt(position - 1))) {
return locate.call(self, value, at + 1)
}
while (position > fromIndex && isGfmAtext(value.charCodeAt(position - 1))) {
position--
}
return position
}
function isGfmAtext(code) {
return (
decimal(code) ||
alphabetical(code) ||
code === plusSign ||
code === dash ||
code === dot ||
code === underscore
)
}