forked from cory/tildefriends
		
	git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4080 ed5197a5-7fde-0310-b194-c3ffbd925b24
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import * as linkify from './commonmark-linkify.js';
 | |
| import * as hashtagify from './commonmark-hashtag.js';
 | |
| 
 | |
| export function markdown(md) {
 | |
| 	var reader = new commonmark.Parser({safe: true});
 | |
| 	var writer = new commonmark.HtmlRenderer();
 | |
| 	var parsed = reader.parse(md || '');
 | |
| 	parsed = hashtagify.transform(parsed);
 | |
| 	parsed = linkify.transform(parsed);
 | |
| 	var walker = parsed.walker();
 | |
| 	var event, node;
 | |
| 	while ((event = walker.next())) {
 | |
| 		node = event.node;
 | |
| 		if (event.entering) {
 | |
| 			if (node.type == 'link') {
 | |
| 				if (node.destination.startsWith('@') &&
 | |
| 					node.destination.endsWith('.ed25519')) {
 | |
| 					node.destination = '#' + node.destination;
 | |
| 				} else if (node.destination.startsWith('%') &&
 | |
| 					node.destination.endsWith('.sha256')) {
 | |
| 					node.destination = '#' + node.destination;
 | |
| 				} else if (node.destination.startsWith('&') &&
 | |
| 					node.destination.endsWith('.sha256')) {
 | |
| 					node.destination = '/' + node.destination + '/view';
 | |
| 				}
 | |
| 			} else if (node.type == 'image') {
 | |
| 				if (node.destination.startsWith('&')) {
 | |
| 					node.destination = '/' + node.destination + '/view';
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	return writer.render(parsed);
 | |
| }
 | |
| 
 | |
| export function human_readable_size(bytes) {
 | |
| 	let v = bytes;
 | |
| 	let u = 'B';
 | |
| 	for (let unit of ['kB', 'MB', 'GB']) {
 | |
| 		if (v > 1024) {
 | |
| 			v /= 1024;
 | |
| 			u = unit;
 | |
| 		} else {
 | |
| 			break;
 | |
| 		}
 | |
| 	}
 | |
| 	return `${Math.round(v * 10) / 10} ${u}`;
 | |
| } |