typescript-rails 0.1.2 → 0.2.0
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 +6 -14
- data/.gitignore +1 -0
- data/.travis.yml +4 -5
- data/Gemfile +1 -1
- data/README.md +11 -1
- data/lib/typescript/rails/railtie.rb +1 -1
- data/lib/typescript/rails/template_handler.rb +33 -2
- data/lib/typescript/rails/version.rb +1 -1
- data/test/support/site/ref1_2.js.ts +1 -1
- data/test/support/site/ref2_1.d.ts +1 -1
- data/test/support/site/ref2_2.js.ts +1 -1
- data/test/support/site/ref3_1.js.ts +5 -0
- data/test/support/site/ref3_2.ts +3 -0
- data/test/support/site/ref3_3.ts +3 -0
- data/test/template_handler_test.rb +18 -4
- data/typescript-rails.gemspec +6 -6
- metadata +27 -19
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NDEzNGQ1YjU4NDVkNDI0NDcwZDZjZDc3MDk4MzFjMTkxMDgyMGQ1YjZkZjA5
|
10
|
-
MGUzM2JkNGVlMjhkNjgxYjEwNTAyMzE5ZjUxY2M4NjljYWM4NzBmMTdlYTcy
|
11
|
-
NTllN2NkOGM0ZmU2YzVhZGQxMGNlNzVhNzRmYTVjYzljMGQxNzk=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NWU2OTUwMmE3MDRkZDdmMzBlNjExYmRlY2QyMjliZDYyZmUxNzljZDg3ZDE3
|
14
|
-
NDFmM2NhNWI1Yjc4YjgwZWZiNzllMjYxYmFiMjkzNjdmMDVmNWFiNGQzYWZi
|
15
|
-
ZTFlZjIyZGUxMGVmZTY5NzFkM2Q0MDNiOTYwMjY1MGFlMmIzMTM=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f5d77f08721b8681ce68d5aedb9dc14926de34fc
|
4
|
+
data.tar.gz: 2f96be0c4b65b5ede9f1ef812e488511401469f5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5672c91a06cf89f43577e5d0a8d43fdf5bd88866b54e85607b45c222fdfb4bc125bffa83fc814e8270826a4e533f5f6fb3aabb18d36d60b3c6bdd37dcb4c9ab9
|
7
|
+
data.tar.gz: 9826e185b8e56e55fcbdb61cb2ed46b2330dab8764655a766107dcd7340b7e3e6c143e7a2ca80c2af9ccac5988eb5c97fcbad4a1b533b721ef9eb611e7ce4684
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# TypeScript for Rails [](https://travis-ci.org/typescript-rails/typescript-rails)
|
2
2
|
|
3
3
|
This is a wrapper for the [TypeScript](http://www.typescriptlang.org/) JavaScript superset language by Microsoft.
|
4
4
|
|
@@ -33,6 +33,7 @@ And then execute:
|
|
33
33
|
$ bundle
|
34
34
|
|
35
35
|
## Usage
|
36
|
+
|
36
37
|
Just add a `.js.ts` file in your `app/assets/javascripts` directory and include it just like you are used to do.
|
37
38
|
|
38
39
|
## Contributing
|
@@ -42,3 +43,12 @@ Just add a `.js.ts` file in your `app/assets/javascripts` directory and include
|
|
42
43
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
43
44
|
4. Push to the branch (`git push origin my-new-feature`)
|
44
45
|
5. Create new Pull Request
|
46
|
+
|
47
|
+
## Maintainers
|
48
|
+
|
49
|
+
FUJI Goro <gfuji@cpan.org>
|
50
|
+
|
51
|
+
## Authors
|
52
|
+
|
53
|
+
Klaus Zanders <klaus.zanders@gmail.com>
|
54
|
+
|
@@ -4,7 +4,7 @@ module Typescript
|
|
4
4
|
config.before_initialize do |app|
|
5
5
|
require 'typescript-rails'
|
6
6
|
|
7
|
-
if app.config.assets.enabled
|
7
|
+
if ::Rails::VERSION::MAJOR >= 4 || app.config.assets.enabled
|
8
8
|
require 'sprockets'
|
9
9
|
require 'sprockets/engines'
|
10
10
|
Sprockets.register_engine '.ts', Typescript::Rails::TypeScriptTemplate
|
@@ -41,7 +41,8 @@ module Typescript
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def evaluate(scope, locals, &block)
|
44
|
-
|
44
|
+
source = Typescript::Rails.replace_relative_references(file, data)
|
45
|
+
@output ||= TypeScript::Node.compile(source)
|
45
46
|
end
|
46
47
|
|
47
48
|
def allows_script?
|
@@ -57,9 +58,39 @@ module Typescript
|
|
57
58
|
|
58
59
|
def self.call(template)
|
59
60
|
compiled_source = erb_handler.call(template)
|
60
|
-
|
61
|
+
escaped_path = template.identifier.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
|
62
|
+
<<-EOS
|
63
|
+
TypeScript::Node.compile(
|
64
|
+
Typescript::Rails.replace_relative_references(
|
65
|
+
'#{escaped_path}', (begin;#{compiled_source};end)
|
66
|
+
)
|
67
|
+
)
|
68
|
+
EOS
|
61
69
|
end
|
62
70
|
end
|
71
|
+
|
72
|
+
# Replace relative paths specified in /// <reference path="..." /> with absolute paths.
|
73
|
+
#
|
74
|
+
# @param [String] ts_path Source .ts path
|
75
|
+
# @param [String] ts source. It might be pre-processed by erb.
|
76
|
+
# @return [String] replaces source
|
77
|
+
def self.replace_relative_references(ts_path, source)
|
78
|
+
ts_dir = File.dirname(File.expand_path(ts_path))
|
79
|
+
escaped_dir = ts_dir.gsub(/["\\]/, '\\\\\&') # "\"" => "\\\"", '\\' => '\\\\'
|
80
|
+
|
81
|
+
# Why don't we just use gsub? Because it display odd behavior with File.join on Ruby 2.0
|
82
|
+
# So we go the long way around.
|
83
|
+
output = ''
|
84
|
+
source.each_line do |l|
|
85
|
+
if l.starts_with?('///') && !(m = %r!^///\s*<reference\s+path="([^"]+)"\s*/>\s*!.match(l)).nil?
|
86
|
+
l = l.sub(m.captures[0], File.join(escaped_dir, m.captures[0]))
|
87
|
+
end
|
88
|
+
|
89
|
+
output = output + l + $/
|
90
|
+
end
|
91
|
+
|
92
|
+
output
|
93
|
+
end
|
63
94
|
end
|
64
95
|
end
|
65
96
|
|
@@ -1 +1 @@
|
|
1
|
-
var f: (x: number, y: number) => number;
|
1
|
+
declare var f: (x: number, y: number) => number;
|
@@ -13,6 +13,7 @@ DummyApp.draw do
|
|
13
13
|
get "site/ref1_2"
|
14
14
|
get "site/ref2_1"
|
15
15
|
get "site/ref2_2"
|
16
|
+
get "site/ref3_1"
|
16
17
|
end
|
17
18
|
|
18
19
|
class TemplateHandlerTest < ActiveSupport::TestCase
|
@@ -22,20 +23,33 @@ class TemplateHandlerTest < ActiveSupport::TestCase
|
|
22
23
|
@app ||= DummyApp
|
23
24
|
end
|
24
25
|
|
26
|
+
def source
|
27
|
+
# source without comments
|
28
|
+
last_response.body.gsub(%r{^//[^\n]*}m, '')
|
29
|
+
end
|
30
|
+
|
25
31
|
test "typescript views are served as javascript" do
|
26
32
|
get "/site/index.js"
|
27
|
-
|
28
|
-
|
33
|
+
assert_match /var x = 5;\s*/,
|
34
|
+
source
|
29
35
|
end
|
30
36
|
|
31
37
|
test "<reference> to other .ts file works" do
|
32
38
|
get "/site/ref1_2.js"
|
33
|
-
assert_match
|
39
|
+
assert_match /var f = function \(x, y\) \{\s*return x \+ y;\s*\};\s*f\(1, 2\);\s*/,
|
40
|
+
source
|
34
41
|
end
|
35
42
|
|
36
43
|
test "<reference> to other .d.ts file works" do
|
37
44
|
get "/site/ref2_2.js"
|
38
|
-
assert_match
|
45
|
+
assert_match /f\(1, 2\);\s*/,
|
46
|
+
source
|
47
|
+
end
|
48
|
+
|
49
|
+
test "<reference> to multiple .ts files works" do
|
50
|
+
get "/site/ref3_1.js"
|
51
|
+
assert_match /var f1 = function \(\) \{\s*\};\s*var f2 = function \(\) \{\s*\};\s*f1\(\);\s*f2\(\);/,
|
52
|
+
source
|
39
53
|
end
|
40
54
|
|
41
55
|
end
|
data/typescript-rails.gemspec
CHANGED
@@ -8,16 +8,16 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.name = "typescript-rails"
|
9
9
|
gem.version = Typescript::Rails::VERSION
|
10
10
|
gem.platform = Gem::Platform::RUBY
|
11
|
-
gem.authors = ["Klaus Zanders"]
|
12
|
-
gem.email = ["klaus.zanders@gmail.com"]
|
11
|
+
gem.authors = ["FUJI, Goro", "Klaus Zanders"]
|
12
|
+
gem.email = ["gfuji@cpan.org", "klaus.zanders@gmail.com"]
|
13
13
|
gem.description = %q{Adds Typescript to the Rails Asset pipeline}
|
14
14
|
gem.summary = %q{Adds Typescript to the Rails Asset pipeline}
|
15
|
-
gem.homepage = "
|
15
|
+
gem.homepage = "https://github.com/typescript-rails/typescript-rails"
|
16
16
|
|
17
17
|
gem.rubyforge_project = "typescript-rails"
|
18
18
|
|
19
|
-
gem.add_runtime_dependency 'typescript-node'
|
20
|
-
gem.add_runtime_dependency 'tilt'
|
19
|
+
gem.add_runtime_dependency 'typescript-node'
|
20
|
+
gem.add_runtime_dependency 'tilt'
|
21
21
|
gem.add_runtime_dependency 'railties'
|
22
22
|
|
23
23
|
gem.files = `git ls-files`.split($/)
|
@@ -25,5 +25,5 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
26
26
|
gem.require_paths = ["lib"]
|
27
27
|
|
28
|
-
gem.required_ruby_version = ">= 1.9.
|
28
|
+
gem.required_ruby_version = ">= 1.9.3"
|
29
29
|
end
|
metadata
CHANGED
@@ -1,66 +1,68 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typescript-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- FUJI, Goro
|
7
8
|
- Klaus Zanders
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2014-07-29 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: typescript-node
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- -
|
18
|
+
- - ">="
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
20
|
+
version: '0'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- -
|
25
|
+
- - ">="
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
27
|
+
version: '0'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: tilt
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
|
-
- -
|
32
|
+
- - ">="
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
+
version: '0'
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
|
-
- -
|
39
|
+
- - ">="
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
+
version: '0'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
43
|
name: railties
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
|
-
- -
|
46
|
+
- - ">="
|
46
47
|
- !ruby/object:Gem::Version
|
47
48
|
version: '0'
|
48
49
|
type: :runtime
|
49
50
|
prerelease: false
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
|
-
- -
|
53
|
+
- - ">="
|
53
54
|
- !ruby/object:Gem::Version
|
54
55
|
version: '0'
|
55
56
|
description: Adds Typescript to the Rails Asset pipeline
|
56
57
|
email:
|
58
|
+
- gfuji@cpan.org
|
57
59
|
- klaus.zanders@gmail.com
|
58
60
|
executables: []
|
59
61
|
extensions: []
|
60
62
|
extra_rdoc_files: []
|
61
63
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .travis.yml
|
64
|
+
- ".gitignore"
|
65
|
+
- ".travis.yml"
|
64
66
|
- Gemfile
|
65
67
|
- LICENSE.txt
|
66
68
|
- README.md
|
@@ -78,10 +80,13 @@ files:
|
|
78
80
|
- test/support/site/ref1_2.js.ts
|
79
81
|
- test/support/site/ref2_1.d.ts
|
80
82
|
- test/support/site/ref2_2.js.ts
|
83
|
+
- test/support/site/ref3_1.js.ts
|
84
|
+
- test/support/site/ref3_2.ts
|
85
|
+
- test/support/site/ref3_3.ts
|
81
86
|
- test/template_handler_test.rb
|
82
87
|
- test/test_helper.rb
|
83
88
|
- typescript-rails.gemspec
|
84
|
-
homepage:
|
89
|
+
homepage: https://github.com/typescript-rails/typescript-rails
|
85
90
|
licenses: []
|
86
91
|
metadata: {}
|
87
92
|
post_install_message:
|
@@ -90,17 +95,17 @@ require_paths:
|
|
90
95
|
- lib
|
91
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
97
|
requirements:
|
93
|
-
- -
|
98
|
+
- - ">="
|
94
99
|
- !ruby/object:Gem::Version
|
95
|
-
version: 1.9.
|
100
|
+
version: 1.9.3
|
96
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
102
|
requirements:
|
98
|
-
- -
|
103
|
+
- - ">="
|
99
104
|
- !ruby/object:Gem::Version
|
100
105
|
version: '0'
|
101
106
|
requirements: []
|
102
107
|
rubyforge_project: typescript-rails
|
103
|
-
rubygems_version: 2.
|
108
|
+
rubygems_version: 2.2.2
|
104
109
|
signing_key:
|
105
110
|
specification_version: 4
|
106
111
|
summary: Adds Typescript to the Rails Asset pipeline
|
@@ -112,5 +117,8 @@ test_files:
|
|
112
117
|
- test/support/site/ref1_2.js.ts
|
113
118
|
- test/support/site/ref2_1.d.ts
|
114
119
|
- test/support/site/ref2_2.js.ts
|
120
|
+
- test/support/site/ref3_1.js.ts
|
121
|
+
- test/support/site/ref3_2.ts
|
122
|
+
- test/support/site/ref3_3.ts
|
115
123
|
- test/template_handler_test.rb
|
116
124
|
- test/test_helper.rb
|