linodians 0.0.4 → 0.0.5

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.
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