slinky 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e7665c1d4876bf91c9753efa12a026e58ddba8a
4
- data.tar.gz: 862166e06e30e03298acdfd98874d8e219775f1d
3
+ metadata.gz: 1458d69b24daf80c962d71ca9fa6b9fcf366e315
4
+ data.tar.gz: 7854256d1f1b2710b9df508851997e222ac34e67
5
5
  SHA512:
6
- metadata.gz: f8e310a7972869afcb50c235411c3fbffdfdec7b078132c12c6c0ce0dd26dce2af420ec3430611d935d3150a884cf57bad5f5408de083299c50c5f07229c5aea
7
- data.tar.gz: f14117cee57841d9ce0339fa60205b39841723eb2e3a7736a95c86bf457d3430fcd34e403e733693b668465e7d19627e93508eb1bc8151f574eb7ffb60459b21
6
+ metadata.gz: 145fcb64b35433b8d45946b87de8ca1e39c306aca7fdbf87c1811c39dbb66433a2eb6a8ad96a2e9ea2930862590a4f7563c2c2d14ebc5e08b8cbd0ae493e08d4
7
+ data.tar.gz: 89767aa9c0b59c9e36fc47e1d17a51d93803ca32bf78ce1e9ccf04b7d10c14ac81b6ade62fa6616a1b9b2b3b36caff93def213bef37678562b9a275144f83920
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.2
3
4
  - 2.1
4
5
  - 2.0.0
5
- - 1.9.3
data/Gemfile CHANGED
@@ -13,7 +13,7 @@ gem "listen", "~> 2.4"
13
13
 
14
14
  # compilation support gems
15
15
  gem "haml", "~> 3.1"
16
- gem "sass", "~> 3.3"
16
+ gem "sassc", "~> 1.8"
17
17
  gem "coffee-script", "~> 2.2"
18
18
 
19
19
  group :development do
@@ -21,7 +21,7 @@ group :development do
21
21
  gem "yard", "~> 0.8"
22
22
  gem "bundler", "~> 1.5"
23
23
  gem "jeweler", "~> 1.8"
24
- gem "fakefs", '0.5.3', :require => "fakefs/safe"
24
+ gem "fakefs", '0.6.7', :require => "fakefs/safe"
25
25
  gem "em-http-request", '~> 1.0'
26
26
  gem 'simplecov'
27
27
  # optional compilation gems
@@ -29,4 +29,5 @@ group :development do
29
29
  gem "therubyracer" # for less
30
30
  gem "react-jsx", '~> 0.8.0'
31
31
  gem "rake-compiler", '~> 0.9.3'
32
+ gem "typescript-node", "~> 1.6.2"
32
33
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.2
1
+ 0.8.3
@@ -25,7 +25,7 @@ module Slinky
25
25
  if @compiler.respond_to? :compile
26
26
  compiler_compile path, cb
27
27
  else
28
- compile_failed "invalid compiler"
28
+ compile_failed Exception.new("invalid compiler")
29
29
  cb.call @output_path, nil, nil, "invalid compiler"
30
30
  # compiler_command path, cb
31
31
  end
@@ -3,8 +3,8 @@ module Slinky
3
3
  Compilers.register_compiler self,
4
4
  :inputs => ["sass", "scss"],
5
5
  :outputs => ["css"],
6
- :dependencies => [["sass", ">= 3.1.1"]],
7
- :requires => ["sass"]
6
+ :dependencies => [["sassc", "~> 1.8"]],
7
+ :requires => ["sassc"]
8
8
 
9
9
  def SassCompiler::compile s, file
10
10
  syntax = file.end_with?(".sass") ? :sass : :scss
@@ -12,9 +12,9 @@ module Slinky
12
12
  # This is a partial, don't render it
13
13
  ""
14
14
  else
15
- sass_engine = Sass::Engine.new(s,
16
- :syntax => syntax,
17
- :load_paths => [File.dirname(file)])
15
+ sass_engine = SassC::Engine.new(s,
16
+ :syntax => syntax,
17
+ :load_paths => [File.dirname(file)])
18
18
  sass_engine.render
19
19
  end
20
20
  end
@@ -0,0 +1,16 @@
1
+ module Slinky
2
+ module TypescriptCompiler
3
+ Compilers.register_compiler self,
4
+ :inputs => ["ts"],
5
+ :outputs => ["js"],
6
+ :dependencies => [["typescript-node", "~> 1.6.0"]],
7
+ :requires => ["typescript-node"]
8
+
9
+ def TypescriptCompiler::compile s, file
10
+ # Raises an error if node is not available
11
+ TypeScript::Node.check_node
12
+
13
+ TypeScript::Node.compile_file(file, '--target', 'ES5').js
14
+ end
15
+ end
16
+ end
@@ -139,14 +139,16 @@ module Slinky
139
139
  # Finds all the matching manifest files for a particular product.
140
140
  # This does not take into account dependencies.
141
141
  def files_for_product product
142
- if !p = @config.produce[product]
143
- SlinkyError.raise NoSuchProductError,
144
- "Product '#{product}' has not been configured"
142
+ p = @config.produce[product]
143
+
144
+ if p.nil?
145
+ raise NoSuchProductError.new(
146
+ "Product '#{product}' has not been configured")
145
147
  end
146
148
 
147
149
  type = type_for_product product
148
150
  if type != ".js" && type != ".css"
149
- SlinkyError.raise InvalidConfigError, "Only .js and .css products are supported"
151
+ raise InvalidConfigError.new("Only .js and .css products are supported")
150
152
  end
151
153
 
152
154
  g = dependency_graph.transitive_closure
@@ -308,6 +310,7 @@ module Slinky
308
310
  end
309
311
 
310
312
  def compressor_for_product product
313
+ require 'sassc'
311
314
  case type_for_product(product)
312
315
  when ".js"
313
316
  # Use UglifyJS
@@ -315,7 +318,7 @@ module Slinky
315
318
  mangle: false, output: {ascii_only: false})}
316
319
  when ".css"
317
320
  # Use SASS's compressed output
318
- lambda{|s| Sass::Engine.new(s, :syntax => :scss, :style => :compressed).render}
321
+ lambda{|s| SassC::Engine.new(s, :syntax => :scss, :style => :compressed).render}
319
322
  end
320
323
  end
321
324
 
@@ -752,7 +755,7 @@ module Slinky
752
755
  # to the build path
753
756
  def build
754
757
  return nil unless should_build
755
-
758
+
756
759
  if !File.exists? @build_path
757
760
  FileUtils.mkdir_p(@build_path)
758
761
  end
@@ -48,8 +48,6 @@ module Slinky
48
48
  path += "/index.html"
49
49
  end
50
50
 
51
- resp.content_type MIME::Types.type_for(path).first.to_s
52
-
53
51
  if file
54
52
  # They're requesting the source file and we should not
55
53
  # compile it (but still process directives)
@@ -61,6 +59,14 @@ module Slinky
61
59
  else
62
60
  not_found resp
63
61
  end
62
+
63
+ type = MIME::Types.type_for(path).first.to_s
64
+ if resp.content.encoding.to_s == "UTF-8"
65
+ type += "; charset=utf-8"
66
+ end
67
+
68
+ resp.content_type type
69
+
64
70
  resp
65
71
  end
66
72
 
@@ -116,7 +122,7 @@ module Slinky
116
122
  size = File.size(path)
117
123
  _, _, extension = path.match(EXTENSION_REGEX).to_a
118
124
  # File reading code from rack/file.rb
119
- File.open path do |file|
125
+ File.open(path, "rb") do |file|
120
126
  resp.content = ""
121
127
  while size > 0
122
128
  part = file.read([8192, size].min)
@@ -2,17 +2,17 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: slinky 0.8.2 ruby lib
5
+ # stub: slinky 0.8.3 ruby lib
6
6
  # stub: ext/transitive_closure/extconf.rb
7
7
 
8
8
  Gem::Specification.new do |s|
9
9
  s.name = "slinky"
10
- s.version = "0.8.2"
10
+ s.version = "0.8.3"
11
11
 
12
12
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
13
13
  s.require_paths = ["lib"]
14
14
  s.authors = ["Micah Wylde"]
15
- s.date = "2014-11-07"
15
+ s.date = "2016-07-30"
16
16
  s.description = "A static file server for rich web apps that automatically compiles SASS, HAML, CoffeeScript and more"
17
17
  s.email = "micah@micahw.com"
18
18
  s.executables = ["slinky"]
@@ -43,6 +43,7 @@ Gem::Specification.new do |s|
43
43
  "lib/slinky/compilers/jsx-compiler.rb",
44
44
  "lib/slinky/compilers/less-compiler.rb",
45
45
  "lib/slinky/compilers/sass-compiler.rb",
46
+ "lib/slinky/compilers/typescript-compiler.rb",
46
47
  "lib/slinky/config_reader.rb",
47
48
  "lib/slinky/em-popen3.rb",
48
49
  "lib/slinky/errors.rb",
@@ -66,7 +67,7 @@ Gem::Specification.new do |s|
66
67
  ]
67
68
  s.homepage = "http://mwylde.github.com/slinky/"
68
69
  s.licenses = ["MIT"]
69
- s.rubygems_version = "2.2.2"
70
+ s.rubygems_version = "2.4.5.1"
70
71
  s.summary = "Static file server for javascript apps"
71
72
 
72
73
  if s.respond_to? :specification_version then
@@ -83,19 +84,20 @@ Gem::Specification.new do |s|
83
84
  s.add_runtime_dependency(%q<uglifier>, ["~> 2.5"])
84
85
  s.add_runtime_dependency(%q<listen>, ["~> 2.4"])
85
86
  s.add_runtime_dependency(%q<haml>, ["~> 3.1"])
86
- s.add_runtime_dependency(%q<sass>, ["~> 3.3"])
87
+ s.add_runtime_dependency(%q<sassc>, ["~> 1.8"])
87
88
  s.add_runtime_dependency(%q<coffee-script>, ["~> 2.2"])
88
89
  s.add_development_dependency(%q<rspec>, ["~> 2.10"])
89
90
  s.add_development_dependency(%q<yard>, ["~> 0.8"])
90
91
  s.add_development_dependency(%q<bundler>, ["~> 1.5"])
91
92
  s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
92
- s.add_development_dependency(%q<fakefs>, ["= 0.5.3"])
93
+ s.add_development_dependency(%q<fakefs>, ["= 0.6.7"])
93
94
  s.add_development_dependency(%q<em-http-request>, ["~> 1.0"])
94
95
  s.add_development_dependency(%q<simplecov>, [">= 0"])
95
96
  s.add_development_dependency(%q<less>, [">= 2.2.0"])
96
97
  s.add_development_dependency(%q<therubyracer>, [">= 0"])
97
98
  s.add_development_dependency(%q<react-jsx>, ["~> 0.8.0"])
98
99
  s.add_development_dependency(%q<rake-compiler>, ["~> 0.9.3"])
100
+ s.add_development_dependency(%q<typescript-node>, ["~> 1.6.2"])
99
101
  else
100
102
  s.add_dependency(%q<multi_json>, ["~> 1.9.2"])
101
103
  s.add_dependency(%q<eventmachine>, ["~> 1.0"])
@@ -107,19 +109,20 @@ Gem::Specification.new do |s|
107
109
  s.add_dependency(%q<uglifier>, ["~> 2.5"])
108
110
  s.add_dependency(%q<listen>, ["~> 2.4"])
109
111
  s.add_dependency(%q<haml>, ["~> 3.1"])
110
- s.add_dependency(%q<sass>, ["~> 3.3"])
112
+ s.add_dependency(%q<sassc>, ["~> 1.8"])
111
113
  s.add_dependency(%q<coffee-script>, ["~> 2.2"])
112
114
  s.add_dependency(%q<rspec>, ["~> 2.10"])
113
115
  s.add_dependency(%q<yard>, ["~> 0.8"])
114
116
  s.add_dependency(%q<bundler>, ["~> 1.5"])
115
117
  s.add_dependency(%q<jeweler>, ["~> 1.8"])
116
- s.add_dependency(%q<fakefs>, ["= 0.5.3"])
118
+ s.add_dependency(%q<fakefs>, ["= 0.6.7"])
117
119
  s.add_dependency(%q<em-http-request>, ["~> 1.0"])
118
120
  s.add_dependency(%q<simplecov>, [">= 0"])
119
121
  s.add_dependency(%q<less>, [">= 2.2.0"])
120
122
  s.add_dependency(%q<therubyracer>, [">= 0"])
121
123
  s.add_dependency(%q<react-jsx>, ["~> 0.8.0"])
122
124
  s.add_dependency(%q<rake-compiler>, ["~> 0.9.3"])
125
+ s.add_dependency(%q<typescript-node>, ["~> 1.6.2"])
123
126
  end
124
127
  else
125
128
  s.add_dependency(%q<multi_json>, ["~> 1.9.2"])
@@ -132,19 +135,20 @@ Gem::Specification.new do |s|
132
135
  s.add_dependency(%q<uglifier>, ["~> 2.5"])
133
136
  s.add_dependency(%q<listen>, ["~> 2.4"])
134
137
  s.add_dependency(%q<haml>, ["~> 3.1"])
135
- s.add_dependency(%q<sass>, ["~> 3.3"])
138
+ s.add_dependency(%q<sassc>, ["~> 1.8"])
136
139
  s.add_dependency(%q<coffee-script>, ["~> 2.2"])
137
140
  s.add_dependency(%q<rspec>, ["~> 2.10"])
138
141
  s.add_dependency(%q<yard>, ["~> 0.8"])
139
142
  s.add_dependency(%q<bundler>, ["~> 1.5"])
140
143
  s.add_dependency(%q<jeweler>, ["~> 1.8"])
141
- s.add_dependency(%q<fakefs>, ["= 0.5.3"])
144
+ s.add_dependency(%q<fakefs>, ["= 0.6.7"])
142
145
  s.add_dependency(%q<em-http-request>, ["~> 1.0"])
143
146
  s.add_dependency(%q<simplecov>, [">= 0"])
144
147
  s.add_dependency(%q<less>, [">= 2.2.0"])
145
148
  s.add_dependency(%q<therubyracer>, [">= 0"])
146
149
  s.add_dependency(%q<react-jsx>, ["~> 0.8.0"])
147
150
  s.add_dependency(%q<rake-compiler>, ["~> 0.9.3"])
151
+ s.add_dependency(%q<typescript-node>, ["~> 1.6.2"])
148
152
  end
149
153
  end
150
154
 
@@ -1,37 +1,41 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
  require 'em-http'
3
3
 
4
- def compiler_test file, ext, src, &test
5
- File.open(file, "w+"){|f| f.write(src)}
6
- cf = Slinky::Compilers.cfile_for_file(file)
7
- called_back = false
8
-
9
- $stdout.should_receive(:puts).with("Compiled #{file}".foreground(:green))
10
-
11
- cf.compile{|cpath, _, _, error|
12
- error.should == nil
13
- cpath.nil?.should == false
14
- cpath.end_with?(ext).should == true
15
- test.call(File.open(cpath).read).should == true
16
- called_back = true
17
- }
4
+ def compiler_test file, ext, src, dir = nil, &test
5
+ FakeFS.without {
6
+ dir ||= Dir.mktmpdir
7
+
8
+ begin
9
+ path = "#{dir}/#{file}"
10
+
11
+ File.open(path, "w+"){|f| f.write(src)}
12
+ cf = Slinky::Compilers.cfile_for_file(path)
13
+ called_back = false
18
14
 
19
- called_back.should == true
15
+ $stdout.should_receive(:puts).with("Compiled #{path}".foreground(:green))
16
+
17
+ cf.compile{|cpath, _, _, error|
18
+ error.should == nil
19
+ cpath.nil?.should == false
20
+ cpath.end_with?(ext).should == true
21
+ test.call(File.open(cpath).read).should == true
22
+ called_back = true
23
+ }
24
+ called_back.should == true
25
+ ensure
26
+ FileUtils.rm_rf(dir)
27
+ end
28
+ }
20
29
  end
21
30
 
22
31
  describe "Compilers" do
23
- before :each do
24
- FileUtils.rm_rf("/compilers") rescue nil
25
- FileUtils.mkdir("/compilers")
26
- end
27
-
28
32
  context "SassCompiler" do
29
33
  it "should be able to compile SASS files" do
30
34
  src = <<eos
31
35
  h1
32
36
  color: red
33
37
  eos
34
- compiler_test("/compilers/test.sass", ".css", src){|s|
38
+ compiler_test("test.sass", ".css", src){|s|
35
39
  s.include?("color: red;")
36
40
  }
37
41
  end
@@ -44,14 +48,14 @@ h1 {
44
48
  }
45
49
  }
46
50
  eos
47
- compiler_test("/compilers/test.scss", ".css", src){|s|
51
+ compiler_test("test.scss", ".css", src){|s|
48
52
  s.include?("color: red;") && s.include?("h1 a")
49
53
  }
50
54
  end
51
55
 
52
56
  it "should not compile partials" do
53
57
  src = "body { color: $something; }"
54
- compiler_test("/compilers/_partial.scss", ".css", src){|s|
58
+ compiler_test("_partial.scss", ".css", src){|s|
55
59
  s == ""
56
60
  }
57
61
  end
@@ -66,7 +70,7 @@ eos
66
70
  width: percentage(@width);
67
71
  }
68
72
  eos
69
- compiler_test("/compilers/test.less", ".css", src){|s|
73
+ compiler_test("test.less", ".css", src){|s|
70
74
  s.include?("width: 50%;")
71
75
  }
72
76
  end
@@ -78,7 +82,7 @@ eos
78
82
  test = {do: (x) -> console.log(x)}
79
83
  test.do("Hello, world")
80
84
  eos
81
- compiler_test("/compilers/test.coffee", ".js", src){|s|
85
+ compiler_test("test.coffee", ".js", src){|s|
82
86
  s.include?("function(x) {")
83
87
  }
84
88
  end
@@ -92,7 +96,7 @@ eos
92
96
  %title Hello!
93
97
  %body
94
98
  eos
95
- compiler_test("/compilers/test.haml", ".html", src){|s|
99
+ compiler_test("test.haml", ".html", src){|s|
96
100
  s.include?("<title>Hello!</title>")
97
101
  }
98
102
  end
@@ -107,9 +111,47 @@ eos
107
111
  document.getElementById('example')
108
112
  );
109
113
  EOF
110
- compiler_test("/compilers/test.jsx", ".js", src){|s|
114
+ compiler_test("test.jsx", ".js", src){|s|
111
115
  s.include?("Hello, world!")
112
116
  }
113
117
  end
114
118
  end
119
+
120
+ context "TypescriptCompiler" do
121
+ it "should be able to compile .ts files" do
122
+ src = <<-EOF
123
+ function greeter(person: string) {
124
+ return "Hello, " + person;
125
+ }
126
+
127
+ var user = "Jane User";
128
+ EOF
129
+ compiler_test("test.ts", ".js", src){|s|
130
+ s.include?("function greeter(person)")
131
+ }
132
+ end
133
+
134
+ it "should be able to reference definition files" do
135
+ dts = <<-EOF
136
+ declare var Test: {x: number}
137
+ EOF
138
+
139
+ src = <<-EOF
140
+ ///<reference path="types/my.d.ts">
141
+
142
+ console.log(Test.x + 5);
143
+ EOF
144
+
145
+ FakeFS.without {
146
+ dir = Dir.mktmpdir
147
+
148
+ FileUtils.mkdir("#{dir}/types")
149
+ File.open("#{dir}/types/my.d.ts", "w+"){|f| f.write(dts)}
150
+
151
+ compiler_test("test.ts", ".js", src, dir){|s|
152
+ s.include?("Test.x")
153
+ }
154
+ }
155
+ end
156
+ end
115
157
  end
@@ -132,7 +132,7 @@ describe "Manifest" do
132
132
  build_path = mf.process
133
133
  end
134
134
 
135
- it "should report errors for bad files" do
135
+ it "should report errors for bad files" do
136
136
  File.open("/src/l1/l2/bad.sass", "w+"){|f|
137
137
  f.write "color: red;"
138
138
  }
@@ -479,29 +479,39 @@ eos
479
479
  end
480
480
 
481
481
  it "should recompile files when files they depend on change" do
482
- $stdout.should_receive(:puts).with(/Compiled \/src\/.+/).exactly(4).times
483
-
484
- File.open("/src/l1/depender.scss", "w+"){|f|
485
- f.write("// slinky_depends('/l1/_dependee.scss')\n")
486
- f.write("@import \"dependee\";\n")
487
- f.write("body { color: $bodycolor }\n")
488
- }
489
- File.open("/src/l1/_dependee.scss", "w+"){|f|
490
- f.write("$bodycolor: red;\n")
491
- }
492
- mdevel = Slinky::Manifest.new("/src", @config)
493
-
494
- mf = mdevel.find_by_path("/l1/depender.scss").first
495
- path = mf.process
496
- File.read(path).should match /color: red/
497
-
498
- File.open("/src/l1/_dependee.scss", "w+"){|f|
499
- f.write("$bodycolor: green;\n")
500
- }
501
-
502
- mf = mdevel.find_by_path("/l1/depender.scss").first
503
- path = mf.process
504
- File.read(path).should match /color: green/
482
+ $stdout.should_receive(:puts).with(/Compiled .+/).exactly(4).times
483
+
484
+ # We can't use FakeFS with SassC
485
+ FakeFS.without do
486
+ dir = Dir.mktmpdir
487
+ begin
488
+ FileUtils.mkdir("#{dir}/l1")
489
+ File.open("#{dir}/l1/depender.scss", "w+"){|f|
490
+ f.write("// slinky_depends('/l1/_dependee.scss')\n")
491
+ f.write("@import \"dependee\";\n")
492
+ f.write("body { color: $bodycolor }\n")
493
+ }
494
+ File.open("#{dir}/l1/_dependee.scss", "w+"){|f|
495
+ f.write("$bodycolor: red;\n")
496
+ }
497
+
498
+ mdevel = Slinky::Manifest.new(dir, @config)
499
+
500
+ mf = mdevel.find_by_path("/l1/depender.scss").first
501
+ path = mf.process
502
+ File.read(path).should match /color: red/
503
+
504
+ File.open("#{dir}/l1/_dependee.scss", "w+"){|f|
505
+ f.write("$bodycolor: green;\n")
506
+ }
507
+
508
+ mf = mdevel.find_by_path("/l1/depender.scss").first
509
+ path = mf.process
510
+ File.read(path).should match /color: green/
511
+ ensure
512
+ FileUtils.rm_rf(dir)
513
+ end
514
+ end
505
515
  end
506
516
  end
507
517
 
@@ -53,7 +53,8 @@ describe "Slinky" do
53
53
 
54
54
  it "should serve the processed version of static files" do
55
55
  Slinky::Server.manifest = @mdevel
56
- @resp.should_receive(:content_type).with("application/javascript").at_least(:once)
56
+ @resp.should_receive(:content_type)
57
+ .with("application/javascript; charset=utf-8").at_least(:once)
57
58
  Slinky::Server.process_path @resp, "/l1/test.js"
58
59
  File.read("/src/l1/test.js").match("slinky_require").should_not == nil
59
60
  @resp.content.match("slinky_require").should == nil
@@ -83,7 +84,7 @@ eos
83
84
  Slinky::Server.config = cr
84
85
  Slinky::Server.manifest = @mdevel
85
86
  $stdout.should_receive(:puts).with("Compiled /src/test.haml".foreground(:green))
86
- @resp.should_receive(:content_type).with("text/html").at_least(:once)
87
+ @resp.should_receive(:content_type).with("text/html; charset=utf-8").at_least(:once)
87
88
  Slinky::Server.process_path @resp, "this/doesnt/exist.html"
88
89
  @resp.content.include?("html").should == true
89
90
  end
@@ -98,7 +99,7 @@ eos
98
99
  Slinky::Server.config = cr
99
100
  Slinky::Server.manifest = @mdevel
100
101
  @resp.should_receive(:status=).with(404)
101
- @resp.should_receive(:content_type).with("text/html").at_least(:once)
102
+ @resp.should_receive(:content_type).with("text/html; charset=utf-8").at_least(:once)
102
103
  Slinky::Server.process_path @resp, "this/doesnt/exist.html"
103
104
  end
104
105
 
@@ -114,7 +115,7 @@ eos
114
115
  Slinky::Server.config = cr
115
116
  manifest = Slinky::Manifest.new("/src", cr)
116
117
  Slinky::Server.manifest = manifest
117
- @resp.should_receive(:content_type).with("text/html").at_least(:once)
118
+ @resp.should_receive(:content_type).with("text/html; charset=utf-8").at_least(:once)
118
119
  Slinky::Server.process_path @resp, "hello/doesnt/exist.html"
119
120
  @resp.content.include?("goodbye").should == true
120
121
  end
@@ -8,73 +8,10 @@ require 'bundler/setup'
8
8
  require 'rspec'
9
9
  require 'slinky'
10
10
  require 'fakefs/safe'
11
+ require 'tmpdir'
11
12
  require 'fileutils'
12
13
  require 'open-uri'
13
14
 
14
- # Requires supporting files with custom matchers and macros, etc,
15
- # in ./support/ and its subdirectories.
16
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
17
-
18
- # Monkeypath to fix Tempfile creation in Ruby 2.1
19
- # (https://github.com/defunkt/fakefs/pull/227)
20
- module FakeFS
21
- class Dir
22
- if RUBY_VERSION >= '2.1'
23
- module Tmpname # :nodoc:
24
- module_function
25
-
26
- def tmpdir
27
- Dir.tmpdir
28
- end
29
-
30
- def make_tmpname(prefix_suffix, n)
31
- case prefix_suffix
32
- when String
33
- prefix = prefix_suffix
34
- suffix = ""
35
- when Array
36
- prefix = prefix_suffix[0]
37
- suffix = prefix_suffix[1]
38
- else
39
- raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
40
- end
41
- t = Time.now.strftime("%Y%m%d")
42
- path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
43
- path << "-#{n}" if n
44
- path << suffix
45
- end
46
-
47
- def create(basename, *rest)
48
- if opts = Hash.try_convert(rest[-1])
49
- opts = opts.dup if rest.pop.equal?(opts)
50
- max_try = opts.delete(:max_try)
51
- opts = [opts]
52
- else
53
- opts = []
54
- end
55
- tmpdir, = *rest
56
- if $SAFE > 0 and tmpdir.tainted?
57
- tmpdir = '/tmp'
58
- else
59
- tmpdir ||= tmpdir()
60
- end
61
- n = nil
62
- begin
63
- path = File.join(tmpdir, make_tmpname(basename, n))
64
- yield(path, n, *opts)
65
- rescue Errno::EEXIST
66
- n ||= 0
67
- n += 1
68
- retry if !max_try or n < max_try
69
- raise "cannot generate temporary name using `#{basename}' under `#{tmpdir}'"
70
- end
71
- path
72
- end
73
- end
74
- end
75
- end
76
- end
77
-
78
15
  module Slinky
79
16
  class Runner
80
17
  def version
@@ -85,10 +22,9 @@ module Slinky
85
22
  # The coffee script compiler doesn't work under FakeFS
86
23
  module CoffeeCompiler
87
24
  def CoffeeCompiler::compile s, file
88
- FakeFS.deactivate!
89
- o = CoffeeScript::compile(s)
90
- FakeFS.activate!
91
- o
25
+ FakeFS.without {
26
+ CoffeeScript::compile(s)
27
+ }
92
28
  end
93
29
  end
94
30
 
@@ -97,10 +33,20 @@ module Slinky
97
33
  class << self
98
34
  alias :old_compile :compile
99
35
  def JSXCompiler::compile s, file
100
- FakeFS.deactivate!
101
- o = old_compile(s, file)
102
- FakeFS.activate!
103
- o
36
+ FakeFS.without {
37
+ old_compile(s, file)
38
+ }
39
+ end
40
+ end
41
+ end
42
+
43
+ module SassCompiler
44
+ class << self
45
+ alias :old_compile :compile
46
+ def SassCompiler::compile s, file
47
+ FakeFS.without {
48
+ old_compile(s, file)
49
+ }
104
50
  end
105
51
  end
106
52
  end
@@ -110,10 +56,9 @@ module Slinky
110
56
  class << self
111
57
  alias :get_old_cfile :get_cfile
112
58
  def get_cfile *args
113
- FakeFS.deactivate!
114
- cfile = get_old_cfile *args
115
- FakeFS.activate!
116
- cfile
59
+ FakeFS.without {
60
+ get_old_cfile *args
61
+ }
117
62
  end
118
63
  end
119
64
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slinky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Wylde
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-07 00:00:00.000000000 Z
11
+ date: 2016-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -151,19 +151,19 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '3.1'
153
153
  - !ruby/object:Gem::Dependency
154
- name: sass
154
+ name: sassc
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '3.3'
159
+ version: '1.8'
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '3.3'
166
+ version: '1.8'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: coffee-script
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -240,14 +240,14 @@ dependencies:
240
240
  requirements:
241
241
  - - '='
242
242
  - !ruby/object:Gem::Version
243
- version: 0.5.3
243
+ version: 0.6.7
244
244
  type: :development
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
248
  - - '='
249
249
  - !ruby/object:Gem::Version
250
- version: 0.5.3
250
+ version: 0.6.7
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: em-http-request
253
253
  requirement: !ruby/object:Gem::Requirement
@@ -332,6 +332,20 @@ dependencies:
332
332
  - - "~>"
333
333
  - !ruby/object:Gem::Version
334
334
  version: 0.9.3
335
+ - !ruby/object:Gem::Dependency
336
+ name: typescript-node
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - "~>"
340
+ - !ruby/object:Gem::Version
341
+ version: 1.6.2
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - "~>"
347
+ - !ruby/object:Gem::Version
348
+ version: 1.6.2
335
349
  description: A static file server for rich web apps that automatically compiles SASS,
336
350
  HAML, CoffeeScript and more
337
351
  email: micah@micahw.com
@@ -364,6 +378,7 @@ files:
364
378
  - lib/slinky/compilers/jsx-compiler.rb
365
379
  - lib/slinky/compilers/less-compiler.rb
366
380
  - lib/slinky/compilers/sass-compiler.rb
381
+ - lib/slinky/compilers/typescript-compiler.rb
367
382
  - lib/slinky/config_reader.rb
368
383
  - lib/slinky/em-popen3.rb
369
384
  - lib/slinky/errors.rb
@@ -404,7 +419,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
404
419
  version: '0'
405
420
  requirements: []
406
421
  rubyforge_project:
407
- rubygems_version: 2.2.2
422
+ rubygems_version: 2.4.5.1
408
423
  signing_key:
409
424
  specification_version: 4
410
425
  summary: Static file server for javascript apps