module RubyNext::Language::Runtime
Module responsible for runtime transformations
Public Class Methods
evaluate(code, filepath)
click to toggle source
# File lib/ruby-next/language/runtime.rb, line 46 def evaluate(code, filepath) new_toplevel.eval(code, filepath) end
feature_path(path)
click to toggle source
# File lib/ruby-next/language/runtime.rb, line 37 def feature_path(path) path = resolve_feature_path(path) return if path.nil? return if File.extname(path) != ".rb" return unless Language.transformable?(path) path end
load(path, wrap: false)
click to toggle source
# File lib/ruby-next/language/runtime.rb, line 21 def load(path, wrap: false) raise "RubyNext cannot handle `load(smth, wrap: true)`" if wrap contents = File.read(path) new_contents = transform contents RubyNext.debug_source new_contents, path evaluate(new_contents, path) true end
new_toplevel()
click to toggle source
# File lib/ruby-next/language/runtime.rb, line 50 def new_toplevel # Create new "toplevel" binding to avoid lexical scope re-use # (aka "leaking refinements") eval "proc{binding}.call", TOPLEVEL_BINDING, __FILE__, __LINE__ end
transform(contents, **options)
click to toggle source
# File lib/ruby-next/language/runtime.rb, line 33 def transform(contents, **options) Language.transform(contents, rewriters: Language.current_rewriters, **options) end