pagedump 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d237dc01548838acdbf7913b9b5fac0300b1e61
4
- data.tar.gz: eb81b3546ee1a91f1f330dec98ddfb02224cb7b7
3
+ metadata.gz: 9943288b16e64f01ce860e21ea2b2fe8bbea2236
4
+ data.tar.gz: 72ee28830d7a60def93b728472a18cadaf68af5f
5
5
  SHA512:
6
- metadata.gz: ce9df7137158f4df8629ef06e9e3159f72953db34c7844a9121d86c8d238f56b8dd30a88e1e8bd8f706638db9e6733ee72d81cf9bd8d39f186c39a91e5adf5fe
7
- data.tar.gz: 3a58f23282572bacf3208f93b3f2509f53c80398968a128fcbdc6492ab28f91f1af004387e01c26f98aa4843aa79be72dd058297669bfedf62ee10960ccfe505
6
+ metadata.gz: 796f81e0fa89052028e84d564486e87f7410c460fbb46f240a6b36c4378c8a63648654e7d5770edfc47b399acfe16f635c76031dfe122ee03a2efe99fd2b70f2
7
+ data.tar.gz: 78373b80f9dbca802a006bacaf5a783d74643778b0e2a19ddde1fa9b5617380b5e8578915db8837b68a0aa4b0229c8ea65c0305461488cfb7d3f9bb281ee2037
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
@@ -2,29 +2,57 @@ require 'logging'
2
2
  require 'mechanize'
3
3
  require "pagedump/version"
4
4
  require "pagedump/driver"
5
+ require "pagedump/driver_error"
5
6
 
6
7
  module Pagedump
7
8
  class << self
8
9
  def logger
9
10
  Logging.logger[Pagedump]
10
11
  end
12
+
11
13
  def load_drivers path
12
- Dir[File.join(path, "**/*.rb")].each do |p|
13
- require p
14
+ if(File.directory?(path))
15
+ Dir[File.join(path, "**/*.rb")].each do |p|
16
+ load_driver p
17
+ end
18
+ elsif(File.file? path)
19
+ load_driver path
20
+ else
21
+ raise "Not a directory: #{path}"
14
22
  end
15
23
  end
24
+
25
+ def driver_exist? driver
26
+ drivers.any?{|d| d == driver || d.name == driver}
27
+ end
28
+
29
+ def load_driver path
30
+ require path
31
+ puts "DRIVERs: #{drivers}"
32
+ drivers[-1]
33
+ end
34
+
16
35
  def register_driver driver_cls
17
- drivers[driver_cls.name] = driver_cls
36
+ unless driver_cls.is_a?(Class) && driver_cls.superclass == Pagedump::Driver
37
+ raise("Not a driver class: #{driver_cls}")
38
+ end
39
+ logger.debug "Registering driver #{driver_cls}."
40
+ drivers << driver_cls
41
+ driver_cls
18
42
  end
43
+
44
+ alias :register :register_driver
45
+
19
46
  def drivers
20
- @drivers ||= {}
47
+ @drivers ||= []
21
48
  end
22
- def driver driver_name
23
- if (cls = drivers[driver_name]).nil?
24
- raise("No such driver class: #{driver_name}")
25
- else
26
- cls.new
27
- end
49
+
50
+ def driver dr
51
+ drivers.find{|cls| c.name == dr.to_s} || raise("No such driver: #{dr}")
28
52
  end
53
+ alias :"driver[]" :driver
54
+
55
+ private
56
+
29
57
  end
30
58
  end
@@ -1,16 +1,21 @@
1
+ require 'ostruct'
2
+
1
3
  module Pagedump
2
- # WRANING !!
3
- # No Thread-Safe
4
+ # WARNING !!
5
+ # Not Thread-Safe
4
6
  class Driver
5
- attr_reader :headlines
6
-
7
7
  def self.inherited(subclass)
8
8
  Pagedump.register_driver subclass
9
- puts "New driver: #{subclass}"
10
9
  end
11
10
 
12
11
  def initialize
13
12
  @wlinks = {}
13
+ @data = {}
14
+ end
15
+
16
+ def data key, value
17
+ @data[key] ||= []
18
+ @data[key] << value
14
19
  end
15
20
 
16
21
  def link weight, href
@@ -24,7 +29,14 @@ module Pagedump
24
29
  agent = Mechanize.new
25
30
  page = agent.get(url)
26
31
  self.links page
27
- @wlinks
32
+ self.check page
33
+ result = OpenStruct.new
34
+ result.links = @wlinks
35
+ result.data = @data
36
+ result
37
+ end
38
+
39
+ def check page
28
40
  end
29
41
 
30
42
  def url
@@ -0,0 +1,5 @@
1
+ class DriverError < StandardError
2
+ def initialize(msg="Driver is out of date.")
3
+ super
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module Pagedump
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagedump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Cram
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-06 00:00:00.000000000 Z
11
+ date: 2016-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mechanize
@@ -98,6 +98,7 @@ files:
98
98
  - bin/setup
99
99
  - lib/pagedump.rb
100
100
  - lib/pagedump/driver.rb
101
+ - lib/pagedump/driver_error.rb
101
102
  - lib/pagedump/version.rb
102
103
  - pagedump.gemspec
103
104
  homepage: http://github.com/pompadour/pagedump/