opal 将ruby代码转化成javascript
https://github.com/opal
Opal
![]()
![]()
Opal is a ruby to javascript source-to-source compiler. It also has an implementation of the ruby corelib.
Opal is hosted on github, and there is a Freenode IRC channel at #opal, ask questions onstackoverflow (tag #opalrb).
![]()
![]()
Usage
See the website, http://opalrb.org.
Compiling ruby code
Opal.compileis a simple interface to just compile a string of ruby into a string of javascript code.Opal.compile("puts 'wow'") # => "(function() { ... self.$puts("wow"); ... })()"Running this by itself is not enough, you need the opal runtime/corelib.
Building the corelib
Opal::Buildercan be used to build the runtime/corelib into a string.Opal::Builder.build('opal') #=> "(function() { ... })()"Running compiled code
You can write the above two strings to file, and run as:
<!DOCTYPE html>
<html>
<head>
<script src="opal.js"></script>
<script src="app.js"></script>
</head>
</html>Just open a browser to this page and view the console.
Running tests
First, install dependencies:
$ bundle install
RubySpec related repos must be cloned as a gitsubmodules:
$ git submodule update --init
The test suite can be run using (requires phantomjs):
$ rake
This will command will run all RSpec and MSpec examples in sequence.
Automated runs
A
Guardfilewith decent mappings between specs and lib/corelib/stdlib files is in place. Runbundle exec guard -ito have it started.MSpec
MSpec tests can be run with:
$ rake mspec
Alternatively, you can just load up a rack instance using
rackup, and visithttp://localhost:9292/in any web browser.Rspec
RSpec tests can be run with
$ rake rspec
Code Overview
What code is supposed to run where?
lib/code runs inside your ruby env. It compiles ruby to javascript.opal/is the runtime/corelib for our implementation (runs in browser)stdlib/is our implementation of ruby stdlib. It is optional (for browser).lib
The
libdirectory holds the opal parser/compiler used to compile ruby into javascript. It is also built ready for the browser intoopal-parser.jsto allow compilation in any javascript environment.corelib
This directory holds the opal runtime and corelib implemented in ruby and javascript.
stdlib
Holds the stdlib that opal currently supports. This includes
Observable,StringScanner,Date, etc.Browser support
- Internet Explorer 6+
- Firefox (Current - 1) or Current
- Chrome (Current - 1) or Current
- Safari 5.1+
- Opera 12.1x or (Current - 1) or Current
Any problems encountered using the browsers listed above should be reported as a bug.
(Current - 1) or Current denotes that we support the current stable version of the browser and the version that preceded it. For example, if the current version of a browser is 24.x, we support the 24.x and 23.x versions.
12.1x or (Current - 1) or Current denotes that we support Opera 12.1x as well as the last 2 versions of Opera. For example, if the current Opera version is 20.x, then we support Opera 12.1x, 19.x and 20.x but not Opera 15.x through 18.x.
Cross-browser testing is sponsored by BrowserStack.
License
(The MIT License)
Copyright (C) 2013 by Adam Beynon
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
opal 将ruby代码转化成javascript的更多相关文章
- [转]DSL-让你的 Ruby 代码更优秀
https://ruby-china.org/topics/38428 以下摘录 DSL和Gpl DSL : domain-specific language.比如HTML是用于组织网页的‘语言’, ...
- 50行ruby代码开发一个区块链
区块链是什么?作为一个Ruby开发者,理解区块链的最好办法,就是亲自动手实现一个.只需要50行Ruby代码你就能彻底理解区块链的核心原理! 区块链 = 区块组成的链表? blockchain.ruby ...
- MyEclipse格式化JSP代码,其中Javascript无法格式化的原因
MyEclipse格式化JSP代码,其中Javascript无法格式化的原因: 可能是JSP页面代码有错误的地方,而且可能是一个很微小的错误,比如多写了一个标点符号,这个需要仔细检查,包括HTML.C ...
- Windows环境Vim编辑器如何执行Ruby代码
1.下载 Ruby 1.8.5(2006-8-25) for Windows: 在网页http://www.rubychina.net/downloads/ 上找到 --〉Ruby on Windo ...
- 在Notepad++下运行ruby代码
轻量级,轻量级,所以用notepad++来运行ruby的代码最合适不过了,虽说有更好用的轻量级工具,但是用notepad++习惯了,也懒得去再装其他工具了.好了,进入主题,先安装插件NppExec,打 ...
- 两行代码搞定 JavaScript 的日期验证
我们通常在 JavaScript 中验证日期,基本的思路大概是,先判断年月日是否有效,再判断当月是否有当日,比如一些月份没有 31 日,平年二月没有 29.30 日,闰年二月没有 30 日等等. 偶然 ...
- 高质量的javascript代码 -- 深入理解Javascript
一. 编写高质量的javascript代码基本要点a) 可维护的代码(Writing Maintainable Code)i. 可读(注释)ii. 一致(看上去是同一个人写的)iii. 已记录b) 最 ...
- 读《编写高质量代码:改善JavaScript程序的188个建议》1
建议3:减少全局变量污染 定义全局变量有3种方式: ❑在任何函数外面直接执行var语句. var f='value'; ❑直接添加一个属性到全局对象上.全局对象是所有全局变量的容器.在Web浏览器中, ...
- [置顶] Ruby,Scala和JavaScript中的函数式编程(一)
函数式编程(英语:Functional programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.函数编程语言最重要的 ...
随机推荐
- hdu 5131 Song Jiang's rank list
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5131 Song Jiang's rank list Description <Shui Hu Z ...
- 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记
一:移植Boa(web服务器)到嵌入式Linux系统 一.Boa程序的移植 1.下载Boa源码 下载地址: http://www.boa.org/ 目前最新发行版本: 0.94.13 ...
- ssh 安装
一 ssh 1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or dire ...
- libevent I/O示例
I/O示例使用一个windows平台上服务器/客户端的例子来演示.由于为了减少代码篇幅等各种由于本人懒而产生的原因,以下代码没有做错误处理以及有些小问题,但是我想应该不影响演示,大家多包涵. 服务器代 ...
- Linux下如何使CP命令不提示覆盖
在Linux下使用CP命令,经常会提示是否覆盖,如果是太批量的文件覆盖,老是这么提示,会很烦的.那如何解决这个问题呢? 我们先来看一下原因吧! 一般我们使用的命令是cp -rf sourcefile ...
- LinQ[持续更新]
var query = from t1_row in eprg.AttestationConditions where t1_row.Attestation.ProviderNumber == pro ...
- ibatis查找date类型
ibatis从oracle查询的时候,返回的类型是java.sql.Date,这个类型是不带时分秒的,我们只有在写sql的时候用to_char来转换.
- jQuery图片无缝轮播插件;
图片轮播这种效果在web开发中看常见,网上的插件也有很多,最近在整理项目的过程中,把之前的图片轮播效果整合了一下,整理成一个可调用的插件以做记录,也方便更多前端爱好者来学习使用:图片的轮播原理很简单, ...
- Careercup - Microsoft面试题 - 5684901156225024
2014-05-10 23:45 题目链接 原题: Arrange the numbers in an array in alternating order. For example if the a ...
- 网络---中断套接字Socket
package socketpack_2; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.even ...