Module: LiveAST

Defined in:
lib/live_ast/ruby_parser/test.rb,
lib/live_ast/base.rb,
lib/live_ast/error.rb,
lib/live_ast/common.rb,
lib/live_ast/evaler.rb,
lib/live_ast/linker.rb,
lib/live_ast/loader.rb,
lib/live_ast/reader.rb,
lib/live_ast/irb_spy.rb,
lib/live_ast/version.rb,
lib/live_ast/ruby_parser.rb,
lib/live_ast/replace_eval.rb,
lib/live_ast/ruby_parser/unparser.rb

Overview

Used by to_ruby in LiveAST.

Defined Under Namespace

Modules: Attacher, Common, Evaler, IRBSpy, Linker, Loader, Reader, ReplaceEval Classes: ASTNotFoundError, Cache, MultipleDefinitionsOnSameLineError, RawEvalError, RubyParser

Constant Summary collapse

NATIVE_EVAL =

:nodoc:

Kernel.method(:eval)
VERSION =
"1.3.0".freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.parserObject

:nodoc:



17
18
19
20
21
22
# File 'lib/live_ast/base.rb', line 17

def parser #:nodoc:
  @parser ||= begin
    require 'live_ast/ruby_parser'
    LiveAST::RubyParser
  end
end

Class Method Details

.ast(obj) ⇒ Object

For use in noninvasive mode (require 'live_ast/base').

Equivalent to obj.to_ast.



29
30
31
32
33
34
35
36
37
38
# File 'lib/live_ast/base.rb', line 29

def ast(obj) #:nodoc:
  case obj
  when Method, UnboundMethod
    Linker.find_method_ast(obj.owner, obj.name, *obj.source_location)
  when Proc
    Linker.find_proc_ast(obj)
  else
    raise TypeError, "No AST for #{obj.class} objects"
  end
end

.eval(*args) ⇒ Object

For use in noninvasive mode (require 'live_ast/base').

Equivalent to Kernel#ast_eval.



53
54
55
# File 'lib/live_ast/base.rb', line 53

def eval(*args) #:nodoc:
  Evaler.eval(args[0], *args)
end

.flush_cacheObject

Flush unused ASTs from the cache. See README.rdoc before doing this.



44
45
46
# File 'lib/live_ast/base.rb', line 44

def flush_cache
  Linker.flush_cache
end

.load(file, wrap = false) ⇒ Object

For use in noninvasive mode (require 'live_ast/base').

Equivalent to Kernel#ast_load.



62
63
64
# File 'lib/live_ast/base.rb', line 62

def load(file, wrap = false) #:nodoc:
  Loader.load(file, wrap)
end

.strip_token(file) ⇒ Object

strip the revision token from a string



69
70
71
# File 'lib/live_ast/base.rb', line 69

def strip_token(file) #:nodoc:
  file.sub(/#{Regexp.quote Linker::REVISION_TOKEN}[a-z]+/, "")
end