codetip 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/codetip +22 -0
- data/lib/codetip/app.rb +32 -0
- data/lib/codetip/app/commander.rb +87 -0
- metadata +54 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA512:
|
3
|
+
metadata.gz: 932c7adb27dfce4b897e89aa2f9cceb52f53b0b63081097b503e59e24dce949d10fa3ea6d6309f0722d7625ebd4f493e2330d2423c8a4c09d64e26febd838511
|
4
|
+
data.tar.gz: 137dc195207ec6f2d7aa1f37934eaf5ceb7687cc6bc87fdc117158ec111dbd3f5b144db995f4dd5b9130680ec5787e247b2ec1fc87145b3c360d5fc1164c2090
|
5
|
+
SHA1:
|
6
|
+
metadata.gz: ce4611e3690f82ba65441a14886b869e3c8906d2
|
7
|
+
data.tar.gz: 504664439222ee8c48b3f01042cefd5fc1d01e41
|
data/bin/codetip
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# for testing from bin
|
4
|
+
def fallback_load_path(path)
|
5
|
+
retried = false
|
6
|
+
begin
|
7
|
+
yield
|
8
|
+
rescue LoadError
|
9
|
+
unless retried
|
10
|
+
$: << path
|
11
|
+
retried = true
|
12
|
+
retry
|
13
|
+
end
|
14
|
+
raise
|
15
|
+
end
|
16
|
+
end
|
17
|
+
fallback_load_path(File.join(File.dirname(__FILE__), '..', 'lib')) do
|
18
|
+
require 'codetip/app/commander'
|
19
|
+
end
|
20
|
+
|
21
|
+
com = Codetip::Commander.new
|
22
|
+
com.run(ARGV);
|
data/lib/codetip/app.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
module Codetip
|
2
|
+
class App
|
3
|
+
def parse(path, restrict = '*', user = nil)
|
4
|
+
result = {}
|
5
|
+
Dir.glob(path + '/**/' + restrict) do |filename|
|
6
|
+
if File.file?(filename)
|
7
|
+
comments = {}
|
8
|
+
lineNumber = 1
|
9
|
+
File.readlines(filename).each do |line|
|
10
|
+
if line.match(/\[(todo|warning|review)\](\s*[:-]+\s*(.+))$/i)
|
11
|
+
type = $1.downcase
|
12
|
+
message = $3
|
13
|
+
next if (!user.nil? && !line.downcase.match(Regexp.new('@('+user.downcase + '|all)')))
|
14
|
+
(comments[type] ||= []) << {
|
15
|
+
:line => lineNumber,
|
16
|
+
:message => message
|
17
|
+
}
|
18
|
+
end
|
19
|
+
lineNumber += 1
|
20
|
+
end
|
21
|
+
if (comments.count > 0)
|
22
|
+
result[filename] = comments
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
return result
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'codetip/app'
|
2
|
+
|
3
|
+
class String
|
4
|
+
def black; "\033[30m#{self}\033[0m" end
|
5
|
+
def red; "\033[31m#{self}\033[0m" end
|
6
|
+
def green; "\033[32m#{self}\033[0m" end
|
7
|
+
def blue; "\033[34m#{self}\033[0m" end
|
8
|
+
def gray; "\033[37m#{self}\033[0m" end
|
9
|
+
def bold; "\033[1m#{self}\033[22m" end
|
10
|
+
def highlightMessage
|
11
|
+
self.gsub(/(@\w+)/, '\1'.bold)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module Codetip
|
16
|
+
class Commander < App
|
17
|
+
def run(argv = ARGV)
|
18
|
+
begin
|
19
|
+
opts = {}
|
20
|
+
if argv.length > 0
|
21
|
+
loop {
|
22
|
+
case argv[0]
|
23
|
+
# -h or --help
|
24
|
+
when /^-(h|-help)$/i then
|
25
|
+
argv.shift
|
26
|
+
|
27
|
+
puts "Usage: codetip [options] <location>"
|
28
|
+
puts
|
29
|
+
puts "Options:"
|
30
|
+
puts "\t-h, --help\tDisplays what you are looking at"
|
31
|
+
puts "\t-r, --restrict\tRestrict file search. e.g, '.js' or '*.{js,cpp}'"
|
32
|
+
puts "\t-u, --username\tOnly display comments mentioning username"
|
33
|
+
puts
|
34
|
+
puts "Example:"
|
35
|
+
puts "\tcodetip --user='kurt_wagner' -r '*.{js,pl}' ~/path/to/project"
|
36
|
+
puts
|
37
|
+
|
38
|
+
return
|
39
|
+
|
40
|
+
# -r or --restrict
|
41
|
+
when /^-(r|-opts[:restrict])(=(.+))?$/i then
|
42
|
+
if !$3.nil?
|
43
|
+
opts[:restrict] = $3
|
44
|
+
argv.shift
|
45
|
+
else
|
46
|
+
argv.shift
|
47
|
+
opts[:restrict] = argv.shift
|
48
|
+
end
|
49
|
+
# -u or --username
|
50
|
+
when /^-(u|-username)(=(.+))?$/i then
|
51
|
+
if !$3.nil?
|
52
|
+
opts[:username] = $3
|
53
|
+
argv.shift
|
54
|
+
else
|
55
|
+
argv.shift
|
56
|
+
opts[:username] = argv.shift
|
57
|
+
end
|
58
|
+
# other unknown options
|
59
|
+
when /^-/ then
|
60
|
+
puts "Unknown option: #{argv.shift}"
|
61
|
+
else
|
62
|
+
# remove any trailing forward slashes from directory
|
63
|
+
directory = argv.shift
|
64
|
+
opts[:path] = directory.gsub(/\/+$/, '') if !directory.nil?
|
65
|
+
break
|
66
|
+
end
|
67
|
+
}
|
68
|
+
end
|
69
|
+
|
70
|
+
parse(opts[:path] || '.', opts[:restrict] || "*", opts[:username]).each do |filename, types|
|
71
|
+
puts filename.red.bold;
|
72
|
+
types.each do |type, comments|
|
73
|
+
if comments.count > 0
|
74
|
+
puts "[ #{type.upcase} ]".blue.bold
|
75
|
+
comments.each do |comment|
|
76
|
+
puts " Line #{comment[:line]} - ".gray + comment[:message].highlightMessage
|
77
|
+
end
|
78
|
+
puts
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
rescue Exception => e
|
83
|
+
puts e.message
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: codetip
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kurt Wagner
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2013-11-24 00:00:00 Z
|
13
|
+
dependencies: []
|
14
|
+
|
15
|
+
description: Generate a summary of a projects comments.
|
16
|
+
email: krw521@uowmail.edu.au
|
17
|
+
executables:
|
18
|
+
- codetip
|
19
|
+
extensions: []
|
20
|
+
|
21
|
+
extra_rdoc_files: []
|
22
|
+
|
23
|
+
files:
|
24
|
+
- lib/codetip/app.rb
|
25
|
+
- lib/codetip/app/commander.rb
|
26
|
+
- bin/codetip
|
27
|
+
homepage: http://rubygems.org/gems/codetip
|
28
|
+
licenses:
|
29
|
+
- GPL-2
|
30
|
+
metadata: {}
|
31
|
+
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- &id001
|
40
|
+
- ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: "0"
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- *id001
|
46
|
+
requirements: []
|
47
|
+
|
48
|
+
rubyforge_project:
|
49
|
+
rubygems_version: 2.0.3
|
50
|
+
signing_key:
|
51
|
+
specification_version: 4
|
52
|
+
summary: Code Summary Generator
|
53
|
+
test_files: []
|
54
|
+
|