nebrija 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +8 -0
- data/.travis.yml +4 -0
- data/README.md +14 -24
- data/Rakefile +5 -12
- data/bin/debug +0 -2
- data/bin/nebrija +1 -3
- data/lib/nebrija/cli.rb +3 -4
- data/lib/nebrija/parser.rb +19 -22
- data/lib/nebrija/rae.rb +15 -15
- data/lib/nebrija/version.rb +1 -1
- data/nebrija.gemspec +9 -9
- data/test/test_helper.rb +1 -0
- data/test/test_rae.rb +23 -6
- metadata +23 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e88cf6582f87d79939a6875adb7fa7c577f00316
|
4
|
+
data.tar.gz: c9f8856abd41c69a0990821261f1fcc99134c52c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 867a51af868ec5cd7fc8e1df3967162948b803931ea76d1c8f38fec815b4ab3abc0e9b8c02c39fa64d1dd0f86024491f643e297af740731118a06b87cbfa8305
|
7
|
+
data.tar.gz: b8d59ebecf6ccf5c7d12d0054d597408f62ecebad183d474bf71f15a6eb1b2d361aff054d13e818b4885e620398a2be541bb8230a20c1c925deea4105f332a30
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
Nebrija: A rae parser
|
2
2
|
=====================
|
3
3
|
|
4
|
-
|
5
4
|
[](https://travis-ci.org/javierhonduco/nebrija)
|
6
5
|
[](https://codeclimate.com/github/javierhonduco/nebrija)
|
7
6
|
|
@@ -17,45 +16,36 @@ API
|
|
17
16
|
---
|
18
17
|
```ruby
|
19
18
|
require 'nebrija'
|
20
|
-
res = Rae.new.search('word/id')
|
19
|
+
res = Rae.new.search('word/id')
|
21
20
|
puts res # prints the results
|
22
21
|
```
|
23
22
|
|
24
23
|
`HTTPRae` returns a hash where the key `status` can be `error`|`success`.
|
25
24
|
|
26
|
-
If the request is succesful, the key `type` indicates
|
25
|
+
If the request is succesful, the key `type` indicates whether the result type is a single word or multiple with `single`|`multiple`.
|
27
26
|
|
28
|
-
The response data can be found in the `response` key which
|
27
|
+
The response data can be found in the `response` key which holds an array.
|
28
|
+
|
29
|
+
The response data is formatted as shown in the [nebrija/cli](https://github.com/javierhonduco/nebrija/blob/master/lib/nebrija/cli.rb) file:
|
29
30
|
|
30
|
-
The response data is formatted as shown below:
|
31
|
-
* Single responses
|
32
|
-
```ruby
|
33
|
-
[{:word=>"banca", :id=>"N4sDS8D9sDXX2ydchkDs"}, {:word=>"bancar", :id=>"MHpGWYJ6YDXX2bw9Ghwm"}, {:word=>"bance", :id=>"dkcRaDoJTDXX2mbtZ21J"}, {:word=>"banco", :id=>"E0yO6yORQDXX2M4zQtJ3"}]
|
34
|
-
```
|
35
|
-
* Multiple responses
|
36
|
-
```ruby
|
37
|
-
[{:word=>"A-1.", :etymology=>"(Del gr. ἀ-, priv.).", :meanings=>[{:meaning=>"Carece de significación precisa. Amatar. Asustar. Avenar.", :meta=>"pref."}]}, {:word=>"A1.", :etymology=> nil, :meanings=>[{:meaning=>"Primera letra del abecedario español y del orden latino internacional, que representa un fonema vocálico abierto y central.", :meta=>"f."}, {:meaning=>"Signo de la proposición universal afirmativa.", :meta=>"Fil."}]}, {:word=>"~ por ~ y b por b.", :etymology=> nil, :meanings=>[{:meaning=>"punto por punto.", :meta=>"adv."}]}, {:word=>"A-2.", :etymology=> nil, :meanings=>[{:meaning=>"Denota privación o negación. Acromático. Ateísmo. Ante vocal toma la forma an-. Anestesia. Anorexia.", :meta=>"pref."}]}]
|
38
|
-
```
|
39
31
|
CLI searching
|
40
32
|
---------
|
41
33
|
```bash
|
42
34
|
$ nebrija <word>
|
43
35
|
```
|
44
36
|
|
37
|
+
Maybe you are lazy and want to add an alias to `rae` or `es` like I do :)
|
38
|
+
|
45
39
|
Friend projects/ project using this gem
|
46
40
|
---------------------------------------
|
47
41
|
* [Rae downloader](https://github.com/raul/rae-downloader) by [@raul](https://github.com/raul)
|
48
|
-
* [Dulcinea: a nebrija frontend](https://github.com/javierhonduco/dulcinea)
|
42
|
+
* [Dulcinea: a nebrija frontend](https://github.com/javierhonduco/dulcinea)
|
49
43
|
|
50
44
|
TODO
|
51
45
|
----
|
52
|
-
*
|
53
|
-
*
|
54
|
-
*
|
55
|
-
*
|
56
|
-
*
|
57
|
-
*
|
58
|
-
* ~~Handle errors.~~
|
59
|
-
* ~~Get it working without using cURL directly.~~
|
60
|
-
* ~~Improve the API.~~
|
61
|
-
* ~~Add Gemfile.~~
|
46
|
+
* Improve the API.
|
47
|
+
* Update clients to use new API.
|
48
|
+
* Fix multiple responses.
|
49
|
+
* Better doc.
|
50
|
+
* Mockless testing.
|
51
|
+
* Make the parser more readable.
|
data/Rakefile
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
require 'rake/testtask'
|
2
|
+
require 'rubocop/rake_task'
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
|
5
|
+
RuboCop::RakeTask.new
|
2
6
|
|
3
7
|
Rake::TestTask.new do |t|
|
4
8
|
t.libs << 'test'
|
@@ -6,15 +10,4 @@ Rake::TestTask.new do |t|
|
|
6
10
|
end
|
7
11
|
|
8
12
|
desc 'Run tests'
|
9
|
-
task :
|
10
|
-
|
11
|
-
desc 'Publish'
|
12
|
-
task :publish do
|
13
|
-
$: << 'lib' and require 'nebrija/version'
|
14
|
-
version = Nebrija::VERSION
|
15
|
-
|
16
|
-
`gem build nebrija.gemspec`
|
17
|
-
`gem install nebrija-#{version}.gem`
|
18
|
-
`gem push nebrija-#{version}.gem`
|
19
|
-
`rm *.gem`
|
20
|
-
end
|
13
|
+
task default: :test
|
data/bin/debug
CHANGED
data/bin/nebrija
CHANGED
data/lib/nebrija/cli.rb
CHANGED
@@ -2,10 +2,9 @@ require 'json'
|
|
2
2
|
require 'nebrija'
|
3
3
|
|
4
4
|
module Nebrija
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
5
|
+
# rubocop:disable MethodLength
|
6
|
+
def self.cli(word)
|
7
|
+
abort 'Type a word `$ nebrija amor`' if word.nil?
|
9
8
|
|
10
9
|
result = Rae.new.search(word)
|
11
10
|
status = result[:status]
|
data/lib/nebrija/parser.rb
CHANGED
@@ -1,24 +1,23 @@
|
|
1
1
|
require 'nokogiri'
|
2
2
|
|
3
3
|
class Parser
|
4
|
-
|
5
4
|
META_REGEX = /^([a-zA-Z]{1,4}+\.[ ]{1,2})+/
|
6
5
|
|
7
|
-
def initialize(rae_data,
|
6
|
+
def initialize(rae_data, _word)
|
8
7
|
@doc = Nokogiri::HTML(rae_data)
|
9
8
|
end
|
10
9
|
|
11
10
|
def parse
|
12
11
|
if valid?
|
13
12
|
{
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
13
|
+
status: 'success',
|
14
|
+
type: single? ? 'single' : 'multiple',
|
15
|
+
response: parse_single
|
17
16
|
}
|
18
17
|
else
|
19
18
|
{
|
20
|
-
:
|
21
|
-
:
|
19
|
+
status: 'error',
|
20
|
+
message: 'Word/id does not exist. Sorry.'
|
22
21
|
}
|
23
22
|
end
|
24
23
|
end
|
@@ -27,13 +26,13 @@ class Parser
|
|
27
26
|
|
28
27
|
def parse_single
|
29
28
|
response = {
|
30
|
-
:
|
31
|
-
:
|
29
|
+
core_meanings: [],
|
30
|
+
other_meanings: []
|
32
31
|
}
|
33
32
|
|
34
|
-
response[:word] = @doc.css('header')
|
35
|
-
|
36
|
-
|
33
|
+
response[:word] = @doc.css('header')
|
34
|
+
.inner_text.sub('.', '')
|
35
|
+
.capitalize!
|
37
36
|
|
38
37
|
@doc.css('body > div > article > p').each_with_index do |entry, index|
|
39
38
|
if index.zero?
|
@@ -42,7 +41,7 @@ class Parser
|
|
42
41
|
elsif entry['class'] =~ /j[0-9]*/
|
43
42
|
# Parsing first meaning
|
44
43
|
response[:core_meanings] << metadata(entry.inner_text)
|
45
|
-
elsif entry['class'] == 'm' || entry['class']
|
44
|
+
elsif entry['class'] == 'm' || entry['class'] =~ /k[0-9]*/
|
46
45
|
# Parsing other meanings
|
47
46
|
# k: expression with 1 element
|
48
47
|
# m: is the meaning with >= elements
|
@@ -54,7 +53,7 @@ class Parser
|
|
54
53
|
clean! response
|
55
54
|
end
|
56
55
|
|
57
|
-
def clean!
|
56
|
+
def clean!(response)
|
58
57
|
parsed_meanings = []
|
59
58
|
state = :EXPR
|
60
59
|
temp = nil
|
@@ -62,12 +61,10 @@ class Parser
|
|
62
61
|
response[:other_meanings].each do |type, text|
|
63
62
|
state = :EXPR if type == :expression
|
64
63
|
if state == :EXPR
|
65
|
-
unless temp.nil?
|
66
|
-
parsed_meanings << temp
|
67
|
-
end
|
64
|
+
parsed_meanings << temp unless temp.nil?
|
68
65
|
temp = {
|
69
|
-
:
|
70
|
-
:
|
66
|
+
expression: text,
|
67
|
+
meanings: []
|
71
68
|
}
|
72
69
|
state = :MEAN
|
73
70
|
elsif state == :MEAN
|
@@ -87,13 +84,13 @@ class Parser
|
|
87
84
|
!@doc.css('article').length.zero? # delete_pending?
|
88
85
|
end
|
89
86
|
|
90
|
-
def metadata
|
87
|
+
def metadata(text)
|
91
88
|
# TODO
|
92
89
|
# The idea would be to split the text in metadata
|
93
90
|
# and real text. It's seems quite tricky.
|
94
91
|
{
|
95
|
-
:
|
96
|
-
:
|
92
|
+
meaning: text,
|
93
|
+
meta: nil
|
97
94
|
}
|
98
95
|
end
|
99
96
|
|
data/lib/nebrija/rae.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'cgi'
|
2
|
+
require 'net/http'
|
3
3
|
|
4
4
|
class Rae
|
5
|
-
SEARCH_URL
|
6
|
-
|
5
|
+
SEARCH_URL = 'http://dle.rae.es/srv/fetch'.freeze
|
6
|
+
# rubocop:disable LineLength
|
7
|
+
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'.freeze
|
8
|
+
OPEN_TIMEOUT = 2
|
9
|
+
READ_TIMEOUT = 3
|
7
10
|
|
8
11
|
def search(word)
|
9
12
|
Parser.new(query(word), word).parse
|
@@ -12,18 +15,15 @@ class Rae
|
|
12
15
|
private
|
13
16
|
|
14
17
|
def query(word)
|
15
|
-
|
16
|
-
headers = {
|
17
|
-
'User-Agent' => USER_AGENT,
|
18
|
-
'Cookie' => 'TS017111a7=017ccc203c0b977befd5d97f3b75b80f201991f161b0d246f45e53dac0967ac4e4acfd7161'
|
19
|
-
}
|
18
|
+
uri = URI "#{SEARCH_URL}?w=#{CGI.escape(word)}".encode('iso-8859-1')
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
accept_encoding: 'gzip',
|
25
|
-
)
|
20
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
21
|
+
http.open_timeout = OPEN_TIMEOUT
|
22
|
+
http.read_timeout = READ_TIMEOUT
|
26
23
|
|
27
|
-
|
24
|
+
request = Net::HTTP::Get.new uri
|
25
|
+
response = http.request request
|
26
|
+
response.body
|
27
|
+
end
|
28
28
|
end
|
29
29
|
end
|
data/lib/nebrija/version.rb
CHANGED
data/nebrija.gemspec
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH << 'lib' && require('nebrija/version')
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'nebrija'
|
5
5
|
s.version = Nebrija::VERSION
|
6
6
|
s.executables << 'nebrija'
|
7
7
|
|
8
|
-
s.authors = ['
|
8
|
+
s.authors = ['javierhonduco']
|
9
9
|
s.date = Time.now.utc.strftime('%Y-%m-%d')
|
10
|
-
s.description = 'A gem to access the
|
10
|
+
s.description = 'A gem to access the RAE dictionary'
|
11
11
|
s.email = 'javierhonduco@gmail.com'
|
12
12
|
s.files = `git ls-files`.split($/)
|
13
13
|
s.test_files = ['test/test_rae.rb']
|
14
14
|
s.homepage = 'http://rubygems.org/gems/nebrija'
|
15
15
|
|
16
16
|
s.require_paths = ['lib']
|
17
|
-
s.summary = 'This gem
|
17
|
+
s.summary = 'This gem makes easy accessing RAE webpage in a programmatic way'
|
18
18
|
|
19
|
-
s.add_dependency('nokogiri')
|
20
|
-
s.add_dependency('typhoeus', '~> 0')
|
19
|
+
s.add_dependency('nokogiri', '~> 1.6.8')
|
21
20
|
|
22
|
-
s.add_development_dependency('rake', '~>
|
23
|
-
s.add_development_dependency('
|
24
|
-
s.add_development_dependency('
|
21
|
+
s.add_development_dependency('rake', '~> 11.2.2')
|
22
|
+
s.add_development_dependency('webmock', '~> 2.1.0')
|
23
|
+
s.add_development_dependency('minitest', '~> 5.9.0')
|
24
|
+
s.add_development_dependency('rubocop', '~> 0.41.1')
|
25
25
|
|
26
26
|
s.license = 'MIT'
|
27
27
|
end
|
data/test/test_helper.rb
CHANGED
data/test/test_rae.rb
CHANGED
@@ -1,18 +1,29 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class TestRae < Minitest::Test
|
4
|
+
def test_cli_basic
|
5
|
+
word = 'amor'
|
6
|
+
stub_request(:get, "#{Rae::SEARCH_URL}?w=#{word}")
|
7
|
+
.to_return(status: 200, body: mock('single'))
|
8
|
+
|
9
|
+
out, = capture_io do
|
10
|
+
Nebrija.cli(word)
|
11
|
+
end
|
12
|
+
|
13
|
+
assert_match mock_cli.gsub(/\s+/, ''), out.gsub(/\s+/, '')
|
14
|
+
end
|
4
15
|
|
5
16
|
def test_error_basic
|
6
|
-
stub_request(:get, "#{Rae::SEARCH_URL}?w=wadus")
|
7
|
-
to_return(:
|
17
|
+
stub_request(:get, "#{Rae::SEARCH_URL}?w=wadus")
|
18
|
+
.to_return(status: 200, body: mock('error'))
|
8
19
|
|
9
20
|
search = Rae.new.search('wadus')
|
10
21
|
assert_equal search[:status], 'error'
|
11
22
|
end
|
12
23
|
|
13
24
|
def test_single_basic
|
14
|
-
stub_request(:get, "#{Rae::SEARCH_URL}?w=amor")
|
15
|
-
to_return(:
|
25
|
+
stub_request(:get, "#{Rae::SEARCH_URL}?w=amor")
|
26
|
+
.to_return(status: 200, body: mock('single'))
|
16
27
|
|
17
28
|
search = Rae.new.search('amor')
|
18
29
|
assert_equal 'success', search[:status]
|
@@ -23,8 +34,8 @@ class TestRae < Minitest::Test
|
|
23
34
|
end
|
24
35
|
|
25
36
|
def test_multiple_basic
|
26
|
-
stub_request(:get, "#{Rae::SEARCH_URL}?w=banco")
|
27
|
-
to_return(:
|
37
|
+
stub_request(:get, "#{Rae::SEARCH_URL}?w=banco")
|
38
|
+
.to_return(status: 200, body: mock('multiple'))
|
28
39
|
|
29
40
|
search = Rae.new.search('banco')
|
30
41
|
assert_equal 'success', search[:status]
|
@@ -39,4 +50,10 @@ class TestRae < Minitest::Test
|
|
39
50
|
def mock(mock_name)
|
40
51
|
File.read("#{File.expand_path(File.dirname(__FILE__))}/mocks/#{mock_name}.html")
|
41
52
|
end
|
53
|
+
|
54
|
+
def mock_cli
|
55
|
+
# rubocop:disable LineLength
|
56
|
+
'Sentimiento hacia otra persona que naturalmente nos atrae y que, procurando reciprocidad en el deseo de unión, nos completa, alegra y da energía para convivir, comunicarnos y crear
|
57
|
+
'
|
58
|
+
end
|
42
59
|
end
|
metadata
CHANGED
@@ -1,92 +1,86 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nebrija
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- javierhonduco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.6.8
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.6.8
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: 11.2.2
|
34
|
+
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 11.2.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: webmock
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.1.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: minitest
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 5.9.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 5.9.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rubocop
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 1.18.0
|
75
|
+
version: 0.41.1
|
79
76
|
type: :development
|
80
77
|
prerelease: false
|
81
78
|
version_requirements: !ruby/object:Gem::Requirement
|
82
79
|
requirements:
|
83
80
|
- - "~>"
|
84
81
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
86
|
-
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: 1.18.0
|
89
|
-
description: A gem to access the rae dictionary
|
82
|
+
version: 0.41.1
|
83
|
+
description: A gem to access the RAE dictionary
|
90
84
|
email: javierhonduco@gmail.com
|
91
85
|
executables:
|
92
86
|
- nebrija
|
@@ -94,6 +88,7 @@ extensions: []
|
|
94
88
|
extra_rdoc_files: []
|
95
89
|
files:
|
96
90
|
- ".gitignore"
|
91
|
+
- ".rubocop.yml"
|
97
92
|
- ".travis.yml"
|
98
93
|
- Gemfile
|
99
94
|
- README.md
|
@@ -132,9 +127,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
127
|
version: '0'
|
133
128
|
requirements: []
|
134
129
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.
|
130
|
+
rubygems_version: 2.5.1
|
136
131
|
signing_key:
|
137
132
|
specification_version: 4
|
138
|
-
summary: This gem
|
133
|
+
summary: This gem makes easy accessing RAE webpage in a programmatic way
|
139
134
|
test_files:
|
140
135
|
- test/test_rae.rb
|