mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-03 23:14:13 +00:00 
			
		
		
		
	Implement new MFM syntax
This commit is contained in:
		
							parent
							
								
									42fbc7ab66
								
							
						
					
					
						commit
						d456e5e45c
					
				
					 5 changed files with 49 additions and 1 deletions
				
			
		| 
						 | 
					@ -56,7 +56,18 @@ export default Vue.component('misskey-flavored-markdown', {
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				case 'bold':
 | 
									case 'bold':
 | 
				
			||||||
					return createElement('strong', token.bold);
 | 
										return createElement('b', token.bold);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									case 'big':
 | 
				
			||||||
 | 
										return (createElement as any)('strong', {
 | 
				
			||||||
 | 
											attrs: {
 | 
				
			||||||
 | 
												style: 'display: inline-block; font-size: 200%;'
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
											directives: [{
 | 
				
			||||||
 | 
												name: 'animate-css',
 | 
				
			||||||
 | 
												value: { classes: 'tada', iteration: 'infinite' }
 | 
				
			||||||
 | 
											}]
 | 
				
			||||||
 | 
										}, token.big);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				case 'url':
 | 
									case 'url':
 | 
				
			||||||
					return createElement(MkUrl, {
 | 
										return createElement(MkUrl, {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,12 @@ const handlers: { [key: string]: (window: any, token: any, mentionedRemoteUsers:
 | 
				
			||||||
		document.body.appendChild(b);
 | 
							document.body.appendChild(b);
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						big({ document }, { big }) {
 | 
				
			||||||
 | 
							const b = document.createElement('strong');
 | 
				
			||||||
 | 
							b.textContent = big;
 | 
				
			||||||
 | 
							document.body.appendChild(b);
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	code({ document }, { code }) {
 | 
						code({ document }, { code }) {
 | 
				
			||||||
		const pre = document.createElement('pre');
 | 
							const pre = document.createElement('pre');
 | 
				
			||||||
		const inner = document.createElement('code');
 | 
							const inner = document.createElement('code');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								src/mfm/parse/elements/big.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/mfm/parse/elements/big.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Bold
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export type TextElementBig = {
 | 
				
			||||||
 | 
						type: 'big'
 | 
				
			||||||
 | 
						content: string
 | 
				
			||||||
 | 
						big: string
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default function(text: string) {
 | 
				
			||||||
 | 
						const match = text.match(/^\*\*\*(.+?)\*\*\*/);
 | 
				
			||||||
 | 
						if (!match) return null;
 | 
				
			||||||
 | 
						const big = match[0];
 | 
				
			||||||
 | 
						return {
 | 
				
			||||||
 | 
							type: 'big',
 | 
				
			||||||
 | 
							content: big,
 | 
				
			||||||
 | 
							big: match[1]
 | 
				
			||||||
 | 
						} as TextElementBig;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { TextElementBold } from './elements/bold';
 | 
					import { TextElementBold } from './elements/bold';
 | 
				
			||||||
 | 
					import { TextElementBig } from './elements/big';
 | 
				
			||||||
import { TextElementCode } from './elements/code';
 | 
					import { TextElementCode } from './elements/code';
 | 
				
			||||||
import { TextElementEmoji } from './elements/emoji';
 | 
					import { TextElementEmoji } from './elements/emoji';
 | 
				
			||||||
import { TextElementHashtag } from './elements/hashtag';
 | 
					import { TextElementHashtag } from './elements/hashtag';
 | 
				
			||||||
| 
						 | 
					@ -15,6 +16,7 @@ import { TextElementTitle } from './elements/title';
 | 
				
			||||||
import { TextElementUrl } from './elements/url';
 | 
					import { TextElementUrl } from './elements/url';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const elements = [
 | 
					const elements = [
 | 
				
			||||||
 | 
						require('./elements/big'),
 | 
				
			||||||
	require('./elements/bold'),
 | 
						require('./elements/bold'),
 | 
				
			||||||
	require('./elements/title'),
 | 
						require('./elements/title'),
 | 
				
			||||||
	require('./elements/url'),
 | 
						require('./elements/url'),
 | 
				
			||||||
| 
						 | 
					@ -30,6 +32,7 @@ const elements = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type TextElement = { type: 'text', content: string }
 | 
					export type TextElement = { type: 'text', content: string }
 | 
				
			||||||
	| TextElementBold
 | 
						| TextElementBold
 | 
				
			||||||
 | 
						| TextElementBig
 | 
				
			||||||
	| TextElementCode
 | 
						| TextElementCode
 | 
				
			||||||
	| TextElementEmoji
 | 
						| TextElementEmoji
 | 
				
			||||||
	| TextElementHashtag
 | 
						| TextElementHashtag
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,14 @@ describe('Text', () => {
 | 
				
			||||||
			], tokens);
 | 
								], tokens);
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							it('big', () => {
 | 
				
			||||||
 | 
								const tokens = analyze('***Strawberry*** Pasta');
 | 
				
			||||||
 | 
								assert.deepEqual([
 | 
				
			||||||
 | 
									{ type: 'big', content: '***Strawberry***', bold: 'Strawberry' },
 | 
				
			||||||
 | 
									{ type: 'text', content: ' Pasta' }
 | 
				
			||||||
 | 
								], tokens);
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		it('mention', () => {
 | 
							it('mention', () => {
 | 
				
			||||||
			const tokens = analyze('@himawari お腹ペコい');
 | 
								const tokens = analyze('@himawari お腹ペコい');
 | 
				
			||||||
			assert.deepEqual([
 | 
								assert.deepEqual([
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue