summaryrefslogtreecommitdiffstats
path: root/src/Lang/Cpp/CppDocGen.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/Lang/Cpp/CppDocGen.ts')
-rw-r--r--src/Lang/Cpp/CppDocGen.ts42
1 files changed, 36 insertions, 6 deletions
diff --git a/src/Lang/Cpp/CppDocGen.ts b/src/Lang/Cpp/CppDocGen.ts
index e71d39e..705b72c 100644
--- a/src/Lang/Cpp/CppDocGen.ts
+++ b/src/Lang/Cpp/CppDocGen.ts
@@ -105,6 +105,18 @@ export class CppDocGen implements IDocGen {
return template.replace(replace, param);
}
+ protected getMultiTemplatedString(replace: string[], template: string, param: string[]): string {
+ // FIXME I find this argument order a bit strange. I would probably have template first
+ // For each replace entry, attempt to replace it with the corresponding param in the template
+ for(var i=0;i<replace.length;i++) {
+ if (i<param.length) {
+ template = template.replace(replace[i],param[i]);
+ }
+ // TODO: warn if mismatch string lengths? Probably should use tuple of tuples
+ }
+ return template;
+ }
+
protected getSmartText(): string {
if (!this.cfg.Generic.generateSmartText) {
return "";
@@ -211,9 +223,17 @@ export class CppDocGen implements IDocGen {
return params;
}
+
protected generateAuthorTag(lines: string[]) {
if (this.cfg.Generic.authorTag.trim().length !== 0) {
- lines.push(this.cfg.C.commentPrefix + this.cfg.Generic.authorTag);
+ // Allow substitution of {author} and {email} only
+ lines.push(this.cfg.C.commentPrefix +
+ this.getMultiTemplatedString(
+ [this.cfg.authorTemplateReplace, this.cfg.emailTemplateReplace],
+ this.cfg.Generic.authorTag,
+ [this.cfg.Generic.authorName,this.cfg.Generic.authorEmail]
+ )
+ );
}
}
@@ -235,6 +255,7 @@ export class CppDocGen implements IDocGen {
}
protected generateCopyrightTag(lines: string[]) {
+ // This currently only supports year substitution
this.cfg.File.copyrightTag.forEach((element) => {
this.generateFromTemplate(
lines,
@@ -246,12 +267,21 @@ export class CppDocGen implements IDocGen {
}
protected generateCustomTag(lines: string[]) {
+ let dateFormat: string = "YYYY-MM-DD"; // Default to ISO standard if not defined
+ if ( this.cfg.Generic.dateFormat.trim().length != 0) {
+ dateFormat = this.cfg.Generic.dateFormat; // Overwrite with user format
+ }
+ // For each line of the customTag
this.cfg.File.customTag.forEach((element) => {
- this.generateFromTemplate(
- lines,
- this.cfg.dateTemplateReplace,
- element,
- [moment().format(this.cfg.Generic.dateFormat)],
+ // Allow any of date, year, author, email to be replaced
+ lines.push(this.cfg.C.commentPrefix +
+ this.getMultiTemplatedString(
+ [this.cfg.authorTemplateReplace, this.cfg.emailTemplateReplace,
+ this.cfg.dateTemplateReplace, this.cfg.yearTemplateReplace],
+ element,
+ [this.cfg.Generic.authorName, this.cfg.Generic.authorEmail,
+ moment().format(dateFormat), moment().format("YYYY")]
+ )
);
});
}