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