You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
41 lines
1.2 KiB
import {appPath, Singleton} from '@extollo/lib'
|
|
import {MarkMark} from '../../markmark/types'
|
|
import {Parser} from '../../markmark/parser'
|
|
import {HtmlRenderer} from '../../markmark/html.renderer'
|
|
import {MarkMarkRenderer} from '../../markmark/markmark.renderer'
|
|
|
|
@Singleton()
|
|
export class MarkMarkService {
|
|
private cachedLinks?: MarkMark
|
|
private cachedLinksHTML?: string
|
|
private cachedLinksMM?: string
|
|
|
|
public async getLinks(): Promise<MarkMark> {
|
|
if ( this.cachedLinks ) {
|
|
return this.cachedLinks
|
|
}
|
|
|
|
const path = appPath('resources', 'markmark', 'links.mark.md')
|
|
const content = await path.read()
|
|
return (this.cachedLinks = (new Parser()).parse(content))
|
|
}
|
|
|
|
public async getLinksHTML(): Promise<string> {
|
|
if ( this.cachedLinksHTML ) {
|
|
return this.cachedLinksHTML
|
|
}
|
|
|
|
const mm = await this.getLinks()
|
|
return (this.cachedLinksHTML = (new HtmlRenderer()).render(mm))
|
|
}
|
|
|
|
public async getLinksMM(): Promise<string> {
|
|
if ( this.cachedLinksMM ) {
|
|
return this.cachedLinksMM
|
|
}
|
|
|
|
const mm = await this.getLinks()
|
|
return (this.cachedLinksMM = (new MarkMarkRenderer()).render(mm))
|
|
}
|
|
}
|