diff --git a/README.md b/README.md
index d37f3dd..13aad53 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,14 @@
# bs-react-intl-extractor
Extracts messages for localization from [Reason] source files.
-This assumes that you are using the [bs-react-intl] bindings for [react-intl].
+This assumes that you are using the [bs-react-intl] 2.x bindings for [react-intl].
[](https://nodei.co/npm/bs-react-intl-extractor-bin/)

## Installation
-Binaries for macOS and Linux can be installed via npm or yarn. For global installation, run
+Binaries for macOS, Linux and Windows can be installed via npm or yarn. For global installation, run
```sh
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
]
```
-## Message Definition (bs-react-intl 2.x)
+## Message Definition
Formatted messages may be defined in your source files in one of the following ways:
@@ -79,65 +79,9 @@ module Msg = {
```
You also can pass descriptions to the records with:
-```reason
-let foo = [@intl.description "Hello description"] {id: "message.hello", defaultMessage: "Hello"};
-```
-
-## Message Definition (bs-react-intl 1.x)
-
-Formatted messages may be defined in your source files in one of the following ways:
-
-1. inline in `FormattedMessage` (see above)
-
-2. using `ReactIntl.defineMessages`:
```reason
-let messages =
- ReactIntl.defineMessages(. {
- "hello": {
- "id": "message.hello",
- "defaultMessage": "Hello",
- },
- "world": {
- "id": "message.world",
- "defaultMessage": "World",
- },
- });
-```
-
-or
-
-```reason
-open ReactIntl;
-...
-let messages =
- defineMessages(. {
- "hello": {
- "id": "message.hello",
- "defaultMessage": "Hello",
- },
- "world": {
- "id": "message.world",
- "defaultMessage": "World",
- },
- });
-```
-
-3. using the attribute `[@intl.messages]`:
-
-```reason
-let messages =
- [@intl.messages]
- {
- "hello": {
- "id": "message.hello",
- "defaultMessage": "Hello",
- },
- "world": {
- "id": "message.world",
- "defaultMessage": "World",
- },
- };
+let foo = [@intl.description "Hello description"] {id: "message.hello", defaultMessage: "Hello"};
```
## Building and Testing
diff --git a/lib/ExtractionIterator.re b/lib/ExtractionIterator.re
index c63ec19..9e7b5aa 100644
--- a/lib/ExtractionIterator.re
+++ b/lib/ExtractionIterator.re
@@ -38,25 +38,6 @@ let extractMessageFromRecord = (~description=?, callback, fields) => {
Message.fromStringMap(~description?, map) |> Option.iter(callback);
};
-let extractMessagesFromRecords = (callback, records) =>
- records
- |> List.iter(field =>
- switch (field) {
- | (
- {txt: Lident(_)},
- {
- pexp_desc:
- Pexp_extension((
- {txt: "bs.obj"},
- PStr([{pstr_desc: Pstr_eval({pexp_desc: Pexp_record(fields, _)}, _), pstr_loc: _}]),
- )),
- },
- ) =>
- extractMessageFromRecord(callback, fields)
- | _ => ()
- }
- );
-
let hasIntlAttribute = (items: structure) =>
items
|> List.exists(item =>
@@ -114,13 +95,6 @@ let matchesFormattedMessage = ident =>
| _ => false
};
-let matchesDefineMessages = ident =>
- switch (ident) {
- | Ldot(Lident("ReactIntl"), "defineMessages")
- | Lident("defineMessages") => true
- | _ => false
- };
-
let getIterator = callback => {
...default_iterator,
@@ -137,39 +111,6 @@ let getIterator = callback => {
| {pexp_desc: Pexp_apply({pexp_desc: Pexp_ident({txt, _})}, labels)} when matchesFormattedMessage(txt) =>
extractMessageFromLabels(callback, labels)
- // Match (ReactIntl.)defineMessages
- | {
- pexp_desc:
- Pexp_apply(
- {pexp_desc: Pexp_ident({txt, _})},
- [
- (
- Asttypes.Nolabel,
- {
- pexp_desc:
- Pexp_extension((
- {txt: "bs.obj"},
- PStr([{pstr_desc: Pstr_eval({pexp_desc: Pexp_record(fields, _)}, _), pstr_loc: _}]),
- )),
- },
- ),
- ],
- ),
- }
- when matchesDefineMessages(txt) =>
- extractMessagesFromRecords(callback, fields)
-
- // Match [@intl.messages] on objects
- | {
- pexp_desc:
- Pexp_extension((
- {txt: "bs.obj"},
- PStr([{pstr_desc: Pstr_eval({pexp_desc: Pexp_record(fields, _)}, _), pstr_loc: _}]),
- )),
- pexp_attributes: [({txt: "intl.messages"}, _)],
- } =>
- extractMessagesFromRecords(callback, fields)
-
| _ => ()
};
diff --git a/test/__snapshots__/Extract.372ae0d1.0.snapshot b/test/__snapshots__/Extract.372ae0d1.0.snapshot
index 4dfec3b..1f5001e 100644
--- a/test/__snapshots__/Extract.372ae0d1.0.snapshot
+++ b/test/__snapshots__/Extract.372ae0d1.0.snapshot
@@ -1,10 +1,2 @@
Extract › partial
-[
- { \"id\": \"test1.msg2.1\", \"defaultMessage\": \"This is message 2.1\" },
- {
- \"id\": \"test1.msg2.2\",
- \"defaultMessage\": \"This is message 2.2\",
- \"description\": \"Description for message 2.2\"
- },
- { \"id\": \"test2.msg1.1\", \"defaultMessage\": \"This is message 2.1.1\" }
-]
+[ { \"id\": \"test1.msg3.1\", \"defaultMessage\": \"This is message 3.1\" } ]
diff --git a/test/__snapshots__/Extract.a27e9fd5.0.snapshot b/test/__snapshots__/Extract.a27e9fd5.0.snapshot
index 7a3c93d..e77c662 100644
--- a/test/__snapshots__/Extract.a27e9fd5.0.snapshot
+++ b/test/__snapshots__/Extract.a27e9fd5.0.snapshot
@@ -9,24 +9,11 @@ Extract › full
},
{ \"id\": \"test1.msg1.4\", \"defaultMessage\": \"This is message 1.4\" },
{ \"id\": \"test1.msg1.5\", \"defaultMessage\": \"This is message 1.5\" },
- { \"id\": \"test1.msg1.6\", \"defaultMessage\": \"This is message 1.6\" },
- {
- \"id\": \"test1.msg1.7\",
- \"defaultMessage\": \"This is message 1.7\",
- \"description\": \"Description for message 1.7\"
- },
{ \"id\": \"test1.msg1.8\", \"defaultMessage\": \"This is message 1.8\" },
{
\"id\": \"test1.msg1.9\",
\"defaultMessage\": \"This is message 1.9\",
\"description\": \"Description for message 1.9\"
},
- { \"id\": \"test1.msg2.1\", \"defaultMessage\": \"This is message 2.1\" },
- {
- \"id\": \"test1.msg2.2\",
- \"defaultMessage\": \"This is message 2.2\",
- \"description\": \"Description for message 2.2\"
- },
- { \"id\": \"test1.msg3.1\", \"defaultMessage\": \"This is message 3.1\" },
- { \"id\": \"test2.msg1.1\", \"defaultMessage\": \"This is message 2.1.1\" }
+ { \"id\": \"test1.msg3.1\", \"defaultMessage\": \"This is message 3.1\" }
]
diff --git a/test/__snapshots__/ReScript.18d405ea.0.snapshot b/test/__snapshots__/ReScript.18d405ea.0.snapshot
index 19a51f7..add395a 100644
--- a/test/__snapshots__/ReScript.18d405ea.0.snapshot
+++ b/test/__snapshots__/ReScript.18d405ea.0.snapshot
@@ -9,23 +9,11 @@ ReScript › full
},
{ \"id\": \"test4.msg1.4\", \"defaultMessage\": \"This is message 1.4\" },
{ \"id\": \"test4.msg1.5\", \"defaultMessage\": \"This is message 1.5\" },
- { \"id\": \"test4.msg1.6\", \"defaultMessage\": \"This is message 1.6\" },
- {
- \"id\": \"test4.msg1.7\",
- \"defaultMessage\": \"This is message 1.7\",
- \"description\": \"Description for message 1.7\"
- },
{ \"id\": \"test4.msg1.8\", \"defaultMessage\": \"This is message 1.8\" },
{
\"id\": \"test4.msg1.9\",
\"defaultMessage\": \"This is message 1.9\",
\"description\": \"Description for message 1.9\"
},
- { \"id\": \"test4.msg2.1\", \"defaultMessage\": \"This is message 2.1\" },
- {
- \"id\": \"test4.msg2.2\",
- \"defaultMessage\": \"This is message 2.2\",
- \"description\": \"Description for message 2.2\"
- },
{ \"id\": \"test4.msg3.1\", \"defaultMessage\": \"This is message 3.1\" }
]
diff --git a/test/lib/Tests.re b/test/lib/Tests.re
index b2dc944..5f88158 100644
--- a/test/lib/Tests.re
+++ b/test/lib/Tests.re
@@ -10,12 +10,12 @@ let extractAndGetJson = (~duplicatesAllowed=?, paths) => {
describe("Extract", ({test}) => {
test("full", ({expect}) => {
- let json = extractAndGetJson(["testData/test1", "testData/test2"]);
+ let json = extractAndGetJson(["testData/test1"]);
expect.string(json).toMatchSnapshot();
});
test("partial", ({expect}) => {
- let json = extractAndGetJson(["testData/test1/subdir/Test_1_2.re", "testData/test2"]);
+ let json = extractAndGetJson(["testData/test1/subdir/Test_1_3.re"]);
expect.string(json).toMatchSnapshot();
});
});
diff --git a/testData/test1/Test_1_1.re b/testData/test1/Test_1_1.re
index 4394a0c..fc94920 100644
--- a/testData/test1/Test_1_1.re
+++ b/testData/test1/Test_1_1.re
@@ -22,27 +22,6 @@ let theseShouldBeIgnored = () =>
;
-let _ =
- ReactIntl.defineMessages({
- "test1.msg1.6": {
- "id": "test1.msg1.6",
- "defaultMessage": "This is message 1.6",
- },
- "ignored1.3": {
- "idd": "test1.msg1.8", /* This will not be extracted. */
- "defaultMessage": "This is message 1.8",
- },
- });
-
-let _ =
- defineMessages({
- "test1.msg1.7": {
- "id": "test1.msg1.7",
- "defaultMessage": "This is message 1.7",
- "description": "Description for message 1.7",
- },
- });
-
module Msg = {
open ReactIntl;
diff --git a/testData/test1/subdir/Test_1_2.re b/testData/test1/subdir/Test_1_2.re
deleted file mode 100644
index 30b9d0b..0000000
--- a/testData/test1/subdir/Test_1_2.re
+++ /dev/null
@@ -1,30 +0,0 @@
-let _ =
- [@intl.messages]
- {
- "test1.msg2.1": {
- "id": "test1.msg2.1",
- "defaultMessage": "This is message 2.1",
- },
- "test1.msg2.2": {
- "id": "test1.msg2.2",
- "defaultMessage": "This is message 2.2",
- "description": "Description for message 2.2",
- },
- "test1.ignored2.1": {
- "idd": "ignored2.1", /* This will not be extracted. */
- "defaultMessage": "This is message 13",
- },
- };
-
-let _ =
- [@intl]
- {
- "ignored2.2": {
- "id": "ignored2.2",
- "defaultMessage": "This message is ignored",
- },
- "ignored2.3": {
- "id": "ignored2.3",
- "defaultMessage": "This message is ignored, too",
- },
- };
diff --git a/testData/test1/Test_1_3.re b/testData/test1/subdir/Test_1_3.re
similarity index 100%
rename from testData/test1/Test_1_3.re
rename to testData/test1/subdir/Test_1_3.re
diff --git a/testData/test2/Test_2_1.re b/testData/test2/Test_2_1.re
deleted file mode 100644
index b5ce3a9..0000000
--- a/testData/test2/Test_2_1.re
+++ /dev/null
@@ -1,6 +0,0 @@
-let _ = [@intl.messages] {
- "test2.msg1.1": {
- "id": "test2.msg1.1",
- "defaultMessage": "This is message 2.1.1",
- },
- };
diff --git a/testData/test4/Test_4_1.res b/testData/test4/Test_4_1.res
index bcab62b..011a3fe 100644
--- a/testData/test4/Test_4_1.res
+++ b/testData/test4/Test_4_1.res
@@ -23,25 +23,6 @@ let theseShouldBeIgnored = () =>
-let _ = ReactIntl.defineMessages({
- "test4.msg1.6": {
- "id": "test4.msg1.6",
- "defaultMessage": "This is message 1.6",
- },
- "ignored1.3": {
- "idd": "test4.msg1.8" /* This will not be extracted. */,
- "defaultMessage": "This is message 1.8",
- },
-})
-
-let _ = defineMessages({
- "test4.msg1.7": {
- "id": "test4.msg1.7",
- "defaultMessage": "This is message 1.7",
- "description": "Description for message 1.7",
- },
-})
-
module Msg = {
open ReactIntl
diff --git a/testData/test4/subdir/Test_4_2.res b/testData/test4/subdir/Test_4_2.res
deleted file mode 100644
index ddd875e..0000000
--- a/testData/test4/subdir/Test_4_2.res
+++ /dev/null
@@ -1,30 +0,0 @@
-let _ =
- @intl.messages
- {
- "test4.msg2.1": {
- "id": "test4.msg2.1",
- "defaultMessage": "This is message 2.1",
- },
- "test4.msg2.2": {
- "id": "test4.msg2.2",
- "defaultMessage": "This is message 2.2",
- "description": "Description for message 2.2",
- },
- "test4.ignored2.1": {
- "idd": "ignored2.1" /* This will not be extracted. */,
- "defaultMessage": "This is message 13",
- },
- }
-
-let _ =
- @intl
- {
- "ignored2.2": {
- "id": "ignored2.2",
- "defaultMessage": "This message is ignored",
- },
- "ignored2.3": {
- "id": "ignored2.3",
- "defaultMessage": "This message is ignored, too",
- },
- }
diff --git a/testData/test4/Test_4_3.res b/testData/test4/subdir/Test_4_3.res
similarity index 100%
rename from testData/test4/Test_4_3.res
rename to testData/test4/subdir/Test_4_3.res