loc_counter 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/README.md +55 -0
- data/Rakefile +8 -0
- data/bin/loc_counter +52 -0
- data/lib/loc_counter.rb +8 -0
- data/lib/loc_counter/files_collection.rb +45 -0
- data/lib/loc_counter/project.rb +27 -0
- data/lib/loc_counter/source_file.rb +52 -0
- data/lib/loc_counter/version.rb +3 -0
- data/loc_counter.gemspec +26 -0
- data/spec/fixtures/test.rb +7 -0
- data/spec/loc_counter/files_collection_spec.rb +52 -0
- data/spec/loc_counter/project_spec.rb +31 -0
- data/spec/loc_counter/source_file_spec.rb +79 -0
- data/spec/loc_counter_spec.rb +5 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/support/files_collection_helpers.rb +19 -0
- metadata +143 -0
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# loc_counter
|
2
|
+
|
3
|
+
`loc_counter` is a command-line tool for measuring LOC (line-of-code) count in your Ruby project or some set of arbitrary Ruby source files.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
``` bash
|
8
|
+
gem install loc_counter
|
9
|
+
```
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
The gem install a single executable `loc_counter`.
|
14
|
+
|
15
|
+
### On a project
|
16
|
+
|
17
|
+
If you want to count LOCs in your Rails app or in a gem, you can just pass a path to that project's directory to `loc_counter`:
|
18
|
+
|
19
|
+
``` bash
|
20
|
+
$ loc_counter /path/to/project
|
21
|
+
48 files processed
|
22
|
+
Total 1826 lines
|
23
|
+
Empty 331 lines
|
24
|
+
Comments 372 lines
|
25
|
+
Code 1123 lines
|
26
|
+
```
|
27
|
+
|
28
|
+
In 'project mode' it scans `app`, `bin`, `config`, `lib` and top-level directories of your project, processing the following files:
|
29
|
+
|
30
|
+
- `Capfile`
|
31
|
+
- `Gemfile`
|
32
|
+
- `Rakefile`
|
33
|
+
- `*.gemspec`
|
34
|
+
- `*.rake`
|
35
|
+
- `*.rb`
|
36
|
+
- `*` in `bin` directory
|
37
|
+
|
38
|
+
### On arbitrary files
|
39
|
+
|
40
|
+
You can also give `loc_counter` any files you want to measure.
|
41
|
+
|
42
|
+
``` bash
|
43
|
+
$ loc_counter ~/*.rb
|
44
|
+
5 files processed
|
45
|
+
Total 118 lines
|
46
|
+
Empty 27 lines
|
47
|
+
Comments 4 lines
|
48
|
+
Code 87 lines
|
49
|
+
```
|
50
|
+
|
51
|
+
## Contributing
|
52
|
+
|
53
|
+
If you want to contribute to the project, fork the repository, push your changes to a topic branch and send me a pull request.
|
54
|
+
|
55
|
+
`loc_counter` is tested under MRI `1.8.7`, `1.9.2` and `1.9.3`. If something is working incorrectly or not working at all in one of these environments, this should be considered a bug. Any bug reports are welcome at Github issues.
|
data/Rakefile
ADDED
data/bin/loc_counter
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'thor/group'
|
4
|
+
require 'active_support/inflector'
|
5
|
+
require 'loc_counter'
|
6
|
+
|
7
|
+
module LOCCounter
|
8
|
+
class CLI < Thor::Group
|
9
|
+
include Thor::Actions
|
10
|
+
|
11
|
+
desc 'Scans the project or individual files for Ruby source files and outputs LOC counts.'
|
12
|
+
argument :paths, :type => :array
|
13
|
+
def project
|
14
|
+
if paths.empty?
|
15
|
+
# no arguments received
|
16
|
+
say 'No path was given'
|
17
|
+
elsif paths.count == 1 && File.directory?(paths.first)
|
18
|
+
# received one argument which is a directory path
|
19
|
+
print_results LOCCounter::Project.new(paths.first).counts
|
20
|
+
else
|
21
|
+
# received one or more file paths
|
22
|
+
print_results LOCCounter::FilesCollection.new(paths).counts
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.banner
|
27
|
+
"loc_counter /path/to/project # scan the whole project\n" +
|
28
|
+
" or\n" +
|
29
|
+
" loc_counter /some/filename/mask/**/*.rb # scan only specified files"
|
30
|
+
end
|
31
|
+
private
|
32
|
+
def print_results(counts)
|
33
|
+
# '46 files processed'
|
34
|
+
say pluralized_noun(counts.delete(:files), 'file') + ' processed'
|
35
|
+
|
36
|
+
results = counts.map do |type, count|
|
37
|
+
type = type.to_s.capitalize
|
38
|
+
count = pluralized_noun(count, 'line')
|
39
|
+
[type, count]
|
40
|
+
end
|
41
|
+
|
42
|
+
print_table(results)
|
43
|
+
end
|
44
|
+
|
45
|
+
# pluralized_noun(53, 'octopus') # => '53 octopi'
|
46
|
+
def pluralized_noun(number, noun)
|
47
|
+
"#{number} #{noun.pluralize(number)}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
LOCCounter::CLI.start
|
data/lib/loc_counter.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module LOCCounter
|
2
|
+
# A class representing a collection of arbitrary files.
|
3
|
+
class FilesCollection
|
4
|
+
# All parsed files in the collection.
|
5
|
+
# @return [Array]
|
6
|
+
attr_reader :files
|
7
|
+
|
8
|
+
# Regexp for Ruby source file paths
|
9
|
+
RUBY_FILES = /((Cap|Gem|Rake)file|\.(gemspec|rake|rb)|bin\/\w+)$/
|
10
|
+
|
11
|
+
# @param [Array] file_paths Paths to files being processed
|
12
|
+
def initialize(file_paths)
|
13
|
+
@files = []
|
14
|
+
file_paths.each do |path|
|
15
|
+
@files << SourceFile.new(path) if path =~ RUBY_FILES
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Summarized line counts for all files in the collection.
|
20
|
+
# @example
|
21
|
+
# project = LOCCounter::Project.new(path)
|
22
|
+
# project.counts
|
23
|
+
# # => {
|
24
|
+
# # :total => 1606,
|
25
|
+
# # :empty => 292,
|
26
|
+
# # :comments => 360,
|
27
|
+
# # :code => 954,
|
28
|
+
# # :files => 43
|
29
|
+
# # }
|
30
|
+
# @return [ActiveSupport::OrderedHash]
|
31
|
+
# @see LOCCounter::SourceFile#counts
|
32
|
+
def counts
|
33
|
+
total_counts = ActiveSupport::OrderedHash.new
|
34
|
+
[:total, :empty, :comments, :code].each { |type| total_counts[type] = 0 }
|
35
|
+
|
36
|
+
@files.each do |file|
|
37
|
+
total_counts.keys.each do |type|
|
38
|
+
total_counts[type] += file.counts[type]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
total_counts.merge(:files => @files.count)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'active_support/ordered_hash'
|
2
|
+
module LOCCounter
|
3
|
+
# A class representing a project.
|
4
|
+
class Project < FilesCollection
|
5
|
+
# Dir.glob patterns for project source code files paths
|
6
|
+
SOURCE_FILES = [
|
7
|
+
'*.{rb,gemspec}',
|
8
|
+
'{Cap,Gem,Rake}file',
|
9
|
+
'bin/*',
|
10
|
+
'{app,config,lib}/**/*.{gemspec,rake,rb}'
|
11
|
+
]
|
12
|
+
|
13
|
+
# @param [String] dir_name Path to the project directory
|
14
|
+
def initialize(dir_name)
|
15
|
+
raise ArgumentError, "Directory '#{dir_name}' not found" unless File.exists?(dir_name)
|
16
|
+
|
17
|
+
@files = []
|
18
|
+
SOURCE_FILES.each do |pattern|
|
19
|
+
full_pattern = File.join(dir_name, pattern)
|
20
|
+
|
21
|
+
@files += Dir.glob(full_pattern).map do |filename|
|
22
|
+
SourceFile.new(filename)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module LOCCounter
|
2
|
+
# A class representing a source code file.
|
3
|
+
class SourceFile
|
4
|
+
# All lines in a file.
|
5
|
+
# @return [Array]
|
6
|
+
attr_reader :lines
|
7
|
+
|
8
|
+
# A regexp for empty lines
|
9
|
+
EMPTY_PATTERN = /^\s*$/
|
10
|
+
# A regexp for lines containing just comments
|
11
|
+
COMMENT_PATTERN = /^\s*\#.*$/
|
12
|
+
|
13
|
+
# @param [String] filename Full path to the file being processed
|
14
|
+
def initialize(filename)
|
15
|
+
raise ArgumentError, "File '#{filename}' not found" unless File.exists?(filename)
|
16
|
+
|
17
|
+
@lines = File.readlines(filename)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Line counts broken by the line type.
|
21
|
+
#
|
22
|
+
# Returns a hash with 4 elements:
|
23
|
+
# - :total is total line count
|
24
|
+
# - :empty is a number of empty lines
|
25
|
+
# - :comments is a number of lines containing only a comment
|
26
|
+
# - :code is a number of lines containing any code
|
27
|
+
# @return [Hash]
|
28
|
+
def counts
|
29
|
+
@counts ||= begin
|
30
|
+
counts = {
|
31
|
+
:total => @lines.count,
|
32
|
+
:empty => 0,
|
33
|
+
:comments => 0,
|
34
|
+
:code => 0
|
35
|
+
}
|
36
|
+
|
37
|
+
@lines.each do |line|
|
38
|
+
case line
|
39
|
+
when EMPTY_PATTERN
|
40
|
+
counts[:empty] += 1
|
41
|
+
when COMMENT_PATTERN
|
42
|
+
counts[:comments] += 1
|
43
|
+
else
|
44
|
+
counts[:code] += 1
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
counts
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/loc_counter.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
$: << File.expand_path('../lib', __FILE__)
|
3
|
+
require 'loc_counter/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'loc_counter'
|
7
|
+
s.version = LOCCounter::VERSION
|
8
|
+
s.authors = ['Vsevolod Romashov']
|
9
|
+
s.email = ['7@7vn.ru']
|
10
|
+
s.homepage = ''
|
11
|
+
s.summary = 'CLI LOC counter for a Ruby project'
|
12
|
+
s.description = 'A simple line-of-code counter for Ruby projects'
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
17
|
+
s.require_paths = ['lib']
|
18
|
+
|
19
|
+
s.add_runtime_dependency 'thor'
|
20
|
+
s.add_runtime_dependency 'activesupport', '~> 3.0'
|
21
|
+
|
22
|
+
s.add_development_dependency 'rake'
|
23
|
+
s.add_development_dependency 'pry'
|
24
|
+
s.add_development_dependency 'awesome_print'
|
25
|
+
s.add_development_dependency 'rspec'
|
26
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LOCCounter::FilesCollection do
|
4
|
+
before(:each) do
|
5
|
+
stub_files
|
6
|
+
File.stub(:exists?).and_return(true)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#initialize" do
|
10
|
+
before(:each) do
|
11
|
+
@filename1.stub(:=~).and_return(true)
|
12
|
+
@filename2.stub(:=~).and_return(false)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "puts the filtered files list to @files" do
|
16
|
+
collection = LOCCounter::FilesCollection.new(@filenames)
|
17
|
+
collection.files.should == [@file1]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#counts" do
|
22
|
+
before(:each) do
|
23
|
+
@file1_counts = {
|
24
|
+
:total => 5,
|
25
|
+
:empty => 0,
|
26
|
+
:comments => 1,
|
27
|
+
:code => 4
|
28
|
+
}
|
29
|
+
@file1.stub(:counts => @file1_counts)
|
30
|
+
|
31
|
+
@file2_counts = {
|
32
|
+
:total => 8,
|
33
|
+
:empty => 1,
|
34
|
+
:comments => 2,
|
35
|
+
:code => 5
|
36
|
+
}
|
37
|
+
@file2.stub(:counts => @file2_counts)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "sums line counts from all files and returns them in a hash" do
|
41
|
+
collection = LOCCounter::FilesCollection.new(@filenames)
|
42
|
+
collection.instance_variable_set(:@files, @files)
|
43
|
+
counts = collection.counts
|
44
|
+
|
45
|
+
counts[:total].should == @file1_counts[:total] + @file2_counts[:total]
|
46
|
+
counts[:empty].should == @file1_counts[:empty] + @file2_counts[:empty]
|
47
|
+
counts[:comments].should == @file1_counts[:comments] + @file2_counts[:comments]
|
48
|
+
counts[:code].should == @file1_counts[:code] + @file2_counts[:code]
|
49
|
+
counts[:files].should == @files.count
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LOCCounter::Project do
|
4
|
+
before(:each) do
|
5
|
+
stub_files
|
6
|
+
@dir_path = '/path/to/project'
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#initialize" do
|
10
|
+
context "with a non-existent directory" do
|
11
|
+
it "raises an ArgumentError" do
|
12
|
+
expect {
|
13
|
+
LOCCounter::Project.new('foo')
|
14
|
+
}.to raise_error(ArgumentError)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "with an existing directory" do
|
19
|
+
before(:each) do
|
20
|
+
File.stub(:exists?).and_return(true)
|
21
|
+
Dir.stub(:glob).and_return(@filenames)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "puts the files list from Dir.glob to @files" do
|
25
|
+
Dir.should_receive(:glob).with(@dir_path + '/' + LOCCounter::Project::SOURCE_FILES.first)
|
26
|
+
project = LOCCounter::Project.new(@dir_path)
|
27
|
+
project.files.should == [@file1, @file2] * LOCCounter::Project::SOURCE_FILES.count
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LOCCounter::SourceFile do
|
4
|
+
before(:each) do
|
5
|
+
path = File.expand_path('../../fixtures/test.rb', __FILE__)
|
6
|
+
@file = LOCCounter::SourceFile.new(path)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#initialize" do
|
10
|
+
before(:each) do
|
11
|
+
@filename = stub("Filename")
|
12
|
+
@lines = stub("Source lines")
|
13
|
+
File.stub(:readlines).and_return(@lines)
|
14
|
+
end
|
15
|
+
|
16
|
+
context "with a non-existent file" do
|
17
|
+
it "raises an ArgumentError" do
|
18
|
+
expect {
|
19
|
+
LOCCounter::SourceFile.new('foo')
|
20
|
+
}.to raise_error(ArgumentError)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "with an existing file" do
|
25
|
+
before(:each) do
|
26
|
+
File.stub(:exists?).and_return(true)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "puts the result of File.readlines to @lines" do
|
30
|
+
File.should_receive(:readlines).with(@filename)
|
31
|
+
file = LOCCounter::SourceFile.new(@filename)
|
32
|
+
file.lines.should == @lines
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#counts" do
|
38
|
+
before(:each) do
|
39
|
+
@counts = @file.counts
|
40
|
+
@lines = @file.lines
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "[:total]" do
|
44
|
+
it "returns total lines count" do
|
45
|
+
@counts[:total].should == @lines.count
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "[:empty]" do
|
50
|
+
it "returns a number of empty lines" do
|
51
|
+
empty_lines = @lines.find_all do |line|
|
52
|
+
line =~ LOCCounter::SourceFile::EMPTY_PATTERN
|
53
|
+
end
|
54
|
+
|
55
|
+
@counts[:empty].should == empty_lines.count
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "[:comments]" do
|
60
|
+
it "returns a number of lines containing just a comment" do
|
61
|
+
comments_lines = @lines.find_all do |line|
|
62
|
+
line =~ LOCCounter::SourceFile::COMMENT_PATTERN
|
63
|
+
end
|
64
|
+
|
65
|
+
@counts[:comments].should == comments_lines.count
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "[:code]" do
|
70
|
+
it "returns a number of lines containing any code" do
|
71
|
+
code_lines = @lines.reject do |line|
|
72
|
+
line =~ LOCCounter::SourceFile::EMPTY_PATTERN || line =~ LOCCounter::SourceFile::COMMENT_PATTERN
|
73
|
+
end
|
74
|
+
|
75
|
+
@counts[:code].should == code_lines.count
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module FilesCollectionHelpers
|
2
|
+
# setting filenames, files and LOCCounter::SourceFile.new
|
3
|
+
def stub_files
|
4
|
+
@filename1 = stub("First file name")
|
5
|
+
@filename2 = stub("Second file name")
|
6
|
+
@filenames = [@filename1, @filename2]
|
7
|
+
|
8
|
+
@file1 = stub("LOCCounter::SourceFile instance for filename1")
|
9
|
+
@file2 = stub("LOCCounter::SourceFile instance for filename2")
|
10
|
+
@files = [@file1, @file2]
|
11
|
+
|
12
|
+
LOCCounter::SourceFile.stub(:new) do |filename|
|
13
|
+
case filename
|
14
|
+
when @filename1 then @file1
|
15
|
+
when @filename2 then @file2
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: loc_counter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Vsevolod Romashov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-14 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: &70252920255280 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70252920255280
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activesupport
|
27
|
+
requirement: &70252920277240 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70252920277240
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &70252920276760 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70252920276760
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: pry
|
49
|
+
requirement: &70252920276020 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70252920276020
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: awesome_print
|
60
|
+
requirement: &70252920274440 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70252920274440
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: &70252920273520 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70252920273520
|
80
|
+
description: A simple line-of-code counter for Ruby projects
|
81
|
+
email:
|
82
|
+
- 7@7vn.ru
|
83
|
+
executables:
|
84
|
+
- loc_counter
|
85
|
+
extensions: []
|
86
|
+
extra_rdoc_files: []
|
87
|
+
files:
|
88
|
+
- .gitignore
|
89
|
+
- Gemfile
|
90
|
+
- README.md
|
91
|
+
- Rakefile
|
92
|
+
- bin/loc_counter
|
93
|
+
- lib/loc_counter.rb
|
94
|
+
- lib/loc_counter/files_collection.rb
|
95
|
+
- lib/loc_counter/project.rb
|
96
|
+
- lib/loc_counter/source_file.rb
|
97
|
+
- lib/loc_counter/version.rb
|
98
|
+
- loc_counter.gemspec
|
99
|
+
- spec/fixtures/test.rb
|
100
|
+
- spec/loc_counter/files_collection_spec.rb
|
101
|
+
- spec/loc_counter/project_spec.rb
|
102
|
+
- spec/loc_counter/source_file_spec.rb
|
103
|
+
- spec/loc_counter_spec.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
- spec/support/files_collection_helpers.rb
|
106
|
+
homepage: ''
|
107
|
+
licenses: []
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
segments:
|
119
|
+
- 0
|
120
|
+
hash: 2459367167302849776
|
121
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
segments:
|
128
|
+
- 0
|
129
|
+
hash: 2459367167302849776
|
130
|
+
requirements: []
|
131
|
+
rubyforge_project:
|
132
|
+
rubygems_version: 1.8.10
|
133
|
+
signing_key:
|
134
|
+
specification_version: 3
|
135
|
+
summary: CLI LOC counter for a Ruby project
|
136
|
+
test_files:
|
137
|
+
- spec/fixtures/test.rb
|
138
|
+
- spec/loc_counter/files_collection_spec.rb
|
139
|
+
- spec/loc_counter/project_spec.rb
|
140
|
+
- spec/loc_counter/source_file_spec.rb
|
141
|
+
- spec/loc_counter_spec.rb
|
142
|
+
- spec/spec_helper.rb
|
143
|
+
- spec/support/files_collection_helpers.rb
|