dnote 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/PROFILE ADDED
@@ -0,0 +1,23 @@
1
+ ---
2
+ title : DNote
3
+ suite : proutils
4
+ summary: Extract developer's notes from source code
5
+ contact: trans <transfire@gmail.com>
6
+ created: 2009-10-09
7
+ authors: Thomas Sawyer
8
+
9
+ description:
10
+ Dnote makes it easy to extract developer's
11
+ notes from source code, and supports almost
12
+ any language.
13
+
14
+ resources:
15
+ home: http://proutils.github.com/dnote
16
+ code: http://github.com/proutils/dnote
17
+ wiki: http://wiki.github.com/proutils/dnote
18
+ api : http://proutils.github.com/dnote/rdoc
19
+ mail: http://groups.google.com/group/proutils
20
+ repo: git://github.com/proutils/dnote.git
21
+
22
+ copyright: Copyright (c) 2009 Thomas Sawyer
23
+
data/REQUIRE ADDED
@@ -0,0 +1,6 @@
1
+ development:
2
+ - syckle
3
+
4
+ development/test:
5
+ - lemon
6
+
data/VERSION ADDED
@@ -0,0 +1,5 @@
1
+ name : dnote
2
+ major: 1
3
+ minor: 3
4
+ patch: 0
5
+ date : 2010-06-04
data/lib/dnote/notes.rb CHANGED
@@ -34,11 +34,15 @@ module DNote
34
34
  # Require label colon? Default is +true+.
35
35
  attr_accessor :colon
36
36
 
37
+ # Alternate remark marker. Default is '#'.
38
+ attr_accessor :marker
39
+
37
40
  # New set of notes for give +files+ and optional special labels.
38
41
  def initialize(files, options={})
39
42
  @files = [files].flatten
40
- @labels = [options[:labels]].flatten.compact
43
+ @labels = [options[:labels] || DEFAULT_LABELS].flatten.compact
41
44
  @colon = options[:colon].nil? ? true : options[:colon]
45
+ @marker = options[:marker] || '#'
42
46
  parse
43
47
  end
44
48
 
@@ -89,14 +93,15 @@ module DNote
89
93
  records << save
90
94
  else
91
95
  if text
92
- if line =~ /^\s*[#]{0,1}\s*$/ or line !~ /^\s*#/ or line =~ /^\s*#[+][+]/
96
+ case line
97
+ when /^\s*#{remark}+\s*$/, /(?!^\s*#{remark})/, /^\s*#{remark}[+][+]/
93
98
  text.strip!
94
99
  text = nil
95
100
  else
96
101
  if text[-1,1] == "\n"
97
- text << line.gsub(/^\s*#\s*/,'')
102
+ text << line.gsub(/^\s*#{remark}\s*/,'')
98
103
  else
99
- text << "\n" << line.gsub(/^\s*#\s*/,'')
104
+ text << "\n" << line.gsub(/^\s*#{remark}\s*/,'')
100
105
  end
101
106
  end
102
107
  end
@@ -135,9 +140,9 @@ module DNote
135
140
  #++
136
141
  def match_special_regex(label)
137
142
  if colon
138
- /\#\s*#{Regexp.escape(label)}[:]\s*(.*?)$/
143
+ /#{remark}\s*#{Regexp.escape(label)}[:]\s*(.*?)$/
139
144
  else
140
- /\#\s*#{Regexp.escape(label)}[:]?\s*(.*?)$/
145
+ /#{remark}\s*#{Regexp.escape(label)}[:]?\s*(.*?)$/
141
146
  end
142
147
  end
143
148
 
@@ -155,9 +160,9 @@ module DNote
155
160
  #
156
161
  def match_general_regex
157
162
  if colon
158
- /\#\s*([A-Z]+)[:]\s+(.*?)$/
163
+ /#{remark}\s*([A-Z]+)[:]\s+(.*?)$/
159
164
  else
160
- /\#\s*([A-Z]+)[:]?\s+(.*?)$/
165
+ /#{remark}\s*([A-Z]+)[:]?\s+(.*?)$/
161
166
  end
162
167
  end
163
168
 
@@ -227,6 +232,11 @@ module DNote
227
232
  by_label
228
233
  end
229
234
 
235
+ #
236
+ def remark
237
+ @remark ||= Regexp.escape(marker)
238
+ end
239
+
230
240
  # Convert to array of hashes then to YAML.
231
241
  #def to_yaml
232
242
  # require 'yaml'
data/lib/dnote/session.rb CHANGED
@@ -37,6 +37,9 @@ module DNote
37
37
  # Selected labels can optionally do without the colon.
38
38
  attr_accessor :colon
39
39
 
40
+ # Alternate remark marker. Useful to other languages besides Ruby.
41
+ attr_accessor :marker
42
+
40
43
  # Output format.
41
44
  attr_accessor :format
42
45
 
@@ -72,6 +75,7 @@ module DNote
72
75
  @format = DEFAULT_FORMAT
73
76
  @title = DEFAULT_TITLE
74
77
  @dryrun = false
78
+ @marker = '#'
75
79
  end
76
80
 
77
81
  public
@@ -88,7 +92,7 @@ module DNote
88
92
 
89
93
  # Run session.
90
94
  def run
91
- notes = Notes.new(files, :labels=>labels, :colon=>colon)
95
+ notes = Notes.new(files, :labels=>labels, :colon=>colon, :marker=>marker)
92
96
  formatter = Format.new(notes) do |f|
93
97
  f.format = format
94
98
  f.template = template
@@ -151,41 +155,9 @@ module DNote
151
155
  opt.separator(" ")
152
156
  opt.separator("OUTPUT FORMAT: (choose one)")
153
157
 
154
- #opt.on("--default", "Plain text format (default)") do
155
- # session.format = 'label'
156
- #end
157
-
158
- #opt.on("--yaml", "YAML serialization format") do
159
- # session.format = 'yaml'
160
- #end
161
-
162
- #opt.on("--json", "JSON serialization format") do
163
- # session.format = 'json'
164
- #end
165
-
166
- #opt.on("--soap", "SOAP XML envelope format") do
167
- # session.format = 'soap'
168
- #end
169
-
170
- #opt.on("--xoxo", "XOXO microformat format") do
171
- # session.format = 'xoxo'
172
- #end
173
-
174
- #opt.on("--xml", "XML markup format") do
175
- # session.format = 'xml'
176
- #end
177
-
178
- #opt.on("--html", "HTML markup format") do
179
- # session.format = 'html'
180
- #end
181
-
182
- #opt.on("--rdoc", "rdoc comment format") do
183
- # session.format = 'rdoc'
184
- #end
185
-
186
- #opt.on("--markdown", "markdown wiki format") do
187
- # session.format = 'md'
188
- #end
158
+ opt.on("--marker", '-m MARK', "Alternative remark marker") do |mark|
159
+ session.marker = mark
160
+ end
189
161
 
190
162
  opt.on("--format", "-f NAME", "select a format [text]") do |format|
191
163
  session.format = format
@@ -0,0 +1,113 @@
1
+ # = Developmer's Notes Rake Task
2
+ #
3
+ class DNoteTask < Rake::TaskLib
4
+
5
+ require 'rake/clean'
6
+
7
+ # Default note labels to looked for in source code.
8
+ DEFAULT_LABELS = ['TODO', 'FIXME', 'OPTIMIZE', 'DEPRECATE']
9
+
10
+ # File paths to search.
11
+ attr_accessor :files
12
+
13
+ # Labels to document. Defaults are: TODO, FIXME, OPTIMIZE and DEPRECATE.
14
+ attr_accessor :labels
15
+
16
+ # Formats (xml, html, rdoc, rdoc/list and so on).
17
+ attr_accessor :formats
18
+
19
+ # Exclude paths.
20
+ attr_accessor :exclude
21
+
22
+ # Ignore paths based on any part of pathname.
23
+ attr_accessor :ignore
24
+
25
+ # Output directory to save notes file. Defaults to <tt>dnote/</tt> under
26
+ # the project log directory (eg. <tt>log/dnote/</tt>).
27
+ attr_accessor :output
28
+
29
+ # Title to use if temaplte can use it.
30
+ attr_accessor :title
31
+
32
+ #
33
+ def output=(path)
34
+ @output = Pathname.new(path)
35
+ end
36
+
37
+ #
38
+ def init
39
+ require 'dnote'
40
+ require 'dnote/format'
41
+ @files = "**/*.rb"
42
+ @output = 'log/dnote'
43
+ @formats = ['index']
44
+ @labels = nil #DEFAULT_LABELS
45
+ end
46
+
47
+ #
48
+ def define
49
+ desc "Collect Developer's Notes"
50
+ task 'dnote' do
51
+ document
52
+ end
53
+ task 'dnote:clobber' do
54
+ clean
55
+ end
56
+ task :clobber => ['dnote:clobber']
57
+ end
58
+
59
+ # Generate notes document(s).
60
+ def document
61
+ abort "dnote: #{output} is not a directory" unless output.directory?
62
+
63
+ session = ::DNote::Session.new do |s|
64
+ s.paths = files
65
+ s.exclude = exclude
66
+ s.ignore = ignore
67
+ s.labels = labels #|| DEFAULT_LABELS
68
+ s.title = title
69
+ s.output = output
70
+ s.dryrun = application.options.dryrun #trial?
71
+ end
72
+
73
+ formats.each do |format|
74
+ if format == 'index'
75
+ session.format = 'html'
76
+ session.output = File.join(self.output, 'index.html')
77
+ else
78
+ session.format = format
79
+ end
80
+ session.run
81
+ report "Updated #{output.to_s.sub(Dir.pwd+'/','')}" unless trial?
82
+ end
83
+ end
84
+
85
+ # Reset output directory, marking it as out-of-date.
86
+ def reset
87
+ #if File.directory?(output)
88
+ File.utime(0,0,output) unless $NOOP
89
+ puts "Marked #{output} as out-of-date"
90
+ #end
91
+ end
92
+
93
+ # Remove output files.
94
+ def clean
95
+ #if File.directory?(output)
96
+ formats.each do |format|
97
+ if format == 'index'
98
+ file = (output + "index.html").to_s
99
+ else
100
+ ext = ::DNote::Format::EXTENSIONS[format] || format
101
+ file = (output + "notes.#{ext}").to_s
102
+ end
103
+ rm(file)
104
+ report "Removed #{output}"
105
+ end
106
+ #else
107
+ # rm(output)
108
+ # report "Removed #{output}"
109
+ #end
110
+ end
111
+
112
+ end
113
+
@@ -34,10 +34,10 @@ module Syckle::Plugins
34
34
  end
35
35
  end
36
36
 
37
- # autorun if log/notes exists
38
- autorun do |project|
39
- (project.log + 'dnote').exist?
40
- end
37
+ ## autorun if log/notes exists
38
+ #autorun do |project|
39
+ # (project.log + 'dnote').exist?
40
+ #end
41
41
 
42
42
  # Default note labels to looked for in source code.
43
43
  DEFAULT_LABELS = ['TODO', 'FIXME', 'OPTIMIZE', 'DEPRECATE']
@@ -2,7 +2,7 @@ require 'dnote/notes'
2
2
 
3
3
  Case DNote::Notes do
4
4
 
5
- Concern "Basic coverage of DNote::Notes class."
5
+ Concern "Coverage of DNote::Notes class."
6
6
 
7
7
  Unit :labels => 'returns the list of labels' do
8
8
  notes = DNote::Notes.new([], :labels=>['TODO'])
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 1
7
- - 2
8
- - 1
9
- version: 1.2.1
7
+ - 3
8
+ - 0
9
+ version: 1.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Thomas Sawyer
@@ -14,18 +14,18 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-02-20 00:00:00 -05:00
17
+ date: 2010-06-04 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
21
- description: ""
22
- email:
21
+ description: Dnote makes it easy to extract developer's notes from source code, and supports almost any language.
22
+ email: transfire@gmail.com
23
23
  executables:
24
24
  - dnote
25
25
  extensions: []
26
26
 
27
- extra_rdoc_files: []
28
-
27
+ extra_rdoc_files:
28
+ - README.rdoc
29
29
  files:
30
30
  - bin/dnote
31
31
  - lib/dnote/format.rb
@@ -70,21 +70,15 @@ files:
70
70
  - lib/dnote/templates/yaml/list.erb
71
71
  - lib/dnote/templates/yaml.erb
72
72
  - lib/dnote.rb
73
+ - lib/plugins/rake/task.rb
73
74
  - lib/plugins/syckle/dnote.rb
74
- - meta/account
75
- - meta/authors
76
- - meta/contact
77
- - meta/name
78
- - meta/released
79
- - meta/repository
80
- - meta/suite
81
- - meta/summary
82
- - meta/title
83
- - meta/version
84
- - test/cases/notes_case.rb
75
+ - test/notes_case.rb
76
+ - PROFILE
85
77
  - LICENSE
86
78
  - README.rdoc
87
79
  - HISTORY
80
+ - REQUIRE
81
+ - VERSION
88
82
  has_rdoc: true
89
83
  homepage:
90
84
  licenses: []
@@ -92,7 +86,9 @@ licenses: []
92
86
  post_install_message:
93
87
  rdoc_options:
94
88
  - --title
95
- - D'Note API
89
+ - DNote API
90
+ - --main
91
+ - README.rdoc
96
92
  require_paths:
97
93
  - lib
98
94
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -112,9 +108,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
108
  requirements: []
113
109
 
114
110
  rubyforge_project: dnote
115
- rubygems_version: 1.3.6.pre.3
111
+ rubygems_version: 1.3.6
116
112
  signing_key:
117
113
  specification_version: 3
118
- summary: Extract developer notes from source code.
114
+ summary: Extract developer's notes from source code
119
115
  test_files: []
120
116
 
data/meta/account DELETED
@@ -1 +0,0 @@
1
- proutils
data/meta/authors DELETED
@@ -1 +0,0 @@
1
- Thomas Sawyer
data/meta/contact DELETED
@@ -1 +0,0 @@
1
- http://googlegroups.com/group/proutils
data/meta/name DELETED
@@ -1 +0,0 @@
1
- dnote
data/meta/released DELETED
@@ -1 +0,0 @@
1
- 2010-02-06
data/meta/repository DELETED
@@ -1 +0,0 @@
1
- git://github.com/proutils/dnote.git
data/meta/suite DELETED
@@ -1 +0,0 @@
1
- proutils
data/meta/summary DELETED
@@ -1 +0,0 @@
1
- Extract developer notes from source code.
data/meta/title DELETED
@@ -1 +0,0 @@
1
- D'Note
data/meta/version DELETED
@@ -1 +0,0 @@
1
- 1.2.1