Updated parseTitle to remove escape characters

Tests pass, however the JS running in the browser appears to be behaving differently. Not got to the bottom of it yet
This commit is contained in:
Tom Moor 2018-06-03 22:07:41 -04:00
parent 1c081f8777
commit 6a0a22a636
3 changed files with 33 additions and 2 deletions

View File

@ -31,7 +31,8 @@
"jest": {
"verbose": false,
"roots": [
"app"
"app",
"shared"
],
"moduleNameMapper": {
"^.*[.](s?css|css)$": "<rootDir>/__mocks__/styleMock.js",

View File

@ -6,7 +6,10 @@ export default function parseTitle(text: string = '') {
// find and extract title
const firstLine = text.trim().split(/\r?\n/)[0];
const title = firstLine.replace(/^#/, '').trim();
const trimmedTitle = firstLine.replace(/^#/, '').trim();
// remove any escape characters
const title = trimmedTitle.replace(/\\([\\`*{}[\]()#+\-.!_>])/g, '$&');
// find and extract first emoji
const matches = regex.exec(title);

View File

@ -0,0 +1,27 @@
/* eslint-disable flowtype/require-valid-file-annotation */
import parseTitle from './parseTitle';
it('should trim the title', () => {
expect(parseTitle(`# Lots of space `).title).toBe('Lots of space');
});
it('should extract first title', () => {
expect(parseTitle(`# Title one\n# Title two`).title).toBe('Title one');
});
it('should remove escape characters', () => {
expect(parseTitle(`# Thing \- one`).title).toBe('Thing - one');
expect(parseTitle(`# \[wip\] Title`).title).toBe('[wip] Title');
});
it('should parse emoji if first character', () => {
const parsed = parseTitle(`# 😀 Title`);
expect(parsed.title).toBe('😀 Title');
expect(parsed.emoji).toBe('😀');
});
it('should not parse emoji if not first character', () => {
const parsed = parseTitle(`# Title 🌈`);
expect(parsed.title).toBe('Title 🌈');
expect(parsed.emoji).toBe(undefined);
});