jazzy 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -4
  3. data/CHANGELOG.md +41 -0
  4. data/Gemfile.lock +40 -35
  5. data/README.md +17 -2
  6. data/jazzy.gemspec +1 -1
  7. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/SourceKittenFramework +0 -0
  8. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Commandant.framework/Commandant +0 -0
  9. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Commandant.framework/Versions/A/Commandant +0 -0
  10. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Commandant.framework/Versions/A/Resources/Info.plist +6 -6
  11. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Curry.framework/Curry +0 -0
  12. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Curry.framework/Versions/A/Curry +0 -0
  13. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Curry.framework/Versions/A/Resources/Info.plist +49 -0
  14. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Result.framework/Result +0 -0
  15. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Result.framework/Versions/A/Resources/Info.plist +6 -6
  16. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Result.framework/Versions/A/Result +0 -0
  17. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SWXMLHash.framework/SWXMLHash +0 -0
  18. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SWXMLHash.framework/Versions/A/Resources/Info.plist +5 -5
  19. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SWXMLHash.framework/Versions/A/SWXMLHash +0 -0
  20. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SwiftXPC.framework/SwiftXPC +0 -0
  21. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SwiftXPC.framework/Versions/A/Resources/Info.plist +5 -5
  22. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SwiftXPC.framework/Versions/A/SwiftXPC +0 -0
  23. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftCore.dylib +0 -0
  24. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftCoreGraphics.dylib +0 -0
  25. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftDarwin.dylib +0 -0
  26. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftDispatch.dylib +0 -0
  27. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftFoundation.dylib +0 -0
  28. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftObjectiveC.dylib +0 -0
  29. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Resources/Info.plist +6 -6
  30. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/SourceKittenFramework +0 -0
  31. data/lib/jazzy/SourceKitten/bin/sourcekitten +0 -0
  32. data/lib/jazzy/config.rb +37 -11
  33. data/lib/jazzy/doc_builder.rb +4 -1
  34. data/lib/jazzy/gem_version.rb +1 -1
  35. data/lib/jazzy/jazzy_markdown.rb +6 -4
  36. data/lib/jazzy/podspec_documenter.rb +7 -1
  37. data/lib/jazzy/sourcekitten.rb +3 -14
  38. data/lib/jazzy/{assets → themes/apple/assets}/css/highlight.css.scss +0 -0
  39. data/lib/jazzy/{assets → themes/apple/assets}/css/jazzy.css.scss +0 -0
  40. data/lib/jazzy/{assets → themes/apple/assets}/img/carat.png +0 -0
  41. data/lib/jazzy/{assets → themes/apple/assets}/img/dash.png +0 -0
  42. data/lib/jazzy/{assets → themes/apple/assets}/img/gh.png +0 -0
  43. data/lib/jazzy/{assets → themes/apple/assets}/js/jazzy.js +0 -0
  44. data/lib/jazzy/{assets → themes/apple/assets}/js/jquery.min.js +0 -0
  45. data/lib/jazzy/{templates → themes/apple/templates}/doc.mustache +1 -0
  46. data/lib/jazzy/{templates → themes/apple/templates}/footer.mustache +0 -0
  47. data/lib/jazzy/{templates → themes/apple/templates}/header.mustache +0 -0
  48. data/lib/jazzy/{templates → themes/apple/templates}/nav.mustache +0 -0
  49. data/lib/jazzy/{templates → themes/apple/templates}/parameter.mustache +0 -0
  50. data/lib/jazzy/{templates → themes/apple/templates}/task.mustache +0 -0
  51. data/lib/jazzy/{templates → themes/apple/templates}/tasks.mustache +0 -0
  52. data/lib/jazzy/themes/fullwidth/assets/css/highlight.css.scss +63 -0
  53. data/lib/jazzy/themes/fullwidth/assets/css/jazzy.css.scss +552 -0
  54. data/lib/jazzy/themes/fullwidth/assets/img/carat.png +0 -0
  55. data/lib/jazzy/themes/fullwidth/assets/img/dash.png +0 -0
  56. data/lib/jazzy/themes/fullwidth/assets/img/gh.png +0 -0
  57. data/lib/jazzy/themes/fullwidth/assets/js/jazzy.js +37 -0
  58. data/lib/jazzy/themes/fullwidth/assets/js/jquery.min.js +4 -0
  59. data/lib/jazzy/themes/fullwidth/templates/doc.mustache +53 -0
  60. data/lib/jazzy/themes/fullwidth/templates/footer.mustache +4 -0
  61. data/lib/jazzy/themes/fullwidth/templates/header.mustache +26 -0
  62. data/lib/jazzy/themes/fullwidth/templates/nav.mustache +16 -0
  63. data/lib/jazzy/themes/fullwidth/templates/parameter.mustache +12 -0
  64. data/lib/jazzy/themes/fullwidth/templates/task.mustache +86 -0
  65. data/lib/jazzy/themes/fullwidth/templates/tasks.mustache +9 -0
  66. data/spec/integration_spec.rb +57 -47
  67. metadata +35 -18
@@ -3,7 +3,7 @@
3
3
  <plist version="1.0">
4
4
  <dict>
5
5
  <key>BuildMachineOSBuild</key>
6
- <string>15B42</string>
6
+ <string>15C50</string>
7
7
  <key>CFBundleDevelopmentRegion</key>
8
8
  <string>en</string>
9
9
  <key>CFBundleExecutable</key>
@@ -17,7 +17,7 @@
17
17
  <key>CFBundlePackageType</key>
18
18
  <string>FMWK</string>
19
19
  <key>CFBundleShortVersionString</key>
20
- <string>0.6.2</string>
20
+ <string>0.7.3</string>
21
21
  <key>CFBundleSignature</key>
22
22
  <string>????</string>
23
23
  <key>CFBundleSupportedPlatforms</key>
@@ -29,17 +29,17 @@
29
29
  <key>DTCompiler</key>
30
30
  <string>com.apple.compilers.llvm.clang.1_0</string>
31
31
  <key>DTPlatformBuild</key>
32
- <string>7B1005</string>
32
+ <string>7C68</string>
33
33
  <key>DTPlatformVersion</key>
34
34
  <string>GM</string>
35
35
  <key>DTSDKBuild</key>
36
- <string>15A278</string>
36
+ <string>15C43</string>
37
37
  <key>DTSDKName</key>
38
38
  <string>macosx10.11</string>
39
39
  <key>DTXcode</key>
40
- <string>0711</string>
40
+ <string>0720</string>
41
41
  <key>DTXcodeBuild</key>
42
- <string>7B1005</string>
42
+ <string>7C68</string>
43
43
  <key>NSHumanReadableCopyright</key>
44
44
  <string>Copyright © 2015 SourceKitten. All rights reserved.</string>
45
45
  </dict>
@@ -105,6 +105,11 @@ module Jazzy
105
105
  description: 'The root path to your Objective-C framework.',
106
106
  parse: ->(fr) { expand_path(fr) }
107
107
 
108
+ config_attr :sdk,
109
+ command_line: '--sdk [iphone|watch|appletv][os|simulator]|macosx',
110
+ description: 'The SDK for which your code should be built.',
111
+ default: 'macosx'
112
+
108
113
  config_attr :config_file,
109
114
  command_line: '--config PATH',
110
115
  description: ['Configuration file (.yaml or .json)',
@@ -137,7 +142,11 @@ module Jazzy
137
142
 
138
143
  config_attr :swift_version,
139
144
  command_line: '--swift-version VERSION',
140
- default: '2.1'
145
+ default: '2.1.1',
146
+ parse: ->(v) do
147
+ raise 'jazzy only supports Swift 2.0 or later.' if v.to_f < 2
148
+ v
149
+ end
141
150
 
142
151
  # ──────── Metadata ────────
143
152
 
@@ -238,18 +247,35 @@ module Jazzy
238
247
  'Example: http://git.io/v4Bcp'],
239
248
  default: []
240
249
 
250
+ config_attr :custom_head,
251
+ command_line: '--head HTML',
252
+ description: 'Custom HTML to inject into <head></head>.',
253
+ default: ''
254
+
255
+ config_attr :theme_directory,
256
+ command_line: '--theme [apple | fullwidth | DIRPATH]',
257
+ description: "Which theme to use. Specify either 'apple' (default), "\
258
+ "'fullwidth' or the path to your mustache templates and " \
259
+ 'other assets for a custom theme.',
260
+ default: 'apple',
261
+ parse: ->(t) do
262
+ return expand_path(t) unless t == 'apple' || t == 'fullwidth'
263
+ Pathname(__FILE__).parent + 'themes' + t
264
+ end
265
+
241
266
  config_attr :template_directory,
242
267
  command_line: ['-t', '--template-directory DIRPATH'],
243
- description: 'The directory that contains the mustache templates to use',
244
- default: Pathname(__FILE__).parent + 'templates',
245
- parse: ->(td) { expand_path(td) }
268
+ description: 'DEPRECATED: Use --theme instead.',
269
+ parse: ->(_) do
270
+ raise '--template-directory (-t) is deprecated: use --theme instead.'
271
+ end
246
272
 
247
273
  config_attr :assets_directory,
248
274
  command_line: '--assets-directory DIRPATH',
249
- description: 'The directory that contains the assets (CSS, JS, images) '\
250
- 'used by the templates',
251
- default: Pathname(__FILE__).parent + 'assets',
252
- parse: ->(ad) { expand_path(ad) }
275
+ description: 'DEPRECATED: Use --theme instead.',
276
+ parse: ->(_) do
277
+ raise '--assets-directory is deprecated: use --theme instead.'
278
+ end
253
279
 
254
280
  # rubocop:enable Style/AlignParameters
255
281
 
@@ -259,9 +285,9 @@ module Jazzy
259
285
  end
260
286
  end
261
287
 
262
- def template_directory=(template_directory)
263
- @template_directory = template_directory
264
- Doc.template_path = template_directory
288
+ def theme_directory=(theme_directory)
289
+ @theme_directory = theme_directory
290
+ Doc.template_path = theme_directory + 'templates'
265
291
  end
266
292
 
267
293
  # rubocop:disable Metrics/MethodLength
@@ -175,7 +175,8 @@ module Jazzy
175
175
  end
176
176
 
177
177
  def self.copy_assets(destination)
178
- FileUtils.cp_r(Config.instance.assets_directory.children, destination)
178
+ assets_directory = Config.instance.theme_directory + 'assets'
179
+ FileUtils.cp_r(assets_directory.children, destination)
179
180
  Pathname.glob(destination + 'css/**/*.scss').each do |scss|
180
181
  contents = scss.read
181
182
  css = Sass::Engine.new(contents, syntax: :scss).render
@@ -194,6 +195,7 @@ module Jazzy
194
195
  doc = Doc.new # Mustache model instance
195
196
  doc[:name] = source_module.name
196
197
  doc[:overview] = ReadmeGenerator.generate(source_module)
198
+ doc[:custom_head] = Config.instance.custom_head
197
199
  doc[:doc_coverage] = source_module.doc_coverage unless
198
200
  Config.instance.hide_documentation_coverage
199
201
  doc[:structure] = source_module.doc_structure
@@ -299,6 +301,7 @@ module Jazzy
299
301
  end
300
302
 
301
303
  doc = Doc.new # Mustache model instance
304
+ doc[:custom_head] = Config.instance.custom_head
302
305
  doc[:doc_coverage] = source_module.doc_coverage unless
303
306
  Config.instance.hide_documentation_coverage
304
307
  doc[:name] = doc_model.name
@@ -1,3 +1,3 @@
1
1
  module Jazzy
2
- VERSION = '0.4.1' unless defined? Jazzy::VERSION
2
+ VERSION = '0.5.0' unless defined? Jazzy::VERSION
3
3
  end
@@ -68,10 +68,12 @@ module Jazzy
68
68
  end
69
69
 
70
70
  def render_aside(type, text)
71
- %(<div class="aside aside-#{type.underscore.tr('_', '-')}">
72
- <p class="aside-title">#{type.underscore.humanize}</p>
73
- #{text}
74
- </div>)
71
+ <<-HTML
72
+ <div class="aside aside-#{type.underscore.tr('_', '-')}">
73
+ <p class="aside-title">#{type.underscore.humanize}</p>
74
+ #{text}
75
+ </div>
76
+ HTML
75
77
  end
76
78
 
77
79
  def list(text, list_type)
@@ -16,7 +16,7 @@ module Jazzy
16
16
  stdout = Dir.chdir(sandbox.root) do
17
17
  pod_targets.map do |t|
18
18
  SourceKitten.run_sourcekitten(
19
- %W(doc --module-name #{podspec.module_name} -target #{t}),
19
+ %W(doc --module-name #{podspec.module_name} -target #{t})
20
20
  )
21
21
  end
22
22
  end
@@ -90,6 +90,7 @@ module Jazzy
90
90
  c.installation_root.rmtree if c.installation_root.exist?
91
91
  c.integrate_targets = false
92
92
  c.deduplicate_targets = false
93
+ c.deterministic_uuids = false
93
94
  end
94
95
  end
95
96
 
@@ -109,6 +110,11 @@ module Jazzy
109
110
  platform :ios, '8.0'
110
111
  [podspec, *podspec.recursive_subspecs].each do |ss|
111
112
  ss.available_platforms.each do |p|
113
+ # Travis builds take too long when building docs for all available
114
+ # platforms for the Moya integration spec, so we just document OSX.
115
+ # TODO: remove once jazzy is fast enough.
116
+ next if ENV['JAZZY_INTEGRATION_SPECS'] &&
117
+ !p.to_s.start_with?('OS X')
112
118
  t = "Jazzy-#{ss.name.gsub('/', '__')}-#{p.name}"
113
119
  targets << "Pods-#{t}-#{ss.root.name}"
114
120
  target(t) do
@@ -121,8 +121,8 @@ module Jazzy
121
121
  if options.xcodebuild_arguments.empty?
122
122
  arguments += ['--objc', options.umbrella_header.to_s, '-x',
123
123
  'objective-c', '-isysroot',
124
- `xcrun --show-sdk-path`.chomp, '-I',
125
- options.framework_root.to_s]
124
+ `xcrun --show-sdk-path --sdk #{options.sdk}`.chomp,
125
+ '-I', options.framework_root.to_s]
126
126
  end
127
127
  elsif !options.module_name.empty?
128
128
  arguments += ['--module-name', options.module_name]
@@ -223,7 +223,7 @@ module Jazzy
223
223
  doc['key.parsed_declaration'] || doc['key.doc.declaration'],
224
224
  Config.instance.objc_mode ? 'objc' : 'swift',
225
225
  )
226
- declaration.abstract = comment_from_doc(doc)
226
+ declaration.abstract = Jazzy.markdown.render(doc['key.doc.comment'] || '')
227
227
  declaration.discussion = ''
228
228
  declaration.return = make_paragraphs(doc, 'key.doc.result_discussion')
229
229
 
@@ -232,17 +232,6 @@ module Jazzy
232
232
  @documented_count += 1
233
233
  end
234
234
 
235
- def self.comment_from_doc(doc)
236
- swift_version = Config.instance.swift_version.to_f
237
- comment = doc['key.doc.comment'] || ''
238
- if swift_version < 2
239
- # comment until first ReST definition
240
- matches = /^\s*:[^\s]+:/.match(comment)
241
- comment = comment[0...matches.begin(0)] if matches
242
- end
243
- Jazzy.markdown.render(comment)
244
- end
245
-
246
235
  def self.make_substructure(doc, declaration)
247
236
  if doc['key.substructure']
248
237
  declaration.children = make_source_declarations(
@@ -7,6 +7,7 @@
7
7
  <meta charset='utf-8'>
8
8
  <script src="{{path_to_root}}js/jquery.min.js" defer></script>
9
9
  <script src="{{path_to_root}}js/jazzy.js" defer></script>
10
+ {{{custom_head}}}
10
11
  </head>
11
12
  <body>
12
13
  {{#dash_type}}
@@ -0,0 +1,63 @@
1
+ /* Credit to https://gist.github.com/wataru420/2048287 */
2
+
3
+ .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 */
63
+ }
@@ -0,0 +1,552 @@
1
+ // ===========================================================================
2
+ //
3
+ // Variables
4
+ //
5
+ // ===========================================================================
6
+
7
+ $body_background: #fff;
8
+ $body_font: 16px/1.7 'Helvetica Neue', Helvetica, Arial, sans-serif;
9
+ $text_color: #333;
10
+ $gray_border: 1px solid #ddd;
11
+
12
+ $heading_weight: 700;
13
+ $light_heading_color: #777;
14
+
15
+ $quote_color: #858585;
16
+ $quote_border: 4px solid #e5e5e5;
17
+
18
+ $link_color: #4183c4;
19
+
20
+ $table_alt_row_color: #fbfbfb;
21
+ $table_border_color: #ddd;
22
+
23
+ $code_bg_color: #f7f7f7;
24
+ $code_font: Consolas, "Liberation Mono", Menlo, Courier, monospace;
25
+
26
+
27
+ // ----- Layout
28
+
29
+ $gutter: 16px;
30
+ $navigation_max_width: 300px;
31
+
32
+
33
+ // ----- Header
34
+
35
+ $header_bg_color: #444;
36
+ $header_link_color: #fff;
37
+ $doc_coverage_color: #999;
38
+
39
+
40
+ // ----- Breadcrumbs
41
+
42
+ $breadcrumbs_bg_color: #fbfbfb;
43
+ $breadcrumbs_border_color: #ddd;
44
+
45
+
46
+ // ----- Navigation
47
+
48
+ $navigation_max_width: 300px;
49
+ $navigation_bg_color: #fbfbfb;
50
+ $navigation_border_color: #ddd;
51
+ $navigation_title_color: #333;
52
+ $navigation_task_color: #808080;
53
+
54
+ // ----- Content
55
+
56
+ $declaration_title_language_color: #4183c4;
57
+ $declaration_language_border: 5px solid #cde9f4;
58
+ $declaration_bg_color: #fff;
59
+ $declaration_border_color: #ddd;
60
+
61
+ $aside_color: #aaa;
62
+ $aside_border: 5px solid lighten($aside_color, 20%);
63
+ $aside_warning_color: #ff0000;
64
+ $aside_warning_border: 5px solid lighten($aside_warning_color, 20%);
65
+
66
+ // ----- Footer
67
+
68
+ $footer_bg_color: #444;
69
+ $footer_text_color: #ddd;
70
+ $footer_link_color: #fff;
71
+
72
+
73
+ // ===========================================================================
74
+ //
75
+ // Base
76
+ //
77
+ // ===========================================================================
78
+
79
+ *, *:before, *:after {
80
+ box-sizing: inherit;
81
+ }
82
+
83
+ body {
84
+ margin: 0;
85
+ background: $body_background;
86
+ color: $text_color;
87
+ font: $body_font;
88
+ letter-spacing: .2px;
89
+ -webkit-font-smoothing: antialiased;
90
+ box-sizing: border-box;
91
+ }
92
+
93
+ // ----- Block elements
94
+
95
+ @mixin heading($font-size: 1rem, $margin: 1.275em 0 0.85em) {
96
+ font-size: $font-size;
97
+ font-weight: $heading_weight;
98
+ margin: $margin;
99
+ }
100
+
101
+ h1 {
102
+ @include heading(2rem, 1.275em 0 0.6em);
103
+ }
104
+
105
+ h2 {
106
+ @include heading(1.75rem, 1.275em 0 0.3em);
107
+ }
108
+
109
+ h3 {
110
+ @include heading(1.5rem, 1em 0 0.3em);
111
+ }
112
+
113
+ h4 {
114
+ @include heading(1.25rem);
115
+ }
116
+
117
+ h5 {
118
+ @include heading;
119
+ }
120
+
121
+ h6 {
122
+ @include heading;
123
+ color: $light_heading_color;
124
+ }
125
+
126
+ p {
127
+ margin: 0 0 1em;
128
+ }
129
+
130
+ ul, ol {
131
+ padding: 0 0 0 2em;
132
+ margin: 0 0 0.85em;
133
+ }
134
+
135
+ blockquote {
136
+ margin: 0 0 0.85em;
137
+ padding: 0 15px;
138
+ color: $quote_color;
139
+ border-left: $quote_border;
140
+ }
141
+
142
+
143
+ // ----- Inline elements
144
+
145
+ img {
146
+ max-width: 100%;
147
+ }
148
+
149
+ a {
150
+ color: $link_color;
151
+ text-decoration: none;
152
+
153
+ &:hover, &:focus {
154
+ outline: 0;
155
+ text-decoration: underline;
156
+ }
157
+ }
158
+
159
+
160
+ // ----- Tables
161
+
162
+ table {
163
+ background: $body_background;
164
+ width: 100%;
165
+ border-collapse: collapse;
166
+ border-spacing: 0;
167
+ overflow: auto;
168
+ margin: 0 0 0.85em;
169
+ }
170
+
171
+ tr {
172
+ &:nth-child(2n) {
173
+ background-color: $table_alt_row_color;
174
+ }
175
+ }
176
+
177
+ th, td {
178
+ padding: 6px 13px;
179
+ border: 1px solid $table_border_color;
180
+ }
181
+
182
+
183
+ // ----- Code
184
+
185
+ pre {
186
+ margin: 0 0 1.275em;
187
+ padding: .85em 1em;
188
+ overflow: auto;
189
+ background: $code_bg_color;
190
+ font-size: .85em;
191
+ font-family: $code_font;
192
+ }
193
+
194
+ code {
195
+ font-family: $code_font;
196
+ }
197
+
198
+ p, li {
199
+ > code {
200
+ background: $code_bg_color;
201
+ padding: .2em;
202
+ &:before, &:after {
203
+ letter-spacing: -.2em;
204
+ content: "\00a0";
205
+ }
206
+ }
207
+ }
208
+
209
+ pre code {
210
+ padding: 0;
211
+ white-space: pre;
212
+ }
213
+
214
+
215
+ // ===========================================================================
216
+ //
217
+ // Layout
218
+ //
219
+ // ===========================================================================
220
+
221
+ .content-wrapper {
222
+ display: flex;
223
+ flex-direction: column;
224
+ @media (min-width: 768px) {
225
+ flex-direction: row;
226
+ }
227
+ }
228
+
229
+
230
+ // ===========================================================================
231
+ //
232
+ // Header
233
+ //
234
+ // ===========================================================================
235
+
236
+ .header {
237
+ display: flex;
238
+ padding: $gutter/2;
239
+ font-size: 0.875em;
240
+ background: $header_bg_color;
241
+ color: $doc_coverage_color;
242
+ }
243
+
244
+ .header-col {
245
+ margin: 0;
246
+ padding: 0 $gutter/2
247
+ }
248
+
249
+ .header-col--primary {
250
+ flex: 1;
251
+ }
252
+
253
+ .header-link {
254
+ color: $header_link_color;
255
+ }
256
+
257
+ .header-icon {
258
+ padding-right: 6px;
259
+ vertical-align: -4px;
260
+ height: 16px;
261
+ }
262
+
263
+
264
+
265
+ // ===========================================================================
266
+ //
267
+ // Breadcrumbs
268
+ //
269
+ // ===========================================================================
270
+
271
+ .breadcrumbs {
272
+ font-size: 0.875em;
273
+ padding: $gutter / 2 $gutter;
274
+ margin: 0;
275
+ background: $breadcrumbs_bg_color;
276
+ border-bottom: 1px solid $breadcrumbs_border_color;
277
+ }
278
+
279
+ .carat {
280
+ height: 10px;
281
+ margin: 0 5px;
282
+ }
283
+
284
+
285
+ // ===========================================================================
286
+ //
287
+ // Navigation
288
+ //
289
+ // ===========================================================================
290
+
291
+ .navigation {
292
+ order: 2;
293
+
294
+ @media (min-width: 768px) {
295
+ order: 1;
296
+ width: 25%;
297
+ max-width: $navigation_max_width;
298
+ padding-bottom: $gutter*4;
299
+ overflow: hidden;
300
+ word-wrap: normal;
301
+ background: $navigation_bg_color;
302
+ border-right: 1px solid $navigation_border_color;
303
+ }
304
+ }
305
+
306
+ .nav-groups {
307
+ list-style-type: none;
308
+ padding-left: 0;
309
+ }
310
+
311
+ .nav-group-name {
312
+ border-bottom: 1px solid $navigation_border_color;
313
+ padding: $gutter/2 0 $gutter/2 $gutter;
314
+ }
315
+
316
+ .nav-group-name-link {
317
+ color: $navigation_title_color;
318
+ }
319
+
320
+ .nav-group-tasks {
321
+ margin: $gutter/2 0;
322
+ padding: 0 0 0 $gutter/2;
323
+ }
324
+
325
+ .nav-group-task {
326
+ font-size: 1em;
327
+ list-style-type: none;
328
+ }
329
+
330
+ .nav-group-task-link {
331
+ color: $navigation_task_color;
332
+ }
333
+
334
+ // ===========================================================================
335
+ //
336
+ // Content
337
+ //
338
+ // ===========================================================================
339
+
340
+ .main-content {
341
+ order: 1;
342
+ @media (min-width: 768px) {
343
+ order: 2;
344
+ flex: 1;
345
+ padding-bottom: 60px;
346
+ }
347
+ }
348
+
349
+ .section {
350
+ padding: 0 $gutter * 2;
351
+ border-bottom: 1px solid $navigation_border_color;
352
+ }
353
+
354
+ .section-content {
355
+ max-width: 834px;
356
+ margin: 0 auto;
357
+ padding: $gutter 0;
358
+ }
359
+
360
+ .section-name {
361
+ color: #666;
362
+ display: block;
363
+ }
364
+
365
+ .declaration .highlight {
366
+ overflow-x: initial; // This allows the scrollbar to show up inside declarations
367
+ padding: $gutter/2 0;
368
+ margin: 0;
369
+ background-color: transparent;
370
+ border: none;
371
+ }
372
+
373
+ .task-group-section {
374
+ border-top: $gray_border;
375
+ }
376
+
377
+ .task-group {
378
+ padding-top: 0px;
379
+ }
380
+
381
+ .task-name-container {
382
+ a[name] {
383
+ &:before {
384
+ content: "";
385
+ display: block;
386
+ }
387
+ }
388
+ }
389
+
390
+ .item-container {
391
+ padding: 0;
392
+ }
393
+
394
+ .item {
395
+ padding-top: 8px;
396
+ width: 100%;
397
+ list-style-type: none;
398
+
399
+ a[name] {
400
+ &:before {
401
+ content: "";
402
+ display: block;
403
+ }
404
+ }
405
+
406
+ .token {
407
+ padding-left: 3px;
408
+ margin-left: 0px;
409
+ font-size: 1rem;
410
+ }
411
+
412
+ .declaration-note {
413
+ font-size: .85em;
414
+ color: #808080;
415
+ font-style: italic;
416
+ }
417
+ }
418
+
419
+ .pointer-container {
420
+ border-bottom: $gray_border;
421
+ left: -23px;
422
+ padding-bottom: 13px;
423
+ position: relative;
424
+ width: 110%;
425
+ }
426
+
427
+ .pointer {
428
+ left: 21px;
429
+ top: 7px;
430
+ display: block;
431
+ position: absolute;
432
+ width: 12px;
433
+ height: 12px;
434
+ border-left: 1px solid $declaration_border_color;
435
+ border-top: 1px solid $declaration_border_color;
436
+ background: $declaration_bg_color;
437
+ transform: rotate(45deg);
438
+ }
439
+
440
+ .height-container {
441
+ display: none;
442
+ position: relative;
443
+ width: 100%;
444
+ overflow: hidden;
445
+ .section {
446
+ background: $declaration_bg_color;
447
+ border: $gray_border;
448
+ border-top-width: 0;
449
+ padding-top: 10px;
450
+ padding-bottom: 5px;
451
+ padding: $gutter / 2 $gutter;
452
+ }
453
+ }
454
+
455
+ .aside, .language {
456
+ padding: 6px 12px;
457
+ margin: 12px 0;
458
+ border-left: $aside_border;
459
+ overflow-y: hidden;
460
+ .aside-title {
461
+ font-size: 9px;
462
+ letter-spacing: 2px;
463
+ text-transform: uppercase;
464
+ padding-bottom: 0;
465
+ margin: 0;
466
+ color: $aside_color;
467
+ -webkit-user-select: none;
468
+ }
469
+ p:last-child {
470
+ margin-bottom: 0;
471
+ }
472
+ }
473
+
474
+ .language {
475
+ border-left: $declaration_language_border;
476
+ .aside-title {
477
+ color: $declaration_title_language_color;
478
+ }
479
+ }
480
+
481
+ .aside-warning {
482
+ border-left: $aside_warning_border;
483
+ .aside-title {
484
+ color: $aside_warning_color;
485
+ }
486
+ }
487
+
488
+ .graybox {
489
+ border-collapse: collapse;
490
+ width: 100%;
491
+ p {
492
+ margin: 0;
493
+ word-break: break-word;
494
+ min-width: 50px;
495
+ }
496
+ td {
497
+ border: $gray_border;
498
+ padding: 5px 25px 5px 10px;
499
+ vertical-align: middle;
500
+ }
501
+ tr td:first-of-type {
502
+ text-align: right;
503
+ padding: 7px;
504
+ vertical-align: top;
505
+ word-break: normal;
506
+ width: 40px;
507
+ }
508
+ }
509
+
510
+ .slightly-smaller {
511
+ font-size: 0.9em;
512
+ }
513
+
514
+
515
+ // ===========================================================================
516
+ //
517
+ // Footer
518
+ //
519
+ // ===========================================================================
520
+
521
+ .footer {
522
+ padding: $gutter/2 $gutter;
523
+ background: $footer_bg_color;
524
+ color: $footer_text_color;
525
+ font-size: 0.8em;
526
+
527
+ p {
528
+ margin: $gutter/2 0;
529
+ }
530
+
531
+ a {
532
+ color: $footer_link_color;
533
+ }
534
+ }
535
+
536
+
537
+ // ===========================================================================
538
+ //
539
+ // Dash
540
+ //
541
+ // ===========================================================================
542
+
543
+ html.dash {
544
+
545
+ .header, .breadcrumbs, .navigation {
546
+ display: none;
547
+ }
548
+
549
+ .height-container {
550
+ display: block;
551
+ }
552
+ }