dnote 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.ruby +50 -42
- data/.yardopts +5 -0
- data/COPYING.rdoc +31 -0
- data/HISTORY.rdoc +14 -2
- data/README.rdoc +5 -14
- data/lib/dnote.rb +1 -1
- data/lib/dnote/core_ext.rb +80 -0
- data/lib/dnote/format.rb +2 -1
- data/lib/dnote/rake/dnotetask.rb +116 -0
- data/lib/dnote/session.rb +2 -2
- data/lib/dnote/templates/md.erb +2 -1
- data/lib/dnote/templates/md/file.erb +1 -0
- data/lib/dnote/templates/md/label.erb +1 -0
- data/lib/dnote/templates/md/list.erb +1 -0
- data/lib/dnote/templates/rdoc.erb +1 -0
- data/lib/dnote/templates/rdoc/file.erb +1 -0
- data/lib/dnote/templates/rdoc/label.erb +1 -0
- data/lib/dnote/templates/rdoc/list.erb +1 -0
- data/lib/dnote/templates/text.erb +1 -0
- data/lib/dnote/templates/text/file.erb +2 -1
- data/lib/dnote/templates/text/list.erb +1 -0
- data/lib/dnote/templates/xml.erb +13 -5
- data/lib/dnote/templates/xml/file.erb +13 -5
- data/lib/dnote/templates/xml/label.erb +11 -3
- data/lib/dnote/templates/xml/list.erb +9 -1
- data/lib/dnote/version.rb +14 -1
- data/test/notes_case.rb +45 -25
- metadata +69 -85
- data/APACHE2.txt +0 -202
- data/lib/dnote/string.rb +0 -68
- data/lib/plugins/rake/task.rb +0 -113
- data/lib/plugins/redline/dnote.rb +0 -158
data/.ruby
CHANGED
@@ -1,47 +1,55 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
mail: http://groups.google.com/group/rubyworks-mailinglist
|
20
|
-
wiki: http://wiki.github.com/rubyworks/dnote
|
21
|
-
home: http://rubyworks.github.com/dnote
|
22
|
-
maintainers: []
|
23
|
-
|
24
|
-
requires:
|
25
|
-
- group:
|
1
|
+
---
|
2
|
+
source:
|
3
|
+
- meta
|
4
|
+
authors:
|
5
|
+
- name: Thomas Sawyer
|
6
|
+
email: transfire@gmail.com
|
7
|
+
copyrights:
|
8
|
+
- holder: Thomas Sawyer, Rubyworks
|
9
|
+
year: '2009'
|
10
|
+
replacements: []
|
11
|
+
alternatives: []
|
12
|
+
requirements:
|
13
|
+
- name: lemon
|
14
|
+
groups:
|
15
|
+
- test
|
16
|
+
development: true
|
17
|
+
- name: ae
|
18
|
+
groups:
|
26
19
|
- test
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
development: true
|
21
|
+
- name: detroit
|
22
|
+
groups:
|
30
23
|
- build
|
31
|
-
|
32
|
-
|
33
|
-
|
24
|
+
development: true
|
25
|
+
- name: reap
|
26
|
+
groups:
|
34
27
|
- build
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
28
|
+
development: true
|
29
|
+
dependencies: []
|
30
|
+
conflicts: []
|
31
|
+
repositories:
|
32
|
+
- uri: git://github.com/rubyworks/dnote.git
|
33
|
+
scm: git
|
34
|
+
name: upstream
|
35
|
+
resources:
|
36
|
+
home: http://rubyworks.github.com/dnote
|
37
|
+
code: http://github.com/rubyworks/dnote
|
38
|
+
wiki: http://wiki.github.com/rubyworks/dnote
|
39
|
+
api: http://rubydoc.info/gems/dnote
|
40
|
+
bugs: http://github.com/rubyworks/dnote/issues
|
41
|
+
mail: http://groups.google.com/groups/rubyworks-mailinglist
|
42
|
+
extra: {}
|
43
|
+
load_path:
|
44
|
+
- lib
|
45
|
+
revision: 0
|
46
|
+
created: '2009-10-09'
|
47
|
+
summary: Extract developer's notes from source code.
|
48
|
+
title: DNote
|
49
|
+
version: 1.7.0
|
50
|
+
name: dnote
|
51
|
+
description: ! 'DNote makes it easy to extract developer''s notes from source code,
|
40
52
|
|
41
|
-
|
42
|
-
authors:
|
43
|
-
- Thomas Sawyer
|
53
|
+
and supports almost any language.'
|
44
54
|
organization: RubyWorks
|
45
|
-
|
46
|
-
summary: Extract developer's notes from source code
|
47
|
-
created: 2009-10-09
|
55
|
+
date: '2011-10-25'
|
data/.yardopts
ADDED
data/COPYING.rdoc
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
= COPYRIGHT NOTICES
|
2
|
+
|
3
|
+
== DNote
|
4
|
+
|
5
|
+
Copyright:: (c) 2006 Thomas Sawyer, Rubyworks
|
6
|
+
License:: BSD-2-Clause
|
7
|
+
Website:: http://rubyworks.github.com/tapout
|
8
|
+
|
9
|
+
Copyright 2006 Thomas Sawyer, Rubyworks. All rights reserved.
|
10
|
+
|
11
|
+
Redistribution and use in source and binary forms, with or without
|
12
|
+
modification, are permitted provided that the following conditions are met:
|
13
|
+
|
14
|
+
1. Redistributions of source code must retain the above copyright notice,
|
15
|
+
this list of conditions and the following disclaimer.
|
16
|
+
|
17
|
+
2. Redistributions in binary form must reproduce the above copyright
|
18
|
+
notice, this list of conditions and the following disclaimer in the
|
19
|
+
documentation and/or other materials provided with the distribution.
|
20
|
+
|
21
|
+
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
22
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
23
|
+
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
24
|
+
COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
25
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
26
|
+
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
28
|
+
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
29
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
30
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
|
data/HISTORY.rdoc
CHANGED
@@ -1,11 +1,23 @@
|
|
1
1
|
= RELEASE HISTORY
|
2
2
|
|
3
3
|
|
4
|
+
== 1.7.0 / 2011-10-25
|
5
|
+
|
6
|
+
This release finishes adding code context support to all formats. Use the `-c`
|
7
|
+
option to set the number of lines to include. Note also that the rake task has
|
8
|
+
been moved to `dnote/rake/dnotetask`.
|
9
|
+
|
10
|
+
Changes:
|
11
|
+
|
12
|
+
* Support code contexts in all formats.
|
13
|
+
* Rake task moved to `dnote/rake/dnotetask`.
|
14
|
+
|
15
|
+
|
4
16
|
== 1.6.1 / 2011-05-18
|
5
17
|
|
6
18
|
Last release reused the `-c` option for context lines. This clobbered
|
7
|
-
the shortcut option for `--custom`. To fix this release capitalizes
|
8
|
-
the shortcut to `-C`.
|
19
|
+
the shortcut option for `--custom`. To fix, this release capitalizes
|
20
|
+
the custom shortcut to `-C`.
|
9
21
|
|
10
22
|
Changes:
|
11
23
|
|
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
=
|
1
|
+
= DNote
|
2
2
|
|
3
3
|
* {Homepage}[http://rubyworks.github.com/dnote]
|
4
4
|
* {Mailing List}[http://googlegroups.com/group/rubyworks-mailinglist]
|
@@ -16,7 +16,7 @@ output formats for them.
|
|
16
16
|
=== Note Structure
|
17
17
|
|
18
18
|
DNote scans for the common note patterns used by developers of many languages in the form of an
|
19
|
-
all-caps labels followed by a colon. To be more specific, for
|
19
|
+
all-caps labels followed by a colon. To be more specific, for DNote to recognize a note,
|
20
20
|
it needs to follow this simple set of rules:
|
21
21
|
|
22
22
|
1) Notes start with an all-caps label punctuated with a colon, followed by the note's text.
|
@@ -106,17 +106,8 @@ The usual RubyGem's command will do the trick.
|
|
106
106
|
|
107
107
|
== COPYRIGHT
|
108
108
|
|
109
|
-
Copyright (c) 2006 Thomas Sawyer
|
109
|
+
Copyright (c) 2006 Thomas Sawyer, Rubyworks
|
110
110
|
|
111
|
-
|
112
|
-
you may not use this file except in compliance with the License.
|
113
|
-
You may obtain a copy of the License at
|
114
|
-
|
115
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
116
|
-
|
117
|
-
Unless required by applicable law or agreed to in writing, software
|
118
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
119
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
120
|
-
See the License for the specific language governing permissions and
|
121
|
-
limitations under the License.
|
111
|
+
DNote is distributable in accordance with the terms of the *FreeBSD* license.
|
122
112
|
|
113
|
+
See COPYING.rdoc for details.
|
data/lib/dnote.rb
CHANGED
data/lib/dnote/core_ext.rb
CHANGED
@@ -10,3 +10,83 @@ module Enumerable
|
|
10
10
|
|
11
11
|
end
|
12
12
|
|
13
|
+
module DNote
|
14
|
+
|
15
|
+
# Extensions for String class.
|
16
|
+
# These methods are taken directly from Ruby Facets.
|
17
|
+
#
|
18
|
+
module String
|
19
|
+
|
20
|
+
# Provides a margin controlled string.
|
21
|
+
#
|
22
|
+
# x = %Q{
|
23
|
+
# | This
|
24
|
+
# | is
|
25
|
+
# | margin controlled!
|
26
|
+
# }.margin
|
27
|
+
#
|
28
|
+
#
|
29
|
+
# NOTE: This may still need a bit of tweaking.
|
30
|
+
#
|
31
|
+
# CREDIT: Trans
|
32
|
+
|
33
|
+
def margin(n=0)
|
34
|
+
#d = /\A.*\n\s*(.)/.match( self )[1]
|
35
|
+
#d = /\A\s*(.)/.match( self)[1] unless d
|
36
|
+
d = ((/\A.*\n\s*(.)/.match(self)) ||
|
37
|
+
(/\A\s*(.)/.match(self)))[1]
|
38
|
+
return '' unless d
|
39
|
+
if n == 0
|
40
|
+
gsub(/\n\s*\Z/,'').gsub(/^\s*[#{d}]/, '')
|
41
|
+
else
|
42
|
+
gsub(/\n\s*\Z/,'').gsub(/^\s*[#{d}]/, ' ' * n)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Preserves relative tabbing.
|
47
|
+
# The first non-empty line ends up with n spaces before nonspace.
|
48
|
+
#
|
49
|
+
# CREDIT: Gavin Sinclair
|
50
|
+
|
51
|
+
def tabto(n)
|
52
|
+
if self =~ /^( *)\S/
|
53
|
+
indent(n - $1.length)
|
54
|
+
else
|
55
|
+
self
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Indent left or right by n spaces.
|
60
|
+
# (This used to be called #tab and aliased as #indent.)
|
61
|
+
#
|
62
|
+
# CREDIT: Gavin Sinclair
|
63
|
+
# CREDIT: Trans
|
64
|
+
|
65
|
+
def indent(n)
|
66
|
+
if n >= 0
|
67
|
+
gsub(/^/, ' ' * n)
|
68
|
+
else
|
69
|
+
gsub(/^ {0,#{-n}}/, "")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
#
|
74
|
+
#
|
75
|
+
def tabset(n)
|
76
|
+
i = lines.map do |line|
|
77
|
+
line.strip.empty? ? nil : line.index(/\S/)
|
78
|
+
end
|
79
|
+
x = i.compact.min
|
80
|
+
t = n - x.to_i
|
81
|
+
t = 0 if t < 0
|
82
|
+
indent(t)
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
class ::String #:nodoc:
|
88
|
+
include DNote::String
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
data/lib/dnote/format.rb
CHANGED
@@ -12,7 +12,7 @@ module DNote
|
|
12
12
|
require 'fileutils'
|
13
13
|
require 'erb'
|
14
14
|
require 'rexml/text'
|
15
|
-
require 'dnote/
|
15
|
+
require 'dnote/core_ext'
|
16
16
|
|
17
17
|
#DEFAULT_OUTPUT_DIR = "log/dnote"
|
18
18
|
|
@@ -45,6 +45,7 @@ module DNote
|
|
45
45
|
@format = 'text'
|
46
46
|
@subtype = 'label'
|
47
47
|
@title = "Developer's Notes"
|
48
|
+
@dryrun = false
|
48
49
|
options.each{ |k,v| __send__("#{k}=", v) if v }
|
49
50
|
yield(self) if block_given?
|
50
51
|
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
module DNote
|
2
|
+
|
3
|
+
# = Developmer's Notes Rake Task
|
4
|
+
#
|
5
|
+
class RakeTask < Rake::TaskLib
|
6
|
+
|
7
|
+
require 'rake/clean'
|
8
|
+
|
9
|
+
# Default note labels to looked for in source code.
|
10
|
+
DEFAULT_LABELS = ['TODO', 'FIXME', 'OPTIMIZE', 'DEPRECATE']
|
11
|
+
|
12
|
+
# File paths to search.
|
13
|
+
attr_accessor :files
|
14
|
+
|
15
|
+
# Labels to document. Defaults are: TODO, FIXME, OPTIMIZE and DEPRECATE.
|
16
|
+
attr_accessor :labels
|
17
|
+
|
18
|
+
# Formats (xml, html, rdoc, rdoc/list and so on).
|
19
|
+
attr_accessor :formats
|
20
|
+
|
21
|
+
# Exclude paths.
|
22
|
+
attr_accessor :exclude
|
23
|
+
|
24
|
+
# Ignore paths based on any part of pathname.
|
25
|
+
attr_accessor :ignore
|
26
|
+
|
27
|
+
# Output directory to save notes file. Defaults to <tt>dnote/</tt> under
|
28
|
+
# the project log directory (eg. <tt>log/dnote/</tt>).
|
29
|
+
attr_accessor :output
|
30
|
+
|
31
|
+
# Title to use if temaplte can use it.
|
32
|
+
attr_accessor :title
|
33
|
+
|
34
|
+
#
|
35
|
+
def output=(path)
|
36
|
+
@output = Pathname.new(path)
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
def init
|
41
|
+
require 'dnote'
|
42
|
+
require 'dnote/format'
|
43
|
+
@files = "**/*.rb"
|
44
|
+
@output = 'log/dnote'
|
45
|
+
@formats = ['index']
|
46
|
+
@labels = nil #DEFAULT_LABELS
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
def define
|
51
|
+
desc "Collect Developer's Notes"
|
52
|
+
task 'dnote' do
|
53
|
+
document
|
54
|
+
end
|
55
|
+
task 'dnote:clobber' do
|
56
|
+
clean
|
57
|
+
end
|
58
|
+
task :clobber => ['dnote:clobber']
|
59
|
+
end
|
60
|
+
|
61
|
+
# Generate notes document(s).
|
62
|
+
def document
|
63
|
+
abort "dnote: #{output} is not a directory" unless output.directory?
|
64
|
+
|
65
|
+
session = ::DNote::Session.new do |s|
|
66
|
+
s.paths = files
|
67
|
+
s.exclude = exclude
|
68
|
+
s.ignore = ignore
|
69
|
+
s.labels = labels #|| DEFAULT_LABELS
|
70
|
+
s.title = title
|
71
|
+
s.output = output
|
72
|
+
s.dryrun = application.options.dryrun #trial?
|
73
|
+
end
|
74
|
+
|
75
|
+
formats.each do |format|
|
76
|
+
if format == 'index'
|
77
|
+
session.format = 'html'
|
78
|
+
session.output = File.join(self.output, 'index.html')
|
79
|
+
else
|
80
|
+
session.format = format
|
81
|
+
end
|
82
|
+
session.run
|
83
|
+
report "Updated #{output.to_s.sub(Dir.pwd+'/','')}" unless trial?
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# Reset output directory, marking it as out-of-date.
|
88
|
+
def reset
|
89
|
+
#if File.directory?(output)
|
90
|
+
File.utime(0,0,output) unless $NOOP
|
91
|
+
puts "Marked #{output} as out-of-date"
|
92
|
+
#end
|
93
|
+
end
|
94
|
+
|
95
|
+
# Remove output files.
|
96
|
+
def clean
|
97
|
+
#if File.directory?(output)
|
98
|
+
formats.each do |format|
|
99
|
+
if format == 'index'
|
100
|
+
file = (output + "index.html").to_s
|
101
|
+
else
|
102
|
+
ext = ::DNote::Format::EXTENSIONS[format] || format
|
103
|
+
file = (output + "notes.#{ext}").to_s
|
104
|
+
end
|
105
|
+
rm(file)
|
106
|
+
report "Removed #{output}"
|
107
|
+
end
|
108
|
+
#else
|
109
|
+
# rm(output)
|
110
|
+
# report "Removed #{output}"
|
111
|
+
#end
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
data/lib/dnote/session.rb
CHANGED
@@ -95,12 +95,12 @@ module DNote
|
|
95
95
|
|
96
96
|
# Set exclude list ensuring that the value is an array.
|
97
97
|
def exclude=(list)
|
98
|
-
@exclude = [list].flatten.compact
|
98
|
+
@exclude = [list].compact.flatten.compact
|
99
99
|
end
|
100
100
|
|
101
101
|
# Set ignore list ensuring that the value is an array.
|
102
102
|
def ignore=(list)
|
103
|
-
@ignore = [list].flatten.compact
|
103
|
+
@ignore = [list].compact.flatten.compact
|
104
104
|
end
|
105
105
|
|
106
106
|
# Run session.
|
data/lib/dnote/templates/md.erb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= title %>
|
2
2
|
|
3
|
-
<%= '=' * title.size %>
|
3
|
+
<%= '=' * title.to_s.size %>
|
4
4
|
|
5
5
|
<% notes.by_label_file.each do |label, per_file| %>
|
6
6
|
|
@@ -14,5 +14,6 @@
|
|
14
14
|
|
15
15
|
<% line_notes.each do |note| %>
|
16
16
|
* <%= note %> (<%= note.line %>)
|
17
|
+
<% if note.code? %><%= "\n" + note.code.tabset(4).rstrip + "\n\n" %><% end %>
|
17
18
|
<% end; end; end %>
|
18
19
|
|