pygments.rb 2.2.0 → 2.3.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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/CHANGELOG.adoc +5 -0
  4. data/bench.rb +2 -2
  5. data/lib/pygments/lexer.rb +1 -1
  6. data/lib/pygments/mentos.py +6 -4
  7. data/lib/pygments/popen.rb +14 -7
  8. data/lib/pygments/version.rb +1 -1
  9. data/lib/pygments.rb +8 -2
  10. data/pygments.rb.gemspec +4 -4
  11. data/test/test_pygments.rb +13 -7
  12. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/AUTHORS +8 -1
  13. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/INSTALLER +0 -0
  14. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/LICENSE +0 -0
  15. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/METADATA +1 -1
  16. data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +524 -0
  17. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/REQUESTED +0 -0
  18. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/WHEEL +0 -0
  19. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/entry_points.txt +0 -0
  20. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/top_level.txt +0 -0
  21. data/vendor/pygments-main/bin/pygmentize +1 -1
  22. data/vendor/pygments-main/pygments/__init__.py +1 -1
  23. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -0
  24. data/vendor/pygments-main/pygments/formatters/html.py +20 -7
  25. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +83 -0
  26. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +55 -14
  27. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +401 -0
  28. data/vendor/pygments-main/pygments/lexers/_mapping.py +68 -52
  29. data/vendor/pygments-main/pygments/lexers/actionscript.py +2 -2
  30. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  31. data/vendor/pygments-main/pygments/lexers/amdgpu.py +9 -4
  32. data/vendor/pygments-main/pygments/lexers/apdlexer.py +448 -0
  33. data/vendor/pygments-main/pygments/lexers/apl.py +6 -3
  34. data/vendor/pygments-main/pygments/lexers/asc.py +51 -0
  35. data/vendor/pygments-main/pygments/lexers/asm.py +86 -58
  36. data/vendor/pygments-main/pygments/lexers/automation.py +1 -1
  37. data/vendor/pygments-main/pygments/lexers/bibtex.py +2 -2
  38. data/vendor/pygments-main/pygments/lexers/c_cpp.py +60 -33
  39. data/vendor/pygments-main/pygments/lexers/c_like.py +102 -3
  40. data/vendor/pygments-main/pygments/lexers/cddl.py +2 -2
  41. data/vendor/pygments-main/pygments/lexers/chapel.py +53 -29
  42. data/vendor/pygments-main/pygments/lexers/clean.py +6 -6
  43. data/vendor/pygments-main/pygments/lexers/configs.py +133 -43
  44. data/vendor/pygments-main/pygments/lexers/csound.py +2 -2
  45. data/vendor/pygments-main/pygments/lexers/devicetree.py +1 -1
  46. data/vendor/pygments-main/pygments/lexers/dotnet.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/erlang.py +1 -1
  48. data/vendor/pygments-main/pygments/lexers/floscript.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/futhark.py +5 -4
  50. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +36 -0
  51. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  52. data/vendor/pygments-main/pygments/lexers/graphics.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/graphviz.py +5 -4
  54. data/vendor/pygments-main/pygments/lexers/gsql.py +92 -0
  55. data/vendor/pygments-main/pygments/lexers/haskell.py +4 -4
  56. data/vendor/pygments-main/pygments/lexers/haxe.py +1 -1
  57. data/vendor/pygments-main/pygments/lexers/installers.py +2 -2
  58. data/vendor/pygments-main/pygments/lexers/javascript.py +145 -127
  59. data/vendor/pygments-main/pygments/lexers/jslt.py +94 -0
  60. data/vendor/pygments-main/pygments/lexers/julia.py +135 -183
  61. data/vendor/pygments-main/pygments/lexers/jvm.py +262 -202
  62. data/vendor/pygments-main/pygments/lexers/kuin.py +299 -0
  63. data/vendor/pygments-main/pygments/lexers/lisp.py +18 -15
  64. data/vendor/pygments-main/pygments/lexers/markup.py +3 -3
  65. data/vendor/pygments-main/pygments/lexers/matlab.py +23 -10
  66. data/vendor/pygments-main/pygments/lexers/meson.py +155 -0
  67. data/vendor/pygments-main/pygments/lexers/mime.py +6 -21
  68. data/vendor/pygments-main/pygments/lexers/ml.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -1
  70. data/vendor/pygments-main/pygments/lexers/objective.py +3 -3
  71. data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/procfile.py +43 -0
  73. data/vendor/pygments-main/pygments/lexers/promql.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/python.py +19 -5
  75. data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  77. data/vendor/pygments-main/pygments/lexers/ruby.py +1 -1
  78. data/vendor/pygments-main/pygments/lexers/rust.py +9 -10
  79. data/vendor/pygments-main/pygments/lexers/scripting.py +7 -7
  80. data/vendor/pygments-main/pygments/lexers/shell.py +11 -8
  81. data/vendor/pygments-main/pygments/lexers/smithy.py +79 -0
  82. data/vendor/pygments-main/pygments/lexers/smv.py +1 -1
  83. data/vendor/pygments-main/pygments/lexers/special.py +15 -2
  84. data/vendor/pygments-main/pygments/lexers/supercollider.py +1 -1
  85. data/vendor/pygments-main/pygments/lexers/tcl.py +3 -3
  86. data/vendor/pygments-main/pygments/lexers/teal.py +88 -0
  87. data/vendor/pygments-main/pygments/lexers/templates.py +19 -19
  88. data/vendor/pygments-main/pygments/lexers/teraterm.py +1 -1
  89. data/vendor/pygments-main/pygments/lexers/testing.py +1 -1
  90. data/vendor/pygments-main/pygments/lexers/theorem.py +4 -2
  91. data/vendor/pygments-main/pygments/lexers/thingsdb.py +118 -0
  92. data/vendor/pygments-main/pygments/lexers/tnt.py +25 -15
  93. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  94. data/vendor/pygments-main/pygments/lexers/webassembly.py +120 -0
  95. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  96. data/vendor/pygments-main/pygments/style.py +1 -1
  97. data/vendor/pygments-main/pygments/styles/__init__.py +2 -0
  98. data/vendor/pygments-main/pygments/styles/friendly.py +1 -0
  99. data/vendor/pygments-main/pygments/styles/gruvbox.py +107 -0
  100. data/vendor/pygments-main/pygments/styles/native.py +1 -0
  101. metadata +29 -14
  102. data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +0 -494
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3593fa0f51b043d8ffa0c2d91fef900f0d650d6e8c8787e32276a54682990089
4
- data.tar.gz: 1ff949d4aaaf38d6baa557e01150a1c9838e42aca0eb99a0eb391c9a89924b8d
3
+ metadata.gz: 494fdb817ce25f9a10420c22c8dce5c725b157da060f61bad53527af80bb1dff
4
+ data.tar.gz: 5bb0321b93ea7bac8ee0675803a5bbeee4b74b3784deb0302e50bde0d4dd53e6
5
5
  SHA512:
6
- metadata.gz: 9f6d6dfb5b4808dcd265206b30b19e8a865e3b53d3161ad891de99340a1903474eca425bdc92f6eba9116322d2ee96fc436a5931dacdf262e85f489385ac5068
7
- data.tar.gz: a3f5aa3cda14507d939db624d6dbd1a0fd585ab1923d9aa87e367851cf0e5dd269cffa209ca28e511927ad018e27e9e1bc1008c7e4d2791cc532cbd5279b7ae7
6
+ metadata.gz: 363d098055a9887fa9146a2aef00cc5d04929328a55a6c63fca726a34a9b6a4f32d3c4d8f2ba9cf071db23d978fb30868fd6c5d02e2027b1f5bf5529a3394298
7
+ data.tar.gz: a80e5d794c22e8d700995346c113877b4a8440253d2482578c3393f54f4ffe57f8fcb076731f63a96d1706de19fbeb7c81d42130f9cfbe87c1e06a9783821e8c
@@ -21,7 +21,7 @@ jobs:
21
21
  strategy:
22
22
  matrix:
23
23
  ruby: [ 'jruby-9.2', '2.3', '3.0' ]
24
- python: [ '3.5', '3.9' ]
24
+ python: [ '3.5', '3.10' ]
25
25
  platform: [ ubuntu-latest, macos-latest, windows-latest ]
26
26
  runs-on: ${{ matrix.platform }}
27
27
  steps:
data/CHANGELOG.adoc CHANGED
@@ -5,6 +5,11 @@
5
5
  This document provides a high-level view of the changes to the {project-name} by release.
6
6
  For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub.
7
7
 
8
+ == 2.3.0 (2022-01-05) - @slonopotamus
9
+
10
+ * Add `Pygments.pygments_version` method to query underlying Pygments version ({uri-repo}/issues/226[#226])
11
+ * Update Pygments to 2.10.0 ({uri-repo}/issues/234[#234])
12
+
8
13
  == 2.2.0 (2021-03-18) - @slonopotamus
9
14
 
10
15
  * Add support for custom lexers ({uri-repo}/pull/187[#187])
data/bench.rb CHANGED
@@ -12,8 +12,8 @@ repeats = ARGV[1] ? ARGV[1].to_i : 1
12
12
  code = File.open('test/test_pygments.rb').read.to_s * repeats
13
13
 
14
14
  puts "Benchmarking....\n"
15
- puts 'Size: ' + code.bytesize.to_s + " bytes\n"
16
- puts 'Iterations: ' + num.to_s + "\n"
15
+ puts "Size: #{code.bytesize} bytes\n"
16
+ puts "Iterations: #{num}\n"
17
17
 
18
18
  Benchmark.bm(40) do |x|
19
19
  x.report('pygments popen ') do
@@ -133,7 +133,7 @@ module Pygments
133
133
  @mimetypes_index = {}
134
134
  @raw_lexers = Pygments.lexers!
135
135
 
136
- @raw_lexers.values.each do |hash|
136
+ @raw_lexers.each_value do |hash|
137
137
  lexer = Lexer.new(hash[:name], hash[:aliases], hash[:filenames], hash[:mimetypes])
138
138
 
139
139
  @lexers << lexer
@@ -163,17 +163,19 @@ class Mentos(object):
163
163
  fmt = pygments.formatters.get_formatter_by_name(args[0], **kwargs)
164
164
  res = fmt.get_style_defs(args[1])
165
165
 
166
- elif method == 'lexer_name_for':
166
+ elif method == 'lexer_names_for':
167
167
  lexer = self.return_lexer(None, args, kwargs, text)
168
168
 
169
169
  if lexer:
170
- # We don't want the Lexer itself, just the name.
171
- # Take the first alias.
172
- res = lexer.aliases[0]
170
+ # We don't want the Lexer itself, just aliases.
171
+ res = json.dumps(list(lexer.aliases))
173
172
 
174
173
  else:
175
174
  _write_error("No lexer")
176
175
 
176
+ elif method == 'version':
177
+ res = json.dumps([pygments.__version__])
178
+
177
179
  else:
178
180
  _write_error("Invalid method " + method)
179
181
 
@@ -88,6 +88,13 @@ module Pygments
88
88
  raise MentosError, 'EPERM checking if child process is alive.'
89
89
  end
90
90
 
91
+ # Public: Returns version of underlying Pygments library
92
+ #
93
+ # @return [Integer]
94
+ def pygments_version
95
+ mentos(:version)[0]
96
+ end
97
+
91
98
  # Public: Get an array of available Pygments formatters
92
99
  #
93
100
  # @return [Array<String>] an array of formatters
@@ -138,8 +145,8 @@ module Pygments
138
145
  mentos(:css, ['html', klass], opts)
139
146
  end
140
147
 
141
- # @return [String, nil] the name of a lexer.
142
- def lexer_name_for(*args)
148
+ # @return [[String], nil] aliases of a lexer.
149
+ def lexer_names_for(*args)
143
150
  # Pop off the last arg if it's a hash, which becomes our opts
144
151
  opts = if args.last.is_a?(Hash)
145
152
  args.pop
@@ -149,7 +156,7 @@ module Pygments
149
156
 
150
157
  code = (args.pop if args.last.is_a?(String))
151
158
 
152
- mentos(:lexer_name_for, args, opts, code)
159
+ mentos(:lexer_names_for, args, opts, code)
153
160
  end
154
161
 
155
162
  # Public: Highlight code.
@@ -336,9 +343,9 @@ module Pygments
336
343
  # Read more bytes (the actual response body)
337
344
  res = @out.read(bytes.to_i)
338
345
 
339
- if header[:method] == 'highlight'
346
+ if header[:method] == 'highlight' && res.nil?
340
347
  # Make sure we have a result back; else consider this an error.
341
- raise MentosError, 'No highlight result back from mentos.' if res.nil?
348
+ raise MentosError, 'No highlight result back from mentos.'
342
349
  end
343
350
 
344
351
  res
@@ -346,8 +353,8 @@ module Pygments
346
353
 
347
354
  # @return Ruby objects for the methods that want them, text otherwise.
348
355
  def return_result(res, method)
349
- res = JSON.parse(res, symbolize_names: true) unless %i[lexer_name_for highlight css].include?(method)
350
- res = res.rstrip if res.class == String
356
+ res = JSON.parse(res, symbolize_names: true) unless %i[highlight css].include?(method)
357
+ res = res.rstrip if res.instance_of?(String)
351
358
  res
352
359
  end
353
360
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pygments
4
- VERSION = '2.2.0'
4
+ VERSION = '2.3.0'
5
5
  end
data/lib/pygments.rb CHANGED
@@ -18,14 +18,20 @@ module Pygments
18
18
  Thread.current.thread_variable_set(:pygments_engine, Pygments::Popen.new)
19
19
  end
20
20
 
21
+ def lexer_name_for(*args)
22
+ names = engine.lexer_names_for(*args)
23
+ names&.[](0)
24
+ end
25
+
21
26
  def_delegators :engine,
22
27
  :formatters,
23
28
  :lexers!,
24
29
  :filters,
25
30
  :styles,
26
31
  :css,
27
- :lexer_name_for,
32
+ :lexer_names_for,
28
33
  :highlight,
29
- :start
34
+ :start,
35
+ :pygments_version
30
36
  end
31
37
  end
data/pygments.rb.gemspec CHANGED
@@ -16,9 +16,9 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.metadata = {
18
18
  'homepage_uri' => s.homepage,
19
- 'bug_tracker_uri' => s.homepage + '/issues',
20
- 'changelog_uri' => s.homepage + '/blob/master/CHANGELOG.adoc',
21
- 'documentation_uri' => 'https://www.rubydoc.info/gems/' + s.name,
19
+ 'bug_tracker_uri' => "#{s.homepage}/issues",
20
+ 'changelog_uri' => "#{s.homepage}/blob/master/CHANGELOG.adoc",
21
+ 'documentation_uri' => "https://www.rubydoc.info/gems/#{s.name}",
22
22
  'source_code_uri' => s.homepage
23
23
  }
24
24
 
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
 
27
27
  s.add_development_dependency 'rake', '~> 13.0.0'
28
28
  s.add_development_dependency 'rubocop', '~> 0.81.0'
29
- s.add_development_dependency 'test-unit', '~> 3.4.0'
29
+ s.add_development_dependency 'test-unit', '~> 3.5.0'
30
30
 
31
31
  s.files = `git ls-files -z`.split("\0").reject { |f| File.symlink?(f) }
32
32
  end
@@ -92,12 +92,12 @@ class PygmentsHighlightTest < Test::Unit::TestCase
92
92
  end
93
93
 
94
94
  def test_highlight_works_with_multiple_newlines
95
- code = P.highlight(RUBY_CODE_TRAILING_NEWLINE + "derp\n\n")
95
+ code = P.highlight("#{RUBY_CODE_TRAILING_NEWLINE}derp\n\n")
96
96
  assert_match '<span class="ch">#!/usr/bin/ruby</span>', code
97
97
  end
98
98
 
99
99
  def test_highlight_works_with_trailing_cr
100
- code = P.highlight(RUBY_CODE_TRAILING_NEWLINE + "\r")
100
+ code = P.highlight("#{RUBY_CODE_TRAILING_NEWLINE}\r")
101
101
  assert_match '<span class="ch">#!/usr/bin/ruby</span>', code
102
102
  end
103
103
 
@@ -106,6 +106,12 @@ class PygmentsHighlightTest < Test::Unit::TestCase
106
106
  assert_match '>importr</span>', code
107
107
  end
108
108
 
109
+ def test_version
110
+ version_str = P.pygments_version
111
+ # This will throw "Malformed version number string" ArgumentError if version_str is not a valid version string
112
+ Gem::Version.new(version_str)
113
+ end
114
+
109
115
  def test_highlight_on_multi_threads
110
116
  omit 'We do not actually support multithreading'
111
117
 
@@ -121,27 +127,27 @@ class PygmentsLexerTest < Test::Unit::TestCase
121
127
  RUBY_CODE = "#!/usr/bin/ruby\nputs 'foo'"
122
128
 
123
129
  def test_lexer_by_mimetype
124
- assert_equal 'rb', P.lexer_name_for(mimetype: 'text/x-ruby')
130
+ assert_includes P.lexer_names_for(mimetype: 'text/x-ruby'), 'rb'
125
131
  assert_equal 'json', P.lexer_name_for(mimetype: 'application/json')
126
132
  end
127
133
 
128
134
  def test_lexer_by_filename
129
- assert_equal 'rb', P.lexer_name_for(filename: 'test.rb')
135
+ assert_includes P.lexer_names_for(filename: 'test.rb'), 'rb'
130
136
  assert_equal 'scala', P.lexer_name_for(filename: 'test.scala')
131
137
  end
132
138
 
133
139
  def test_lexer_by_name
134
- assert_equal 'rb', P.lexer_name_for(lexer: 'ruby')
140
+ assert_includes P.lexer_names_for(lexer: 'ruby'), 'rb'
135
141
  assert_equal 'python', P.lexer_name_for(lexer: 'python')
136
142
  assert_equal 'c', P.lexer_name_for(lexer: 'c')
137
143
  end
138
144
 
139
145
  def test_lexer_by_filename_and_content
140
- assert_equal 'rb', P.lexer_name_for(RUBY_CODE, filename: 'test.rb')
146
+ assert_includes P.lexer_names_for(RUBY_CODE, filename: 'test.rb'), 'rb'
141
147
  end
142
148
 
143
149
  def test_lexer_by_content
144
- assert_equal 'rb', P.lexer_name_for(RUBY_CODE)
150
+ assert_includes P.lexer_names_for(RUBY_CODE), 'rb'
145
151
  end
146
152
 
147
153
  def test_lexer_by_nothing
@@ -6,6 +6,7 @@ Major developers are Tim Hatch <tim@timhatch.com> and Armin Ronacher
6
6
  Other contributors, listed alphabetically, are:
7
7
 
8
8
  * Sam Aaron -- Ioke lexer
9
+ * João Abecasis -- JSLT lexer
9
10
  * Ali Afshar -- image formatter
10
11
  * Thomas Aglassinger -- Easytrieve, JCL, Rexx, Transact-SQL and VBScript
11
12
  lexers
@@ -32,7 +33,7 @@ Other contributors, listed alphabetically, are:
32
33
  * Sébastien Bigaret -- QVT Operational lexer
33
34
  * Jarrett Billingsley -- MiniD lexer
34
35
  * Adam Blinkinsop -- Haskell, Redcode lexers
35
- * Stéphane Blondon -- SGF and Sieve lexers
36
+ * Stéphane Blondon -- Procfile, SGF and Sieve lexers
36
37
  * Frits van Bommel -- assembler lexers
37
38
  * Pierre Bourdon -- bugfixes
38
39
  * Martijn Braam -- Kernel log lexer, BARE lexer
@@ -48,6 +49,7 @@ Other contributors, listed alphabetically, are:
48
49
  * Pete Curry -- bugfixes
49
50
  * Bryan Davis -- EBNF lexer
50
51
  * Bruno Deferrari -- Shen lexer
52
+ * Luke Drummond -- Meson lexer
51
53
  * Giedrius Dubinskas -- HTML formatter improvements
52
54
  * Owen Durni -- Haxe lexer
53
55
  * Alexander Dutton, Oxford University Computing Services -- SPARQL lexer
@@ -97,6 +99,7 @@ Other contributors, listed alphabetically, are:
97
99
  * Doug Hogan -- Mscgen lexer
98
100
  * Ben Hollis -- Mason lexer
99
101
  * Max Horn -- GAP lexer
102
+ * Fred Hornsey -- OMG IDL Lexer
100
103
  * Alastair Houghton -- Lexer inheritance facility
101
104
  * Tim Howard -- BlitzMax lexer
102
105
  * Dustin Howett -- Logos lexer
@@ -200,6 +203,7 @@ Other contributors, listed alphabetically, are:
200
203
  * Robert Simmons -- Standard ML lexer
201
204
  * Kirill Simonov -- YAML lexer
202
205
  * Corbin Simpson -- Monte lexer
206
+ * Ville Skyttä -- ASCII armored lexer
203
207
  * Alexander Smishlajev -- Visual FoxPro lexer
204
208
  * Steve Spigarelli -- XQuery lexer
205
209
  * Jerome St-Louis -- eC lexer
@@ -208,6 +212,7 @@ Other contributors, listed alphabetically, are:
208
212
  * Tom Stuart -- Treetop lexer
209
213
  * Colin Sullivan -- SuperCollider lexer
210
214
  * Ben Swift -- Extempore lexer
215
+ * tatt61880 -- Kuin lexer
211
216
  * Edoardo Tenani -- Arduino lexer
212
217
  * Tiberius Teng -- default style overhaul
213
218
  * Jeremy Thurgood -- Erlang, Squid config lexers
@@ -223,6 +228,7 @@ Other contributors, listed alphabetically, are:
223
228
  * Matthias Vallentin -- Bro lexer
224
229
  * Benoît Vinot -- AMPL lexer
225
230
  * Linh Vu Hong -- RSL lexer
231
+ * Immanuel Washington -- Smithy lexer
226
232
  * Nathan Weizenbaum -- Haml and Sass lexers
227
233
  * Nathan Whetsell -- Csound lexers
228
234
  * Dietmar Winkler -- Modelica lexer
@@ -239,5 +245,6 @@ Other contributors, listed alphabetically, are:
239
245
  * 15b3 -- Image Formatter improvements
240
246
  * Fabian Neumann -- CDDL lexer
241
247
  * Thomas Duboucher -- CDDL lexer
248
+ * Philipp Imhof -- Pango Markup formatter
242
249
 
243
250
  Many thanks for all contributions!
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Pygments
3
- Version: 2.8.1
3
+ Version: 2.10.0
4
4
  Summary: Pygments is a syntax highlighting package written in Python.
5
5
  Home-page: https://pygments.org/
6
6
  Author: Georg Brandl