seeing_is_believing 0.0.14 → 0.0.15
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/Readme.md
CHANGED
@@ -11,6 +11,7 @@ Also comes with a binary to show how it might be used.
|
|
11
11
|
|
12
12
|
For whatever reason, I can't embed videos, but **here's a ~1 minute [video][video]** showing it off.
|
13
13
|
|
14
|
+
Works in Ruby 1.9 and 2.0
|
14
15
|
|
15
16
|
Use The Binary
|
16
17
|
==============
|
@@ -130,6 +131,7 @@ Known Issues
|
|
130
131
|
* `BEGIN/END` breaks things and I probably won't take the time to fix it, becuase it's nontrivial and its really meant for command-line scripts, but there is currently a cuke for it
|
131
132
|
* Heredocs aren't recorded. It might actually be possible if the ExpressionList were to get smarter
|
132
133
|
* Return statements are dealt with poorly, causing some situations where you could capture and display a value to not capture
|
134
|
+
* errors come out really shitty if you're calling them from another program like TextMate, would be better to put a line in that shows where the error is.
|
133
135
|
|
134
136
|
License
|
135
137
|
=======
|
data/features/examples.feature
CHANGED
@@ -30,8 +30,9 @@ Feature: Running the binary successfully
|
|
30
30
|
|
31
31
|
# multilinezzz
|
32
32
|
"a
|
33
|
-
b
|
34
|
-
|
33
|
+
b"
|
34
|
+
/a
|
35
|
+
b/x
|
35
36
|
|
36
37
|
# don't record heredocs b/c they're just too fucking different
|
37
38
|
<<HERE
|
@@ -82,8 +83,9 @@ Feature: Running the binary successfully
|
|
82
83
|
|
83
84
|
# multilinezzz
|
84
85
|
"a
|
85
|
-
b
|
86
|
-
|
86
|
+
b" # => "a\n b"
|
87
|
+
/a
|
88
|
+
b/x # => /a\n b/x
|
87
89
|
|
88
90
|
# don't record heredocs b/c they're just too fucking different
|
89
91
|
<<HERE
|
@@ -15,14 +15,16 @@ class SeeingIsBelieving
|
|
15
15
|
# e.g. SyntaxAnalyzer.new('"a').parse
|
16
16
|
def ends_match?(beginning, ending)
|
17
17
|
return false unless beginning && ending
|
18
|
-
return beginning == ending if beginning.size == 1
|
18
|
+
return beginning == ending if beginning.size == 1 && ending.size == 1
|
19
19
|
case beginning[-1]
|
20
20
|
when '<' then '>' == ending
|
21
21
|
when '(' then ')' == ending
|
22
22
|
when '[' then ']' == ending
|
23
23
|
when '{' then '}' == ending
|
24
|
+
when '/' then ending =~ /\A\// # example: /a/x
|
24
25
|
else
|
25
|
-
|
26
|
+
# example: %Q.a. %_a_ %r|a| ...
|
27
|
+
beginning.start_with?('%') && beginning.end_with?(ending)
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
@@ -135,7 +137,7 @@ class SeeingIsBelieving
|
|
135
137
|
# this is conspicuosuly inferior, but I can't figure out how to actually parse it
|
136
138
|
# see: http://www.ruby-forum.com/topic/4409633
|
137
139
|
def self.will_return?(code)
|
138
|
-
/(^|\s)return.*?\n?\z
|
140
|
+
/(^|\s)return.*?\n?\z/ =~ code
|
139
141
|
end
|
140
142
|
|
141
143
|
# HERE DOCS
|
@@ -52,20 +52,20 @@ describe SeeingIsBelieving::SyntaxAnalyzer do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'knows if it contains an unclosed comment' do
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
55
|
+
is_unclosed_comment = lambda { |code| described_class.unclosed_comment? code }
|
56
|
+
is_unclosed_comment["=begin"].should be_true
|
57
|
+
is_unclosed_comment["=begin\n"].should be_true
|
58
|
+
is_unclosed_comment["=begin\n1"].should be_true
|
59
|
+
is_unclosed_comment["1\n=begin\n1\n"].should be_true
|
60
|
+
is_unclosed_comment["1\n=begin\n1\n =end"].should be_true
|
61
|
+
is_unclosed_comment["1\n=begin\n1\n=end"].should be_false
|
62
|
+
is_unclosed_comment[" =begin"].should be_false
|
63
63
|
end
|
64
64
|
|
65
65
|
# probably don't really need this many tests, but I'm unfamiliar with how thorough Ripper is
|
66
66
|
# and already found areas where it doesn't behave correctly
|
67
67
|
it 'knows if the code contains an unclosed string' do
|
68
|
-
|
68
|
+
is_unclosed_string = lambda { |code| described_class.unclosed_string? code }
|
69
69
|
[%(a),
|
70
70
|
%("a"),
|
71
71
|
%("a \n"),
|
@@ -89,7 +89,7 @@ describe SeeingIsBelieving::SyntaxAnalyzer do
|
|
89
89
|
%(%<>),
|
90
90
|
%(%..),
|
91
91
|
].each do |string|
|
92
|
-
|
92
|
+
is_unclosed_string[string].should be_false, "Expected #{string.inspect} to be closed"
|
93
93
|
end
|
94
94
|
|
95
95
|
[%(a "),
|
@@ -113,12 +113,12 @@ describe SeeingIsBelieving::SyntaxAnalyzer do
|
|
113
113
|
%("\#{"}"),
|
114
114
|
%("\#{%(\#{%[\#{%[}]})}"),
|
115
115
|
].each do |string|
|
116
|
-
|
116
|
+
is_unclosed_string[string].should be_true, "Expected #{string.inspect} to be unclosed"
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
120
|
it 'knows if the code contains an unclosed regexp' do
|
121
|
-
|
121
|
+
is_unclosed_regexp = lambda { |code| described_class.unclosed_regexp? code }
|
122
122
|
[%(a),
|
123
123
|
%(/a/),
|
124
124
|
%(/a \n/),
|
@@ -130,8 +130,11 @@ describe SeeingIsBelieving::SyntaxAnalyzer do
|
|
130
130
|
%(%r{}),
|
131
131
|
%(%r<>),
|
132
132
|
%(%r..),
|
133
|
+
%(/\na\nb\n/x),
|
134
|
+
%(r..i),
|
135
|
+
%(/\na\nb\n/xmi),
|
133
136
|
].each do |code|
|
134
|
-
|
137
|
+
is_unclosed_regexp[code].should be_false, "Expected #{code.inspect} to be closed"
|
135
138
|
end
|
136
139
|
|
137
140
|
[%(a + /),
|
@@ -147,7 +150,7 @@ describe SeeingIsBelieving::SyntaxAnalyzer do
|
|
147
150
|
%(%r[\#{),
|
148
151
|
%("\#{%r[}"),
|
149
152
|
].each do |code|
|
150
|
-
|
153
|
+
is_unclosed_regexp[code].should be_true, "Expected #{code.inspect} to be unclosed"
|
151
154
|
end
|
152
155
|
end
|
153
156
|
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seeing_is_believing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.15
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Josh Cheek
|
@@ -11,61 +12,69 @@ cert_chain: []
|
|
11
12
|
date: 2013-03-02 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 10.0.3
|
20
|
+
none: false
|
21
|
+
name: rake
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
|
-
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
23
25
|
requirements:
|
24
26
|
- - ~>
|
25
27
|
- !ruby/object:Gem::Version
|
26
28
|
version: 10.0.3
|
29
|
+
none: false
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
|
-
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
32
|
requirements:
|
31
33
|
- - ~>
|
32
34
|
- !ruby/object:Gem::Version
|
33
35
|
version: 2.12.0
|
36
|
+
none: false
|
37
|
+
name: rspec
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
|
-
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
37
41
|
requirements:
|
38
42
|
- - ~>
|
39
43
|
- !ruby/object:Gem::Version
|
40
44
|
version: 2.12.0
|
45
|
+
none: false
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
|
-
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
48
|
requirements:
|
45
49
|
- - ~>
|
46
50
|
- !ruby/object:Gem::Version
|
47
51
|
version: 1.2.1
|
52
|
+
none: false
|
53
|
+
name: cucumber
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
|
-
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - ~>
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: 1.2.1
|
61
|
+
none: false
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
|
-
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - ~>
|
60
66
|
- !ruby/object:Gem::Version
|
61
67
|
version: 5.1.1
|
68
|
+
none: false
|
69
|
+
name: ichannel
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
|
-
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
65
73
|
requirements:
|
66
74
|
- - ~>
|
67
75
|
- !ruby/object:Gem::Version
|
68
76
|
version: 5.1.1
|
77
|
+
none: false
|
69
78
|
description: Records the results of every line of code in your file (intended to be
|
70
79
|
like xmpfilter), inspired by Bret Victor's JavaScript example in his talk "Inventing
|
71
80
|
on Principle"
|
@@ -119,26 +128,27 @@ files:
|
|
119
128
|
homepage: https://github.com/JoshCheek/seeing_is_believing
|
120
129
|
licenses:
|
121
130
|
- WTFPL
|
122
|
-
metadata: {}
|
123
131
|
post_install_message:
|
124
132
|
rdoc_options: []
|
125
133
|
require_paths:
|
126
134
|
- lib
|
127
135
|
required_ruby_version: !ruby/object:Gem::Requirement
|
128
136
|
requirements:
|
129
|
-
- - '>='
|
137
|
+
- - ! '>='
|
130
138
|
- !ruby/object:Gem::Version
|
131
139
|
version: '0'
|
140
|
+
none: false
|
132
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
142
|
requirements:
|
134
|
-
- - '>='
|
143
|
+
- - ! '>='
|
135
144
|
- !ruby/object:Gem::Version
|
136
145
|
version: '0'
|
146
|
+
none: false
|
137
147
|
requirements: []
|
138
148
|
rubyforge_project: seeing_is_believing
|
139
|
-
rubygems_version:
|
149
|
+
rubygems_version: 1.8.23
|
140
150
|
signing_key:
|
141
|
-
specification_version:
|
151
|
+
specification_version: 3
|
142
152
|
summary: Records results of every line of code in your file
|
143
153
|
test_files:
|
144
154
|
- features/errors.feature
|
@@ -155,3 +165,4 @@ test_files:
|
|
155
165
|
- spec/queue_spec.rb
|
156
166
|
- spec/seeing_is_believing_spec.rb
|
157
167
|
- spec/syntax_analyzer_spec.rb
|
168
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: c99b16d96b21e8940fcb38b3aabecfd237c59d09
|
4
|
-
data.tar.gz: 3b871ae98e98cc26ac8cb123a09b31fe8cc3bcea
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: c68fece19b501e2ce1decdc23a128a010e500a1ddcd1fdf2eedd3047ae8c6807e51c7fc61f04ec40bbdbb0687e12c4d29338a31f5d779255213b1361245fd6e2
|
7
|
-
data.tar.gz: bc28374e2d99a03abf05c17e63de56c3388f78afe699644736744d1173f475088c883fa2f2e5f828b683e0e2733716121d841dfc777e3c1b7a8bc4167517e714
|