Skip to content

Commit 0a366fd

Browse files
authored
Remove support for bs-react-intl 1.x style message definition (#65)
1 parent a1246e6 commit 0a366fd

File tree

13 files changed

+8
-262
lines changed

13 files changed

+8
-262
lines changed

README.md

Lines changed: 4 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# bs-react-intl-extractor
22

33
Extracts messages for localization from [Reason] source files.
4-
This assumes that you are using the [bs-react-intl] bindings for [react-intl].
4+
This assumes that you are using the [bs-react-intl] 2.x bindings for [react-intl].
55

66
[![NPM](https://nodei.co/npm/bs-react-intl-extractor-bin.png?compact=true)](https://nodei.co/npm/bs-react-intl-extractor-bin/)
77
![Build Status](https://github.com/cknitt/bs-react-intl-extractor/workflows/CI/badge.svg)
88

99
## Installation
1010

11-
Binaries for macOS and Linux can be installed via npm or yarn. For global installation, run
11+
Binaries for macOS, Linux and Windows can be installed via npm or yarn. For global installation, run
1212

1313
```sh
1414
npm install -g bs-react-intl-extractor-bin
@@ -47,7 +47,7 @@ The output (a JSON array of all extracted messages sorted by id) is written to s
4747
]
4848
```
4949

50-
## Message Definition (bs-react-intl 2.x)
50+
## Message Definition
5151

5252
Formatted messages may be defined in your source files in one of the following ways:
5353

@@ -79,65 +79,9 @@ module Msg = {
7979
```
8080

8181
You also can pass descriptions to the records with:
82-
```reason
83-
let foo = [@intl.description "Hello description"] {id: "message.hello", defaultMessage: "Hello"};
84-
```
85-
86-
## Message Definition (bs-react-intl 1.x)
87-
88-
Formatted messages may be defined in your source files in one of the following ways:
89-
90-
1. inline in `FormattedMessage` (see above)
91-
92-
2. using `ReactIntl.defineMessages`:
9382

9483
```reason
95-
let messages =
96-
ReactIntl.defineMessages(. {
97-
"hello": {
98-
"id": "message.hello",
99-
"defaultMessage": "Hello",
100-
},
101-
"world": {
102-
"id": "message.world",
103-
"defaultMessage": "World",
104-
},
105-
});
106-
```
107-
108-
or
109-
110-
```reason
111-
open ReactIntl;
112-
...
113-
let messages =
114-
defineMessages(. {
115-
"hello": {
116-
"id": "message.hello",
117-
"defaultMessage": "Hello",
118-
},
119-
"world": {
120-
"id": "message.world",
121-
"defaultMessage": "World",
122-
},
123-
});
124-
```
125-
126-
3. using the attribute `[@intl.messages]`:
127-
128-
```reason
129-
let messages =
130-
[@intl.messages]
131-
{
132-
"hello": {
133-
"id": "message.hello",
134-
"defaultMessage": "Hello",
135-
},
136-
"world": {
137-
"id": "message.world",
138-
"defaultMessage": "World",
139-
},
140-
};
84+
let foo = [@intl.description "Hello description"] {id: "message.hello", defaultMessage: "Hello"};
14185
```
14286

14387
## Building and Testing

lib/ExtractionIterator.re

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -38,25 +38,6 @@ let extractMessageFromRecord = (~description=?, callback, fields) => {
3838
Message.fromStringMap(~description?, map) |> Option.iter(callback);
3939
};
4040

41-
let extractMessagesFromRecords = (callback, records) =>
42-
records
43-
|> List.iter(field =>
44-
switch (field) {
45-
| (
46-
{txt: Lident(_)},
47-
{
48-
pexp_desc:
49-
Pexp_extension((
50-
{txt: "bs.obj"},
51-
PStr([{pstr_desc: Pstr_eval({pexp_desc: Pexp_record(fields, _)}, _), pstr_loc: _}]),
52-
)),
53-
},
54-
) =>
55-
extractMessageFromRecord(callback, fields)
56-
| _ => ()
57-
}
58-
);
59-
6041
let hasIntlAttribute = (items: structure) =>
6142
items
6243
|> List.exists(item =>
@@ -114,13 +95,6 @@ let matchesFormattedMessage = ident =>
11495
| _ => false
11596
};
11697

117-
let matchesDefineMessages = ident =>
118-
switch (ident) {
119-
| Ldot(Lident("ReactIntl"), "defineMessages")
120-
| Lident("defineMessages") => true
121-
| _ => false
122-
};
123-
12498
let getIterator = callback => {
12599
...default_iterator,
126100

@@ -137,39 +111,6 @@ let getIterator = callback => {
137111
| {pexp_desc: Pexp_apply({pexp_desc: Pexp_ident({txt, _})}, labels)} when matchesFormattedMessage(txt) =>
138112
extractMessageFromLabels(callback, labels)
139113

140-
// Match (ReactIntl.)defineMessages
141-
| {
142-
pexp_desc:
143-
Pexp_apply(
144-
{pexp_desc: Pexp_ident({txt, _})},
145-
[
146-
(
147-
Asttypes.Nolabel,
148-
{
149-
pexp_desc:
150-
Pexp_extension((
151-
{txt: "bs.obj"},
152-
PStr([{pstr_desc: Pstr_eval({pexp_desc: Pexp_record(fields, _)}, _), pstr_loc: _}]),
153-
)),
154-
},
155-
),
156-
],
157-
),
158-
}
159-
when matchesDefineMessages(txt) =>
160-
extractMessagesFromRecords(callback, fields)
161-
162-
// Match [@intl.messages] on objects
163-
| {
164-
pexp_desc:
165-
Pexp_extension((
166-
{txt: "bs.obj"},
167-
PStr([{pstr_desc: Pstr_eval({pexp_desc: Pexp_record(fields, _)}, _), pstr_loc: _}]),
168-
)),
169-
pexp_attributes: [({txt: "intl.messages"}, _)],
170-
} =>
171-
extractMessagesFromRecords(callback, fields)
172-
173114
| _ => ()
174115
};
175116

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,2 @@
11
Extract › partial
2-
[
3-
{ \"id\": \"test1.msg2.1\", \"defaultMessage\": \"This is message 2.1\" },
4-
{
5-
\"id\": \"test1.msg2.2\",
6-
\"defaultMessage\": \"This is message 2.2\",
7-
\"description\": \"Description for message 2.2\"
8-
},
9-
{ \"id\": \"test2.msg1.1\", \"defaultMessage\": \"This is message 2.1.1\" }
10-
]
2+
[ { \"id\": \"test1.msg3.1\", \"defaultMessage\": \"This is message 3.1\" } ]

test/__snapshots__/Extract.a27e9fd5.0.snapshot

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,11 @@ Extract › full
99
},
1010
{ \"id\": \"test1.msg1.4\", \"defaultMessage\": \"This is message 1.4\" },
1111
{ \"id\": \"test1.msg1.5\", \"defaultMessage\": \"This is message 1.5\" },
12-
{ \"id\": \"test1.msg1.6\", \"defaultMessage\": \"This is message 1.6\" },
13-
{
14-
\"id\": \"test1.msg1.7\",
15-
\"defaultMessage\": \"This is message 1.7\",
16-
\"description\": \"Description for message 1.7\"
17-
},
1812
{ \"id\": \"test1.msg1.8\", \"defaultMessage\": \"This is message 1.8\" },
1913
{
2014
\"id\": \"test1.msg1.9\",
2115
\"defaultMessage\": \"This is message 1.9\",
2216
\"description\": \"Description for message 1.9\"
2317
},
24-
{ \"id\": \"test1.msg2.1\", \"defaultMessage\": \"This is message 2.1\" },
25-
{
26-
\"id\": \"test1.msg2.2\",
27-
\"defaultMessage\": \"This is message 2.2\",
28-
\"description\": \"Description for message 2.2\"
29-
},
30-
{ \"id\": \"test1.msg3.1\", \"defaultMessage\": \"This is message 3.1\" },
31-
{ \"id\": \"test2.msg1.1\", \"defaultMessage\": \"This is message 2.1.1\" }
18+
{ \"id\": \"test1.msg3.1\", \"defaultMessage\": \"This is message 3.1\" }
3219
]

test/__snapshots__/ReScript.18d405ea.0.snapshot

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,11 @@ ReScript › full
99
},
1010
{ \"id\": \"test4.msg1.4\", \"defaultMessage\": \"This is message 1.4\" },
1111
{ \"id\": \"test4.msg1.5\", \"defaultMessage\": \"This is message 1.5\" },
12-
{ \"id\": \"test4.msg1.6\", \"defaultMessage\": \"This is message 1.6\" },
13-
{
14-
\"id\": \"test4.msg1.7\",
15-
\"defaultMessage\": \"This is message 1.7\",
16-
\"description\": \"Description for message 1.7\"
17-
},
1812
{ \"id\": \"test4.msg1.8\", \"defaultMessage\": \"This is message 1.8\" },
1913
{
2014
\"id\": \"test4.msg1.9\",
2115
\"defaultMessage\": \"This is message 1.9\",
2216
\"description\": \"Description for message 1.9\"
2317
},
24-
{ \"id\": \"test4.msg2.1\", \"defaultMessage\": \"This is message 2.1\" },
25-
{
26-
\"id\": \"test4.msg2.2\",
27-
\"defaultMessage\": \"This is message 2.2\",
28-
\"description\": \"Description for message 2.2\"
29-
},
3018
{ \"id\": \"test4.msg3.1\", \"defaultMessage\": \"This is message 3.1\" }
3119
]

test/lib/Tests.re

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ let extractAndGetJson = (~duplicatesAllowed=?, paths) => {
1010

1111
describe("Extract", ({test}) => {
1212
test("full", ({expect}) => {
13-
let json = extractAndGetJson(["testData/test1", "testData/test2"]);
13+
let json = extractAndGetJson(["testData/test1"]);
1414
expect.string(json).toMatchSnapshot();
1515
});
1616

1717
test("partial", ({expect}) => {
18-
let json = extractAndGetJson(["testData/test1/subdir/Test_1_2.re", "testData/test2"]);
18+
let json = extractAndGetJson(["testData/test1/subdir/Test_1_3.re"]);
1919
expect.string(json).toMatchSnapshot();
2020
});
2121
});

testData/test1/Test_1_1.re

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,6 @@ let theseShouldBeIgnored = () =>
2222
<FormattedMessage id="ignored1.2" description="This is a description" />
2323
</div>;
2424

25-
let _ =
26-
ReactIntl.defineMessages({
27-
"test1.msg1.6": {
28-
"id": "test1.msg1.6",
29-
"defaultMessage": "This is message 1.6",
30-
},
31-
"ignored1.3": {
32-
"idd": "test1.msg1.8", /* This will not be extracted. */
33-
"defaultMessage": "This is message 1.8",
34-
},
35-
});
36-
37-
let _ =
38-
defineMessages({
39-
"test1.msg1.7": {
40-
"id": "test1.msg1.7",
41-
"defaultMessage": "This is message 1.7",
42-
"description": "Description for message 1.7",
43-
},
44-
});
45-
4625
module Msg = {
4726
open ReactIntl;
4827

testData/test1/subdir/Test_1_2.re

Lines changed: 0 additions & 30 deletions
This file was deleted.
File renamed without changes.

testData/test2/Test_2_1.re

Lines changed: 0 additions & 6 deletions
This file was deleted.

testData/test4/Test_4_1.res

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,6 @@ let theseShouldBeIgnored = () =>
2323
<FormattedMessage id="ignored1.2" description="This is a description" />
2424
</div>
2525

26-
let _ = ReactIntl.defineMessages({
27-
"test4.msg1.6": {
28-
"id": "test4.msg1.6",
29-
"defaultMessage": "This is message 1.6",
30-
},
31-
"ignored1.3": {
32-
"idd": "test4.msg1.8" /* This will not be extracted. */,
33-
"defaultMessage": "This is message 1.8",
34-
},
35-
})
36-
37-
let _ = defineMessages({
38-
"test4.msg1.7": {
39-
"id": "test4.msg1.7",
40-
"defaultMessage": "This is message 1.7",
41-
"description": "Description for message 1.7",
42-
},
43-
})
44-
4526
module Msg = {
4627
open ReactIntl
4728

testData/test4/subdir/Test_4_2.res

Lines changed: 0 additions & 30 deletions
This file was deleted.
File renamed without changes.

0 commit comments

Comments
 (0)