Module: JsxRosetta::PagesRouting::Scanner
- Defined in:
- lib/jsx_rosetta/pages_routing.rb
Overview
Scans a directory and classifies each file as a Route or Skipped.
Class Method Summary collapse
Class Method Details
.scan(dir, extensions: DEFAULT_EXTENSIONS) ⇒ Object
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
# File 'lib/jsx_rosetta/pages_routing.rb', line 254 def scan(dir, extensions: DEFAULT_EXTENSIONS) raise ArgumentError, "pages-routes: #{dir.inspect} is not a directory" unless File.directory?(dir) routes = [] skipped = [] collect_files(dir, extensions).each do |rel_path| segments = path_segments(rel_path) leaf = segments.last if (reason = SKIPPED_LEAVES[leaf]) skipped << Skipped.new(source_path: rel_path, reason: reason) elsif ERROR_PAGE_LEAVES.key?(leaf) routes << build_error_route(leaf, rel_path) elsif LAYOUT_LEAVES.key?(leaf) routes << build_layout_route(leaf, rel_path) else routes << build_route(segments, rel_path) end end [routes, skipped] end |