All files / app/mods/org wiki.ts

87.5% Statements 14/16
70% Branches 7/10
75% Functions 3/4
86.66% Lines 13/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63158x       158x   158x                                                   1x 1x           7x 7x 4x 4x 2x   4x       8x               158x          
import { DateTime } from 'luxon';
import { Mod } from '../../model/tag';
import { Template } from '../../model/template';
 
export const DEFAULT_WIKI_PREFIX = 'wiki:';
 
export const wikiConfig: Template = {
  tag: 'config/wiki',
  name: $localize`📔️ Wiki`,
  config: {
    mod: $localize`📔️ Wiki`,
    version: 1,
    type: 'config',
    default: true,
    generated: $localize`Generated by jasper-ui ${DateTime.now().toISO()}`,
    description: $localize`Activates built-in Wiki support and allows users to create Wikis.`,
    icons: [{ label: $localize`📔️`, scheme: DEFAULT_WIKI_PREFIX, title: $localize`Wiki`, order: 3 }],
    filters: [
      { scheme: 'wiki:', label: $localize`wiki:`, title: $localize`Wiki Pages`, group: $localize`Schemes 🏳️️` },
    ],
    /**
     * Set prefix for wiki links.
     */
    prefix: DEFAULT_WIKI_PREFIX,
    /**
     * Open wiki links externally.
     */
    external: false,
  },
};
 
export function wikiTitleFormat(title: string, prefix?: string) {
  prefix ||= DEFAULT_WIKI_PREFIX;
  return wikiUriFormat(title)
    .substring(prefix.length)
    .replace(/_/g, ' ');
}
 
export function wikiUriFormat(uri: string, prefix?: string) {
  prefix ||= DEFAULT_WIKI_PREFIX!;
  if (!uri) return prefix;
  uri = uri.trim();
  if (uri.startsWith(prefix)) {
    uri = uri.substring(prefix.length);
  }
  return prefix + uri
    .replace(/\s+/g, '_')
    .replace(/_+/g, '_')
    .replace(/[^\w!"$&'()*,.\/:;=?@\\^`~\x80-\xFF-]+/g, '')
    .split(':').map(s => s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase()).join(':');
}
 
export function isWiki(uri: string, prefix?: string) {
  prefix ||= DEFAULT_WIKI_PREFIX!;
  return uri.startsWith(prefix);
}
 
export const wikiMod: Mod = {
  template: [
    wikiConfig,
  ]
};