ruby2js 2.1.21 → 2.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3fd198d03a42622d892e15287ba692ea3a0a461d
4
- data.tar.gz: 860b7348d5983c7766d8f562ccd3bdc5830ca483
3
+ metadata.gz: cfd51a5b122b0cc53549b8fb3c44ae847f1183b6
4
+ data.tar.gz: befcb08dff3c11d5570fab15f3a2a462f01b442c
5
5
  SHA512:
6
- metadata.gz: a64759da3a262e849a1450f2dd2328ea5e05caace6f825d93a54ff04221d85aaf7698d479b7d063d60798d2bd71605ed425cca5e9971b6546f76f4f4235f912e
7
- data.tar.gz: eb3fd74024f204601a2732628460ced5b072331deaa149745ecf6ac285773ae39fd9f407e2a22693c2ce8d9a06c36591288b3a2aa25fd0815142a7206cd09dee
6
+ metadata.gz: 3894c89a49fd835b781c2187e0495950742895297d8f5d3e6987064a18ab3c795ea1fb9d4780d6ab042397f8f7bb97a9ed1170cf3ae90dd7f63ef42917bd57e2
7
+ data.tar.gz: fd8740c03765bf694e9099d35a42f896feea4714644c68a201c1532d5f55aee52674f7a79697938cd7d60ab20ce787ad8857ab93bfca89f00a3addfad9ea06d7
data/README.md CHANGED
@@ -3,7 +3,7 @@ Ruby2js
3
3
 
4
4
  Minimal yet extensible Ruby to JavaScript conversion.
5
5
 
6
- [![Build Status](https://travis-ci.org/rubys/ruby2js.svg)](https://travis-ci.org/rubys/ruby2js)
6
+ [![Build Status](https://travis-ci.org/rubys/ruby2js.svg)](https://travis-ci.org/rubys/ruby2js)
7
7
  [![Gem Version](https://badge.fury.io/rb/ruby2js.svg)](https://badge.fury.io/rb/ruby2js)
8
8
 
9
9
  Description
@@ -20,7 +20,7 @@ Ruby attribute accessors, methods defined with no parameters and no
20
20
  parenthesis, as well as setter method definitions, are
21
21
  mapped to
22
22
  [Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FObject%2FdefineProperty),
23
- so avoid these if you wish to target users running IE8 or lower.
23
+ so avoid these if you wish to target users running IE8 or lower.
24
24
 
25
25
  Filters may be provided to add Ruby-specific or framework specific
26
26
  behavior. Filters are essentially macro facilities that operate on
@@ -83,7 +83,7 @@ objects to handle this. This is the approach that [Opal](http://opalrb.org/)
83
83
  takes. It is a fine approach, with a number of benefits. It also has some
84
84
  notable drawbacks. For example,
85
85
  [readability](http://opalrb.org/try/#code:a%20%3D%20%22abc%22%3B%20puts%20a[-1])
86
- and
86
+ and
87
87
  [compatibility with other frameworks](https://github.com/opal/opal/issues/400).
88
88
 
89
89
  Another approach is to simply accept JavaScript semantics for what they are.
@@ -127,6 +127,7 @@ includes three such integrations:
127
127
  * [CGI](https://github.com/rubys/ruby2js/blob/master/lib/ruby2js/cgi.rb)
128
128
  * [Sinatra](https://github.com/rubys/ruby2js/blob/master/lib/ruby2js/sinatra.rb)
129
129
  * [Rails](https://github.com/rubys/ruby2js/blob/master/lib/ruby2js/rails.rb)
130
+ * [Haml](https://github.com/rubys/ruby2js/blob/master/lib/ruby2js/haml.rb)
130
131
 
131
132
  As you might expect, CGI is a bit sluggish. By contrast, Sinatra and Rails
132
133
  are quite speedy as the bulk of the time is spent on the initial load of the
@@ -201,7 +202,7 @@ the script.
201
202
  * `[/r/, n]` becomes `.match(/r/)[n]`
202
203
  * `"string" * length` becomes `new Array(length + 1).join("string")`
203
204
  * `.sub!` and `.gsub!` become equivalent `x = x.replace` statements
204
- * `.map!`, `.reverse!`, and `.select` become equivalent
205
+ * `.map!`, `.reverse!`, and `.select` become equivalent
205
206
  `.splice(0, .length, *.method())` statements
206
207
  * `@foo.call(args)` becomes `this._foo(args)`
207
208
  * `@@foo.call(args)` becomes `this.constructor._foo(args)`
@@ -309,7 +310,7 @@ the script.
309
310
  * `.zip()` becomes `_.zip()`
310
311
  * `(n...m)` becomes `_.range(n, m)`
311
312
  * `(n..m)` becomes `_.range(n, m+1)`
312
- * `.compact!`, `.flatten!`, `shuffle!`, `reject!`, `sort_by!`, and
313
+ * `.compact!`, `.flatten!`, `shuffle!`, `reject!`, `sort_by!`, and
313
314
  `.uniq` become equivalent `.splice(0, .length, *.method())` statements
314
315
  * for the following methods, if the block consists entirely of a simple
315
316
  expression (or ends with one), a `return` is added prior to the
@@ -344,7 +345,7 @@ the script.
344
345
  * maps constant assignments in an angular module to a filter
345
346
  * maps class definitions in an angular module to a filter
346
347
  * within a controller or within a `link` method in a directive:
347
- * maps `apply`, `broadcast`, `digest`, `emit`, `eval`, `evalAsync`, and
348
+ * maps `apply`, `broadcast`, `digest`, `emit`, `eval`, `evalAsync`, and
348
349
  `parent` calls to `$scope` functions.
349
350
  * maps `apply!`, `broadcast!`, `digest!`, `eval!`, and `evalAsync!`
350
351
  calls to `$rootScope` functions.
@@ -393,7 +394,7 @@ the script.
393
394
  use of the jquery filter.
394
395
 
395
396
  * [angularjs](https://github.com/rubys/wunderbar/blob/master/demo/angularjs.rb)
396
- makes use of the angular filters to implement the
397
+ makes use of the angular filters to implement the
397
398
  [angular.js tutorial](http://docs.angularjs.org/tutorial). This demo
398
399
  includes:
399
400
  * [view](https://github.com/rubys/wunderbar/blob/master/demo/views/index._html)
@@ -404,7 +405,7 @@ Picking a Ruby to JS mapping tool
404
405
  ---
405
406
 
406
407
  > dsl — A domain specific language, where code is written in one language and
407
- > errors are given in another.
408
+ > errors are given in another.
408
409
  > -- [Devil’s Dictionary of Programming](http://programmingisterrible.com/post/65781074112/devils-dictionary-of-programming)
409
410
 
410
411
  If you simply want to get a job done, and would like a mature and tested
@@ -15,23 +15,29 @@ module Ruby2JS
15
15
  call.children[1] == :step and
16
16
  [:irange, :erange].include? call.children.first.children.first.type
17
17
  then
18
- # convert combinations of range, step and block to a for loop
19
- var = args.children.first
20
- expression = call.children.first.children.first
21
- comp = (expression.type == :irange ? '<=' : '<')
22
- put "for (var "; parse var; put " = "; parse expression.children.first
23
- put "; "; parse var;
24
- if call.children[2].type == :int and call.children[2].children[0] < 0
25
- put " #{comp.sub('<', '>')} "; parse expression.children.last
26
- put "; "; parse var; put " -= "
27
- parse s(:int, -call.children[2].children[0])
28
- else
29
- put " #{comp} "; parse expression.children.last
30
- put "; "; parse var; put " += "; parse call.children[2]
18
+ begin
19
+ next_token, @next_token = @next_token, :continue
20
+
21
+ # convert combinations of range, step and block to a for loop
22
+ var = args.children.first
23
+ expression = call.children.first.children.first
24
+ comp = (expression.type == :irange ? '<=' : '<')
25
+ put "for (var "; parse var; put " = "; parse expression.children.first
26
+ put "; "; parse var;
27
+ if call.children[2].type == :int and call.children[2].children[0] < 0
28
+ put " #{comp.sub('<', '>')} "; parse expression.children.last
29
+ put "; "; parse var; put " -= "
30
+ parse s(:int, -call.children[2].children[0])
31
+ else
32
+ put " #{comp} "; parse expression.children.last
33
+ put "; "; parse var; put " += "; parse call.children[2]
34
+ end
35
+ puts ") {"
36
+ scope block
37
+ sput "}"
38
+ ensure
39
+ @next_token = next_token
31
40
  end
32
- puts ") {"
33
- scope block
34
- sput "}"
35
41
 
36
42
  elsif
37
43
  call.children[0] == nil and call.children[1] == :function and
@@ -0,0 +1,27 @@
1
+ # Example usage:
2
+ #
3
+ # Add:
4
+ # gem 'ruby2js'
5
+ # to your gemfile and bundle
6
+ # Add:
7
+ # require "ruby2js/haml"
8
+ # to any initializer ot config/application.rb
9
+ #
10
+ # Use :ruby2js filter in your templates like
11
+ #
12
+ # :ruby2js
13
+ # alert "Hello"
14
+ #
15
+ # (Note missing brackets: ruby syntax, js sematics)
16
+ #
17
+ require "haml"
18
+
19
+ module Ruby2JS
20
+ module Haml::Ruby2JS
21
+ include Haml::Filters::Base
22
+ def render(text)
23
+ converted = Ruby2JS.convert(text).to_s
24
+ "<script type='text/javascript'>\n#{converted}\n</script>"
25
+ end
26
+ end
27
+ end
data/lib/ruby2js/rails.rb CHANGED
@@ -17,12 +17,13 @@ module Ruby2JS
17
17
  module Rails
18
18
  class Template
19
19
  cattr_accessor :default_format
20
- self.default_format = Mime::JS
20
+ self.default_format = Mime[:js]
21
21
  def self.call(template)
22
- "Ruby2JS.convert(#{template.source.inspect})"
22
+ "Ruby2JS.convert(#{template.source.inspect}).to_s"
23
23
  end
24
24
  end
25
25
 
26
26
  ActionView::Template.register_template_handler :rb, Template
27
27
  end
28
+
28
29
  end
@@ -2,7 +2,7 @@ module Ruby2JS
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 2
4
4
  MINOR = 1
5
- TINY = 21
5
+ TINY = 22
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/ruby2js.gemspec CHANGED
@@ -1,17 +1,17 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: ruby2js 2.1.21 ruby lib
2
+ # stub: ruby2js 2.1.22 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "ruby2js".freeze
6
- s.version = "2.1.21"
6
+ s.version = "2.1.22"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Sam Ruby".freeze]
11
- s.date = "2017-10-11"
11
+ s.date = "2017-11-13"
12
12
  s.description = " The base package maps Ruby syntax to JavaScript semantics.\n Filters may be provided to add Ruby-specific or framework specific\n behavior.\n".freeze
13
13
  s.email = "rubys@intertwingly.net".freeze
14
- s.files = ["README.md".freeze, "lib/ruby2js".freeze, "lib/ruby2js.rb".freeze, "lib/ruby2js/cgi.rb".freeze, "lib/ruby2js/converter".freeze, "lib/ruby2js/converter.rb".freeze, "lib/ruby2js/converter/arg.rb".freeze, "lib/ruby2js/converter/args.rb".freeze, "lib/ruby2js/converter/array.rb".freeze, "lib/ruby2js/converter/begin.rb".freeze, "lib/ruby2js/converter/block.rb".freeze, "lib/ruby2js/converter/blockpass.rb".freeze, "lib/ruby2js/converter/boolean.rb".freeze, "lib/ruby2js/converter/break.rb".freeze, "lib/ruby2js/converter/case.rb".freeze, "lib/ruby2js/converter/casgn.rb".freeze, "lib/ruby2js/converter/class.rb".freeze, "lib/ruby2js/converter/const.rb".freeze, "lib/ruby2js/converter/cvar.rb".freeze, "lib/ruby2js/converter/cvasgn.rb".freeze, "lib/ruby2js/converter/def.rb".freeze, "lib/ruby2js/converter/defined.rb".freeze, "lib/ruby2js/converter/defs.rb".freeze, "lib/ruby2js/converter/dstr.rb".freeze, "lib/ruby2js/converter/for.rb".freeze, "lib/ruby2js/converter/hash.rb".freeze, "lib/ruby2js/converter/if.rb".freeze, "lib/ruby2js/converter/in.rb".freeze, "lib/ruby2js/converter/ivar.rb".freeze, "lib/ruby2js/converter/ivasgn.rb".freeze, "lib/ruby2js/converter/kwbegin.rb".freeze, "lib/ruby2js/converter/literal.rb".freeze, "lib/ruby2js/converter/logical.rb".freeze, "lib/ruby2js/converter/masgn.rb".freeze, "lib/ruby2js/converter/module.rb".freeze, "lib/ruby2js/converter/next.rb".freeze, "lib/ruby2js/converter/nil.rb".freeze, "lib/ruby2js/converter/nthref.rb".freeze, "lib/ruby2js/converter/opasgn.rb".freeze, "lib/ruby2js/converter/prototype.rb".freeze, "lib/ruby2js/converter/regexp.rb".freeze, "lib/ruby2js/converter/return.rb".freeze, "lib/ruby2js/converter/self.rb".freeze, "lib/ruby2js/converter/send.rb".freeze, "lib/ruby2js/converter/super.rb".freeze, "lib/ruby2js/converter/sym.rb".freeze, "lib/ruby2js/converter/undef.rb".freeze, "lib/ruby2js/converter/until.rb".freeze, "lib/ruby2js/converter/untilpost.rb".freeze, "lib/ruby2js/converter/var.rb".freeze, "lib/ruby2js/converter/vasgn.rb".freeze, "lib/ruby2js/converter/while.rb".freeze, "lib/ruby2js/converter/whilepost.rb".freeze, "lib/ruby2js/converter/xstr.rb".freeze, "lib/ruby2js/execjs.rb".freeze, "lib/ruby2js/filter".freeze, "lib/ruby2js/filter/angular-resource.rb".freeze, "lib/ruby2js/filter/angular-route.rb".freeze, "lib/ruby2js/filter/angularrb.rb".freeze, "lib/ruby2js/filter/camelCase.rb".freeze, "lib/ruby2js/filter/functions.rb".freeze, "lib/ruby2js/filter/jquery.rb".freeze, "lib/ruby2js/filter/minitest-jasmine.rb".freeze, "lib/ruby2js/filter/react.rb".freeze, "lib/ruby2js/filter/require.rb".freeze, "lib/ruby2js/filter/return.rb".freeze, "lib/ruby2js/filter/rubyjs.rb".freeze, "lib/ruby2js/filter/strict.rb".freeze, "lib/ruby2js/filter/underscore.rb".freeze, "lib/ruby2js/filter/vue.rb".freeze, "lib/ruby2js/rails.rb".freeze, "lib/ruby2js/serializer.rb".freeze, "lib/ruby2js/sinatra.rb".freeze, "lib/ruby2js/version.rb".freeze, "ruby2js.gemspec".freeze]
14
+ s.files = ["README.md".freeze, "lib/ruby2js".freeze, "lib/ruby2js.rb".freeze, "lib/ruby2js/cgi.rb".freeze, "lib/ruby2js/converter".freeze, "lib/ruby2js/converter.rb".freeze, "lib/ruby2js/converter/arg.rb".freeze, "lib/ruby2js/converter/args.rb".freeze, "lib/ruby2js/converter/array.rb".freeze, "lib/ruby2js/converter/begin.rb".freeze, "lib/ruby2js/converter/block.rb".freeze, "lib/ruby2js/converter/blockpass.rb".freeze, "lib/ruby2js/converter/boolean.rb".freeze, "lib/ruby2js/converter/break.rb".freeze, "lib/ruby2js/converter/case.rb".freeze, "lib/ruby2js/converter/casgn.rb".freeze, "lib/ruby2js/converter/class.rb".freeze, "lib/ruby2js/converter/const.rb".freeze, "lib/ruby2js/converter/cvar.rb".freeze, "lib/ruby2js/converter/cvasgn.rb".freeze, "lib/ruby2js/converter/def.rb".freeze, "lib/ruby2js/converter/defined.rb".freeze, "lib/ruby2js/converter/defs.rb".freeze, "lib/ruby2js/converter/dstr.rb".freeze, "lib/ruby2js/converter/for.rb".freeze, "lib/ruby2js/converter/hash.rb".freeze, "lib/ruby2js/converter/if.rb".freeze, "lib/ruby2js/converter/in.rb".freeze, "lib/ruby2js/converter/ivar.rb".freeze, "lib/ruby2js/converter/ivasgn.rb".freeze, "lib/ruby2js/converter/kwbegin.rb".freeze, "lib/ruby2js/converter/literal.rb".freeze, "lib/ruby2js/converter/logical.rb".freeze, "lib/ruby2js/converter/masgn.rb".freeze, "lib/ruby2js/converter/module.rb".freeze, "lib/ruby2js/converter/next.rb".freeze, "lib/ruby2js/converter/nil.rb".freeze, "lib/ruby2js/converter/nthref.rb".freeze, "lib/ruby2js/converter/opasgn.rb".freeze, "lib/ruby2js/converter/prototype.rb".freeze, "lib/ruby2js/converter/regexp.rb".freeze, "lib/ruby2js/converter/return.rb".freeze, "lib/ruby2js/converter/self.rb".freeze, "lib/ruby2js/converter/send.rb".freeze, "lib/ruby2js/converter/super.rb".freeze, "lib/ruby2js/converter/sym.rb".freeze, "lib/ruby2js/converter/undef.rb".freeze, "lib/ruby2js/converter/until.rb".freeze, "lib/ruby2js/converter/untilpost.rb".freeze, "lib/ruby2js/converter/var.rb".freeze, "lib/ruby2js/converter/vasgn.rb".freeze, "lib/ruby2js/converter/while.rb".freeze, "lib/ruby2js/converter/whilepost.rb".freeze, "lib/ruby2js/converter/xstr.rb".freeze, "lib/ruby2js/execjs.rb".freeze, "lib/ruby2js/filter".freeze, "lib/ruby2js/filter/angular-resource.rb".freeze, "lib/ruby2js/filter/angular-route.rb".freeze, "lib/ruby2js/filter/angularrb.rb".freeze, "lib/ruby2js/filter/camelCase.rb".freeze, "lib/ruby2js/filter/functions.rb".freeze, "lib/ruby2js/filter/jquery.rb".freeze, "lib/ruby2js/filter/minitest-jasmine.rb".freeze, "lib/ruby2js/filter/react.rb".freeze, "lib/ruby2js/filter/require.rb".freeze, "lib/ruby2js/filter/return.rb".freeze, "lib/ruby2js/filter/rubyjs.rb".freeze, "lib/ruby2js/filter/strict.rb".freeze, "lib/ruby2js/filter/underscore.rb".freeze, "lib/ruby2js/filter/vue.rb".freeze, "lib/ruby2js/haml.rb".freeze, "lib/ruby2js/rails.rb".freeze, "lib/ruby2js/serializer.rb".freeze, "lib/ruby2js/sinatra.rb".freeze, "lib/ruby2js/version.rb".freeze, "ruby2js.gemspec".freeze]
15
15
  s.homepage = "http://github.com/rubys/ruby2js".freeze
16
16
  s.licenses = ["MIT".freeze]
17
17
  s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2js
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.21
4
+ version: 2.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-11 00:00:00.000000000 Z
11
+ date: 2017-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -100,6 +100,7 @@ files:
100
100
  - lib/ruby2js/filter/strict.rb
101
101
  - lib/ruby2js/filter/underscore.rb
102
102
  - lib/ruby2js/filter/vue.rb
103
+ - lib/ruby2js/haml.rb
103
104
  - lib/ruby2js/rails.rb
104
105
  - lib/ruby2js/serializer.rb
105
106
  - lib/ruby2js/sinatra.rb