seeing_is_believing 2.1.4 → 2.2.0
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 +4 -4
- data/Readme.md +27 -23
- data/docs/example.gif +0 -0
- data/lib/seeing_is_believing/binary.rb +5 -5
- data/lib/seeing_is_believing/evaluate_by_moving_files.rb +1 -1
- data/lib/seeing_is_believing/line.rb +3 -1
- data/lib/seeing_is_believing/parser_helpers.rb +11 -1
- data/lib/seeing_is_believing/version.rb +1 -1
- data/lib/seeing_is_believing/wrap_expressions.rb +0 -1
- data/seeing_is_believing.gemspec +5 -5
- data/spec/hard_core_ensure_spec.rb +1 -0
- metadata +22 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a2d2874d2ed6cf8165af907b62ecee8e271b5f6
|
4
|
+
data.tar.gz: b84abdaafa69646c8a71fabf979cfb334beaa197
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb5fe068ff82a068246a81865807c2aa9acd711f29dd93223b4950968a7c2d3e394df146e99832b655f73d8abe44c00acb5e34ccc8105c527d97065e61cd8799
|
7
|
+
data.tar.gz: 31c4079565ae48e1fe9c15b81dcbbf775f21588afe4b6372ee818ef06ab333cac5da3670013c41b5496e36a9f68c808cc235961f94212954f60e1a5ed326e108
|
data/Readme.md
CHANGED
@@ -1,22 +1,32 @@
|
|
1
|
+
[](https://waffle.io/JoshCheek/seeing_is_believing)
|
1
2
|
[](http://travis-ci.org/JoshCheek/seeing_is_believing)
|
2
3
|
|
3
4
|
Seeing Is Believing
|
4
5
|
===================
|
5
6
|
|
6
7
|
Evaluates a file, recording the results of each line of code.
|
7
|
-
|
8
|
-
Except, obviously, his is like a million times better.
|
8
|
+
Integrates with any extensible editor (I've integrated it with many already, see [the list](https://github.com/JoshCheek/seeing_is_believing#editor-integration).
|
9
9
|
|
10
|
-
|
10
|
+

|
11
11
|
|
12
|
-
|
12
|
+
Watch a [longer video](http://vimeo.com/73866851).
|
13
13
|
|
14
|
-
Works in Ruby 1.9
|
14
|
+
Works in Ruby 1.9, 2.0, 2.1, rubinius (I **think**, need to make better tests), still trying to get it working with Jruby.
|
15
15
|
|
16
16
|
Use The Binary
|
17
17
|
==============
|
18
18
|
|
19
|
-
|
19
|
+
* Show every line of code (last expression)
|
20
|
+
* Show only marked lines (xmpfilter style, except better b/c it understands expressions)
|
21
|
+
* Clear annotations when they get in your way (even if code is invalid)
|
22
|
+
* Smart enough to show
|
23
|
+
* method arguments
|
24
|
+
* if statement clauses
|
25
|
+
* values in a hash
|
26
|
+
* methods that are chained together across lines
|
27
|
+
* multiline string/symbol/regex
|
28
|
+
|
29
|
+
```sh
|
20
30
|
$ cat simple_example.rb
|
21
31
|
5.times do |i|
|
22
32
|
i * 2
|
@@ -25,7 +35,7 @@ end
|
|
25
35
|
|
26
36
|
$ seeing_is_believing simple_example.rb
|
27
37
|
5.times do |i| # => 5
|
28
|
-
|
38
|
+
i * 2 # => 0, 2, 4, 6, 8
|
29
39
|
end # => 5
|
30
40
|
```
|
31
41
|
|
@@ -54,8 +64,7 @@ result.exception # => nil
|
|
54
64
|
Install
|
55
65
|
=======
|
56
66
|
|
57
|
-
Currently requires Ruby 1.9 or 2.0.
|
58
|
-
but it could happen.
|
67
|
+
Currently requires Ruby 1.9 or 2.0.
|
59
68
|
|
60
69
|
$ gem install seeing_is_believing
|
61
70
|
|
@@ -100,25 +109,20 @@ Shit that will probably never get done (or if it does, won't be until after 2.0)
|
|
100
109
|
================================================================================
|
101
110
|
|
102
111
|
* How about if begin/rescue/end was able to record the result on the rescue section
|
112
|
+
* How about if you could configure which kinds of results ou were interested in (e.g. turn on/off recording of method definitions, and other results)
|
103
113
|
* What about recording the result of a line inside of a string interpolation, e.g. "a#{\n1\n}b" could record line 2 is 1 and line 3 is "a\n1\nb"
|
104
114
|
* If given a file with a Unicode character, but not set Unicode, inform the user
|
105
115
|
|
106
116
|
License
|
107
117
|
=======
|
108
118
|
|
109
|
-
|
110
|
-
Version 2, December 2004
|
111
|
-
|
112
|
-
Copyright (C) 2012 Josh Cheek <josh.cheek@gmail.com>
|
113
|
-
|
114
|
-
Everyone is permitted to copy and distribute verbatim or modified
|
115
|
-
copies of this license document, and changing it is allowed as long
|
116
|
-
as the name is changed.
|
117
|
-
|
118
|
-
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
119
|
-
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
120
|
-
|
121
|
-
0. You just DO WHAT THE FUCK YOU WANT TO.
|
122
|
-
|
119
|
+
<a href="http://www.wtfpl.net/"><img src="http://www.wtfpl.net/wp-content/uploads/2012/12/wtfpl.svg" height="20" alt="WTFPL" /></a>
|
123
120
|
|
121
|
+
Copyright (C) 2014 Josh Cheek <josh.cheek@gmail.com>
|
124
122
|
|
123
|
+
This program is free software. It comes without any warranty,
|
124
|
+
to the extent permitted by applicable law.
|
125
|
+
You can redistribute it and/or modify it under the terms of the
|
126
|
+
Do What The Fuck You Want To Public License,
|
127
|
+
Version 2, as published by Sam Hocevar.
|
128
|
+
See http://www.wtfpl.net/ for more details.
|
data/docs/example.gif
ADDED
Binary file
|
@@ -111,7 +111,7 @@ class SeeingIsBelieving
|
|
111
111
|
end
|
112
112
|
|
113
113
|
def evaluate_program
|
114
|
-
self.interpolated_program =
|
114
|
+
self.interpolated_program = annotator.call
|
115
115
|
rescue Timeout::Error
|
116
116
|
self.timeout_error = true
|
117
117
|
rescue Exception
|
@@ -150,12 +150,12 @@ class SeeingIsBelieving
|
|
150
150
|
@body ||= (flags[:program] || (file_is_on_stdin? && stdin.read) || File.read(flags[:filename]))
|
151
151
|
end
|
152
152
|
|
153
|
-
def
|
154
|
-
@
|
153
|
+
def annotator
|
154
|
+
@annotator ||= AddAnnotations.new body, flags.merge(stdin: (file_is_on_stdin? ? '' : stdin))
|
155
155
|
end
|
156
156
|
|
157
157
|
def results
|
158
|
-
|
158
|
+
annotator.results
|
159
159
|
end
|
160
160
|
|
161
161
|
def file_is_on_stdin?
|
@@ -182,7 +182,7 @@ class SeeingIsBelieving
|
|
182
182
|
end
|
183
183
|
|
184
184
|
def result_as_data_structure
|
185
|
-
results =
|
185
|
+
results = annotator.results
|
186
186
|
{ stdout: results.stdout,
|
187
187
|
stderr: results.stderr,
|
188
188
|
exit_status: results.exitstatus,
|
@@ -101,7 +101,7 @@ class SeeingIsBelieving
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def evaluate_file
|
104
|
-
Open3.popen3 *popen_args do |process_stdin, process_stdout, process_stderr, thread|
|
104
|
+
Open3.popen3 ENV, *popen_args do |process_stdin, process_stdout, process_stderr, thread|
|
105
105
|
out_reader = Thread.new { process_stdout.read }
|
106
106
|
err_reader = Thread.new { process_stderr.read }
|
107
107
|
Thread.new do
|
@@ -54,12 +54,14 @@ class SeeingIsBelieving
|
|
54
54
|
array.each { |element| record_result element }
|
55
55
|
end
|
56
56
|
|
57
|
+
StackErrors = [SystemStackError]
|
58
|
+
StackErrors << Java::JavaLang::StackOverflowError if defined?(RUBY_PLATFORM) && RUBY_PLATFORM == 'java'
|
57
59
|
def record_result(value)
|
58
60
|
begin
|
59
61
|
inspected = value.inspect.to_str # only invoke inspect once, b/c the inspection may be recorded
|
60
62
|
rescue NoMethodError
|
61
63
|
inspected = "#<no inspect available>"
|
62
|
-
rescue
|
64
|
+
rescue *StackErrors
|
63
65
|
# this is necessary because SystemStackError won't show the backtrace of the method we tried to call
|
64
66
|
# which means there won't be anything showing the user where this came from
|
65
67
|
# so we need to re-raise the error to get a backtrace that shows where we came from
|
@@ -1,4 +1,14 @@
|
|
1
|
-
|
1
|
+
module Parser
|
2
|
+
class << self
|
3
|
+
# With new versioning, there's lots of small versions
|
4
|
+
# we don't need it to complain that we're on 2.1.1 and its parsing 2.1.5
|
5
|
+
# https://github.com/whitequark/parser/blob/e2249d7051b1adb6979139928e14a81bc62f566e/lib/parser/current.rb#L3
|
6
|
+
def warn(*) end
|
7
|
+
require 'parser/current'
|
8
|
+
remove_method :warn
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
2
12
|
class SeeingIsBelieving
|
3
13
|
module ParserHelpers
|
4
14
|
|
data/seeing_is_believing.gemspec
CHANGED
@@ -19,15 +19,15 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_dependency "parser", "
|
22
|
+
s.add_dependency "parser", ">= 2.2", "< 3.0"
|
23
23
|
s.add_dependency "psych", "~> 2.0"
|
24
24
|
|
25
25
|
s.add_development_dependency "pry", "~> 0.10.0"
|
26
26
|
s.add_development_dependency "haiti", "~> 0.1.0"
|
27
|
-
s.add_development_dependency "rake", "~> 10.0
|
28
|
-
s.add_development_dependency "rspec", "~> 3.0
|
29
|
-
s.add_development_dependency "cucumber", "~> 1.2
|
30
|
-
s.add_development_dependency "ichannel", "~> 5.1
|
27
|
+
s.add_development_dependency "rake", "~> 10.0"
|
28
|
+
s.add_development_dependency "rspec", "~> 3.0"
|
29
|
+
s.add_development_dependency "cucumber", "~> 1.2"
|
30
|
+
s.add_development_dependency "ichannel", "~> 5.1"
|
31
31
|
|
32
32
|
s.post_install_message = <<'Omg, frogs <3'.gsub(/(gg+)/) { |capture| "\e[32m#{capture.gsub 'g', '.'}\e[0m" }.gsub("brown", "\e[33m").gsub("off", "\e[0m")
|
33
33
|
.7
|
@@ -83,6 +83,7 @@ describe SeeingIsBelieving::HardCoreEnsure do
|
|
83
83
|
|
84
84
|
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
85
85
|
pending "Skipping this test on jruby b/c the JVM doesn't have a fork"
|
86
|
+
raise # new rspec will keep executing code and fail b/c nothing is raised
|
86
87
|
elsif (!defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby') && (RUBY_VERSION == '2.1.1' || RUBY_VERSION == '2.1.2')
|
87
88
|
pending 'This test can\'t run on MRI (2.1.1 or 2.1.2) b/c of bug, see https://github.com/JoshCheek/seeing_is_believing/issues/26'
|
88
89
|
raise # new rspec will keep executing code and fail b/c nothing is raised
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seeing_is_believing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Cheek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.2'
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: '3.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.2'
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: '3.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: psych
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,56 +78,56 @@ dependencies:
|
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: 10.0
|
81
|
+
version: '10.0'
|
76
82
|
type: :development
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: 10.0
|
88
|
+
version: '10.0'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: rspec
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: 3.0
|
95
|
+
version: '3.0'
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: 3.0
|
102
|
+
version: '3.0'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
104
|
name: cucumber
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
107
|
- - "~>"
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.2
|
109
|
+
version: '1.2'
|
104
110
|
type: :development
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
114
|
- - "~>"
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.2
|
116
|
+
version: '1.2'
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
118
|
name: ichannel
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
121
|
- - "~>"
|
116
122
|
- !ruby/object:Gem::Version
|
117
|
-
version: 5.1
|
123
|
+
version: '5.1'
|
118
124
|
type: :development
|
119
125
|
prerelease: false
|
120
126
|
version_requirements: !ruby/object:Gem::Requirement
|
121
127
|
requirements:
|
122
128
|
- - "~>"
|
123
129
|
- !ruby/object:Gem::Version
|
124
|
-
version: 5.1
|
130
|
+
version: '5.1'
|
125
131
|
description: Records the results of every line of code in your file (intended to be
|
126
132
|
like xmpfilter), inspired by Bret Victor's JavaScript example in his talk "Inventing
|
127
133
|
on Principle"
|
@@ -138,6 +144,7 @@ files:
|
|
138
144
|
- Rakefile
|
139
145
|
- Readme.md
|
140
146
|
- bin/seeing_is_believing
|
147
|
+
- docs/example.gif
|
141
148
|
- docs/for-presentations
|
142
149
|
- docs/frog-brown.png
|
143
150
|
- features/errors.feature
|
@@ -241,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
248
|
version: '0'
|
242
249
|
requirements: []
|
243
250
|
rubyforge_project: seeing_is_believing
|
244
|
-
rubygems_version: 2.
|
251
|
+
rubygems_version: 2.4.1
|
245
252
|
signing_key:
|
246
253
|
specification_version: 4
|
247
254
|
summary: Records results of every line of code in your file
|