Class: Rush::SearchResults
- Inherits:
-
Object
- Object
- Rush::SearchResults
- Includes:
- Enumerable, Commands
- Defined in:
- lib/rush/search_results.rb
Overview
An instance of this class is returned by Rush::Commands#search. It contains both the list of entries which matched the search, as well as the raw line matches. These methods get equivalent functionality to “grep -l” and “grep -h”.
SearchResults mixes in Rush::Commands so that you can chain multiple searches or do file operations on the resulting entries.
Examples:
myproj['**/*.rb'].search(/class/).entries.size
myproj['**/*.rb'].search(/class/).lines.size
myproj['**/*.rb'].search(/class/).copy_to other_dir
Instance Attribute Summary collapse
-
#entries ⇒ Object
readonly
Returns the value of attribute entries.
-
#entries_with_lines ⇒ Object
readonly
Returns the value of attribute entries_with_lines.
-
#lines ⇒ Object
readonly
Returns the value of attribute lines.
-
#pattern ⇒ Object
readonly
Returns the value of attribute pattern.
Instance Method Summary collapse
-
#add(entry, lines) ⇒ Object
Add a Rush::Entry and the array of string matches.
- #colorize(line) ⇒ Object
- #each(&block) ⇒ Object
- #hilight ⇒ Object
-
#initialize(pattern) ⇒ SearchResults
constructor
Make a blank container.
- #lowlight ⇒ Object
- #normal ⇒ Object
Methods included from Commands
#line_count, #replace_contents!, #search
Constructor Details
#initialize(pattern) ⇒ SearchResults
Make a blank container. Track the pattern so that we can colorize the output to show what was matched.
18 19 20 21 22 23 24 25 |
# File 'lib/rush/search_results.rb', line 18 def initialize(pattern) # Duplication of data, but this lets us return everything in the exact # order it was received. @pattern = pattern @entries = [] @entries_with_lines = {} @lines = [] end |
Instance Attribute Details
#entries ⇒ Object (readonly)
Returns the value of attribute entries.
14 15 16 |
# File 'lib/rush/search_results.rb', line 14 def entries @entries end |
#entries_with_lines ⇒ Object (readonly)
Returns the value of attribute entries_with_lines.
14 15 16 |
# File 'lib/rush/search_results.rb', line 14 def entries_with_lines @entries_with_lines end |
#lines ⇒ Object (readonly)
Returns the value of attribute lines.
14 15 16 |
# File 'lib/rush/search_results.rb', line 14 def lines @lines end |
#pattern ⇒ Object (readonly)
Returns the value of attribute pattern.
14 15 16 |
# File 'lib/rush/search_results.rb', line 14 def pattern @pattern end |
Instance Method Details
#add(entry, lines) ⇒ Object
Add a Rush::Entry and the array of string matches.
28 29 30 31 32 33 |
# File 'lib/rush/search_results.rb', line 28 def add(entry, lines) # this assumes that entry is unique @entries << entry @entries_with_lines[entry] = lines @lines += lines end |
#colorize(line) ⇒ Object
43 44 45 |
# File 'lib/rush/search_results.rb', line 43 def colorize(line) lowlight + line.gsub(/(#{pattern.source})/, "#{hilight}\\1#{lowlight}") + normal end |
#each(&block) ⇒ Object
37 38 39 |
# File 'lib/rush/search_results.rb', line 37 def each(&block) @entries.each(&block) end |
#hilight ⇒ Object
47 48 49 |
# File 'lib/rush/search_results.rb', line 47 def hilight "\e[34;1m" end |
#lowlight ⇒ Object
51 52 53 |
# File 'lib/rush/search_results.rb', line 51 def lowlight "\e[37;2m" end |
#normal ⇒ Object
55 56 57 |
# File 'lib/rush/search_results.rb', line 55 def normal "\e[0m" end |