iba 0.0.2 → 0.0.6
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.
- checksums.yaml +7 -0
- data/lib/iba/version.rb +5 -0
- data/lib/iba.rb +213 -129
- metadata +120 -67
- data/COPYING +0 -674
- data/Rakefile +0 -3
- data/tasks/notes.rake +0 -122
- data/tasks/setup.rb +0 -6
- data/tasks/test.rake +0 -14
- data/test/analyse_test.rb +0 -58
- data/test/assert_test.rb +0 -58
- data/test/call_test.rb +0 -18
- data/test/display_test.rb +0 -57
- data/test/test_helper.rb +0 -12
data/tasks/notes.rake
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
# The following code is based on Bones 2.5.1
|
2
|
-
#
|
3
|
-
|
4
|
-
module Bones
|
5
|
-
|
6
|
-
# A helper class used to find and display any annotations in a collection of
|
7
|
-
# project files.
|
8
|
-
#
|
9
|
-
class AnnotationExtractor
|
10
|
-
|
11
|
-
class Annotation < Struct.new(:line, :tag, :text)
|
12
|
-
# Returns a string representation of the annotation. If the
|
13
|
-
# <tt>:tag</tt> parameter is given as +true+, then the annotation tag
|
14
|
-
# will be included in the string.
|
15
|
-
#
|
16
|
-
def to_s( opts = {} )
|
17
|
-
s = "[%3d] " % line
|
18
|
-
s << "[#{tag}] " if opts[:tag]
|
19
|
-
s << text
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# Enumerate all the annoations for the given _project_ and _tag_. This
|
24
|
-
# will search for all athe annotations and display them on standard
|
25
|
-
# output.
|
26
|
-
#
|
27
|
-
def self.enumerate tag, id = nil, opts = {}
|
28
|
-
extractor = new(tag, id)
|
29
|
-
extractor.display(extractor.find, opts)
|
30
|
-
end
|
31
|
-
|
32
|
-
attr_reader :tag, :id
|
33
|
-
|
34
|
-
# Creates a new annotation extractor configured to use the _project_ open
|
35
|
-
# strcut and to search for the given _tag_ (which can be more than one tag
|
36
|
-
# via a regular expression 'or' operation -- i.e. THIS|THAT|OTHER)
|
37
|
-
#
|
38
|
-
def initialize tag, id
|
39
|
-
@tag = tag
|
40
|
-
@id = @id_rgxp = nil
|
41
|
-
|
42
|
-
unless id.nil? or id.empty?
|
43
|
-
@id = id
|
44
|
-
@id_rgxp = Regexp.new(Regexp.escape(id), Regexp::IGNORECASE)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Iterate over all the files in the project and extract annotations from
|
49
|
-
# the those files. Returns the results as a hash for display.
|
50
|
-
#
|
51
|
-
def find
|
52
|
-
results = {}
|
53
|
-
rgxp = %r/(#{tag}):?\s*(.*?)(?:\s*(?:-?%>|\*+\/))?$/o
|
54
|
-
|
55
|
-
files = Dir.glob("lib/**/*.rb")
|
56
|
-
files += Dir.glob("test/**/*.rb")
|
57
|
-
files += Dir.glob("bin/*")
|
58
|
-
files.each do |fn|
|
59
|
-
results.update(extract_annotations_from(fn, rgxp))
|
60
|
-
end
|
61
|
-
|
62
|
-
results
|
63
|
-
end
|
64
|
-
|
65
|
-
# Extract any annotations from the given _file_ using the regular
|
66
|
-
# expression _pattern_ provided.
|
67
|
-
#
|
68
|
-
def extract_annotations_from( file, pattern )
|
69
|
-
lineno = 0
|
70
|
-
result = File.readlines(file).inject([]) do |list, line|
|
71
|
-
lineno += 1
|
72
|
-
next list unless m = pattern.match(line)
|
73
|
-
next list << Annotation.new(lineno, m[1], m[2]) unless id
|
74
|
-
|
75
|
-
text = m[2]
|
76
|
-
if text =~ @id_rgxp
|
77
|
-
list << Annotation.new(lineno, m[1], text)
|
78
|
-
end
|
79
|
-
list
|
80
|
-
end
|
81
|
-
result.empty? ? {} : { file => result }
|
82
|
-
end
|
83
|
-
|
84
|
-
# Print the results of the annotation extraction to the screen. If the
|
85
|
-
# <tt>:tags</tt> option is set to +true+, then the annotation tag will be
|
86
|
-
# displayed.
|
87
|
-
#
|
88
|
-
def display( results, opts = {} )
|
89
|
-
results.keys.sort.each do |file|
|
90
|
-
puts "#{file}:"
|
91
|
-
results[file].each do |note|
|
92
|
-
puts " * #{note.to_s(opts)}"
|
93
|
-
end
|
94
|
-
puts
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
end # class AnnotationExtractor
|
99
|
-
end # module Bones
|
100
|
-
|
101
|
-
note_tags = ["TODO", "FIXME", "OPTIMIZE"]
|
102
|
-
|
103
|
-
desc "Enumerate all annotations"
|
104
|
-
task :notes do |t|
|
105
|
-
id = if t.application.top_level_tasks.length > 1
|
106
|
-
t.application.top_level_tasks.slice!(1..-1).join(' ')
|
107
|
-
end
|
108
|
-
Bones::AnnotationExtractor.enumerate(
|
109
|
-
note_tags.join('|'), id, :tag => true)
|
110
|
-
end
|
111
|
-
|
112
|
-
namespace :notes do
|
113
|
-
note_tags.each do |tag|
|
114
|
-
desc "Enumerate all #{tag} annotations"
|
115
|
-
task tag.downcase.to_sym do |t|
|
116
|
-
id = if t.application.top_level_tasks.length > 1
|
117
|
-
t.application.top_level_tasks.slice!(1..-1).join(' ')
|
118
|
-
end
|
119
|
-
Bones::AnnotationExtractor.enumerate(tag, id)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
data/tasks/setup.rb
DELETED
data/tasks/test.rake
DELETED
data/test/analyse_test.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
# Test how the combinator analyses the parsed block contents.
|
4
|
-
class AnalyseTest < Test::Unit::TestCase
|
5
|
-
def test_empty_block
|
6
|
-
assert_equal "nil is nil", combinator { }.analyse
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_variable
|
10
|
-
foo = 23
|
11
|
-
assert_equal "foo is 23", combinator { foo }.analyse
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_operator_equals
|
15
|
-
foo = 42
|
16
|
-
bar = 23
|
17
|
-
assert_equal "(foo == bar) is false\nfoo is 42, bar is 23",
|
18
|
-
combinator { foo == bar }.analyse
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_operator_equals_literal
|
22
|
-
foo = 42
|
23
|
-
assert_equal "(foo == 23) is false\nfoo is 42",
|
24
|
-
combinator { foo == 23 }.analyse
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_operator_equals_array_literal
|
28
|
-
foo = [1, "bar"]
|
29
|
-
assert_equal "(foo == [2, \"baz\"]) is false\nfoo is [1, \"bar\"]",
|
30
|
-
combinator { foo == [2, "baz"] }.analyse
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_string_variable
|
34
|
-
foo = "blub"
|
35
|
-
assert_equal "foo is \"blub\"", combinator { foo }.analyse
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_array_variable
|
39
|
-
foo = [1, 2]
|
40
|
-
assert_equal "foo is [1, 2]", combinator { foo }.analyse
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_object_variable
|
44
|
-
foo = Object.new
|
45
|
-
insp = foo.inspect
|
46
|
-
assert_equal "foo is #{insp}", combinator { foo }.analyse
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_literal
|
50
|
-
assert_equal "23 is 23", combinator { 23 }.analyse
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_instance_variable
|
54
|
-
@foo = 23
|
55
|
-
assert_equal "@foo is 23", combinator { @foo }.analyse
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
data/test/assert_test.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
# Test behavior of overridden assert method.
|
4
|
-
class AssertTest < Test::Unit::TestCase
|
5
|
-
def test_simple_assert
|
6
|
-
assert { true }
|
7
|
-
end
|
8
|
-
|
9
|
-
def failing_block_assertion_test message, &block
|
10
|
-
begin
|
11
|
-
assert(&block)
|
12
|
-
rescue Exception => e
|
13
|
-
assert_equal message, e.message
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_simple_failing_assert
|
18
|
-
failing_block_assertion_test("false is false.") { false }
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_operator_equals_assert
|
22
|
-
foo = 24
|
23
|
-
failing_block_assertion_test("(foo == 23) is false\nfoo is 24.") { foo == 23 }
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_instance_variable_assert
|
27
|
-
@foo = 24
|
28
|
-
failing_block_assertion_test("(@foo == 23) is false\n@foo is 24.") { @foo == 23 }
|
29
|
-
end
|
30
|
-
|
31
|
-
# Special cases
|
32
|
-
|
33
|
-
def test_assert_with_custom_message
|
34
|
-
foo = false
|
35
|
-
begin
|
36
|
-
assert("We want foo") { foo }
|
37
|
-
rescue Exception => e
|
38
|
-
assert_equal "We want foo.\nfoo is false.", e.message
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_original_assert
|
43
|
-
begin
|
44
|
-
assert false
|
45
|
-
rescue Exception => e
|
46
|
-
assert_equal "<false> is not true.", e.message
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_original_assert_with_custom_message
|
51
|
-
begin
|
52
|
-
assert false, "We want the truth"
|
53
|
-
rescue Exception => e
|
54
|
-
assert_equal "We want the truth.\n<false> is not true.", e.message
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
data/test/call_test.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
# Test how the combinator calls the passed block.
|
4
|
-
class CallTest < Test::Unit::TestCase
|
5
|
-
def test_empty_combinator
|
6
|
-
assert_equal nil, combinator { }.call
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_variable
|
10
|
-
foo = 23
|
11
|
-
assert_equal 23, combinator { foo }.call
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_operator_call
|
15
|
-
foo = 23
|
16
|
-
assert_equal true, combinator { foo == 23 }.call
|
17
|
-
end
|
18
|
-
end
|
data/test/display_test.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
# Test how the combinator displays the parsed block contents.
|
4
|
-
class DisplayTest < Test::Unit::TestCase
|
5
|
-
def test_empty_combinator
|
6
|
-
assert_equal "nil", combinator { }.to_s
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_literal_number
|
10
|
-
assert_equal "23", combinator { 23 }.to_s
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_literal_string
|
14
|
-
assert_equal "\"aa\"", combinator { "aa" }.to_s
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_method_calls
|
18
|
-
assert_equal "foo", combinator { foo }.to_s
|
19
|
-
assert_equal "foo.foo", combinator { foo.foo }.to_s
|
20
|
-
assert_equal "foo.foo(1)", combinator { foo.foo 1 }.to_s
|
21
|
-
assert_equal "foo(1)", combinator { foo 1 }.to_s
|
22
|
-
assert_equal "foo(bar)", combinator { foo bar }.to_s
|
23
|
-
assert_equal "foo(1).bar", combinator { foo(1).bar }.to_s
|
24
|
-
assert_equal "foo.foo.foo", combinator { foo.foo.foo }.to_s
|
25
|
-
assert_equal "foo(bar.baz)", combinator { foo bar.baz }.to_s
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_operators
|
29
|
-
assert_equal "(foo + 1)", combinator { foo + 1 }.to_s
|
30
|
-
assert_equal "(foo - 1)", combinator { foo - 1 }.to_s
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_operator_equals
|
34
|
-
assert_equal "(foo == 1)", combinator { foo == 1 }.to_s
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_array_index
|
38
|
-
assert_equal "foo[1]", combinator { foo[1] }.to_s
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_to_s_method
|
42
|
-
assert_equal "foo.to_s", combinator { foo.to_s }.to_s
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_operator_unary_minus
|
46
|
-
assert_equal "-foo", combinator { -foo }.to_s
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_operator_if_wont_work
|
50
|
-
assert_equal "bar", combinator { foo ? bar : baz }.to_s
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_defined_instance_variables
|
54
|
-
@foo = 1
|
55
|
-
assert_equal "@foo", combinator { @foo }.to_s
|
56
|
-
end
|
57
|
-
end
|
data/test/test_helper.rb
DELETED