Class: Count

Inherits:
Object
  • Object
show all
Defined in:
lib/count.rb

Constant Summary collapse

LANG =
{
	:cpp   =>"C++ Source",
	:c     =>"C Source",
	:cs    =>"C# ",
	:h     =>"C/C++ Header",
	:hs    =>"Haskell",
	:java  =>"Java",
	:js    =>"JavaScript",
	:m     =>"Objective C",
	:php   =>"PHP",
	:py    =>"Python",
	:rb    =>"Ruby",
	:scala =>"Scala",
	:sh    =>"Shell",
	:sml   =>"Stand ML",	
	:coffee =>"CoffeeScript",
	:scss  => "Scss",
	:erb   => "Erb Templete",
	:haml  => "Haml Templete",
	:slim  => "Slim Templete",
	:less  => "Less",
	:txt   => "txt"
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#countObject

Returns the value of attribute count.



9
10
11
# File 'lib/count.rb', line 9

def count
  @count
end

Class Method Details

.count(dir) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/count.rb', line 61

def self.count(dir)

	number = Hash.new

	Find.find(File.expand_path(dir)).each do |file|
		if File.file?(file) 
			ext = File.extname(file)[1..-1]
			if ext 
				lang = ext.to_sym
				if LANG.key?(lang)
					num = count_file(file)
					if !number.key? lang 	
						number[lang] = [0,0]
					end 
					number[lang][0] += num[0]
					number[lang][1] += num[1]
				end
			end
		end
	end

	
	total = 0
	total_pure = 0

	putsline
	puts "        Lang       count   count(no comments)".blue
	putsline
	number.each do |lang, numberber|
		str = "%12s %10d %10d" %  [LANG[lang] , numberber[0], numberber[1]]
		puts str.green
		total += number[lang][0]
		total_pure += number[lang][1]
	end
	putsline
	puts ("%12s %10d %10d" %  ["Total", total, total_pure]).blue
	putsline
end

.count_file(file) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/count.rb', line 36

def self.count_file(file)
	count = 0
	comment = 0
	open(file) do |file|
		while line = file.gets 
			count = count + 1

			begin
				line.strip!
			rescue => e
				p e
			end

			if line.index("//") == 0 || line.index("#") == 0 || line.index('/*') == 0 || line.index('*')
				comment += 1
			end
		end
	end
	[count, count - comment]
end

.putslineObject



57
58
59
# File 'lib/count.rb', line 57

def self.putsline 
	puts ("=" * 50).yellow
end