visionmedia-san 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/History.txt +7 -0
  2. data/README.txt +9 -11
  3. data/lib/san.rb +56 -54
  4. data/san.gemspec +2 -3
  5. metadata +4 -4
  6. data/test/test_san.rb +0 -1
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ === 1.0.2 / 2008-10-21
2
+
3
+ * 1 Minor Changes:
4
+
5
+ * Removed empty test file
6
+ * Code styling
7
+
1
8
  === 1.0.1 / 2008-10-03
2
9
 
3
10
  * 1 Minor Feature:
data/README.txt CHANGED
@@ -4,22 +4,20 @@ http://vision-media.ca/resources/ruby/source-code-analysis-gem
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
- SAN or Source ANalyzer is an open source Ruby program for analyzing the contents
8
- of source code, such as line counts and comment ratios.
7
+ SAN or Source ANalyzer is an open source Ruby program for analyzing the contents
8
+ of source code, such as line counts and comment ratios.
9
9
 
10
- == SYNOPSIS:
10
+ == TODO:
11
11
 
12
- lc [-hVr] [ dir | file ... ]
13
-
14
- == REQUIREMENTS:
15
-
16
- none
12
+ * Optionally blacklist or whitelist languages, extensions, etc
13
+ * More OO
14
+ * Use commander
17
15
 
18
16
  == AUTHOR:
19
17
 
20
- TJ Holowaychuk
21
- tj@vision-media.ca
22
- http://vision-media.ca
18
+ TJ Holowaychuk
19
+ tj@vision-media.ca
20
+ http://vision-media.ca
23
21
 
24
22
  == LICENSE:
25
23
 
data/lib/san.rb CHANGED
@@ -1,33 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # == Synopsis
4
- # SAN is an open source Ruby program for analysing the contents
5
- # of source code, such as line counts and comment ratios.
4
+ # SAN is an open source Ruby program for analysing the contents
5
+ # of source code, such as line counts and comment ratios.
6
6
  #
7
7
  # == Usage
8
- # san [-hVr] [ dir | file ... ]
9
- #
8
+ # san [-hVr] [ dir | file ... ]
9
+ #
10
10
  # == Examples
11
- # Analyse current directory
12
- # san
13
- #
14
- # Analyse current directory recursively
15
- # san --recursive
16
- #
17
- # Analyse specific files and a directory recursively
18
- # san -r ./index.php ./cron.php ./sites/all/modules/gui
19
- #
11
+ # Analyse current directory
12
+ # san
13
+ #
14
+ # Analyse current directory recursively
15
+ # san --recursive
16
+ #
17
+ # Analyse specific files and a directory recursively
18
+ # san -r ./index.php ./cron.php ./sites/all/modules/gui
19
+ #
20
20
  # == Options
21
- # -h, --help Display this help information.
22
- # -V, --version Display version of lc.
23
- # -r, --recurse Scan directories recursively.
21
+ # -h, --help Display this help information.
22
+ # -V, --version Display version of lc.
23
+ # -r, --recurse Scan directories recursively.
24
24
  #
25
25
  # == Author
26
- # TJ Holowaychuk
26
+ # TJ Holowaychuk
27
27
  #
28
28
  # == Copyright
29
- # Copyright (c) 2008 TJ Holowaychuk. Licensed under the MIT License:
30
- # http://www.opensource.org/licenses/mit-license.php
29
+ # Copyright (c) 2008 TJ Holowaychuk. Licensed under the MIT License:
30
+ # http://www.opensource.org/licenses/mit-license.php
31
31
 
32
32
  require 'optparse'
33
33
  require 'rdoc/usage'
@@ -78,15 +78,18 @@ $syntax = {
78
78
 
79
79
  class San
80
80
 
81
- VERSION = '1.0.1'
81
+ MAJOR = 1
82
+ MINOR = 0
83
+ TINY = 2
84
+ VERSION = [MAJOR, MINOR, TINY].join('.')
82
85
 
83
86
  attr_reader :files, :reports
84
87
  attr_accessor :options, :arguments
85
88
 
86
89
  # Initialize
87
- def initialize()
88
- self.initialize_options
89
- self.initialize_reports
90
+ def initialize
91
+ initialize_options
92
+ initialize_reports
90
93
  end
91
94
 
92
95
  # Initialize option defaults
@@ -100,8 +103,8 @@ class San
100
103
  @reports = {}
101
104
  @reports[:comment_ratio] = 0
102
105
  @reports[:totals] = {
103
- 'files' => 0,
104
- 'lines' => 0,
106
+ 'files' => 0,
107
+ 'lines' => 0,
105
108
  'lines blank' => 0,
106
109
  'lines comments' => 0,
107
110
  'lines todo' => 0,
@@ -119,7 +122,7 @@ class San
119
122
  # Start analysis.
120
123
  def run
121
124
  # Parse options
122
- self.parse_options
125
+ parse_options
123
126
 
124
127
  # Default files to cwd
125
128
  @files = @arguments.empty? ? ['.'] : @arguments
@@ -130,16 +133,16 @@ class San
130
133
  if File.directory?(file)
131
134
  files = Dir[(@options[:recursive] ? '**/' : '') << file << '/*.{' + file_pattern + '}']
132
135
  files.each do |file|
133
- self.parse_script(file)
136
+ parse_script(file)
134
137
  end
135
138
  elsif File.file?(file)
136
- self.parse_script(file)
139
+ parse_script(file)
137
140
  end
138
141
  end
139
142
 
140
143
  # Report
141
- self.prep_report
142
- self.output_report
144
+ prep_report
145
+ output_report
143
146
  exit
144
147
  end
145
148
 
@@ -147,14 +150,13 @@ class San
147
150
  def parse_options
148
151
  opts = OptionParser.new
149
152
  opts.on('-h', '--help') { RDoc.usage(0) }
150
- opts.on('-V', '--version') { self.output_version; exit 0 }
153
+ opts.on('-V', '--version') { output_version; exit 0 }
151
154
  opts.on('-r', '--recursive') { @options[:recursive] = true }
152
155
  begin
153
- opts.parse!(@arguments)
154
- rescue => e
155
- puts e
156
- exit 1
157
- end
156
+ opts.parse!(@arguments)
157
+ rescue => e
158
+ abort e
159
+ end
158
160
  end
159
161
 
160
162
  # Get extension of filepath.
@@ -188,21 +190,21 @@ class San
188
190
  @reports[:totals]['lines'] += 1
189
191
  @reports[:totals]['lines blank'] += 1 if line.match(lang[:blank])
190
192
  if !line.match(lang[:blank])
191
- @reports[:totals]['lines todo'] += 1 if line.match(lang[:todo])
192
- case
193
- when line.match(lang[:comment]); @reports[:totals]['lines comments'] += 1
194
- when line.match(lang[:comment_open]); @reports[:totals]['lines comments'] += 1; comment_open = true
195
- when line.match(lang[:comment_close]); @reports[:totals]['lines comments'] += 1; comment_open = false
196
- else
197
- if comment_open
198
- @reports[:totals]['lines comments'] += 1
199
- else
200
- @reports[:totals]['lines script'] += 1
201
- case
202
- when lang[:function] && line.match(lang[:function]); @reports[:totals]['declared functions'] += 1
203
- when lang[:class] && line.match(lang[:class]); @reports[:totals]['declared classes'] += 1
204
- end
205
- end
193
+ @reports[:totals]['lines todo'] += 1 if line.match(lang[:todo])
194
+ case
195
+ when line.match(lang[:comment]); @reports[:totals]['lines comments'] += 1
196
+ when line.match(lang[:comment_open]); @reports[:totals]['lines comments'] += 1; comment_open = true
197
+ when line.match(lang[:comment_close]); @reports[:totals]['lines comments'] += 1; comment_open = false
198
+ else
199
+ if comment_open
200
+ @reports[:totals]['lines comments'] += 1
201
+ else
202
+ @reports[:totals]['lines script'] += 1
203
+ case
204
+ when lang[:function] && line.match(lang[:function]); @reports[:totals]['declared functions'] += 1
205
+ when lang[:class] && line.match(lang[:class]); @reports[:totals]['declared classes'] += 1
206
+ end
207
+ end
206
208
  end
207
209
  end
208
210
  end
@@ -218,9 +220,9 @@ class San
218
220
 
219
221
  # Output report.
220
222
  def output_report
221
- @reports[:totals].keys.sort.each do |k|
222
- puts k + ' ' + @reports[:totals][k].to_s unless @reports[:totals][k] == 0
223
- end
223
+ @reports[:totals].keys.sort.each do |k|
224
+ puts k + ' ' + @reports[:totals][k].to_s unless @reports[:totals][k] == 0
225
+ end
224
226
  puts 'comment ratio ' << '%.2f' % @reports[:comment_ratio] unless @reports[:comment_ratio] == 0
225
227
  end
226
228
 
data/san.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "san"
3
- s.version = "1.0.1"
4
- s.date = "2008-10-03"
3
+ s.version = "1.0.2"
4
+ s.date = "2008-10-21"
5
5
  s.summary = "Source code analysis script"
6
6
  s.email = "tj@vision-media.ca"
7
7
  s.homepage = "http://vision-media.ca/resources/ruby/source-code-analysis-gem"
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
17
17
  "lib/san.rb",
18
18
  "bin/san"]
19
19
  s.executables = ["san"]
20
- s.test_files = ["test/test_san.rb"]
21
20
  s.rdoc_options = ["--main", "README.txt"]
22
21
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
23
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visionmedia-san
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tj@vision-media.ca
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-03 00:00:00 -07:00
12
+ date: 2008-10-21 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -58,5 +58,5 @@ rubygems_version: 1.2.0
58
58
  signing_key:
59
59
  specification_version: 2
60
60
  summary: Source code analysis script
61
- test_files:
62
- - test/test_san.rb
61
+ test_files: []
62
+
data/test/test_san.rb DELETED
@@ -1 +0,0 @@
1
-