mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-11 12:43:09 -05:00
fix: helpers with empty or undefined values (#4356)
* fix: helpers with empty or undefined values * chore: note
This commit is contained in:
committed by
GitHub
parent
679b94a626
commit
dbdc5af2b9
@@ -426,18 +426,31 @@ describe('Action', () => {
|
|||||||
testHelper('{{day undefined}}', '');
|
testHelper('{{day undefined}}', '');
|
||||||
testHelper('{{month undefined}}', '');
|
testHelper('{{month undefined}}', '');
|
||||||
testHelper('{{year undefined}}', '');
|
testHelper('{{year undefined}}', '');
|
||||||
|
testHelper('{{day}}', '');
|
||||||
|
testHelper('{{month}}', '');
|
||||||
|
testHelper('{{year}}', '');
|
||||||
testHelper('{{format undefined undefined}}', '');
|
testHelper('{{format undefined undefined}}', '');
|
||||||
|
testHelper('{{format}}', '');
|
||||||
testHelper('{{addDays "2002-07-25" 5}}', '2002-07-30');
|
testHelper('{{addDays "2002-07-25" 5}}', '2002-07-30');
|
||||||
|
testHelper('{{addDays}}', '');
|
||||||
testHelper('{{subDays "2002-07-25" 5}}', '2002-07-20');
|
testHelper('{{subDays "2002-07-25" 5}}', '2002-07-20');
|
||||||
|
testHelper('{{subDays}}', '');
|
||||||
testHelper('{{addMonths "2002-07-25" 5}}', '2002-12-25');
|
testHelper('{{addMonths "2002-07-25" 5}}', '2002-12-25');
|
||||||
|
testHelper('{{addMonths}}', '');
|
||||||
testHelper('{{subMonths "2002-07-25" 5}}', '2002-02-25');
|
testHelper('{{subMonths "2002-07-25" 5}}', '2002-02-25');
|
||||||
|
testHelper('{{subMonths}}', '');
|
||||||
testHelper('{{addYears "2002-07-25" 5}}', '2007-07-25');
|
testHelper('{{addYears "2002-07-25" 5}}', '2007-07-25');
|
||||||
|
testHelper('{{addYears}}', '');
|
||||||
testHelper('{{subYears "2002-07-25" 5}}', '1997-07-25');
|
testHelper('{{subYears "2002-07-25" 5}}', '1997-07-25');
|
||||||
|
testHelper('{{subYears}}', '');
|
||||||
testHelper('{{addWeeks "2002-07-25" 1}}', '2002-08-01');
|
testHelper('{{addWeeks "2002-07-25" 1}}', '2002-08-01');
|
||||||
|
testHelper('{{addWeeks}}', '');
|
||||||
testHelper('{{subWeeks "2002-07-25" 1}}', '2002-07-18');
|
testHelper('{{subWeeks "2002-07-25" 1}}', '2002-07-18');
|
||||||
|
testHelper('{{subWeeks}}', '');
|
||||||
testHelper('{{setDay "2002-07-25" 1}}', '2002-07-01');
|
testHelper('{{setDay "2002-07-25" 1}}', '2002-07-01');
|
||||||
testHelper('{{setDay "2002-07-25" 32}}', '2002-08-01');
|
testHelper('{{setDay "2002-07-25" 32}}', '2002-08-01');
|
||||||
testHelper('{{setDay "2002-07-25" 0}}', '2002-06-30');
|
testHelper('{{setDay "2002-07-25" 0}}', '2002-06-30');
|
||||||
|
testHelper('{{setDay}}', '');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('other helpers', () => {
|
describe('other helpers', () => {
|
||||||
|
|||||||
@@ -45,8 +45,6 @@ function registerHandlebarsHelpers() {
|
|||||||
|
|
||||||
function mathHelper(fn: (a: number, b: number) => number) {
|
function mathHelper(fn: (a: number, b: number) => number) {
|
||||||
return (a: unknown, ...b: unknown[]) => {
|
return (a: unknown, ...b: unknown[]) => {
|
||||||
// Last argument is the Handlebars options object
|
|
||||||
b.splice(-1, 1);
|
|
||||||
return b.map(Number).reduce(fn, Number(a));
|
return b.map(Number).reduce(fn, Number(a));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -111,35 +109,35 @@ function registerHandlebarsHelpers() {
|
|||||||
year: (date?: string) => date && format(date, 'yyyy'),
|
year: (date?: string) => date && format(date, 'yyyy'),
|
||||||
format: (date?: string, f?: string) => date && f && format(date, f),
|
format: (date?: string, f?: string) => date && f && format(date, f),
|
||||||
addDays: (date?: string, days?: number) => {
|
addDays: (date?: string, days?: number) => {
|
||||||
if (!days || !days) return date;
|
if (!date || !days) return date;
|
||||||
return format(addDays(date, days), 'yyyy-MM-dd');
|
return format(addDays(date, days), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
subDays: (date?: string, days?: number) => {
|
subDays: (date?: string, days?: number) => {
|
||||||
if (!days || !days) return date;
|
if (!date || !days) return date;
|
||||||
return format(subDays(date, days), 'yyyy-MM-dd');
|
return format(subDays(date, days), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
addMonths: (date?: string, months?: number) => {
|
addMonths: (date?: string, months?: number) => {
|
||||||
if (!months || !months) return date;
|
if (!date || !months) return date;
|
||||||
return format(addMonths(parseDate(date), months), 'yyyy-MM-dd');
|
return format(addMonths(parseDate(date), months), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
subMonths: (date?: string, months?: number) => {
|
subMonths: (date?: string, months?: number) => {
|
||||||
if (!months || !months) return date;
|
if (!date || !months) return date;
|
||||||
return format(subMonths(parseDate(date), months), 'yyyy-MM-dd');
|
return format(subMonths(parseDate(date), months), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
addWeeks: (date?: string, weeks?: number) => {
|
addWeeks: (date?: string, weeks?: number) => {
|
||||||
if (!weeks || !weeks) return date;
|
if (!date || !weeks) return date;
|
||||||
return format(addWeeks(parseDate(date), weeks), 'yyyy-MM-dd');
|
return format(addWeeks(parseDate(date), weeks), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
subWeeks: (date?: string, weeks?: number) => {
|
subWeeks: (date?: string, weeks?: number) => {
|
||||||
if (!weeks || !weeks) return date;
|
if (!date || !weeks) return date;
|
||||||
return format(subWeeks(parseDate(date), weeks), 'yyyy-MM-dd');
|
return format(subWeeks(parseDate(date), weeks), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
addYears: (date?: string, years?: number) => {
|
addYears: (date?: string, years?: number) => {
|
||||||
if (!years || !years) return date;
|
if (!date || !years) return date;
|
||||||
return format(addYears(parseDate(date), years), 'yyyy-MM-dd');
|
return format(addYears(parseDate(date), years), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
subYears: (date?: string, years?: number) => {
|
subYears: (date?: string, years?: number) => {
|
||||||
if (!years || !years) return date;
|
if (!date || !years) return date;
|
||||||
return format(subYears(parseDate(date), years), 'yyyy-MM-dd');
|
return format(subYears(parseDate(date), years), 'yyyy-MM-dd');
|
||||||
},
|
},
|
||||||
setDay: (date?: string, day?: number) => {
|
setDay: (date?: string, day?: number) => {
|
||||||
@@ -150,11 +148,14 @@ function registerHandlebarsHelpers() {
|
|||||||
debug: (value: unknown) => {
|
debug: (value: unknown) => {
|
||||||
console.log(value);
|
console.log(value);
|
||||||
},
|
},
|
||||||
concat: (...args: unknown[]) => args.slice(0, -1).join(''),
|
concat: (...args: unknown[]) => args.join(''),
|
||||||
};
|
} as Record<string, Handlebars.HelperDelegate>;
|
||||||
|
|
||||||
for (const [name, fn] of Object.entries(helpers)) {
|
for (const [name, fn] of Object.entries(helpers)) {
|
||||||
Handlebars.registerHelper(name, fn);
|
Handlebars.registerHelper(name, (...args: unknown[]) => {
|
||||||
|
//The last argument is the Handlebars options object
|
||||||
|
return fn(...args.slice(0, -1));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
upcoming-release-notes/4356.md
Normal file
6
upcoming-release-notes/4356.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
category: Bugfix
|
||||||
|
authors: [UnderKoen]
|
||||||
|
---
|
||||||
|
|
||||||
|
Rule action templating now works with helpers with no arguments
|
||||||
Reference in New Issue
Block a user