• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

yunnysunny / bookforge / 22036642206

15 Feb 2026 01:38PM UTC coverage: 70.995% (+14.8%) from 56.206%
22036642206

Pull #2

github

yunnysunny
feat: fix html generate test
Pull Request #2: feat: refactor ui flow

63 of 81 branches covered (77.78%)

Branch coverage included in aggregate %.

98 of 169 new or added lines in 13 files covered. (57.99%)

4 existing lines in 3 files now uncovered.

358 of 512 relevant lines covered (69.92%)

27.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

36.84
/src/core/marked-plugins/gitbook.plugin.ts
1
import type { RendererThis, MarkedExtension, Tokens } from 'marked';
2
import { parseParams } from '../../utils/gitbook';
3
import type { GitbookTagTokenBase, RenderFun } from './interfaces/gitbook.interface';
4

5
// ========================
6
// 1. GitBook 普通标签渲染器
7
// ========================
8
const gitbookTagRenderers: Record<string, RenderFun> = {
15✔
9
  // Callout
10
  hint: ({ innerHtml, params }) =>
NEW
11
    `<div class="gb-hint gb-${params.style || 'info'}">${innerHtml}</div>`,
×
12
  // tabs / tab
13
  // tab: ({innerHtml, params}) =>
14
  //   `<div class="gb-tab" data-title="${params.title || ''}">${innerHtml}</div>`,
15
  // tabs: ({innerHtml}) => `<div class="gb-tabs">${innerHtml}</div>`,
16
};
17

18
interface GitbookCommonTagToken extends GitbookTagTokenBase {
19
  type: 'gb-tag';
20
}
21
export const gitbookExtension: MarkedExtension = {
15✔
22
  extensions: [
23
    {
24
      name: 'gb-tag',
25
      level: 'block',
26
      start(src: string) {
27
        return src.indexOf('{%');
42✔
28
      },
29
      tokenizer(this, src: string): GitbookCommonTagToken | undefined {
30
        const rule = /^\{%\s*(\w+)([\s\S]*?)%\}([\s\S]*?)\{%\s*end\1\s*%\}/;
99✔
31
        const match = rule.exec(src);
99✔
32
        if (!match) return;
99✔
33

34
        const [, tag, paramStr, content] = match;
×
NEW
35
        const tokens = this.lexer.blockTokens(content);
×
UNCOV
36
        return {
×
37
          type: 'gb-tag',
38
          raw: match[0],
39
          tag,
40
          params: parseParams(paramStr),
41
          text: content.trim(),
42
          tokens,
43
        };
44
      },
45
      renderer(this: RendererThis<string, string>, token: Tokens.Generic) {
NEW
46
        const _token = token as GitbookCommonTagToken;
×
47
        const fn = gitbookTagRenderers[_token.tag];
×
NEW
48
        if (!fn) {
×
NEW
49
          return _token.raw;
×
50
        }
NEW
51
        const innerHtml = this.parser.parse(_token.tokens);
×
NEW
52
        return fn({ innerHtml, params: _token.params });
×
53
      },
54
    },
55
  ],
56
};
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc