From: Jason Sweat Date: 2006-07-08T08:39:36+09:00 Subject: make this code more Rubyish I have the following code I pounded out today. It works, but it feels more like Perl than Ruby to me. Can anyone offer some suggestions for how to improve the readability of it? dev = /^SLOC.*(?=^Totals grouped by)/im.match(`sloccount --addlangall . 2>/dev/null`) prd = /^SLOC.*(?=^Totals grouped by)/im.match(`sloccount --addlangall $(cat .prod_dir) 2>/dev/null`) dh = {}; ph = {} dev.to_s.scan(/^(\d+)\s+(\w+)/).each { |p| dh[p[1]] = p[0] if p[0].to_i > 0 } prd.to_s.scan(/^(\d+)\s+(\w+)/).each { |p| ph[p[1]] = p[0] if p[0].to_i > 0 } df = {}; dfa = [] ph.each_pair do |k,v| dfa << diff = dh[k].to_i-v.to_i df[diff] = "#{k}\t#{v}\t#{dh[k]}\t#{diff}" end dfa.sort! {|x,y| y <=> x } puts "Dir\tProd\tDev\tDiff" dfa.each { |k| puts df[k] } The code shells out to the program sloccount (http://www.dwheeler.com/sloccount/) which produces some output which looks like this (there is more, but the chunk I am interested in is contained in this sample): Categorizing files. Computing results. SLOC Directory SLOC-by-Language (Sorted) 2606 tests php=2598,sh=8 1462 models php=1462 325 views php=325 257 actions php=257 227 top_dir php=227 84 sql sh=84 0 CVS (none) 0 img (none) 0 templates (none) 0 tutorials (none) Totals grouped by language (dominant language first): php: 4869 (98.15%) sh: 92 (1.85%) Total Physical Source Lines of Code (SLOC) = 4,961 The output my Ruby script produces looks like this: $ sloc_comp.rb Dir Prod Dev Diff sql 3474 4858 1384 top_dir 81 81 0 actions 244 241 -3 views 430 424 -6 tests 437 416 -21 models 735 618 -117 Regards, Jason http://blog.casey-sweat.us/