Hello community,

here is the log from the commit of package rubygem-uglifier for 
openSUSE:Factory checked in at 2019-11-13 13:25:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-uglifier (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-uglifier.new.2990 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-uglifier"

Wed Nov 13 13:25:34 2019 rev:45 rq:747711 version:4.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-uglifier/rubygem-uglifier.changes        
2018-11-22 13:27:17.517889233 +0100
+++ 
/work/SRC/openSUSE:Factory/.rubygem-uglifier.new.2990/rubygem-uglifier.changes  
    2019-11-13 13:25:35.675526886 +0100
@@ -1,0 +2,8 @@
+Tue Nov 12 14:13:36 UTC 2019 - Manuel Schnitzer <mschnit...@suse.com>
+
+- updated to version 4.2.0
+
+  * show code context for error messages (#167)
+  * defer initialisation of ExecJS context to fix #165
+
+-------------------------------------------------------------------

Old:
----
  uglifier-4.1.20.gem

New:
----
  uglifier-4.2.0.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-uglifier.spec ++++++
--- /var/tmp/diff_new_pack.OJV31O/_old  2019-11-13 13:25:37.195528468 +0100
+++ /var/tmp/diff_new_pack.OJV31O/_new  2019-11-13 13:25:37.227528501 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package rubygem-uglifier
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-uglifier
-Version:        4.1.20
+Version:        4.2.0
 Release:        0
 %define mod_name uglifier
 %define mod_full_name %{mod_name}-%{version}

++++++ uglifier-4.1.20.gem -> uglifier-4.2.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.github/workflows/ruby.yml 
new/.github/workflows/ruby.yml
--- old/.github/workflows/ruby.yml      1970-01-01 01:00:00.000000000 +0100
+++ new/.github/workflows/ruby.yml      2019-09-25 21:50:32.000000000 +0200
@@ -0,0 +1,14 @@
+name: Ruby
+
+on: [push]
+
+jobs:
+  lint:
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v1
+      - uses: lautis/rubocop-action@master
+        name: Lint
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.rubocop.yml new/.rubocop.yml
--- old/.rubocop.yml    2018-11-17 22:25:20.000000000 +0100
+++ new/.rubocop.yml    2019-09-25 21:50:32.000000000 +0200
@@ -6,6 +6,9 @@
     - "vendor/**/*"
     - "gemfiles/vendor/**/*"
 
+Metrics/AbcSize:
+  Max: 20
+
 Metrics/BlockLength:
   Enabled: true
   Exclude:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.travis.yml new/.travis.yml
--- old/.travis.yml     2018-11-17 22:25:20.000000000 +0100
+++ new/.travis.yml     2019-09-25 21:50:32.000000000 +0200
@@ -6,28 +6,29 @@
   - 2.0.0
   - 2.1.10
   - 2.2.10
-  - 2.3.7
-  - 2.4.4
-  - 2.5.1
+  - 2.3.8
+  - 2.4.5
+  - 2.5.3
+  - 2.6.0
   - ruby-head
-  - jruby-9.2.0.0
+  - jruby-9.2.5.0
 before_install:
-  - gem install bundler -v 1.16.1
+  - gem install bundler -v 1.17.3
 git:
   submodules: false
 gemfile:
   - Gemfile
 matrix:
   include:
-    - rvm: 2.5.1
+    - rvm: 2.5.3
       gemfile: gemfiles/rubyracer
-    - rvm: jruby-9.2.0.0
+    - rvm: jruby-9.2.5.0
       gemfile: gemfiles/rubyrhino
-    - rvm: 2.5.1
+    - rvm: 2.5.3
       gemfile: gemfiles/alaska
       env: ALASKA=1
   allow_failures:
-    - rvm: 2.5.1
+    - rvm: 2.5.3
       gemfile: gemfiles/alaska
       env: ALASKA=1
     - rvm: ruby-head
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md    2018-11-17 22:25:20.000000000 +0100
+++ new/CHANGELOG.md    2019-09-25 21:50:32.000000000 +0200
@@ -1,3 +1,8 @@
+## 4.2.0 (25 September 2019)
+
+- show code context for error messages (#167)
+- defer initialisation of ExecJS context to fix #165
+
 ## 4.1.20 (17 November 2018)
 
 - update UglifyJS to 
[3.4.8](https://github.com/mishoo/UglifyJS2/compare/v3.4.9...v3.4.8)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2018-11-17 22:25:20.000000000 +0100
+++ new/README.md       2019-09-25 21:50:32.000000000 +0200
@@ -168,6 +168,7 @@
     :output_filename => nil,    # The filename or URL where the minified 
output can be found
     :input_source_map => nil    # The contents of the source map describing 
the input
   },
+  :error_context_lines => 8,    # How many context lines surrounding the error 
line. Env var ERROR_CONTEXT_LINES overrides this option
   :harmony => false             # Enable ES6/Harmony mode (experimental). 
Disabling mangling and compressing is recommended with Harmony mode.
 }
 ```
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/uglifier/version.rb new/lib/uglifier/version.rb
--- old/lib/uglifier/version.rb 2018-11-17 22:25:20.000000000 +0100
+++ new/lib/uglifier/version.rb 2019-09-25 21:50:32.000000000 +0200
@@ -1,4 +1,4 @@
 class Uglifier
   # Current version of Uglifier.
-  VERSION = "4.1.20"
+  VERSION = "4.2.0"
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/uglifier.rb new/lib/uglifier.rb
--- old/lib/uglifier.rb 2018-11-17 22:25:20.000000000 +0100
+++ new/lib/uglifier.rb 2019-09-25 21:50:32.000000000 +0200
@@ -98,6 +98,7 @@
     :toplevel => false,
     :ie8 => true, # Generate safe code for IE8
     :source_map => false, # Generate source map
+    :error_context_lines => 8, # How many lines surrounding the error line
     :harmony => false # Enable ES6/Harmony mode (experimental). Disabling 
mangling and compressing is recommended with Harmony mode.
   }
 
@@ -149,9 +150,6 @@
       raise ArgumentError, "Invalid option: #{missing}"
     end
     @options = options
-
-    source = harmony? ? source_with(HarmonySourcePath) : 
source_with(SourcePath)
-    @context = ExecJS.compile(source)
   end
 
   # Minifies JavaScript code
@@ -180,6 +178,13 @@
 
   private
 
+  def context
+    @context ||= begin
+      source = harmony? ? source_with(HarmonySourcePath) : 
source_with(SourcePath)
+      ExecJS.compile(source)
+    end
+  end
+
   def source_map_comments
     return '' unless @options[:source_map].respond_to?(:[])
 
@@ -213,25 +218,77 @@
       :ie8 => ie8?
     }
 
-    parse_result(@context.call("uglifier", options), generate_map)
+    parse_result(context.call("uglifier", options), generate_map, options)
   end
 
   def harmony?
     @options[:harmony]
   end
 
-  def error_message(result)
-    result['error']['message'] +
-      if result['error']['message'].start_with?("Unexpected token") && 
!harmony?
-        ". To use ES6 syntax, harmony mode must be enabled with " \
-        "Uglifier.new(:harmony => true)."
+  def harmony_error_message(message)
+    if message.start_with?("Unexpected token")
+      ". To use ES6 syntax, harmony mode must be enabled with " \
+      "Uglifier.new(:harmony => true)."
+    else
+      ""
+    end
+  end
+
+  def error_context_lines
+    @options.fetch(:error_context_lines, DEFAULTS[:error_context_lines]).to_i
+  end
+
+  def error_context_format_options(low, high, line_index, column)
+    line_width = high.to_s.size
+    {
+      :line_index => line_index,
+      :base_index => low,
+      :line_width => line_width,
+      :line_format => "\e[36m%#{line_width + 1}d\e[0m ", # cyan
+      :col => column
+    }
+  end
+
+  def format_error_line(line, options)
+    # light red
+    indicator = ' => '.rjust(options[:line_width] + 2)
+    colored_line = "#{line[0...options[:col]]}\e[91m#{line[options[:col]..-1]}"
+    "\e[91m#{indicator}\e[0m#{colored_line}\e[0m"
+  end
+
+  def format_lines(lines, options)
+    lines.map.with_index do |line, index|
+      if options[:base_index] + index == options[:line_index]
+        format_error_line(line, options)
       else
-        ""
+        "#{options[:line_format] % (options[:base_index] + index + 1)}#{line}"
       end
+    end
+  end
+
+  def context_lines_message(source, line_number, column)
+    return if line_number.nil?
+
+    line_index = line_number - 1
+    lines = source.split("\n")
+
+    first_line = [line_index - error_context_lines, 0].max
+    last_line = [line_number + error_context_lines, lines.size].min
+    options = error_context_format_options(first_line, last_line, line_index, 
column)
+    context_lines = lines[first_line...last_line]
+
+    "--\n#{format_lines(context_lines, options).join("\n")}\n=="
+  end
+
+  def error_message(result, options)
+    err = result['error']
+    harmony_msg = harmony? ? '' : harmony_error_message(err['message'].to_s)
+    src_ctx = context_lines_message(options[:source], err['line'], err['col'])
+    "#{err['message']}#{harmony_msg}\n#{src_ctx}"
   end
 
-  def parse_result(result, generate_map)
-    raise Error, error_message(result) if result.has_key?('error')
+  def parse_result(result, generate_map, options)
+    raise Error, error_message(result, options) if result.has_key?('error')
 
     if generate_map
       [result['code'] + source_map_comments, result['map']]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2018-11-17 22:25:20.000000000 +0100
+++ new/metadata        2019-09-25 21:50:32.000000000 +0200
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: uglifier
 version: !ruby/object:Gem::Version
-  version: 4.1.20
+  version: 4.2.0
 platform: ruby
 authors:
 - Ville Lautanala
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2018-11-17 00:00:00.000000000 Z
+date: 2019-09-25 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: execjs
@@ -62,14 +62,14 @@
   name: bundler
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ">="
       - !ruby/object:Gem::Version
         version: '1.3'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ">="
       - !ruby/object:Gem::Version
         version: '1.3'
 - !ruby/object:Gem::Dependency
@@ -99,6 +99,7 @@
 - CONTRIBUTING.md
 files:
 - ".document"
+- ".github/workflows/ruby.yml"
 - ".gitignore"
 - ".gitmodules"
 - ".rspec"
@@ -139,8 +140,7 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubyforge_project: 
-rubygems_version: 2.7.6
+rubygems_version: 3.0.3
 signing_key: 
 specification_version: 4
 summary: Ruby wrapper for UglifyJS JavaScript compressor
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uglifier.gemspec new/uglifier.gemspec
--- old/uglifier.gemspec        2018-11-17 22:25:20.000000000 +0100
+++ new/uglifier.gemspec        2019-09-25 21:50:32.000000000 +0200
@@ -30,6 +30,6 @@
   spec.add_runtime_dependency "execjs", [">= 0.3.0", "< 3"]
   spec.add_development_dependency "rspec", "~> 3.0"
   spec.add_development_dependency "rake", "~> 12.0"
-  spec.add_development_dependency "bundler", "~> 1.3"
+  spec.add_development_dependency "bundler", ">= 1.3"
   spec.add_development_dependency "sourcemap", "~> 0.1.1"
 end


Reply via email to