notes 0.0.1 → 0.0.2

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/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.0.2
2
+
3
+ * Now search for exact word. e.g. TODO_LIST or TODOLIST will be ignored if TODO is asked.
4
+ * A suffix is allowed (i.e. ':' or ' :') and will be ignored in annotation text.
5
+
1
6
  == 0.0.1
2
7
 
3
8
  Initial version of Notes gem.
data/README.rdoc CHANGED
@@ -3,9 +3,9 @@
3
3
  == grep annotations in source files
4
4
 
5
5
  This lib provides a Ruby library and command line tool to find annotations in source files such as:
6
- * TODO
7
- * FIXME
8
- * OPTIMIZE
6
+ * TODO
7
+ * FIXME
8
+ * OPTIMIZE
9
9
  Custom tags can also be found.
10
10
 
11
11
  The purpose of this code is to get a generic version of the `rake notes' command (only used for Ruby on Rails applications).
@@ -35,12 +35,12 @@ For details, see the help.
35
35
  -a, --all Search TODO, FIXME and OPTIMIZE annotations
36
36
  -t, --todo Search TODO annotations
37
37
  -f, --fixme Search FIXME annotations
38
- -i, --improve Search OPTIMIZE annotations
38
+ -z, --optimize Search OPTIMIZE annotations
39
39
  -c, --custom=TAG Search TAG annotations
40
40
  -o, --out=FILE Save output in FILE
41
41
  -v, --version Print notes version
42
42
  Example: notes -ac IMPROVE test.c lib
43
- will search for TODO, FIXME, OPTIMIZE and IMPROVE annotations in test.c lib directory.
43
+ will search for TODO, FIXME, OPTIMIZE and IMPROVE annotations in test.c file and lib directory.
44
44
 
45
45
  Another example:
46
46
 
@@ -71,11 +71,11 @@ This code can be used as a Ruby lib. Let's see how it works in irb:
71
71
 
72
72
  $ irb
73
73
  >> require 'notes'
74
- >> AnnotationExtractor.tags << "FOO"
75
- >> notes = AnnotationExtractor.new "test/data/sample.c"
76
- >> notes.list
77
- >> notes.get "FIXME"
78
- >> notes.write "TODO.rdoc"
74
+ >> AnnotationExtractor.tags << "FOO" # Add custom tag
75
+ >> notes = AnnotationExtractor.new "test/data/sample.c" # Parse file
76
+ >> notes.list # Return the array of annotations
77
+ >> notes.get "FIXME" # Return the array of FIXME annotations only
78
+ >> notes.write "TODO.rdoc" # Write all annotations in a file
79
79
 
80
80
  == License
81
81
 
data/lib/notes.rb CHANGED
@@ -10,7 +10,7 @@ require 'rubygems'
10
10
  require 'rak'
11
11
 
12
12
  class AnnotationExtractor
13
- VERSION = "0.0.1"
13
+ VERSION = "0.0.2"
14
14
 
15
15
  # An annotation class.
16
16
  class Annotation
@@ -68,9 +68,10 @@ class AnnotationExtractor
68
68
 
69
69
  private
70
70
 
71
- # Extract for annotations.
71
+ # Extract annotations.
72
72
  def extract
73
73
  tags = self.class.tags.join("|")
74
+ suffix = "\s?:?" # Allowed annotation suffix.
74
75
  source = @source.join(" ")
75
76
 
76
77
  # Because of different rak versions,
@@ -84,12 +85,15 @@ class AnnotationExtractor
84
85
  # 0.9 is the current rak version from rubygems.
85
86
  # 1.1 is the current rak version from the github repo.
86
87
  if rak_version == "1.1"
87
- regex = /^(.*):(\d*):.*(#{tags})\s*(.*)$/
88
+ #TODO /^(.+):(\d+):...?
89
+ regex = /^(.*):(\d*):.*(#{tags})#{suffix}(.*)$/
88
90
  else
89
- regex = /^([^\s]+)\s+(\d+)\|.*(#{tags})\s*(.*)$/
91
+ regex = /^([^\s]+)\s+(\d+)\|.*(#{tags})#{suffix}(.*)$/
90
92
  end
93
+ # TODO extract first matching annotation if there're many on a line.
94
+ # e.g. "TODO: Rename $TODOLIST variable."
91
95
 
92
- out = `rak '#{tags}' #{source}`.strip
96
+ out = `rak '(#{tags})#{suffix}\s+' #{source}`.strip
93
97
 
94
98
  @list = out.split("\n").map do |l|
95
99
  if l =~ regex
data/test/data/sample.c CHANGED
@@ -23,13 +23,13 @@ int main()
23
23
  size_t a_size = sizeof(struct sockaddr_in);
24
24
  void *buffer = malloc(STEP);
25
25
 
26
- //FIXME first fixme thing
26
+ //FIXME: first fixme thing
27
27
  int port = 4242;
28
28
 
29
29
  /* address server sock */
30
30
  struct sockaddr_in addr = {AF_INET, htons(port), {htonl(INADDR_ANY)}};
31
31
 
32
- //TODO second todo thing!
32
+ //TODO : second todo thing!
33
33
  /* client sock */
34
34
  struct sockaddr_in client;
35
35
 
@@ -39,10 +39,13 @@ int main()
39
39
  /* bind socket to local */
40
40
  bind(sock, (struct sockaddr*) &addr, sizeof(struct sockaddr_in));
41
41
 
42
- //OPTIMIZE make it better
42
+ //OPTIMIZE make it better
43
43
  while(1)
44
44
  {
45
45
  //FOO a custom tag
46
+ //FOOBAR this should not be found if 'FOO' is asked. Same thing for:
47
+ //TODOLIST blah blah
48
+ //TODO_LIST etc.
46
49
  while (recvfrom(sock, buffer, size, MSG_PEEK, NULL, NULL) == size)
47
50
  buffer = realloc(buffer, size += STEP); //TODO hello world
48
51
 
data/test/notes_test.rb CHANGED
@@ -23,6 +23,14 @@ class NotesTest < Test::Unit::TestCase
23
23
  notes = AnnotationExtractor.new(@sample)
24
24
  assert_equal 6, notes.list.size
25
25
 
26
+ # Test exact text
27
+ assert_equal "first thing to do", notes.list[0].text
28
+ assert_equal "first fixme thing", notes.list[1].text
29
+ assert_equal "second todo thing!", notes.list[2].text
30
+ assert_equal "make it better", notes.list[3].text
31
+ assert_equal "a custom tag", notes.list[4].text
32
+ assert_equal "hello world", notes.list[5].text
33
+
26
34
  AnnotationExtractor.tags = "OPTIMIZE"
27
35
  notes = AnnotationExtractor.new(@sample)
28
36
  assert_equal 1, notes.list.size
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notes
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Vivien Didelot
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-13 00:00:00 +01:00
18
+ date: 2010-12-02 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency