rupower 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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