seeing_is_believing 2.0.0.beta1 → 2.0.0.beta2

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.
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