yarr 0.1.0 → 0.1.1
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 +5 -5
- data/bin/yarr +1 -1
- data/lib/interpreter.rb +19 -19
- data/lib/yarr.rb +1 -1
- data/spec/lib/interpreter_spec.rb +7 -4
- metadata +9 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d7c48c4af430d533eacf10f1b3ef57d012dc9b2ff513a0cda945e2c0acb04610
|
4
|
+
data.tar.gz: 89297f1e6e36a63383cae5ddd4ad8834f55d1276ba9e969c194e36a7cecefa57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0888b274020d9a076424638cdd44963e019e52677f4b8b3ef23667d0c813f0cb5230632374a936e7c8b784d3ae97091f8b3b2f39871141267aa39c1727b19ca
|
7
|
+
data.tar.gz: 072acde21da92d3b2b6cee387dca4bea7a73e605bdec7fd7509a39d4e64f9c4090627632e40cedd17f89c7f33f68f3b34607f85eb3634d412f42a795c827055c
|
data/bin/yarr
CHANGED
data/lib/interpreter.rb
CHANGED
@@ -34,7 +34,7 @@ class Interpreter
|
|
34
34
|
private
|
35
35
|
|
36
36
|
def prompt(separator)
|
37
|
-
"#{bold(
|
37
|
+
"#{bold('ruby')}:#{format('%03d', (Readline::HISTORY.size + 1))}#{bold(separator)} "
|
38
38
|
end
|
39
39
|
|
40
40
|
def process(expression)
|
@@ -47,34 +47,34 @@ class Interpreter
|
|
47
47
|
|
48
48
|
def command(expression)
|
49
49
|
command, arguments = expression.split(" ", 2)
|
50
|
-
|
51
|
-
rescue
|
52
|
-
"#{red(
|
50
|
+
send(command[1..-1], arguments)
|
51
|
+
rescue StandardError
|
52
|
+
"#{red('ERROR')} #{command} command is not available"
|
53
53
|
end
|
54
54
|
|
55
|
-
def exit(
|
55
|
+
def exit(_args)
|
56
56
|
exit!
|
57
57
|
end
|
58
58
|
alias_method :quit, :exit
|
59
59
|
|
60
|
-
def help(
|
61
|
-
<<-END.gsub(/^\s+\|/,
|
60
|
+
def help(_args)
|
61
|
+
<<-END.gsub(/^\s+\|/, "")
|
62
62
|
|
|
63
63
|
|Available commands:
|
64
|
-
| #{bold(
|
65
|
-
| #{bold(
|
66
|
-
| #{bold(
|
67
|
-
| #{bold(
|
68
|
-
| #{bold(
|
69
|
-
| #{bold(
|
64
|
+
| #{bold(':exit')} Exit the shell
|
65
|
+
| #{bold(':help')} Display this help message
|
66
|
+
| #{bold(':hist')} Display edit-line history
|
67
|
+
| #{bold(':quit')} Alias to #{bold(':exit')}
|
68
|
+
| #{bold(':')}number Execute a specific expression from history
|
69
|
+
| #{bold(':!')} cmd Execute a shell command à la Vim
|
70
70
|
|
|
71
71
|
END
|
72
72
|
end
|
73
73
|
|
74
|
-
def hist(
|
74
|
+
def hist(_args)
|
75
75
|
"".tap do |history|
|
76
76
|
Readline::HISTORY.to_a.each.with_index(1) do |command, index|
|
77
|
-
history << " #{bold(
|
77
|
+
history << " #{bold('%03d' % index)} #{command}\n"
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
@@ -83,7 +83,7 @@ class Interpreter
|
|
83
83
|
`export CLICOLOR=1; export CLICOLOR_FORCE=1; #{args}`
|
84
84
|
end
|
85
85
|
|
86
|
-
def method_missing(name, *
|
86
|
+
def method_missing(name, *_args)
|
87
87
|
index = (name.to_s[1..-1].to_i - 1).tap { |index| raise StandardError if index == -1 }
|
88
88
|
expression = Readline::HISTORY[index]
|
89
89
|
Readline::HISTORY.pop
|
@@ -92,13 +92,13 @@ class Interpreter
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def evaluate(expression)
|
95
|
-
"#{bold(
|
95
|
+
"#{bold('===>')} #{eval(expression, TOPLEVEL_BINDING)}"
|
96
96
|
rescue Exception => e
|
97
|
-
"#{red(
|
97
|
+
"#{red('ERROR')} #{e.message}"
|
98
98
|
end
|
99
99
|
|
100
100
|
def commands
|
101
|
-
%w
|
101
|
+
%w[:exit :help :hist :quit :!]
|
102
102
|
end
|
103
103
|
|
104
104
|
def capture_stdout(&block)
|
data/lib/yarr.rb
CHANGED
@@ -31,7 +31,8 @@ RSpec.describe Interpreter do
|
|
31
31
|
setup("def foo", "1", "end")
|
32
32
|
setup("foo")
|
33
33
|
given(":hist")
|
34
|
-
expect(interpreter.call).to eq(
|
34
|
+
expect(interpreter.call).to eq(
|
35
|
+
<<-END.gsub(/^\s+\||$/, ""),
|
35
36
|
| \e[1m001\e[0m 5
|
36
37
|
| \e[1m002\e[0m def foo
|
37
38
|
| 1
|
@@ -56,7 +57,8 @@ RSpec.describe Interpreter do
|
|
56
57
|
setup("var = 0")
|
57
58
|
setup(":001")
|
58
59
|
given(":hist")
|
59
|
-
expect(interpreter.call).to eq(
|
60
|
+
expect(interpreter.call).to eq(
|
61
|
+
<<-END.gsub(/^\s+\||$/, ""),
|
60
62
|
| \e[1m001\e[0m var = 5
|
61
63
|
| \e[1m002\e[0m var = 0
|
62
64
|
| \e[1m003\e[0m var = 5
|
@@ -81,10 +83,11 @@ RSpec.describe Interpreter do
|
|
81
83
|
context "invalid expression" do
|
82
84
|
it "returns a syntax error" do
|
83
85
|
given("1 + &")
|
84
|
-
expect(interpreter.call).to eq(
|
86
|
+
expect(interpreter.call).to eq(
|
87
|
+
<<-END.gsub(/^\s+\||\n$/, ""),
|
85
88
|
|\e[1;31mERROR\e[0m <main>: syntax error, unexpected &
|
86
89
|
|1 + &
|
87
|
-
|
|
90
|
+
| ^
|
88
91
|
END
|
89
92
|
)
|
90
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yarr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arturo Herrero
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: guard-rspec
|
@@ -16,42 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '4.
|
19
|
+
version: '4.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '4.
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '11.1'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '11.1'
|
26
|
+
version: '4.7'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rspec
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
33
|
+
version: '3.9'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
40
|
+
version: '3.9'
|
55
41
|
description: YARR. Yet Another Ruby REPL. A Ruby REPL (just a hobby, won't be big
|
56
42
|
and professional like pry)
|
57
43
|
email: arturo.herrero@gmail.com
|
@@ -80,18 +66,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
66
|
requirements:
|
81
67
|
- - ">="
|
82
68
|
- !ruby/object:Gem::Version
|
83
|
-
version: 2.
|
69
|
+
version: 2.5.0
|
84
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
71
|
requirements:
|
86
72
|
- - ">="
|
87
73
|
- !ruby/object:Gem::Version
|
88
74
|
version: '0'
|
89
75
|
requirements: []
|
90
|
-
|
91
|
-
rubygems_version: 2.5.1
|
76
|
+
rubygems_version: 3.0.3
|
92
77
|
signing_key:
|
93
78
|
specification_version: 4
|
94
79
|
summary: YARR. Yet Another Ruby REPL
|
95
80
|
test_files:
|
96
|
-
- spec/lib/interpreter_spec.rb
|
97
81
|
- spec/spec_helper.rb
|
82
|
+
- spec/lib/interpreter_spec.rb
|