seeing_is_believing 2.0.0.beta1 → 2.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/Readme.md +8 -20
  3. data/features/examples.feature +1 -3
  4. data/features/flags.feature +4 -12
  5. data/features/regression.feature +95 -1
  6. data/lib/seeing_is_believing.rb +17 -21
  7. data/lib/seeing_is_believing/binary.rb +3 -3
  8. data/lib/seeing_is_believing/binary/add_annotations.rb +86 -118
  9. data/lib/seeing_is_believing/binary/align_chunk.rb +22 -23
  10. data/lib/seeing_is_believing/binary/align_file.rb +10 -13
  11. data/lib/seeing_is_believing/binary/align_line.rb +0 -4
  12. data/lib/seeing_is_believing/binary/arg_parser.rb +11 -11
  13. data/lib/seeing_is_believing/binary/clean_body.rb +96 -0
  14. data/lib/seeing_is_believing/binary/comment_formatter.rb +55 -0
  15. data/lib/seeing_is_believing/binary/comment_lines.rb +37 -0
  16. data/lib/seeing_is_believing/binary/commentable_lines.rb +158 -0
  17. data/lib/seeing_is_believing/binary/rewrite_comments.rb +42 -0
  18. data/lib/seeing_is_believing/result.rb +2 -9
  19. data/lib/seeing_is_believing/the_matrix.rb +8 -8
  20. data/lib/seeing_is_believing/version.rb +1 -1
  21. data/lib/seeing_is_believing/{program_rewriter.rb → wrap_expressions.rb} +30 -22
  22. data/spec/binary/arg_parser_spec.rb +7 -7
  23. data/spec/binary/clean_body_spec.rb +217 -0
  24. data/spec/binary/comment_formatter_spec.rb +54 -0
  25. data/spec/binary/comment_lines_spec.rb +847 -0
  26. data/spec/binary/rewrite_comments_spec.rb +54 -0
  27. data/spec/seeing_is_believing_spec.rb +1 -2
  28. data/spec/{program_rewriter_spec.rb → wrap_expressions_spec.rb} +117 -40
  29. metadata +41 -56
  30. data/lib/seeing_is_believing/binary/line_formatter.rb +0 -47
  31. data/lib/seeing_is_believing/binary/remove_previous_annotations.rb +0 -75
  32. data/lib/seeing_is_believing/queue.rb +0 -55
  33. data/lib/seeing_is_believing/remove_inline_comments.rb +0 -46
  34. data/lib/seeing_is_believing/syntax_analyzer.rb +0 -61
  35. data/lib/seeing_is_believing/tracks_line_numbers_seen.rb +0 -19
  36. data/spec/binary/line_formatter_spec.rb +0 -53
  37. data/spec/binary/remove_previous_annotations_spec.rb +0 -198
  38. data/spec/queue_spec.rb +0 -80
  39. data/spec/syntax_analyzer_spec.rb +0 -56
@@ -1,80 +0,0 @@
1
- require 'seeing_is_believing/queue'
2
-
3
- describe SeeingIsBelieving::Queue do
4
- def queue_for(*values)
5
- described_class.new { values.shift }
6
- end
7
-
8
- it 'generates values from the block it is initialized with' do
9
- queue = queue_for 1, 2
10
- queue.dequeue.should == 1
11
- queue.dequeue.should == 2
12
- queue.dequeue.should == nil
13
- end
14
-
15
- it 'can peek ahead' do
16
- queue = queue_for 1, 2
17
- queue.peek.should == 1
18
- queue.peek.should == 1
19
- queue.dequeue.should == 1
20
- queue.dequeue.should == 2
21
- end
22
-
23
- it 'considers a nil value to mean it is empty' do
24
- queue = queue_for 1, 2
25
- queue.should_not be_empty
26
- queue.peek.should == 1
27
- queue.should_not be_empty
28
- queue.dequeue.should == 1
29
- queue.should_not be_empty
30
- queue.peek.should == 2
31
- queue.should_not be_empty
32
- queue.dequeue.should == 2
33
- queue.should be_empty
34
- queue.peek.should == nil
35
- end
36
-
37
- it 'yields nil infinitely after the first time it is seen' do
38
- queue = queue_for nil, 1
39
- queue.should be_empty
40
- queue.peek.should == nil
41
- queue.dequeue.should == nil
42
- queue.should be_empty
43
- queue.peek.should == nil
44
- queue.dequeue.should == nil
45
- end
46
-
47
- it 'can (destructively) iterate over its items until it is empty' do
48
- queue = queue_for *1..5
49
- seen = []
50
- queue.each { |i| seen << i }
51
- seen.should == [*1..5]
52
- queue.should be_empty
53
- end
54
-
55
- describe 'conditional iteration' do
56
- it 'can iterate while a condition is met' do
57
- queue = queue_for *1..5
58
- seen = []
59
- queue.while { |arg| arg < 4 }.each { |arg| seen << arg }
60
- seen.should == [1, 2, 3]
61
- queue.peek.should == 4
62
- end
63
-
64
- it 'can iterate until a condition is met' do
65
- queue = queue_for *1..5
66
- seen = []
67
- queue.until { |arg| arg == 4 }.each { |arg| seen << arg }
68
- seen.should == [1, 2, 3]
69
- queue.peek.should == 4
70
- end
71
-
72
- it 'stops iterating when it hits the end of the queue' do
73
- queue = queue_for *1..5
74
- seen = []
75
- queue.while { true }.each { |arg| seen << arg }
76
- seen.should == [*1..5]
77
- queue.should be_empty
78
- end
79
- end
80
- end
@@ -1,56 +0,0 @@
1
- require 'seeing_is_believing'
2
-
3
- describe SeeingIsBelieving::SyntaxAnalyzer do
4
- it 'knows if the last line is a comment' do
5
- is_comment = lambda { |code| described_class.ends_in_comment? code }
6
-
7
- # true
8
- is_comment['# whatev'].should be_true
9
- is_comment['a # whatev'].should be_true
10
- is_comment["a \n b # whatev"].should be_true
11
- is_comment["=begin\n1\n=end"].should be_true
12
- is_comment["# Transfer-Encoding: chunked"].should be_true
13
-
14
- # false
15
- is_comment['a'].should be_false
16
- is_comment["a # whatev \n b"].should be_false
17
- is_comment[""].should be_false
18
- is_comment["=begin\n=end\n\n =end"].should be_false
19
- pending "Fix comments to not be shit" do
20
- is_comment[%'"\n\#{1}"'].should be_false
21
- end
22
- end
23
-
24
- it 'knows if it contains an unclosed comment' do
25
- is_unclosed_comment = lambda { |code| described_class.unclosed_comment? code }
26
- is_unclosed_comment["=begin"].should be_true
27
- is_unclosed_comment["=begin\n"].should be_true
28
- is_unclosed_comment["=begin\n1"].should be_true
29
- is_unclosed_comment["1\n=begin\n1\n"].should be_true
30
- is_unclosed_comment["1\n=begin\n1\n =end"].should be_true
31
- is_unclosed_comment["1\n=begin\n1\n=end"].should be_false
32
- is_unclosed_comment[" =begin"].should be_false
33
- end
34
-
35
- it 'knows if the line begins a multiline comment' do
36
- described_class.begins_multiline_comment?('=begin').should be_true
37
- described_class.begins_multiline_comment?('=begins').should be_false
38
- end
39
-
40
- it 'knows if the line ends a multiline comment' do
41
- described_class.ends_multiline_comment?('=end').should be_true
42
- described_class.ends_multiline_comment?('=ends').should be_false
43
- end
44
-
45
- it 'knows when the line is a comment' do
46
- described_class.line_is_comment?('# abc').should be_true
47
- described_class.line_is_comment?(' # abc').should be_true
48
- described_class.line_is_comment?('a # abc').should be_false
49
- described_class.line_is_comment?('abc').should be_false
50
- end
51
-
52
- it 'knows when a line opens the data segment' do
53
- described_class.begins_data_segment?('__END__').should be_true
54
- described_class.begins_data_segment?('__ENDS__').should be_false
55
- end
56
- end