This repository has been archived by the owner on Dec 23, 2017. It is now read-only.
/
names.rb
61 lines (54 loc) · 1.67 KB
/
names.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# ruby names.rb
# >June 19 15:17 CA/CFEFD714 php-caret [4,9,13] -> 26
# >June 29 19:05 F6/89352E7A dojo-name [0,1,3] -> 4
# Columns are: Date, Time, Folder, Name, Language, Exercise
# [Increments per avatar], Total Number of Increments, Browser
def recent(array, max_length)
len = [array.length, max_length].min
array[-len,len]
end
def avatars
%w(
alligator buffalo cheetah deer
elephant frog gorilla hippo
koala lion moose panda
raccoon snake wolf zebra
)
end
def name_or_diff_from(manifest)
manifest[:name] || "#{manifest[:diff_id]}-#{manifest[:diff_avatar]}-#{manifest[:diff_tag]}"
end
def show_one(id)
inner_dir = id[0..1]
outer_dir = id[2..9]
kata_dir = "katas/#{inner_dir}/#{outer_dir}"
manifest = eval IO.popen("cat #{kata_dir}/manifest.rb").read
created = Time.mktime(*manifest[:created])
inc_lengths = [ ]
avatars.each do |avatar|
if File.directory? kata_dir + '/' + avatar
incs = eval IO.popen("cat #{kata_dir}/#{avatar}/increments.rb").read
inc_lengths << incs.length
end
end
print created.strftime('%b %d %H:%M') +
' ' + inner_dir + '/' + outer_dir +
' ' + '{' + name_or_diff_from(manifest) + '}, ' +
' ' + manifest[:language] + ', ' +
' ' + manifest[:exercise] + ', ' +
' ' + '[' + inc_lengths.sort.join(',') + '] -> ' + inc_lengths.reduce(:+).to_s +
' ' + (manifest[:browser] || "") +
"\n"
end
index = eval IO.popen('cat katas/index.rb').read
show = (ARGV[0] || "32").to_i
recent(index,show).each do |entry|
id = entry[:id]
print "\n"
begin
show_one(id)
rescue
print "---->Exception raised for ID:#{id}, browser:#{entry[:browser]}\n"
end
end
print "\n"