From e7a68df75a2089ca7ce8323428c697473b091e93 Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Fri, 13 Nov 2020 18:28:55 +0900 Subject: [PATCH] feat: export type prop from runtime --- src/composer.ts | 3 ++- src/message/runtime.ts | 8 ++++++++ test/message/runtime.test.ts | 4 +++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/composer.ts b/src/composer.ts index 7d3e17702..4880a0be5 100644 --- a/src/composer.ts +++ b/src/composer.ts @@ -759,7 +759,8 @@ export function createComposer< const interpolate = (val: unknown): MessageType => val as VNode const processor = { normalize, - interpolate + interpolate, + type: 'vnode' } as MessageProcessor // __transrateVNode, using for `i18n-t` component diff --git a/src/message/runtime.ts b/src/message/runtime.ts index bb37b5cab..7d0d555d1 100644 --- a/src/message/runtime.ts +++ b/src/message/runtime.ts @@ -83,6 +83,7 @@ export const enum HelperNameMap { PLURAL = 'plural', LINKED = 'linked', MESSAGE = 'message', + TYPE = 'type', INTERPOLATE = 'interpolate', NORMALIZE = 'normalize' } @@ -94,6 +95,7 @@ export interface MessageContext { plural(messages: T[]): T linked(key: Path, modifier?: string): MessageType message(key: Path): MessageFunction + type: string interpolate: MessageInterpolate normalize: MessageNormalize } @@ -202,6 +204,11 @@ export function createMessageContext( ? options.processor.interpolate : ((DEFAULT_INTERPOLATE as unknown) as MessageInterpolate) + const type = + isPlainObject(options.processor) && isString(options.processor.type) + ? options.processor.type + : DEFAULT_MESSAGE_DATA_TYPE + const ctx = { [HelperNameMap.LIST]: list, [HelperNameMap.NAMED]: named, @@ -212,6 +219,7 @@ export function createMessageContext( return isString(modifier) ? _modifier(modifier)(msg as T) : msg }, [HelperNameMap.MESSAGE]: message, + [HelperNameMap.TYPE]: type, [HelperNameMap.INTERPOLATE]: interpolate, [HelperNameMap.NORMALIZE]: normalize } diff --git a/test/message/runtime.test.ts b/test/message/runtime.test.ts index 5070a9a43..878efd2a3 100644 --- a/test/message/runtime.test.ts +++ b/test/message/runtime.test.ts @@ -280,9 +280,11 @@ describe('custom process', () => { const ctx = createMessageContext({ processor: { normalize, - interpolate + interpolate, + type: 'mock' } }) + expect(ctx.type).toEqual('mock') expect(msg(ctx)).toMatchSnapshot() })