pygments.rb 0.2.13 → 0.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 (64) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +45 -19
  3. data/Rakefile +21 -11
  4. data/bench.rb +15 -48
  5. data/cache-lexers.rb +8 -0
  6. data/lexers +0 -0
  7. data/lib/pygments.rb +3 -6
  8. data/lib/pygments/mentos.py +343 -0
  9. data/lib/pygments/popen.rb +383 -0
  10. data/lib/pygments/version.rb +1 -1
  11. data/pygments.rb.gemspec +5 -4
  12. data/test/test_data.c +2581 -0
  13. data/test/test_data.py +514 -0
  14. data/test/test_data_generated +2582 -0
  15. data/test/test_pygments.rb +208 -84
  16. data/vendor/pygments-main/pygments/lexers/_mapping.py +1 -1
  17. data/vendor/pygments-main/pygments/lexers/shell.py +1 -1
  18. data/vendor/simplejson/.gitignore +10 -0
  19. data/vendor/simplejson/.travis.yml +5 -0
  20. data/vendor/simplejson/CHANGES.txt +291 -0
  21. data/vendor/simplejson/LICENSE.txt +19 -0
  22. data/vendor/simplejson/MANIFEST.in +5 -0
  23. data/vendor/simplejson/README.rst +19 -0
  24. data/vendor/simplejson/conf.py +179 -0
  25. data/vendor/simplejson/index.rst +628 -0
  26. data/vendor/simplejson/scripts/make_docs.py +18 -0
  27. data/vendor/simplejson/setup.py +104 -0
  28. data/vendor/simplejson/simplejson/__init__.py +510 -0
  29. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  30. data/vendor/simplejson/simplejson/decoder.py +425 -0
  31. data/vendor/simplejson/simplejson/encoder.py +567 -0
  32. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  33. data/vendor/simplejson/simplejson/scanner.py +77 -0
  34. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  35. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  36. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  37. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  38. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  39. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  40. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  41. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  42. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  43. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  44. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  45. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  46. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  47. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  48. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  49. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  50. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  51. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  52. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  53. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  54. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  55. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  56. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  57. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  58. data/vendor/simplejson/simplejson/tool.py +39 -0
  59. metadata +80 -22
  60. data/ext/extconf.rb +0 -14
  61. data/ext/pygments.c +0 -466
  62. data/lib/pygments/c.rb +0 -54
  63. data/lib/pygments/ffi.rb +0 -155
  64. data/vendor/.gitignore +0 -1
data/lib/pygments/c.rb DELETED
@@ -1,54 +0,0 @@
1
- module Pygments
2
- module C
3
- extend self
4
-
5
- def start(python_path = File.expand_path('../../../vendor/pygments-main/', __FILE__))
6
- ENV['PYTHONPATH'], prev = python_path, ENV['PYTHONPATH']
7
- require 'pygments_ext'
8
- @started = true
9
- ensure
10
- ENV['PYTHONPATH'] = prev
11
- end
12
-
13
- def stop
14
- end
15
-
16
- def formatters
17
- start unless @started
18
-
19
- _formatters.inject(Hash.new) do |hash, (name, desc, aliases)|
20
- name.sub!(/Formatter$/,'')
21
- hash[name] = {
22
- :name => name,
23
- :description => desc,
24
- :aliases => aliases
25
- }
26
- hash
27
- end
28
- end
29
-
30
- def lexers
31
- start unless @started
32
-
33
- _lexers.inject(Hash.new) do |hash, (name, aliases, files, mimes)|
34
- hash[name] = {
35
- :description => name,
36
- :aliases => aliases,
37
- :filenames => files,
38
- :mimetypes => mimes
39
- }
40
- hash
41
- end
42
- end
43
-
44
- def highlight(code, opts={})
45
- start unless @started
46
-
47
- out = _highlight(code, opts)
48
- if opts[:formatter].nil? or opts[:formatter].to_s.downcase == 'html'
49
- out.gsub!(%r{</pre></div>\Z}, "</pre>\n</div>")
50
- end
51
- out
52
- end
53
- end
54
- end
data/lib/pygments/ffi.rb DELETED
@@ -1,155 +0,0 @@
1
- require 'rubypython'
2
-
3
- module Pygments
4
- module FFI
5
- extend self
6
-
7
- def start(pygments_path = File.expand_path('../../../vendor/pygments-main/', __FILE__))
8
- RubyPython.start
9
- RubyPython.import('pkg_resources') rescue nil
10
- sys = RubyPython.import('sys')
11
- sys.path.insert(0, pygments_path)
12
-
13
- @modules = [ :lexers, :formatters, :styles, :filters ].inject(Hash.new) do |hash, name|
14
- hash[name] = RubyPython.import("pygments.#{name}")
15
- hash
16
- end
17
-
18
- @pygments = RubyPython.import('pygments')
19
- end
20
-
21
- def stop
22
- RubyPython.stop
23
- @pygments = nil
24
- @modules = {}
25
- end
26
-
27
- def formatters
28
- start unless pygments
29
- @modules[:formatters].get_all_formatters.to_enum.inject(Hash.new) do |hash, fmt|
30
- name = fmt.__name__.rubify.sub!(/Formatter$/,'')
31
-
32
- hash[name] = {
33
- :name => name,
34
- :description => fmt.name.rubify,
35
- :aliases => fmt.aliases.rubify
36
- }
37
- hash
38
- end
39
- end
40
-
41
- def lexers
42
- start unless pygments
43
- @modules[:lexers].get_all_lexers.to_enum.inject(Hash.new) do |hash, lxr|
44
- lxr = lxr.rubify
45
- name = lxr.first
46
-
47
- hash[name] = {
48
- :name => name,
49
- :aliases => lxr[1],
50
- :filenames => lxr[2],
51
- :mimetypes => lxr[3]
52
- }
53
- hash
54
- end
55
- end
56
-
57
- def filters
58
- start unless pygments
59
- @modules[:filters].get_all_filters.to_enum.map{ |o| o.rubify }
60
- end
61
-
62
- def styles
63
- start unless pygments
64
- @modules[:styles].get_all_styles.to_enum.map{ |o| o.rubify }
65
- end
66
-
67
- def css(klass='', opts={})
68
- if klass.is_a?(Hash)
69
- opts = klass
70
- klass = ''
71
- end
72
- fmt = formatter_for('html', opts)
73
- fmt.get_style_defs(klass).rubify
74
- end
75
-
76
- def lexer_name_for(*args)
77
- lxr = lexer_for(*args)
78
- lxr.aliases[0].rubify if lxr
79
- end
80
-
81
- def highlight(code, opts={})
82
- start unless pygments
83
-
84
- if code.nil? or code.empty?
85
- return code
86
- end
87
-
88
- opts[:options] ||= {}
89
- opts[:options][:outencoding] ||= 'utf-8'
90
-
91
- lexer = lexer_for(code, opts)
92
-
93
- kwargs = opts[:options] || {}
94
- fmt_name = (opts[:formatter] || 'html').downcase
95
- formatter = formatter_for(fmt_name, kwargs)
96
-
97
- out = pygments.highlight(code, lexer, formatter)
98
- str = out.rubify
99
-
100
- # ruby's GC will clean these up eventually, but we explicitly
101
- # decref to avoid unncessary memory/gc pressure.
102
- [ lexer, formatter, out ].each do |obj|
103
- obj.pObject.xDecref
104
- end
105
-
106
- str.force_encoding(opts[:options][:outencoding]) if str.respond_to?(:force_encoding)
107
- if fmt_name == 'html'
108
- str.gsub!(%r{</pre></div>\Z}, "</pre>\n</div>")
109
- end
110
-
111
- str
112
- end
113
-
114
- private
115
-
116
- attr_reader :pygments
117
-
118
- def formatter_for(name, opts={})
119
- start unless pygments
120
- @modules[:formatters].get_formatter_by_name!(name, opts)
121
- end
122
-
123
- def lexer_for(code, opts={})
124
- start unless pygments
125
-
126
- if code.is_a?(Hash)
127
- opts = code
128
- code = nil
129
- end
130
-
131
- mod = @modules[:lexers]
132
- kwargs = opts[:options] || {}
133
-
134
- if name = opts[:lexer]
135
- mod.get_lexer_by_name!(name, kwargs)
136
-
137
- elsif name = opts[:mimetype]
138
- mod.get_lexer_for_mimetype!(name, kwargs)
139
-
140
- elsif name = opts[:filename]
141
- if code
142
- mod.guess_lexer_for_filename!(name, code, kwargs)
143
- else
144
- mod.get_lexer_for_filename!(name, kwargs)
145
- end
146
-
147
- elsif code
148
- mod.guess_lexer!(code, kwargs)
149
-
150
- else
151
- nil
152
- end
153
- end
154
- end
155
- end
data/vendor/.gitignore DELETED
@@ -1 +0,0 @@
1
- *.pyc