coderay 1.0.0.864rc3 → 1.0.1

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.
data/bin/coderay CHANGED
@@ -197,7 +197,7 @@ when 'li', 'list'
197
197
  end
198
198
  end
199
199
  when 'stylesheet', 'style', 'css'
200
- puts CodeRay::Encoders[:html]::CSS.new(args.first).stylesheet
200
+ puts CodeRay::Encoders[:html]::CSS.new(args.first || :default).stylesheet
201
201
  when 'commands'
202
202
  commands
203
203
  when 'help'
@@ -34,7 +34,7 @@ module CodeRay
34
34
  # downcase class name instead.
35
35
  def const_missing sym
36
36
  if sym == :FILE_EXTENSION
37
- (@plugin_id || name[/\w+$/].downcase).to_s
37
+ (defined?(@plugin_id) && @plugin_id || name[/\w+$/].downcase).to_s
38
38
  else
39
39
  super
40
40
  end
@@ -140,10 +140,18 @@ module Encoders
140
140
  text-decoration: inherit;
141
141
  color: inherit;
142
142
  }
143
+ body {
144
+ background-color: white;
145
+ padding: 0;
146
+ margin: 0;
147
+ }
143
148
  <%CSS%>
149
+ .CodeRay {
150
+ border: none;
151
+ }
144
152
  </style>
145
153
  </head>
146
- <body style="background-color: white;">
154
+ <body>
147
155
 
148
156
  <%CONTENT%>
149
157
  </body>
@@ -3,6 +3,7 @@ module Scanners
3
3
 
4
4
  module Java::BuiltinTypes # :nodoc:
5
5
 
6
+ #:nocov:
6
7
  List = %w[
7
8
  AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection
8
9
  AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel
@@ -412,6 +413,7 @@ module Scanners
412
413
  XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver
413
414
  XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView
414
415
  ]
416
+ #:nocov:
415
417
 
416
418
  end
417
419
 
@@ -76,7 +76,7 @@ module Scanners
76
76
  when match = scan(/[,{}\[\]]/)
77
77
  encoder.text_token match, :operator
78
78
  next
79
- when state == :initial && match = scan(/[\w.() ]*\S(?= *:(?: |$))/)
79
+ when state == :initial && match = scan(/[-\w.()\/ ]*\S(?= *:(?: |$))/)
80
80
  encoder.text_token match, :key
81
81
  key_indent = column(pos - match.size) - 1
82
82
  state = :colon
@@ -45,7 +45,6 @@ table.CodeRay td { padding: 2px 4px; vertical-align: top; }
45
45
  .CodeRay span.line-numbers { padding: 0px 4px; }
46
46
  .CodeRay .line { display: block; float: left; width: 100%; }
47
47
  .CodeRay .code { width: 100%; }
48
- .CodeRay .code pre { overflow: auto; }
49
48
  MAIN
50
49
 
51
50
  TOKEN_COLORS = <<-'TOKENS'
@@ -83,97 +83,6 @@ module CodeRay
83
83
  super
84
84
  end
85
85
 
86
- # Returns the tokens compressed by joining consecutive
87
- # tokens of the same kind.
88
- #
89
- # This can not be undone, but should yield the same output
90
- # in most Encoders. It basically makes the output smaller.
91
- #
92
- # Combined with dump, it saves space for the cost of time.
93
- #
94
- # If the scanner is written carefully, this is not required -
95
- # for example, consecutive //-comment lines could already be
96
- # joined in one comment token by the Scanner.
97
- def optimize
98
- raise NotImplementedError, 'Tokens#optimize needs to be rewritten.'
99
- # last_kind = last_text = nil
100
- # new = self.class.new
101
- # for text, kind in self
102
- # if text.is_a? String
103
- # if kind == last_kind
104
- # last_text << text
105
- # else
106
- # new << [last_text, last_kind] if last_kind
107
- # last_text = text
108
- # last_kind = kind
109
- # end
110
- # else
111
- # new << [last_text, last_kind] if last_kind
112
- # last_kind = last_text = nil
113
- # new << [text, kind]
114
- # end
115
- # end
116
- # new << [last_text, last_kind] if last_kind
117
- # new
118
- end
119
-
120
- # Compact the object itself; see optimize.
121
- def optimize!
122
- replace optimize
123
- end
124
-
125
- # Ensure that all begin_group tokens have a correspondent end_group.
126
- #
127
- # TODO: Test this!
128
- def fix
129
- raise NotImplementedError, 'Tokens#fix needs to be rewritten.'
130
- # tokens = self.class.new
131
- # # Check token nesting using a stack of kinds.
132
- # opened = []
133
- # for type, kind in self
134
- # case type
135
- # when :begin_group
136
- # opened.push [:begin_group, kind]
137
- # when :begin_line
138
- # opened.push [:end_line, kind]
139
- # when :end_group, :end_line
140
- # expected = opened.pop
141
- # if [type, kind] != expected
142
- # # Unexpected end; decide what to do based on the kind:
143
- # # - token was never opened: delete the end (just skip it)
144
- # next unless opened.rindex expected
145
- # # - token was opened earlier: also close tokens in between
146
- # tokens << token until (token = opened.pop) == expected
147
- # end
148
- # end
149
- # tokens << [type, kind]
150
- # end
151
- # # Close remaining opened tokens
152
- # tokens << token while token = opened.pop
153
- # tokens
154
- end
155
-
156
- def fix!
157
- replace fix
158
- end
159
-
160
- # TODO: Scanner#split_into_lines
161
- #
162
- # Makes sure that:
163
- # - newlines are single tokens
164
- # (which means all other token are single-line)
165
- # - there are no open tokens at the end the line
166
- #
167
- # This makes it simple for encoders that work line-oriented,
168
- # like HTML with list-style numeration.
169
- def split_into_lines
170
- raise NotImplementedError
171
- end
172
-
173
- def split_into_lines!
174
- replace split_into_lines
175
- end
176
-
177
86
  # Split the tokens into parts of the given +sizes+.
178
87
  #
179
88
  # The result will be an Array of Tokens objects. The parts have
@@ -1,7 +1,23 @@
1
1
  module CodeRay
2
2
 
3
- class TokensProxy < Struct.new :input, :lang, :options, :block
3
+ # The result of a scan operation is a TokensProxy, but should act like Tokens.
4
+ #
5
+ # This proxy makes it possible to use the classic CodeRay.scan.encode API
6
+ # while still providing the benefits of direct streaming.
7
+ class TokensProxy
4
8
 
9
+ attr_accessor :input, :lang, :options, :block
10
+
11
+ # Create a new TokensProxy with the arguments of CodeRay.scan.
12
+ def initialize input, lang, options = {}, block = nil
13
+ @input = input
14
+ @lang = lang
15
+ @options = options
16
+ @block = block
17
+ end
18
+
19
+ # Call CodeRay.encode if +encoder+ is a Symbol;
20
+ # otherwise, convert the receiver to tokens and call encoder.encode_tokens.
5
21
  def encode encoder, options = {}
6
22
  if encoder.respond_to? :to_sym
7
23
  CodeRay.encode(input, lang, encoder, options)
@@ -10,29 +26,30 @@ module CodeRay
10
26
  end
11
27
  end
12
28
 
29
+ # Tries to call encode;
30
+ # delegates to tokens otherwise.
13
31
  def method_missing method, *args, &blk
14
- encode method, *args
32
+ encode method.to_sym, *args
15
33
  rescue PluginHost::PluginNotFound
16
34
  tokens.send(method, *args, &blk)
17
35
  end
18
36
 
37
+ # The (cached) result of the tokenized input; a Tokens instance.
19
38
  def tokens
20
39
  @tokens ||= scanner.tokenize(input)
21
40
  end
22
41
 
42
+ # A (cached) scanner instance to use for the scan task.
23
43
  def scanner
24
44
  @scanner ||= CodeRay.scanner(lang, options, &block)
25
45
  end
26
46
 
47
+ # Overwrite Struct#each.
27
48
  def each *args, &blk
28
49
  tokens.each(*args, &blk)
29
50
  self
30
51
  end
31
52
 
32
- def count
33
- tokens.count
34
- end
35
-
36
53
  end
37
54
 
38
55
  end
@@ -1,3 +1,3 @@
1
1
  module CodeRay
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
@@ -148,7 +148,9 @@ more code # and another comment, in-line.
148
148
  end
149
149
  end
150
150
  assert_equal 'reserved', CodeRay::TokenKinds[:reserved]
151
- assert_equal false, CodeRay::TokenKinds[:shibboleet]
151
+ assert_warning 'Undefined Token kind: :shibboleet' do
152
+ assert_equal false, CodeRay::TokenKinds[:shibboleet]
153
+ end
152
154
  end
153
155
 
154
156
  class Milk < CodeRay::Encoders::Encoder
@@ -34,8 +34,8 @@ end
34
34
 
35
35
  # output as standalone HTML page (using CSS classes)
36
36
  page = CodeRay.scan('puts "Hello, world!"', :ruby).page
37
- assert page[<<-PAGE]
38
- <body style="background-color: white;">
37
+ assert_match <<-PAGE, page
38
+ <body>
39
39
 
40
40
  <table class="CodeRay"><tr>
41
41
  <td class="line-numbers" title="double click to toggle" ondblclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>
@@ -1,5 +1,6 @@
1
1
  require 'test/unit'
2
2
 
3
+ $VERBOSE = $CODERAY_DEBUG = true
3
4
  $:.unshift File.expand_path('../../../lib', __FILE__)
4
5
  require 'coderay'
5
6
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coderay
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.864rc3
5
- prerelease: 9
4
+ version: 1.0.1
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kornelius Kalnbach
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-19 00:00:00.000000000Z
12
+ date: 2011-10-19 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Fast and easy syntax highlighting for selected languages, written in
15
15
  Ruby. Comes with RedCloth integration and LOC counter.
@@ -21,6 +21,10 @@ extensions: []
21
21
  extra_rdoc_files:
22
22
  - README_INDEX.rdoc
23
23
  files:
24
+ - LICENSE
25
+ - README_INDEX.rdoc
26
+ - Rakefile
27
+ - lib/coderay.rb
24
28
  - lib/coderay/duo.rb
25
29
  - lib/coderay/encoder.rb
26
30
  - lib/coderay/encoders/_map.rb
@@ -29,10 +33,10 @@ files:
29
33
  - lib/coderay/encoders/debug.rb
30
34
  - lib/coderay/encoders/div.rb
31
35
  - lib/coderay/encoders/filter.rb
36
+ - lib/coderay/encoders/html.rb
32
37
  - lib/coderay/encoders/html/css.rb
33
38
  - lib/coderay/encoders/html/numbering.rb
34
39
  - lib/coderay/encoders/html/output.rb
35
- - lib/coderay/encoders/html.rb
36
40
  - lib/coderay/encoders/json.rb
37
41
  - lib/coderay/encoders/lines_of_code.rb
38
42
  - lib/coderay/encoders/null.rb
@@ -62,16 +66,16 @@ files:
62
66
  - lib/coderay/scanners/groovy.rb
63
67
  - lib/coderay/scanners/haml.rb
64
68
  - lib/coderay/scanners/html.rb
65
- - lib/coderay/scanners/java/builtin_types.rb
66
69
  - lib/coderay/scanners/java.rb
70
+ - lib/coderay/scanners/java/builtin_types.rb
67
71
  - lib/coderay/scanners/java_script.rb
68
72
  - lib/coderay/scanners/json.rb
69
73
  - lib/coderay/scanners/php.rb
70
74
  - lib/coderay/scanners/python.rb
71
75
  - lib/coderay/scanners/raydebug.rb
76
+ - lib/coderay/scanners/ruby.rb
72
77
  - lib/coderay/scanners/ruby/patterns.rb
73
78
  - lib/coderay/scanners/ruby/string_state.rb
74
- - lib/coderay/scanners/ruby.rb
75
79
  - lib/coderay/scanners/sql.rb
76
80
  - lib/coderay/scanners/text.rb
77
81
  - lib/coderay/scanners/xml.rb
@@ -83,10 +87,6 @@ files:
83
87
  - lib/coderay/tokens.rb
84
88
  - lib/coderay/tokens_proxy.rb
85
89
  - lib/coderay/version.rb
86
- - lib/coderay.rb
87
- - Rakefile
88
- - README_INDEX.rdoc
89
- - LICENSE
90
90
  - test/functional/basic.rb
91
91
  - test/functional/examples.rb
92
92
  - test/functional/for_redcloth.rb
@@ -106,13 +106,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
- version: 1.8.7
109
+ version: 1.8.6
110
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  none: false
112
112
  requirements:
113
- - - ! '>'
113
+ - - ! '>='
114
114
  - !ruby/object:Gem::Version
115
- version: 1.3.1
115
+ version: '0'
116
116
  requirements: []
117
117
  rubyforge_project: coderay
118
118
  rubygems_version: 1.8.10