Class: Kablame
- Inherits:
-
Object
- Object
- Kablame
- Defined in:
- lib/kablame.rb
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #file_format_regex ⇒ Object
- #folders ⇒ Object
-
#initialize(dirs = nil, formats = nil) ⇒ Kablame
constructor
A new instance of Kablame.
- #kablame ⇒ Object
- #print_results ⇒ Object
- #process_file(filename) ⇒ Object
Constructor Details
#initialize(dirs = nil, formats = nil) ⇒ Kablame
Returns a new instance of Kablame.
4 5 6 7 8 |
# File 'lib/kablame.rb', line 4 def initialize(dirs = nil, formats = nil) @users = {} @folders = dirs.map {|dir| dir.sub(/\/+\Z/, '') } @formats = formats || %w{rb} end |
Class Method Details
.kablame(args) ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/kablame.rb', line 56 def self.kablame(args) formats = KablameOptions.new(type).format_parse(args) targets = args if targets.nil? || targets.empty? KablameOptions.print_usage(type) exit(0) end new(targets, formats).kablame end |
Instance Method Details
#file_format_regex ⇒ Object
52 53 54 |
# File 'lib/kablame.rb', line 52 def file_format_regex %r{\.(#{@formats.join('|')})} end |
#folders ⇒ Object
48 49 50 |
# File 'lib/kablame.rb', line 48 def folders @folders end |
#kablame ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/kablame.rb', line 10 def kablame folders.each do |directory| if File.exists?(directory) puts "\nKablaming #{directory}" Dir.glob(directory+"/**/*").grep(file_format_regex).each do |filename| process_file(filename) end else puts "#{directory} not found. Skipping it!" end end unless(@users.empty?) print_results else puts "No results. Try a different directory?" end end |
#print_results ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/kablame.rb', line 38 def print_results puts "\n\n++++++++++++TOTALS++++++++++++" puts "**WINNER** #{@users.values.sort.first.name} **WINNER**" @users.values.sort.each do |user| puts user.to_s end puts "**LOSER** #{@users.values.sort.last.name} **LOSER**" unless @users.length == 1 end |
#process_file(filename) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/kablame.rb', line 28 def process_file(filename) print '.' STDOUT.flush get_blame_lines(filename).each do |line| next if line.match(blank_line_regex) name = line.match(name_match_regex)[1].strip (@users[name] ? @users[name].increment : @users[name] = KablameUser.new(name)) unless name.nil? end end |