Add new text syntax
And some fixes
This commit is contained in:
		
							parent
							
								
									f6a041559f
								
							
						
					
					
						commit
						7a270275ef
					
				
					 6 changed files with 56 additions and 2 deletions
				
			
		| 
						 | 
					@ -97,7 +97,9 @@ export default Vue.component('mk-note-html', {
 | 
				
			||||||
					}, token.content);
 | 
										}, token.content);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				case 'code':
 | 
									case 'code':
 | 
				
			||||||
					return createElement('pre', [
 | 
										return createElement('pre', {
 | 
				
			||||||
 | 
											class: 'code'
 | 
				
			||||||
 | 
										}, [
 | 
				
			||||||
						createElement('code', {
 | 
											createElement('code', {
 | 
				
			||||||
							domProps: {
 | 
												domProps: {
 | 
				
			||||||
								innerHTML: token.html
 | 
													innerHTML: token.html
 | 
				
			||||||
| 
						 | 
					@ -132,6 +134,13 @@ export default Vue.component('mk-note-html', {
 | 
				
			||||||
						}, text2.replace(/\n/g, ' '));
 | 
											}, text2.replace(/\n/g, ' '));
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									case 'title':
 | 
				
			||||||
 | 
										return createElement('div', {
 | 
				
			||||||
 | 
											attrs: {
 | 
				
			||||||
 | 
												class: 'title'
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}, token.title);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				case 'emoji':
 | 
									case 'emoji':
 | 
				
			||||||
					const emoji = emojilib.lib[token.emoji];
 | 
										const emoji = emojilib.lib[token.emoji];
 | 
				
			||||||
					return createElement('span', emoji ? emoji.char : token.content);
 | 
										return createElement('span', emoji ? emoji.char : token.content);
 | 
				
			||||||
| 
						 | 
					@ -144,7 +153,7 @@ export default Vue.component('mk-note-html', {
 | 
				
			||||||
		const _els = [];
 | 
							const _els = [];
 | 
				
			||||||
		els.forEach((el, i) => {
 | 
							els.forEach((el, i) => {
 | 
				
			||||||
			if (el.tag == 'br') {
 | 
								if (el.tag == 'br') {
 | 
				
			||||||
				if (els[i - 1].tag != 'div') {
 | 
									if (!['div', 'pre'].includes(els[i - 1].tag)) {
 | 
				
			||||||
					_els.push(el);
 | 
										_els.push(el);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -456,6 +456,18 @@ export default Vue.extend({
 | 
				
			||||||
					font-size 1.1em
 | 
										font-size 1.1em
 | 
				
			||||||
					color #717171
 | 
										color #717171
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										>>> .title
 | 
				
			||||||
 | 
											display block
 | 
				
			||||||
 | 
											margin-bottom 4px
 | 
				
			||||||
 | 
											padding 4px
 | 
				
			||||||
 | 
											font-size 90%
 | 
				
			||||||
 | 
											text-align center
 | 
				
			||||||
 | 
											background #eef1f3
 | 
				
			||||||
 | 
											border-radius 4px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										>>> .code
 | 
				
			||||||
 | 
											margin 8px 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					>>> .quote
 | 
										>>> .quote
 | 
				
			||||||
						margin 8px
 | 
											margin 8px
 | 
				
			||||||
						padding 6px 12px
 | 
											padding 6px 12px
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -391,6 +391,18 @@ export default Vue.extend({
 | 
				
			||||||
					font-size 1.1em
 | 
										font-size 1.1em
 | 
				
			||||||
					color #717171
 | 
										color #717171
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										>>> .title
 | 
				
			||||||
 | 
											display block
 | 
				
			||||||
 | 
											margin-bottom 4px
 | 
				
			||||||
 | 
											padding 4px
 | 
				
			||||||
 | 
											font-size 90%
 | 
				
			||||||
 | 
											text-align center
 | 
				
			||||||
 | 
											background #eef1f3
 | 
				
			||||||
 | 
											border-radius 4px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										>>> .code
 | 
				
			||||||
 | 
											margin 8px 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					>>> .quote
 | 
										>>> .quote
 | 
				
			||||||
						margin 8px
 | 
											margin 8px
 | 
				
			||||||
						padding 6px 12px
 | 
											padding 6px 12px
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,6 +54,12 @@ const handlers = {
 | 
				
			||||||
		document.body.appendChild(blockquote);
 | 
							document.body.appendChild(blockquote);
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						title({ document }, { title }) {
 | 
				
			||||||
 | 
							const h1 = document.createElement('h1');
 | 
				
			||||||
 | 
							h1.textContent = title;
 | 
				
			||||||
 | 
							document.body.appendChild(h1);
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	text({ document }, { content }) {
 | 
						text({ document }, { content }) {
 | 
				
			||||||
		for (const text of content.split('\n')) {
 | 
							for (const text of content.split('\n')) {
 | 
				
			||||||
			const node = document.createTextNode(text);
 | 
								const node = document.createTextNode(text);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								src/text/parse/elements/title.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/text/parse/elements/title.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Title
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = text => {
 | 
				
			||||||
 | 
						const match = text.match(/^【(.+?)】\n/);
 | 
				
			||||||
 | 
						if (!match) return null;
 | 
				
			||||||
 | 
						const title = match[0];
 | 
				
			||||||
 | 
						return {
 | 
				
			||||||
 | 
							type: 'title',
 | 
				
			||||||
 | 
							content: title,
 | 
				
			||||||
 | 
							title: title.substr(1, title.length - 3)
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const elements = [
 | 
					const elements = [
 | 
				
			||||||
	require('./elements/bold'),
 | 
						require('./elements/bold'),
 | 
				
			||||||
 | 
						require('./elements/title'),
 | 
				
			||||||
	require('./elements/url'),
 | 
						require('./elements/url'),
 | 
				
			||||||
	require('./elements/link'),
 | 
						require('./elements/link'),
 | 
				
			||||||
	require('./elements/mention'),
 | 
						require('./elements/mention'),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue