Module: Kernel
- Defined in:
 - opal/stdlib/pp.rb,
opal/stdlib/native.rb,
opal/stdlib/pathname.rb,
opal/stdlib/opal-parser.rb,
opal/stdlib/nodejs/kernel.rb,
opal/stdlib/nodejs/require.rb,
opal/stdlib/bigdecimal/kernel.rb 
Constant Summary
- NODE_REQUIRE =
 `require`
Class Method Summary collapse
Instance Method Summary collapse
- #__prepare_require__(path) ⇒ Object
 - #_Array ⇒ Object
 - 
  
    
      #Array(object, *args, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Wraps array-like JavaScript objects in Native::Array.
 - #BigDecimal(initial, digits = 0) ⇒ Object
 - #caller(*args) ⇒ Object
 - #eval(str) ⇒ Object
 - #load(path) ⇒ Object
 - 
  
    
      #Native(obj)  ⇒ Native::Object, ... 
    
    
  
  
  
  
  
  
  
  
  
    
Wraps a native JavaScript with
Native::Object.new. - #native?(value) ⇒ Boolean
 - #node_require(path) ⇒ Object
 - #Pathname(path) ⇒ Object
 - #pretty_inspect ⇒ Object
 - #require(path) ⇒ Object
 - #require_remote(url) ⇒ Object
 
Class Method Details
Instance Method Details
#__prepare_require__(path) ⇒ Object
      4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | 
    
      # File 'opal/stdlib/nodejs/require.rb', line 4 def __prepare_require__(path) name = `Opal.normalize(#{path})` full_path = name.end_with?('.rb') ? name : name+'.rb' if `!Opal.modules[#{name}]` ruby = File.read(full_path) compiler = Opal::Compiler.new(ruby, requirable: true, file: name) js = compiler.compile compiler.requires.each do |sub_path| __prepare_require__(sub_path) end `eval(#{js})` end name rescue => e raise [path, name, full_path].inspect+e. end  | 
  
#_Array ⇒ Object
      236  | 
    
      # File 'opal/stdlib/native.rb', line 236 alias_method :_Array, :Array  | 
  
#Array(object, *args, &block) ⇒ Object
Wraps array-like JavaScript objects in Native::Array
      239 240 241 242 243 244  | 
    
      # File 'opal/stdlib/native.rb', line 239 def Array(object, *args, &block) if native?(object) return Native::Array.new(object, *args, &block).to_a end return _Array(object) end  | 
  
#BigDecimal(initial, digits = 0) ⇒ Object
      2 3 4  | 
    
      # File 'opal/stdlib/bigdecimal/kernel.rb', line 2 def BigDecimal(initial, digits = 0) BigDecimal.new(initial, digits) end  | 
  
#caller(*args) ⇒ Object
      6 7 8 9 10 11 12 13 14 15 16 17  | 
    
      # File 'opal/stdlib/nodejs/kernel.rb', line 6 def caller(*args) %x{ var stack; try { var err = Error("my error"); throw err; } catch(e) { stack = e.stack; } return stack.$split("\n").slice(3); } end  | 
  
#eval(str) ⇒ Object
      6 7 8 9 10 11 12 13 14 15 16  | 
    
      # File 'opal/stdlib/opal-parser.rb', line 6 def eval(str) str = Opal.coerce_to!(str, String, :to_str) = { file: '(eval)', eval: true } = __OPAL_COMPILER_CONFIG__.merge() code = Opal.compile str, %x{ return (function(self) { return eval(#{code}); })(self) } end  | 
  
#load(path) ⇒ Object
      27 28 29  | 
    
      # File 'opal/stdlib/nodejs/require.rb', line 27 def load path `Opal.load(#{__prepare_require__(path)})` end  | 
  
#Native(obj) ⇒ Native::Object, ...
Wraps a native JavaScript with Native::Object.new
      218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234  | 
    
      # File 'opal/stdlib/native.rb', line 218 def Native(obj) if `#{obj} == null` nil elsif native?(obj) Native::Object.new(obj) elsif obj.is_a?(Array) obj.map do |o| Native(o) end elsif obj.is_a?(Proc) proc do |*args, &block| Native(obj.call(*args, &block)) end else obj end end  | 
  
#native?(value) ⇒ Boolean
      209 210 211  | 
    
      # File 'opal/stdlib/native.rb', line 209 def native?(value) `value == null || !value.$$class` end  | 
  
#node_require(path) ⇒ Object
      19 20 21  | 
    
      # File 'opal/stdlib/nodejs/kernel.rb', line 19 def node_require(path) `#{NODE_REQUIRE}(#{path.to_str})` end  | 
  
#Pathname(path) ⇒ Object
      219 220 221  | 
    
      # File 'opal/stdlib/pathname.rb', line 219 def Pathname(path) Pathname.new(path) end  | 
  
#pretty_inspect ⇒ Object
      2 3 4  | 
    
      # File 'opal/stdlib/pp.rb', line 2 def pretty_inspect inspect end  | 
  
#require(path) ⇒ Object
      23 24 25  | 
    
      # File 'opal/stdlib/nodejs/require.rb', line 23 def require(path) `Opal.require(#{__prepare_require__(path)})` end  | 
  
#require_remote(url) ⇒ Object
      18 19 20 21 22 23 24 25  | 
    
      # File 'opal/stdlib/opal-parser.rb', line 18 def require_remote url %x{ var r = new XMLHttpRequest(); r.open("GET", url, false); r.send(''); } eval `r.responseText` end  |