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.
- data/lib/rupower/version.rb +1 -1
- data/lib/rupower.rb +15 -32
- data/test/functional/rupower_battery_test.rb +9 -2
- data/test/functional/rupower_line_ac_test.rb +1 -1
- metadata +4 -1
data/lib/rupower/version.rb
CHANGED
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.
|
35
|
-
|
36
|
-
|
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 =
|
48
|
-
res =
|
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
|
53
|
-
|
38
|
+
def symbolize_hash(hash)
|
39
|
+
hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
54
40
|
end
|
55
41
|
|
56
|
-
def
|
57
|
-
|
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]
|
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
|
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
|
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.
|
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
|