Class: Ace::Retro::Molecules::RetroScanner
- Inherits:
-
Object
- Object
- Ace::Retro::Molecules::RetroScanner
- Defined in:
- lib/ace/retro/molecules/retro_scanner.rb
Overview
Wraps DirectoryScanner for .retro.md files. Returns scan results with raw b36ts IDs (no type markers).
Instance Attribute Summary collapse
-
#last_folder_counts ⇒ Object
readonly
Returns the value of attribute last_folder_counts.
-
#last_scan_total ⇒ Object
readonly
Returns the value of attribute last_scan_total.
Instance Method Summary collapse
-
#initialize(root_dir) ⇒ RetroScanner
constructor
A new instance of RetroScanner.
-
#root_exists? ⇒ Boolean
Check if root directory exists.
-
#scan ⇒ Array<ScanResult>
Scan for all retros.
-
#scan_in_folder(folder) ⇒ Array<ScanResult>
Scan and filter by special folder or virtual filter.
Constructor Details
#initialize(root_dir) ⇒ RetroScanner
Returns a new instance of RetroScanner.
15 16 17 18 19 20 21 |
# File 'lib/ace/retro/molecules/retro_scanner.rb', line 15 def initialize(root_dir) @root_dir = root_dir @scanner = Ace::Support::Items::Molecules::DirectoryScanner.new( root_dir, file_pattern: Atoms::RetroFilePattern::FILE_GLOB ) end |
Instance Attribute Details
#last_folder_counts ⇒ Object (readonly)
Returns the value of attribute last_folder_counts.
12 13 14 |
# File 'lib/ace/retro/molecules/retro_scanner.rb', line 12 def last_folder_counts @last_folder_counts end |
#last_scan_total ⇒ Object (readonly)
Returns the value of attribute last_scan_total.
12 13 14 |
# File 'lib/ace/retro/molecules/retro_scanner.rb', line 12 def last_scan_total @last_scan_total end |
Instance Method Details
#root_exists? ⇒ Boolean
Check if root directory exists
50 51 52 |
# File 'lib/ace/retro/molecules/retro_scanner.rb', line 50 def root_exists? Dir.exist?(@root_dir) end |
#scan ⇒ Array<ScanResult>
Scan for all retros
25 26 27 |
# File 'lib/ace/retro/molecules/retro_scanner.rb', line 25 def scan @scanner.scan end |
#scan_in_folder(folder) ⇒ Array<ScanResult>
Scan and filter by special folder or virtual filter
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ace/retro/molecules/retro_scanner.rb', line 32 def scan_in_folder(folder) results = scan @last_scan_total = results.size @last_folder_counts = results.group_by(&:special_folder).transform_values(&:size) return results if folder.nil? virtual = Ace::Support::Items::Atoms::SpecialFolderDetector.virtual_filter?(folder) case virtual when :all then results when :next then results.select { |r| r.special_folder.nil? } else normalized = Ace::Support::Items::Atoms::SpecialFolderDetector.normalize(folder) results.select { |r| r.special_folder == normalized } end end |