Skip to content

Commit ccc0331

Browse files
feat(mf2): Prefix custom functions: fluent:message, mf1:date, mf1:number, ...
1 parent 4f47e34 commit ccc0331

File tree

7 files changed

+17
-11
lines changed

7 files changed

+17
-11
lines changed

packages/mf2-fluent/src/fluent-to-message.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,13 @@ function asExpression(exp: Fluent.Expression): Expression {
160160
return {
161161
type: 'expression',
162162
arg: { type: 'literal', value: msgId },
163-
functionRef: { type: 'function', name: 'message' }
163+
functionRef: { type: 'function', name: 'fluent:message' }
164164
};
165165
}
166166
case 'TermReference': {
167167
const annotation: FunctionRef = {
168168
type: 'function',
169-
name: 'message'
169+
name: 'fluent:message'
170170
};
171171
const msgId = exp.attribute
172172
? `-${exp.id.name}.${exp.attribute.name}`

packages/mf2-fluent/src/fluent.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -847,12 +847,12 @@ describe('messagetoFluent', () => {
847847
{
848848
type: 'expression',
849849
arg: { type: 'literal', value: 'msg' },
850-
functionRef: { type: 'function', name: 'message' }
850+
functionRef: { type: 'function', name: 'fluent:message' }
851851
},
852852
{
853853
type: 'expression',
854854
arg: { type: 'variable', name: 'local' },
855-
functionRef: { type: 'function', name: 'message' }
855+
functionRef: { type: 'function', name: 'fluent:message' }
856856
}
857857
]
858858
};
@@ -889,7 +889,7 @@ describe('messagetoFluent', () => {
889889
{
890890
type: 'expression',
891891
arg: { type: 'variable', name: 'input' },
892-
functionRef: { type: 'function', name: 'message' }
892+
functionRef: { type: 'function', name: 'fluent:message' }
893893
}
894894
]
895895
};

packages/mf2-fluent/src/functions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,5 @@ export function getFluentFunctions(res: FluentMessageResource) {
4848
}
4949
Object.freeze(message);
5050

51-
return { message };
51+
return { 'fluent:message': message };
5252
}

packages/mf2-fluent/src/message-to-fluent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export type FunctionMap = Record<string, string | symbol | null>;
3434
*/
3535
export const defaultFunctionMap: FunctionMap = {
3636
datetime: 'DATETIME',
37-
message: FluentMessageRef,
37+
'fluent:message': FluentMessageRef,
3838
number: 'NUMBER',
3939
plural: 'NUMBER',
4040
string: null

packages/mf2-icu-mf1/src/functions.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,9 @@ function number(
180180
*
181181
* @beta
182182
*/
183-
export const getMF1Functions = () => ({ date, duration, number, time });
183+
export const getMF1Functions = () => ({
184+
'mf1:date': date,
185+
'mf1:duration': duration,
186+
'mf1:number': number,
187+
'mf1:time': time
188+
});

packages/mf2-icu-mf1/src/mf1-to-message-data.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ function tokenToPart(
6767
case 'function': {
6868
const functionRef: FunctionRef = {
6969
type: 'function',
70-
name: token.key
70+
name: `mf1:${token.key}`
7171
};
7272
if (token.param && token.param.length > 0) {
7373
let value = '';
@@ -113,7 +113,7 @@ function argToInputDeclaration({
113113
options.set('type', { type: 'literal', value: 'ordinal' });
114114
}
115115

116-
functionRef = { type: 'function', name: 'number' };
116+
functionRef = { type: 'function', name: 'mf1:number' };
117117
if (options.size) functionRef.options = options;
118118
}
119119
return {

packages/mf2-messageformat/src/mf2-features.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { fluentToResource } from '@messageformat/fluent';
22
import {
3+
getMF1Functions,
34
mf1ToMessage,
45
mf1ToMessageData
56
} from '@messageformat/icu-messageformat-1';
@@ -134,7 +135,7 @@ describe('Multi-selector messages (unicode-org/message-format-wg#119)', () => {
134135
expect(msg.selectors).toHaveLength(6);
135136
expect(msg.variants).toHaveLength(64);
136137

137-
const mf = new MessageFormat('en', msg);
138+
const mf = new MessageFormat('en', msg, { functions: getMF1Functions() });
138139

139140
const one = mf.format({
140141
N: 1,

0 commit comments

Comments
 (0)