Skip to content

Commit

Permalink
Merge pull request #272 from zh-lx/feature-html-rp
Browse files Browse the repository at this point in the history
feat: html api 支持不输出 rp 标签
  • Loading branch information
zh-lx authored Aug 3, 2024
2 parents 681d2d4 + d4a9933 commit 83491c5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
9 changes: 8 additions & 1 deletion lib/core/html/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ interface HtmlOptions {
* @value false:不开启
*/
toneSandhi?: boolean;
/**
* @description 是否保留 <rp>(</rp> 标签,默认为保留
* @value true:保留 <rp>(</rp>
* @value false:移除 <rp>(</rp>
*/
rp?: boolean;
}

const DefaultHtmlOptions: HtmlOptions = {
Expand All @@ -48,6 +54,7 @@ const DefaultHtmlOptions: HtmlOptions = {
toneType: 'symbol',
customClassMap: {},
toneSandhi: true,
rp: true,
};

/**
Expand Down Expand Up @@ -79,7 +86,7 @@ export const html = (text: string, options?: HtmlOptions) => {
const resultClass = completeOptions.resultClass || DefaultHtmlOptions.resultClass;
const chineseClass = completeOptions.chineseClass || DefaultHtmlOptions.chineseClass;
const pinyinClass = completeOptions.pinyinClass || DefaultHtmlOptions.pinyinClass;
return `<span class="${resultClass}${additionalClass}"><ruby><span class="${chineseClass}">${item.origin}</span><rp>(</rp><rt class="${pinyinClass}">${item.pinyin}</rt><rp>)</rp></ruby></span>`;
return `<span class="${resultClass}${additionalClass}"><ruby><span class="${chineseClass}">${item.origin}</span>${completeOptions.rp ? '<rp>(</rp>' : ''}<rt class="${pinyinClass}">${item.pinyin}</rt>${completeOptions.rp ? '<rp>)</rp>' : ''}</ruby></span>`;
} else {
// 非汉字字符处理
if (completeOptions.wrapNonChinese) {
Expand Down
9 changes: 9 additions & 0 deletions test/html.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,13 @@ describe('html', () => {
`<span class="py-result-item"><ruby><span class="py-chinese-item">汉</span><rp>(</rp><rt class="py-pinyin-item">hàn</rt><rp>)</rp></ruby></span><span class="py-result-item"><ruby><span class="py-chinese-item">语</span><rp>(</rp><rt class="py-pinyin-item">yǔ</rt><rp>)</rp></ruby></span><span class="py-non-chinese-item">,</span><span class="py-result-item"><ruby><span class="py-chinese-item">拼</span><rp>(</rp><rt class="py-pinyin-item">pīn</rt><rp>)</rp></ruby></span><span class="py-result-item"><ruby><span class="py-chinese-item">音</span><rp>(</rp><rt class="py-pinyin-item">yīn</rt><rp>)</rp></ruby></span>`
);
});

it('[html-custom-class]remove rp', () => {
const result = html('汉语,拼音', {
rp: false,
});
expect(result).to.be.equal(
`<span class="py-result-item"><ruby><span class="py-chinese-item">汉</span><rt class="py-pinyin-item">hàn</rt></ruby></span><span class="py-result-item"><ruby><span class="py-chinese-item">语</span><rt class="py-pinyin-item">yǔ</rt></ruby></span>,<span class="py-result-item"><ruby><span class="py-chinese-item">拼</span><rt class="py-pinyin-item">pīn</rt></ruby></span><span class="py-result-item"><ruby><span class="py-chinese-item">音</span><rt class="py-pinyin-item">yīn</rt></ruby></span>`
);
});
});

0 comments on commit 83491c5

Please sign in to comment.