pygments.rb 0.2.13 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.md +45 -19
- data/Rakefile +21 -11
- data/bench.rb +15 -48
- data/cache-lexers.rb +8 -0
- data/lexers +0 -0
- data/lib/pygments.rb +3 -6
- data/lib/pygments/mentos.py +343 -0
- data/lib/pygments/popen.rb +383 -0
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +5 -4
- data/test/test_data.c +2581 -0
- data/test/test_data.py +514 -0
- data/test/test_data_generated +2582 -0
- data/test/test_pygments.rb +208 -84
- data/vendor/pygments-main/pygments/lexers/_mapping.py +1 -1
- data/vendor/pygments-main/pygments/lexers/shell.py +1 -1
- data/vendor/simplejson/.gitignore +10 -0
- data/vendor/simplejson/.travis.yml +5 -0
- data/vendor/simplejson/CHANGES.txt +291 -0
- data/vendor/simplejson/LICENSE.txt +19 -0
- data/vendor/simplejson/MANIFEST.in +5 -0
- data/vendor/simplejson/README.rst +19 -0
- data/vendor/simplejson/conf.py +179 -0
- data/vendor/simplejson/index.rst +628 -0
- data/vendor/simplejson/scripts/make_docs.py +18 -0
- data/vendor/simplejson/setup.py +104 -0
- data/vendor/simplejson/simplejson/__init__.py +510 -0
- data/vendor/simplejson/simplejson/_speedups.c +2745 -0
- data/vendor/simplejson/simplejson/decoder.py +425 -0
- data/vendor/simplejson/simplejson/encoder.py +567 -0
- data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
- data/vendor/simplejson/simplejson/scanner.py +77 -0
- data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
- data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
- data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
- data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
- data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
- data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
- data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
- data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
- data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
- data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
- data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
- data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
- data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
- data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
- data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
- data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
- data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
- data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
- data/vendor/simplejson/simplejson/tool.py +39 -0
- metadata +80 -22
- data/ext/extconf.rb +0 -14
- data/ext/pygments.c +0 -466
- data/lib/pygments/c.rb +0 -54
- data/lib/pygments/ffi.rb +0 -155
- data/vendor/.gitignore +0 -1
data/test/test_pygments.rb
CHANGED
@@ -1,148 +1,272 @@
|
|
1
|
-
#
|
1
|
+
#coding: utf-8
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
|
-
require 'pygments'
|
4
|
+
require File.join(File.dirname(__FILE__), '..', '/lib/pygments.rb')
|
5
|
+
ENV['mentos-test'] = "yes"
|
5
6
|
|
6
|
-
|
7
|
-
include Pygments
|
7
|
+
P = Pygments
|
8
8
|
|
9
|
+
class PygmentsHighlightTest < Test::Unit::TestCase
|
9
10
|
RUBY_CODE = "#!/usr/bin/ruby\nputs 'foo'"
|
11
|
+
RUBY_CODE_TRAILING_NEWLINE = "#!/usr/bin/ruby\nputs 'foo'\n"
|
12
|
+
REDIS_CODE = File.read(File.join(File.dirname(__FILE__), '..', '/test/test_data.c'))
|
13
|
+
|
14
|
+
def test_highlight_defaults_to_html
|
15
|
+
code = P.highlight(RUBY_CODE)
|
16
|
+
assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
|
17
|
+
assert_equal '<div class', code[0..9]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_highlight_works_with_larger_files
|
21
|
+
code = P.highlight(REDIS_CODE)
|
22
|
+
assert_match 'used_memory_peak_human', code
|
23
|
+
assert_equal 454107, code.bytesize.to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_returns_nil_on_timeout
|
27
|
+
large_code = REDIS_CODE * 300
|
28
|
+
code = P.highlight(large_code) # a 30 mb highlight request will timeout
|
29
|
+
assert_equal nil, code
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_highlight_works_with_null_bytes
|
33
|
+
code = P.highlight("\0hello", :lexer => 'rb')
|
34
|
+
assert_match "hello", code
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_highlight_works_on_utf8
|
38
|
+
code = P.highlight('# ø', :lexer => 'rb', :options => {:encoding => 'utf-8'})
|
39
|
+
assert_match "# ø", code
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_highlight_works_on_utf8_automatically
|
43
|
+
code = P.highlight('# ø', :lexer => 'rb')
|
44
|
+
assert_match "# ø", code
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_highlight_works_on_utf8_all_chars_automatically
|
48
|
+
code = P.highlight('def foo: # ø', :lexer => 'py')
|
49
|
+
|
50
|
+
assert_equal '<div class="highlight"><pre><span clas', code[0,38]
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_highlight_works_with_multiple_utf8
|
54
|
+
code = P.highlight('# ø ø ø', :lexer => 'rb', :options => {:encoding => 'utf-8'})
|
55
|
+
assert_match "# ø ø ø", code
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_highlight_works_with_multiple_utf8_and_trailing_newline
|
59
|
+
code = P.highlight("#!/usr/bin/ruby\nputs 'ø..ø'\n", :lexer => 'rb')
|
60
|
+
assert_match "ø..ø", code
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_highlight_formatter_bbcode
|
64
|
+
code = P.highlight(RUBY_CODE, :formatter => 'bbcode')
|
65
|
+
assert_match 'color=#408080][i]#!/usr/bin/ruby[/i]', code
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_highlight_formatter_terminal
|
69
|
+
code = P.highlight(RUBY_CODE, :formatter => 'terminal')
|
70
|
+
assert_match '39;49;00m', code
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_highlight_options
|
74
|
+
code = P.highlight(RUBY_CODE, :options => {:full => true, :title => 'test'})
|
75
|
+
assert_match '<title>test</title>', code
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_highlight_works_with_single_character_input
|
79
|
+
code = P.highlight("a")
|
80
|
+
assert_match 'a</span>', code
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_highlight_works_with_trailing_newline
|
84
|
+
code = P.highlight(RUBY_CODE_TRAILING_NEWLINE)
|
85
|
+
assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_highlight_works_with_multiple_newlines
|
89
|
+
code = P.highlight(RUBY_CODE_TRAILING_NEWLINE + "derp\n\n")
|
90
|
+
assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_highlight_works_with_trailing_cr
|
94
|
+
code = P.highlight(RUBY_CODE_TRAILING_NEWLINE + "\r")
|
95
|
+
assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_highlight_still_works_with_invalid_code
|
99
|
+
code = P.highlight("importr python; wat?", :lexer => 'py')
|
100
|
+
assert_match ">importr</span>", code
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# Philosophically, I'm not the biggest fan of testing private
|
105
|
+
# methods, but given the relative delicacy of validity checking
|
106
|
+
# over the pipe I think it's necessary and informative.
|
107
|
+
class PygmentsValidityTest < Test::Unit::TestCase
|
108
|
+
def test_add_ids_with_padding
|
109
|
+
res = P.send(:add_ids, "herp derp baz boo foo", "ABCDEFGH")
|
110
|
+
assert_equal "ABCDEFGH herp derp baz boo foo ABCDEFGH", res
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_add_ids_on_empty_string
|
114
|
+
res = P.send(:add_ids, "", "ABCDEFGH")
|
115
|
+
assert_equal "ABCDEFGH ABCDEFGH", res
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_add_ids_with_unicode_data
|
119
|
+
res = P.send(:add_ids, "# ø ø ø", "ABCDEFGH")
|
120
|
+
assert_equal "ABCDEFGH # ø ø ø ABCDEFGH", res
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_add_ids_with_starting_slashes
|
124
|
+
res = P.send(:add_ids, '\\# ø ø ø..//', "ABCDEFGH")
|
125
|
+
assert_equal "ABCDEFGH \\# ø ø ø..// ABCDEFGH", res
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_get_fixed_bits_from_header
|
129
|
+
bits = P.send(:get_fixed_bits_from_header, '{"herp": "derp"}')
|
130
|
+
assert_equal "00000000000000000000000000010000", bits
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_get_fixed_bits_from_header_works_with_large_headers
|
134
|
+
bits = P.send(:get_fixed_bits_from_header, '{"herp": "derp"}' * 10000)
|
135
|
+
assert_equal "00000000000000100111000100000000", bits
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_size_check
|
139
|
+
size = "00000000000000000000000000100110"
|
140
|
+
res = P.send(:size_check, size)
|
141
|
+
assert_equal res, true
|
142
|
+
end
|
10
143
|
|
11
|
-
def
|
12
|
-
|
144
|
+
def test_size_check_bad
|
145
|
+
size = "some random thing"
|
146
|
+
res = P.send(:size_check, size)
|
147
|
+
assert_equal res, false
|
13
148
|
end
|
149
|
+
end
|
150
|
+
|
151
|
+
class PygmentsLexerTest < Test::Unit::TestCase
|
152
|
+
RUBY_CODE = "#!/usr/bin/ruby\nputs 'foo'"
|
153
|
+
|
14
154
|
def test_lexer_by_mimetype
|
15
|
-
assert_equal 'rb', lexer_name_for(:mimetype => 'text/x-ruby')
|
155
|
+
assert_equal 'rb', P.lexer_name_for(:mimetype => 'text/x-ruby')
|
156
|
+
assert_equal 'json', P.lexer_name_for(:mimetype => 'application/json')
|
16
157
|
end
|
158
|
+
|
17
159
|
def test_lexer_by_filename
|
18
|
-
assert_equal 'rb', lexer_name_for(:filename => 'test.rb')
|
160
|
+
assert_equal 'rb', P.lexer_name_for(:filename => 'test.rb')
|
161
|
+
assert_equal 'scala', P.lexer_name_for(:filename => 'test.scala')
|
19
162
|
end
|
163
|
+
|
20
164
|
def test_lexer_by_name
|
21
|
-
assert_equal 'rb', lexer_name_for(:lexer => 'ruby')
|
165
|
+
assert_equal 'rb', P.lexer_name_for(:lexer => 'ruby')
|
166
|
+
assert_equal 'python', P.lexer_name_for(:lexer => 'python')
|
167
|
+
assert_equal 'c', P.lexer_name_for(:lexer => 'c')
|
22
168
|
end
|
169
|
+
|
23
170
|
def test_lexer_by_filename_and_content
|
24
|
-
assert_equal 'rb', lexer_name_for(RUBY_CODE, :filename => 'test.rb')
|
171
|
+
assert_equal 'rb', P.lexer_name_for(RUBY_CODE, :filename => 'test.rb')
|
25
172
|
end
|
173
|
+
|
26
174
|
def test_lexer_by_nothing
|
27
|
-
|
175
|
+
assert_raise MentosError do
|
176
|
+
P.lexer_name_for(:invalid => true)
|
177
|
+
end
|
28
178
|
end
|
29
179
|
end
|
30
180
|
|
31
181
|
class PygmentsLexerClassTest < Test::Unit::TestCase
|
32
|
-
include Pygments
|
33
|
-
|
34
182
|
def test_find
|
35
|
-
assert_equal 'Ruby', Lexer['Ruby'].name
|
36
|
-
assert_equal 'Ruby', Lexer['ruby'].name
|
37
|
-
assert_equal 'Ruby', Lexer['rb'].name
|
38
|
-
assert_equal 'Ruby', Lexer['rake'].name
|
39
|
-
assert_equal 'Ruby', Lexer['gemspec'].name
|
183
|
+
assert_equal 'Ruby', P::Lexer['Ruby'].name
|
184
|
+
assert_equal 'Ruby', P::Lexer['ruby'].name
|
185
|
+
assert_equal 'Ruby', P::Lexer['rb'].name
|
186
|
+
assert_equal 'Ruby', P::Lexer['rake'].name
|
187
|
+
assert_equal 'Ruby', P::Lexer['gemspec'].name
|
40
188
|
end
|
189
|
+
|
41
190
|
def test_find_by_name
|
42
|
-
assert_equal Lexer['Ruby'], Lexer.find_by_name('Ruby')
|
191
|
+
assert_equal P::Lexer['Ruby'], P::Lexer.find_by_name('Ruby')
|
192
|
+
assert_equal P::Lexer['C'], P::Lexer.find_by_name('C')
|
43
193
|
end
|
194
|
+
|
44
195
|
def test_find_by_alias
|
45
|
-
assert_equal Lexer['Ruby'], Lexer.find_by_alias('rb')
|
46
|
-
assert_equal Lexer['Ruby'], Lexer.find_by_alias('ruby')
|
196
|
+
assert_equal P::Lexer['Ruby'], P::Lexer.find_by_alias('rb')
|
197
|
+
assert_equal P::Lexer['Ruby'], P::Lexer.find_by_alias('ruby')
|
198
|
+
assert_equal P::Lexer['Scala'], P::Lexer.find_by_alias('scala')
|
199
|
+
assert_equal P::Lexer['Go'], P::Lexer.find_by_alias('go')
|
47
200
|
end
|
201
|
+
|
48
202
|
def test_find_lexer_by_extname
|
49
|
-
assert_equal Lexer['Ruby'], Lexer.find_by_extname('.rb')
|
50
|
-
assert_equal Lexer['PHP'], Lexer.find_by_extname('.php4')
|
51
|
-
assert_equal Lexer['PHP'], Lexer.find_by_extname('.php5')
|
52
|
-
assert_equal Lexer['Groff'], Lexer.find_by_extname('.1')
|
53
|
-
assert_equal Lexer['Groff'], Lexer.find_by_extname('.3')
|
203
|
+
assert_equal P::Lexer['Ruby'], P::Lexer.find_by_extname('.rb')
|
204
|
+
assert_equal P::Lexer['PHP'], P::Lexer.find_by_extname('.php4')
|
205
|
+
assert_equal P::Lexer['PHP'], P::Lexer.find_by_extname('.php5')
|
206
|
+
assert_equal P::Lexer['Groff'], P::Lexer.find_by_extname('.1')
|
207
|
+
assert_equal P::Lexer['Groff'], P::Lexer.find_by_extname('.3')
|
208
|
+
assert_equal P::Lexer['C'], P::Lexer.find_by_extname('.c')
|
209
|
+
assert_equal P::Lexer['C'], P::Lexer.find_by_extname('.h')
|
210
|
+
assert_equal P::Lexer['Python'], P::Lexer.find_by_extname('.py')
|
211
|
+
assert_equal P::Lexer['Java'], P::Lexer.find_by_extname('.java')
|
54
212
|
end
|
55
|
-
|
56
|
-
|
213
|
+
|
214
|
+
def test_find_lexer_by_mimetype
|
215
|
+
assert_equal P::Lexer['Ruby'], P::Lexer.find_by_mimetype('text/x-ruby')
|
216
|
+
assert_equal P::Lexer['JSON'], P::Lexer.find_by_mimetype('application/json')
|
217
|
+
assert_equal P::Lexer['Python'], P::Lexer.find_by_mimetype('text/x-python')
|
57
218
|
end
|
58
219
|
end
|
59
220
|
|
221
|
+
|
60
222
|
class PygmentsCssTest < Test::Unit::TestCase
|
61
223
|
include Pygments
|
62
224
|
|
63
225
|
def test_css
|
64
|
-
assert_match /^\.err \{/, css
|
226
|
+
assert_match /^\.err \{/, P.css
|
65
227
|
end
|
228
|
+
|
66
229
|
def test_css_prefix
|
67
|
-
assert_match /^\.highlight \.err \{/, css('.highlight')
|
230
|
+
assert_match /^\.highlight \.err \{/, P.css('.highlight')
|
68
231
|
end
|
232
|
+
|
69
233
|
def test_css_options
|
70
|
-
assert_match /^\.codeerr \{/, css(:classprefix => 'code')
|
234
|
+
assert_match /^\.codeerr \{/, P.css(:classprefix => 'code')
|
71
235
|
end
|
236
|
+
|
72
237
|
def test_css_prefix_and_options
|
73
|
-
assert_match /^\.mycode \.codeerr \{/, css('.mycode', :classprefix => 'code')
|
238
|
+
assert_match /^\.mycode \.codeerr \{/, P.css('.mycode', :classprefix => 'code')
|
74
239
|
end
|
240
|
+
|
75
241
|
def test_css_default
|
76
|
-
assert_match '.c { color: #408080; font-style: italic }', css
|
242
|
+
assert_match '.c { color: #408080; font-style: italic }', P.css
|
77
243
|
end
|
244
|
+
|
78
245
|
def test_css_colorful
|
79
|
-
assert_match '.c { color: #
|
246
|
+
assert_match '.c { color: #888888 }', P.css(:style => 'colorful')
|
80
247
|
end
|
81
248
|
end
|
82
249
|
|
83
250
|
class PygmentsConfigTest < Test::Unit::TestCase
|
84
|
-
include Pygments
|
85
|
-
|
86
251
|
def test_styles
|
87
|
-
assert styles.include?('colorful')
|
252
|
+
assert P.styles.include?('colorful')
|
88
253
|
end
|
254
|
+
|
89
255
|
def test_filters
|
90
|
-
assert filters.include?('codetagify')
|
256
|
+
assert P.filters.include?('codetagify')
|
91
257
|
end
|
258
|
+
|
92
259
|
def test_lexers
|
93
|
-
list = lexers
|
260
|
+
list = P.lexers
|
94
261
|
assert list.has_key?('Ruby')
|
95
262
|
assert list['Ruby'][:aliases].include?('duby')
|
96
263
|
end
|
264
|
+
|
97
265
|
def test_formatters
|
98
|
-
list = formatters
|
266
|
+
list = P.formatters
|
99
267
|
assert list.has_key?('Html')
|
100
268
|
assert list['Html'][:aliases].include?('html')
|
101
269
|
end
|
102
270
|
end
|
103
271
|
|
104
|
-
class PygmentsHighlightTest < Test::Unit::TestCase
|
105
|
-
include Pygments
|
106
|
-
|
107
|
-
RUBY_CODE = "#!/usr/bin/ruby\nputs 'foo'"
|
108
|
-
|
109
|
-
def test_highlight_empty
|
110
|
-
highlight('')
|
111
|
-
highlight(nil)
|
112
|
-
end
|
113
|
-
|
114
|
-
def test_highlight_defaults_to_html
|
115
|
-
code = highlight(RUBY_CODE)
|
116
|
-
assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_highlight_markdown_compatible_html
|
120
|
-
code = highlight(RUBY_CODE)
|
121
|
-
assert_no_match %r{</pre></div>\Z}, code
|
122
|
-
end
|
123
|
-
|
124
|
-
def test_highlight_works_with_null_bytes
|
125
|
-
code = highlight("\0hello", :lexer => 'rb')
|
126
|
-
assert_match "hello", code
|
127
|
-
end
|
128
|
-
|
129
|
-
def test_highlight_works_on_utf8
|
130
|
-
code = highlight('# ø', :lexer => 'rb', :options => {:encoding => 'utf-8'})
|
131
|
-
assert_match '<span class="c1"># ø</span>', code
|
132
|
-
end
|
133
|
-
|
134
|
-
def test_highlight_formatter_bbcode
|
135
|
-
code = highlight(RUBY_CODE, :formatter => 'bbcode')
|
136
|
-
assert_match '[i]#!/usr/bin/ruby[/i]', code
|
137
|
-
end
|
138
272
|
|
139
|
-
def test_highlight_formatter_terminal
|
140
|
-
code = highlight(RUBY_CODE, :formatter => 'terminal')
|
141
|
-
assert_match "\e[37m#!/usr/bin/ruby\e[39;49;00m", code
|
142
|
-
end
|
143
|
-
|
144
|
-
def test_highlight_options
|
145
|
-
code = highlight(RUBY_CODE, :options => {:full => true, :title => 'test'})
|
146
|
-
assert_match '<title>test</title>', code
|
147
|
-
end
|
148
|
-
end
|
@@ -35,7 +35,7 @@ LEXERS = {
|
|
35
35
|
'AwkLexer': ('pygments.lexers.other', 'Awk', ('awk', 'gawk', 'mawk', 'nawk'), ('*.awk',), ('application/x-awk',)),
|
36
36
|
'BBCodeLexer': ('pygments.lexers.text', 'BBCode', ('bbcode',), (), ('text/x-bbcode',)),
|
37
37
|
'BaseMakefileLexer': ('pygments.lexers.text', 'Base Makefile', ('basemake',), (), ()),
|
38
|
-
'BashLexer': ('pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '.bashrc', 'bashrc', '.bash_*', 'bash_*'), ('application/x-sh', 'application/x-shellscript')),
|
38
|
+
'BashLexer': ('pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh', 'shell'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '.bashrc', 'bashrc', '.bash_*', 'bash_*'), ('application/x-sh', 'application/x-shellscript')),
|
39
39
|
'BashSessionLexer': ('pygments.lexers.shell', 'Bash Session', ('console',), ('*.sh-session',), ('application/x-shell-session',)),
|
40
40
|
'BatchLexer': ('pygments.lexers.shell', 'Batchfile', ('bat',), ('*.bat', '*.cmd'), ('application/x-dos-batch',)),
|
41
41
|
'BefungeLexer': ('pygments.lexers.other', 'Befunge', ('befunge',), ('*.befunge',), ('application/x-befunge',)),
|
@@ -31,7 +31,7 @@ class BashLexer(RegexLexer):
|
|
31
31
|
"""
|
32
32
|
|
33
33
|
name = 'Bash'
|
34
|
-
aliases = ['bash', 'sh', 'ksh']
|
34
|
+
aliases = ['bash', 'sh', 'ksh', 'shell']
|
35
35
|
filenames = ['*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass',
|
36
36
|
'.bashrc', 'bashrc', '.bash_*', 'bash_*']
|
37
37
|
mimetypes = ['application/x-sh', 'application/x-shellscript']
|
@@ -0,0 +1,291 @@
|
|
1
|
+
Version 2.6.0 released 2012-06-26
|
2
|
+
|
3
|
+
* Error messages changed to match proposal for Python 3.3.1
|
4
|
+
http://bugs.python.org/issue5067
|
5
|
+
|
6
|
+
Version 2.5.2 released 2012-05-10
|
7
|
+
|
8
|
+
* Fix for regression introduced in 2.5.1
|
9
|
+
https://github.com/simplejson/simplejson/issues/35
|
10
|
+
|
11
|
+
Version 2.5.1 released 2012-05-10
|
12
|
+
|
13
|
+
* Support for use_decimal=True in environments that use Python
|
14
|
+
sub-interpreters such as uWSGI
|
15
|
+
https://github.com/simplejson/simplejson/issues/34
|
16
|
+
|
17
|
+
Version 2.5.0 released 2012-03-29
|
18
|
+
|
19
|
+
* New item_sort_key option for encoder to allow fine grained control of sorted
|
20
|
+
output
|
21
|
+
|
22
|
+
Version 2.4.0 released 2012-03-06
|
23
|
+
|
24
|
+
* New bigint_as_string option for encoder to trade JavaScript number precision
|
25
|
+
issues for type issues.
|
26
|
+
https://github.com/simplejson/simplejson/issues/31
|
27
|
+
|
28
|
+
Version 2.3.3 released 2012-02-27
|
29
|
+
|
30
|
+
* Allow unknown numerical types for indent parameter
|
31
|
+
https://github.com/simplejson/simplejson/pull/29
|
32
|
+
|
33
|
+
Version 2.3.2 released 2011-12-30
|
34
|
+
|
35
|
+
* Fix crashing regression in speedups introduced in 2.3.1
|
36
|
+
|
37
|
+
Version 2.3.1 released 2011-12-29
|
38
|
+
|
39
|
+
* namedtuple_as_object now checks _asdict to ensure that it
|
40
|
+
is callable.
|
41
|
+
https://github.com/simplejson/simplejson/issues/26
|
42
|
+
|
43
|
+
Version 2.3.0 released 2011-12-05
|
44
|
+
|
45
|
+
* Any objects with _asdict() methods are now considered for
|
46
|
+
namedtuple_as_object.
|
47
|
+
https://github.com/simplejson/simplejson/pull/22
|
48
|
+
|
49
|
+
Version 2.2.1 released 2011-09-06
|
50
|
+
|
51
|
+
* Fix MANIFEST.in issue when building a sdist from a sdist.
|
52
|
+
https://github.com/simplejson/simplejson/issues/16
|
53
|
+
|
54
|
+
Version 2.2.0 released 2011-09-04
|
55
|
+
|
56
|
+
* Remove setuptools requirement, reverted to pure distutils
|
57
|
+
* use_decimal default for encoding (dump, dumps, JSONEncoder) is now True
|
58
|
+
* tuple encoding as JSON objects can be turned off with new
|
59
|
+
tuple_as_array=False option.
|
60
|
+
https://github.com/simplejson/simplejson/pull/6
|
61
|
+
* namedtuple (or other tuple subclasses with _asdict methods) are now
|
62
|
+
encoded as JSON objects rather than arrays by default. Can be disabled
|
63
|
+
and treated as a tuple with the new namedtuple_as_object=False option.
|
64
|
+
https://github.com/simplejson/simplejson/pull/6
|
65
|
+
* JSONDecodeError is now raised instead of ValueError when a document
|
66
|
+
ends with an opening quote and the C speedups are in use.
|
67
|
+
https://github.com/simplejson/simplejson/issues/15
|
68
|
+
* Updated documentation with information about JSONDecodeError
|
69
|
+
* Force unicode linebreak characters to be escaped (U+2028 and U+2029)
|
70
|
+
http://timelessrepo.com/json-isnt-a-javascript-subset
|
71
|
+
* Moved documentation from a git submodule to
|
72
|
+
http://simplejson.readthedocs.org/
|
73
|
+
|
74
|
+
Version 2.1.6 released 2011-05-08
|
75
|
+
|
76
|
+
* Prevent segfaults with deeply nested JSON documents
|
77
|
+
https://github.com/simplejson/simplejson/issues/11
|
78
|
+
* Fix compatibility with Python 2.5
|
79
|
+
https://github.com/simplejson/simplejson/issues/5
|
80
|
+
|
81
|
+
Version 2.1.5 released 2011-04-17
|
82
|
+
|
83
|
+
* Built sdist tarball with setuptools_git installed. Argh.
|
84
|
+
|
85
|
+
Version 2.1.4 released 2011-04-17
|
86
|
+
|
87
|
+
* Does not try to build the extension when using PyPy
|
88
|
+
* Trailing whitespace after commas no longer emitted when indent is used
|
89
|
+
* Migrated to github http://github.com/simplejson/simplejson
|
90
|
+
|
91
|
+
Version 2.1.3 released 2011-01-17
|
92
|
+
|
93
|
+
* Support the sort_keys option in C encoding speedups
|
94
|
+
http://code.google.com/p/simplejson/issues/detail?id=86
|
95
|
+
* Allow use_decimal to work with dump()
|
96
|
+
http://code.google.com/p/simplejson/issues/detail?id=87
|
97
|
+
|
98
|
+
Version 2.1.2 released 2010-11-01
|
99
|
+
|
100
|
+
* Correct wrong end when object_pairs_hook is used
|
101
|
+
http://code.google.com/p/simplejson/issues/detail?id=85
|
102
|
+
* Correct output for indent=0
|
103
|
+
http://bugs.python.org/issue10019
|
104
|
+
* Correctly raise TypeError when non-string keys are used with speedups
|
105
|
+
http://code.google.com/p/simplejson/issues/detail?id=82
|
106
|
+
* Fix the endlineno, endcolno attributes of the JSONDecodeError exception.
|
107
|
+
http://code.google.com/p/simplejson/issues/detail?id=81
|
108
|
+
|
109
|
+
Version 2.1.1 released 2010-03-31
|
110
|
+
|
111
|
+
* Change how setup.py imports ez_setup.py to try and workaround old versions
|
112
|
+
of setuptools.
|
113
|
+
http://code.google.com/p/simplejson/issues/detail?id=75
|
114
|
+
* Fix compilation on Windows platform (and other platforms with very
|
115
|
+
picky compilers)
|
116
|
+
* Corrected simplejson.__version__ and other minor doc changes.
|
117
|
+
* Do not fail speedups tests if speedups could not be built.
|
118
|
+
http://code.google.com/p/simplejson/issues/detail?id=73
|
119
|
+
|
120
|
+
Version 2.1.0 released 2010-03-10
|
121
|
+
|
122
|
+
* Decimal serialization officially supported for encoding with
|
123
|
+
use_decimal=True. For encoding this encodes Decimal objects and
|
124
|
+
for decoding it implies parse_float=Decimal
|
125
|
+
* Python 2.4 no longer supported (may still work, but no longer tested)
|
126
|
+
* Decoding performance and memory utilization enhancements
|
127
|
+
http://bugs.python.org/issue7451
|
128
|
+
* JSONEncoderForHTML class for escaping &, <, >
|
129
|
+
http://code.google.com/p/simplejson/issues/detail?id=66
|
130
|
+
* Memoization of object keys during encoding (when using speedups)
|
131
|
+
* Encoder changed to use PyIter_Next for list iteration to avoid
|
132
|
+
potential threading issues
|
133
|
+
* Encoder changed to use iteritems rather than PyDict_Next in order to
|
134
|
+
support dict subclasses that have a well defined ordering
|
135
|
+
http://bugs.python.org/issue6105
|
136
|
+
* indent encoding parameter changed to be a string rather than an integer
|
137
|
+
(integer use still supported for backwards compatibility)
|
138
|
+
http://code.google.com/p/simplejson/issues/detail?id=56
|
139
|
+
* Test suite (python setup.py test) now automatically runs with and without
|
140
|
+
speedups
|
141
|
+
http://code.google.com/p/simplejson/issues/detail?id=55
|
142
|
+
* Fixed support for older versions of easy_install (e.g. stock Mac OS X config)
|
143
|
+
http://code.google.com/p/simplejson/issues/detail?id=54
|
144
|
+
* Fixed str/unicode mismatches when using ensure_ascii=False
|
145
|
+
http://code.google.com/p/simplejson/issues/detail?id=48
|
146
|
+
* Fixed error message when parsing an array with trailing comma with speedups
|
147
|
+
http://code.google.com/p/simplejson/issues/detail?id=46
|
148
|
+
* Refactor decoder errors to raise JSONDecodeError instead of ValueError
|
149
|
+
http://code.google.com/p/simplejson/issues/detail?id=45
|
150
|
+
* New ordered_pairs_hook feature in decoder which makes it possible to
|
151
|
+
preserve key order. http://bugs.python.org/issue5381
|
152
|
+
* Fixed containerless unicode float decoding (same bug as 2.0.4, oops!)
|
153
|
+
http://code.google.com/p/simplejson/issues/detail?id=43
|
154
|
+
* Share PosInf definition between encoder and decoder
|
155
|
+
* Minor reformatting to make it easier to backport simplejson changes
|
156
|
+
to Python 2.7/3.1 json module
|
157
|
+
|
158
|
+
Version 2.0.9 released 2009-02-18
|
159
|
+
|
160
|
+
* Adds cyclic GC to the Encoder and Scanner speedups, which could've
|
161
|
+
caused uncollectible cycles in some cases when using custom parser
|
162
|
+
or encoder functions
|
163
|
+
|
164
|
+
Version 2.0.8 released 2009-02-15
|
165
|
+
|
166
|
+
* Documentation fixes
|
167
|
+
* Fixes encoding True and False as keys
|
168
|
+
* Fixes checking for True and False by identity for several parameters
|
169
|
+
|
170
|
+
Version 2.0.7 released 2009-01-04
|
171
|
+
|
172
|
+
* Documentation fixes
|
173
|
+
* C extension now always returns unicode strings when the input string is
|
174
|
+
unicode, even for empty strings
|
175
|
+
|
176
|
+
Version 2.0.6 released 2008-12-19
|
177
|
+
|
178
|
+
* Windows build fixes
|
179
|
+
|
180
|
+
Version 2.0.5 released 2008-11-23
|
181
|
+
|
182
|
+
* Fixes a segfault in the C extension when using check_circular=False and
|
183
|
+
encoding an invalid document
|
184
|
+
|
185
|
+
Version 2.0.4 released 2008-10-24
|
186
|
+
|
187
|
+
* Fixes a parsing error in the C extension when the JSON document is (only)
|
188
|
+
a floating point number. It would consume one too few characters in that
|
189
|
+
case, and claim the document invalid.
|
190
|
+
|
191
|
+
Version 2.0.3 released 2008-10-11
|
192
|
+
|
193
|
+
* Fixes reference leaks in the encoding speedups (sorry about that!)
|
194
|
+
* Fixes doctest suite for Python 2.6
|
195
|
+
* More optimizations for the decoder
|
196
|
+
|
197
|
+
Version 2.0.2 released 2008-10-06
|
198
|
+
|
199
|
+
* Fixes MSVC2003 build regression
|
200
|
+
* Fixes Python 2.4 compatibility in _speedups.c
|
201
|
+
|
202
|
+
Version 2.0.1 released 2008-09-29
|
203
|
+
|
204
|
+
* Fixes long encoding regression introduced in 2.0.0
|
205
|
+
* Fixes MinGW build regression introduced in 2.0.0
|
206
|
+
|
207
|
+
Version 2.0.0 released 2008-09-27
|
208
|
+
|
209
|
+
* optimized Python encoding path
|
210
|
+
* optimized Python decoding path
|
211
|
+
* optimized C encoding path
|
212
|
+
* optimized C decoding path
|
213
|
+
* switched to sphinx docs (nearly the same as the json module in python 2.6)
|
214
|
+
|
215
|
+
Version 1.9.3 released 2008-09-23
|
216
|
+
|
217
|
+
* Decoding is significantly faster (for our internal benchmarks)
|
218
|
+
* Pretty-printing tool changed from simplejson to simplejson.tool for better
|
219
|
+
Python 2.6 comaptibility
|
220
|
+
* Misc. bug fixes
|
221
|
+
|
222
|
+
Version 1.9 released 2008-05-03
|
223
|
+
|
224
|
+
* Rewrote test suite with unittest and doctest (no more nosetest dependency)
|
225
|
+
* Better PEP 7 and PEP 8 source compliance
|
226
|
+
* Removed simplejson.jsonfilter demo module
|
227
|
+
* simplejson.jsonfilter is no longer included
|
228
|
+
|
229
|
+
Version 1.8.1 released 2008-03-24
|
230
|
+
|
231
|
+
* Optional C extension for accelerating the decoding of JSON strings
|
232
|
+
* Command line interface for pretty-printing JSON (via python -msimplejson)
|
233
|
+
* Decoding of integers and floats is now extensible (e.g. to use Decimal) via
|
234
|
+
parse_int, parse_float options.
|
235
|
+
* Subversion and issue tracker moved to google code:
|
236
|
+
http://code.google.com/p/simplejson/
|
237
|
+
* "/" is no longer escaped, so if you're embedding JSON directly in HTML
|
238
|
+
you'll want to use .replace("/", "\\/") to prevent a close-tag attack.
|
239
|
+
|
240
|
+
Version 1.7 released 2007-03-18
|
241
|
+
|
242
|
+
* Improves encoding performance with an optional C extension to speed up
|
243
|
+
str/unicode encoding (by 10-150x or so), which yields an overall speed
|
244
|
+
boost of 2x+ (JSON is string-heavy).
|
245
|
+
* Support for encoding unicode code points outside the BMP to UTF-16
|
246
|
+
surrogate code pairs (specified by the Strings section of RFC 4627).
|
247
|
+
|
248
|
+
Version 1.6 released 2007-03-03
|
249
|
+
|
250
|
+
* Improved str support for encoding. Previous versions of simplejson
|
251
|
+
integrated strings directly into the output stream, this version ensures
|
252
|
+
they're of a particular encoding (default is UTF-8) so that the output
|
253
|
+
stream is valid.
|
254
|
+
|
255
|
+
Version 1.5 released 2007-01-18
|
256
|
+
|
257
|
+
* Better Python 2.5 compatibility
|
258
|
+
* Better Windows compatibility
|
259
|
+
* indent encoding parameter for pretty printing
|
260
|
+
* separators encoding parameter for generating optimally compact JSON
|
261
|
+
|
262
|
+
Version 1.3 released 2006-04-01
|
263
|
+
|
264
|
+
* The optional object_hook function is called upon decoding of any JSON
|
265
|
+
object literal, and its return value is used instead of the dict that
|
266
|
+
would normally be used. This can be used to efficiently implement
|
267
|
+
features such as JSON-RPC class hinting, or other custom decodings of
|
268
|
+
JSON. See the documentation for more information.
|
269
|
+
|
270
|
+
Version 1.1 released 2005-12-31
|
271
|
+
|
272
|
+
* Renamed from simple_json to simplejson to comply with PEP 8 module naming
|
273
|
+
guidelines
|
274
|
+
* Full set of documentation
|
275
|
+
* More tests
|
276
|
+
* The encoder and decoder have been extended to understand NaN, Infinity, and
|
277
|
+
-Infinity (but this can be turned off via allow_nan=False for strict JSON
|
278
|
+
compliance)
|
279
|
+
* The decoder's scanner has been fixed so that it no longer accepts invalid
|
280
|
+
JSON documents
|
281
|
+
* The decoder now reports line and column information as well as character
|
282
|
+
numbers for easier debugging
|
283
|
+
* The encoder now has a circular reference checker, which can be optionally
|
284
|
+
disabled with check_circular=False
|
285
|
+
* dump, dumps, load, loads now accept an optional cls kwarg to use an
|
286
|
+
alternate JSONEncoder or JSONDecoder class for convenience.
|
287
|
+
* The read/write compatibility shim for json-py now have deprecation warnings
|
288
|
+
|
289
|
+
Version 1.0 released 2005-12-25
|
290
|
+
|
291
|
+
* Initial release
|