Metadata pointers
Metadata pointers tell the publisher where to get metadata values from other files in your project, usually .json
or built .html
files.
Pointer structure
{ path: 'locales/en/content.json?story.authors', format: (value: string[]) => { return value.join(', '); }, validate: (value: string) => value.length > 3, promptAsInitial: false,}
// ... or shorthanded with just path'locales/en/content.json?story.authors'
path
Pointer paths are a compound string of the relative path to a file and the JSON path to a data value within it.
For example, a path like:
{ path: 'locales/en/content.json?story.title',}
… would point at the following value:
{ "story": { "title": "My page title" }}
Can also be used to get values from built HTML files like:
{ path: 'dist/index.html?title',}
<html> <head> <title>My page title</title> </head> <body></body></html>
See more examples at @reuters-graphics/graphics-bin.
Shorthand syntax
A metadata pointer can also be defined as just the path
string.
'locales/en/content.json?story.title';
format
An optional format function to run when the value is found in a file.
For example:
{ path: 'locales/en/content.json?story.authors', format: (value: string[]) => { return value.join(', '); },}
… could be used to format an array of strings like the following into a single string.
{ "story": { "authors": ["Jane Doe", "John Doe"] }}
validate
An optional function to validate the value found in the metadata file.
For example:
{ path: '~/.reuters-graphics/profile.json?email', validate: (value: string) => { // Returns true if value is a TR email return /.+@thomsonreuters\.com$/.test(value); },}
promptAsInitial
If the pointer finds a value, use it as the initial value in a prompt to the user. If set to false
or not defined, skips the prompt if the pointer finds a value and uses it directly.
{ path: 'locales/en/content.json?story.title', promptAsInitial: true,}
Pointers
import { defineConfig } from '@reuters-graphics/graphics-kit-publisher';
export default defineConfig({ metadataPointers: { pack: { rootSlug: 'locales/en/content.json?story.rootSlug', wildSlug: 'locales/en/content.json?story.wildSlug', desk: { path: '~/.reuters-graphics/profile.json?desk', promptAsInitial: true, }, language: 'en', title: 'dist/index.html?title', byline: 'locales/en/content.json?story.authors', contactEmail: '~/.reuters-graphics/profile.json?email', }, edition: { title: 'index.html?title', description: 'index.html?meta.og:description', }, },});
pack.rootSlug
- Type:
string | MetadataPointer<string, string>;
- Default:
'locales/en/content.json?story.rootSlug';
pack.wildSlug
- Type:
string | MetadataPointer<string, string>;
- Default:
'locales/en/content.json?story.wildSlug';
pack.desk
- Type:
string | MetadataPointer<string, string>;
- Default:
{ path: '~/.reuters-graphics/profile.json?desk', promptAsInitial: true }
pack.language
- Type:
RNGS.Language | MetadataPointer<string, string>;
- Default:
'en';
pack.title
- Type:
string | MetadataPointer<string, string>;
- Default:
'dist/index.html?title';
pack.byline
- Type:
string | MetadataPointer<string, string>;
- Default:
'locales/en/content.json?story.authors';
pack.contactEmail
- Type:
string | MetadataPointer<string, string>;
- Default:
'~/.reuters-graphics/profile.json?email';
edition.title
- Type:
string | MetadataPointer<string, string>;
- Default:
'index.html?title';
edition.description
- Type:
string | MetadataPointer<string, string>;
- Default:
'index.html?meta.og:description';