meaning 0.1.4 → 0.2.0
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 +5 -5
- data/Gemfile +0 -5
- data/bin/meaning +1 -2
- data/lib/meaning/version.rb +1 -1
- data/lib/meaning.rb +75 -57
- data/meaning.gemspec +7 -7
- metadata +14 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5064acce9ef366cad77e1bf9ba8f20889d44a27f43f177120e1da9181c6b5409
|
4
|
+
data.tar.gz: 0f2b0eea2aa74548137687fa8f2984aab1601f8b06285b525a0a60d280f8994d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86c35d51319107fdde6137f058235d22b4bfee9d87b494dc5f801c2f50754c7ef9772f4e025c5698111b6687a1ccd9a6fbde4d3df154e1c5aa26cddaa0572727
|
7
|
+
data.tar.gz: b85cc2514728e927d7853cb2bbfbd762ec3f76e263f254159ae4721eb7df41c6390f7b45ace10a2153621ab4eb662d107b6dd3217bd4a26a5d9358c8884d6432
|
data/Gemfile
CHANGED
data/bin/meaning
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
require_relative '../lib/meaning.rb'
|
4
4
|
Bin_Dependencies = ['thor','rainbow/ext/string']
|
5
5
|
Bin_Dependencies.each {|dependency| require dependency}
|
6
|
-
|
7
6
|
module Meaning
|
8
7
|
class Base < Thor
|
9
8
|
|
@@ -45,7 +44,7 @@ EOH
|
|
45
44
|
examples.each {|eg| puts "- #{eg}\n".color(:orange)}
|
46
45
|
end
|
47
46
|
end
|
48
|
-
|
49
47
|
end
|
50
48
|
end
|
51
49
|
Meaning::Base.start ARGV
|
50
|
+
|
data/lib/meaning/version.rb
CHANGED
data/lib/meaning.rb
CHANGED
@@ -1,67 +1,85 @@
|
|
1
1
|
require_relative "meaning/version"
|
2
|
-
|
3
|
-
|
2
|
+
require 'net/http'
|
3
|
+
require 'uri'
|
4
|
+
require 'nokogiri'
|
5
|
+
|
4
6
|
module Meaning
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
class MeaningLab
|
8
|
+
attr_reader :dictionary
|
9
|
+
def initialize word
|
10
|
+
word = word.dup.capitalize
|
11
|
+
@dictionary = {word: word}
|
12
|
+
define
|
13
|
+
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
15
|
+
private
|
16
|
+
def define
|
17
|
+
if get_the_content
|
18
|
+
sound
|
19
|
+
fetch_for("definitions", ".def.ddef_d")
|
20
|
+
fetch_for("examples", ".examp.dexamp .eg")
|
21
|
+
end
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
def sound
|
25
|
+
# This will get both UK and US pronunciations, you can refine as needed
|
26
|
+
@dictionary[:sound] = @doc.css(".pron.dpron").map { |el| el.text.strip }.uniq.join(" | ")
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
def sanatize text
|
30
|
+
text.gsub!(/(\t)+|(\n)+|\s{2,}|\/+|#{word.capitalize}|#{word.downcase}/,"")
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
def word
|
34
|
+
dictionary[:word]
|
35
|
+
end
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
37
|
+
def fetch_for name,css_class
|
38
|
+
elements = []
|
39
|
+
@doc.css(css_class).each do |element|
|
40
|
+
elements << sanatize_from_colon(element.text)
|
41
|
+
end
|
42
|
+
@dictionary[name.to_sym] = elements unless elements.empty?
|
43
|
+
end
|
44
|
+
|
45
|
+
def sanatize_from_colon text
|
46
|
+
text.gsub!(":",".")
|
47
|
+
text
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_the_content
|
51
|
+
load_page
|
52
|
+
begin
|
53
|
+
sound
|
54
|
+
true
|
55
|
+
rescue
|
56
|
+
@dictionary[:error] = "Not even a word"
|
57
|
+
false
|
58
|
+
end
|
59
|
+
end
|
55
60
|
|
56
|
-
|
57
|
-
|
58
|
-
|
61
|
+
def load_page
|
62
|
+
@doc ||= Nokogiri::HTML(file)
|
63
|
+
end
|
59
64
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
def file
|
66
|
+
uri = URI(api)
|
67
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
68
|
+
http.use_ssl = true
|
69
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
70
|
+
|
71
|
+
request = Net::HTTP::Get.new(uri)
|
72
|
+
request['User-Agent'] = 'Mozilla/5.0 (compatible; Meaning Gem)'
|
73
|
+
|
74
|
+
response = http.request(request)
|
75
|
+
response.body
|
76
|
+
rescue => e
|
77
|
+
@dictionary[:error] = "Network error: #{e.message}"
|
78
|
+
""
|
79
|
+
end
|
80
|
+
|
81
|
+
def api
|
82
|
+
"https://dictionary.cambridge.org/dictionary/english/#{dictionary[:word].downcase}"
|
83
|
+
end
|
84
|
+
end
|
67
85
|
end
|
data/meaning.gemspec
CHANGED
@@ -14,16 +14,16 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.homepage = "https://github.com/khaledmohammedfares/meaning"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
17
|
-
|
18
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
18
|
spec.bindir = "bin"
|
20
|
-
spec.executables = ['meaning']
|
19
|
+
spec.executables = ['meaning']
|
21
20
|
spec.require_paths = ["lib"]
|
22
21
|
|
23
|
-
spec.
|
24
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
-
spec.add_runtime_dependency "thor","~> 0.19.1"
|
26
|
-
spec.add_runtime_dependency "nokogiri","~> 1.6.7.2"
|
27
|
-
spec.add_runtime_dependency "rainbow","~> 2.1.0"
|
22
|
+
spec.required_ruby_version = '>= 2.6.0'
|
28
23
|
|
24
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
25
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
26
|
+
spec.add_runtime_dependency "thor", "~> 1.0"
|
27
|
+
spec.add_runtime_dependency "nokogiri", "~> 1.15"
|
28
|
+
spec.add_runtime_dependency "rainbow", "~> 3.0"
|
29
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meaning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Khaled0Fares
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,70 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :development
|
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: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
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
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
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: 0
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: '1.15'
|
62
62
|
type: :runtime
|
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: 1.
|
68
|
+
version: '1.15'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rainbow
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: '3.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: '3.0'
|
83
83
|
description: English Dictionary(CLI and API) based on dictionary.cambridge.org site
|
84
84
|
email:
|
85
85
|
- kfares29@gmail.com
|
@@ -111,15 +111,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
111
111
|
requirements:
|
112
112
|
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
114
|
+
version: 2.6.0
|
115
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
|
-
|
122
|
-
rubygems_version: 2.5.1
|
121
|
+
rubygems_version: 3.0.3.1
|
123
122
|
signing_key:
|
124
123
|
specification_version: 4
|
125
124
|
summary: English Dictionary(CLI and API) based on dictionary.cambridge.org
|