dict 0.2.9 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.md +4 -4
- data/lib/dict/dict.rb +1 -4
- data/lib/dict/version.rb +1 -1
- data/lib/dict/wiktionary.rb +9 -11
- data/spec/dict/lib_dict_cli_runner_spec.rb +11 -11
- data/spec/dict/lib_dict_spec.rb +8 -17
- data/spec/dict/vcr_cassettes/translations_slownik_cassette.yml +564 -2470
- data/spec/dict/vcr_cassettes/wiktionary_translations_field_cassette.yml +1439 -1398
- data/spec/dict/vcr_cassettes/wiktionary_translations_samochod_cassette.yml +527 -1831
- metadata +2 -29
- data/lib/dict/dictpl.rb +0 -22
- data/spec/dict/lib_dictpl_spec.rb +0 -55
- data/spec/dict/vcr_cassettes/dictpl_examples_krowa_cassette.yml +0 -1040
- data/spec/dict/vcr_cassettes/dictpl_samochod_cassette.yml +0 -1089
- data/spec/dict/vcr_cassettes/dictpl_translations_krowa_cassette.yml +0 -1040
- data/spec/dict/vcr_cassettes/examples_krowa_cassette.yml +0 -1040
- data/spec/dict/vcr_cassettes/examples_samochod_cassette.yml +0 -1089
- data/spec/dict/vcr_cassettes/paired_value_samochod_cassette.yml +0 -1089
- data/spec/dict/vcr_cassettes/translations_krowa_cassette.yml +0 -1040
- data/spec/dict/vcr_cassettes/translations_samochod_cassette.yml +0 -1089
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -12,6 +12,8 @@ To search for `WORD`:
|
|
12
12
|
- `-t` or `--time` - used to set timeout in seconds. Default value: 300
|
13
13
|
- `-d` or `--dict` - used to select desired dictionary
|
14
14
|
- `-v` or `--version` - used to show version, authors, license
|
15
|
+
- `-c` or `--clean` - used to delete examples from translation
|
16
|
+
|
15
17
|
|
16
18
|
|
17
19
|
## People
|
@@ -28,8 +30,6 @@ To search for `WORD`:
|
|
28
30
|
- [Grzegorz Kołodziejczyk](https://github.com/grk)
|
29
31
|
- [Michał Kwiatkowski](https://github.com/mkwiatkowski)
|
30
32
|
|
31
|
-
## Made during
|
32
|
-
[Ragnarson](http://ragnarson.com/)
|
33
|
+
## Made during internship at [Ragnarson](http://ragnarson.com/)
|
33
34
|
|
34
|
-
## Hosted by
|
35
|
-
[Shelly Cloud](https://shellycloud.com/)
|
35
|
+
## Hosted by [Shelly Cloud](https://shellycloud.com/)
|
data/lib/dict/dict.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
require 'dict/wiktionary'
|
4
|
-
require 'dict/dictpl'
|
5
4
|
require "yaml"
|
6
5
|
|
7
6
|
module Dict
|
@@ -30,8 +29,6 @@ module Dict
|
|
30
29
|
case dictionary
|
31
30
|
when 'wiktionary'
|
32
31
|
Wiktionary.new(word).translate.translations
|
33
|
-
when 'dictpl'
|
34
|
-
Dictpl.new(word).translate
|
35
32
|
else Dictionary.message
|
36
33
|
end
|
37
34
|
rescue Dictionary::ConnectError
|
@@ -46,7 +43,7 @@ module Dict
|
|
46
43
|
|
47
44
|
# returns array of currently available dictionaries
|
48
45
|
def available_dictionaries
|
49
|
-
['wiktionary'
|
46
|
+
['wiktionary']
|
50
47
|
end
|
51
48
|
end
|
52
49
|
end
|
data/lib/dict/version.rb
CHANGED
data/lib/dict/wiktionary.rb
CHANGED
@@ -3,24 +3,22 @@
|
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'dict/dictionary'
|
5
5
|
|
6
|
-
WIKI_URL = 'http://en.wiktionary.org/wiki/'
|
7
|
-
|
8
6
|
module Dict
|
9
7
|
class Wiktionary < Dictionary
|
10
|
-
|
8
|
+
|
11
9
|
# Returns an Dict::Result object
|
12
10
|
def translate
|
13
11
|
translations.each { |item| @result.add_translation(@result.term, item) }
|
14
|
-
|
12
|
+
|
15
13
|
@result
|
16
|
-
end
|
17
|
-
|
14
|
+
end
|
15
|
+
|
18
16
|
def get_html(url)
|
19
17
|
Nokogiri::HTML(open(URI.encode(url)))
|
20
18
|
rescue OpenURI::HTTPError
|
21
19
|
raise Dictionary::ConnectError
|
22
20
|
end
|
23
|
-
|
21
|
+
|
24
22
|
private
|
25
23
|
def polish?(content)
|
26
24
|
! /==Polish==/i.match(content).nil?
|
@@ -30,7 +28,7 @@ module Dict
|
|
30
28
|
def translations
|
31
29
|
url_pl = "http://en.wiktionary.org/w/index.php?title=#{@word}&action=edit"
|
32
30
|
url_en = "http://pl.wiktionary.org/w/index.php?title=#{@word}&action=edit"
|
33
|
-
|
31
|
+
|
34
32
|
content_pl = get_html(url_pl).css('textarea#wpTextbox1').first
|
35
33
|
if polish?(content_pl)
|
36
34
|
extract_polish_translations(content_pl)
|
@@ -38,13 +36,13 @@ module Dict
|
|
38
36
|
extract_english_translations(get_html(url_en).css('textarea#wpTextbox1').first.content)
|
39
37
|
end
|
40
38
|
end
|
41
|
-
|
39
|
+
|
42
40
|
# Returns an array containing polish translations.
|
43
41
|
def extract_polish_translations(content)
|
44
42
|
translations = /Noun[^\{]+\{\{(?:head\|pl|pl\-noun)[^#]+#\s*\[\[([^\n]+)/.match(content)
|
45
43
|
translations = (translations && translations[1].gsub(/\[|\]/,'').split(', ')) || []
|
46
44
|
end
|
47
|
-
|
45
|
+
|
48
46
|
# Returns an array containing english translations.
|
49
47
|
def extract_english_translations(content)
|
50
48
|
translations_block = /język\s+angielski(?:.|\n)+\{\{znaczenia\}\}(.|\n)+(?:\{\{odmiana){1,}/.match(content)
|
@@ -57,7 +55,7 @@ module Dict
|
|
57
55
|
translations.delete_if(&:empty?)
|
58
56
|
translations ||= []
|
59
57
|
end
|
60
|
-
|
58
|
+
|
61
59
|
def get_examples(content, polish = true)
|
62
60
|
# todo
|
63
61
|
end
|
@@ -37,21 +37,21 @@ end
|
|
37
37
|
|
38
38
|
describe "get_translations" do
|
39
39
|
it "should return results from wiktionary and dictpl for word 'słowik'" do
|
40
|
-
VCR.use_cassette('translations_slownik_cassette') do
|
40
|
+
VCR.use_cassette('translations_slownik_cassette') do
|
41
41
|
stub_const("ARGV", ["słowik"])
|
42
42
|
runner = Dict::CLI::Runner.new
|
43
43
|
opts = runner.parse_parameters
|
44
|
-
runner.get_translations(opts, "słowik").should == {"wiktionary"=>{"słowik"=>["nightingale"]}
|
45
|
-
end
|
44
|
+
runner.get_translations(opts, "słowik").should == {"wiktionary"=>{"słowik"=>["nightingale"]}}
|
45
|
+
end
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should return results from selected dictionary for word 'słowik'" do
|
49
|
-
VCR.use_cassette('translations_slownik_cassette') do
|
50
|
-
stub_const("ARGV", ["słowik", "-d", "
|
49
|
+
VCR.use_cassette('translations_slownik_cassette') do
|
50
|
+
stub_const("ARGV", ["słowik", "-d", "wiktionary"])
|
51
51
|
runner = Dict::CLI::Runner.new
|
52
52
|
opts = runner.parse_parameters
|
53
|
-
runner.get_translations(opts, "słowik").should == {"słowik"=>["nightingale"]
|
54
|
-
end
|
53
|
+
runner.get_translations(opts, "słowik").should == {"słowik"=>["nightingale"]}
|
54
|
+
end
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should return timeout message for word słowik and -t 5" do
|
@@ -65,8 +65,8 @@ describe "get_translations" do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
describe "CLI::Runner" do
|
68
|
-
HELP_MSG = "Usage: dict WORD [OPTIONS]\nSearch WORD in dict, an open source dictionary aggregator.\n\n -h, --help Display this help message\n -t, --time Set timeout in seconds. Default: 300\n -d, --dict Select desired dictionary. Available options: wiktionary
|
69
|
-
DICT_MSG = "Missing argument. Expected: wiktionary
|
68
|
+
HELP_MSG = "Usage: dict WORD [OPTIONS]\nSearch WORD in dict, an open source dictionary aggregator.\n\n -h, --help Display this help message\n -t, --time Set timeout in seconds. Default: 300\n -d, --dict Select desired dictionary. Available options: wiktionary\n -v, --version Information about gem, authors, license\n -c, --clean Remove examples from translation"
|
69
|
+
DICT_MSG = "Missing argument. Expected: wiktionary"
|
70
70
|
TIME_MSG = "Missing argument. Expected: number of seconds"
|
71
71
|
T_MSG = "Wrong time value."
|
72
72
|
|
@@ -111,8 +111,8 @@ describe "CLI::Runner" do
|
|
111
111
|
stub_const("ARGV",["słowik","--clean"])
|
112
112
|
runner = Dict::CLI::Runner.new
|
113
113
|
opts = runner.parse_parameters
|
114
|
-
runner.clean_translation(opts, ARGV[0]).should == "słowik : nightingale
|
114
|
+
runner.clean_translation(opts, ARGV[0]).should == "słowik : nightingale"
|
115
115
|
end
|
116
116
|
|
117
|
-
|
117
|
+
|
118
118
|
end
|
data/spec/dict/lib_dict_spec.rb
CHANGED
@@ -10,19 +10,16 @@ describe Dict do
|
|
10
10
|
arr.size.should_not == 0
|
11
11
|
end
|
12
12
|
|
13
|
-
it "should return array of available services, which contains wiktionary and dictpl" do
|
14
|
-
Dict.available_dictionaries.should == ['wiktionary'
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should return hash with translations from all dictionaries" do
|
13
|
+
it "should return array of available services, which contains wiktionary and dictpl" do
|
14
|
+
Dict.available_dictionaries.should == ['wiktionary']
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return hash with translations from all dictionaries" do
|
18
18
|
wiktionary = stub(:translate => stub(:translations => {'WORD' => 'WIKTIONARY_RESULTS'}))
|
19
|
-
Dict::Wiktionary.should_receive(:new).with('WORD').and_return(wiktionary)
|
20
|
-
|
21
|
-
dictpl = stub(:translate =>{'WORD' => 'DICTPL_RESULTS'})
|
22
|
-
Dict::Dictpl.should_receive(:new).with('WORD').and_return(dictpl)
|
23
|
-
|
19
|
+
Dict::Wiktionary.should_receive(:new).with('WORD').and_return(wiktionary)
|
20
|
+
|
24
21
|
results = Dict::get_all_dictionaries_translations('WORD')
|
25
|
-
results.should == {'
|
22
|
+
results.should == {'wiktionary' => {'WORD' => 'WIKTIONARY_RESULTS'}}
|
26
23
|
end
|
27
24
|
|
28
25
|
it "should return whatever Wiktionary returns embedded in a hash" do
|
@@ -30,10 +27,4 @@ describe Dict do
|
|
30
27
|
Dict::Wiktionary.should_receive(:new).with('WORD').and_return(wiktionary)
|
31
28
|
Dict.get_single_dictionary_translations('WORD', 'wiktionary').should == 'WIKTIONARY_RESULTS'
|
32
29
|
end
|
33
|
-
|
34
|
-
it "should return whatever Dictpl returns embedded in a hash" do
|
35
|
-
dictpl = stub(:translate => 'DICTPL_RESULTS')
|
36
|
-
Dict::Dictpl.should_receive(:new).with('WORD').and_return(dictpl)
|
37
|
-
Dict.get_single_dictionary_translations('WORD', 'dictpl').should == 'DICTPL_RESULTS'
|
38
|
-
end
|
39
30
|
end
|