rouge 2.0.3 → 2.0.5
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.
- checksums.yaml +4 -4
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/fsharp +12 -0
- data/lib/rouge/lexers/docker.rb +50 -0
- data/lib/rouge/lexers/fsharp.rb +118 -0
- data/lib/rouge/lexers/glsl.rb +1 -1
- data/lib/rouge/lexers/python.rb +19 -13
- data/lib/rouge/lexers/yaml.rb +10 -4
- data/lib/rouge/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e86ab14104619c2550743be376277431a1d348a
|
4
|
+
data.tar.gz: dd494f5310e3f05ea124ba5009c1ee93835591b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 199f707e796ee258424385a3e04347fee7f3ac56062d1bd1d0498eb0cef816a6d9944bd93cadb7cc390da3ca8191be3a8da407c0e2372e4cc209867a9a76ac6b
|
7
|
+
data.tar.gz: b48cc7207849973dc09b789c6d0379d3a0ab5d4f364c5d8ca0b7db2f53879f1865b8574b22d1dd9bdb32e39f09ff52aa261db44e29a062d1862b7f68aa687ff4
|
@@ -0,0 +1,12 @@
|
|
1
|
+
(* Binary tree with leaves carrying an integer. *)
|
2
|
+
type Tree = Leaf of int | Node of Tree * Tree
|
3
|
+
|
4
|
+
let rec existsLeaf test tree =
|
5
|
+
match tree with
|
6
|
+
| Leaf v -> test v
|
7
|
+
| Node (left, right) ->
|
8
|
+
existsLeaf test left
|
9
|
+
|| existsLeaf test right
|
10
|
+
|
11
|
+
let hasEvenLeaf tree =
|
12
|
+
existsLeaf (fun n -> n % 2 = 0) tree
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Docker < RegexLexer
|
6
|
+
title "Docker"
|
7
|
+
desc "Dockerfile syntax"
|
8
|
+
tag 'docker'
|
9
|
+
aliases 'dockerfile'
|
10
|
+
filenames 'Dockerfile', '*.docker'
|
11
|
+
mimetypes 'text/x-dockerfile-config'
|
12
|
+
|
13
|
+
KEYWORDS = %w(
|
14
|
+
FROM MAINTAINER CMD EXPOSE ENV ADD ENTRYPOINT VOLUME WORKDIR
|
15
|
+
).join('|')
|
16
|
+
|
17
|
+
start { @shell = Shell.new(@options) }
|
18
|
+
|
19
|
+
state :root do
|
20
|
+
rule /\s+/, Text
|
21
|
+
|
22
|
+
rule /^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do |m|
|
23
|
+
groups Keyword, Text::Whitespace, Keyword, Str
|
24
|
+
end
|
25
|
+
|
26
|
+
rule /^(#{KEYWORDS})\b(.*)/io do |m|
|
27
|
+
groups Keyword, Str
|
28
|
+
end
|
29
|
+
|
30
|
+
rule /#.*?$/, Comment
|
31
|
+
|
32
|
+
rule /^(ONBUILD\s+)?RUN(\s+)/i do
|
33
|
+
token Keyword
|
34
|
+
push :run
|
35
|
+
@shell.reset!
|
36
|
+
end
|
37
|
+
|
38
|
+
rule /\w+/, Text
|
39
|
+
rule /[^\w]+/, Text
|
40
|
+
rule /./, Text
|
41
|
+
end
|
42
|
+
|
43
|
+
state :run do
|
44
|
+
rule /\n/, Text, :pop!
|
45
|
+
rule /\\./m, Str::Escape
|
46
|
+
rule(/(\\.|[^\n\\])+/) { delegate @shell }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class FSharp < RegexLexer
|
6
|
+
title "FSharp"
|
7
|
+
desc 'F# (fsharp.net)'
|
8
|
+
tag 'fsharp'
|
9
|
+
filenames '*.fs', '*.fsx'
|
10
|
+
mimetypes 'application/fsharp-script', 'text/x-fsharp', 'text/x-fsi'
|
11
|
+
|
12
|
+
def self.keywords
|
13
|
+
@keywords ||= Set.new %w(
|
14
|
+
abstract and as assert base begin class default delegate do
|
15
|
+
done downcast downto elif else end exception extern false
|
16
|
+
finally for fun function global if in inherit inline interface
|
17
|
+
internal lazy let let! match member module mutable namespace
|
18
|
+
new not null of open or override private public rec return
|
19
|
+
return! select static struct then to true try type upcast
|
20
|
+
use use! val void when while with yield yield! sig atomic
|
21
|
+
break checked component const constraint constructor
|
22
|
+
continue eager event external fixed functor include method
|
23
|
+
mixin object parallel process protected pure sealed tailcall
|
24
|
+
trait virtual volatile
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.keyopts
|
29
|
+
@keyopts ||= Set.new %w(
|
30
|
+
!= # & && ( ) * \+ , - -. -> . .. : :: := :> ; ;; < <- =
|
31
|
+
> >] >} ? ?? [ [< [> [| ] _ ` { {< | |] } ~ |> <| <>
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.word_operators
|
36
|
+
@word_operators ||= Set.new %w(and asr land lor lsl lxor mod or)
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.primitives
|
40
|
+
@primitives ||= Set.new %w(unit int float bool string char list array)
|
41
|
+
end
|
42
|
+
|
43
|
+
operator = %r([\[\];,{}_()!$%&*+./:<=>?@^|~#-]+)
|
44
|
+
id = /[a-z][\w']*/i
|
45
|
+
upper_id = /[A-Z][\w']*/
|
46
|
+
|
47
|
+
state :root do
|
48
|
+
rule /\s+/m, Text
|
49
|
+
rule /false|true|[(][)]|\[\]/, Name::Builtin::Pseudo
|
50
|
+
rule /#{upper_id}(?=\s*[.])/, Name::Namespace, :dotted
|
51
|
+
rule upper_id, Name::Class
|
52
|
+
rule /[(][*](?![)])/, Comment, :comment
|
53
|
+
rule %r(//.*?\n), Comment::Single
|
54
|
+
rule id do |m|
|
55
|
+
match = m[0]
|
56
|
+
if self.class.keywords.include? match
|
57
|
+
token Keyword
|
58
|
+
elsif self.class.word_operators.include? match
|
59
|
+
token Operator::Word
|
60
|
+
elsif self.class.primitives.include? match
|
61
|
+
token Keyword::Type
|
62
|
+
else
|
63
|
+
token Name
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
rule operator do |m|
|
68
|
+
match = m[0]
|
69
|
+
if self.class.keyopts.include? match
|
70
|
+
token Punctuation
|
71
|
+
else
|
72
|
+
token Operator
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
rule /-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float
|
77
|
+
rule /0x\h[\h_]*/i, Num::Hex
|
78
|
+
rule /0o[0-7][0-7_]*/i, Num::Oct
|
79
|
+
rule /0b[01][01_]*/i, Num::Bin
|
80
|
+
rule /\d[\d_]*/, Num::Integer
|
81
|
+
|
82
|
+
rule /'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char
|
83
|
+
rule /'[.]'/, Str::Char
|
84
|
+
rule /'/, Keyword
|
85
|
+
rule /"/, Str::Double, :string
|
86
|
+
rule /[~?]#{id}/, Name::Variable
|
87
|
+
end
|
88
|
+
|
89
|
+
state :comment do
|
90
|
+
rule /[^(*)]+/, Comment
|
91
|
+
rule(/[(][*]/) { token Comment; push }
|
92
|
+
rule /[*][)]/, Comment, :pop!
|
93
|
+
rule /[(*)]/, Comment
|
94
|
+
end
|
95
|
+
|
96
|
+
state :string do
|
97
|
+
rule /[^\\"]+/, Str::Double
|
98
|
+
mixin :escape_sequence
|
99
|
+
rule /\\\n/, Str::Double
|
100
|
+
rule /"/, Str::Double, :pop!
|
101
|
+
end
|
102
|
+
|
103
|
+
state :escape_sequence do
|
104
|
+
rule /\\[\\"'ntbr]/, Str::Escape
|
105
|
+
rule /\\\d{3}/, Str::Escape
|
106
|
+
rule /\\x\h{2}/, Str::Escape
|
107
|
+
end
|
108
|
+
|
109
|
+
state :dotted do
|
110
|
+
rule /\s+/m, Text
|
111
|
+
rule /[.]/, Punctuation
|
112
|
+
rule /#{upper_id}(?=\s*[.])/, Name::Namespace
|
113
|
+
rule upper_id, Name::Class, :pop!
|
114
|
+
rule id, Name, :pop!
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
data/lib/rouge/lexers/glsl.rb
CHANGED
@@ -10,7 +10,7 @@ module Rouge
|
|
10
10
|
# Author: Sri Harsha Chilakapati
|
11
11
|
class Glsl < C
|
12
12
|
tag 'glsl'
|
13
|
-
filenames '*.glsl', '*.frag', '*.vert', '*.geom', '*.
|
13
|
+
filenames '*.glsl', '*.frag', '*.vert', '*.geom', '*.vs', '*.gs', '*.shader'
|
14
14
|
mimetypes 'x-shader/x-vertex', 'x-shader/x-fragment', 'x-shader/x-geometry'
|
15
15
|
|
16
16
|
title "GLSL"
|
data/lib/rouge/lexers/python.rb
CHANGED
@@ -107,14 +107,14 @@ module Rouge
|
|
107
107
|
|
108
108
|
# TODO: not in python 3
|
109
109
|
rule /`.*?`/, Str::Backtick
|
110
|
-
rule /(?:r|ur|ru)"""/i, Str, :
|
111
|
-
rule /(?:r|ur|ru)'''/i, Str, :
|
112
|
-
rule /(?:r|ur|ru)"/i, Str, :
|
113
|
-
rule /(?:r|ur|ru)'/i, Str, :
|
114
|
-
rule /u?"""/i, Str, :
|
115
|
-
rule /u?'''/i, Str, :
|
116
|
-
rule /u?"/i, Str, :
|
117
|
-
rule /u?'/i, Str, :
|
110
|
+
rule /(?:r|ur|ru)"""/i, Str, :raw_tdqs
|
111
|
+
rule /(?:r|ur|ru)'''/i, Str, :raw_tsqs
|
112
|
+
rule /(?:r|ur|ru)"/i, Str, :raw_dqs
|
113
|
+
rule /(?:r|ur|ru)'/i, Str, :raw_sqs
|
114
|
+
rule /u?"""/i, Str, :tdqs
|
115
|
+
rule /u?'''/i, Str, :tsqs
|
116
|
+
rule /u?"/i, Str, :dqs
|
117
|
+
rule /u?'/i, Str, :sqs
|
118
118
|
|
119
119
|
rule /@#{dotted_identifier}/i, Name::Decorator
|
120
120
|
|
@@ -204,7 +204,7 @@ module Rouge
|
|
204
204
|
rule %r(\\
|
205
205
|
( [\\abfnrtv"']
|
206
206
|
| \n
|
207
|
-
| N{
|
207
|
+
| N{[a-zA-z][a-zA-Z ]+[a-zA-Z]}
|
208
208
|
| u[a-fA-F0-9]{4}
|
209
209
|
| U[a-fA-F0-9]{8}
|
210
210
|
| x[a-fA-F0-9]{2}
|
@@ -213,21 +213,26 @@ module Rouge
|
|
213
213
|
)x, Str::Escape
|
214
214
|
end
|
215
215
|
|
216
|
+
state :raw_escape do
|
217
|
+
rule /\\./, Str
|
218
|
+
end
|
219
|
+
|
216
220
|
state :dqs do
|
217
221
|
rule /"/, Str, :pop!
|
218
|
-
|
222
|
+
mixin :escape
|
219
223
|
mixin :strings_double
|
220
224
|
end
|
221
225
|
|
222
226
|
state :sqs do
|
223
227
|
rule /'/, Str, :pop!
|
224
|
-
|
228
|
+
mixin :escape
|
225
229
|
mixin :strings_single
|
226
230
|
end
|
227
231
|
|
228
232
|
state :tdqs do
|
229
233
|
rule /"""/, Str, :pop!
|
230
234
|
rule /"/, Str
|
235
|
+
mixin :escape
|
231
236
|
mixin :strings_double
|
232
237
|
mixin :nl
|
233
238
|
end
|
@@ -235,13 +240,14 @@ module Rouge
|
|
235
240
|
state :tsqs do
|
236
241
|
rule /'''/, Str, :pop!
|
237
242
|
rule /'/, Str
|
243
|
+
mixin :escape
|
238
244
|
mixin :strings_single
|
239
245
|
mixin :nl
|
240
246
|
end
|
241
247
|
|
242
248
|
%w(tdqs tsqs dqs sqs).each do |qtype|
|
243
|
-
state :"
|
244
|
-
mixin :
|
249
|
+
state :"raw_#{qtype}" do
|
250
|
+
mixin :raw_escape
|
245
251
|
mixin :"#{qtype}"
|
246
252
|
end
|
247
253
|
end
|
data/lib/rouge/lexers/yaml.rb
CHANGED
@@ -63,6 +63,7 @@ module Rouge
|
|
63
63
|
|
64
64
|
def set_indent(match, opts={})
|
65
65
|
if indent < @next_indent
|
66
|
+
puts " yaml: indenting #{indent}/#{@next_indent}" if @debug
|
66
67
|
@indent_stack << @next_indent
|
67
68
|
end
|
68
69
|
|
@@ -122,7 +123,10 @@ module Rouge
|
|
122
123
|
end
|
123
124
|
|
124
125
|
# block collection indicators
|
125
|
-
rule(/[?:-](?=[ ]|$)/)
|
126
|
+
rule(/[?:-](?=[ ]|$)/) do |m|
|
127
|
+
set_indent m[0]
|
128
|
+
token Punctuation::Indicator
|
129
|
+
end
|
126
130
|
|
127
131
|
# the beginning of a block line
|
128
132
|
rule(/[ ]*/) { |m| token Text; continue_indent(m[0]); pop! }
|
@@ -166,8 +170,8 @@ module Rouge
|
|
166
170
|
|
167
171
|
state :block_nodes do
|
168
172
|
# implicit key
|
169
|
-
rule
|
170
|
-
|
173
|
+
rule /((?:\w[\w -]*)?)(:)(?=\s|$)/ do |m|
|
174
|
+
groups Name::Attribute, Punctuation::Indicator
|
171
175
|
set_indent m[0], :implicit => true
|
172
176
|
end
|
173
177
|
|
@@ -233,7 +237,9 @@ module Rouge
|
|
233
237
|
@block_scalar_indent ||= indent_size
|
234
238
|
|
235
239
|
if indent_size < dedent_level
|
236
|
-
|
240
|
+
save_indent m[0]
|
241
|
+
pop!
|
242
|
+
push :indentation
|
237
243
|
end
|
238
244
|
end
|
239
245
|
|
data/lib/rouge/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rouge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeanine Adkisson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
|
14
14
|
email:
|
@@ -43,12 +43,14 @@ files:
|
|
43
43
|
- lib/rouge/demos/d
|
44
44
|
- lib/rouge/demos/dart
|
45
45
|
- lib/rouge/demos/diff
|
46
|
+
- lib/rouge/demos/docker
|
46
47
|
- lib/rouge/demos/eiffel
|
47
48
|
- lib/rouge/demos/elixir
|
48
49
|
- lib/rouge/demos/erb
|
49
50
|
- lib/rouge/demos/erlang
|
50
51
|
- lib/rouge/demos/factor
|
51
52
|
- lib/rouge/demos/fortran
|
53
|
+
- lib/rouge/demos/fsharp
|
52
54
|
- lib/rouge/demos/gherkin
|
53
55
|
- lib/rouge/demos/glsl
|
54
56
|
- lib/rouge/demos/go
|
@@ -162,12 +164,14 @@ files:
|
|
162
164
|
- lib/rouge/lexers/d.rb
|
163
165
|
- lib/rouge/lexers/dart.rb
|
164
166
|
- lib/rouge/lexers/diff.rb
|
167
|
+
- lib/rouge/lexers/docker.rb
|
165
168
|
- lib/rouge/lexers/eiffel.rb
|
166
169
|
- lib/rouge/lexers/elixir.rb
|
167
170
|
- lib/rouge/lexers/erb.rb
|
168
171
|
- lib/rouge/lexers/erlang.rb
|
169
172
|
- lib/rouge/lexers/factor.rb
|
170
173
|
- lib/rouge/lexers/fortran.rb
|
174
|
+
- lib/rouge/lexers/fsharp.rb
|
171
175
|
- lib/rouge/lexers/gherkin.rb
|
172
176
|
- lib/rouge/lexers/gherkin/keywords.rb
|
173
177
|
- lib/rouge/lexers/glsl.rb
|