feat: add truncate filter to summary tag (#6105)

Co-authored-by: Till Schweneker <till.schweneker@meltingelements.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
tillschweneker
2022-01-21 15:09:02 +01:00
committed by GitHub
parent 77f841fd29
commit d66c573697
3 changed files with 43 additions and 7 deletions

View File

@ -1,12 +1,13 @@
import { fromJS } from 'immutable';
import {
keyToPathArray,
compileStringTemplate,
parseDateFromEntry,
extractTemplateVars,
expandPath,
extractTemplateVars,
keyToPathArray,
parseDateFromEntry,
} from '../stringTemplate';
describe('stringTemplate', () => {
describe('keyToPathArray', () => {
it('should return array of length 1 with simple path', () => {
@ -152,6 +153,28 @@ describe('stringTemplate', () => {
),
).toBe('BACKENDSLUG-star-open');
});
it('return apply filter for truncate', () => {
expect(
compileStringTemplate(
'{{slug | truncate(6)}}',
date,
'backendSlug',
fromJS({ slug: 'entrySlug', starred: true, done: false }),
),
).toBe('backen...');
});
it('return apply filter for truncate', () => {
expect(
compileStringTemplate(
"{{slug | truncate(3,'***')}}",
date,
'backendSlug',
fromJS({ slug: 'entrySlug', starred: true, done: false }),
),
).toBe('bac***');
});
});
describe('expandPath', () => {

View File

@ -1,7 +1,7 @@
import moment from 'moment';
import { Map } from 'immutable';
import { get, trimEnd, truncate } from 'lodash';
import moment from 'moment';
import { basename, dirname, extname } from 'path';
import { get, trimEnd } from 'lodash';
const filters = [
{ pattern: /^upper$/, transform: (str: string) => str.toUpperCase() },
@ -21,6 +21,18 @@ const filters = [
pattern: /^ternary\('(.*)',\s*'(.*)'\)$/,
transform: (str: string, match: RegExpMatchArray) => (str ? match[1] : match[2]),
},
{
pattern: /^truncate\(([0-9]+)(?:(?:,\s*['"])([^'"]*)(?:['"]))?\)$/,
transform: (str: string, match: RegExpMatchArray) => {
const omission = match[2] || '...';
const length = parseInt(match[1]) + omission.length;
return truncate(str, {
length,
omission,
});
},
},
];
const FIELD_PREFIX = 'fields.';