ubi 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/lib/ubi.rb +4 -5
- data/lib/ubi/aranea.rb +32 -20
- data/lib/ubi/artifex.rb +14 -3
- data/lib/ubi/impero.rb +15 -1
- data/lib/ubi/memoria.rb +6 -5
- data/lib/ubi/memorias/address.rb +4 -3
- data/lib/ubi/memorias/email.rb +11 -1
- data/lib/ubi/memorias/image.rb +25 -0
- data/lib/ubi/memorias/phone.rb +6 -2
- data/lib/ubi/memorias/site.rb +18 -1
- data/lib/ubi/memorias/social.rb +1 -1
- data/lib/ubi/memorias/who.rb +1 -1
- data/lib/ubi/thema.rb +17 -13
- data/lib/ubi/version.rb +1 -1
- data/spec/spec_helper.rb +0 -1
- data/spec/ubi/aranea_spec.rb +1 -1
- data/spec/ubi/memorias/email_spec.rb +18 -0
- data/spec/ubi/memorias/phone_spec.rb +10 -14
- data/spec/ubi/memorias/site_spec.rb +3 -1
- data/spec/ubi/thema_spec.rb +1 -1
- data/ubi.gemspec +4 -1
- metadata +48 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fdab4d682e936e1a133a4dc7be3d8b8e94e5911
|
4
|
+
data.tar.gz: a159c4494b80dd627fe1e977beea018dc85dcd4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dfc19bf88633329bbe9ed38ff7181c5f9d772217319b03d4dc1c8ef8ef7bd5375590acf7ef3545ed6472d62b7a2e7b1ee1646fe1be1f1bd399db6ae90102a8f
|
7
|
+
data.tar.gz: f921d122f54a59b8997e36decfdd3072fff344d1b0d8b241fe0cd797e06427a8dbc6524d08c2ab3035ead12f9738ac0d4dbaf649663b7591d578d37791fb69cc
|
data/Rakefile
CHANGED
data/lib/ubi.rb
CHANGED
@@ -1,15 +1,14 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require 'net/http'
|
4
|
-
require 'net/https'
|
1
|
+
# require 'net/http'
|
2
|
+
# require 'net/https'
|
5
3
|
require 'uri'
|
6
|
-
require 'open-uri'
|
4
|
+
# require 'open-uri'
|
7
5
|
require 'json'
|
8
6
|
require 'phonelib'
|
9
7
|
require 'nokogiri'
|
10
8
|
require 'active_model'
|
11
9
|
require 'active_support'
|
12
10
|
require 'active_support/core_ext/hash'
|
11
|
+
require 'public_suffix'
|
13
12
|
require 'ubi/version'
|
14
13
|
|
15
14
|
# Ubiquous getters
|
data/lib/ubi/aranea.rb
CHANGED
@@ -1,42 +1,54 @@
|
|
1
|
-
require '
|
1
|
+
require 'retriever'
|
2
2
|
|
3
3
|
module Ubi
|
4
4
|
# Base for araneas (spiders)
|
5
5
|
class Aranea
|
6
6
|
OPTIONS = {
|
7
|
-
workers: 3,
|
8
7
|
user_agent: "Ubi v#{Ubi::VERSION}",
|
9
|
-
depth_limit:
|
10
|
-
|
11
|
-
#
|
8
|
+
depth_limit: 3,
|
9
|
+
logger: Logger.new(STDOUT),
|
10
|
+
# redis_options: {
|
11
|
+
# host: 'localhost',
|
12
|
+
# db: 5,
|
13
|
+
# driver: 'hiredis'
|
14
|
+
# },
|
12
15
|
}
|
13
|
-
attr_accessor :thema, :url, :datum
|
16
|
+
attr_accessor :thema, :url, :datum, :html, :text, :opts
|
14
17
|
|
15
18
|
def initialize(thema, url, opts = {})
|
16
19
|
@thema = thema
|
17
20
|
@url = url
|
18
|
-
@opts = opts
|
21
|
+
@opts = OPTIONS.merge(opts)
|
22
|
+
@datum = []
|
23
|
+
@html = []
|
24
|
+
@text = ''
|
19
25
|
end
|
20
26
|
|
21
27
|
delegate :name, to: :thema
|
22
28
|
|
23
29
|
def crawl!
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
+
@last_run = Time.now
|
31
|
+
|
32
|
+
puts "Crawler start #{name} #{url}"
|
33
|
+
Retriever::PageIterator.new(url, opts) do |page|
|
34
|
+
parse page.source
|
35
|
+
p [page.title, page.h1, page.h2]
|
30
36
|
end
|
31
37
|
end
|
32
38
|
|
33
|
-
def
|
34
|
-
|
39
|
+
def parse(chunk)
|
40
|
+
@datum << chunk
|
41
|
+
@html << Nokogiri::HTML(chunk)
|
42
|
+
@text << html.last.text
|
43
|
+
end
|
44
|
+
|
45
|
+
def work
|
46
|
+
crawl! unless @last_run
|
47
|
+
true
|
35
48
|
end
|
36
49
|
|
37
|
-
def
|
38
|
-
|
39
|
-
@datum
|
50
|
+
def to_s
|
51
|
+
"#{thema} html: #{html.size} txt: #{text.size}"
|
40
52
|
end
|
41
|
-
end
|
42
|
-
end
|
53
|
+
end # Aranea
|
54
|
+
end # Ubi
|
data/lib/ubi/artifex.rb
CHANGED
@@ -5,10 +5,11 @@ module Ubi
|
|
5
5
|
attr_accessor :thema
|
6
6
|
|
7
7
|
def initialize(query)
|
8
|
-
@thema = Thema.new(query)
|
9
|
-
start_with_search
|
10
|
-
social_search
|
8
|
+
@thema = Thema.new(query[:name], query[:urls])
|
9
|
+
query[:urls] ? fetch_pages : start_with_search
|
10
|
+
social_search if query[:mail]
|
11
11
|
other_search
|
12
|
+
do_the_twist
|
12
13
|
end
|
13
14
|
|
14
15
|
def start_with_search
|
@@ -23,6 +24,16 @@ module Ubi
|
|
23
24
|
def other_search
|
24
25
|
end
|
25
26
|
|
27
|
+
def fetch_pages
|
28
|
+
thema.araneas.each(&:work)
|
29
|
+
end
|
30
|
+
|
31
|
+
def do_the_twist
|
32
|
+
thema.araneas.each { |a| thema.try_datum(a) }
|
33
|
+
# pp thema.spec
|
34
|
+
# binding.pry if binding.respond_to?(:pry)
|
35
|
+
end
|
36
|
+
|
26
37
|
delegate :spec, to: :thema
|
27
38
|
end
|
28
39
|
end
|
data/lib/ubi/impero.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'pry'
|
2
|
+
require 'thor'
|
1
3
|
require 'paint'
|
2
4
|
|
3
5
|
module Ubi
|
@@ -14,7 +16,19 @@ module Ubi
|
|
14
16
|
LONG
|
15
17
|
option :address, type: :string # 'Subject\'s address'
|
16
18
|
def find(name)
|
17
|
-
Ubi::Artifex.new(name).spec
|
19
|
+
Ubi::Artifex.new(name: name).spec
|
20
|
+
end
|
21
|
+
|
22
|
+
# desc 'init', 'creates settings on ~'
|
23
|
+
desc 'site', 'Lookup in site'
|
24
|
+
long_desc <<-LONG
|
25
|
+
|
26
|
+
Find data on URL
|
27
|
+
|
28
|
+
LONG
|
29
|
+
option :address, type: :string # 'Subject\'s address'
|
30
|
+
def site(*url)
|
31
|
+
Ubi::Artifex.new(urls: url).spec
|
18
32
|
end
|
19
33
|
end
|
20
34
|
end
|
data/lib/ubi/memoria.rb
CHANGED
@@ -24,6 +24,11 @@ module Ubi
|
|
24
24
|
format
|
25
25
|
end
|
26
26
|
|
27
|
+
def ==(other)
|
28
|
+
return unless other.respond_to?(:text)
|
29
|
+
text == other.text
|
30
|
+
end
|
31
|
+
|
27
32
|
class << self
|
28
33
|
#
|
29
34
|
# Account for memorias
|
@@ -37,6 +42,7 @@ module Ubi
|
|
37
42
|
def extract_text(datum)
|
38
43
|
case datum
|
39
44
|
when String then datum
|
45
|
+
when Ubi::Aranea then datum.text
|
40
46
|
when Nokogiri::HTML then datum.data.text
|
41
47
|
# when PDF / DOC / IMG (tesseract it =) then datum.data.text
|
42
48
|
else fail "Can't parse `#{datum.class}`"
|
@@ -79,11 +85,6 @@ module Ubi
|
|
79
85
|
def plural
|
80
86
|
"#{key}s"
|
81
87
|
end
|
82
|
-
|
83
|
-
def ==(other)
|
84
|
-
return unless other.respond_to?(:key)
|
85
|
-
key == other.key
|
86
|
-
end
|
87
88
|
end
|
88
89
|
end
|
89
90
|
end
|
data/lib/ubi/memorias/address.rb
CHANGED
@@ -38,7 +38,8 @@ module Ubi
|
|
38
38
|
|
39
39
|
def fetch_possible
|
40
40
|
parse_zip
|
41
|
-
@region = clean.scan(/\W([A-Z]{2})\W/).first
|
41
|
+
@region = clean.scan(/\W([A-Z]{2})\W/).first
|
42
|
+
@region = @region.first if @region
|
42
43
|
@number = clean.scan(/\d+/).join(' ')
|
43
44
|
end
|
44
45
|
#
|
@@ -53,7 +54,7 @@ module Ubi
|
|
53
54
|
end
|
54
55
|
|
55
56
|
def format(location = :br)
|
56
|
-
text
|
57
|
+
text #.sub(*self.class.formats[location])
|
57
58
|
end
|
58
59
|
|
59
60
|
class << self
|
@@ -85,7 +86,7 @@ module Ubi
|
|
85
86
|
end
|
86
87
|
|
87
88
|
def regex(hint)
|
88
|
-
/((?:#{REGEXES[hint][:prefix].join('|')}).*)/i
|
89
|
+
/(\b(?:#{REGEXES[hint][:prefix].join('|')})\s.*)\b/i
|
89
90
|
end
|
90
91
|
|
91
92
|
def plural
|
data/lib/ubi/memorias/email.rb
CHANGED
@@ -2,6 +2,16 @@ module Ubi
|
|
2
2
|
module Memoria
|
3
3
|
# An Electronic Mail
|
4
4
|
class Email < Base
|
5
|
+
#
|
6
|
+
# Clean up regex on init
|
7
|
+
#
|
8
|
+
def initialize(text, _hint = nil, opts = {})
|
9
|
+
text = text.downcase.gsub(/^\(|\.$/, '')
|
10
|
+
@text = text
|
11
|
+
# @addr = text
|
12
|
+
@opts = opts
|
13
|
+
end
|
14
|
+
|
5
15
|
#
|
6
16
|
#
|
7
17
|
# Class methods
|
@@ -15,7 +25,7 @@ module Ubi
|
|
15
25
|
([a-z0-9!#$%&'*+/=?^_`{|}~-]+
|
16
26
|
(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@
|
17
27
|
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+
|
18
|
-
(?:[a-z0-9-]*[a-z0-9])?)
|
28
|
+
(?:[a-z0-9-]*[a-z0-9])?)(?:\W|\s|$)
|
19
29
|
}x
|
20
30
|
end
|
21
31
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Ubi
|
2
|
+
module Memoria
|
3
|
+
# Show me your papers!
|
4
|
+
|
5
|
+
class Image < Base
|
6
|
+
attr_reader :size
|
7
|
+
|
8
|
+
def parser
|
9
|
+
@size = []
|
10
|
+
end
|
11
|
+
#
|
12
|
+
#
|
13
|
+
# Class methods
|
14
|
+
#
|
15
|
+
class << self
|
16
|
+
#
|
17
|
+
# Email regex
|
18
|
+
#
|
19
|
+
def regex(_hint)
|
20
|
+
/\.(jpg|png|svg)$/i
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/ubi/memorias/phone.rb
CHANGED
@@ -9,16 +9,20 @@ module Ubi
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def format
|
12
|
+
number && number.e164
|
13
|
+
end
|
14
|
+
|
15
|
+
def national
|
12
16
|
number && number.national
|
13
17
|
end
|
14
18
|
|
15
|
-
def
|
19
|
+
def international
|
16
20
|
number && number.international
|
17
21
|
end
|
18
22
|
|
19
23
|
class << self
|
20
24
|
# http://rubular.com/r/tEHB6KcZzk
|
21
|
-
def regex(
|
25
|
+
def regex(_hint = nil)
|
22
26
|
/
|
23
27
|
(?:^|\s)((?:\+\(?\d{1,3}\W)?[\._\-\/\s]*
|
24
28
|
\(?\s*?\d{2,3}\s*?\)?[\._\-\/\s]*\d{3,5}
|
data/lib/ubi/memorias/site.rb
CHANGED
@@ -2,10 +2,27 @@ module Ubi
|
|
2
2
|
module Memoria
|
3
3
|
# A site, url and title?
|
4
4
|
class Site < Base
|
5
|
+
attr_accessor :link, :uri
|
6
|
+
|
7
|
+
def initialize(text, _hint = nil, opts = {})
|
8
|
+
text = text.downcase.gsub(/^\(|\.$/, '')
|
9
|
+
text = "http://#{text}" unless text =~ %r{^\w{3,5}://}
|
10
|
+
@text = text
|
11
|
+
@link = tld_parser
|
12
|
+
@opts = opts
|
13
|
+
end
|
14
|
+
|
15
|
+
def tld_parser
|
16
|
+
@uri = URI.parse(text)
|
17
|
+
@link = PublicSuffix.parse(uri.host)
|
18
|
+
rescue PublicSuffix::DomainInvalid
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
5
22
|
#
|
6
23
|
# Prefix http:// if there isn't one defined
|
7
24
|
def format
|
8
|
-
text
|
25
|
+
text
|
9
26
|
end
|
10
27
|
|
11
28
|
class << self
|
data/lib/ubi/memorias/social.rb
CHANGED
data/lib/ubi/memorias/who.rb
CHANGED
data/lib/ubi/thema.rb
CHANGED
@@ -12,6 +12,8 @@ module Ubi
|
|
12
12
|
def initialize(name, urls = [], opts = {})
|
13
13
|
@name = name
|
14
14
|
@urls = urls
|
15
|
+
@name ||= urls.first.split('.').first.gsub(%r{^\w+://}, '')
|
16
|
+
@urls = @urls.map { |url| url =~ %r{://} ? url : "http://#{url}" }
|
15
17
|
@opts = opts
|
16
18
|
@cache = Ubi.memorias.reduce({}) { |a, e| a.merge(e => opts[e]) }
|
17
19
|
reduce_names
|
@@ -22,36 +24,38 @@ module Ubi
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def reduce_names
|
27
|
+
return unless name
|
25
28
|
@ascii = name.mb_chars.downcase
|
26
29
|
@downcase = name.mb_chars.downcase
|
27
30
|
@clean = @downcase.gsub(/\W/, ' ')
|
28
31
|
end
|
29
32
|
|
33
|
+
# Define memorias on thema
|
30
34
|
Ubi.memorias.each do |memoria|
|
31
35
|
define_method memoria.plural do
|
32
|
-
instance_variable_get(
|
33
|
-
instance_variable_set(
|
36
|
+
instance_variable_get("@#{memoria.plural}") ||
|
37
|
+
instance_variable_set("@#{memoria.plural}", [])
|
34
38
|
end
|
35
39
|
end
|
36
40
|
|
37
|
-
def [](arg)
|
38
|
-
@cache[arg]
|
39
|
-
end
|
40
|
-
|
41
41
|
def spec
|
42
42
|
puts self
|
43
43
|
Ubi.memorias.each do |memoria|
|
44
|
-
|
45
|
-
puts
|
44
|
+
d = send(memoria.plural)
|
45
|
+
puts Paint["#{memoria.name} (#{d.size})", :black]
|
46
|
+
puts d
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
49
|
-
def
|
50
|
-
a = a.new(self)
|
50
|
+
def try_datum(a)
|
51
51
|
Ubi.memorias.each do |m|
|
52
|
-
|
53
|
-
|
54
|
-
puts matches
|
52
|
+
print Paint["Trying to find #{m} in page ", :green]
|
53
|
+
matches = m.parse(a)
|
54
|
+
puts Paint[matches.size, :black]
|
55
|
+
next unless matches && !matches.empty?
|
56
|
+
matches.each do |match|
|
57
|
+
send(m.plural) << match unless send(m.plural).include?(match)
|
58
|
+
end
|
55
59
|
end
|
56
60
|
end
|
57
61
|
|
data/lib/ubi/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/ubi/aranea_spec.rb
CHANGED
@@ -8,7 +8,7 @@ describe Aranea do
|
|
8
8
|
|
9
9
|
it 'should use only one url' do
|
10
10
|
aranea = Thema.new('Rock', ['r1.com', 'r2.com']).araneas.first
|
11
|
-
expect(aranea.url).to eq('r1.com')
|
11
|
+
expect(aranea.url).to eq('http://r1.com')
|
12
12
|
end
|
13
13
|
|
14
14
|
# it 'should crawl a domain VCR ruby-lang', :vcr do
|
@@ -12,6 +12,24 @@ describe Memoria::Email do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
describe 'parsed' do
|
16
|
+
def parse(site)
|
17
|
+
Memoria::Email.parse(site).first.to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'http' do
|
21
|
+
let(:parsed) { 'hoho@fubah.com' }
|
22
|
+
|
23
|
+
it { expect(parse('hoho@fubah.com')).to eq(parsed) }
|
24
|
+
it { expect(parse('hoho@fubah.com.')).to eq(parsed) }
|
25
|
+
it { expect(parse('"hoho@fubah.com"')).to eq(parsed) }
|
26
|
+
it { expect(parse('( hoho@fubah.com )')).to eq(parsed) }
|
27
|
+
it { expect(parse('(hoho@fubah.com)')).to eq(parsed) }
|
28
|
+
it { expect(parse('(hoho@fubah.com.)')).to eq(parsed) }
|
29
|
+
it { expect(parse('hoho@fubah.com/')).to eq(parsed) }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
15
33
|
describe 'valid' do
|
16
34
|
%w(
|
17
35
|
foo@foo.com
|
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Memoria::Phone do
|
4
|
+
def parse(phone)
|
5
|
+
Memoria::Phone.parse(phone).first.to_s
|
6
|
+
end
|
7
|
+
|
4
8
|
describe 'simple test' do
|
5
9
|
subject { Memoria::Phone.new('+551112345678') }
|
6
10
|
|
@@ -29,11 +33,11 @@ describe Memoria::Phone do
|
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
32
|
-
describe '
|
33
|
-
|
34
|
-
|
35
|
-
end
|
36
|
+
describe 'random tests' do
|
37
|
+
it { expect(parse('(16) 3919-0723')).to eq('+551639190723') }
|
38
|
+
end
|
36
39
|
|
40
|
+
describe 'parsed landlines' do
|
37
41
|
let(:parsed) { '+1112345678' }
|
38
42
|
|
39
43
|
load_fixture('phone.txt').each_line do |l|
|
@@ -44,11 +48,7 @@ describe Memoria::Phone do
|
|
44
48
|
end
|
45
49
|
|
46
50
|
describe 'parsed mobiles txt' do
|
47
|
-
|
48
|
-
Memoria::Phone.parse(phone).first.rfc
|
49
|
-
end
|
50
|
-
|
51
|
-
let(:parsed) { '+55 11 99814-5678' }
|
51
|
+
let(:parsed) { '+5511998145678' }
|
52
52
|
|
53
53
|
load_fixture('mobile.txt').each_line do |l|
|
54
54
|
it "Should parse phone #{l}" do
|
@@ -58,11 +58,7 @@ describe Memoria::Phone do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
describe 'parsed mobiles' do
|
61
|
-
|
62
|
-
Memoria::Phone.parse(phone).first.rfc
|
63
|
-
end
|
64
|
-
|
65
|
-
let(:parsed) { '+55 11 98234-5678' }
|
61
|
+
let(:parsed) { '+5511982345678' }
|
66
62
|
|
67
63
|
it { expect(parse('11982345678')).to eq(parsed) }
|
68
64
|
it { expect(parse('11 982345678')).to eq(parsed) }
|
@@ -8,7 +8,7 @@ describe Memoria::Site do
|
|
8
8
|
it { is_expected.to be_an Array }
|
9
9
|
|
10
10
|
it 'should have text reader method' do
|
11
|
-
expect(subject[0].text).to eq('somesite.com')
|
11
|
+
expect(subject[0].text).to eq('http://somesite.com')
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -21,6 +21,8 @@ describe Memoria::Site do
|
|
21
21
|
let(:parsed) { 'http://fubah.com' }
|
22
22
|
|
23
23
|
it { expect(parse('fubah.com')).to eq(parsed) }
|
24
|
+
it { expect(parse('fubah.com.')).to eq(parsed) }
|
25
|
+
it { expect(parse('(fubah.com.)')).to eq(parsed) }
|
24
26
|
it { expect(parse('@fubah.com')).to eq(parsed) } # 'http://@fubah.com') }
|
25
27
|
it { expect(parse('fu@fubah.com')).to eq(parsed) } # 'http://fu@fubah.com') }
|
26
28
|
it { expect(parse('http://fubah.com')).to eq(parsed) }
|
data/spec/ubi/thema_spec.rb
CHANGED
data/ubi.gemspec
CHANGED
@@ -26,9 +26,12 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_dependency 'paint'
|
27
27
|
s.add_dependency 'phonelib'
|
28
28
|
# s.add_dependency 'addressie', '~> 0.0.0'
|
29
|
-
s.add_dependency 'polipus'
|
30
29
|
s.add_dependency 'nokogiri'
|
30
|
+
s.add_dependency 'whatlanguage'
|
31
31
|
s.add_dependency 'geopolitical'
|
32
|
+
s.add_dependency 'public_suffix'
|
33
|
+
s.add_dependency 'rubyretriever'
|
34
|
+
s.add_dependency 'charlock_holmes'
|
32
35
|
|
33
36
|
s.add_development_dependency 'vcr'
|
34
37
|
s.add_development_dependency 'rspec'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ubi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcos Piccinini
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: whatlanguage
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -94,6 +94,48 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: public_suffix
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubyretriever
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: charlock_holmes
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
140
|
name: vcr
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,6 +213,7 @@ files:
|
|
171
213
|
- lib/ubi/memorias/address.rb
|
172
214
|
- lib/ubi/memorias/document.rb
|
173
215
|
- lib/ubi/memorias/email.rb
|
216
|
+
- lib/ubi/memorias/image.rb
|
174
217
|
- lib/ubi/memorias/phone.rb
|
175
218
|
- lib/ubi/memorias/site.rb
|
176
219
|
- lib/ubi/memorias/social.rb
|
@@ -212,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
255
|
version: '0'
|
213
256
|
requirements: []
|
214
257
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.4.5
|
258
|
+
rubygems_version: 2.4.5.1
|
216
259
|
signing_key:
|
217
260
|
specification_version: 4
|
218
261
|
summary: Find devices connected in LAN
|