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.
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