rouge 3.0.0 → 3.1.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.
- checksums.yaml +4 -4
- data/lib/rouge/demos/elm +4 -0
- data/lib/rouge/demos/hack +5 -0
- data/lib/rouge/guessers/disambiguation.rb +13 -0
- data/lib/rouge/lexers/c.rb +1 -1
- data/lib/rouge/lexers/elm.rb +89 -0
- data/lib/rouge/lexers/fsharp.rb +1 -1
- data/lib/rouge/lexers/hack.rb +48 -0
- data/lib/rouge/lexers/haskell.rb +0 -1
- data/lib/rouge/lexers/kotlin.rb +1 -1
- data/lib/rouge/lexers/php.rb +4 -2
- data/lib/rouge/lexers/powershell.rb +1 -1
- data/lib/rouge/lexers/python.rb +1 -0
- data/lib/rouge/lexers/ruby.rb +1 -1
- data/lib/rouge/lexers/rust.rb +2 -2
- data/lib/rouge/lexers/sass.rb +3 -3
- data/lib/rouge/lexers/scss.rb +2 -2
- data/lib/rouge/lexers/shell.rb +16 -7
- data/lib/rouge/lexers/swift.rb +23 -3
- data/lib/rouge/version.rb +1 -1
- data/rouge.gemspec +4 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddf4afdd370e299029a9ec6d47a7742cb94208a1
|
4
|
+
data.tar.gz: a5cb0844af8b6be69ec296679c9ae5d28ed59034
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fa77ad742055077ee715ec202ad8fd4d8929dbd8397d1c9d16b0ea0e8a84d6b118b13dbb255dfb643ab89c88d348f22d80d157b836d350555b2f4afe1989ba6
|
7
|
+
data.tar.gz: a5c77e2ab64220fcf42c8afc71185f5f03c8dee74dd6dc27fb54e5a88002806d3b63aeadb9db121507e0a8b539c1e36d4235ee4c82d9f4c0f4ae8262bc92233c
|
data/lib/rouge/demos/elm
ADDED
@@ -83,6 +83,19 @@ module Rouge
|
|
83
83
|
|
84
84
|
next Matlab if matches?(/^\s*?%/)
|
85
85
|
end
|
86
|
+
|
87
|
+
disambiguate '*.php' do
|
88
|
+
# PHP always takes precedence over Hack
|
89
|
+
PHP
|
90
|
+
end
|
91
|
+
|
92
|
+
disambiguate '*.hh' do
|
93
|
+
next Cpp if matches?(/^\s*#include/)
|
94
|
+
next Hack if matches?(/^<\?hh/)
|
95
|
+
next Hack if matches?(/(\(|, ?)\$\$/)
|
96
|
+
|
97
|
+
Cpp
|
98
|
+
end
|
86
99
|
end
|
87
100
|
end
|
88
101
|
end
|
data/lib/rouge/lexers/c.rb
CHANGED
@@ -0,0 +1,89 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Elm < RegexLexer
|
6
|
+
title "Elm"
|
7
|
+
desc "The Elm programming language (http://elm-lang.org/)"
|
8
|
+
|
9
|
+
tag 'elm'
|
10
|
+
filenames '*.elm'
|
11
|
+
mimetypes 'text/x-elm'
|
12
|
+
|
13
|
+
# Keywords are logically grouped by lines
|
14
|
+
keywords = %w(
|
15
|
+
module exposing port
|
16
|
+
import as
|
17
|
+
type alias
|
18
|
+
if then else
|
19
|
+
case of
|
20
|
+
let in
|
21
|
+
)
|
22
|
+
|
23
|
+
state :root do
|
24
|
+
# Whitespaces
|
25
|
+
rule /\s+/m, Text
|
26
|
+
# Single line comments
|
27
|
+
rule /--.*/, Comment::Single
|
28
|
+
# Multiline comments
|
29
|
+
rule /{-/, Comment::Multiline, :multiline_comment
|
30
|
+
|
31
|
+
# Keywords
|
32
|
+
rule /\b(#{keywords.join('|')})\b/, Keyword
|
33
|
+
|
34
|
+
# Variable or a function
|
35
|
+
rule /[a-z][\w]*/, Name
|
36
|
+
# Underscore is a name for a variable, when it won't be used later
|
37
|
+
rule /_/, Name
|
38
|
+
# Type
|
39
|
+
rule /[A-Z][\w]*/, Keyword::Type
|
40
|
+
|
41
|
+
# Two symbol operators: -> :: // .. && || ++ |> <| << >> == /= <= >=
|
42
|
+
rule /(->|::|\/\/|\.\.|&&|\|\||\+\+|\|>|<\||>>|<<|==|\/=|<=|>=)/, Operator
|
43
|
+
# One symbol operators: + - / * % = < > ^ | !
|
44
|
+
rule /[+-\/*%=<>^\|!]/, Operator
|
45
|
+
# Lambda operator
|
46
|
+
rule /\\/, Operator
|
47
|
+
# Not standard Elm operators, but these symbols can be used for custom inflix operators. We need to highlight them as operators as well.
|
48
|
+
rule /[@\#$&~?]/, Operator
|
49
|
+
|
50
|
+
# Single, double quotes, and triple double quotes
|
51
|
+
rule /"""/, Str, :multiline_string
|
52
|
+
rule /'(\\.|.)'/, Str::Char
|
53
|
+
rule /"/, Str, :double_quote
|
54
|
+
|
55
|
+
# Numbers
|
56
|
+
rule /0x[\da-f]+/i, Num::Hex
|
57
|
+
rule /\d+e[+-]?\d+/i, Num::Float
|
58
|
+
rule /\d+\.\d+(e[+-]?\d+)?/i, Num::Float
|
59
|
+
rule /\d+/, Num::Integer
|
60
|
+
|
61
|
+
# Punctuation: [ ] ( ) , ; ` { } :
|
62
|
+
rule /[\[\](),;`{}:]/, Punctuation
|
63
|
+
end
|
64
|
+
|
65
|
+
# Multiline and nested commenting
|
66
|
+
state :multiline_comment do
|
67
|
+
rule /-}/, Comment::Multiline, :pop!
|
68
|
+
rule /{-/, Comment::Multiline, :multiline_comment
|
69
|
+
rule /[^-{}]+/, Comment::Multiline
|
70
|
+
rule /[-{}]/, Comment::Multiline
|
71
|
+
end
|
72
|
+
|
73
|
+
# Double quotes
|
74
|
+
state :double_quote do
|
75
|
+
rule /[^\\"]+/, Str::Double
|
76
|
+
rule /\\"/, Str::Escape
|
77
|
+
rule /"/, Str::Double, :pop!
|
78
|
+
end
|
79
|
+
|
80
|
+
# Multiple line string with tripple double quotes, e.g. """ multi """
|
81
|
+
state :multiline_string do
|
82
|
+
rule /\s*"""/, Str, :pop!
|
83
|
+
rule /.*/, Str
|
84
|
+
rule /\s*/, Str
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/lib/rouge/lexers/fsharp.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
load_lexer 'php.rb'
|
6
|
+
|
7
|
+
class Hack < PHP
|
8
|
+
title 'Hack'
|
9
|
+
desc 'The Hack programming language (hacklang.org)'
|
10
|
+
tag 'hack'
|
11
|
+
aliases 'hack', 'hh'
|
12
|
+
filenames '*.php', '*.hh'
|
13
|
+
|
14
|
+
def self.detect?(text)
|
15
|
+
return true if /<\?hh/ =~ text
|
16
|
+
return true if text.shebang?('hhvm')
|
17
|
+
return true if /async function [a-zA-Z]/ =~ text
|
18
|
+
return true if /\): Awaitable</ =~ text
|
19
|
+
|
20
|
+
return false
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.keywords
|
24
|
+
@hh_keywords ||= super.merge Set.new %w(
|
25
|
+
type newtype enum
|
26
|
+
as super
|
27
|
+
async await Awaitable
|
28
|
+
vec dict keyset
|
29
|
+
void int string bool float double
|
30
|
+
arraykey num Stringish
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
prepend :template do
|
35
|
+
rule /<\?hh(\s*\/\/\s*(strict|decl|partial))?$/, Comment::Preproc, :php
|
36
|
+
end
|
37
|
+
|
38
|
+
prepend :php do
|
39
|
+
rule %r((/\*\s*)(HH_(?:IGNORE_ERROR|FIXME)\[\d+\])([^*]*)(\*/)) do
|
40
|
+
groups Comment::Preproc, Comment::Preproc, Comment::Multiline, Comment::Preproc
|
41
|
+
end
|
42
|
+
|
43
|
+
rule %r(// UNSAFE(?:_EXPR|_BLOCK)?), Comment::Preproc
|
44
|
+
rule %r(/\*\s*UNSAFE_EXPR\s*\*/), Comment::Preproc
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/rouge/lexers/haskell.rb
CHANGED
@@ -55,7 +55,6 @@ module Rouge
|
|
55
55
|
|
56
56
|
rule /\bimport\b/, Keyword::Reserved, :import
|
57
57
|
rule /\bmodule\b/, Keyword::Reserved, :module
|
58
|
-
rule /\berror\b/, Name::Exception
|
59
58
|
rule /\b(?:#{reserved.join('|')})\b/, Keyword::Reserved
|
60
59
|
# not sure why, but ^ doesn't work here
|
61
60
|
# rule /^[_a-z][\w']*/, Name::Function
|
data/lib/rouge/lexers/kotlin.rb
CHANGED
@@ -31,7 +31,7 @@ module Rouge
|
|
31
31
|
rule %r'^\s*\[.*?\]', Name::Attribute
|
32
32
|
rule %r'[^\S\n]+', Text
|
33
33
|
rule %r'\\\n', Text # line continuation
|
34
|
-
rule %r'
|
34
|
+
rule %r'//.*?$', Comment::Single
|
35
35
|
rule %r'/[*].*?[*]/'m, Comment::Multiline
|
36
36
|
rule %r'\n', Text
|
37
37
|
rule %r'::|!!|\?[:.]', Operator
|
data/lib/rouge/lexers/php.rb
CHANGED
@@ -77,6 +77,8 @@ module Rouge
|
|
77
77
|
|
78
78
|
def self.detect?(text)
|
79
79
|
return true if text.shebang?('php')
|
80
|
+
return false if /^<\?hh/ =~ text
|
81
|
+
return true if /^<\?php/ =~ text
|
80
82
|
end
|
81
83
|
|
82
84
|
state :root do
|
@@ -97,8 +99,8 @@ module Rouge
|
|
97
99
|
# heredocs
|
98
100
|
rule /<<<('?)(#{id})\1\n.*?\n\2;?\n/im, Str::Heredoc
|
99
101
|
rule /\s+/, Text
|
100
|
-
rule
|
101
|
-
rule %r(
|
102
|
+
rule /#.*?$/, Comment::Single
|
103
|
+
rule %r(//.*?$), Comment::Single
|
102
104
|
# empty comment, otherwise seen as the start of a docstring
|
103
105
|
rule %r(/\*\*/), Comment::Multiline
|
104
106
|
rule %r(/\*\*.*?\*/)m, Str::Doc
|
data/lib/rouge/lexers/python.rb
CHANGED
data/lib/rouge/lexers/ruby.rb
CHANGED
@@ -9,7 +9,7 @@ module Rouge
|
|
9
9
|
aliases 'rb'
|
10
10
|
filenames '*.rb', '*.ruby', '*.rbw', '*.rake', '*.gemspec', '*.podspec',
|
11
11
|
'Rakefile', 'Guardfile', 'Gemfile', 'Capfile', 'Podfile',
|
12
|
-
'Vagrantfile', '*.ru', '*.prawn', 'Berksfile'
|
12
|
+
'Vagrantfile', '*.ru', '*.prawn', 'Berksfile', '*.arb'
|
13
13
|
|
14
14
|
mimetypes 'text/x-ruby', 'application/x-ruby'
|
15
15
|
|
data/lib/rouge/lexers/rust.rb
CHANGED
@@ -18,8 +18,8 @@ module Rouge
|
|
18
18
|
@keywords ||= %w(
|
19
19
|
as assert break const copy do drop else enum extern fail false
|
20
20
|
fn for if impl let log loop match mod move mut priv pub pure
|
21
|
-
ref return self static struct true trait type unsafe use
|
22
|
-
box
|
21
|
+
ref return self static struct true trait type unsafe use where
|
22
|
+
while box
|
23
23
|
)
|
24
24
|
end
|
25
25
|
|
data/lib/rouge/lexers/sass.rb
CHANGED
@@ -23,7 +23,7 @@ module Rouge
|
|
23
23
|
|
24
24
|
state :content do
|
25
25
|
# block comments
|
26
|
-
rule %r(
|
26
|
+
rule %r(//.*?$) do
|
27
27
|
token Comment::Single
|
28
28
|
pop!; starts_block :single_comment
|
29
29
|
end
|
@@ -42,13 +42,13 @@ module Rouge
|
|
42
42
|
|
43
43
|
rule /:/, Name::Attribute, :old_style_attr
|
44
44
|
|
45
|
-
rule(/(
|
45
|
+
rule(/(?=[^\[\n]+?:([^a-z]|$))/) { push :attribute }
|
46
46
|
|
47
47
|
rule(//) { push :selector }
|
48
48
|
end
|
49
49
|
|
50
50
|
state :single_comment do
|
51
|
-
rule
|
51
|
+
rule /.*?$/, Comment::Single, :pop!
|
52
52
|
end
|
53
53
|
|
54
54
|
state :multi_comment do
|
data/lib/rouge/lexers/scss.rb
CHANGED
@@ -13,14 +13,14 @@ module Rouge
|
|
13
13
|
|
14
14
|
state :root do
|
15
15
|
rule /\s+/, Text
|
16
|
-
rule %r(
|
16
|
+
rule %r(//.*?$), Comment::Single
|
17
17
|
rule %r(/[*].*?[*]/)m, Comment::Multiline
|
18
18
|
rule /@import\b/, Keyword, :value
|
19
19
|
|
20
20
|
mixin :content_common
|
21
21
|
|
22
22
|
rule(/(?=[^;{}][;}])/) { push :attribute }
|
23
|
-
rule(/(?=[^;{}
|
23
|
+
rule(/(?=[^;{}:\[]+:[^a-z])/) { push :attribute }
|
24
24
|
|
25
25
|
rule(//) { push :selector }
|
26
26
|
end
|
data/lib/rouge/lexers/shell.rb
CHANGED
@@ -24,13 +24,22 @@ module Rouge
|
|
24
24
|
|
25
25
|
BUILTINS = %w(
|
26
26
|
alias bg bind break builtin caller cd command compgen
|
27
|
-
complete declare dirs disown
|
28
|
-
export false fc fg getopts hash help history jobs
|
29
|
-
local logout popd
|
30
|
-
shopt source suspend test time times trap true type
|
31
|
-
ulimit umask unalias unset wait
|
32
|
-
|
33
|
-
|
27
|
+
complete declare dirs disown enable eval exec exit
|
28
|
+
export false fc fg getopts hash help history jobs let
|
29
|
+
local logout mapfile popd pushd pwd read readonly set
|
30
|
+
shift shopt source suspend test time times trap true type
|
31
|
+
typeset ulimit umask unalias unset wait
|
32
|
+
|
33
|
+
cat tac nl od base32 base64 fmt pr fold head tail split csplit
|
34
|
+
wc sum cksum b2sum md5sum sha1sum sha224sum sha256sum sha384sum
|
35
|
+
sha512sum sort shuf uniq comm ptx tsort cut paste join tr expand
|
36
|
+
unexpand ls dir vdir dircolors cp dd install mv rm shred link ln
|
37
|
+
mkdir mkfifo mknod readlink rmdir unlink chown chgrp chmod touch
|
38
|
+
df du stat sync truncate echo printf yes expr tee basename dirname
|
39
|
+
pathchk mktemp realpath pwd stty printenv tty id logname whoami
|
40
|
+
groups users who date arch nproc uname hostname hostid uptime chcon
|
41
|
+
runcon chroot env nice nohup stdbuf timeout kill sleep factor numfmt
|
42
|
+
seq tar grep sudo awk sed gzip gunzip
|
34
43
|
).join('|')
|
35
44
|
|
36
45
|
state :basic do
|
data/lib/rouge/lexers/swift.rb
CHANGED
@@ -66,7 +66,7 @@ module Rouge
|
|
66
66
|
mixin :whitespace
|
67
67
|
rule /\$(([1-9]\d*)?\d)/, Name::Variable
|
68
68
|
|
69
|
-
rule %r{[()\[\]{}
|
69
|
+
rule %r{[()\[\]{}:;,?\\]}, Punctuation
|
70
70
|
rule %r([-/=+*%<>!&|^.~]+), Operator
|
71
71
|
rule /@?"/, Str, :dq
|
72
72
|
rule /'(\\.|.)'/, Str::Char
|
@@ -107,8 +107,13 @@ module Rouge
|
|
107
107
|
groups Keyword, Text, Name::Variable
|
108
108
|
end
|
109
109
|
|
110
|
-
rule /(
|
111
|
-
|
110
|
+
rule /(let|var)\b(\s*)([(])/ do
|
111
|
+
groups Keyword, Text, Punctuation
|
112
|
+
push :tuple
|
113
|
+
end
|
114
|
+
|
115
|
+
rule /(?!\b(if|while|for|private|internal|unowned|switch|case)\b)\b#{id}(?=(\?|!)?\s*[({])/ do |m|
|
116
|
+
if m[1] == '(' && m[0] =~ /^[[:upper:]]/
|
112
117
|
token Keyword::Type
|
113
118
|
else
|
114
119
|
token Name::Function
|
@@ -135,6 +140,21 @@ module Rouge
|
|
135
140
|
token Name
|
136
141
|
end
|
137
142
|
end
|
143
|
+
|
144
|
+
rule /(`)(#{id})(`)/ do
|
145
|
+
groups Punctuation, Name::Variable, Punctuation
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
state :tuple do
|
150
|
+
rule /(#{id})/, Name::Variable
|
151
|
+
rule /(`)(#{id})(`)/ do
|
152
|
+
groups Punctuation, Name::Variable, Punctuation
|
153
|
+
end
|
154
|
+
rule /,/, Punctuation
|
155
|
+
rule /[(]/, Punctuation, :push
|
156
|
+
rule /[)]/, Punctuation, :pop!
|
157
|
+
mixin :inline_whitespace
|
138
158
|
end
|
139
159
|
|
140
160
|
state :dq do
|
data/lib/rouge/version.rb
CHANGED
data/rouge.gemspec
CHANGED
@@ -16,4 +16,8 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = %w(rougify)
|
17
17
|
s.licenses = ['MIT', 'BSD-2-Clause']
|
18
18
|
s.required_ruby_version = '>= 2.0'
|
19
|
+
s.metadata = {
|
20
|
+
'source_code_uri' => 'https://github.com/jneen/rouge',
|
21
|
+
'changelog_uri' => 'https://github.com/jneen/rouge/blob/master/CHANGELOG.md'
|
22
|
+
}
|
19
23
|
end
|
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: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeanine Adkisson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-21 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:
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- lib/rouge/demos/dot
|
53
53
|
- lib/rouge/demos/eiffel
|
54
54
|
- lib/rouge/demos/elixir
|
55
|
+
- lib/rouge/demos/elm
|
55
56
|
- lib/rouge/demos/erb
|
56
57
|
- lib/rouge/demos/erlang
|
57
58
|
- lib/rouge/demos/factor
|
@@ -63,6 +64,7 @@ files:
|
|
63
64
|
- lib/rouge/demos/gradle
|
64
65
|
- lib/rouge/demos/graphql
|
65
66
|
- lib/rouge/demos/groovy
|
67
|
+
- lib/rouge/demos/hack
|
66
68
|
- lib/rouge/demos/haml
|
67
69
|
- lib/rouge/demos/handlebars
|
68
70
|
- lib/rouge/demos/haskell
|
@@ -201,6 +203,7 @@ files:
|
|
201
203
|
- lib/rouge/lexers/dot.rb
|
202
204
|
- lib/rouge/lexers/eiffel.rb
|
203
205
|
- lib/rouge/lexers/elixir.rb
|
206
|
+
- lib/rouge/lexers/elm.rb
|
204
207
|
- lib/rouge/lexers/erb.rb
|
205
208
|
- lib/rouge/lexers/erlang.rb
|
206
209
|
- lib/rouge/lexers/factor.rb
|
@@ -213,6 +216,7 @@ files:
|
|
213
216
|
- lib/rouge/lexers/gradle.rb
|
214
217
|
- lib/rouge/lexers/graphql.rb
|
215
218
|
- lib/rouge/lexers/groovy.rb
|
219
|
+
- lib/rouge/lexers/hack.rb
|
216
220
|
- lib/rouge/lexers/haml.rb
|
217
221
|
- lib/rouge/lexers/handlebars.rb
|
218
222
|
- lib/rouge/lexers/haskell.rb
|
@@ -333,7 +337,9 @@ homepage: http://rouge.jneen.net/
|
|
333
337
|
licenses:
|
334
338
|
- MIT
|
335
339
|
- BSD-2-Clause
|
336
|
-
metadata:
|
340
|
+
metadata:
|
341
|
+
source_code_uri: https://github.com/jneen/rouge
|
342
|
+
changelog_uri: https://github.com/jneen/rouge/blob/master/CHANGELOG.md
|
337
343
|
post_install_message:
|
338
344
|
rdoc_options: []
|
339
345
|
require_paths:
|