mvz-live_ast 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.rdoc +4 -0
  3. data/Rakefile +2 -0
  4. data/lib/live_ast.rb +2 -0
  5. data/lib/live_ast/ast_eval.rb +2 -0
  6. data/lib/live_ast/ast_load.rb +2 -0
  7. data/lib/live_ast/base.rb +2 -0
  8. data/lib/live_ast/common.rb +1 -0
  9. data/lib/live_ast/error.rb +2 -0
  10. data/lib/live_ast/evaler.rb +2 -0
  11. data/lib/live_ast/full.rb +2 -0
  12. data/lib/live_ast/irb_spy.rb +3 -1
  13. data/lib/live_ast/linker.rb +6 -2
  14. data/lib/live_ast/loader.rb +6 -1
  15. data/lib/live_ast/reader.rb +3 -2
  16. data/lib/live_ast/replace_eval.rb +2 -0
  17. data/lib/live_ast/replace_load.rb +2 -0
  18. data/lib/live_ast/replace_raise.rb +2 -0
  19. data/lib/live_ast/ruby_parser.rb +2 -0
  20. data/lib/live_ast/ruby_parser/test.rb +1 -0
  21. data/lib/live_ast/ruby_parser/unparser.rb +2 -0
  22. data/lib/live_ast/to_ast.rb +2 -0
  23. data/lib/live_ast/to_ruby.rb +2 -0
  24. data/lib/live_ast/version.rb +3 -1
  25. data/test/alias_test.rb +2 -0
  26. data/test/ast_eval/ast_eval_test.rb +2 -0
  27. data/test/ast_load/ast_load_test.rb +2 -0
  28. data/test/attr_test.rb +2 -0
  29. data/test/backtrace_test.rb +2 -0
  30. data/test/base/noninvasive_test.rb +2 -0
  31. data/test/base/reload_test.rb +2 -0
  32. data/test/covert_define_method_test.rb +2 -0
  33. data/test/def_test.rb +2 -0
  34. data/test/define_method_test.rb +2 -0
  35. data/test/define_singleton_method_test.rb +2 -0
  36. data/test/encoding_test.rb +2 -0
  37. data/test/error_test.rb +2 -0
  38. data/test/eval_test.rb +2 -0
  39. data/test/flush_cache_test.rb +2 -0
  40. data/test/full/ast_reload_test.rb +2 -0
  41. data/test/full/replace_eval_test.rb +2 -0
  42. data/test/irb_test.rb +2 -0
  43. data/test/lambda_test.rb +2 -0
  44. data/test/load_path_test.rb +2 -0
  45. data/test/load_test.rb +2 -0
  46. data/test/main.rb +7 -2
  47. data/test/nested_test.rb +2 -0
  48. data/test/readme_test.rb +2 -0
  49. data/test/recursive_eval_test.rb +2 -0
  50. data/test/redefine_method_test.rb +2 -0
  51. data/test/rubygems_test.rb +2 -0
  52. data/test/rubyspec_test.rb +2 -0
  53. data/test/singleton_test.rb +2 -0
  54. data/test/stdlib_test.rb +2 -0
  55. data/test/thread_test.rb +2 -0
  56. data/test/to_ast/to_ast_feature_test.rb +2 -0
  57. data/test/to_ruby/to_ruby_feature_test.rb +2 -0
  58. data/test/to_ruby/to_ruby_test.rb +2 -0
  59. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b18e5a7959690642e875e7b776078be049ae2dba272c3baa1a6facc3e742fe3e
4
- data.tar.gz: '09b7a8ee5dff78a77429a0cd20bf380906ce7aeb588719356b15c13aa1952bf6'
3
+ metadata.gz: 9a6c3c4ea122e5868314d24caef675f8dbc6e4d070d2aa971ccdfe51b3ab969d
4
+ data.tar.gz: 83d03bab639162efe7bc68ba3a184801616d620d539c9e7e375b8bcf2ad12456
5
5
  SHA512:
6
- metadata.gz: 2d294134feb237eb588715cbf816fed1a1ff7bac1ebe00b22cf0ed379b2815f92b7f8cbfb646ba12cb14bdfea0ca5c6732aae8c1882fcef8f8e4e97f3ed4d2d5
7
- data.tar.gz: 0ac2c1d2c64c0c079dca1f8003cb1a21946449da0cb9c47e977c269627081698da6d1366e765c7347906af3a36c9c752c0aaf88f77506188a3080377115f1923
6
+ metadata.gz: 39bd428bb2fa0b0b5616f062b25452029b42bfd69e2f3f4b79348e73223fa361687cf93300dce215207077b60997c068c5ba4c518e0015a373cfa559d63d0055
7
+ data.tar.gz: 1ba4e15904892e3bf63d1407ce63622a07867f1f2ab27e058efdec403361d8920ba94640923358cade0a0308fd110366083b357121af108f1a7ac2295f684ec5
@@ -1,6 +1,10 @@
1
1
 
2
2
  = live_ast Changes
3
3
 
4
+ == Version 1.3.1
5
+
6
+ * Loosen dependency on ruby_parser
7
+
4
8
  == Version 1.3.0
5
9
 
6
10
  * Drop support for Rubies below 2.3
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rake/clean'
2
4
  require 'bundler/gem_tasks'
3
5
  require 'rake/testtask'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
  require 'live_ast/to_ast'
3
5
  require 'live_ast/ast_eval'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
 
3
5
  module Kernel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
 
3
5
  module Kernel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thread'
2
4
 
3
5
  require 'live_ast/common'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  module LiveAST
3
4
  module Common
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LiveAST
2
4
  class MultipleDefinitionsOnSameLineError < RuntimeError
3
5
  def message
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LiveAST
2
4
  module Evaler
3
5
  class << self
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast'
2
4
  require 'live_ast/replace_eval'
@@ -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
@@ -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@".freeze
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
 
@@ -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
@@ -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")
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
  require 'binding_of_caller'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
 
3
5
  module Kernel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
 
3
5
  module Kernel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ruby_parser'
2
4
  require 'live_ast/base'
3
5
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  #
3
4
  # Used by the LiveAST test suite.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ruby2ruby'
2
4
 
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
 
3
5
  [Method, UnboundMethod].each do |klass|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'live_ast/base'
2
4
 
3
5
  [Method, UnboundMethod, Proc].each do |klass|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LiveAST
2
- VERSION = "1.3.0".freeze
4
+ VERSION = "1.3.1"
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class AliasTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  require 'live_ast/ast_eval'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  require 'live_ast/ast_load'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class AttrTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  # test for raise redefinition side-effects: unsort this TestCase from
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  class NoninvasiveTest < BaseTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  class ReloadTest < BaseTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class CovertDefineMethodTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class DefTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class DefineMethodTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class DefineSingletonMethodTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class AllEncodingTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class ErrorTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class EvalTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  # test for flushing side-effects: unsort this TestCase from other
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  class ASTReloadTest < ReplaceEvalTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  class FullReplaceEvalTest < ReplaceEvalTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
  require 'live_ast/irb_spy'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class LambdaTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class LoadPathTest < BaseTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
  require_relative '../devel/levitate'
3
5
 
@@ -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" << (char * 72) << "\n"
36
+ "\n#{char * 72}\n"
35
37
  end
36
38
 
37
39
  def mu_pp(obj)
38
- delim("_") <<
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)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class NestedTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
  require_relative '../devel/levitate'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class RecursiveEvalTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class RedefineMethodTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
  require_relative '../devel/levitate'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
  require_relative '../devel/levitate'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class SingletonTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  class StdlibTest < RegularTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'main'
2
4
 
3
5
  require 'thread'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  require 'live_ast/to_ast'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  require 'live_ast/to_ruby'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'main'
2
4
 
3
5
  if LiveAST.parser::Test.respond_to?(: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.3.0
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-02-23 00:00:00.000000000 Z
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.0
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.0
41
+ version: '3.11'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: binding_of_caller
44
44
  requirement: !ruby/object:Gem::Requirement