Class: CodeMetrics::StatsDirectories
- Inherits:
-
Object
- Object
- CodeMetrics::StatsDirectories
- Defined in:
- lib/code_metrics/stats_directories.rb
Defined Under Namespace
Classes: StatDirectory
Instance Attribute Summary collapse
-
#app_directories ⇒ Object
readonly
Returns the value of attribute app_directories.
-
#test_directories ⇒ Object
readonly
Returns the value of attribute test_directories.
Instance Method Summary collapse
- #add_directories(dir_pattern, file_pattern) ⇒ Object
- #add_directory(description, folder_path) ⇒ Object
- #add_test_directories(dir_pattern, file_pattern) ⇒ Object
- #add_test_directory(description, folder_path) ⇒ Object
- #build_directories(glob_pattern, file_pattern) ⇒ Object
-
#collect_directories(glob_pattern, file_pattern = '') ⇒ Object
collects non empty directories and names the metric by the folder name parent? or dirname? or basename?.
-
#default_app_directories ⇒ Object
What Rails expects.
- #default_test_directories ⇒ Object
- #description(path_basename, file_pattern) ⇒ Object
- #directories ⇒ Object
-
#initialize ⇒ StatsDirectories
constructor
A new instance of StatsDirectories.
- #path_prefix ⇒ Object
- #pluralize(string) ⇒ Object
- #titlecase(string) ⇒ Object
Constructor Details
#initialize ⇒ StatsDirectories
Returns a new instance of StatsDirectories.
27 28 29 30 31 |
# File 'lib/code_metrics/stats_directories.rb', line 27 def initialize @root = path_prefix @app_directories = default_app_directories @test_directories = default_test_directories end |
Instance Attribute Details
#app_directories ⇒ Object (readonly)
Returns the value of attribute app_directories.
25 26 27 |
# File 'lib/code_metrics/stats_directories.rb', line 25 def app_directories @app_directories end |
#test_directories ⇒ Object (readonly)
Returns the value of attribute test_directories.
25 26 27 |
# File 'lib/code_metrics/stats_directories.rb', line 25 def test_directories @test_directories end |
Instance Method Details
#add_directories(dir_pattern, file_pattern) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/code_metrics/stats_directories.rb', line 65 def add_directories(dir_pattern, file_pattern) build_directories(dir_pattern, file_pattern).each do |description, path| add_directory(description, path) end self end |
#add_directory(description, folder_path) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/code_metrics/stats_directories.rb', line 79 def add_directory(description,folder_path) folder_path = folder_path.to_s unless app_directories.any?{|stat_dir| stat_dir.path == folder_path} app_directories << StatDirectory.new(description, folder_path) end self end |
#add_test_directories(dir_pattern, file_pattern) ⇒ Object
72 73 74 75 76 77 |
# File 'lib/code_metrics/stats_directories.rb', line 72 def add_test_directories(dir_pattern, file_pattern) build_directories(dir_pattern, file_pattern).each do |description, path| add_test_directory(description, path) end self end |
#add_test_directory(description, folder_path) ⇒ Object
87 88 89 90 91 92 93 94 |
# File 'lib/code_metrics/stats_directories.rb', line 87 def add_test_directory(description,folder_path) folder_path = folder_path.to_s unless test_directories.any?{|stat_dir| stat_dir.path == folder_path} test_directories << StatDirectory.new(description, folder_path) CodeMetrics::Statistics::TEST_TYPES << description end self end |
#build_directories(glob_pattern, file_pattern) ⇒ Object
97 98 99 100 101 102 103 104 |
# File 'lib/code_metrics/stats_directories.rb', line 97 def build_directories(glob_pattern, file_pattern) dirs = collect_directories(glob_pattern, file_pattern) Hash[dirs.map { |path| [description(path.basename,file_pattern), path] } ] end |
#collect_directories(glob_pattern, file_pattern = '') ⇒ Object
collects non empty directories and names the metric by the folder name parent? or dirname? or basename?
107 108 109 |
# File 'lib/code_metrics/stats_directories.rb', line 107 def collect_directories(glob_pattern, file_pattern='') Pathname.glob(glob_pattern).select{|f| f.basename.to_s.include?(file_pattern) }.map(&:dirname).uniq.map(&:realpath) end |
#default_app_directories ⇒ Object
What Rails expects
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/code_metrics/stats_directories.rb', line 38 def default_app_directories StatDirectory.from_list([ %w(Controllers app/controllers), %w(Helpers app/helpers), %w(Models app/models), %w(Mailers app/mailers), %w(Javascripts app/assets/javascripts), %w(Libraries lib), %w(APIs app/apis) ], @root) end |
#default_test_directories ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/code_metrics/stats_directories.rb', line 50 def default_test_directories StatDirectory.from_list([ %w(Controller\ tests test/controllers), %w(Helper\ tests test/helpers), %w(Model\ tests test/models), %w(Mailer\ tests test/mailers), %w(Integration\ tests test/integration), %w(Functional\ tests\ (old) test/functional), %w(Unit\ tests \ (old) test/unit) ], @root) end |
#description(path_basename, file_pattern) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/code_metrics/stats_directories.rb', line 111 def description(path_basename,file_pattern) if path_basename.to_s == file_pattern "Uncategorized #{pluralize(file_pattern)}" else "#{titlecase(path_basename)} #{pluralize(file_pattern)}" end.strip end |
#directories ⇒ Object
33 34 35 |
# File 'lib/code_metrics/stats_directories.rb', line 33 def directories app_directories.map(&:to_a) | test_directories.map(&:to_a) end |
#path_prefix ⇒ Object
128 129 130 |
# File 'lib/code_metrics/stats_directories.rb', line 128 def path_prefix (defined?(Rails) && Rails.root) || Pathname.pwd end |
#pluralize(string) ⇒ Object
124 125 126 |
# File 'lib/code_metrics/stats_directories.rb', line 124 def pluralize(string) "#{string}s" unless string.to_s.empty? end |
#titlecase(string) ⇒ Object
119 120 121 122 |
# File 'lib/code_metrics/stats_directories.rb', line 119 def titlecase(string) string = string.to_s "#{string[0..0].upcase}#{string[1..-1]}" end |