treccani 0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7d2517c9785eab462b664f244046cabe5e2fde36
4
+ data.tar.gz: bbdd82433d75096bf08b957d94fea1a8a5c167fb
5
+ SHA512:
6
+ metadata.gz: 33a22fcaf20996712daeacaafbd940920395cfd59fed604addf5be87ad7ed8ea2e2aeb12851f6021dfc0bb5eeaff4fff6119369025c3577702e2c893c8c7bd77
7
+ data.tar.gz: 4bb5f8e385a8762f08d43a357d585f53c37eaf1f8d0d1d445f03f4728cea05082c704476cd2459b35620da1809264c36a9d6bc2844e950e444347e7c233e1088
@@ -0,0 +1,18 @@
1
+ #--
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #++
10
+ require 'open-uri'
11
+ require 'nokogiri'
12
+
13
+ require 'treccani/treccani'
14
+ require 'treccani/sezioni/citazione'
15
+ require 'treccani/sezioni/enciclopedia'
16
+ require 'treccani/sezioni/sinonimi'
17
+ require 'treccani/sezioni/vocabolario'
18
+ require 'treccani/utils'
@@ -0,0 +1,19 @@
1
+ #
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #
10
+
11
+ class Citazione < Treccani
12
+ def get
13
+ {}.tap { |result|
14
+ page = Nokogiri::HTML open(@server)
15
+ result[:citazione] = page.at_xpath('//p[@class="citazione"]').text.strip
16
+ result[:autore] = page.at_xpath('//p[@class="autore"]').text.strip
17
+ }
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ #
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #
10
+
11
+ class Enciclopedia < Treccani
12
+ def get(word)
13
+ page = Nokogiri::HTML open("#{@server}#{get_url(word)}")
14
+ {}.tap { |result|
15
+ page = page.xpath '//div[@class="spiega attacco"]/p'
16
+ result[:lemma] = page.shift.text.strip
17
+ result[:meanings] = page.map { |m| m.text.strip }
18
+ result[:meaning] = result[:meanings].join.strip
19
+ }
20
+ end
21
+ alias_method :find, :get
22
+
23
+ private
24
+ def get_url(word)
25
+ url = Nokogiri::HTML(open("#{@server}/enciclopedia/ricerca/#{word}/")).at_xpath('//ol[@class="listing"]/li/h2/a/@href').to_s
26
+ raise 'Term not found.' if url.empty?
27
+ url
28
+ end
29
+ end
@@ -0,0 +1,24 @@
1
+ #
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #
10
+
11
+ class Sinonimi < Treccani
12
+ def get(word)
13
+ page = Nokogiri::HTML open("#{@server}#{get_url(word)}")
14
+ page.at_xpath('//div[@class="spiega attacco"]/p').text.strip
15
+ end
16
+ alias_method :find, :get
17
+
18
+ private
19
+ def get_url(word)
20
+ url = Nokogiri::HTML(open("#{@server}/vocabolario/ricerca/#{word}/Sinonimi_e_Contrari/")).at_xpath('//li[@class="result fs"]/h2/a/@href').to_s
21
+ raise 'Term not found.' if url.empty?
22
+ url
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ #
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #
10
+
11
+ class Vocabolario < Treccani
12
+ def get(word)
13
+ {}.tap { |result|
14
+ page = Nokogiri::HTML open("#{@server}#{get_url(word)}")
15
+ wot = page.at_xpath('//div[@class="spiega attacco"]/p').to_s.split '<br><br>'
16
+ result[:lemma] = wot.shift.remove_tags[0..-4].strip
17
+ result[:meanings] = wot.join.split(/<strong>[0-9]\.<\/strong>/i).map { |m| m.remove_tags.strip }[1..-1]
18
+ }
19
+ end
20
+ alias_method :find, :get
21
+
22
+ private
23
+ def get_url(word)
24
+ url = Nokogiri::HTML(open("#{@server}/vocabolario/tag/#{word}/")).at_xpath('//li[@class="result fs"]/h2/a/@href').to_s
25
+ raise 'Term not found.' if url.empty?
26
+ url
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ #
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #
10
+
11
+ class Treccani
12
+ attr_accessor :server
13
+
14
+ def initialize(server = 'http://www.treccani.it')
15
+ @server = server
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ #
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #
10
+
11
+ class String
12
+ def remove_tags
13
+ gsub %r{</?[^>]+?>}, ''
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ #
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #
10
+
11
+ class Treccani
12
+ def self.version
13
+ '0.1'
14
+ end
15
+ end
@@ -0,0 +1,36 @@
1
+ #! /usr/bin/env ruby
2
+ require 'treccani'
3
+
4
+ describe Treccani do
5
+ it 'gets the daily quote and its author' do
6
+ expect {
7
+ trec = Treccani::Citazione.new.get
8
+ trec[:citazione].length.should > 2
9
+ trec[:autore].length.should > 2
10
+ }.to_not raise_error
11
+ end
12
+
13
+ it 'gets the lemma and the meanings of the given term from Enciclopedia' do
14
+ expect {
15
+ trec = Treccani::Enciclopedia.new.get 'insegnare'
16
+ trec[:lemma].length.should > 2
17
+ trec[:meanings].first.length.should > 2
18
+ trec[:meaning].length.should > 2
19
+ }.to_not raise_error
20
+ end
21
+
22
+ it 'gets the synonyms of the given term' do
23
+ expect {
24
+ trec = Treccani::Sinonimi.new.get 'insegnare'
25
+ trec.length.should > 2
26
+ }.to_not raise_error
27
+ end
28
+
29
+ it 'gets the lemma and the meanings of the given term from Vocabolario' do
30
+ expect {
31
+ trec = Treccani::Vocabolario.new.get 'insegnare'
32
+ trec[:lemma].length.should > 2
33
+ trec[:meanings].first.length.should > 2
34
+ }.to_not raise_error
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: treccani
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Giovanni Capuano
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: RESTful API to get the meaning and synonyms of italian all the italian
56
+ terms.
57
+ email: webmaster@giovannicapuano.net
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/treccani/sezioni/citazione.rb
63
+ - lib/treccani/sezioni/enciclopedia.rb
64
+ - lib/treccani/sezioni/sinonimi.rb
65
+ - lib/treccani/sezioni/vocabolario.rb
66
+ - lib/treccani/treccani.rb
67
+ - lib/treccani/utils.rb
68
+ - lib/treccani/version.rb
69
+ - lib/treccani.rb
70
+ - spec/treccani_spec.rb
71
+ homepage: http://www.giovannicapuano.net
72
+ licenses:
73
+ - WTFPL
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 2.0.3
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: RESTful API for Treccani.
95
+ test_files:
96
+ - spec/treccani_spec.rb