peoplestring-parse
v2.0.4
Published
parse strings like "Mary Smith <[email protected]> (https://marysmith.com) [SomeCo, Inc.]"
Downloads
5
Readme
The package exports a single function.
var parse = require('peoplestring-parse')
The function takes a single string argument (a "peoplestring") and
returns an Object
with name
, email
, url
, and for
properties
for each piece of people information appearing in the string.
The following examples are also the test suite for the package. They use
Node.js' built-in assert
module.
var assert = require('assert')
A peoplestring can contain just a name.
assert.deepStrictEqual(
parse('Mary Smith'),
{name: 'Mary Smith'}
)
If the name has trailing whitespace, it's ignored.
assert.deepStrictEqual(
parse('Mary Smith '),
{name: 'Mary Smith'}
)
If the name has leading whitespace, it's ignored.
assert.deepStrictEqual(
parse(' Mary Smith'),
{name: 'Mary Smith'}
)
A peoplestring can contain an e-mail address in angle brackets.
assert.deepStrictEqual(
parse('Mary Smith <[email protected]>'),
{
name: 'Mary Smith',
email: '[email protected]'
}
)
A peoplestring can contain a URL in parentheses.
assert.deepStrictEqual(
parse('Mary Smith (https://marysmith.com)'),
{
name: 'Mary Smith',
url: 'https://marysmith.com'
}
)
A peoplestring can contain the name of another person or company to show a person's contribution is a work made for hire for someone else.
assert.deepStrictEqual(
parse('Mary Smith [SuperCo, Inc.]'),
{
name: 'Mary Smith',
for: 'SuperCo, Inc.'
}
)
A peoplestring can contain a name, an e-mail address, and a URL.
assert.deepStrictEqual(
parse('Mary Smith <[email protected]> (https://marysmith.com)'),
{
name: 'Mary Smith',
email: '[email protected]',
url: 'https://marysmith.com'
}
)
assert.deepStrictEqual(
parse('Mary Smith (https://marysmith.com) <[email protected]>'),
{
name: 'Mary Smith',
email: '[email protected]',
url: 'https://marysmith.com'
}
)
A peoplestring can contain a name, an e-mail address, a URL, a work made for hire owner.
assert.deepStrictEqual(
parse(
'Mary Smith' +
' <[email protected]>' +
' (https://marysmith.com)' +
' [SomeCo, Inc.]'
),
{
name: 'Mary Smith',
email: '[email protected]',
url: 'https://marysmith.com',
for: 'SomeCo, Inc.'
}
)
A peoplestring can contain just an e-mail address in angle brackets.
assert.deepStrictEqual(
parse('<[email protected]>'),
{email: '[email protected]'}
)
A peoplestring can contain just a URL in parentheses.
assert.deepStrictEqual(
parse('(https://marysmith.com)'),
{url: 'https://marysmith.com'}
)
A peoplestring can contain just the name of the work made for hire owner.
assert.deepStrictEqual(
parse('[SuperCo, Inc.]'),
{for: 'SuperCo, Inc.'}
)
The function throws when passed a non-string arguments.
assert.throws(function () {
parse({a: 1})
})