mvz-live_ast 1.3.0 → 1.3.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 +4 -4
- data/CHANGES.rdoc +4 -0
- data/Rakefile +2 -0
- data/lib/live_ast.rb +2 -0
- data/lib/live_ast/ast_eval.rb +2 -0
- data/lib/live_ast/ast_load.rb +2 -0
- data/lib/live_ast/base.rb +2 -0
- data/lib/live_ast/common.rb +1 -0
- data/lib/live_ast/error.rb +2 -0
- data/lib/live_ast/evaler.rb +2 -0
- data/lib/live_ast/full.rb +2 -0
- data/lib/live_ast/irb_spy.rb +3 -1
- data/lib/live_ast/linker.rb +6 -2
- data/lib/live_ast/loader.rb +6 -1
- data/lib/live_ast/reader.rb +3 -2
- data/lib/live_ast/replace_eval.rb +2 -0
- data/lib/live_ast/replace_load.rb +2 -0
- data/lib/live_ast/replace_raise.rb +2 -0
- data/lib/live_ast/ruby_parser.rb +2 -0
- data/lib/live_ast/ruby_parser/test.rb +1 -0
- data/lib/live_ast/ruby_parser/unparser.rb +2 -0
- data/lib/live_ast/to_ast.rb +2 -0
- data/lib/live_ast/to_ruby.rb +2 -0
- data/lib/live_ast/version.rb +3 -1
- data/test/alias_test.rb +2 -0
- data/test/ast_eval/ast_eval_test.rb +2 -0
- data/test/ast_load/ast_load_test.rb +2 -0
- data/test/attr_test.rb +2 -0
- data/test/backtrace_test.rb +2 -0
- data/test/base/noninvasive_test.rb +2 -0
- data/test/base/reload_test.rb +2 -0
- data/test/covert_define_method_test.rb +2 -0
- data/test/def_test.rb +2 -0
- data/test/define_method_test.rb +2 -0
- data/test/define_singleton_method_test.rb +2 -0
- data/test/encoding_test.rb +2 -0
- data/test/error_test.rb +2 -0
- data/test/eval_test.rb +2 -0
- data/test/flush_cache_test.rb +2 -0
- data/test/full/ast_reload_test.rb +2 -0
- data/test/full/replace_eval_test.rb +2 -0
- data/test/irb_test.rb +2 -0
- data/test/lambda_test.rb +2 -0
- data/test/load_path_test.rb +2 -0
- data/test/load_test.rb +2 -0
- data/test/main.rb +7 -2
- data/test/nested_test.rb +2 -0
- data/test/readme_test.rb +2 -0
- data/test/recursive_eval_test.rb +2 -0
- data/test/redefine_method_test.rb +2 -0
- data/test/rubygems_test.rb +2 -0
- data/test/rubyspec_test.rb +2 -0
- data/test/singleton_test.rb +2 -0
- data/test/stdlib_test.rb +2 -0
- data/test/thread_test.rb +2 -0
- data/test/to_ast/to_ast_feature_test.rb +2 -0
- data/test/to_ruby/to_ruby_feature_test.rb +2 -0
- data/test/to_ruby/to_ruby_test.rb +2 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a6c3c4ea122e5868314d24caef675f8dbc6e4d070d2aa971ccdfe51b3ab969d
|
4
|
+
data.tar.gz: 83d03bab639162efe7bc68ba3a184801616d620d539c9e7e375b8bcf2ad12456
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39bd428bb2fa0b0b5616f062b25452029b42bfd69e2f3f4b79348e73223fa361687cf93300dce215207077b60997c068c5ba4c518e0015a373cfa559d63d0055
|
7
|
+
data.tar.gz: 1ba4e15904892e3bf63d1407ce63622a07867f1f2ab27e058efdec403361d8920ba94640923358cade0a0308fd110366083b357121af108f1a7ac2295f684ec5
|
data/CHANGES.rdoc
CHANGED
data/Rakefile
CHANGED
data/lib/live_ast.rb
CHANGED
data/lib/live_ast/ast_eval.rb
CHANGED
data/lib/live_ast/ast_load.rb
CHANGED
data/lib/live_ast/base.rb
CHANGED
data/lib/live_ast/common.rb
CHANGED
data/lib/live_ast/error.rb
CHANGED
data/lib/live_ast/evaler.rb
CHANGED
data/lib/live_ast/full.rb
CHANGED
data/lib/live_ast/irb_spy.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
module LiveAST
|
3
4
|
@history = nil
|
@@ -7,7 +8,7 @@ module LiveAST
|
|
7
8
|
attr_writer :history
|
8
9
|
|
9
10
|
def code_at(line)
|
10
|
-
code =
|
11
|
+
code = +''
|
11
12
|
checked_history[line..-1].each do |code_line|
|
12
13
|
code << code_line << "\n"
|
13
14
|
return code if can_parse code
|
@@ -22,6 +23,7 @@ module LiveAST
|
|
22
23
|
|
23
24
|
def checked_history
|
24
25
|
return @history if @history
|
26
|
+
|
25
27
|
raise NotImplementedError,
|
26
28
|
"LiveAST cannot access history for this IRB input method"
|
27
29
|
end
|
data/lib/live_ast/linker.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LiveAST
|
2
4
|
class Cache
|
3
5
|
def initialize(*args)
|
@@ -39,10 +41,10 @@ module LiveAST
|
|
39
41
|
end
|
40
42
|
|
41
43
|
module Linker
|
42
|
-
REVISION_TOKEN = "|ast@"
|
44
|
+
REVISION_TOKEN = "|ast@"
|
43
45
|
|
44
46
|
@caches = {}
|
45
|
-
@counter = "a"
|
47
|
+
@counter = +"a"
|
46
48
|
@mutex = Mutex.new
|
47
49
|
|
48
50
|
class << self
|
@@ -71,8 +73,10 @@ module LiveAST
|
|
71
73
|
def find_ast(*location)
|
72
74
|
raise ASTNotFoundError unless location.size == 2
|
73
75
|
raise RawEvalError if location.first == "(eval)"
|
76
|
+
|
74
77
|
ast = fetch_from_cache(*location)
|
75
78
|
raise MultipleDefinitionsOnSameLineError if ast == :multiple
|
79
|
+
|
76
80
|
ast
|
77
81
|
end
|
78
82
|
|
data/lib/live_ast/loader.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LiveAST
|
2
4
|
module Loader
|
3
5
|
class << self
|
@@ -8,7 +10,7 @@ module LiveAST
|
|
8
10
|
header, footer, warnings_ok = header_footer(wrap)
|
9
11
|
|
10
12
|
parser_src = Reader.read(file)
|
11
|
-
evaler_src = header << parser_src << footer
|
13
|
+
evaler_src = +'' << header << parser_src << footer
|
12
14
|
|
13
15
|
run = lambda do
|
14
16
|
Evaler.eval(parser_src, evaler_src, TOPLEVEL_BINDING, file, 1)
|
@@ -19,6 +21,7 @@ module LiveAST
|
|
19
21
|
|
20
22
|
def header_footer(wrap)
|
21
23
|
return "class << Object.new;", ";end", true if wrap
|
24
|
+
|
22
25
|
locals = NATIVE_EVAL.call("local_variables", TOPLEVEL_BINDING)
|
23
26
|
|
24
27
|
params = locals.empty? ? "" : ("|;" + locals.join(",") + "|")
|
@@ -40,12 +43,14 @@ module LiveAST
|
|
40
43
|
if file.index Linker::REVISION_TOKEN
|
41
44
|
raise "refusing to load file with revision token: `#{file}'"
|
42
45
|
end
|
46
|
+
|
43
47
|
search_paths(file) or
|
44
48
|
raise LoadError, "cannot load such file -- #{file}"
|
45
49
|
end
|
46
50
|
|
47
51
|
def search_paths(file)
|
48
52
|
return file if File.file? file
|
53
|
+
|
49
54
|
$LOAD_PATH.each do |path|
|
50
55
|
target = path + "/" + file
|
51
56
|
return target if File.file? target
|
data/lib/live_ast/reader.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# encoding: us-ascii
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module LiveAST
|
4
5
|
module Reader
|
5
|
-
UTF8_BOM = /\A\xef\xbb\xbf
|
6
|
-
MAGIC_COMMENT = /\A(?:#!.*?\n)?\s*\#.*(?:en)?coding\s*[:=]\s*([^\s;]+)
|
6
|
+
UTF8_BOM = /\A\xef\xbb\xbf/.freeze
|
7
|
+
MAGIC_COMMENT = /\A(?:#!.*?\n)?\s*\#.*(?:en)?coding\s*[:=]\s*([^\s;]+)/.freeze
|
7
8
|
|
8
9
|
def self.read(file)
|
9
10
|
contents = File.read(file, encoding: "BINARY")
|
data/lib/live_ast/ruby_parser.rb
CHANGED
data/lib/live_ast/to_ast.rb
CHANGED
data/lib/live_ast/to_ruby.rb
CHANGED
data/lib/live_ast/version.rb
CHANGED
data/test/alias_test.rb
CHANGED
data/test/attr_test.rb
CHANGED
data/test/backtrace_test.rb
CHANGED
data/test/base/reload_test.rb
CHANGED
data/test/def_test.rb
CHANGED
data/test/define_method_test.rb
CHANGED
data/test/encoding_test.rb
CHANGED
data/test/error_test.rb
CHANGED
data/test/eval_test.rb
CHANGED
data/test/flush_cache_test.rb
CHANGED
data/test/irb_test.rb
CHANGED
data/test/lambda_test.rb
CHANGED
data/test/load_path_test.rb
CHANGED
data/test/load_test.rb
CHANGED
data/test/main.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
|
2
4
|
|
3
5
|
# require first for stdlib_test
|
@@ -31,11 +33,12 @@ class JLMiniTest < MiniTest::Test
|
|
31
33
|
end
|
32
34
|
|
33
35
|
def delim(char)
|
34
|
-
"\n
|
36
|
+
"\n#{char * 72}\n"
|
35
37
|
end
|
36
38
|
|
37
39
|
def mu_pp(obj)
|
38
|
-
|
40
|
+
+'' <<
|
41
|
+
delim("_") <<
|
39
42
|
obj.pretty_inspect.chomp <<
|
40
43
|
delim("=")
|
41
44
|
end
|
@@ -115,10 +118,12 @@ class ReplaceEvalTest < BaseTest
|
|
115
118
|
true
|
116
119
|
rescue LoadError
|
117
120
|
raise "need: gem install binding_of_caller" if RUBY_ENGINE == "ruby"
|
121
|
+
|
118
122
|
false
|
119
123
|
end
|
120
124
|
|
121
125
|
return if ok
|
126
|
+
|
122
127
|
self.class.class_eval do
|
123
128
|
instance_methods(false).each do |m|
|
124
129
|
remove_method(m)
|
data/test/nested_test.rb
CHANGED
data/test/readme_test.rb
CHANGED
data/test/recursive_eval_test.rb
CHANGED
data/test/rubygems_test.rb
CHANGED
data/test/rubyspec_test.rb
CHANGED
data/test/singleton_test.rb
CHANGED
data/test/stdlib_test.rb
CHANGED
data/test/thread_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mvz-live_ast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James M. Lawrence
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby2ruby
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 3.11
|
34
|
+
version: '3.11'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 3.11
|
41
|
+
version: '3.11'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: binding_of_caller
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|