You've already forked joplin
							
							
				mirror of
				https://github.com/laurent22/joplin.git
				synced 2025-10-31 00:07:48 +02:00 
			
		
		
		
	| @@ -66,4 +66,23 @@ describe('markdownUtils', function() { | ||||
| 		} | ||||
| 	})); | ||||
|  | ||||
| 	it('replace markdown link with description', asyncTest(async () => { | ||||
|  | ||||
| 		const testCases = [ | ||||
| 			['Test case [one](link)', 'Test case one'], | ||||
| 			['Test case ', 'Test case two'], | ||||
| 			['**# -Test case three', 'Test case three'], | ||||
| 			['This is a looooooong tiiitlllle with moore thaaaaaaan eighty characters and a [link](linkurl) at the end', 'This is a looooooong tiiitlllle with moore thaaaaaaan eighty characters and a li'], | ||||
| 			['', ''], | ||||
| 			['These are [link1](one), [link2](two) and ', 'These are link1, link2 and link3'], | ||||
| 			['No description link to [](https://joplinapp.org)', 'No description link to https://joplinapp.org'], | ||||
| 		]; | ||||
|  | ||||
| 		for (let i = 0; i < testCases.length; i++) { | ||||
| 			const md = testCases[i][0]; | ||||
| 			const expected = testCases[i][1]; | ||||
| 			expect(markdownUtils.titleFromBody(md)).toBe(expected); | ||||
| 		} | ||||
| 	})); | ||||
|  | ||||
| }); | ||||
|   | ||||
| @@ -91,6 +91,16 @@ const markdownUtils = { | ||||
|  | ||||
| 		return output.join('\n'); | ||||
| 	}, | ||||
|  | ||||
| 	titleFromBody(body) { | ||||
| 		if (!body) return ''; | ||||
| 		const mdLinkRegex = /!?\[([^\]]+?)\]\(.+?\)/g; | ||||
| 		const emptyMdLinkRegex = /!?\[\]\((.+?)\)/g; | ||||
| 		const filterRegex = /^[# \n\t*`-]*/; | ||||
| 		const lines = body.trim().split('\n'); | ||||
| 		const title = lines[0].trim(); | ||||
| 		return title.replace(filterRegex, '').replace(mdLinkRegex, '$1').replace(emptyMdLinkRegex, '$1').substring(0,80); | ||||
| 	}, | ||||
| }; | ||||
|  | ||||
| module.exports = markdownUtils; | ||||
|   | ||||
| @@ -11,6 +11,7 @@ const { _ } = require('lib/locale.js'); | ||||
| const ArrayUtils = require('lib/ArrayUtils.js'); | ||||
| const lodash = require('lodash'); | ||||
| const urlUtils = require('lib/urlUtils.js'); | ||||
| const markdownUtils = require('lib/markdownUtils.js'); | ||||
| const { MarkupToHtml } = require('lib/joplin-renderer'); | ||||
| const { ALL_NOTES_FILTER_ID } = require('lib/reserved-ids'); | ||||
|  | ||||
| @@ -82,22 +83,7 @@ class Note extends BaseItem { | ||||
| 	} | ||||
|  | ||||
| 	static defaultTitleFromBody(body) { | ||||
| 		if (body && body.length) { | ||||
| 			const lines = body.trim().split('\n'); | ||||
| 			let output = lines[0].trim(); | ||||
| 			// Remove the first #, *, etc. | ||||
| 			while (output.length) { | ||||
| 				const c = output[0]; | ||||
| 				if (['#', ' ', '\n', '\t', '*', '`', '-'].indexOf(c) >= 0) { | ||||
| 					output = output.substr(1); | ||||
| 				} else { | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			return output.substr(0, 80).trim(); | ||||
| 		} | ||||
|  | ||||
| 		return _('Untitled'); | ||||
| 		return markdownUtils.titleFromBody(body); | ||||
| 	} | ||||
|  | ||||
| 	static geolocationUrl(note) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user