Module: Kernel
- Defined in:
- opal/stdlib/pp.rb,
 opal/stdlib/native.rb,
 opal/stdlib/open-uri.rb,
 opal/stdlib/pathname.rb,
 opal/stdlib/bigdecimal.rb,
 opal/stdlib/opal-parser.rb,
 opal/stdlib/nodejs/kernel.rb,
 opal/stdlib/nodejs/require.rb
Constant Summary collapse
- NODE_REQUIRE =
- `require` 
Class Method Summary collapse
- 
  
    
      .open(name, *rest, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Allows the opening of various resources including URIs. 
- 
  
    
      .open_uri_original_open  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      .pp(*objs)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    prints arguments in pretty form. 
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
- #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 
    
    
  
  
  
  
  
  
  deprecated
  
  
    Deprecated. Please use require('module')instead
- #Pathname(path) ⇒ Object
- 
  
    
      #pretty_inspect  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Returns a pretty printed object as a string. 
- #require(path) ⇒ Object
- #require_remote(url) ⇒ Object
Class Method Details
.open(name, *rest, &block) ⇒ Object
Allows the opening of various resources including URIs.
If the first argument responds to the 'open' method, 'open' is called on it with the rest of the arguments.
If the first argument is a string that begins with xxx://, it is parsed by URI.parse. If the parsed object responds to the 'open' method, 'open' is called on it with the rest of the arguments.
Otherwise, the original Kernel#open is called.
OpenURI::OpenRead#open provides URI::HTTP#open, URI::HTTPS#open and URI::FTP#open, Kernel#open.
We can accept URIs and strings that begin with http://, https:// and ftp://. In these cases, the opened file object is extended by OpenURI::Meta.
| 29 30 31 32 33 34 35 | # File 'opal/stdlib/open-uri.rb', line 29 def open(name, *rest, &block) # :doc: if name.respond_to?(:to_str) && %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name OpenURI.open_uri(name, *rest, &block) else open_uri_original_open(name, *rest, &block) end end | 
.open_uri_original_open ⇒ Object
:nodoc:
| 10 | # File 'opal/stdlib/open-uri.rb', line 10 alias open_uri_original_open open | 
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, *args, &block) ⇒ Object
Wraps array-like JavaScript objects in Native::Array
| 245 246 247 248 249 250 | # File 'opal/stdlib/native.rb', line 245 def Array(object, *args, &block) if native?(object) return Native::Array.new(object, *args, &block).to_a end _Array(object) end | 
#BigDecimal(initial, digits = 0) ⇒ Object
| 7 8 9 10 11 | # File 'opal/stdlib/bigdecimal.rb', line 7 def BigDecimal(initial, digits = 0) bigdecimal = BigDecimal.allocate bigdecimal.initialize(initial, digits) bigdecimal end | 
#eval(str) ⇒ Object
| 9 10 11 12 13 14 15 16 17 18 19 | # File 'opal/stdlib/opal-parser.rb', line 9 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
| 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 | # File 'opal/stdlib/native.rb', line 224 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
| 215 216 217 | # File 'opal/stdlib/native.rb', line 215 def native?(value) `value == null || !value.$$class` end | 
#node_require(path) ⇒ Object
Please use require('module') instead
| 7 8 9 10 | # File 'opal/stdlib/nodejs/kernel.rb', line 7 def node_require(path) warn '[DEPRECATION] node_require is deprecated. Please use `require(\'module\')` instead.' `#{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
Returns a pretty printed object as a string.
In order to use this method you must first require the PP module:
require 'pp'
See the PP module for more information.
| 586 587 588 | # File 'opal/stdlib/pp.rb', line 586 def pretty_inspect PP.pp(self, StringIO.new).string 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
| 21 22 23 24 25 26 27 28 | # File 'opal/stdlib/opal-parser.rb', line 21 def require_remote(url) %x{ var r = new XMLHttpRequest(); r.open("GET", url, false); r.send(''); } eval `r.responseText` end |