Class: RightScraper::Scanners::Base
- Inherits:
-
Object
- Object
- RightScraper::Scanners::Base
- Defined in:
- lib/right_scraper/scanners/base.rb
Overview
Base class for scanning filesystems. Subclasses should override #notice and may override #new, #begin, #end and #notice_dir.
Overriding #new is useful for getting additional arguments. Overriding #begin allows you to do processing before the scan of a given resource begins; overriding #end allows you to do processing after it completes.
Most processing will occur in #notice, which notifies you that a file has been detected, and in #notice_dir. In #notice you are handed the relative position of the file from the start of the resource; so if you were scanning /a/resource and noticed a file b/c, #notice would be called with "b/c", even though the full pathname is /a/resource/b/c. If you decide you need the actual data, #notice takes a block which will return that data to you if you yield.
In #notice_dir you are handed the relative position of a directory. The return value determines whether you find the directory worth recursing into, or not--as an example, when looking for the metadata.json file it is never necessary to descend past the topmost directory of the resource, but the same is not true when building a manifest.
Direct Known Subclasses
CookbookManifest, CookbookMetadata, CookbookS3Upload, WorkflowManifest, WorkflowMetadata, WorkflowS3Upload
Instance Method Summary (collapse)
-
- (Object) begin(resource)
Begin a scan for the given resource.
-
- (Object) end(resource)
Finish a scan for the given resource.
-
- (Object) finish
Notification that all scans for this repository have completed.
-
- (Base) initialize(options = {})
constructor
Create a new Scanner.
-
- (Object) notice(relative_position)
Notice a file during scanning.
-
- (Object) notice_dir(relative_position)
Notice a directory during scanning.
Constructor Details
- (Base) initialize(options = {})
Create a new Scanner. Recognizes options as given. Some options may be required, others optional. This class recognizes only :logger.
Options ===
:logger |
Optional. Logger currently being used |
Parameters ===
options(Hash) |
scanner options |
61 62 63 |
# File 'lib/right_scraper/scanners/base.rb', line 61 def initialize(={}) @logger = .fetch(:logger, RightScraper::Logger.new) end |
Instance Method Details
- (Object) begin(resource)
Begin a scan for the given resource.
Parameters ===
resource(RightScraper::Resource::Base) |
resource to scan |
74 75 |
# File 'lib/right_scraper/scanners/base.rb', line 74 def begin(resource) end |
- (Object) end(resource)
Finish a scan for the given resource.
Parameters ===
resource(RightScraper::Resource::Base) |
resource that just finished |
scanning
82 83 |
# File 'lib/right_scraper/scanners/base.rb', line 82 def end(resource) end |
- (Object) finish
Notification that all scans for this repository have completed.
67 68 |
# File 'lib/right_scraper/scanners/base.rb', line 67 def finish end |
- (Object) notice(relative_position)
Notice a file during scanning.
Block ===
Return the data for this file. We use a block because it may not always be necessary to read the data.
Parameters ===
relative_position(String) |
relative pathname for pathname from root of resource |
94 95 |
# File 'lib/right_scraper/scanners/base.rb', line 94 def notice(relative_position) end |
- (Object) notice_dir(relative_position)
Notice a directory during scanning. Returns true if the scanner should recurse into the directory (the default behavior)
Parameters ===
relative_position(String) |
relative pathname for the directory from root of resource |
Returns ===
Boolean |
should the scanning recurse into the directory |
106 107 108 |
# File 'lib/right_scraper/scanners/base.rb', line 106 def notice_dir(relative_position) true end |