Class: Rails::CodeStatisticsCalculator
Do not use. This class is for internal use only.
Relationships & Source Files | |
Inherits: | Object |
Defined in: | railties/lib/rails/code_statistics_calculator.rb |
Constant Summary
-
PATTERNS =
# File 'railties/lib/rails/code_statistics_calculator.rb', line 7{ rb: { line_comment: /^\s*#/, begin_block_comment: /^=begin/, end_block_comment: /^=end/, class: /^\s*class\s+[_A-Z]/, method: /^\s*def\s+[_a-z]/, }, erb: { line_comment: %r{((^\s*<%#.*%>)|(<!--.*-->))}, }, css: { line_comment: %r{^\s*/\*.*\*/}, }, scss: { line_comment: %r{((^\s*/\*.*\*/)|(^\s*//))}, }, js: { line_comment: %r{^\s*//}, begin_block_comment: %r{^\s*/\*}, end_block_comment: %r{\*/}, method: /function(\s+[_a-zA-Z][\da-zA-Z]*)?\s*\(/, }, coffee: { line_comment: /^\s*#/, begin_block_comment: /^\s*###/, end_block_comment: /^\s*###/, class: /^\s*class\s+[_A-Z]/, method: /[-=]>/, } }
Class Method Summary
Instance Attribute Summary
- #classes readonly
- #code_lines readonly
- #lines readonly
- #methods readonly
Instance Method Summary
Constructor Details
.new(lines = 0, code_lines = 0, classes = 0, methods = 0) ⇒ CodeStatisticsCalculator
# File 'railties/lib/rails/code_statistics_calculator.rb', line 42
def initialize(lines = 0, code_lines = 0, classes = 0, methods = 0) @lines = lines @code_lines = code_lines @classes = classes @methods = methods end
Instance Attribute Details
#classes (readonly)
[ GitHub ]# File 'railties/lib/rails/code_statistics_calculator.rb', line 5
attr_reader :lines, :code_lines, :classes, :methods
#code_lines (readonly)
[ GitHub ]#lines (readonly)
[ GitHub ]# File 'railties/lib/rails/code_statistics_calculator.rb', line 5
attr_reader :lines, :code_lines, :classes, :methods
#methods (readonly)
[ GitHub ]# File 'railties/lib/rails/code_statistics_calculator.rb', line 5
attr_reader :lines, :code_lines, :classes, :methods
Instance Method Details
#add(code_statistics_calculator)
[ GitHub ]# File 'railties/lib/rails/code_statistics_calculator.rb', line 49
def add(code_statistics_calculator) @lines += code_statistics_calculator.lines @code_lines += code_statistics_calculator.code_lines @classes += code_statistics_calculator.classes @methods += code_statistics_calculator.methods end
#add_by_file_path(file_path)
[ GitHub ]#add_by_io(io, file_type)
[ GitHub ]# File 'railties/lib/rails/code_statistics_calculator.rb', line 62
def add_by_io(io, file_type) patterns = PATTERNS[file_type] || {} comment_started = false while line = io.gets @lines += 1 if comment_started if patterns[:end_block_comment] && patterns[:end_block_comment].match?(line) comment_started = false end next else if patterns[:begin_block_comment] && patterns[:begin_block_comment].match?(line) comment_started = true next end end @classes += 1 if patterns[:class] && patterns[:class].match?(line) @methods += 1 if patterns[:method] && patterns[:method].match?(line) if !line.match?(/^\s*$/) && (patterns[:line_comment].nil? || !line.match?(patterns[:line_comment])) @code_lines += 1 end end end
#file_type(file_path) (private)
[ GitHub ]# File 'railties/lib/rails/code_statistics_calculator.rb', line 91
def file_type(file_path) if file_path.end_with? "_test.rb" :minitest else File.extname(file_path).delete_prefix(".").downcase.to_sym end end