rouge 0.3.2 → 0.3.3
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/lib/rouge/lexers/css.rb +96 -26
- data/lib/rouge/lexers/d.rb +148 -0
- data/lib/rouge/lexers/shell.rb +3 -1
- data/lib/rouge/lexers/viml.rb +2 -1
- data/lib/rouge/lexers/wdiff.rb +12 -0
- data/lib/rouge/version.rb +1 -1
- metadata +4 -2
data/lib/rouge/lexers/css.rb
CHANGED
@@ -12,32 +12,102 @@ module Rouge
|
|
12
12
|
|
13
13
|
def self.attributes
|
14
14
|
@attributes ||= Set.new %w(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
15
|
+
align-content align-items align-self alignment-adjust
|
16
|
+
alignment-baseline all anchor-point animation
|
17
|
+
animation-delay animation-direction animation-duration
|
18
|
+
animation-fill-mode animation-iteration-count animation-name
|
19
|
+
animation-play-state animation-timing-function appearance
|
20
|
+
azimuth backface-visibility background background-attachment
|
21
|
+
background-clip background-color background-image
|
22
|
+
background-origin background-position background-repeat
|
23
|
+
background-size baseline-shift binding bleed bookmark-label
|
24
|
+
bookmark-level bookmark-state bookmark-target border
|
25
|
+
border-bottom border-bottom-color border-bottom-left-radius
|
26
|
+
border-bottom-right-radius border-bottom-style
|
27
|
+
border-bottom-width border-collapse border-color
|
28
|
+
border-image border-image-outset border-image-repeat
|
29
|
+
border-image-slice border-image-source border-image-width
|
30
|
+
border-left border-left-color border-left-style
|
31
|
+
border-left-width border-radius border-right
|
32
|
+
border-right-color border-right-style border-right-width
|
33
|
+
border-spacing border-style border-top border-top-color
|
34
|
+
border-top-left-radius border-top-right-radius
|
35
|
+
border-top-style border-top-width border-width bottom
|
36
|
+
box-align box-decoration-break box-direction box-flex
|
37
|
+
box-flex-group box-lines box-ordinal-group box-orient
|
38
|
+
box-pack box-shadow box-sizing break-after break-before
|
39
|
+
break-inside caption-side clear clip clip-path
|
40
|
+
clip-rule color color-profile columns column-count
|
41
|
+
column-fill column-gap column-rule column-rule-color
|
42
|
+
column-rule-style column-rule-width column-span
|
43
|
+
column-width content counter-increment counter-reset
|
44
|
+
crop cue cue-after cue-before cursor direction display
|
45
|
+
dominant-baseline drop-initial-after-adjust
|
46
|
+
drop-initial-after-align drop-initial-before-adjust
|
47
|
+
drop-initial-before-align drop-initial-size
|
48
|
+
drop-initial-value elevation empty-cells filter fit
|
49
|
+
fit-position flex flex-basis flex-direction flex-flow
|
50
|
+
flex-grow flex-shrink flex-wrap float float-offset
|
51
|
+
font font-family font-feature-settings
|
52
|
+
font-kerning font-language-override font-size
|
53
|
+
font-size-adjust font-stretch font-style font-synthesis
|
54
|
+
font-variant font-variant-alternates font-variant-caps
|
55
|
+
font-variant-east-asian font-variant-ligatures
|
56
|
+
font-variant-numeric font-variant-position font-weight
|
57
|
+
grid-cell grid-column grid-column-align grid-column-sizing
|
58
|
+
grid-column-span grid-columns grid-flow grid-row
|
59
|
+
grid-row-align grid-row-sizing grid-row-span
|
60
|
+
grid-rows grid-template hanging-punctuation height
|
61
|
+
hyphenate-after hyphenate-before hyphenate-character
|
62
|
+
hyphenate-lines hyphenate-resource hyphens icon
|
63
|
+
image-orientation image-rendering image-resolution
|
64
|
+
ime-mode inline-box-align justify-content
|
65
|
+
left letter-spacing line-break line-height
|
66
|
+
line-stacking line-stacking-ruby line-stacking-shift
|
67
|
+
line-stacking-strategy list-style list-style-image
|
68
|
+
list-style-position list-style-type margin
|
69
|
+
margin-bottom margin-left margin-right margin-top
|
70
|
+
mark marker-offset marks mark-after mark-before
|
71
|
+
marquee-direction marquee-loop marquee-play-count
|
72
|
+
marquee-speed marquee-style mask max-height max-width
|
73
|
+
min-height min-width move-to nav-down
|
74
|
+
nav-index nav-left nav-right nav-up object-fit
|
75
|
+
object-position opacity order orphans outline
|
76
|
+
outline-color outline-offset outline-style
|
77
|
+
outline-width overflow overflow-style overflow-wrap
|
78
|
+
overflow-x overflow-y padding padding-bottom
|
79
|
+
padding-left padding-right padding-top
|
80
|
+
page page-break-after page-break-before
|
81
|
+
page-break-inside page-policy pause pause-after
|
82
|
+
pause-before perspective perspective-origin
|
83
|
+
phonemes pitch pitch-range play-during pointer-events
|
84
|
+
position presentation-level punctuation-trim quotes
|
85
|
+
rendering-intent resize rest rest-after rest-before
|
86
|
+
richness right rotation rotation-point ruby-align
|
87
|
+
ruby-overhang ruby-position ruby-span size speak
|
88
|
+
speak-as speak-header speak-numeral speak-punctuation
|
89
|
+
speech-rate src stress string-set
|
90
|
+
tab-size table-layout target target-name
|
91
|
+
target-new target-position text-align
|
92
|
+
text-align-last text-combine-horizontal
|
93
|
+
text-decoration text-decoration-color
|
94
|
+
text-decoration-line text-decoration-skip
|
95
|
+
text-decoration-style text-emphasis
|
96
|
+
text-emphasis-color text-emphasis-position
|
97
|
+
text-emphasis-style text-height text-indent
|
98
|
+
text-justify text-orientation text-outline
|
99
|
+
text-overflow text-rendering text-shadow
|
100
|
+
text-space-collapse text-transform
|
101
|
+
text-underline-position text-wrap top
|
102
|
+
transform transform-origin transform-style
|
103
|
+
transition transition-delay transition-duration
|
104
|
+
transition-property transition-timing-function
|
105
|
+
unicode-bidi vertical-align
|
106
|
+
visibility voice-balance voice-duration
|
107
|
+
voice-family voice-pitch voice-pitch-range
|
108
|
+
voice-range voice-rate voice-stress voice-volume
|
109
|
+
volume white-space widows width word-break
|
110
|
+
word-spacing word-wrap writing-mode z-index
|
41
111
|
)
|
42
112
|
end
|
43
113
|
|
@@ -0,0 +1,148 @@
|
|
1
|
+
# module Rouge
|
2
|
+
# module Lexers
|
3
|
+
# class D < RegexLexer
|
4
|
+
# desc 'The D Programming language (http://dlang.org)'
|
5
|
+
# tag 'd'
|
6
|
+
# aliases 'dlang'
|
7
|
+
# filenames '*.d'
|
8
|
+
#
|
9
|
+
# def self.keywords
|
10
|
+
# @keywords ||= %w(
|
11
|
+
# abstract alias align asm assert auto body bool break byte
|
12
|
+
# case cast catch cdouble cent cfloat char class const continue
|
13
|
+
# creal dchar debug default delegate delete deprecated do double
|
14
|
+
# else enum export extern false final finally float for foreach
|
15
|
+
# foreach_reverse function goto idouble if ifloat immutable
|
16
|
+
# import in inout int interface invariant ireal is lazy long
|
17
|
+
# macro mixin module new nothrow null out override package pragma
|
18
|
+
# private protected public pure real ref return scope shared
|
19
|
+
# short static struct super switch synchronized template this
|
20
|
+
# throw true try typedef typeid typeof ubyte ucent uint ulong
|
21
|
+
# union unittest ushort version void volatile wchar while with
|
22
|
+
# __FILE__ __MODULE__ __LINE__ __FUNCTION__ __PRETTY_FUNCTION__
|
23
|
+
# __gshared __traits __vector __parameters
|
24
|
+
# )
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# def self.builtins
|
28
|
+
# @builtins ||= %w(
|
29
|
+
# string wstring dstring size_t ptrdiff_t
|
30
|
+
# __DATE__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__
|
31
|
+
# )
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# id = /[[:alpha:]_]\w*/
|
35
|
+
# symmetric = {
|
36
|
+
# '[' => ']',
|
37
|
+
# '<' => '>',
|
38
|
+
# '(' => ')',
|
39
|
+
# '{' => '}'
|
40
|
+
# }
|
41
|
+
#
|
42
|
+
# escapes = [
|
43
|
+
# /\\['"?\\abfnrtv]/,
|
44
|
+
# /\\[0-7]{1,3}/,
|
45
|
+
# /\\x[0-9a-fA-F]{2}/,
|
46
|
+
# /\\u[0-9a-fA-F]{4}/,
|
47
|
+
# /\\U[0-9a-fA-F]{8}/,
|
48
|
+
# /\\&\w+;/,
|
49
|
+
# ]
|
50
|
+
#
|
51
|
+
# symmetric_open = Regexp.new "[#{Regexp.escape(symmetric.keys.join)}]"
|
52
|
+
#
|
53
|
+
# state :basic do
|
54
|
+
# rule /\s+/m, 'Text'
|
55
|
+
# rule %r(//.*$), 'Comment.Single'
|
56
|
+
# rule %r(/[*].*?[*]/), 'Comment.Multiline'
|
57
|
+
# rule %r(/[+]), 'Comment.Multiline', :nested_comment
|
58
|
+
# end
|
59
|
+
#
|
60
|
+
# state :final_quote do
|
61
|
+
# rule /"/, 'Literal.String', :pop!
|
62
|
+
# rule /./, 'Error', :pop!
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# state :nested_comment do
|
66
|
+
# rule %r([+]/), :pop!
|
67
|
+
# rule %r(/[+]), :nested_comment
|
68
|
+
# rule %r([/+]|[^/+]+), 'Comment.Multiline'
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# state :root do
|
72
|
+
# rule /r".*?"/, 'Literal.String'
|
73
|
+
# rule /`.*?`/, 'Literal.String'
|
74
|
+
# rule /q"(#{id})\n.*?\n\1"/, 'Literal.String.Heredoc'
|
75
|
+
# rule /q"(#{symmetric_open})/ do |m|
|
76
|
+
# token 'Literal.String'
|
77
|
+
# open = Regexp.escape(m[1])
|
78
|
+
# close = Regexp.escape(symmetric[m[1]])
|
79
|
+
# push :final_quote
|
80
|
+
# push do
|
81
|
+
# mixin :escapes
|
82
|
+
# rule /\\[#{open}#{close}]/, 'Literal.String.Escape'
|
83
|
+
# rule(/#{open}/) { token 'Literal.String'; push }
|
84
|
+
# rule(/#{close}/) { token 'Literal.String'; pop! }
|
85
|
+
# rule /[^\\#{open}#{close}]+/, 'Literal.String'
|
86
|
+
# end
|
87
|
+
# end
|
88
|
+
# rule /q"(\S).*?\1"/, 'Literal.String'
|
89
|
+
# # Token strings are going to be lexed like D, because
|
90
|
+
# # they're frigging impossible otherwise. I'll highlight
|
91
|
+
# # the q as a string, though.
|
92
|
+
# rule /q(?=[{])/, 'Literal.String'
|
93
|
+
# rule /x"/, 'Literal.String.Other', :hex_string
|
94
|
+
# rule /"/, 'Literal.String', :dq
|
95
|
+
# rule /'/ do
|
96
|
+
# token 'Literal.String.Char'
|
97
|
+
# push :char_end; push :char
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
# # numbers
|
101
|
+
# rule /0b[01_]+/, 'Literal.Number.Binary'
|
102
|
+
# rule /0x[0-9a-f_]+/i,
|
103
|
+
# rule /\d+[ul]+/i, 'Literal.Number.Integer'
|
104
|
+
#
|
105
|
+
# rule /#{keywords.join('|')}/, 'Keyword'
|
106
|
+
# end
|
107
|
+
#
|
108
|
+
# state :escapes do
|
109
|
+
# escapes.each do |re|
|
110
|
+
# rule re, 'Literal.String.Escape'
|
111
|
+
# end
|
112
|
+
# end
|
113
|
+
#
|
114
|
+
# state :char do
|
115
|
+
# escapes.each do |re|
|
116
|
+
# rule re, 'Literal.String.Char', :pop!
|
117
|
+
# end
|
118
|
+
#
|
119
|
+
# rule /./, 'Literal.String.Char', :pop!
|
120
|
+
# end
|
121
|
+
#
|
122
|
+
# state :hex_string do
|
123
|
+
# rule /[0-9a-f]+/i, 'Literal.Number.Hex'
|
124
|
+
# rule /\s+/m, 'Literal.String.Other'
|
125
|
+
# rule /"/, 'Literal.String.Other', :pop!
|
126
|
+
# end
|
127
|
+
#
|
128
|
+
# state :char_end do
|
129
|
+
# rule /'[cwd]+/, 'Literal.String.Char', :pop!
|
130
|
+
# rule /./, 'Error', :pop!
|
131
|
+
# end
|
132
|
+
#
|
133
|
+
# state :dq do
|
134
|
+
# mixin :escapes
|
135
|
+
# rule /[^\\"]+/, 'Literal.String.Double'
|
136
|
+
# rule /"/ do
|
137
|
+
# token 'Literal.String.Double'
|
138
|
+
# pop!; push :post_string
|
139
|
+
# end
|
140
|
+
# end
|
141
|
+
#
|
142
|
+
# state :post_string do
|
143
|
+
# rule /[cwd]+/, 'Literal.String'
|
144
|
+
# rule(//) { pop! }
|
145
|
+
# end
|
146
|
+
# end
|
147
|
+
# end
|
148
|
+
# end
|
data/lib/rouge/lexers/shell.rb
CHANGED
@@ -29,13 +29,15 @@ module Rouge
|
|
29
29
|
).join('|')
|
30
30
|
|
31
31
|
state :basic do
|
32
|
-
rule
|
32
|
+
rule /#.*$/, 'Comment'
|
33
33
|
|
34
34
|
rule /\b(#{KEYWORDS})\s*\b/, 'Keyword'
|
35
35
|
rule /\bcase\b/, 'Keyword', :case
|
36
36
|
|
37
37
|
rule /\b(#{BUILTINS})\s*\b(?!\.)/, 'Name.Builtin'
|
38
38
|
|
39
|
+
rule /^\S*[\$%>#] +/, 'Generic.Prompt'
|
40
|
+
|
39
41
|
rule /(\b\w+)(=)/ do |m|
|
40
42
|
group 'Name.Variable'
|
41
43
|
group 'Operator'
|
data/lib/rouge/lexers/viml.rb
CHANGED
@@ -63,7 +63,8 @@ module Rouge
|
|
63
63
|
def mapping_contains?(mapping, word)
|
64
64
|
shortest, longest = find_likely_mapping(mapping, word)
|
65
65
|
|
66
|
-
word.start_with?(shortest) and
|
66
|
+
shortest and word.start_with?(shortest) and
|
67
|
+
longest and longest.start_with?(word)
|
67
68
|
end
|
68
69
|
|
69
70
|
# binary search through the mappings to find the one that's likely
|
data/lib/rouge/version.rb
CHANGED
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.3.
|
4
|
+
version: 0.3.3
|
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: 2013-
|
12
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
type: :runtime
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- lib/rouge/lexers/ini.rb
|
86
86
|
- lib/rouge/lexers/scss.rb
|
87
87
|
- lib/rouge/lexers/javascript.rb
|
88
|
+
- lib/rouge/lexers/wdiff.rb
|
88
89
|
- lib/rouge/lexers/shell.rb
|
89
90
|
- lib/rouge/lexers/yaml.rb
|
90
91
|
- lib/rouge/lexers/make.rb
|
@@ -105,6 +106,7 @@ files:
|
|
105
106
|
- lib/rouge/lexers/sql.rb
|
106
107
|
- lib/rouge/lexers/haskell.rb
|
107
108
|
- lib/rouge/lexers/markdown.rb
|
109
|
+
- lib/rouge/lexers/d.rb
|
108
110
|
- lib/rouge/lexers/prolog.rb
|
109
111
|
- lib/rouge/lexers/conf.rb
|
110
112
|
- lib/rouge.rb
|