Sha256: c91193920438e257bd11801d42e8d566f02291399f2147a45b388dd94358dc69

Contents?: true

Size: 1.39 KB

Versions: 20

Compression:

Stored size: 1.39 KB

Contents

require 'opal/compiler'
require 'opal/erb'
require 'opal/version'

module Kernel
  def eval(str)
    str = Opal.coerce_to!(str, String, :to_str)
    default_eval_options = { file: '(eval)', eval: true }
    compiling_options = __OPAL_COMPILER_CONFIG__.merge(default_eval_options)
    code = Opal.compile str, compiling_options
    %x{
      return (function(self) {
        return eval(#{code});
      })(self)
    }
  end

  def require_remote url
    %x{
      var r = new XMLHttpRequest();
      r.open("GET", url, false);
      r.send('');
    }
    eval `r.responseText`
  end
end

%x{
  Opal.compile = function(str, options) {
    if (options) {
      options = Opal.hash(options);
    }
    return Opal.Opal.$compile(str, options);
  };

  Opal['eval'] = function(str, options) {
   return eval(Opal.compile(str, options));
  };

  function run_ruby_scripts() {
    var tag, tags = document.getElementsByTagName('script');

    for (var i = 0, len = tags.length; i < len; i++) {
      tag = tags[i];
      if (tag.type === "text/ruby") {
        if (tag.src)       Opal.Kernel.$require_remote(tag.src);
        if (tag.innerHTML) Opal.Kernel.$eval(tag.innerHTML);
      }
    }
  }

  if (typeof(document) !== 'undefined') {
    if (window.addEventListener) {
      window.addEventListener('DOMContentLoaded', run_ruby_scripts, false);
    }
    else {
      window.attachEvent('onload', run_ruby_scripts);
    }
  }
}

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
opal-0.11.4 stdlib/opal-parser.rb
opal-0.11.3 stdlib/opal-parser.rb
opal-0.11.2 stdlib/opal-parser.rb
opal-0.11.1 stdlib/opal-parser.rb
opal-0.11.1.pre stdlib/opal-parser.rb
opal-0.10.6 stdlib/opal-parser.rb
opal-0.10.6.beta stdlib/opal-parser.rb
opal-0.11.0 stdlib/opal-parser.rb
opal-0.10.5 stdlib/opal-parser.rb
opal-0.10.4 stdlib/opal-parser.rb
opal-0.11.0.rc1 stdlib/opal-parser.rb
opal-0.10.3 stdlib/opal-parser.rb
opal-0.10.2 stdlib/opal-parser.rb
opal-0.10.1 stdlib/opal-parser.rb
opal-0.10.0 stdlib/opal-parser.rb
opal-0.10.0.rc2 stdlib/opal-parser.rb
opal-0.10.0.rc1 stdlib/opal-parser.rb
opal-0.10.0.beta5 stdlib/opal-parser.rb
opal-0.10.0.beta4 stdlib/opal-parser.rb
opal-0.10.0.beta3 stdlib/opal-parser.rb