Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/build/lib/policies/numberPolicy.ts
4772 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { BasePolicy } from './basePolicy.ts';
7
import type { CategoryDto, PolicyDto } from './policyDto.ts';
8
import { renderProfileString } from './render.ts';
9
import { type Category, type NlsString, PolicyType, type LanguageTranslations } from './types.ts';
10
11
export class NumberPolicy extends BasePolicy {
12
13
static from(category: CategoryDto, policy: PolicyDto): NumberPolicy | undefined {
14
const { type, default: defaultValue, name, minimumVersion, localization } = policy;
15
16
if (type !== 'number') {
17
return undefined;
18
}
19
20
if (typeof defaultValue !== 'number') {
21
throw new Error(`Missing required 'default' property.`);
22
}
23
24
return new NumberPolicy(name, { moduleName: '', name: { nlsKey: category.name.key, value: category.name.value } }, minimumVersion, { nlsKey: localization.description.key, value: localization.description.value }, '', defaultValue);
25
}
26
27
protected readonly defaultValue: number;
28
29
private constructor(
30
name: string,
31
category: Category,
32
minimumVersion: string,
33
description: NlsString,
34
moduleName: string,
35
defaultValue: number,
36
) {
37
super(PolicyType.Number, name, category, minimumVersion, description, moduleName);
38
this.defaultValue = defaultValue;
39
}
40
41
protected renderADMXElements(): string[] {
42
return [
43
`<decimal id="${this.name}" valueName="${this.name}" />`
44
// `<decimal id="Quarantine_PurgeItemsAfterDelay" valueName="PurgeItemsAfterDelay" minValue="0" maxValue="10000000" />`
45
];
46
}
47
48
renderADMLPresentationContents() {
49
return `<decimalTextBox refId="${this.name}" defaultValue="${this.defaultValue}">${this.name}</decimalTextBox>`;
50
}
51
52
renderJsonValue() {
53
return this.defaultValue;
54
}
55
56
renderProfileValue() {
57
return `<integer>${this.defaultValue}</integer>`;
58
}
59
60
renderProfileManifestValue(translations?: LanguageTranslations) {
61
return `<key>pfm_default</key>
62
<integer>${this.defaultValue}</integer>
63
<key>pfm_description</key>
64
<string>${renderProfileString(this.name, this.moduleName, this.description, translations)}</string>
65
<key>pfm_name</key>
66
<string>${this.name}</string>
67
<key>pfm_title</key>
68
<string>${this.name}</string>
69
<key>pfm_type</key>
70
<string>integer</string>`;
71
}
72
}
73
74