darkhelmet-darkext 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/Manifest.txt +1 -0
  2. data/lib/darkext/beagle.rb +74 -0
  3. metadata +5 -2
data/Manifest.txt CHANGED
@@ -8,6 +8,7 @@ script/generate
8
8
  test/test_darkext.rb
9
9
  test/test_helper.rb
10
10
  lib/darkext/array.rb
11
+ lib/darkext/beagle.rb
11
12
  lib/darkext/boolean.rb
12
13
  lib/darkext/float.rb
13
14
  lib/darkext/hash.rb
@@ -0,0 +1,74 @@
1
+ require 'darkext/io'
2
+ require 'darkext/symbol'
3
+
4
+ module Beagle
5
+ class BeagleError < RuntimeError
6
+ def initialize(msg)
7
+ super(msg)
8
+ end
9
+ end
10
+
11
+ def self.home
12
+ ENV['BEAGLE_HOME']
13
+ end
14
+
15
+ def self.home=(home)
16
+ ENV['BEAGLE_HOME'] = home
17
+ end
18
+
19
+ def self.start
20
+ raise BeagleError, "Beagle.home (BEAGLE_HOME) not set!" if home.nil?
21
+ system('beagled')
22
+ end
23
+
24
+ def self.stop
25
+ raise BeagleError, "Beagle.home (BEAGLE_HOME) not set!" if home.nil?
26
+ system('beagle-shutdown')
27
+ end
28
+
29
+ def self.query(query, verbose = false)
30
+ raise BeagleError, "Beagle.home (BEAGLE_HOME) not set!" if home.nil?
31
+ args = Array.new
32
+ args << 'beagle-query'
33
+ args << '--verbose' if verbose
34
+ args << query
35
+ output = DarkIO.capture_output(:stderr => false) { system(*args) }
36
+ parser = verbose ? verbose_parser : regular_parser
37
+ parser.call(output)
38
+ end
39
+
40
+ private
41
+
42
+ def self.verbose_parser
43
+ lambda do |output|
44
+ lines = output.split("\n")
45
+ 2.times do
46
+ lines.shift
47
+ lines.pop
48
+ end
49
+ sections = lines.join("\n").strip.split("\n\n")
50
+ results = sections.map do |section|
51
+ section_lines = section.split("\n")
52
+ section_hash = Hash.new
53
+ section_lines.each do |line|
54
+ if line.include?('=')
55
+ k,v = line.split('=')
56
+ k = k.split(':').last
57
+ v.gsub!("'",'')
58
+ else
59
+ k,v = line.split(':')
60
+ end
61
+ section_hash[k.strip] = v.strip
62
+ end
63
+ section_hash
64
+ end
65
+ results.sort { |l,r| l['Score'] <=> r['Score'] }
66
+ end
67
+ end
68
+
69
+ def self.regular_parser
70
+ lambda do |output|
71
+ output.split("\n").map(&:strip)
72
+ end
73
+ end
74
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: darkhelmet-darkext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Huckstep
@@ -9,11 +9,12 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-11 00:00:00 -08:00
12
+ date: 2009-02-14 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: newgem
17
+ type: :development
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -23,6 +24,7 @@ dependencies:
23
24
  version:
24
25
  - !ruby/object:Gem::Dependency
25
26
  name: hoe
27
+ type: :development
26
28
  version_requirement:
27
29
  version_requirements: !ruby/object:Gem::Requirement
28
30
  requirements:
@@ -51,6 +53,7 @@ files:
51
53
  - test/test_darkext.rb
52
54
  - test/test_helper.rb
53
55
  - lib/darkext/array.rb
56
+ - lib/darkext/beagle.rb
54
57
  - lib/darkext/boolean.rb
55
58
  - lib/darkext/float.rb
56
59
  - lib/darkext/hash.rb