-
Notifications
You must be signed in to change notification settings - Fork 0
/
thesaurus.pl
executable file
·93 lines (70 loc) · 1.32 KB
/
thesaurus.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env perl
use 5.20.0;
package App::Thesaurus {
use strict;
use Template::Mustache;
use Moo;
use MooX::Options protect_argv => 0;
with 'Role::REST::Client';
use experimental qw/
signatures
postderef
/;
has '+server' => (
default => 'https://od-api.oxforddictionaries.com',
);
has '+persistent_headers' => (
default => sub {
+{
app_id => 'aeeea1e3',
app_key => '112aeac451f2100fbf7be9cdff8a7ee1',
}
},
);
option synonym => (
is => 'ro',
default => 1,
);
option antonym => (
is => 'ro',
default => 0,
);
option lang => (
is => 'ro',
format => 's',
default => 'en',
);
sub run($self) {
use DDP;
# die p $self->persistent_headers;
$self->get_word($_) for @ARGV;
}
my $template = Template::Mustache->new( template => <<'END');
{{#results}}
# {{ word }}
{{#lexicalEntries}}
{{#entries}}
{{#senses}}
## sense
{{#examples}}
> {{ text }}
{{/examples}}
### synonyms
{{#synonyms}}
* {{ text }}
{{/synonyms}}
### antonyms
{{#antonyms}}
* {{ text }}
{{/antonyms}}
{{/senses}}
{{/entries}}
{{/lexicalEntries}}
{{/results}}
END
sub get_word($self,$word) {
my $r = $self->get( '/api/v1/entries/' . $self->lang . '/' . $word .'/synonyms' );
say $template->render( $r->data );
}
}
App::Thesaurus->new_with_options->run;