CARVIEW |
Select Language
HTTP/2 200
server: nginx
date: Sat, 09 Aug 2025 22:37:12 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: nginx/0.6.26
x-archive-orig-date: Fri, 27 Feb 2009 16:28:27 GMT
x-archive-orig-connection: close
x-archive-orig-set-cookie: _github_ses=BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7AA%3D%3D--884981fc5aa85daf318eeff084d98e2cff92578f; path=/; expires=Wed, 01 Jan 2020 08:00:00 GMT; HttpOnly
x-archive-orig-status: 200 OK
x-archive-orig-x-runtime: 198ms
x-archive-orig-etag: "f9915cdc31a058d30d2d55d0c3d10eb3"
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-orig-content-length: 27987
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Fri, 27 Feb 2009 16:28:27 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Sun, 14 Sep 2008 15:03:16 GMT", ; rel="prev memento"; datetime="Tue, 30 Dec 2008 08:05:28 GMT", ; rel="memento"; datetime="Fri, 27 Feb 2009 16:28:27 GMT", ; rel="next memento"; datetime="Mon, 13 Apr 2009 09:12:15 GMT", ; rel="last memento"; datetime="Sun, 05 Mar 2017 01:12:11 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_8_20090227151035_crawl100-c/52_8_20090227162751_crawl101.arc.gz
server-timing: captures_list;dur=0.655705, exclusion.robots;dur=0.022253, exclusion.robots.policy;dur=0.009738, esindex;dur=0.013148, cdx.remote;dur=85.373607, LoadShardBlock;dur=145.528335, PetaboxLoader3.datanode;dur=101.318564, PetaboxLoader3.resolve;dur=151.844457, load_resource;dur=155.271752
x-app-server: wwwb-app224
x-ts: 200
x-tr: 484
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app224; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
matthewd's ruby-mozjs at master - GitHub
This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (

This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (

Description: | Mozilla JavaScript Engine (SpiderMonkey) bindings for Ruby |
Clone URL: |
git://github.com/matthewd/ruby-mozjs.git
Give this clone URL to anyone.
git clone git://github.com/matthewd/ruby-mozjs.git
|
name | age | message | |
---|---|---|---|
![]() |
.gitignore | Loading commit data... ![]() |
|
![]() |
ChangeLog | Sun Oct 08 10:15:10 -0700 2006 | * Change : pkg-config を使うように変更( kou ) ... [nazoking] |
![]() |
README.ja.txt | Mon Oct 02 21:45:06 -0700 2006 | import from tar https://rubyist.g.hatena.ne.jp/n... [nazoking] |
![]() |
env/ | ||
![]() |
extconf.rb | ||
![]() |
fault.rb | ||
![]() |
interactive.rb | ||
![]() |
jspec/ | ||
![]() |
pkg-config.rb | ||
![]() |
rbsm.msg | Sun Oct 08 10:15:10 -0700 2006 | * Change : pkg-config を使うように変更( kou ) ... [nazoking] |
![]() |
spidermonkey.c | ||
![]() |
test.rb | Sun Dec 10 03:58:54 -0800 2006 | Rubyオブジェクトの引数なしメソッドをJavaScriptからプロパティーとしては呼べなくし... [nazoking] |
=begin =Ruby/SpiderMonkey ------------------------------------------------- nazoking@gmail.com https://nazo.yi.org/rubysmjs/ ------------------------------------------------- Ruby で JavaScript を使うためのモジュールです。 現在アルファバージョンです。 クラス名、メソッド名などが変更される可能性があります。 == サーバサイドでJavaScriptが使えると色々幸せだろう。 ==インストール ruby extconf.rb make make install ただし、現在まだアルファバージョンなので、インストールしない方がいいでしょう。 Debian/sarge 以外で上手く動作した方はご一報ください。 Debian/sid , FreeBSD6/ppc でも動いたという報告が 上手く動作しない方は、上手く動作するようにしてください… test.rb はテストコードです。 ruby test.rb で実行します。通らないテストがあっても気にしない! (あるいは、テストが通るように修正してパッチを nazoking@gmail.com まで) ==使用法 require "spidermonkey" make install していない場合は、require "./spidermonkey" などと、spidermonkey.so の場所をパス付きで指定しましょう。 SpiderMonkey::evalget("1").to_ruby #=> 1 のようにできます。 === JavaScriptから見たRubyオブジェクト Rubyオブジェクト rbobj は Context::set_property( "name", rbobj )で JavaScript に name として渡すことができます。Rubyから渡 されたオブジェクトは、対応するJavaScriptプリミティブ値がある場合、その値に変換されます。ない場合はRubyオブジェクトをラップしたJavaScriptオブジェクトになります。 Rubyでは、オブジェクトのプロパティーという概念がなく、オブジェクトに対してアクセスできる手段はメソッドのみです。また、JavaScriptにはない概念として、定数という種類の変数があります。Ruby/SpiderMonkeyでは、Ru byオブジェクトをラップする際に、次のようにメソッドとプロパティーが設定されているものとして振る舞います。 * Rubyの定数 → プロパティー * Rubyのメソッドの内、引数が0個固定のもの → プロパティー * Rubyのメソッドの内、引数が可変あるいは一個以上のもの → メソッド この方法の問題点は可変引数0個から複数のメソッドの扱いがわかりにくいことです。が、他に方法が思いつかなかったので、現状こうなっています。 ==リファレンス SpiderMonkey では、ランタイムを作成し、ランタイム上でコンテキストを作成し、そのコンテキストに対してスクリプトを実行します。 が、手間がかかるため、ランタイムはモジュールがロードされた時点で作成されます。また、default_context というコンテキストを用意し、SpiderMonkeyクラスオブジェクトに対してメッセージを投げ、該当するメソッドが Spid erMonkeyクラスオブジェクトにない場合、デフォルトコンテキストに委譲されます。 同じく Contextオブジェクトのメソッドも、該当するものがない場合、globalオブジェクトに委譲されます。 === SpiderMonkey :SpiderMonkey::LIB_VERSION SpiderMonkeyのバージョンが文字列で返ります :SpiderMonkey::eval( code ) デフォルトコンテキスト上で javascript-code をevalします。 結果の SpiderMonkey::Value が返ります。 :SpiderMonkey::evaluate( code ) デフォルトコンテキスト上で javascript-code をevalします。 結果の Rubyオブジェクト が返ります。 SpiderMonkey::evalate( code ).to_ruby と同意です === SpiderMonkey::Context コンテキスト情報のラッパークラスです。 :SpiderMonkey::Context.new( stack_size=8192 ) 新しいコンテキストを作成します。 :SpiderMonkey::Context#eval( code ) Javascriptコード code を、コンテキスト上で実行します。 結果がプリミティブ値の場合、対応するRubyのオブジェクトが返ります。 結果がオブジェクトの SpiderMonkey::Value が返ります。 結果が Ruby から渡されたオブジェクトであった場合、元のRubyオブジェクトが返ります。 :SpiderMonkey::Context#eval( code ) Javascriptコード code を、コンテキスト上で実行します。 結果の SpiderMonkey::Value が返ります。 :SpiderMonkey::Context#evaluate( code ) Javascriptコード code を、コンテキスト上で実行します。 結果の Rubyオブジェクトが返ります。 SpiderMonkey::Context#evalget( code ).to_ruby と同意です :SpiderMonkey::Context#version ContextのJavaScriptのバージョンを文字列で返します。 :SpiderMonkey::Context#version= ContextのJavaScriptのバージョンを文字列で設定します。 設定できないバージョンの場合は SpiderMonkey::Error が発生します。 :SpiderMonkey::Context#gc() ガベレージコレクションを発生させます。主にデバッグ用 :SpiderMonkey::Context#running? eval 実行中ならtrueを返します。コールバック関数中にrubyが呼ばれたなら trueになります。 :SpiderMonkey::Context#global globalオブジェクトのSpiderMonkey::Valueラッパーを返します。 === SpiderMonkey::Value JavaScriptオブジェクトのRubyラッパーです。 JavaScriptから渡される値は、プリミティブ値以外はこのクラスにラップされます。 :SpiderMonkey::Value#to_ruby 適当なRubyオブジェクトに変換して返します。 undefined および null は nil に変換されます。 ObjectはHashに、ArrayはArrayに変換されます。 ObjectやArrayの子(プロパティー)も含めて変換します。 function型、function型を含むObjectを変換しようとすると ConvertError が発生します。 Rubyから渡されてきたオブジェクトは元のRubyオブジェクトになります。 JavaScript上でArrayに個別のプロパティーを設定しても、その値は変換されません。 :SpiderMonkey::Value#to_a Rubyの Array にして返します。 JavaScript の Array以外のものは適当なオブジェクトにした後に to_a メソッドを呼び出します。 JavaScript上でArrayに個別のプロパティーを設定しても、その値は変換されません。 JavaScriptの関数は変換できません。(SpiderMonkey::ConvertError が起こります) :SpiderMonkey::Value#to_i Rubyの Integer にして返します。 :SpiderMonkey::Value#to_f Rubyの Float にして返します。 :SpiderMonkey::Value#to_num Rubyの Integer または Float にして返します。 :SpiderMonkey::Value#to_h Rubyの Hashにして返します。 オブジェクト以外は例外を返します。 関数を含むオブジェクトは変換できません。 :SpiderMonkey::Value#to_bool true または false が返ります。JavaScript基準で変換されるので、空文字、0などはfalse になります。 :SpiderMonkey::Value#typeof typeof x をJavaScript上で行い、その結果の文字列を返します。 :SpiderMonkey::Value#function( name , &proc ) JavaScriptオブジェクトに name という名前で関数を定義します。 その関数が呼ばれると、proc が実行されます :SpiderMonkey::Value#call( name , args... ) JavaScriptオブジェクトの関数を呼び出します。 args が引数になります。 返値は SpiderMonkey::Value です :SpiderMonkey::Value#set_property( name, value ) JavaScriptオブジェクトに name という名前でプロパティーを定義します。 :SpiderMonkey::Value#get_property( name ) JavaScriptオブジェクトの name という名前のプロパティーを取得します。 SpiderMonkey::Value オブジェクトが返ります。 =end
This feature is coming soon. Sit tight!