Module: StateMachines::SyntaxValidator::UniversalBackend

Defined in:
lib/state_machines/syntax_validator.rb

Overview

Universal Ruby backend

Class Method Summary collapse

Class Method Details

.validate!(code, filename) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/state_machines/syntax_validator.rb', line 43

def validate!(code, filename)
  code = code.b
  code.sub!(/\A(?:\xef\xbb\xbf)?(\s*\#.*$)*(\n)?/n) {
    "#$&#{"\n" if $1 && !$2}BEGIN{throw tag, :ok}\n"
  }
  code = code.force_encoding(Encoding::UTF_8)
  catch { |tag| eval(code, binding, filename, __LINE__ - 1) } == :ok
end