Merge branch 'master' of github.com:outline/outline

This commit is contained in:
Tom Moor
2018-06-04 15:02:27 -07:00
3 changed files with 34 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, '$1');
// find and extract first emoji
const matches = regex.exec(title);

View File

@@ -0,0 +1,28 @@
/* 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');
expect(parseTitle(`# \\> Title`).title).toBe('> 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);
});