Merge branch 'master' of github.com:outline/outline
This commit is contained in:
@@ -31,7 +31,8 @@
|
||||
"jest": {
|
||||
"verbose": false,
|
||||
"roots": [
|
||||
"app"
|
||||
"app",
|
||||
"shared"
|
||||
],
|
||||
"moduleNameMapper": {
|
||||
"^.*[.](s?css|css)$": "<rootDir>/__mocks__/styleMock.js",
|
||||
|
||||
@@ -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);
|
||||
|
||||
28
shared/utils/parseTitle.test.js
Normal file
28
shared/utils/parseTitle.test.js
Normal 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);
|
||||
});
|
||||
Reference in New Issue
Block a user