summaryrefslogtreecommitdiffstats
path: root/src/Config.ts
blob: 54d227abe3f5de8af45c3f53e3d453ff72a91d19 (plain)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import { workspace } from "vscode";
// tslint:disable:max-classes-per-file
// tslint:disable:max-line-length

class C {
    public static getConfiguration() {
        return workspace.getConfiguration("doxdocgen.c");
    }

    public triggerSequence: string = "/**";
    public firstLine: string = "/**";
    public commentPrefix: string = " * ";
    public lastLine: string = " */";
    public getterText: string = "Get the {name} object";
    public setterText: string = "Set the {name} object";
    public factoryMethodText: string = "Create a {name} object";
}

class Cpp {
    public static getConfiguration() {
        return workspace.getConfiguration("doxdocgen.cpp");
    }

    public tparamTemplate: string = "@tparam {param} ";
    public ctorText: string = "Construct a new {name} object";
    public dtorText: string = "Destroy the {name} object";
}

class File {
    public static getConfiguration() {
        return workspace.getConfiguration("doxdocgen.file");
    }

    public fileTemplate: string = "@file {name}";
    public copyrightTag: string[] = ["@copyright Copyright (c) {year}"];
    public versionTag: string = "@version 0.1";
    public customTag: string[] = [];
    public fileOrder: string[] = ["brief", "empty", "file", "author", "date"];
}

class Generic {
    public static getConfiguration() {
        return workspace.getConfiguration("doxdocgen.generic");
    }

    public includeTypeAtReturn: boolean = true;
    public boolReturnsTrueFalse: boolean = true;
    public briefTemplate: string = "@brief {text}";
    public paramTemplate: string = "@param {param} ";
    public returnTemplate: string = "@return {type} ";
    public linesToGet: number = 20;
    public authorTag: string = "@author your name";
    public dateTemplate: string = "@date {date}";
    public dateFormat: string = "YYYY-MM-DD";
    public generateSmartText: boolean = true;
    public splitCasingSmartText: boolean = true;
    public order: string[] = ["brief", "empty", "tparam", "param", "return"];
}

export class Config {
    public static ImportFromSettings(): Config {
        const values: Config = new Config();

        values.C.triggerSequence = C.getConfiguration().get<string>("triggerSequence", values.C.triggerSequence);
        values.C.firstLine = C.getConfiguration().get<string>("firstLine", values.C.firstLine);
        values.C.commentPrefix = C.getConfiguration().get<string>("commentPrefix", values.C.commentPrefix);
        values.C.lastLine = C.getConfiguration().get<string>("lastLine", values.C.lastLine);
        values.C.getterText = C.getConfiguration().get<string>("getterText", values.C.getterText);
        values.C.setterText = C.getConfiguration().get<string>("setterText", values.C.setterText);
        values.C.factoryMethodText = C.getConfiguration().get<string>("factoryMethodText", values.C.factoryMethodText);

        values.Cpp.tparamTemplate = Cpp.getConfiguration().get<string>("tparamTemplate", values.Cpp.tparamTemplate);
        values.Cpp.ctorText = Cpp.getConfiguration().get<string>("ctorText", values.Cpp.ctorText);
        values.Cpp.dtorText = Cpp.getConfiguration().get<string>("dtorText", values.Cpp.dtorText);

        values.File.fileTemplate = File.getConfiguration().get<string>("fileTemplate", values.File.fileTemplate);
        values.File.versionTag = File.getConfiguration().get<string>("versionTag", values.File.versionTag);
        values.File.copyrightTag = File.getConfiguration().get<string[]>("copyrightTag", values.File.copyrightTag);
        values.File.customTag = File.getConfiguration().get<string[]>("customTag", values.File.customTag);
        values.File.fileOrder = File.getConfiguration().get<string[]>("fileOrder", values.File.fileOrder);

        values.Generic.includeTypeAtReturn = Generic.getConfiguration().get<boolean>("includeTypeAtReturn", values.Generic.includeTypeAtReturn);
        values.Generic.boolReturnsTrueFalse = Generic.getConfiguration().get<boolean>("boolReturnsTrueFalse", values.Generic.boolReturnsTrueFalse);
        values.Generic.briefTemplate = Generic.getConfiguration().get<string>("briefTemplate", values.Generic.briefTemplate);
        values.Generic.paramTemplate = Generic.getConfiguration().get<string>("paramTemplate", values.Generic.paramTemplate);
        values.Generic.returnTemplate = Generic.getConfiguration().get<string>("returnTemplate", values.Generic.returnTemplate);
        values.Generic.linesToGet = Generic.getConfiguration().get<number>("linesToGet", values.Generic.linesToGet);
        values.Generic.authorTag = Generic.getConfiguration().get<string>("authorTag", values.Generic.authorTag);
        values.Generic.dateTemplate = Generic.getConfiguration().get<string>("dateTemplate", values.Generic.dateTemplate);
        values.Generic.dateFormat = Generic.getConfiguration().get<string>("dateFormat", values.Generic.dateFormat);
        values.Generic.generateSmartText = Generic.getConfiguration().get<boolean>("generateSmartText", values.Generic.generateSmartText);
        values.Generic.splitCasingSmartText = Generic.getConfiguration().get<boolean>("splitCasingSmartText", values.Generic.splitCasingSmartText);
        values.Generic.order = Generic.getConfiguration().get<string[]>("order", values.Generic.order);

        return values;
    }

    public readonly paramTemplateReplace: string = "{param}";
    public readonly typeTemplateReplace: string = "{type}";
    public readonly nameTemplateReplace: string = "{name}";
    public readonly dateTemplateReplace: string = "{date}";
    public readonly yearTemplateReplace: string = "{year}";
    public readonly textTemplateReplace: string = "{text}";

    public C: C;
    public Cpp: Cpp;
    public File: File;
    public Generic: Generic;

    constructor() {
        this.C = new C();
        this.Cpp = new Cpp();
        this.File = new File();
        this.Generic = new Generic();
    }
}