wikiparse.LanguageService - bhsd-harry/wikiparser-node GitHub Wiki
目录
这是浏览器端的插件添加的全局构造器,可以用作语言服务器,并用于 Monaco 等网页编辑器(示例)。
这个类继承了 LanguageService 类的全部 🌐 浏览器端可用的属性和方法。这里仅列出参数或返回值的类型有所改变的方法。
展开
param: string
维基文本内容。
returns: Promise<ColorInformation[]>
列出文档中找到的所有颜色。仅支持十六进制和 rgb(a) 颜色。
// provideDocumentColors (browser)
(async () => {
const lsp = new wikiparse.LanguageService(),
wikitext = `
<p style="color: rgba(255, 0, 0, .7)">
<poem style="color: #00ff00ff"/>
{{#tag:font|color=#f000}}
{{color|rgb(0 0 255 / 50%)}}
`;
assert.deepStrictEqual(
await lsp.provideDocumentColors(wikitext),
[
{
range: {
start: {line: 1, character: 17},
end: {line: 1, character: 36},
},
color: {red: 1, green: 0, blue: 0, alpha: 0.7},
},
{
range: {
start: {line: 2, character: 20},
end: {line: 2, character: 29},
},
color: {red: 0, green: 1, blue: 0, alpha: 1},
},
{
range: {
start: {line: 3, character: 18},
end: {line: 3, character: 23},
},
color: {red: 1, green: 0, blue: 0, alpha: 0},
},
{
range: {
start: {line: 4, character: 8},
end: {line: 4, character: 26},
},
color: {red: 0, green: 0, blue: 1, alpha: 0.5},
},
].reverse(),
);
})();
展开
param: ColorPresentationParams
returns: Promise<ColorPresentation[]>
获取给定位置的颜色值。
// provideColorPresentations (browser)
(async () => {
const lsp = new wikiparse.LanguageService({}),
range = {
start: {line: 0, character: 0},
end: {line: 0, character: 1},
};
assert.deepStrictEqual(
await lsp.provideColorPresentations({
color: {red: 1, green: 0, blue: 0, alpha: 0.5},
range,
}),
[
{
label: '#ff000080',
textEdit: {range, newText: '#ff000080'},
},
],
);
assert.deepStrictEqual(
await lsp.provideColorPresentations({
color: {red: 0, green: 0.9, blue: 0, alpha: 1},
range,
}),
[
{
label: '#00e600',
textEdit: {range, newText: '#00e600'},
},
],
);
})();
展开
param: string
维基文本内容。
param: Position
returns: Promise<CompletionItem[] | undefined>
计算给定光标位置的自动补全项。
// provideCompletionItems (browser)
(async () => {
const lsp = new wikiparse.LanguageService();
assert.deepStrictEqual(
(await lsp.provideCompletionItems('<Im', {line: 0, character: 3}))
?.filter(({label}) => label.startsWith('im')),
[
{
label: 'imagemap',
kind: 'Class',
textEdit: {
range: {
start: {line: 0, character: 1},
end: {line: 0, character: 3},
},
newText: 'imagemap',
},
},
{
label: 'img',
kind: 'Class',
textEdit: {
range: {
start: {line: 0, character: 1},
end: {line: 0, character: 3},
},
newText: 'img',
},
},
],
);
})();
展开
param: string
维基文本内容。
returns: Promise<FoldingRange[]>
返回在给定文档中找到的所有折叠范围。
// provideFoldingRanges (browser)
(async () => {
const lsp = new wikiparse.LanguageService(),
wikitext = `
<!--
-->= 1 =
<!-- -->
<!-- -->== 2 ==
===== 3 ===== <!--
-->
x {{a|
====== 4_<!--
-->2 ======
y }} z
== 4 ==
= 4 =
: {|
|
=== 4 ===
|} x
`;
assert.deepStrictEqual(
await lsp.provideFoldingRanges(wikitext),
[
{startLine: 15, endLine: 17, kind: 'region'},
{startLine: 7, endLine: 19, kind: 'region'},
{startLine: 11, endLine: 19, kind: 'region'},
{startLine: 17, endLine: 19, kind: 'region'},
{startLine: 3, endLine: 22, kind: 'region'},
{startLine: 20, endLine: 22, kind: 'region'},
{startLine: 25, endLine: 27, kind: 'region'},
{startLine: 23, endLine: 30, kind: 'region'},
{startLine: 27, endLine: 30, kind: 'region'},
],
);
})();
展开
param: string
维基文本内容。
returns: Promise<DocumentLink[]>
请求文档中链接的位置。
// provideLinks (browser)
(async () => {
const lsp = new wikiparse.LanguageService();
assert.deepStrictEqual(
await lsp.provideLinks('RFC 1'),
[
{
range: {
start: {line: 0, character: 0},
end: {line: 0, character: 5},
},
target: 'https://tools.ietf.org/html/rfc1',
},
],
);
})();
展开
param: string
维基文本内容。
param: Position
returns: Promise<Omit<Location, 'uri'>[] | undefined>
找出文档给定位置处符号的引用。
// provideReferences (browser)
(async () => {
const lsp = new wikiparse.LanguageService(),
wikitext = `
{{{ a }}}
{{{a|}}}
`;
assert.deepStrictEqual(
await lsp.provideReferences(wikitext, {line: 1, character: 4}),
[
{
range: {
start: {line: 1, character: 3},
end: {line: 1, character: 6},
},
},
{
range: {
start: {line: 2, character: 3},
end: {line: 2, character: 4},
},
},
].reverse(),
);
})();
展开
param: string
维基文本内容。
param: Position
returns: Promise<Omit<Location, 'uri'>[] | undefined>
找出文档给定位置处符号的定义。
// provideDefinition (browser)
(async () => {
const lsp = new wikiparse.LanguageService(),
wikitext = `
<ref group = f name = f > </ref>
<ref name = f > </ref>
<ref name = ' f ' />
`;
assert.deepStrictEqual(
await lsp.provideDefinition(wikitext, {line: 3, character: 14}),
[
{
range: {
start: {line: 2, character: 15},
end: {line: 2, character: 16},
},
},
],
);
})();
展开
param: string
维基文本内容。
param: Position
returns: Promise<Range | undefined>
测试给定位置的变量更名操作的有效性。
// resolveRenameLocation (browser)
(async () => {
const lsp = new wikiparse.LanguageService();
assert.deepStrictEqual(
await lsp.resolveRenameLocation('{{{ a }}}', {line: 0, character: 4}),
{
start: {line: 0, character: 3},
end: {line: 0, character: 6},
},
);
})();
展开
param: string
维基文本内容。
param: Position
param: string
新的变量名。
returns: Promise<WorkspaceEdit | undefined>
计算对符号进行文档范围重命名的更改。
// provideRenameEdits (browser)
(async () => {
const lsp = new wikiparse.LanguageService(),
wikitext = `
{{{ a }}}
{{{a|}}}
`;
assert.deepStrictEqual(
await lsp.provideRenameEdits(wikitext, {line: 1, character: 4}, 'x'),
{
changes: {
'': [
{
range: {
start: {line: 1, character: 3},
end: {line: 1, character: 6},
},
newText: 'x',
},
{
range: {
start: {line: 2, character: 3},
end: {line: 2, character: 4},
},
newText: 'x',
},
].reverse(),
},
},
);
})();
展开
param: string
维基文本内容。
param: boolean
是否包含警告。
returns: Promise<Diagnostic[]>
对给定文档进行语法诊断。
// provideDiagnostics (browser)
(async () => {
const lsp = new wikiparse.LanguageService(),
wikitext = `
http://a]
</p>
`;
assert.deepStrictEqual(
await lsp.provideDiagnostics(wikitext),
[
{
range: {
start: {line: 1, character: 8},
end: {line: 1, character: 9},
},
severity: 1,
source: 'WikiLint',
code: 'lonely-bracket',
message: 'lonely "]"',
data: [
{
range: {
start: {line: 1, character: 0},
end: {line: 1, character: 0},
},
newText: '[',
title: 'Suggestion: left bracket',
fix: false,
},
],
},
{
range: {
start: {line: 2, character: 0},
end: {line: 2, character: 4},
},
severity: 1,
source: 'WikiLint',
code: 'unmatched-tag',
message: 'unmatched closing tag',
data: [
{
range: {
start: {line: 2, character: 0},
end: {line: 2, character: 4},
},
newText: '',
title: 'Suggestion: remove',
fix: false,
},
],
},
],
);
assert.deepStrictEqual(
await lsp.provideDiagnostics('['),
[
{
range: {
start: {line: 0, character: 0},
end: {line: 0, character: 1},
},
severity: 2,
source: 'WikiLint',
code: 'lonely-bracket',
message: 'lonely "["',
data: [],
},
],
);
assert.deepStrictEqual(
await lsp.provideDiagnostics('[', false),
[],
);
})();
展开
加入的版本:1.16.3
param: string
维基文本内容。
returns: Promise<InlayHint[]>
计算给定文档的内联提示,这些提示可能会在编辑器中与其他文本一起呈现。
// provideInlayHints (browser)
(async () => {
const lsp = new wikiparse.LanguageService(),
wikitext = `
{{a|b=|c}}
{{#invoke:a|b|c}}
`;
assert.deepStrictEqual(
await lsp.provideInlayHints(wikitext),
[
{
position: {line: 1, character: 7},
kind: 2,
label: '1=',
},
{
position: {line: 2, character: 14},
kind: 2,
label: '1=',
},
].reverse(),
);
})();