rupower 0.1.2 → 0.1.3

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.
@@ -1,3 +1,3 @@
1
1
  module Rupower
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
data/lib/rupower.rb CHANGED
@@ -4,13 +4,8 @@ require_relative "rupower/version"
4
4
  module Rupower
5
5
 
6
6
  module Parser
7
- VALUE = Regexp.new( /(([0-9]{1,5}([.][0-9]{1,5}){0,1}).*|((\S)+))$/ )
8
7
  TIME = Regexp.new( /\s+\([\s\w]*\)/ )
9
- NUMBER = Regexp.new( /\A[+-]?\d+?(\.\d+)?\Z/ )
10
- UNITS = Regexp.new( /(( .{1,2})|(%))$/ )
11
- AFTER_KEY = Regexp.new( /\s*:\s+[\s\S]+$/ )
12
- PARAGRAPH = Regexp.new( /^\s+/ )
13
- VALUABLE = Regexp.new( /\w+:\s+\S+/ )
8
+ NUMBER = Regexp.new(/^\d+[.]?\d*(|[%]|\s+\w+)$/) #( /\A[+-]?\d+?(\.\d+)?\Z/ )
14
9
  end
15
10
 
16
11
  class PowerDevice
@@ -26,44 +21,28 @@ module Rupower
26
21
  end
27
22
 
28
23
  private
29
- def sym_gsub( sym, before, after )
30
- sym.to_s.gsub( before, after ).to_sym
31
- end
32
-
33
24
  def get_hash
34
- @state.each_line.inject( {} ) do |hash, line|
35
- key = line.gsub( Parser::AFTER_KEY, "" ).gsub( Parser::PARAGRAPH, "" ).to_sym
36
- line[Parser::VALUABLE] ? hash.merge( key => get_value( line ) ) : hash
37
- end
38
- end
39
-
40
- def get_value( line )
41
- typize( line[Parser::VALUE].gsub( Parser::UNITS, "" ) )
25
+ state = @state.strip.split( /$/ ).map( &:strip ).reject{ |r| !r.include?( ':' ) }
26
+ state_key_value_array = state.map{ |r| r.split( ':', 2 ) }.flatten.map( &:strip )
27
+ symbolize_hash( Hash[*state_key_value_array.map{ |value| typize(value) }] )
42
28
  end
43
29
 
44
30
  def typize( value )
45
31
  res = value
46
32
  res = value[/^yes$/] ? true : false if value[/^(yes|no)$/]
47
- res = to_number( value ) if number?( value )
48
- res = to_datetime( value ) if time?( value )
33
+ res = value.to_f == value.to_i ? value.to_i : value.to_f if value[Parser::NUMBER ]
34
+ res = DateTime.parse( value ) if value.match( Parser::TIME )
49
35
  res
50
36
  end
51
37
 
52
- def time?( value )
53
- value.match( Parser::TIME )
38
+ def symbolize_hash(hash)
39
+ hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
54
40
  end
55
41
 
56
- def to_datetime( value )
57
- DateTime.parse( value )
58
- end
59
-
60
- def number?( value )
61
- value.match( Parser::NUMBER ) == nil ? false : true
42
+ def sym_gsub( sym, before, after )
43
+ sym.to_s.gsub( before, after ).to_sym
62
44
  end
63
45
 
64
- def to_number( value )
65
- value.to_f == value.to_i ? value.to_i : value.to_f
66
- end
67
46
  end
68
47
 
69
48
  class Battery < PowerDevice
@@ -86,7 +65,11 @@ module Rupower
86
65
  end
87
66
 
88
67
  def charging?
89
- get_all[:state]["discharging"] ? false : true
68
+ get_all[:state] == "charging"
69
+ end
70
+
71
+ def fully_charged?
72
+ get_all[:state] == "fully-charged"
90
73
  end
91
74
  end
92
75
 
@@ -33,7 +33,7 @@ class RupowerBatteryTest < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  def test_updated_returns_correct_value
36
- assert_equal( DateTime.parse("Sun Mar 25 20:12:15 2012"), @battery.updated )
36
+ assert_equal( DateTime.parse("Sun Mar 25 22:56:15 2012"), @battery.updated )
37
37
  end
38
38
 
39
39
  def test_has_history_returns_correct_value
@@ -60,7 +60,6 @@ class RupowerBatteryTest < Test::Unit::TestCase
60
60
  assert_equal( 62.9532, @battery.energy )
61
61
  end
62
62
 
63
-
64
63
  def test_energy_empty_returns_correct_value
65
64
  assert_equal( 0, @battery.energy_empty )
66
65
  end
@@ -93,5 +92,13 @@ class RupowerBatteryTest < Test::Unit::TestCase
93
92
  assert_equal( "lithium-ion", @battery.technology )
94
93
  end
95
94
 
95
+ def test_charging_returns_correct_value
96
+ assert_equal( false, @battery.charging? )
97
+ end
98
+
99
+ def test_fully_charged_returns_correct_value
100
+ assert_equal( true, @battery.fully_charged? )
101
+ end
102
+
96
103
 
97
104
  end
@@ -22,7 +22,7 @@ class RupowerLineAcTest < Test::Unit::TestCase
22
22
  end
23
23
 
24
24
  def test_updated_returns_correct_value
25
- assert_equal( DateTime.parse("Sat Mar 24 20:12:24 2012"), @line_ac.updated )
25
+ assert_equal( DateTime.parse("Sat Mar 24 23:47:24 2012"), @line_ac.updated )
26
26
  end
27
27
 
28
28
  def test_has_history_returns_correct_value
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rupower
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -55,6 +55,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
55
  - - ! '>='
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
+ segments:
59
+ - 0
60
+ hash: 2703598513085812831
58
61
  requirements: []
59
62
  rubyforge_project:
60
63
  rubygems_version: 1.8.17