yuicompressor 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -64,6 +64,14 @@ module YUICompressor
64
64
  end
65
65
  end
66
66
 
67
+ def stringify(stream_or_string) #:nodoc:
68
+ case stream_or_string
69
+ when IO then stream_or_string.read
70
+ when String then stream_or_string
71
+ else raise ArgumentError, 'Stream or string required'
72
+ end
73
+ end
74
+
67
75
  # If we're on JRuby we can use the YUI Compressor Java classes directly. This
68
76
  # gives a huge speed boost. Otherwise we need to make a system call to the
69
77
  # Java interpreter and stream IO to/from the shell.
@@ -38,7 +38,7 @@ module YUICompressor
38
38
  def compress(stream_or_string, options={})
39
39
  raise ArgumentError, 'Option :type required' unless options.key?(:type)
40
40
 
41
- stream = streamify(stream_or_string)
41
+ string = stringify(stream_or_string)
42
42
 
43
43
  case options[:type].to_s
44
44
  when 'js'
@@ -52,15 +52,10 @@ module YUICompressor
52
52
  command = [ options.delete(:java) || 'java', '-jar', JAR_FILE ]
53
53
  command.concat(command_arguments(options))
54
54
 
55
- Open3.popen3(command.join(' ')) do |input, output, stderr|
56
- begin
57
- input.write(stream.read)
58
- input.close_write
59
-
60
- output.read
61
- rescue Exception => e
62
- raise 'Compression failed: %s' % e
63
- end
55
+ stdout_str, stderr_str, status = Open3.capture3(command.join(' '), stdin_data: string, binmode: true)
56
+ unless status.success?
57
+ raise "Compression failed: #{stderr_str}"
64
58
  end
59
+ stdout_str
65
60
  end
66
61
  end
@@ -86,4 +86,10 @@ CODE
86
86
  def test_large_stream
87
87
  assert compress_js(File.new(File.expand_path('../_files/jquery-1.4.2.js', __FILE__), 'r'))
88
88
  end
89
+
90
+ def test_error_reporting
91
+ assert_raises RuntimeError do
92
+ compress_js('function() {;') # syntax error
93
+ end
94
+ end
89
95
  end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'yuicompressor'
3
- s.version = '1.3.2'
4
- s.date = '2014-01-29'
3
+ s.version = '1.3.3'
4
+ s.date = '2014-03-01'
5
5
 
6
6
  s.summary = 'A YUI JavaScript and CSS compressor for Ruby and JRuby'
7
7
  s.description = 'A YUI JavaScript and CSS compressor for Ruby and JRuby'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yuicompressor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-29 00:00:00.000000000 Z
12
+ date: 2014-03-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake