Module: LiveAST

Defined in:
lib/live_ast/base.rb,
lib/live_ast/error.rb,
lib/live_ast/evaler.rb,
lib/live_ast/linker.rb,
lib/live_ast/loader.rb,
lib/live_ast/reader.rb,
lib/live_ast/version.rb

Defined Under Namespace

Modules: Attacher, Evaler, Linker, Loader, Reader Classes: ASTNotFoundError, Cache, MultipleDefinitionsOnSameLineError, RawEvalError

Constant Summary collapse

NATIVE_EVAL =

:nodoc:

Kernel.method(:eval)
VERSION =
"0.6.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.parserObject

:nodoc:



15
16
17
18
19
20
# File 'lib/live_ast/base.rb', line 15

def parser  #:nodoc:
  @parser ||= (
    require 'live_ast_ruby_parser'
    LiveASTRubyParser
  )
end

Class Method Details

.ast(obj) ⇒ Object

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

Equivalent to obj.to_ast.



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

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.



51
52
53
# File 'lib/live_ast/base.rb', line 51

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

.flush_cacheObject

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



42
43
44
# File 'lib/live_ast/base.rb', line 42

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.



60
61
62
# File 'lib/live_ast/base.rb', line 60

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