lib/fasterer/github/gh_traverser.rb in fasterer-github-0.1.1 vs lib/fasterer/github/gh_traverser.rb in fasterer-github-0.2.0
- old
+ new
@@ -1,14 +1,15 @@
require_relative 'api_wrapper'
module Fasterer
module Github
class GhTraverser
- def initialize(owner, repo, path)
+ def initialize(owner, repo, path, ignored_paths)
@owner = owner
@repo = repo
@path = path.to_s
+ @ignored_paths = ignored_paths.map { |i| i.chomp("/") }
end
def traverse
catch(:rate_limit) { collect_data(path) }
end
@@ -21,11 +22,11 @@
@api_errors ||= []
end
private
- attr_reader :owner, :repo, :path
+ attr_reader :owner, :repo, :path, :ignored_paths
def wrapper
@wrapper ||= Fasterer::Github::ApiWrapper.new(owner, repo)
end
@@ -33,14 +34,17 @@
response = wrapper.contents(path)
return store_api_error(response, path) unless response.code < 400
parsed_response = response.parsed_response
if parsed_response.is_a?(Hash)
- return unless match_regex?(parsed_response['path'])
store_data(parsed_response)
else
- parsed_response.each { |item| collect_data(item['path']) }
+ parsed_response.each do |item|
+ next if ignored_paths.include?(item['path'])
+ next if item['type'] == 'file' && !ruby_file?(item['path'])
+ collect_data(item['path'])
+ end
end
end
def store_api_error(response, path)
response_code = response.code
@@ -55,11 +59,11 @@
def store_data(response)
file_data = { path: response['path'], content64: response['content'] }
collected_data << file_data
end
- def match_regex?(file_name)
- file_name =~ /(.rb)$/
+ def ruby_file?(file_name)
+ file_name =~ /\.rb$/
end
end
end
end