rgr 0.0.1 → 0.0.2

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