linodians 0.0.4 → 0.0.5

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: 6c5351346d7a9b25ef7bb381e92baf47f73939b3
4
- data.tar.gz: 9dd43246770b718e2330d3eb1d408c1fc52f43e8
3
+ metadata.gz: 3d6a531248da8022ba384325e7734dbd4555769e
4
+ data.tar.gz: 1c4bd9d9e663f8b4f43706b341860dbec6872e81
5
5
  SHA512:
6
- metadata.gz: 60302b7bebb1a9043b7cbf98ba8c6ea3c9891016058154eaa3fd978d9a56c97b9b255f83ca69351cf11314fa1222ec47ba22c875b9c3cb9a9f164dc7cf599735
7
- data.tar.gz: 20d13529a3c62a529d444c38f91e817da21615d502b02efc0169f2e754ba02b50d665ccb351c6ffac0a907b15a468f7046dfdb76ba9076d2ef32a694d5b7c9ba
6
+ metadata.gz: eb729ba404edf30d5aa7112e50e9acfaec9b03fd8cde588fdd880f1a35acc0b18bba9c762492af70971ec22f4251531b4e9c3d6a04f7fb8347a94776b7edefef
7
+ data.tar.gz: 08eb54c0c6bf280199ad25dd540f9c496d7849b8ff0f7e82a3485ba232872c4091d0ee45c87950d6cdad027f825936f484519b27cce6fb2ebafd76c040293db4
data/README.md CHANGED
@@ -70,6 +70,13 @@ titles = employees.map(&:title).each_with_object(Hash.new(0)) { |i, o| o[i] += 1
70
70
  titles.sort_by(&:last).each { |title, count| puts "#{count} -- #{title}" }
71
71
  ```
72
72
 
73
+ A helper ".lookup" method is provided on top of Array's usual tools, and it is a shortcut for `find { |x| x.username == username }`. As such, you can use it to look somebody up by their username:
74
+
75
+ ```
76
+ employees = Linodians.new
77
+ my_friend = employees.lookup('caker')
78
+ ```
79
+
73
80
  #### Loading in existing data
74
81
 
75
82
  If you already have a hash of data, like one created with `Linodians.new.to_json`, you can import it back in when making a new Linodians object:
@@ -79,7 +86,7 @@ require 'linodians'
79
86
  require 'json'
80
87
 
81
88
  data = File.open('data.json') { |fh| JSON.parse fh }
82
- linodians = Linodians.new(data)
89
+ employees = Linodians.new(data)
83
90
  ```
84
91
 
85
92
  ## Installation
data/lib/linodians.rb CHANGED
@@ -14,15 +14,18 @@ module Linodians
14
14
  self::Group.new(*args)
15
15
  end
16
16
 
17
+ def load_data(data = nil)
18
+ (data || download_data).map { |x| Employee.new x }
19
+ end
20
+
21
+ private
22
+
17
23
  def download_data
18
24
  Nokogiri::HTML(open(DATA_URL)).css('.employee-display').map do |block|
19
- data = parse_user(block).merge parse_social(block)
20
- Employee.new data
25
+ parse_user(block).merge parse_social(block)
21
26
  end
22
27
  end
23
28
 
24
- private
25
-
26
29
  def parse_user(block)
27
30
  {
28
31
  username: block.at_css('img')['img-name'],
@@ -1,11 +1,12 @@
1
1
  require 'open-uri'
2
+ require 'cymbal'
2
3
 
3
4
  module Linodians
4
5
  ##
5
6
  # Employee object
6
7
  class Employee
7
8
  def initialize(params = {})
8
- @raw = params
9
+ @raw = Cymbal.symbolize params
9
10
  end
10
11
 
11
12
  def photo
@@ -13,7 +14,7 @@ module Linodians
13
14
  end
14
15
 
15
16
  def [](value)
16
- @raw[value.to_sym] || @raw[value.to_s]
17
+ @raw[value.to_sym]
17
18
  end
18
19
 
19
20
  def to_json(*args, &block)
@@ -8,11 +8,15 @@ module Linodians
8
8
  alias_method :__getobj__, :members
9
9
 
10
10
  def initialize(data = nil)
11
- @members = data || Linodians.download_data
11
+ @members = Linodians.load_data(data)
12
12
  @members.freeze
13
13
  super(@members)
14
14
  end
15
15
 
16
+ def lookup(username)
17
+ find { |x| x.username == username }
18
+ end
19
+
16
20
  def __setobj__(_)
17
21
  @members
18
22
  end
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # Define the version
3
3
  module Linodians
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.5'
5
5
  end
data/linodians.gemspec CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = ['linodians']
19
19
 
20
20
  s.add_dependency 'nokogiri', '~> 1.6.5'
21
+ s.add_dependency 'cymbal', '~> 0.0.2'
21
22
 
22
23
  s.add_development_dependency 'rubocop', '~> 0.28.0'
23
24
  s.add_development_dependency 'rake', '~> 10.4.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linodians
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.6.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: cymbal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.2
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rubocop
29
43
  requirement: !ruby/object:Gem::Requirement