jazzy 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +27 -0
  3. data/.travis.yml +2 -2
  4. data/CHANGELOG.md +41 -0
  5. data/Gemfile.lock +10 -12
  6. data/README.md +80 -14
  7. data/Rakefile +1 -3
  8. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/SourceKittenFramework +0 -0
  9. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Commandant.framework/Commandant +0 -0
  10. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Commandant.framework/Versions/A/Commandant +0 -0
  11. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Commandant.framework/Versions/A/Resources/Info.plist +5 -5
  12. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Result.framework/Result +0 -0
  13. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Result.framework/Versions/A/Resources/Info.plist +4 -4
  14. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/Result.framework/Versions/A/Result +0 -0
  15. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SWXMLHash.framework/SWXMLHash +0 -0
  16. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SWXMLHash.framework/Versions/A/Resources/Info.plist +4 -4
  17. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SWXMLHash.framework/Versions/A/SWXMLHash +0 -0
  18. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SwiftXPC.framework/SwiftXPC +0 -0
  19. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SwiftXPC.framework/Versions/A/Resources/Info.plist +5 -5
  20. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/SwiftXPC.framework/Versions/A/SwiftXPC +0 -0
  21. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftCore.dylib +0 -0
  22. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftCoreGraphics.dylib +0 -0
  23. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftDarwin.dylib +0 -0
  24. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftDispatch.dylib +0 -0
  25. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftFoundation.dylib +0 -0
  26. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Frameworks/libswiftObjectiveC.dylib +0 -0
  27. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/Resources/Info.plist +5 -5
  28. data/lib/jazzy/SourceKitten/Frameworks/SourceKittenFramework.framework/Versions/A/SourceKittenFramework +0 -0
  29. data/lib/jazzy/SourceKitten/bin/sourcekitten +0 -0
  30. data/lib/jazzy/assets/css/jazzy.css.scss +39 -14
  31. data/lib/jazzy/config.rb +342 -182
  32. data/lib/jazzy/doc.rb +8 -19
  33. data/lib/jazzy/doc_builder.rb +38 -26
  34. data/lib/jazzy/docset_builder.rb +4 -3
  35. data/lib/jazzy/executable.rb +2 -1
  36. data/lib/jazzy/gem_version.rb +1 -1
  37. data/lib/jazzy/jazzy_markdown.rb +16 -4
  38. data/lib/jazzy/podspec_documenter.rb +25 -11
  39. data/lib/jazzy/readme_generator.rb +7 -7
  40. data/lib/jazzy/source_declaration.rb +2 -0
  41. data/lib/jazzy/source_declaration/access_control_level.rb +21 -15
  42. data/lib/jazzy/source_declaration/type.rb +79 -5
  43. data/lib/jazzy/sourcekitten.rb +150 -24
  44. data/lib/jazzy/templates/doc.mustache +2 -2
  45. data/lib/jazzy/templates/nav.mustache +1 -1
  46. data/lib/jazzy/templates/task.mustache +26 -10
  47. data/spec/integration_spec.rb +34 -39
  48. metadata +2 -2
@@ -9,6 +9,8 @@ require 'jazzy/highlighter'
9
9
  require 'jazzy/source_declaration'
10
10
  require 'jazzy/source_mark'
11
11
 
12
+ ELIDED_AUTOLINK_TOKEN = '36f8f5912051ae747ef441d6511ca4cb'.freeze
13
+
12
14
  module Jazzy
13
15
  # This module interacts with the sourcekitten command-line executable
14
16
  module SourceKitten
@@ -68,9 +70,9 @@ module Jazzy
68
70
  if parents.empty? || doc.children.count > 0
69
71
  # Create HTML page for this doc if it has children or is root-level
70
72
  doc.url = (
71
- subdir_for_doc(doc, parents) +
72
- [doc.name + '.html']
73
- ).join('/')
73
+ subdir_for_doc(doc, parents) +
74
+ [doc.name + '.html']
75
+ ).join('/')
74
76
  doc.children = make_doc_urls(doc.children, parents + [doc])
75
77
  else
76
78
  # Don't create HTML page for this doc if it doesn't have children
@@ -111,11 +113,17 @@ module Jazzy
111
113
  # Builds SourceKitten arguments based on Jazzy options
112
114
  def self.arguments_from_options(options)
113
115
  arguments = ['doc']
114
- unless options.module_name.empty?
116
+ if options.objc_mode
117
+ if options.xcodebuild_arguments.empty?
118
+ arguments += ['--objc', options.umbrella_header.to_s, '-x',
119
+ 'objective-c', '-isysroot',
120
+ `xcrun --show-sdk-path`.chomp, '-I',
121
+ options.framework_root.to_s]
122
+ end
123
+ elsif !options.module_name.empty?
115
124
  arguments += ['--module-name', options.module_name]
116
125
  end
117
- arguments += options.xcodebuild_arguments
118
- arguments
126
+ arguments + options.xcodebuild_arguments
119
127
  end
120
128
 
121
129
  # Run sourcekitten with given arguments and return STDOUT
@@ -125,8 +133,8 @@ module Jazzy
125
133
  raise "Unable to find an Xcode with swift version #{swift_version}."
126
134
  end
127
135
  bin_path = Pathname(__FILE__).parent + 'SourceKitten/bin/sourcekitten'
128
- output, _ = Executable.execute_command(bin_path, arguments, true,
129
- env: xcode.as_env)
136
+ output, = Executable.execute_command(bin_path, arguments, true,
137
+ env: xcode.as_env)
130
138
  output
131
139
  end
132
140
 
@@ -147,10 +155,13 @@ module Jazzy
147
155
  def self.should_document?(doc)
148
156
  return false if doc['key.doc.comment'].to_s.include?(':nodoc:')
149
157
 
158
+ # Always document Objective-C declarations.
159
+ return true if Config.instance.objc_mode
160
+
150
161
  # Document extensions & enum elements, since we can't tell their ACL.
151
162
  type = SourceDeclaration::Type.new(doc['key.kind'])
152
- return true if type.enum_element?
153
- if type.extension?
163
+ return true if type.swift_enum_element?
164
+ if type.swift_extension?
154
165
  return Array(doc['key.substructure']).any? do |subdoc|
155
166
  should_document?(subdoc)
156
167
  end
@@ -162,7 +173,8 @@ module Jazzy
162
173
  def self.process_undocumented_token(doc, declaration)
163
174
  source_directory = Config.instance.source_directory.to_s
164
175
  filepath = doc['key.filepath']
165
- if filepath && filepath.start_with?(source_directory)
176
+ objc = Config.instance.objc_mode
177
+ if filepath && (filepath.start_with?(source_directory) || objc)
166
178
  @undocumented_tokens << doc
167
179
  end
168
180
  return nil if !documented_child?(doc) && @skip_undocumented
@@ -205,7 +217,7 @@ module Jazzy
205
217
  declaration.column = doc['key.doc.column']
206
218
  declaration.declaration = Highlighter.highlight(
207
219
  doc['key.parsed_declaration'] || doc['key.doc.declaration'],
208
- 'swift',
220
+ Config.instance.objc_mode ? 'objc' : 'swift',
209
221
  )
210
222
  declaration.abstract = comment_from_doc(doc)
211
223
  declaration.discussion = ''
@@ -251,10 +263,8 @@ module Jazzy
251
263
  declaration = SourceDeclaration.new
252
264
  declaration.type = SourceDeclaration::Type.new(doc['key.kind'])
253
265
  declaration.typename = doc['key.typename']
254
- if declaration.type.mark? && doc['key.name'].start_with?('MARK: ')
255
- current_mark = SourceMark.new(doc['key.name'])
256
- end
257
- if declaration.type.enum_case?
266
+ current_mark = SourceMark.new(doc['key.name']) if declaration.type.mark?
267
+ if declaration.type.swift_enum_case?
258
268
  # Enum "cases" are thin wrappers around enum "elements".
259
269
  declarations += make_source_declarations(doc['key.substructure'])
260
270
  next
@@ -292,11 +302,80 @@ module Jazzy
292
302
  (@undocumented_tokens.count + @documented_count)
293
303
  end
294
304
 
305
+ # Merges multiple extensions of the same entity into a single document.
306
+ #
307
+ # Merges extensions into the protocol/class/struct/enum they extend, if it
308
+ # occurs in the same project.
309
+ #
310
+ # Merges redundant declarations when documenting podspecs.
295
311
  def self.deduplicate_declarations(declarations)
296
- duplicates = declarations.group_by { |d| [d.usr, d.type.kind] }.values
297
- duplicates.map do |decls|
298
- decls.first.tap do |d|
299
- d.children = deduplicate_declarations(decls.flat_map(&:children).uniq)
312
+ duplicate_groups = declarations
313
+ .group_by { |d| deduplication_key(d) }
314
+ .values
315
+
316
+ duplicate_groups.map do |group|
317
+ # Put extended type (if present) before extensions
318
+ merge_declarations(group)
319
+ end
320
+ end
321
+
322
+ # Two declarations get merged if they have the same deduplication key.
323
+ def self.deduplication_key(decl)
324
+ if decl.type.swift_extensible? || decl.type.swift_extension?
325
+ [decl.usr]
326
+ else
327
+ [decl.usr, decl.type.kind]
328
+ end
329
+ end
330
+
331
+ # Merges all of the given types and extensions into a single document.
332
+ def self.merge_declarations(decls)
333
+ extensions, typedecls = decls.partition { |d| d.type.swift_extension? }
334
+
335
+ if typedecls.size > 1
336
+ warn 'Found conflicting type declarations with the same name, which ' \
337
+ 'may indicate a build issue or a bug in Jazzy: ' +
338
+ typedecls.map { |t| "#{t.type.name.downcase} #{t.name}" }.join(', ')
339
+ end
340
+ typedecl = typedecls.first
341
+
342
+ if typedecl && typedecl.type.swift_protocol?
343
+ merge_default_implementations_into_protocol(typedecl, extensions)
344
+ mark_members_from_protocol_extension(extensions)
345
+ extensions.reject! { |ext| ext.children.empty? }
346
+ end
347
+
348
+ decls = typedecls + extensions
349
+ decls.first.tap do |d|
350
+ d.children = deduplicate_declarations(decls.flat_map(&:children).uniq)
351
+ end
352
+ end
353
+
354
+ # If any of the extensions provide default implementations for methods in
355
+ # the given protocol, merge those members into the protocol doc instead of
356
+ # keeping them on the extension. These get a “Default implementation”
357
+ # annotation in the generated docs.
358
+ def self.merge_default_implementations_into_protocol(protocol, extensions)
359
+ protocol.children.each do |proto_method|
360
+ extensions.each do |ext|
361
+ defaults, ext.children = ext.children.partition do |ext_member|
362
+ ext_member.name == proto_method.name
363
+ end
364
+ unless defaults.empty?
365
+ proto_method.default_impl_abstract =
366
+ defaults.flat_map { |d| [d.abstract, d.discussion] }.join("\n\n")
367
+ end
368
+ end
369
+ end
370
+ end
371
+
372
+ # Protocol methods provided only in an extension and not in the protocol
373
+ # itself are a special beast: they do not use dynamic dispatch. These get an
374
+ # “Extension method” annotation in the generated docs.
375
+ def self.mark_members_from_protocol_extension(extensions)
376
+ extensions.each do |ext|
377
+ ext.children.each do |ext_member|
378
+ ext_member.from_protocol_extension = true
300
379
  end
301
380
  end
302
381
  end
@@ -309,6 +388,47 @@ module Jazzy
309
388
  end.compact
310
389
  end
311
390
 
391
+ def self.names_and_urls(docs)
392
+ docs.flat_map do |doc|
393
+ # FIXME: autolink more than just top-level items.
394
+ [{ name: doc.name, url: doc.url }] # + names_and_urls(doc.children)
395
+ end
396
+ end
397
+
398
+ def self.autolink_text(text, data, url)
399
+ regex = /\b(#{data.map { |d| Regexp.escape(d[:name]) }.join('|')})\b/
400
+ text.gsub(regex) do
401
+ name = Regexp.last_match(1)
402
+ auto_url = data.find { |d| d[:name] == name }[:url]
403
+ if auto_url == url # docs shouldn't autolink to themselves
404
+ Regexp.last_match(0)
405
+ else
406
+ "<a href=\"#{ELIDED_AUTOLINK_TOKEN}#{auto_url}\">#{name}</a>"
407
+ end
408
+ end
409
+ end
410
+
411
+ def self.autolink(docs, data)
412
+ docs.map do |doc|
413
+ doc.abstract = autolink_text(doc.abstract, data, doc.url)
414
+ doc.return = autolink_text(doc.return, data, doc.url) if doc.return
415
+ doc.children = autolink(doc.children, data)
416
+ doc
417
+ end
418
+ end
419
+
420
+ def self.reject_objc_enum_typedefs(docs)
421
+ enums = docs.flat_map do |doc|
422
+ doc.children.select { |child| child.type.objc_enum? }.map(&:name)
423
+ end
424
+ docs.map do |doc|
425
+ doc.children.reject! do |child|
426
+ child.type.objc_typedef? && enums.include?(child.name)
427
+ end
428
+ doc
429
+ end
430
+ end
431
+
312
432
  # Parse sourcekitten STDOUT output as JSON
313
433
  # @return [Hash] structured docs
314
434
  def self.parse(sourcekitten_output, min_acl, skip_undocumented)
@@ -318,10 +438,16 @@ module Jazzy
318
438
  docs = make_source_declarations(sourcekitten_json)
319
439
  docs = deduplicate_declarations(docs)
320
440
  docs = group_docs(docs)
321
- # Remove top-level enum cases because it means they have an ACL lower
322
- # than min_acl
323
- docs = docs.reject { |doc| doc.type.enum_element? }
324
- [make_doc_urls(docs, []), doc_coverage, @undocumented_tokens]
441
+ if Config.instance.objc_mode
442
+ docs = reject_objc_enum_typedefs(docs)
443
+ else
444
+ # Remove top-level enum cases because it means they have an ACL lower
445
+ # than min_acl
446
+ docs = docs.reject { |doc| doc.type.swift_enum_element? }
447
+ end
448
+ docs = make_doc_urls(docs, [])
449
+ docs = autolink(docs, names_and_urls(docs.flat_map(&:children)))
450
+ [docs, doc_coverage, @undocumented_tokens]
325
451
  end
326
452
  end
327
453
  end
@@ -10,7 +10,7 @@
10
10
  </head>
11
11
  <body>
12
12
  {{#dash_type}}
13
- <a name="//apple_ref/swift/{{dash_type}}/{{name}}" class="dashAnchor"></a>
13
+ <a name="//apple_ref/{{language_stub}}/{{dash_type}}/{{name}}" class="dashAnchor"></a>
14
14
  {{/dash_type}}
15
15
  <a title="{{name}} {{kind}} Reference"></a>
16
16
  {{> header}}
@@ -29,7 +29,7 @@
29
29
  {{^hide_name}}<h1>{{name}}</h1>{{/hide_name}}
30
30
  {{#declaration}}
31
31
  <div class="declaration">
32
- <div class="Swift">
32
+ <div class="language">
33
33
  {{{declaration}}}
34
34
  </div>
35
35
  </div>
@@ -2,7 +2,7 @@
2
2
  <ul class="nav-groups">
3
3
  {{#structure}}
4
4
  <li class="nav-group-name">
5
- <a href="{{path_to_root}}{{section}}.html">{{section}}</a>
5
+ <a href="{{path_to_root}}{{section}}.html">{{section}}</a>
6
6
  <ul class="nav-group-tasks">
7
7
  {{#children}}
8
8
  <li class="nav-group-task">
@@ -1,12 +1,12 @@
1
1
  <div class="task-group">
2
2
  {{#name}}
3
- <div class="task-name-container">
4
- <a name="/{{uid}}"></a>
5
- <a name="//apple_ref/swift/Section/{{name}}" class="dashAnchor"></a>
6
- <a href="#/{{uid}}">
7
- <h3 class="section-name">{{name}}</h3>
8
- </a>
9
- </div>
3
+ <div class="task-name-container">
4
+ <a name="/{{uid}}"></a>
5
+ <a name="//apple_ref/{{language_stub}}/Section/{{name}}" class="dashAnchor"></a>
6
+ <a href="#/{{uid}}">
7
+ <h3 class="section-name">{{name}}</h3>
8
+ </a>
9
+ </div>
10
10
  {{/name}}
11
11
  <ul>
12
12
  {{#items}}
@@ -14,9 +14,19 @@
14
14
  <div>
15
15
  <code>
16
16
  <a name="/{{usr}}"></a>
17
- <a name="//apple_ref/swift/{{dash_type}}/{{name}}" class="dashAnchor"></a>
17
+ <a name="//apple_ref/{{language_stub}}/{{dash_type}}/{{name}}" class="dashAnchor"></a>
18
18
  <a class="token" href="#/{{usr}}">{{name}}</a>
19
19
  </code>
20
+ {{#default_impl_abstract}}
21
+ <span class="declaration-note">
22
+ Default implementation
23
+ </span>
24
+ {{/default_impl_abstract}}
25
+ {{#from_protocol_extension}}
26
+ <span class="declaration-note">
27
+ Extension method
28
+ </span>
29
+ {{/from_protocol_extension}}
20
30
  </div>
21
31
  <div class="height-container">
22
32
  <div class="pointer-container"></div>
@@ -30,11 +40,17 @@
30
40
  {{/url}}
31
41
  </div>
32
42
  {{/abstract}}
43
+ {{#default_impl_abstract}}
44
+ <h4>Default Implementation</h4>
45
+ <div class="default_impl abstract">
46
+ {{{default_impl_abstract}}}
47
+ </div>
48
+ {{/default_impl_abstract}}
33
49
  {{#declaration}}
34
50
  <div class="declaration">
35
51
  <h4>Declaration</h4>
36
- <div class="Swift">
37
- <p class="aside-title">Swift</p>
52
+ <div class="language">
53
+ <p class="aside-title">{{language}}</p>
38
54
  {{{declaration}}}
39
55
  </div>
40
56
  </div>
@@ -59,7 +59,7 @@ CLIntegracon.configure do |c|
59
59
  # Ignore certain OSX files
60
60
  c.ignores '.DS_Store'
61
61
  c.ignores '.git'
62
- c.ignores /^(?!(docs\/|execution_output.txt))/
62
+ c.ignores %r{^(?!(docs/|execution_output.txt))}
63
63
  c.ignores '*.tgz'
64
64
 
65
65
  # Transform produced databases to csv
@@ -75,7 +75,6 @@ CLIntegracon.configure do |c|
75
75
  end
76
76
 
77
77
  describe_cli 'jazzy' do
78
-
79
78
  subject do |s|
80
79
  s.executable = "ruby #{ROOT + 'bin/jazzy'}"
81
80
  s.environment_vars = {
@@ -105,36 +104,13 @@ describe_cli 'jazzy' do
105
104
  '--swift-version=1.2'
106
105
  end
107
106
 
108
- describe 'Creates Realm Swift docs' do
109
- realm_version = ''
110
- dir = ROOT + 'spec/integration_specs/document_realm_swift1.2/before'
111
- Dir.chdir(dir) do
112
- realm_version = `./build.sh get-version`.chomp
113
- `REALM_SWIFT_VERSION=1.2 ./build.sh set-swift-version`
114
- end
115
- behaves_like cli_spec 'document_realm_swift1.2',
116
- '--author Realm ' \
117
- '--author_url "https://realm.io" ' \
118
- '--github_url ' \
119
- 'https://github.com/realm/realm-cocoa ' \
120
- '--github-file-prefix https://github.com/realm/' \
121
- "realm-cocoa/tree/v#{realm_version} " \
122
- '--module RealmSwift ' \
123
- "--module-version #{realm_version} " \
124
- '--root-url https://realm.io/docs/swift/' \
125
- "#{realm_version}/api/ " \
126
- '--xcodebuild-arguments ' \
127
- '-project,RealmSwift.xcodeproj,-dry-run ' \
128
- '--swift-version=1.2'
129
- end
130
-
131
107
  describe 'Creates docs for a podspec with dependencies and subspecs' do
132
108
  behaves_like cli_spec 'document_moya_podspec',
133
109
  '--podspec=Moya.podspec --swift-version=1.2'
134
110
  end
135
111
  end if !travis_swift || travis_swift == '1.2'
136
112
 
137
- describe 'jazzy swift 2.0' do
113
+ describe 'jazzy swift 2.1' do
138
114
  describe 'Creates docs with a module name, author name, project URL, ' \
139
115
  'xcodebuild options, and github info' do
140
116
  behaves_like cli_spec 'document_alamofire',
@@ -143,8 +119,8 @@ describe_cli 'jazzy' do
143
119
  '-x -project,Alamofire.xcodeproj,-dry-run ' \
144
120
  '-g https://github.com/Alamofire/Alamofire ' \
145
121
  '--github-file-prefix https://github.com/' \
146
- 'Alamofire/Alamofire/blob/swift-2.0 ' \
147
- '--module-version swift-2.0 ' \
122
+ 'Alamofire/Alamofire/blob/3.1.1 ' \
123
+ '--module-version 3.1.1 ' \
148
124
  '-r http://static.realm.io/jazzy_demo/Alamofire/ ' \
149
125
  '--skip-undocumented'
150
126
  end
@@ -153,7 +129,7 @@ describe_cli 'jazzy' do
153
129
  realm_version = ''
154
130
  Dir.chdir(ROOT + 'spec/integration_specs/document_realm_swift/before') do
155
131
  realm_version = `./build.sh get-version`.chomp
156
- `REALM_SWIFT_VERSION=2.0 ./build.sh set-swift-version`
132
+ `REALM_SWIFT_VERSION=2.1 ./build.sh set-swift-version`
157
133
  end
158
134
  behaves_like cli_spec 'document_realm_swift',
159
135
  '--author Realm ' \
@@ -167,18 +143,37 @@ describe_cli 'jazzy' do
167
143
  '--root-url https://realm.io/docs/swift/' \
168
144
  "#{realm_version}/api/ " \
169
145
  '--xcodebuild-arguments ' \
170
- '-project,RealmSwift.xcodeproj,-dry-run ' \
171
- '--template-directory "docs/templates/swift" '
146
+ '-scheme,RealmSwift ' \
147
+ '--template-directory docs/templates'
148
+ end
149
+
150
+ describe 'Creates Realm Objective-C docs' do
151
+ realm_version = ''
152
+ relative_path = 'spec/integration_specs/document_realm_objc/before'
153
+ Dir.chdir(ROOT + relative_path) do
154
+ realm_version = `./build.sh get-version`.chomp
155
+ # jazzy will fail if it can't find all public header files
156
+ `touch Realm/RLMPlatform.h`
157
+ end
158
+ behaves_like cli_spec 'document_realm_objc',
159
+ '--objc ' \
160
+ '--author Realm ' \
161
+ '--author_url "https://realm.io" ' \
162
+ '--github_url ' \
163
+ 'https://github.com/realm/realm-cocoa ' \
164
+ '--github-file-prefix https://github.com/realm/' \
165
+ "realm-cocoa/tree/v#{realm_version} " \
166
+ '--module Realm ' \
167
+ "--module-version #{realm_version} " \
168
+ '--root-url https://realm.io/docs/objc/' \
169
+ "#{realm_version}/api/ " \
170
+ '--umbrella-header Realm/Realm.h ' \
171
+ '--framework-root . ' \
172
+ '--template-directory docs/templates'
172
173
  end
173
174
 
174
175
  describe 'Creates docs for Swift project with a variety of contents' do
175
- behaves_like cli_spec 'misc_jazzy_features',
176
- '-m MiscJazzyFeatures -a Realm ' \
177
- '-u https://github.com/realm/jazzy ' \
178
- '-g https://github.com/realm/jazzy ' \
179
- '-x -dry-run ' \
180
- '--min-acl private ' \
181
- '--hide-documentation-coverage'
176
+ behaves_like cli_spec 'misc_jazzy_features', '-x -dry-run'
182
177
  end
183
- end if !travis_swift || travis_swift == '2.0'
178
+ end if !travis_swift || travis_swift == '2.1'
184
179
  end