mvz-live_ast 1.1.2 → 1.1.3
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 +6 -0
- data/README.rdoc +3 -4
- data/lib/live_ast/linker.rb +1 -1
- data/lib/live_ast/ruby_parser/unparser.rb +12 -1
- data/lib/live_ast/version.rb +1 -1
- data/test/alias_test.rb +24 -0
- data/test/to_ruby/to_ruby_test.rb +10 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53bc1d58d2c1645ff3d34a4f5f6df3e34a8fb352
|
4
|
+
data.tar.gz: 6e52ea854d98d13be30b16bd6e3e2acb9933b9ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 139a51f52879ec099027541c3826d807eafff81b0e2d06352d7c62ba5d971c143608224213e7fa2a6f1273a5b4eff5d4c2456c7c56e2614714489d9ffc44e5d0
|
7
|
+
data.tar.gz: 9c7397ca3f90654b71cc0ef9c904f7432e5548a249a1c69200eda4f17e8ade860fd0c4f1ac59cac8c0f93d6ddfe1d268986468220f31cdfe422bb4674fc14461
|
data/CHANGES.rdoc
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
|
2
2
|
= live_ast Changes
|
3
3
|
|
4
|
+
== Version 1.1.3
|
5
|
+
|
6
|
+
* Keep ASTs in the cache when they are fetched, allowing aliased methods to
|
7
|
+
retrieve their AST under both names.
|
8
|
+
* Do not destroy the AST when creating ruby source
|
9
|
+
|
4
10
|
== Version 1.1.2
|
5
11
|
|
6
12
|
* Update dependencies
|
data/README.rdoc
CHANGED
@@ -326,15 +326,14 @@ paranoia; the noninvasive option may be the most appropriate.
|
|
326
326
|
+ast_eval+ and +load+ cache all incoming code, while
|
327
327
|
<code>require</code>d files are cached on a need-to-know basis. When
|
328
328
|
an AST is requested, the corresponding source file is parsed and
|
329
|
-
discarded, leaving behind method and block ASTs. +to_ast+
|
329
|
+
discarded, leaving behind method and block ASTs. +to_ast+ fetches an
|
330
330
|
AST from the cache and attaches it to the appropriate object (a Proc
|
331
331
|
or Module).
|
332
332
|
|
333
333
|
Ignored, unextracted ASTs will therefore linger in the cache. Since
|
334
334
|
sexps are generally small there is little need for concern unless one
|
335
|
-
is continually evaling/reloading
|
336
|
-
|
337
|
-
to be garbage collected. To flush the cache,
|
335
|
+
is continually evaling/reloading. Nevertheless it is possible that old
|
336
|
+
ASTs will eventually need to be garbage collected. To flush the cache,
|
338
337
|
|
339
338
|
(1) Check that +to_ast+ has been called on all objects whose ASTs are
|
340
339
|
desired.
|
data/lib/live_ast/linker.rb
CHANGED
@@ -10,7 +10,18 @@ module LiveAST
|
|
10
10
|
# Return a ruby source string which reflects the given AST.
|
11
11
|
#
|
12
12
|
def self.unparse(sexp)
|
13
|
-
::Ruby2Ruby.new.process(sexp)
|
13
|
+
::Ruby2Ruby.new.process(clone_sexp(sexp))
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.clone_sexp(sexp)
|
17
|
+
sexp.clone.map! do |elem|
|
18
|
+
case elem
|
19
|
+
when Sexp
|
20
|
+
clone_sexp(elem)
|
21
|
+
else
|
22
|
+
elem
|
23
|
+
end
|
24
|
+
end
|
14
25
|
end
|
15
26
|
end
|
16
27
|
end
|
data/lib/live_ast/version.rb
CHANGED
data/test/alias_test.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'main'
|
2
|
+
|
3
|
+
class AliasTest < RegularTest
|
4
|
+
class A
|
5
|
+
def f
|
6
|
+
"A#f"
|
7
|
+
end
|
8
|
+
|
9
|
+
alias g f
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_alias_unbound_method
|
13
|
+
expected = no_arg_def(:f, "A#f")
|
14
|
+
assert_equal expected, A.instance_method(:f).to_ast
|
15
|
+
assert_equal expected, A.instance_method(:g).to_ast
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_alias_method
|
19
|
+
expected = no_arg_def(:f, "A#f")
|
20
|
+
assert_equal expected, A.new.method(:f).to_ast
|
21
|
+
assert_equal expected, A.new.method(:g).to_ast
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
@@ -83,5 +83,15 @@ class ToRubyTest < RegularTest
|
|
83
83
|
end.instance_method(:f).to_ruby
|
84
84
|
assert_equal src, dst
|
85
85
|
end
|
86
|
+
|
87
|
+
def test_to_ast_after_to_ruby
|
88
|
+
src = %{lambda { "moo" }}
|
89
|
+
expected_ast = ast_eval(src, binding).to_ast
|
90
|
+
|
91
|
+
lmb = ast_eval(src, binding)
|
92
|
+
lmb.to_ruby
|
93
|
+
|
94
|
+
assert_equal expected_ast, lmb.to_ast
|
95
|
+
end
|
86
96
|
end if LiveAST.parser::Test.respond_to?(:unparser_matches_ruby2ruby?) &&
|
87
97
|
LiveAST.parser::Test.unparser_matches_ruby2ruby?
|
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.1.
|
4
|
+
version: 1.1.3
|
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: 2014-10-
|
12
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby_parser
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- lib/live_ast/to_ast.rb
|
146
146
|
- lib/live_ast/to_ruby.rb
|
147
147
|
- lib/live_ast/version.rb
|
148
|
+
- test/alias_test.rb
|
148
149
|
- test/ast_eval/ast_eval_test.rb
|
149
150
|
- test/ast_load/ast_load_test.rb
|
150
151
|
- test/attr_test.rb
|
@@ -244,6 +245,7 @@ test_files:
|
|
244
245
|
- test/thread_test.rb
|
245
246
|
- test/load_path_test.rb
|
246
247
|
- test/ast_load/ast_load_test.rb
|
248
|
+
- test/alias_test.rb
|
247
249
|
- test/rubyspec_test.rb
|
248
250
|
- test/redefine_method_test.rb
|
249
251
|
- test/lambda_test.rb
|
@@ -274,3 +276,4 @@ test_files:
|
|
274
276
|
- test/base/noninvasive_test.rb
|
275
277
|
- test/base/reload_test.rb
|
276
278
|
- test/encoding_test.rb
|
279
|
+
has_rdoc:
|