mw_dictionary_api 0.1.2 → 0.1.3
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c0a032dc9f83f3f619e4634d5e490de763ce307
|
4
|
+
data.tar.gz: dc21f9e934ba63cb7c5880661640387f7c61e3c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df07b1c422d469841af3e73ed9500ab8f4791dc3d795ff9d56670b8658ad766530ee17500efd982f5ddd759055d17126665bcae03382e23e4c37734c1fc70bf3
|
7
|
+
data.tar.gz: 3cfb25667455592822ffb65cc5f6d8f536bfda9601fc945aa8b533e5bd07644666220f907f3d90ebe611ac60c7bbb58bfd297b9cf03f1f7ebb5b0122489d6a01
|
@@ -28,19 +28,31 @@ module MWDictionaryAPI
|
|
28
28
|
|
29
29
|
rule :text do |data, opts|
|
30
30
|
dt_without_vi = data[:dt].dup
|
31
|
-
dt_without_vi.css
|
32
|
-
|
31
|
+
if dt_without_vi.respond_to? :css
|
32
|
+
dt_without_vi.css("vi").remove
|
33
|
+
dt_without_vi.content.strip
|
34
|
+
else
|
35
|
+
""
|
36
|
+
end
|
33
37
|
end
|
34
38
|
|
35
39
|
rule :verbal_illustration do |data, opts|
|
36
|
-
data[:dt].
|
40
|
+
if data[:dt].respond_to? :at_css
|
41
|
+
data[:dt].at_css("vi").content if data[:dt].at_css("vi")
|
42
|
+
else
|
43
|
+
""
|
44
|
+
end
|
37
45
|
end
|
38
46
|
|
39
47
|
rule :cross_reference do |data, opts|
|
40
|
-
data[:dt].xpath
|
41
|
-
xrefs
|
48
|
+
if data[:dt].respond_to? :xpath
|
49
|
+
data[:dt].xpath("sx").inject([]) do |xrefs, sx|
|
50
|
+
xrefs << sx.content
|
51
|
+
end
|
52
|
+
else
|
53
|
+
[]
|
42
54
|
end
|
43
55
|
end
|
44
56
|
end
|
45
57
|
end
|
46
|
-
end
|
58
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
+
require 'ostruct'
|
2
3
|
|
3
4
|
module MWDictionaryAPI
|
4
5
|
module Parsers
|
@@ -38,14 +39,27 @@ module MWDictionaryAPI
|
|
38
39
|
end
|
39
40
|
|
40
41
|
rule :definitions do |data, opts|
|
41
|
-
|
42
|
-
|
43
|
-
#
|
44
|
-
|
45
|
-
|
42
|
+
nodes = data.xpath("def//sn | def//dt")
|
43
|
+
|
44
|
+
# first step we will add dummy nodes if the list of nodes is not
|
45
|
+
# strictly sn/dt pairs
|
46
|
+
nodes = add_dumy_nodes(nodes) if nodes.count % 2 != 0
|
47
|
+
|
48
|
+
# data.xpath("def//sn | def//dt")
|
49
|
+
nodes.each_slice(2).inject([]) do |definitions, nodes|
|
50
|
+
names = nodes.map { |n| n.name.to_sym }
|
51
|
+
values = nodes.map do |node|
|
52
|
+
if node.content
|
53
|
+
(node.name == 'sn') ? node.content : node
|
54
|
+
else
|
55
|
+
nil
|
56
|
+
end
|
57
|
+
end
|
58
|
+
hash = Hash[names.zip(values)]
|
46
59
|
hash[:prev_sn] = definitions[-1][:sense_number] if definitions[-1]
|
47
60
|
definitions << DefinitionParser.new(parser_options(opts)).parse(hash)
|
48
|
-
end
|
61
|
+
end
|
62
|
+
|
49
63
|
end
|
50
64
|
|
51
65
|
rule :inflections do |data, opts|
|
@@ -81,7 +95,39 @@ module MWDictionaryAPI
|
|
81
95
|
def parse_entity(data, tag)
|
82
96
|
data.at_css(tag).content if data.at_css(tag)
|
83
97
|
end
|
98
|
+
|
99
|
+
def add_dumy_nodes(nodes)
|
100
|
+
temp = []
|
101
|
+
previous_sense_number = nil
|
102
|
+
nodes.each do |node|
|
103
|
+
if temp.count == 0
|
104
|
+
if node.name != 'sn'
|
105
|
+
temp << OpenStruct.new(name: 'sn', content: '0')
|
106
|
+
previous_sense_number = '0'
|
107
|
+
else
|
108
|
+
previous_sense_number = node.content
|
109
|
+
end
|
110
|
+
temp << node
|
111
|
+
else
|
112
|
+
if temp[-1].name == 'sn'
|
113
|
+
if node.name == 'sn'
|
114
|
+
temp << OpenStruct.new(name: 'dt', content: '')
|
115
|
+
previous_sense_number = node.content
|
116
|
+
end
|
117
|
+
temp << node
|
118
|
+
else
|
119
|
+
if node.name == 'dt'
|
120
|
+
temp << OpenStruct.new(name: 'sn', content: previous_sense_number)
|
121
|
+
else
|
122
|
+
previous_sense_number = node.content
|
123
|
+
end
|
124
|
+
temp << node
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
temp
|
129
|
+
end
|
84
130
|
end
|
85
131
|
end
|
86
132
|
end
|
87
|
-
end
|
133
|
+
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mw_dictionary_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Liu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-09-02 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
19
|
version: 1.6.0
|
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
26
|
version: 1.6.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 2.14.1
|
34
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
40
|
version: 2.14.1
|
41
41
|
description: A Simple Way to Query Merriam Webster Dictionary API
|
@@ -48,10 +48,10 @@ files:
|
|
48
48
|
- lib/mw_dictionary_api/client.rb
|
49
49
|
- lib/mw_dictionary_api/memory_cache.rb
|
50
50
|
- lib/mw_dictionary_api/parsable.rb
|
51
|
-
- lib/mw_dictionary_api/result.rb
|
52
|
-
- lib/mw_dictionary_api/parsers/result_parser.rb
|
53
|
-
- lib/mw_dictionary_api/parsers/entry_parser.rb
|
54
51
|
- lib/mw_dictionary_api/parsers/definition_parser.rb
|
52
|
+
- lib/mw_dictionary_api/parsers/entry_parser.rb
|
53
|
+
- lib/mw_dictionary_api/parsers/result_parser.rb
|
54
|
+
- lib/mw_dictionary_api/result.rb
|
55
55
|
homepage: https://github.com/gniquil/mw_dictionary_api
|
56
56
|
licenses:
|
57
57
|
- MIT
|
@@ -62,17 +62,17 @@ require_paths:
|
|
62
62
|
- lib
|
63
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- -
|
65
|
+
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
|
-
- -
|
70
|
+
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '0'
|
73
73
|
requirements: []
|
74
74
|
rubyforge_project:
|
75
|
-
rubygems_version: 2.
|
75
|
+
rubygems_version: 2.2.2
|
76
76
|
signing_key:
|
77
77
|
specification_version: 4
|
78
78
|
summary: Merriam Webster Dictionary API
|