jazzy 0.13.7 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/Tests.yml +2 -2
  3. data/.rubocop.yml +123 -24
  4. data/CHANGELOG.md +34 -0
  5. data/Dangerfile +11 -8
  6. data/Gemfile +3 -1
  7. data/Gemfile.lock +49 -34
  8. data/README.md +23 -11
  9. data/Rakefile +13 -12
  10. data/bin/jazzy +3 -2
  11. data/jazzy.gemspec +8 -6
  12. data/lib/jazzy.rb +2 -0
  13. data/lib/jazzy/config.rb +116 -69
  14. data/lib/jazzy/doc.rb +3 -1
  15. data/lib/jazzy/doc_builder.rb +63 -81
  16. data/lib/jazzy/docset_builder.rb +3 -1
  17. data/lib/jazzy/documentation_generator.rb +6 -2
  18. data/lib/jazzy/executable.rb +3 -0
  19. data/lib/jazzy/extensions/bitbucket/img/bitbucket.svg +11 -0
  20. data/lib/jazzy/{themes/apple/assets → extensions/github}/img/gh.png +0 -0
  21. data/lib/jazzy/extensions/gitlab/img/gitlab.svg +23 -0
  22. data/lib/jazzy/gem_version.rb +3 -1
  23. data/lib/jazzy/highlighter.rb +5 -3
  24. data/lib/jazzy/jazzy_markdown.rb +63 -30
  25. data/lib/jazzy/podspec_documenter.rb +14 -16
  26. data/lib/jazzy/search_builder.rb +4 -3
  27. data/lib/jazzy/source_declaration.rb +9 -3
  28. data/lib/jazzy/source_declaration/access_control_level.rb +7 -5
  29. data/lib/jazzy/source_declaration/type.rb +3 -1
  30. data/lib/jazzy/source_document.rb +8 -5
  31. data/lib/jazzy/source_host.rb +111 -0
  32. data/lib/jazzy/source_mark.rb +8 -6
  33. data/lib/jazzy/source_module.rb +6 -6
  34. data/lib/jazzy/sourcekitten.rb +98 -72
  35. data/lib/jazzy/stats.rb +4 -2
  36. data/lib/jazzy/symbol_graph.rb +15 -15
  37. data/lib/jazzy/symbol_graph/constraint.rb +5 -1
  38. data/lib/jazzy/symbol_graph/ext_node.rb +3 -1
  39. data/lib/jazzy/symbol_graph/graph.rb +13 -11
  40. data/lib/jazzy/symbol_graph/relationship.rb +3 -0
  41. data/lib/jazzy/symbol_graph/sym_node.rb +11 -6
  42. data/lib/jazzy/symbol_graph/symbol.rb +18 -15
  43. data/lib/jazzy/themes/apple/assets/css/highlight.css.scss +63 -59
  44. data/lib/jazzy/themes/apple/assets/css/jazzy.css.scss +5 -1
  45. data/lib/jazzy/themes/apple/assets/js/jazzy.js +4 -0
  46. data/lib/jazzy/themes/apple/assets/js/jazzy.search.js +4 -0
  47. data/lib/jazzy/themes/apple/templates/doc.mustache +3 -3
  48. data/lib/jazzy/themes/apple/templates/footer.mustache +1 -1
  49. data/lib/jazzy/themes/apple/templates/header.mustache +3 -3
  50. data/lib/jazzy/themes/apple/templates/task.mustache +3 -3
  51. data/lib/jazzy/themes/fullwidth/assets/css/highlight.css.scss +63 -59
  52. data/lib/jazzy/themes/fullwidth/assets/css/jazzy.css.scss +6 -2
  53. data/lib/jazzy/themes/fullwidth/assets/js/jazzy.js +4 -0
  54. data/lib/jazzy/themes/fullwidth/assets/js/jazzy.search.js +4 -0
  55. data/lib/jazzy/themes/fullwidth/templates/doc.mustache +3 -3
  56. data/lib/jazzy/themes/fullwidth/templates/footer.mustache +1 -1
  57. data/lib/jazzy/themes/fullwidth/templates/header.mustache +5 -5
  58. data/lib/jazzy/themes/fullwidth/templates/task.mustache +3 -3
  59. data/lib/jazzy/themes/jony/assets/css/highlight.css.scss +63 -59
  60. data/lib/jazzy/themes/jony/assets/css/jazzy.css.scss +5 -1
  61. data/lib/jazzy/themes/jony/assets/js/jazzy.js +4 -0
  62. data/lib/jazzy/themes/jony/templates/doc.mustache +3 -3
  63. data/lib/jazzy/themes/jony/templates/footer.mustache +1 -1
  64. data/lib/jazzy/themes/jony/templates/header.mustache +5 -5
  65. data/lib/jazzy/themes/jony/templates/task.mustache +3 -3
  66. data/spec/integration_spec.rb +39 -36
  67. data/spec/spec_helper.rb +3 -1
  68. data/spec/spec_helper/pre_flight.rb +2 -0
  69. metadata +27 -13
  70. data/lib/jazzy/themes/fullwidth/assets/img/gh.png +0 -0
  71. data/lib/jazzy/themes/jony/assets/img/gh.png +0 -0
  72. data/spec/sourcekitten_spec.rb +0 -6
data/lib/jazzy/stats.rb CHANGED
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jazzy
2
4
  # Collect + report metadata about a processed module
3
5
  class Stats
4
6
  include Config::Mixin
5
7
 
6
- attr_reader :documented, :acl_skipped
7
- attr_reader :undocumented_decls
8
+ attr_reader :documented, :acl_skipped, :undocumented_decls
8
9
 
9
10
  def add_documented
10
11
  @documented += 1
@@ -57,6 +58,7 @@ module Jazzy
57
58
 
58
59
  def doc_coverage
59
60
  return 0 if acl_included == 0
61
+
60
62
  (100 * documented) / acl_included
61
63
  end
62
64
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'set'
2
4
  require 'jazzy/symbol_graph/graph'
3
5
  require 'jazzy/symbol_graph/constraint'
@@ -37,7 +39,6 @@ module Jazzy
37
39
  end
38
40
 
39
41
  # Figure out the args to pass to symbolgraph-extract
40
- # rubocop:disable Metrics/CyclomaticComplexity
41
42
  def self.arguments(config, output_path)
42
43
  if config.module_name.empty?
43
44
  raise 'error: `--swift-build-tool symbolgraph` requires `--module`.'
@@ -45,29 +46,28 @@ module Jazzy
45
46
 
46
47
  user_args = config.build_tool_arguments.join
47
48
 
48
- if user_args =~ /--(?:module-name|minimum-access-level|output-dir)/
49
+ if user_args =~ /-(?:module-name|minimum-access-level|output-dir)/
49
50
  raise 'error: `--build-tool-arguments` for '\
50
- "`--swift-build-tool symbolgraph` can't use `--module`, "\
51
- '`--minimum-access-level`, or `--output-dir`.'
51
+ "`--swift-build-tool symbolgraph` can't use `-module`, "\
52
+ '`-minimum-access-level`, or `-output-dir`.'
52
53
  end
53
54
 
54
55
  # Default set
55
56
  args = [
56
- "--module-name=#{config.module_name}",
57
- '--minimum-access-level=private',
58
- "--output-dir=#{output_path}",
59
- '--skip-synthesized-members',
57
+ '-module-name', config.module_name,
58
+ '-minimum-access-level', 'private',
59
+ '-output-dir', output_path,
60
+ '-skip-synthesized-members'
60
61
  ]
61
62
 
62
63
  # Things user can override
63
- args.append("--sdk=#{sdk(config)}") unless user_args =~ /--sdk/
64
- args.append("--target=#{target}") unless user_args =~ /--target/
65
- args.append("-F=#{config.source_directory}") unless user_args =~ /-F(?!s)/
66
- args.append("-I=#{config.source_directory}") unless user_args =~ /-I/
64
+ args += ['-sdk', sdk(config)] unless user_args =~ /-sdk/
65
+ args += ['-target', target] unless user_args =~ /-target/
66
+ args += ['-F', config.source_directory.to_s] unless user_args =~ /-F(?!s)/
67
+ args += ['-I', config.source_directory.to_s] unless user_args =~ /-I/
67
68
 
68
69
  args + config.build_tool_arguments
69
70
  end
70
- # rubocop:enable Metrics/CyclomaticComplexity
71
71
 
72
72
  # Get the SDK path. On !darwin this just isn't needed.
73
73
  def self.sdk(config)
@@ -87,8 +87,8 @@ module Jazzy
87
87
  def self.demangle(usr)
88
88
  args = %w[demangle -simplified -compact].append(usr.sub(/^s:/, 's'))
89
89
  output, = Executable.execute_command('swift', args, true)
90
- return output.chomp
91
- rescue
90
+ output.chomp
91
+ rescue StandardError
92
92
  usr
93
93
  end
94
94
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jazzy
2
4
  module SymbolGraph
3
5
  # Constraint is a tidied-up JSON object, used by both Symbol and
@@ -27,6 +29,7 @@ module Jazzy
27
29
  def self.new_hash(hash)
28
30
  kind = KIND_MAP[hash[:kind]]
29
31
  raise "Unknown constraint kind '#{kind}'" unless kind
32
+
30
33
  lhs = hash[:lhs].sub(/^Self\./, '')
31
34
  rhs = hash[:rhs].sub(/^Self\./, '')
32
35
  new(kind, lhs, rhs)
@@ -62,6 +65,7 @@ module Jazzy
62
65
  path_components.include?(hash[:rhs])
63
66
  next nil
64
67
  end
68
+
65
69
  Constraint.new_hash(hash)
66
70
  end.compact
67
71
  end
@@ -89,6 +93,6 @@ end
89
93
 
90
94
  class Array
91
95
  def to_where_clause
92
- empty? ? '' : ' where ' + map(&:to_swift).join(', ')
96
+ empty? ? '' : " where #{map(&:to_swift).join(', ')}"
93
97
  end
94
98
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jazzy
2
4
  module SymbolGraph
3
5
  # For extensions we need to track constraints of the extended type
@@ -68,7 +70,7 @@ module Jazzy
68
70
  def full_declaration
69
71
  decl = "extension #{name}"
70
72
  unless conformances.empty?
71
- decl += ' : ' + conformances.join(', ')
73
+ decl += " : #{conformances.join(', ')}"
72
74
  end
73
75
  decl + all_constraints.ext.to_where_clause
74
76
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # rubocop:disable Metrics/ClassLength
2
4
  module Jazzy
3
5
  module SymbolGraph
@@ -63,14 +65,14 @@ module Jazzy
63
65
  # Increasingly desparate ways to find the name of the symbol
64
66
  # at the target end of a relationship
65
67
  def rel_target_name(rel, target_node)
66
- (target_node && target_node.symbol.name) ||
68
+ target_node&.symbol&.name ||
67
69
  rel.target_fallback ||
68
70
  Jazzy::SymbolGraph.demangle(rel.target_usr)
69
71
  end
70
72
 
71
73
  # Same for the source end. Less help from the tool here
72
74
  def rel_source_name(rel, source_node)
73
- (source_node && source_node.qualified_name) ||
75
+ source_node&.qualified_name ||
74
76
  Jazzy::SymbolGraph.demangle(rel.source_usr)
75
77
  end
76
78
 
@@ -86,11 +88,11 @@ module Jazzy
86
88
 
87
89
  source.protocol_requirement = rel.protocol_requirement?
88
90
  constraints =
89
- ExtConstraints.new(target && target.constraints,
91
+ ExtConstraints.new(target&.constraints,
90
92
  source.unique_context_constraints(target))
91
93
 
92
94
  # Add to its parent or invent an extension
93
- unless target && target.try_add_child(source, constraints.ext)
95
+ unless target&.try_add_child(source, constraints.ext)
94
96
  add_ext_member(rel.target_usr, source, constraints)
95
97
  end
96
98
  end
@@ -101,7 +103,7 @@ module Jazzy
101
103
 
102
104
  return if redundant_conformance?(rel, source, protocol_name)
103
105
 
104
- type_constraints = (source && source.constraints) || []
106
+ type_constraints = source&.constraints || []
105
107
  constraints =
106
108
  ExtConstraints.new(type_constraints,
107
109
  rel.constraints - type_constraints)
@@ -122,7 +124,7 @@ module Jazzy
122
124
  target_parent.is_a?(SymNode)
123
125
  # Could probably figure this out with demangle, but...
124
126
  warn "Can't resolve membership of default implementation "\
125
- "#{source.symbol.usr}."
127
+ "#{source.symbol.usr}."
126
128
  source.unlisted = true
127
129
  return
128
130
  end
@@ -174,14 +176,14 @@ module Jazzy
174
176
 
175
177
  root_symbol_nodes =
176
178
  symbol_nodes.values
177
- .select(&:top_level_decl?)
178
- .sort
179
- .map(&:to_sourcekit)
179
+ .select(&:top_level_decl?)
180
+ .sort
181
+ .map(&:to_sourcekit)
180
182
 
181
183
  root_ext_nodes =
182
184
  ext_nodes.values
183
- .sort
184
- .map { |n| n.to_sourcekit(module_name) }
185
+ .sort
186
+ .map { |n| n.to_sourcekit(module_name) }
185
187
  {
186
188
  'key.diagnostic_stage' => 'parse',
187
189
  'key.substructure' => root_symbol_nodes + root_ext_nodes,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jazzy
2
4
  module SymbolGraph
3
5
  # A Relationship is a tidied-up SymbolGraph JSON object
@@ -25,6 +27,7 @@ module Jazzy
25
27
  unless KINDS.include?(kind)
26
28
  raise "Unknown relationship kind '#{kind}'"
27
29
  end
30
+
28
31
  self.kind = kind.to_sym
29
32
  self.source_usr = hash[:source]
30
33
  self.target_usr = hash[:target]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jazzy
2
4
  module SymbolGraph
3
5
  # The rebuilt syntax tree is made of nodes that either match
@@ -72,6 +74,7 @@ module Jazzy
72
74
  (!protocol? || node.protocol_requirement?)
73
75
  return false
74
76
  end
77
+
75
78
  add_child(node)
76
79
  true
77
80
  end
@@ -93,24 +96,26 @@ module Jazzy
93
96
  # conformance: don't bother if it's already in the type declaration.
94
97
  def conformance?(protocol)
95
98
  return false unless symbol.declaration =~ /(?<=:).*?(?=(where|$))/
99
+
96
100
  Regexp.last_match[0] =~ /\b#{protocol}\b/
97
101
  end
98
102
 
99
103
  # Generate the 'where' clause for the declaration
100
104
  def where_clause
101
- parent_constraints = (parent && parent.constraints) || []
105
+ parent_constraints = parent&.constraints || []
102
106
  (constraints - parent_constraints).to_where_clause
103
107
  end
104
108
 
105
109
  def inherits_clause
106
110
  return '' unless superclass_name
111
+
107
112
  " : #{superclass_name}"
108
113
  end
109
114
 
110
115
  def full_declaration
111
116
  symbol.availability
112
- .append(symbol.declaration + inherits_clause + where_clause)
113
- .join("\n")
117
+ .append(symbol.declaration + inherits_clause + where_clause)
118
+ .join("\n")
114
119
  end
115
120
 
116
121
  # rubocop:disable Metrics/MethodLength
@@ -120,7 +125,7 @@ module Jazzy
120
125
 
121
126
  hash = {
122
127
  'key.kind' => symbol.kind,
123
- 'key.usr' => symbol.usr,
128
+ 'key.usr' => symbol.usr,
124
129
  'key.name' => symbol.name,
125
130
  'key.accessibility' => symbol.acl,
126
131
  'key.parsed_decl' => declaration,
@@ -136,8 +141,8 @@ module Jazzy
136
141
  end
137
142
  if location = symbol.location
138
143
  hash['key.filepath'] = location[:filename]
139
- hash['key.doc.line'] = location[:line]
140
- hash['key.doc.column'] = location[:character]
144
+ hash['key.doc.line'] = location[:line] + 1
145
+ hash['key.doc.column'] = location[:character] + 1
141
146
  end
142
147
  unless children.empty?
143
148
  hash['key.substructure'] = children_to_sourcekit
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # rubocop:disable Metrics/ClassLength
2
4
  module Jazzy
3
5
  module SymbolGraph
@@ -45,10 +47,10 @@ module Jazzy
45
47
  def init_declaration(raw_decl)
46
48
  # Too much 'Self.TypeName'; omitted arg labels look odd;
47
49
  # duplicated constraints; swift 5.3 vs. master workaround
48
- self.declaration =
49
- raw_decl.gsub(/\bSelf\./, '')
50
- .gsub(/(?<=\(|, )_: /, '_ arg: ')
51
- .gsub(/ where.*$/, '')
50
+ self.declaration = raw_decl
51
+ .gsub(/\bSelf\./, '')
52
+ .gsub(/(?<=\(|, )_: /, '_ arg: ')
53
+ .gsub(/ where.*$/, '')
52
54
  if kind == 'source.lang.swift.decl.class'
53
55
  declaration.sub!(/\s*:.*$/, '')
54
56
  end
@@ -90,6 +92,7 @@ module Jazzy
90
92
  # We treat 'static var' differently to 'class var'
91
93
  def adjust_kind_for_declaration(kind)
92
94
  return kind unless declaration =~ /\bstatic\b/
95
+
93
96
  kind.gsub(/type/, 'static')
94
97
  end
95
98
 
@@ -97,13 +100,14 @@ module Jazzy
97
100
  adjusted = adjust_kind_for_declaration(kind)
98
101
  sourcekit_kind = KIND_MAP[adjusted.sub('swift.', '')]
99
102
  raise "Unknown symbol kind '#{kind}'" unless sourcekit_kind
100
- self.kind = 'source.lang.swift.decl.' + sourcekit_kind
103
+
104
+ self.kind = "source.lang.swift.decl.#{sourcekit_kind}"
101
105
  end
102
106
 
103
107
  # Mapping SymbolGraph's ACL to SourceKit
104
108
 
105
109
  def init_acl(acl)
106
- self.acl = 'source.lang.swift.accessibility.' + acl
110
+ self.acl = "source.lang.swift.accessibility.#{acl}"
107
111
  end
108
112
 
109
113
  # Symbol location - only available for public+ decls
@@ -120,6 +124,7 @@ module Jazzy
120
124
  def init_constraints(hash, raw_decl)
121
125
  raw_constraints = %i[swiftGenerics swiftExtension].flat_map do |key|
122
126
  next [] unless container = hash[key]
127
+
123
128
  container[:constraints] || []
124
129
  end
125
130
 
@@ -146,9 +151,9 @@ module Jazzy
146
151
  end
147
152
 
148
153
  def init_doc_comments(comments_hash)
149
- self.doc_comments =
150
- comments_hash[:lines].map { |l| l[:text] }
151
- .join("\n")
154
+ self.doc_comments = comments_hash[:lines]
155
+ .map { |l| l[:text] }
156
+ .join("\n")
152
157
  end
153
158
 
154
159
  # Availability
@@ -171,8 +176,8 @@ module Jazzy
171
176
  next nil
172
177
  end
173
178
 
174
- str += ', message: "' + avail[:message] + '"' if avail[:message]
175
- str += ', renamed: "' + avail[:renamed] + '"' if avail[:renamed]
179
+ str += ", message: \"#{avail[:message]}\"" if avail[:message]
180
+ str += ", renamed: \"#{avail[:renamed]}\"" if avail[:renamed]
176
181
 
177
182
  str + ')'
178
183
  end.compact
@@ -188,8 +193,6 @@ module Jazzy
188
193
  # Sort order
189
194
  include Comparable
190
195
 
191
- # rubocop:disable Metrics/CyclomaticComplexity
192
- # rubocop:disable Metrics/PerceivedComplexity
193
196
  def <=>(other)
194
197
  # Things with location: order by file/line/column
195
198
  # (pls tell what wheel i am reinventing :/)
@@ -198,6 +201,7 @@ module Jazzy
198
201
  if location[:line] == other_loc[:line]
199
202
  return location[:character] <=> other_loc[:character]
200
203
  end
204
+
201
205
  return location[:line] <=> other_loc[:line]
202
206
  end
203
207
  return location[:filename] <=> other_loc[:filename]
@@ -209,10 +213,9 @@ module Jazzy
209
213
 
210
214
  # Things without a location: by name and then USR
211
215
  return usr <=> other.usr if name == other.name
216
+
212
217
  name <=> other.name
213
218
  end
214
- # rubocop:enable Metrics/PerceivedComplexity
215
- # rubocop:enable Metrics/CyclomaticComplexity
216
219
  end
217
220
  end
218
221
  end
@@ -1,63 +1,67 @@
1
+ /*! Jazzy - https://github.com/realm/jazzy
2
+ * Copyright Realm Inc.
3
+ * SPDX-License-Identifier: MIT
4
+ */
1
5
  /* Credit to https://gist.github.com/wataru420/2048287 */
2
6
 
3
7
  .highlight {
4
- .c { color: #999988; font-style: italic } /* Comment */
5
- .err { color: #a61717; background-color: #e3d2d2 } /* Error */
6
- .k { color: #000000; font-weight: bold } /* Keyword */
7
- .o { color: #000000; font-weight: bold } /* Operator */
8
- .cm { color: #999988; font-style: italic } /* Comment.Multiline */
9
- .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
10
- .c1 { color: #999988; font-style: italic } /* Comment.Single */
11
- .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
12
- .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
13
- .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
14
- .ge { color: #000000; font-style: italic } /* Generic.Emph */
15
- .gr { color: #aa0000 } /* Generic.Error */
16
- .gh { color: #999999 } /* Generic.Heading */
17
- .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
18
- .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
19
- .go { color: #888888 } /* Generic.Output */
20
- .gp { color: #555555 } /* Generic.Prompt */
21
- .gs { font-weight: bold } /* Generic.Strong */
22
- .gu { color: #aaaaaa } /* Generic.Subheading */
23
- .gt { color: #aa0000 } /* Generic.Traceback */
24
- .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
25
- .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
26
- .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
27
- .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
28
- .kt { color: #445588; } /* Keyword.Type */
29
- .m { color: #009999 } /* Literal.Number */
30
- .s { color: #d14 } /* Literal.String */
31
- .na { color: #008080 } /* Name.Attribute */
32
- .nb { color: #0086B3 } /* Name.Builtin */
33
- .nc { color: #445588; font-weight: bold } /* Name.Class */
34
- .no { color: #008080 } /* Name.Constant */
35
- .ni { color: #800080 } /* Name.Entity */
36
- .ne { color: #990000; font-weight: bold } /* Name.Exception */
37
- .nf { color: #990000; } /* Name.Function */
38
- .nn { color: #555555 } /* Name.Namespace */
39
- .nt { color: #000080 } /* Name.Tag */
40
- .nv { color: #008080 } /* Name.Variable */
41
- .ow { color: #000000; font-weight: bold } /* Operator.Word */
42
- .w { color: #bbbbbb } /* Text.Whitespace */
43
- .mf { color: #009999 } /* Literal.Number.Float */
44
- .mh { color: #009999 } /* Literal.Number.Hex */
45
- .mi { color: #009999 } /* Literal.Number.Integer */
46
- .mo { color: #009999 } /* Literal.Number.Oct */
47
- .sb { color: #d14 } /* Literal.String.Backtick */
48
- .sc { color: #d14 } /* Literal.String.Char */
49
- .sd { color: #d14 } /* Literal.String.Doc */
50
- .s2 { color: #d14 } /* Literal.String.Double */
51
- .se { color: #d14 } /* Literal.String.Escape */
52
- .sh { color: #d14 } /* Literal.String.Heredoc */
53
- .si { color: #d14 } /* Literal.String.Interpol */
54
- .sx { color: #d14 } /* Literal.String.Other */
55
- .sr { color: #009926 } /* Literal.String.Regex */
56
- .s1 { color: #d14 } /* Literal.String.Single */
57
- .ss { color: #990073 } /* Literal.String.Symbol */
58
- .bp { color: #999999 } /* Name.Builtin.Pseudo */
59
- .vc { color: #008080 } /* Name.Variable.Class */
60
- .vg { color: #008080 } /* Name.Variable.Global */
61
- .vi { color: #008080 } /* Name.Variable.Instance */
62
- .il { color: #009999 } /* Literal.Number.Integer.Long */
8
+ .c { color: #999988; font-style: italic } // Comment
9
+ .err { color: #a61717; background-color: #e3d2d2 } // Error
10
+ .k { color: #000000; font-weight: bold } // Keyword
11
+ .o { color: #000000; font-weight: bold } // Operator
12
+ .cm { color: #999988; font-style: italic } // Comment.Multiline
13
+ .cp { color: #999999; font-weight: bold } // Comment.Preproc
14
+ .c1 { color: #999988; font-style: italic } // Comment.Single
15
+ .cs { color: #999999; font-weight: bold; font-style: italic } // Comment.Special
16
+ .gd { color: #000000; background-color: #ffdddd } // Generic.Deleted
17
+ .gd .x { color: #000000; background-color: #ffaaaa } // Generic.Deleted.Specific
18
+ .ge { color: #000000; font-style: italic } // Generic.Emph
19
+ .gr { color: #aa0000 } // Generic.Error
20
+ .gh { color: #999999 } // Generic.Heading
21
+ .gi { color: #000000; background-color: #ddffdd } // Generic.Inserted
22
+ .gi .x { color: #000000; background-color: #aaffaa } // Generic.Inserted.Specific
23
+ .go { color: #888888 } // Generic.Output
24
+ .gp { color: #555555 } // Generic.Prompt
25
+ .gs { font-weight: bold } // Generic.Strong
26
+ .gu { color: #aaaaaa } // Generic.Subheading
27
+ .gt { color: #aa0000 } // Generic.Traceback
28
+ .kc { color: #000000; font-weight: bold } // Keyword.Constant
29
+ .kd { color: #000000; font-weight: bold } // Keyword.Declaration
30
+ .kp { color: #000000; font-weight: bold } // Keyword.Pseudo
31
+ .kr { color: #000000; font-weight: bold } // Keyword.Reserved
32
+ .kt { color: #445588; } // Keyword.Type
33
+ .m { color: #009999 } // Literal.Number
34
+ .s { color: #d14 } // Literal.String
35
+ .na { color: #008080 } // Name.Attribute
36
+ .nb { color: #0086B3 } // Name.Builtin
37
+ .nc { color: #445588; font-weight: bold } // Name.Class
38
+ .no { color: #008080 } // Name.Constant
39
+ .ni { color: #800080 } // Name.Entity
40
+ .ne { color: #990000; font-weight: bold } // Name.Exception
41
+ .nf { color: #990000; } // Name.Function
42
+ .nn { color: #555555 } // Name.Namespace
43
+ .nt { color: #000080 } // Name.Tag
44
+ .nv { color: #008080 } // Name.Variable
45
+ .ow { color: #000000; font-weight: bold } // Operator.Word
46
+ .w { color: #bbbbbb } // Text.Whitespace
47
+ .mf { color: #009999 } // Literal.Number.Float
48
+ .mh { color: #009999 } // Literal.Number.Hex
49
+ .mi { color: #009999 } // Literal.Number.Integer
50
+ .mo { color: #009999 } // Literal.Number.Oct
51
+ .sb { color: #d14 } // Literal.String.Backtick
52
+ .sc { color: #d14 } // Literal.String.Char
53
+ .sd { color: #d14 } // Literal.String.Doc
54
+ .s2 { color: #d14 } // Literal.String.Double
55
+ .se { color: #d14 } // Literal.String.Escape
56
+ .sh { color: #d14 } // Literal.String.Heredoc
57
+ .si { color: #d14 } // Literal.String.Interpol
58
+ .sx { color: #d14 } // Literal.String.Other
59
+ .sr { color: #009926 } // Literal.String.Regex
60
+ .s1 { color: #d14 } // Literal.String.Single
61
+ .ss { color: #990073 } // Literal.String.Symbol
62
+ .bp { color: #999999 } // Name.Builtin.Pseudo
63
+ .vc { color: #008080 } // Name.Variable.Class
64
+ .vg { color: #008080 } // Name.Variable.Global
65
+ .vi { color: #008080 } // Name.Variable.Instance
66
+ .il { color: #009999 } // Literal.Number.Integer.Long
63
67
  }