rouge 1.4.0 → 1.5.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/swift +5 -0
- data/lib/rouge/formatters/terminal256.rb +5 -2
- data/lib/rouge/lexers/elixir.rb +4 -4
- data/lib/rouge/lexers/objective_c.rb +1 -1
- data/lib/rouge/lexers/ruby.rb +5 -5
- data/lib/rouge/lexers/swift.rb +128 -0
- data/lib/rouge/theme.rb +9 -1
- data/lib/rouge/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f56238615c98f486c5d3cd978aac53f45e6bb2ee
|
4
|
+
data.tar.gz: 4659578e0b792daf6e8ad9085a4d2dd0312d5749
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97d1c64beea24ce75095a5f2975ff3aa8d902725120f4022ed69b3ac29681cd9e6e61ff88f44ec65733d7795f1a00ae17594e8d5d23ef4419570d1d50c43331e
|
7
|
+
data.tar.gz: b43ec6cbb46295bca0cd5185b1e21202c1583c10f6b0fb447c9ae5d53e5d5469dd0dbde18d13ecfc2044033cc0afd6b45055b2fe44cd11d05d635222b53a0ee0
|
@@ -19,7 +19,7 @@ module Rouge
|
|
19
19
|
tokens.each do |tok, val|
|
20
20
|
escape = escape_sequence(tok)
|
21
21
|
yield escape.style_string
|
22
|
-
yield val
|
22
|
+
yield val.gsub("\n", "\n#{escape.style_string}")
|
23
23
|
yield escape.reset_string
|
24
24
|
end
|
25
25
|
end
|
@@ -126,11 +126,14 @@ module Rouge
|
|
126
126
|
hexes.map { |h| h.to_i(16) }
|
127
127
|
end
|
128
128
|
|
129
|
+
# max distance between two colors, #000000 to #ffffff
|
130
|
+
MAX_DISTANCE = 257 * 257 * 3
|
131
|
+
|
129
132
|
def self.closest_color(r, g, b)
|
130
133
|
@@colors_cache ||= {}
|
131
134
|
key = (r << 16) + (g << 8) + b
|
132
135
|
@@colors_cache.fetch(key) do
|
133
|
-
distance =
|
136
|
+
distance = MAX_DISTANCE
|
134
137
|
|
135
138
|
match = 0
|
136
139
|
|
data/lib/rouge/lexers/elixir.rb
CHANGED
@@ -29,8 +29,8 @@ module Rouge
|
|
29
29
|
rule /(?<!\.)\b(and|not|or|when|xor|in)\b/, Operator::Word
|
30
30
|
rule %r{%=|\*=|\*\*=|\+=|\-=|\^=|\|\|=|
|
31
31
|
<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?=[\s\t])\?|
|
32
|
-
(?<=[\s\t])
|
33
|
-
|
32
|
+
(?<=[\s\t])!+|&(&&?|(?!\d))|\|\||\^|\*|\+|\-|/|
|
33
|
+
\||\+\+|\-\-|\*\*|\/\/|\<\-|\<\>|<<|>>|=|\.|~~~}x, Operator
|
34
34
|
rule %r{(?<!:)(:)([a-zA-Z_]\w*([?!]|=(?![>=]))?|\<\>|===?|>=?|<=?|
|
35
35
|
<=>|&&?|%\(\)|%\[\]|%\{\}|\+\+?|\-\-?|\|\|?|\!|//|[%&`/\|]|
|
36
36
|
\*\*?|=?~|<\-)|([a-zA-Z_]\w*([?!])?)(:)(?!:)}, Str::Symbol
|
@@ -38,11 +38,11 @@ module Rouge
|
|
38
38
|
rule /\b(nil|true|false)\b(?![?!])|\b[A-Z]\w*\b/, Name::Constant
|
39
39
|
rule /\b(__(FILE|LINE|MODULE|MAIN|FUNCTION)__)\b(?![?!])/, Name::Builtin::Pseudo
|
40
40
|
rule /[a-zA-Z_!][\w_]*[!\?]?/, Name
|
41
|
-
rule %r{::|[(){};,/\|:\\\[\]]}, Punctuation
|
41
|
+
rule %r{::|[%(){};,/\|:\\\[\]]}, Punctuation
|
42
42
|
rule /@[a-zA-Z_]\w*|&\d/, Name::Variable
|
43
43
|
rule %r{\b(0[xX][0-9A-Fa-f]+|\d(_?\d)*(\.(?![^\d\s])
|
44
44
|
(_?\d)*)?([eE][-+]?\d(_?\d)*)?|0[bB][01]+)\b}x, Num
|
45
|
-
rule %r{
|
45
|
+
rule %r{~r\/.*\/}, Str::Regex
|
46
46
|
|
47
47
|
mixin :strings
|
48
48
|
end
|
data/lib/rouge/lexers/ruby.rb
CHANGED
@@ -196,18 +196,18 @@ module Rouge
|
|
196
196
|
mixin :has_heredocs
|
197
197
|
|
198
198
|
rule /[A-Z][a-zA-Z0-9_]+/, Name::Constant, :method_call
|
199
|
-
rule /(\.|::)([a-z_]\w*[!?]?|[*%&^`~+-\/\[<>=])/ do
|
200
|
-
groups Punctuation, Name::Function
|
199
|
+
rule /(\.|::)(\s*)([a-z_]\w*[!?]?|[*%&^`~+-\/\[<>=])/ do
|
200
|
+
groups Punctuation, Text, Name::Function
|
201
201
|
push :expr_start
|
202
202
|
end
|
203
203
|
|
204
204
|
rule /[a-zA-Z_]\w*[?!]/, Name, :expr_start
|
205
205
|
rule /[a-zA-Z_]\w*/, Name, :method_call
|
206
|
-
rule
|
206
|
+
rule /\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3}/,
|
207
207
|
Operator, :expr_start
|
208
208
|
rule /[-+\/*%=<>&!^|~]=?/, Operator, :expr_start
|
209
|
-
rule %r<[({,?:\\;/]>, Punctuation, :expr_start
|
210
|
-
rule %r<[)}]>, Punctuation
|
209
|
+
rule %r<[\[({,?:\\;/]>, Punctuation, :expr_start
|
210
|
+
rule %r<[\])}]>, Punctuation
|
211
211
|
end
|
212
212
|
|
213
213
|
state :has_heredocs do
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Swift < RegexLexer
|
6
|
+
tag 'swift'
|
7
|
+
filenames '*.swift'
|
8
|
+
|
9
|
+
desc 'Multi paradigm, compiled programming language developed by Apple for iOS and OS X development. (developer.apple.com/swift)'
|
10
|
+
|
11
|
+
id_head = /_|(?!\p{Mc})\p{Alpha}|[^\u0000-\uFFFF]/
|
12
|
+
id_rest = /[\p{Alnum}_]|[^\u0000-\uFFFF]/
|
13
|
+
id = /#{id_head}#{id_rest}*/
|
14
|
+
|
15
|
+
def self.keywords
|
16
|
+
@keywords ||= Set.new %w(
|
17
|
+
break case continue default do else fallthrough if in for return switch where while
|
18
|
+
|
19
|
+
as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUNCTION__ __LINE__
|
20
|
+
|
21
|
+
associativity didSet get infix inout left mutating none nonmutating operator override postfix precedence prefix right set unowned unowned(safe) unowned(unsafe) weak willSet
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.declarations
|
26
|
+
@declarations ||= Set.new %w(
|
27
|
+
class deinit enum extension func import init let protocol static struct subscript typealias var
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.types
|
32
|
+
@types ||= Set.new %w(
|
33
|
+
Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Int
|
34
|
+
Double Float
|
35
|
+
Bool
|
36
|
+
String Character
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.constants
|
41
|
+
@constants ||= Set.new %w(
|
42
|
+
true false nil
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
state :whitespace do
|
47
|
+
rule /\s+/m, Text
|
48
|
+
rule %r(\/\/.*?\n), Comment::Single
|
49
|
+
rule %r((?<re>\/\*(?:(?>[^\/\*\*\/]+)|\g<re>)*\*\/))m, Comment::Multiline
|
50
|
+
end
|
51
|
+
|
52
|
+
state :root do
|
53
|
+
mixin :whitespace
|
54
|
+
rule /\$(([1-9]\d*)?\d)/, Name::Variable
|
55
|
+
|
56
|
+
rule %r{[()\[\]{}:;,?]}, Punctuation
|
57
|
+
rule %r([-/=+*%<>!&|^.~]+), Operator
|
58
|
+
rule /@?"/, Str, :dq
|
59
|
+
rule /'(\\.|.)'/, Str::Char
|
60
|
+
rule /(\d+\*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float
|
61
|
+
rule /\d+e[+-]?[0-9]+/i, Num::Float
|
62
|
+
rule /0_?[0-7]+(?:_[0-7]+)*/, Num::Oct
|
63
|
+
rule /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/, Num::Hex
|
64
|
+
rule /0b[01]+(?:_[01]+)*/, Num::Bin
|
65
|
+
rule %r{[\d]+(?:_\d+)*}, Num::Integer
|
66
|
+
|
67
|
+
rule /(?!\b(if|while|for)\b)\b#{id}(?=\s*[(])/, Name::Function
|
68
|
+
|
69
|
+
rule /(#?#{id})(\s*)(:)/ do
|
70
|
+
groups Name::Variable, Text, Punctuation
|
71
|
+
end
|
72
|
+
|
73
|
+
rule /(let|var)\b(\s*)(#{id})/ do
|
74
|
+
groups Keyword, Text, Name::Variable
|
75
|
+
end
|
76
|
+
|
77
|
+
rule id do |m|
|
78
|
+
if self.class.keywords.include? m[0]
|
79
|
+
token Keyword
|
80
|
+
elsif self.class.declarations.include? m[0]
|
81
|
+
token Keyword::Declaration
|
82
|
+
elsif self.class.types.include? m[0]
|
83
|
+
token Keyword::Type
|
84
|
+
elsif self.class.constants.include? m[0]
|
85
|
+
token Keyword::Constant
|
86
|
+
else
|
87
|
+
token Name
|
88
|
+
end
|
89
|
+
end
|
90
|
+
rule id, Name
|
91
|
+
end
|
92
|
+
|
93
|
+
state :dq do
|
94
|
+
rule /\\[\\0tnr'"]/, Str::Escape
|
95
|
+
rule /\\[(]/, Str::Escape, :interp
|
96
|
+
rule /\\x\h{2}/, Str::Escape
|
97
|
+
rule /\\u\h{4}/, Str::Escape
|
98
|
+
rule /\\U\h{8}/, Str::Escape
|
99
|
+
rule /[^\\"]+/, Str
|
100
|
+
rule /"/, Str, :pop!
|
101
|
+
end
|
102
|
+
|
103
|
+
state :interp do
|
104
|
+
rule /[(]/, Punctuation, :interp_inner
|
105
|
+
rule /[)]/, Str::Escape, :pop!
|
106
|
+
mixin :root
|
107
|
+
end
|
108
|
+
|
109
|
+
state :interp_inner do
|
110
|
+
rule /[(]/, Punctuation, :push
|
111
|
+
rule /[)]/, Punctuation, :pop!
|
112
|
+
mixin :root
|
113
|
+
end
|
114
|
+
|
115
|
+
state :class do
|
116
|
+
mixin :whitespace
|
117
|
+
rule id, Name::Class, :pop!
|
118
|
+
end
|
119
|
+
|
120
|
+
state :namespace do
|
121
|
+
mixin :whitespace
|
122
|
+
rule /(?=[(])/, Text, :pop!
|
123
|
+
rule /(#{id}|[.])+/, Name::Namespace, :pop!
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
data/lib/rouge/theme.rb
CHANGED
@@ -90,7 +90,11 @@ module Rouge
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def get_style(token)
|
93
|
-
get_own_style(token) ||
|
93
|
+
get_own_style(token) || base_style
|
94
|
+
end
|
95
|
+
|
96
|
+
def base_style
|
97
|
+
styles[Token::Tokens::Text]
|
94
98
|
end
|
95
99
|
|
96
100
|
def name(n=nil)
|
@@ -148,6 +152,10 @@ module Rouge
|
|
148
152
|
end
|
149
153
|
end
|
150
154
|
|
155
|
+
def render_base(selector, &b)
|
156
|
+
self.class.base_style.render(selector, &b)
|
157
|
+
end
|
158
|
+
|
151
159
|
def style_for(tok)
|
152
160
|
self.class.get_style(tok)
|
153
161
|
end
|
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: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Adkisson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-12 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:
|
@@ -82,6 +82,7 @@ files:
|
|
82
82
|
- lib/rouge/demos/smalltalk
|
83
83
|
- lib/rouge/demos/sml
|
84
84
|
- lib/rouge/demos/sql
|
85
|
+
- lib/rouge/demos/swift
|
85
86
|
- lib/rouge/demos/tcl
|
86
87
|
- lib/rouge/demos/tex
|
87
88
|
- lib/rouge/demos/toml
|
@@ -157,6 +158,7 @@ files:
|
|
157
158
|
- lib/rouge/lexers/smalltalk.rb
|
158
159
|
- lib/rouge/lexers/sml.rb
|
159
160
|
- lib/rouge/lexers/sql.rb
|
161
|
+
- lib/rouge/lexers/swift.rb
|
160
162
|
- lib/rouge/lexers/tcl.rb
|
161
163
|
- lib/rouge/lexers/tex.rb
|
162
164
|
- lib/rouge/lexers/toml.rb
|
@@ -199,8 +201,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
201
|
version: '0'
|
200
202
|
requirements: []
|
201
203
|
rubyforge_project: rouge
|
202
|
-
rubygems_version: 2.2.
|
204
|
+
rubygems_version: 2.2.2
|
203
205
|
signing_key:
|
204
206
|
specification_version: 4
|
205
207
|
summary: A pure-ruby colorizer based on pygments
|
206
208
|
test_files: []
|
209
|
+
has_rdoc:
|