jsx 0.0.1
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 +7 -0
- data/README.md +50 -0
- data/lib/jsx.rb +10 -0
- data/lib/jsx/template.rb +19 -0
- data/lib/jsx/tilt.rb +1 -0
- data/lib/jsx/transformer.rb +22 -0
- data/lib/jsx/version.rb +3 -0
- metadata +206 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8f511ad3910b1fa5c935b7d11d42d35459d5b23e
|
4
|
+
data.tar.gz: f621f6f687ec6a4043865a1cf17a2cb7bfe419b0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4da557d48c4b26d07b88b1dd4ef4cb664e69def2245385dac9d26e9bdb4ede270be391033a5a0757af3e43eb369ef1cdbb9f29c37181a4ec9d2ca78fb8cf2190
|
7
|
+
data.tar.gz: f05cd1f5de203d886239d9fa8795682e1d95c947e6f184e9089dc69a6e1f68cfe3014791fdcbdd3ad42b3bd3785c3c6ac936f221569df731c25b9262a1a58de3
|
data/README.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# JSX [](https://travis-ci.org/rmosolgo/jsx-ruby)
|
2
|
+
|
3
|
+
A Ruby interface to Facebook's JSX transformer, broken out of `react-rails`. You can:
|
4
|
+
|
5
|
+
- convert JSX willy-nilly
|
6
|
+
- Use `JSX::Template` with a Tilt environment (for example, Sinatra)
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
It's not on RubyGems yet
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem "jsx", github: "rmosolgo/jsx-ruby"
|
14
|
+
```
|
15
|
+
|
16
|
+
```
|
17
|
+
bundle install
|
18
|
+
```
|
19
|
+
|
20
|
+
## Ad Hoc Transform
|
21
|
+
|
22
|
+
You can access the transformer directly. Pass it some JavaScript with JSX. Optionally, pass `strip_types` or `harmony`. For example:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
compiled = JSX.transformer.call("<h1>Hello {name}</h1>", strip_types: true, harmony: true)
|
26
|
+
# 'React.createElement("h1", {className: "greeting"}, "Hello ", name)'
|
27
|
+
```
|
28
|
+
|
29
|
+
## With Tilt
|
30
|
+
|
31
|
+
Tilt can automatically convert `.jsx` files. After loading Tilt and JSX, require `jsx/tilt`. For example:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
require 'tilt'
|
35
|
+
require 'jsx'
|
36
|
+
require 'jsx/tilt'
|
37
|
+
```
|
38
|
+
|
39
|
+
To use `harmony` or `strip_types` in this case, assign them to `JSX::Template.transform_options`. For example:
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
JSX::Template.transform_options = {strip_types: true}
|
43
|
+
```
|
44
|
+
|
45
|
+
Now, the template will strip types from JSX code.
|
46
|
+
|
47
|
+
## License
|
48
|
+
|
49
|
+
- Facebook's JSX Transformer (part of React): [BSD](https://github.com/facebook/react/blob/master/LICENSE)
|
50
|
+
- This Ruby code: MIT
|
data/lib/jsx.rb
ADDED
data/lib/jsx/template.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'tilt'
|
2
|
+
|
3
|
+
module JSX
|
4
|
+
class Template < Tilt::Template
|
5
|
+
self.default_mime_type = 'application/javascript'
|
6
|
+
|
7
|
+
def prepare
|
8
|
+
end
|
9
|
+
|
10
|
+
def evaluate(scope, locals, &block)
|
11
|
+
@output ||= JSX.transform(data, self.class.transform_options || {})
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
class << self
|
16
|
+
attr_accessor :transform_options
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/jsx/tilt.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Tilt.register(JSX::Template, 'jsx')
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'execjs'
|
2
|
+
require 'react/source'
|
3
|
+
require 'singleton'
|
4
|
+
module JSX
|
5
|
+
class Transformer
|
6
|
+
include Singleton
|
7
|
+
|
8
|
+
JSX_SOURCE_PATH = React::Source.bundled_path_for('JSXTransformer.js')
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
# If execjs uses therubyracer, there is no 'global'. Make sure
|
12
|
+
# we have it so JSX script can work properly.
|
13
|
+
contents = 'var global = global || this;' + File.read(JSX_SOURCE_PATH)
|
14
|
+
@context = ExecJS.compile(contents)
|
15
|
+
end
|
16
|
+
|
17
|
+
def call(code, strip_types: false, harmony: false)
|
18
|
+
result = @context.call('JSXTransformer.transform', code, stripTypes: strip_types, harmony: harmony)
|
19
|
+
result['code']
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/jsx/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,206 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jsx
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert Mosolgo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-04-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: execjs
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: react-source
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.13'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.13'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: tilt
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.10'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.12'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.12'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard-minitest
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.4'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.4'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: minitest
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '5.5'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '5.5'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: minitest-focus
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.1'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.1'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: minitest-reporters
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rake
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '10.4'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '10.4'
|
167
|
+
description: Transform JSX to JavaScript from Ruby. Includes a Tilt template for use
|
168
|
+
with Sinatra (or any Tilt project).
|
169
|
+
email:
|
170
|
+
- rdmosolgo@gmail.com
|
171
|
+
executables: []
|
172
|
+
extensions: []
|
173
|
+
extra_rdoc_files: []
|
174
|
+
files:
|
175
|
+
- README.md
|
176
|
+
- lib/jsx.rb
|
177
|
+
- lib/jsx/template.rb
|
178
|
+
- lib/jsx/tilt.rb
|
179
|
+
- lib/jsx/transformer.rb
|
180
|
+
- lib/jsx/version.rb
|
181
|
+
homepage: https://github.com/rmosolgo/jsx-ruby
|
182
|
+
licenses:
|
183
|
+
- MIT
|
184
|
+
metadata: {}
|
185
|
+
post_install_message:
|
186
|
+
rdoc_options: []
|
187
|
+
require_paths:
|
188
|
+
- lib
|
189
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ">="
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '0'
|
194
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
requirements: []
|
200
|
+
rubyforge_project:
|
201
|
+
rubygems_version: 2.2.2
|
202
|
+
signing_key:
|
203
|
+
specification_version: 4
|
204
|
+
summary: Ruby wrapper for Facebook's JSX transformer
|
205
|
+
test_files: []
|
206
|
+
has_rdoc:
|