darkhelmet-darkext 0.6.0 → 0.7.0

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