the_ruby_searcher 0.0.2 → 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/the_ruby_searcher.rb +34 -18
  3. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d5617747ab6615039363ec2e756b7aa0a7c2fa4
4
- data.tar.gz: c5b500b84e14a6b3d7959ab68e72142e069e0537
3
+ metadata.gz: 1af956722f6b20f177aaa3bcbe61368058be94e2
4
+ data.tar.gz: 4b21907e9c57c10c11ad60407cd36b528c267a5a
5
5
  SHA512:
6
- metadata.gz: df6abcf7418aeb9bdcb0717e1204f6e91bf1e501a9cc3587f7058ea2ce7db59511589d76d169037f83362f061a15b15a825948c7f011cbda28775190487875a1
7
- data.tar.gz: 4ba56afbaeeec03a50303371cac4b969d2e00d7655e28ef583275fc9305043adce1e15ebe1292894df76c2644c7f433e3d2e327b935f37ed952695d419784be1
6
+ metadata.gz: af080b93cd6a914400bbde4acc2b58d733cd8a08b28d2ae5d0c3451266d529575e4723a70daec99b965bafb2c3c7fa8ca9023f2dcee0dbb0d13fe7910d89537c
7
+ data.tar.gz: ee04953666c1f6bb67703b3e6ab0ebbe04506e9aea36abe9bb44cce03fc765a0f6edc6e2272dbb8d2d575efa718d02d22cd02891af33e80ec247a50002d370f2
@@ -1,32 +1,48 @@
1
- require 'open3'
1
+ module Ag
2
+ extend self
2
3
 
3
- class Rbsearcher
4
- def initialize(engine='ag')
5
- @engine = engine
4
+ def search(pattern, path, e = "ag")
5
+ engine = find_engine(e)
6
+ warn(e,engine) if e != engine
7
+ cmd = [engine, pattern, path, "-n"]
8
+ out = IO.popen(cmd).read
9
+ if out != ""
10
+ out.split("\n").map{ |l| l.split(":") }.to_h
11
+ else
12
+ raise SystemCallError, "Something went wrong, check the logs."
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def warn(e,engine)
19
+ puts "WARN: Could not find search engine: #{e}. Using #{engine}."
6
20
  end
7
21
 
8
- def check
9
- cmd = ["which", @engine].join(" ")
10
- stdout, stdeerr, status = Open3.capture3(cmd)
11
- if stdout.include? 'not found'
22
+ def check(engine)
23
+ cmd = ["which", engine].join(" ")
24
+ stdout = IO.popen(cmd).read
25
+ if stdout != "" and engines.include? engine
12
26
  return false
13
27
  else
14
28
  return true
15
29
  end
16
30
  end
17
31
 
18
- def switch(engine)
19
- @engine = engine
32
+ def engines
33
+ ["ag", "ack", "grep"]
20
34
  end
21
35
 
22
- def search(pattern, path)
23
- if not check()
24
- puts "Select Engine not exist, automatically switch to grep"
25
- @engine = 'grep'
36
+ def find_engine(e)
37
+ while check(e)
38
+ index = engines.index(e)
39
+ index = index + 1 rescue 0
40
+ if index < engines.size
41
+ e = engines[index]
42
+ else
43
+ raise ArgumentError, "Could not find any compatible search engines installed on system. Try installing Ag: https://github.com/ggreer/the_silver_searcher"
44
+ end
26
45
  end
27
- cmd = [@engine, pattern, path].join(" ")
28
- puts cmd
29
- stdout, stdeerr, status = Open3.capture3(cmd)
30
- return stdout, stdeerr, status
46
+ e
31
47
  end
32
48
  end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the_ruby_searcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roy Xue
8
+ - Landon Mossburg
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-07-12 00:00:00.000000000 Z
12
+ date: 2016-07-13 00:00:00.000000000 Z
12
13
  dependencies: []
13
- description: A Ruby Searcher
14
+ description: A Ruby Searcher bindings for ag, ack, grep and etcs.
14
15
  email: lxue@tesla.com
15
16
  executables: []
16
17
  extensions: []