rgr 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b6902568d4e4f4c69e9d5e5cbef2a254f5d82c9
4
- data.tar.gz: 20ad9a28fd50452d9b5b8cd455d26311df93a77d
3
+ metadata.gz: 72fbf35e650c79a99860f5cdf526c2aba2515bbc
4
+ data.tar.gz: ece6ac7f87bcd96289272757b02921117578411c
5
5
  SHA512:
6
- metadata.gz: 19ded3ab4811baeb36e2b0667f21d90f28d2c4a27e690e3abc9390bd93c375735ebf389543fc4dc2eb411ceaabdd40b6d78e606fd46720eabf4010d9ed91cd8e
7
- data.tar.gz: 27744f5225974a0a8ce71c55571d954e6c1fc9d93a4fa0af4dd2ff7f9840c8be4d16b4931fd043964fc3ed222627237082afc12e3a674d94059197162af3d01f
6
+ metadata.gz: de716f18a460e55439033308faacf768ae27b5c7b168a699f0be6210b82f3dd14f469b307b99e67a0d0b3ccd30362efb629bc712384ebff0924beb075a1cddc4
7
+ data.tar.gz: 40708c03e1997130884e9b7e33fe80227e92ded1645331e3eee9a469846e006dbda74a217a6f257f9bc1220371a949973a47e38ca9dfe7e2658d2f543d3e3e23
data/bin/rgr CHANGED
@@ -1,17 +1,31 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rgr"
3
3
 
4
- search_query = ARGV.shift or abort "Usage: rgr <search_query> <files...>"
4
+ if ARGV.empty?
5
+ abort "Usage: rgr [<options>] <search_query> <files...>"
6
+ end
5
7
 
6
8
  reporter = Rgr.reporter.new
9
+ globber = Rgr::Globber.new
7
10
 
8
- files =
9
- if ARGV.any?
10
- ARGV
11
+ loop do
12
+ case option = ARGV.shift
13
+ when "--ignore"
14
+ prefix = ARGV.shift or abort "Expected path after --ignore"
15
+ globber.ignore_prefix(prefix)
11
16
  else
12
- Dir["**/*.rb"]
17
+ # not an option, put it back
18
+ ARGV.unshift(option)
19
+ break
13
20
  end
21
+ end
22
+
23
+ search_query = ARGV.shift
24
+
25
+ ARGV.each do |path|
26
+ globber.add_path(path)
27
+ end
14
28
 
15
- Rgr.search(search_query, files).each do |file, matches|
29
+ Rgr.search(search_query, globber.each_file).each do |file, matches|
16
30
  reporter.report_file_matches(file, matches)
17
31
  end
data/lib/rgr.rb CHANGED
@@ -1,6 +1,7 @@
1
- require "rgr/searcher"
2
1
  require "rgr/coloured_reporter"
2
+ require "rgr/globber"
3
3
  require "rgr/plain_reporter"
4
+ require "rgr/searcher"
4
5
 
5
6
  module Rgr
6
7
  def self.search(search_term, files)
@@ -15,8 +15,8 @@ module Rgr
15
15
 
16
16
  matches.each do |match|
17
17
  expr = match.expression
18
- highlighted_source = highlight_source(expr.source)
19
- printf "\e[33;1m%#{line_number_places}d\e[0m: %s\n", expr.line, highlighted_source
18
+ highlighted_source = highlight_source(expr.source_line)
19
+ output.printf "\e[33;1m%#{line_number_places}d\e[0m: %s\n", expr.line, highlighted_source
20
20
  end
21
21
  end
22
22
 
@@ -0,0 +1,51 @@
1
+ module Rgr
2
+ class Globber
3
+ attr_reader :paths, :ignored_prefixes
4
+
5
+ def initialize
6
+ @paths = []
7
+ @ignored_prefixes = []
8
+ end
9
+
10
+ def add_path(path)
11
+ paths << path
12
+ end
13
+
14
+ def ignore_prefix(prefix)
15
+ ignored_prefixes << prefix
16
+ end
17
+
18
+ def each_file
19
+ return enum_for(:each_file) unless block_given?
20
+
21
+ unfiltered_files.each do |file|
22
+ next if ignored?(file)
23
+ yield file
24
+ end
25
+ end
26
+
27
+ def ignored?(file)
28
+ ignored_prefixes.any? { |prefix|
29
+ file.start_with?(prefix)
30
+ }
31
+ end
32
+
33
+ def unfiltered_files
34
+ if paths.empty?
35
+ Dir["**/*.rb"]
36
+ else
37
+ paths.flat_map { |path|
38
+ glob_path(path)
39
+ }
40
+ end
41
+ end
42
+
43
+ def glob_path(path)
44
+ if File.file?(path)
45
+ [path]
46
+ else
47
+ Dir["#{path}/**/*.rb"]
48
+ end
49
+ end
50
+ end
51
+ end
@@ -8,7 +8,7 @@ module Rgr
8
8
 
9
9
  def report_file_matches(file, matches)
10
10
  matches.each do |match|
11
- puts "#{match.expression}: #{match.expression.source}"
11
+ output.puts "#{match.expression}: #{match.expression.source}"
12
12
  end
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charlie Somerville
@@ -48,6 +48,7 @@ files:
48
48
  - bin/rgr
49
49
  - lib/rgr.rb
50
50
  - lib/rgr/coloured_reporter.rb
51
+ - lib/rgr/globber.rb
51
52
  - lib/rgr/plain_reporter.rb
52
53
  - lib/rgr/searcher.rb
53
54
  homepage: https://github.com/charliesome/rgr