rouge 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ server {
2
+ listen 80;
3
+ server_name example.com *.example.com;
4
+ rewrite ^ http://www.domain.com$request_uri? permanent;
5
+ }
@@ -40,6 +40,9 @@ module Rouge
40
40
  span(tok, val) { |str| code << str }
41
41
  end
42
42
 
43
+ # add an extra line number for non-newline-terminated strings
44
+ num_lines += 1 if code[-1] != "\n"
45
+
43
46
  # generate a string of newline-separated line numbers for the gutter
44
47
  numbers = num_lines.times.map do |x|
45
48
  %<<div class="lineno">#{x+1}</div>>
@@ -0,0 +1,67 @@
1
+ module Rouge
2
+ module Lexers
3
+ class Nginx < RegexLexer
4
+ tag 'nginx'
5
+ mimetypes 'text/x-nginx-conf'
6
+
7
+ id = /[^\s$;{}()#]+/
8
+
9
+ state :root do
10
+ rule /(include)(\s+)([^\s;]+)/ do
11
+ group 'Keyword'; group 'Text'; group 'Name'
12
+ end
13
+
14
+ rule id, 'Keyword', :statement
15
+
16
+ mixin :base
17
+ end
18
+
19
+ state :block do
20
+ rule /}/, 'Punctuation', :pop!
21
+ rule id, 'Keyword.Namespace', :statement
22
+ mixin :base
23
+ end
24
+
25
+ state :statement do
26
+ rule /{/ do
27
+ token 'Punctuation'; pop!; push :block
28
+ end
29
+
30
+ rule /;/, 'Punctuation', :pop!
31
+
32
+ mixin :base
33
+ end
34
+
35
+ state :base do
36
+ rule /\s+/, 'Text'
37
+
38
+ rule /#.*?\n/, 'Comment.Single'
39
+ rule /(?:on|off)\b/, 'Name.Constant'
40
+ rule /[$][\w-]+/, 'Name.Variable'
41
+
42
+ # host/port
43
+ rule /([a-z0-9.-]+)(:)([0-9]+)/i do
44
+ group 'Name.Function'; group 'Punctuation'
45
+ group 'Literal.Number.Integer'
46
+ end
47
+
48
+ # mimetype
49
+ rule %r([a-z-]+/[a-z-]+)i, 'Name.Class'
50
+
51
+ rule /[0-9]+[kmg]?\b/i, 'Literal.Number.Integer'
52
+ rule /(~)(\s*)([^\s{]+)/ do
53
+ group 'Punctuation'; group 'Text'; group 'Literal.String.Regex'
54
+ end
55
+
56
+ rule /[:=~]/, 'Punctuation'
57
+
58
+ # pathname
59
+ rule %r(/#{id}?), 'Name'
60
+
61
+ rule /[^#\s;{}$\\]+/, 'Literal.String' # catchall
62
+
63
+ rule /[$;]/, 'Text'
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,104 @@
1
+ module Rouge
2
+ module Lexers
3
+ class ObjectiveC < RegexLexer
4
+ tag 'objective_c'
5
+ aliases 'objective-c', 'objectivec', 'obj_c', 'obj-c', 'objc'
6
+ # XXX TODO: objc has .h files too
7
+ filenames '*.m'
8
+ mimetypes 'text/x-objective-c'
9
+
10
+ id = /[a-zA-Z$_][a-zA-Z0-9$_]*/
11
+
12
+ def self.decorators
13
+ @decorators = Set.new %w(
14
+ private protected public encode synchronized try throw catch
15
+ finally end property synthesize dynamic selector
16
+ )
17
+ end
18
+
19
+ def self.keywords_type
20
+ @keywords_type ||= Set.new %w(
21
+ int long float short double char unsigned signed void id BOOL
22
+ IBOutlet IBAction SEL
23
+ )
24
+ end
25
+
26
+ def self.keywords
27
+ @keywords ||= Set.new %w(
28
+ auto break case const continue default do else enum extern
29
+ for goto if register restricted return sizeof static struct
30
+ switch typedef union volatile virtual while in
31
+ )
32
+ end
33
+
34
+ def self.reserved
35
+ @reserved ||= Set.new %w(
36
+ inline naked restrict thread typename
37
+ _inline _naked _restrict _thread _typename
38
+ __inline __naked __restrict __thread __typename
39
+
40
+ __asm __int8 __based __except __int16 __stdcall __cdecl
41
+ __fastcall __int32 __declspec __finally __int64 __try __leave
42
+ )
43
+ end
44
+
45
+ state :whitespace do
46
+ rule /^\s*#if\s+0/, 'Comment', :if0
47
+ rule /^\s*#/, 'Comment.Preproc', :macro
48
+ rule /\n/, 'Text'
49
+ rule /\s+/, 'Text'
50
+ rule /\\\n/, 'Literal.String.Escape'
51
+ rule %r(//(\\.|.)*?\n), 'Comment.Single'
52
+ rule %r(/[*].*?[*]/), 'Comment.Multiline'
53
+ end
54
+
55
+ state :statements do
56
+ rule /[L@]?"/, 'Literal.String', :string
57
+ rule /(L|@)?'(\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\'\n]|\\.)'/,
58
+ 'Literal.String.Char'
59
+ rule /(\d+[.]\d*|[.]\d+|\d+)e[+-]?\d+l?/i, 'Literal.Number.Float'
60
+ rule /(\d+[.]\d*|[.]\d+)f?/i, 'Literal.Number.Float'
61
+ rule /\d+f/i, 'Literal.Number.Float'
62
+ rule /0x[0-9a-f]+l?/i, 'Literal.Number.Hex'
63
+ rule /0[0-7]+l?/i, 'Literal.Number.Oct'
64
+ rule /\d+l?/i, 'Literal.Number.Integer'
65
+ rule %r([~!%^&*+=|?:<>/-]), 'Operator'
66
+ rule /[()\[\],.]/, 'Punctuation'
67
+
68
+ rule /#{id}:(?!:)/, 'Name.Label'
69
+
70
+ rule /@(#{id})/ do |m|
71
+ if self.class.decorators.include? m[1]
72
+ token 'Keyword'
73
+ else
74
+ token 'Error'
75
+ end
76
+ end
77
+
78
+ rule /(TRUE|FALSE|nil|NULL)\b/, 'Name.Builtin'
79
+
80
+ rule id do |m|
81
+ name = m[0]
82
+
83
+ if self.class.keywords.include? name
84
+ token 'Keyword'
85
+ elsif self.class.keywords_type.include? name
86
+ token 'Keyword.Type'
87
+ elsif self.class.reserved.include? name
88
+ token 'Keyword.Reserved'
89
+ end
90
+ end
91
+ end
92
+
93
+ state :root do
94
+ mixin :whitespace
95
+
96
+ rule %r(
97
+ ([a-zA-Z0-9_*\s]+?[\s*]) # return arguments
98
+ (#{id}) # method name
99
+ (\s*[(][^;]*?[)]) # signature
100
+ )x
101
+ end
102
+ end
103
+ end
104
+ end
@@ -328,7 +328,10 @@ module Rouge
328
328
  raise 'empty stack!' if stack.empty?
329
329
 
330
330
  debug { " popping stack: #{times}" }
331
- times.times { stack.pop }
331
+
332
+ stack.pop(times)
333
+
334
+ nil
332
335
  end
333
336
 
334
337
  # reset the stack back to `[:root]`.
@@ -1,5 +1,5 @@
1
1
  module Rouge
2
2
  def self.version
3
- "0.2.7"
3
+ "0.2.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rouge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-22 00:00:00.000000000 Z
12
+ date: 2012-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -37,6 +37,7 @@ extra_rdoc_files: []
37
37
  files:
38
38
  - Gemfile
39
39
  - lib/rouge/util.rb
40
+ - lib/rouge/lexers/nginx.rb
40
41
  - lib/rouge/lexers/python.rb
41
42
  - lib/rouge/lexers/sql.rb
42
43
  - lib/rouge/lexers/common_lisp.rb
@@ -53,6 +54,7 @@ files:
53
54
  - lib/rouge/lexers/javascript.rb
54
55
  - lib/rouge/lexers/diff.rb
55
56
  - lib/rouge/lexers/viml.rb
57
+ - lib/rouge/lexers/objective_c.rb
56
58
  - lib/rouge/lexers/smalltalk.rb
57
59
  - lib/rouge/lexers/php/builtins.rb
58
60
  - lib/rouge/lexers/haskell.rb
@@ -118,6 +120,7 @@ files:
118
120
  - lib/rouge/demos/yaml
119
121
  - lib/rouge/demos/sql
120
122
  - lib/rouge/demos/groovy
123
+ - lib/rouge/demos/nginx
121
124
  - lib/rouge/demos/tcl
122
125
  - lib/rouge/demos/c
123
126
  - lib/rouge/demos/perl