@@ -22,7 +22,7 @@ let extractMessageFromLabels = (callback, labels) => {
2222 Message . fromStringMap(map) |> Option . iter(callback);
2323};
2424
25- let extractMessageFromRecord = (callback, fields) => {
25+ let extractMessageFromRecord = (~description =?, callback, fields) => {
2626 let map =
2727 fields
2828 |> List . fold_left(
@@ -35,7 +35,7 @@ let extractMessageFromRecord = (callback, fields) => {
3535 StringMap . empty,
3636 );
3737
38- Message . fromStringMap(map) |> Option . iter(callback);
38+ Message . fromStringMap(~description ? , map) |> Option . iter(callback);
3939};
4040
4141let extractMessagesFromRecords = (callback, records) =>
@@ -70,6 +70,26 @@ let extractMessagesFromValueBindings = (callback, valueBindings: list(value_bind
7070 valueBindings
7171 |> List . iter(valueBinding =>
7272 switch (valueBinding) {
73+ // Match with [@intl.description "i am description"] let foo = { ... };
74+ | {
75+ pvb_pat: {ppat_desc: Ppat_var (_ )},
76+ pvb_expr: {
77+ pexp_desc: Pexp_record (fields , None ),
78+ pexp_attributes: [
79+ {
80+ attr_name: {txt: "intl.description" },
81+ attr_payload:
82+ PStr ([
83+ {
84+ pstr_desc: Pstr_eval ({pexp_desc: Pexp_constant (Pconst_string (description , _ ))}, _ ),
85+ pstr_loc: _ ,
86+ },
87+ ] ),
88+ },
89+ ] ,
90+ },
91+ } =>
92+ extractMessageFromRecord(~description, callback, fields)
7393 | {pvb_pat: {ppat_desc: Ppat_var (_ )}, pvb_expr: {pexp_desc: Pexp_record (fields , None )}} =>
7494 extractMessageFromRecord(callback, fields)
7595 | _ => ()
0 commit comments