jazzy 0.8.3 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +33 -0
- data/Gemfile.lock +14 -6
- data/README.md +42 -7
- data/bin/sourcekitten +0 -0
- data/circle.yml +1 -1
- data/lib/jazzy/config.rb +3 -3
- data/lib/jazzy/doc_builder.rb +9 -3
- data/lib/jazzy/gem_version.rb +1 -1
- data/lib/jazzy/podspec_documenter.rb +9 -3
- data/lib/jazzy/source_declaration.rb +3 -1
- data/lib/jazzy/source_declaration/type.rb +33 -19
- data/lib/jazzy/sourcekitten.rb +20 -6
- data/lib/jazzy/themes/apple/templates/nav.mustache +1 -1
- data/lib/jazzy/themes/fullwidth/templates/nav.mustache +1 -1
- data/spec/integration_spec.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 521ac7a49708dd60f61fd8a5be45a0cabeadab01
|
4
|
+
data.tar.gz: d92a5318703bcdc5b70a30b02147c1b6318a5207
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fbcffeba3be993af19ca581792fc18c2cef463df918ab0f0f7f5f76b04a09494d7dd7066c1b4a3a3125102178660cc4278f985d2becf2c9974eb32340c14004
|
7
|
+
data.tar.gz: 54f4db86a1b320ec74f98992c26757a4dc5fdd25e350942678d51bc0b15ab6910e6b0d2e3a8f5bd2d2f2eb172244039233ecbdf255c5bfecf0e1bd0ba6aa64f7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,36 @@
|
|
1
|
+
## 0.8.4
|
2
|
+
|
3
|
+
##### Breaking
|
4
|
+
|
5
|
+
* None.
|
6
|
+
|
7
|
+
##### Enhancements
|
8
|
+
|
9
|
+
* Align jazzy terminology with Apple usage.
|
10
|
+
[Xiaodi Wu](https://github.com/xwu)
|
11
|
+
[John Fairhurst](https://github.com/johnfairh)
|
12
|
+
|
13
|
+
* Add `url` attribute that can be more accurate than `{{section}}.html` as a URL
|
14
|
+
in custom templates.
|
15
|
+
[John Fairhurst](https://github.com/johnfairh)
|
16
|
+
|
17
|
+
##### Bug Fixes
|
18
|
+
|
19
|
+
* Fix crash when specifying `swift_version` as a floating point value in
|
20
|
+
`.jazzy.yaml` rather than a string.
|
21
|
+
[JP Simard](https://github.com/jpsim)
|
22
|
+
[#860](https://github.com/realm/jazzy/issues/860)
|
23
|
+
|
24
|
+
* Autolink from parameter documentation and from external markdown documents
|
25
|
+
including README. Autolink to symbols containing & < >.
|
26
|
+
[John Fairhurst](https://github.com/johnfairh)
|
27
|
+
[#715](https://github.com/realm/jazzy/issues/715)
|
28
|
+
[#789](https://github.com/realm/jazzy/issues/789)
|
29
|
+
[#805](https://github.com/realm/jazzy/issues/805)
|
30
|
+
|
31
|
+
* Fix Swift 4 declarations containing ampersands (`&`) being truncated.
|
32
|
+
[JP Simard](https://github.com/jpsim)
|
33
|
+
|
1
34
|
## 0.8.3
|
2
35
|
|
3
36
|
##### Breaking
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jazzy (0.8.
|
4
|
+
jazzy (0.8.4)
|
5
5
|
cocoapods (~> 1.0)
|
6
6
|
mustache (~> 0.99)
|
7
7
|
open4
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
remote: https://rubygems.org/
|
16
16
|
specs:
|
17
17
|
CFPropertyList (2.3.5)
|
18
|
-
activesupport (4.2.
|
18
|
+
activesupport (4.2.9)
|
19
19
|
i18n (~> 0.7)
|
20
20
|
minitest (~> 5.1)
|
21
21
|
thread_safe (~> 0.3, >= 0.3.4)
|
@@ -88,16 +88,17 @@ GEM
|
|
88
88
|
multipart-post (>= 1.2, < 3)
|
89
89
|
faraday-http-cache (1.3.1)
|
90
90
|
faraday (~> 0.8)
|
91
|
+
ffi (1.9.18)
|
91
92
|
fourflusher (2.0.1)
|
92
93
|
fuzzy_match (2.0.4)
|
93
94
|
gh_inspector (1.0.3)
|
94
95
|
git (1.3.0)
|
95
96
|
hashdiff (0.3.4)
|
96
|
-
i18n (0.8.
|
97
|
+
i18n (0.8.6)
|
97
98
|
kramdown (1.13.2)
|
98
99
|
liferaft (0.0.6)
|
99
100
|
metaclass (0.0.4)
|
100
|
-
minitest (5.10.
|
101
|
+
minitest (5.10.3)
|
101
102
|
mocha (1.2.1)
|
102
103
|
metaclass (~> 0.0.1)
|
103
104
|
mocha-on-bacon (0.2.3)
|
@@ -120,6 +121,9 @@ GEM
|
|
120
121
|
rainbow (2.2.2)
|
121
122
|
rake
|
122
123
|
rake (10.5.0)
|
124
|
+
rb-fsevent (0.10.2)
|
125
|
+
rb-inotify (0.9.10)
|
126
|
+
ffi (>= 0.5.0, < 2)
|
123
127
|
redcarpet (3.4.0)
|
124
128
|
rouge (1.11.1)
|
125
129
|
rubocop (0.48.1)
|
@@ -131,7 +135,11 @@ GEM
|
|
131
135
|
ruby-macho (1.1.0)
|
132
136
|
ruby-progressbar (1.8.1)
|
133
137
|
safe_yaml (1.0.4)
|
134
|
-
sass (3.
|
138
|
+
sass (3.5.1)
|
139
|
+
sass-listen (~> 4.0.0)
|
140
|
+
sass-listen (4.0.0)
|
141
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
142
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
135
143
|
sawyer (0.8.1)
|
136
144
|
addressable (>= 2.3.5, < 2.6)
|
137
145
|
faraday (~> 0.8, < 1.0)
|
@@ -172,4 +180,4 @@ DEPENDENCIES
|
|
172
180
|
webmock
|
173
181
|
|
174
182
|
BUNDLED WITH
|
175
|
-
1.
|
183
|
+
1.15.4
|
data/README.md
CHANGED
@@ -49,12 +49,22 @@ all available options, run `jazzy --help config`.
|
|
49
49
|
|
50
50
|
### Supported keywords
|
51
51
|
|
52
|
-
Swift
|
53
|
-
For a complete list and examples, see Erica Sadun's post on [*Swift header documentation in Xcode 7*](http://ericasadun.com/2015/06/14/swift-header-documentation-in-xcode-7/)
|
54
|
-
|
52
|
+
Swift documentation is written in markdown and supports a number of special keywords.
|
53
|
+
For a complete list and examples, see Erica Sadun's post on [*Swift header documentation in Xcode 7*](http://ericasadun.com/2015/06/14/swift-header-documentation-in-xcode-7/),
|
54
|
+
her [book on Swift Documentation Markup](https://itunes.apple.com/us/book/swift-documentation-markup/id1049010423), and the [Xcode Markup Formatting Reference](https://developer.apple.com/library/content/documentation/Xcode/Reference/xcode_markup_formatting_ref/).
|
55
55
|
|
56
56
|
For Objective-C documentation the same keywords are supported, but note that the format
|
57
|
-
is slightly different. In Swift you would write `- returns:`, but in Objective-C you write `@return`. See Apple's [*HeaderDoc User Guide*](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/tags/tags.html) for more details. **Note: `jazzy` currently does not support _all_ Objective-C keywords listed in this document.**
|
57
|
+
is slightly different. In Swift you would write `- returns:`, but in Objective-C you write `@return`. See Apple's [*HeaderDoc User Guide*](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/tags/tags.html) for more details. **Note: `jazzy` currently does not support _all_ Objective-C keywords listed in this document, only @param, @return, @warning, @see, and @note.**
|
58
|
+
|
59
|
+
Jazzy can also generate cross-references within your documentation. A symbol name in
|
60
|
+
backticks generates a link, for example:
|
61
|
+
* \`MyClass\` - a link to documentation for `MyClass`.
|
62
|
+
* \`MyClass.method(param1:)\` - a link to documentation for that method.
|
63
|
+
* \`MyClass.method(...)\` - shortcut syntax for the same thing.
|
64
|
+
* \`method(...)\` - shortcut syntax to link to `method` from the documentation of another
|
65
|
+
method or property in the same class.
|
66
|
+
* \`[MyClass method1]\` - a link to an Objective-C method.
|
67
|
+
* \`-[MyClass method2:param1]\` - a link to another Objective-C method.
|
58
68
|
|
59
69
|
### Swift
|
60
70
|
|
@@ -171,15 +181,40 @@ This is very helpful when using `custom_categories` for grouping types and inclu
|
|
171
181
|
|
172
182
|
For an example of a project using both `--documentation` and `--abstract` see: [http://reswift.github.io/ReSwift/](http://reswift.github.io/ReSwift/)
|
173
183
|
|
184
|
+
### Controlling what is documented
|
185
|
+
|
186
|
+
In Swift mode, Jazzy by default documents only `public` and `open` declarations. To
|
187
|
+
include declarations with a lower access level, set the `--min-acl` flag to `internal`,
|
188
|
+
`fileprivate`, or `private`.
|
189
|
+
|
190
|
+
In Objective-C mode, Jazzy documents all declarations found in the `--umbrella-header`
|
191
|
+
header file and any other header files included by it.
|
192
|
+
|
193
|
+
You can then prevent some of these declarations from being documented using `--exclude`
|
194
|
+
or `:nodoc:`.
|
195
|
+
|
196
|
+
The `--exclude` flag lists source files to omit from the documentation. Entries in the
|
197
|
+
list can be absolute pathnames beginning with `/` or relative pathnames. Relative
|
198
|
+
pathnames are interpreted relative to the directory from where you run `jazzy` or, if the
|
199
|
+
exclude flag is set in the config file, relative to the directory containing the config
|
200
|
+
file. Entries in the list can match multiple files using `*` to match any number of
|
201
|
+
characters including `/`. For example:
|
202
|
+
* `jazzy --exclude=/Users/fred/project/Sources/Secret.swift` -- exclude a specific file
|
203
|
+
* `jazzy --exclude=/*/Internal*` -- exclude all files with names that begin with *Internal*
|
204
|
+
and any files under any directory with a name beginning *Internal*.
|
205
|
+
* `jazzy --exclude=Impl1/*,Impl2/*` -- exclude all files under the directories *Impl1* and
|
206
|
+
*Impl2* found in the current directory.
|
207
|
+
|
208
|
+
Declarations with a documentation comment containing `:nodoc:` are excluded from the
|
209
|
+
documentation.
|
210
|
+
|
174
211
|
## Troubleshooting
|
175
212
|
|
176
213
|
#### Swift
|
177
214
|
|
178
215
|
**Only extensions are listed in the documentation?**
|
179
216
|
|
180
|
-
|
181
|
-
for declarations with a lower accessibility level (`internal` or `private`), please
|
182
|
-
set the `--min-acl` flag to `internal` or `private`.
|
217
|
+
Check the `--min-acl` setting -- see [above](#controlling-what-is-documented).
|
183
218
|
|
184
219
|
## Development
|
185
220
|
|
data/bin/sourcekitten
CHANGED
Binary file
|
data/circle.yml
CHANGED
data/lib/jazzy/config.rb
CHANGED
@@ -150,8 +150,8 @@ module Jazzy
|
|
150
150
|
parse: ->(sd) { expand_path(sd) }
|
151
151
|
|
152
152
|
config_attr :excluded_files,
|
153
|
-
command_line: ['-e', '--exclude
|
154
|
-
description: '
|
153
|
+
command_line: ['-e', '--exclude filepath1,filepath2,…filepathN', Array],
|
154
|
+
description: 'Source file pathnames to be excluded from documentation. '\
|
155
155
|
'Supports wildcards.',
|
156
156
|
default: [],
|
157
157
|
parse: ->(files) do
|
@@ -162,7 +162,7 @@ module Jazzy
|
|
162
162
|
command_line: '--swift-version VERSION',
|
163
163
|
default: nil,
|
164
164
|
parse: ->(v) do
|
165
|
-
return nil if v.empty?
|
165
|
+
return nil if v.to_s.empty?
|
166
166
|
raise 'jazzy only supports Swift 2.0 or later.' if v.to_f < 2
|
167
167
|
v
|
168
168
|
end
|
data/lib/jazzy/doc_builder.rb
CHANGED
@@ -46,6 +46,7 @@ module Jazzy
|
|
46
46
|
end
|
47
47
|
{
|
48
48
|
section: doc.name,
|
49
|
+
url: doc.url,
|
49
50
|
children: children,
|
50
51
|
}
|
51
52
|
end
|
@@ -208,6 +209,11 @@ module Jazzy
|
|
208
209
|
end
|
209
210
|
end
|
210
211
|
|
212
|
+
def self.render(doc_model, markdown)
|
213
|
+
html = Markdown.render(markdown)
|
214
|
+
SourceKitten.autolink_document(html, doc_model)
|
215
|
+
end
|
216
|
+
|
211
217
|
# Build Mustache document from a markdown source file
|
212
218
|
# @param [Config] options Build options
|
213
219
|
# @param [Hash] doc_model Parsed doc. @see SourceKitten.parse
|
@@ -218,7 +224,7 @@ module Jazzy
|
|
218
224
|
doc = Doc.new # Mustache model instance
|
219
225
|
name = doc_model.name == 'index' ? source_module.name : doc_model.name
|
220
226
|
doc[:name] = name
|
221
|
-
doc[:overview] =
|
227
|
+
doc[:overview] = render(doc_model, doc_model.content(source_module))
|
222
228
|
doc[:custom_head] = Config.instance.custom_head
|
223
229
|
doc[:disable_search] = Config.instance.disable_search
|
224
230
|
doc[:doc_coverage] = source_module.doc_coverage unless
|
@@ -230,7 +236,7 @@ module Jazzy
|
|
230
236
|
doc[:dash_url] = source_module.dash_url
|
231
237
|
doc[:path_to_root] = path_to_root
|
232
238
|
doc[:hide_name] = true
|
233
|
-
doc.render
|
239
|
+
doc.render.gsub(ELIDED_AUTOLINK_TOKEN, path_to_root)
|
234
240
|
end
|
235
241
|
|
236
242
|
# Returns the appropriate color for the provided percentage,
|
@@ -365,7 +371,7 @@ module Jazzy
|
|
365
371
|
overview = (doc_model.abstract || '') + (doc_model.discussion || '')
|
366
372
|
alternative_abstract = doc_model.alternative_abstract
|
367
373
|
if alternative_abstract
|
368
|
-
overview =
|
374
|
+
overview = render(doc_model, alternative_abstract) + overview
|
369
375
|
end
|
370
376
|
|
371
377
|
doc = Doc.new # Mustache model instance
|
data/lib/jazzy/gem_version.rb
CHANGED
@@ -2,6 +2,7 @@ require 'tmpdir'
|
|
2
2
|
require 'json'
|
3
3
|
|
4
4
|
module Jazzy
|
5
|
+
# rubocop:disable Metrics/ClassLength
|
5
6
|
class PodspecDocumenter
|
6
7
|
attr_reader :podspec
|
7
8
|
|
@@ -14,7 +15,8 @@ module Jazzy
|
|
14
15
|
def sourcekitten_output(config)
|
15
16
|
installation_root = Pathname(Dir.mktmpdir(['jazzy', podspec.name]))
|
16
17
|
installation_root.rmtree if installation_root.exist?
|
17
|
-
Pod::Config.instance.with_changes(installation_root: installation_root
|
18
|
+
Pod::Config.instance.with_changes(installation_root: installation_root,
|
19
|
+
verbose: false) do
|
18
20
|
sandbox = Pod::Sandbox.new(Pod::Config.instance.sandbox_root)
|
19
21
|
installer = Pod::Installer.new(sandbox, podfile)
|
20
22
|
installer.install!
|
@@ -25,7 +27,7 @@ module Jazzy
|
|
25
27
|
|
26
28
|
targets.map do |t|
|
27
29
|
args = %W[doc --module-name #{podspec.module_name} -- -target #{t}]
|
28
|
-
swift_version = (config.swift_version || '
|
30
|
+
swift_version = (config.swift_version || '4')[0] + '.0'
|
29
31
|
args << "SWIFT_VERSION=\"#{swift_version}\""
|
30
32
|
SourceKitten.run_sourcekitten(args)
|
31
33
|
end
|
@@ -117,8 +119,12 @@ module Jazzy
|
|
117
119
|
ss.available_platforms.each do |p|
|
118
120
|
# Travis builds take too long when building docs for all available
|
119
121
|
# platforms for the Moya integration spec, so we just document OSX.
|
122
|
+
# Also Moya's RxSwift subspec doesn't yet support Swift 4, so skip
|
123
|
+
# that too while we're at it.
|
120
124
|
# TODO: remove once jazzy is fast enough.
|
121
|
-
|
125
|
+
if ENV['JAZZY_INTEGRATION_SPECS']
|
126
|
+
next if (p.name != :osx) || (ss.name == 'Moya/RxSwift')
|
127
|
+
end
|
122
128
|
target("Jazzy-#{ss.name.gsub('/', '__')}-#{p.name}") do
|
123
129
|
use_frameworks!
|
124
130
|
platform p.name, p.deployment_target
|
@@ -76,6 +76,7 @@ module Jazzy
|
|
76
76
|
attr_accessor :start_line
|
77
77
|
attr_accessor :end_line
|
78
78
|
attr_accessor :nav_order
|
79
|
+
attr_accessor :url_name
|
79
80
|
|
80
81
|
def alternative_abstract
|
81
82
|
if file = alternative_abstract_file
|
@@ -85,7 +86,8 @@ module Jazzy
|
|
85
86
|
|
86
87
|
def alternative_abstract_file
|
87
88
|
abstract_glob.select do |f|
|
88
|
-
|
89
|
+
# allow Structs.md or Structures.md
|
90
|
+
[name, url_name].include?(File.basename(f).split('.').first)
|
89
91
|
end.first
|
90
92
|
end
|
91
93
|
|
@@ -23,6 +23,11 @@ module Jazzy
|
|
23
23
|
@type && @type[:jazzy]
|
24
24
|
end
|
25
25
|
|
26
|
+
# name to use for type subdirectory in URLs for back-compatibility
|
27
|
+
def url_name
|
28
|
+
@type && (@type[:url] || @type[:jazzy])
|
29
|
+
end
|
30
|
+
|
26
31
|
def name_controlled_manually?
|
27
32
|
!kind.start_with?('source')
|
28
33
|
# "'source'.lang..." for Swift
|
@@ -34,6 +39,10 @@ module Jazzy
|
|
34
39
|
name.pluralize
|
35
40
|
end
|
36
41
|
|
42
|
+
def plural_url_name
|
43
|
+
url_name.pluralize
|
44
|
+
end
|
45
|
+
|
37
46
|
def mark?
|
38
47
|
kind == 'source.lang.swift.syntaxtype.comment.mark' ||
|
39
48
|
kind == 'sourcekitten.source.lang.objc.mark'
|
@@ -137,11 +146,12 @@ module Jazzy
|
|
137
146
|
dash: 'Constant',
|
138
147
|
}.freeze,
|
139
148
|
'sourcekitten.source.lang.objc.decl.enum' => {
|
140
|
-
jazzy: '
|
149
|
+
jazzy: 'Enumeration',
|
150
|
+
url: 'Enum',
|
141
151
|
dash: 'Enum',
|
142
152
|
}.freeze,
|
143
153
|
'sourcekitten.source.lang.objc.decl.enumcase' => {
|
144
|
-
jazzy: '
|
154
|
+
jazzy: 'Enumeration Case',
|
145
155
|
dash: 'Case',
|
146
156
|
}.freeze,
|
147
157
|
'sourcekitten.source.lang.objc.decl.initializer' => {
|
@@ -177,7 +187,8 @@ module Jazzy
|
|
177
187
|
dash: 'Function',
|
178
188
|
}.freeze,
|
179
189
|
'sourcekitten.source.lang.objc.decl.struct' => {
|
180
|
-
jazzy: '
|
190
|
+
jazzy: 'Structure',
|
191
|
+
url: 'Struct',
|
181
192
|
dash: 'Struct',
|
182
193
|
}.freeze,
|
183
194
|
'sourcekitten.source.lang.objc.decl.field' => {
|
@@ -185,7 +196,7 @@ module Jazzy
|
|
185
196
|
dash: 'Field',
|
186
197
|
}.freeze,
|
187
198
|
'sourcekitten.source.lang.objc.decl.ivar' => {
|
188
|
-
jazzy: '
|
199
|
+
jazzy: 'Instance Variable',
|
189
200
|
dash: 'Ivar',
|
190
201
|
}.freeze,
|
191
202
|
'sourcekitten.source.lang.objc.module.import' => {
|
@@ -195,27 +206,27 @@ module Jazzy
|
|
195
206
|
|
196
207
|
# Swift
|
197
208
|
'source.lang.swift.decl.function.accessor.address' => {
|
198
|
-
jazzy: '
|
209
|
+
jazzy: 'Addressor',
|
199
210
|
dash: 'Function',
|
200
211
|
}.freeze,
|
201
212
|
'source.lang.swift.decl.function.accessor.didset' => {
|
202
|
-
jazzy: '
|
213
|
+
jazzy: 'didSet Observer',
|
203
214
|
dash: 'Function',
|
204
215
|
}.freeze,
|
205
216
|
'source.lang.swift.decl.function.accessor.getter' => {
|
206
|
-
jazzy: 'Getter
|
217
|
+
jazzy: 'Getter',
|
207
218
|
dash: 'Function',
|
208
219
|
}.freeze,
|
209
220
|
'source.lang.swift.decl.function.accessor.mutableaddress' => {
|
210
|
-
jazzy: 'Mutable
|
221
|
+
jazzy: 'Mutable Addressor',
|
211
222
|
dash: 'Function',
|
212
223
|
}.freeze,
|
213
224
|
'source.lang.swift.decl.function.accessor.setter' => {
|
214
|
-
jazzy: 'Setter
|
225
|
+
jazzy: 'Setter',
|
215
226
|
dash: 'Function',
|
216
227
|
}.freeze,
|
217
228
|
'source.lang.swift.decl.function.accessor.willset' => {
|
218
|
-
jazzy: '
|
229
|
+
jazzy: 'willSet Observer',
|
219
230
|
dash: 'Function',
|
220
231
|
}.freeze,
|
221
232
|
'source.lang.swift.decl.function.operator' => {
|
@@ -247,11 +258,11 @@ module Jazzy
|
|
247
258
|
dash: 'Class',
|
248
259
|
}.freeze,
|
249
260
|
'source.lang.swift.decl.function.constructor' => {
|
250
|
-
jazzy: '
|
261
|
+
jazzy: 'Initializer',
|
251
262
|
dash: 'Constructor',
|
252
263
|
}.freeze,
|
253
264
|
'source.lang.swift.decl.function.destructor' => {
|
254
|
-
jazzy: '
|
265
|
+
jazzy: 'Deinitializer',
|
255
266
|
dash: 'Method',
|
256
267
|
}.freeze,
|
257
268
|
'source.lang.swift.decl.var.global' => {
|
@@ -259,15 +270,16 @@ module Jazzy
|
|
259
270
|
dash: 'Global',
|
260
271
|
}.freeze,
|
261
272
|
'source.lang.swift.decl.enumcase' => {
|
262
|
-
jazzy: '
|
273
|
+
jazzy: 'Enumeration Case',
|
263
274
|
dash: 'Case',
|
264
275
|
}.freeze,
|
265
276
|
'source.lang.swift.decl.enumelement' => {
|
266
|
-
jazzy: '
|
277
|
+
jazzy: 'Enumeration Element',
|
267
278
|
dash: 'Element',
|
268
279
|
}.freeze,
|
269
280
|
'source.lang.swift.decl.enum' => {
|
270
|
-
jazzy: '
|
281
|
+
jazzy: 'Enumeration',
|
282
|
+
url: 'Enum',
|
271
283
|
dash: 'Enum',
|
272
284
|
}.freeze,
|
273
285
|
'source.lang.swift.decl.extension' => {
|
@@ -279,7 +291,7 @@ module Jazzy
|
|
279
291
|
dash: 'Extension',
|
280
292
|
}.freeze,
|
281
293
|
'source.lang.swift.decl.extension.enum' => {
|
282
|
-
jazzy: '
|
294
|
+
jazzy: 'Enumeration Extension',
|
283
295
|
dash: 'Extension',
|
284
296
|
}.freeze,
|
285
297
|
'source.lang.swift.decl.extension.protocol' => {
|
@@ -287,7 +299,7 @@ module Jazzy
|
|
287
299
|
dash: 'Extension',
|
288
300
|
}.freeze,
|
289
301
|
'source.lang.swift.decl.extension.struct' => {
|
290
|
-
jazzy: '
|
302
|
+
jazzy: 'Structure Extension',
|
291
303
|
dash: 'Extension',
|
292
304
|
}.freeze,
|
293
305
|
'source.lang.swift.decl.function.free' => {
|
@@ -323,7 +335,8 @@ module Jazzy
|
|
323
335
|
dash: 'Variable',
|
324
336
|
}.freeze,
|
325
337
|
'source.lang.swift.decl.struct' => {
|
326
|
-
jazzy: '
|
338
|
+
jazzy: 'Structure',
|
339
|
+
url: 'Struct',
|
327
340
|
dash: 'Struct',
|
328
341
|
}.freeze,
|
329
342
|
'source.lang.swift.decl.function.subscript' => {
|
@@ -331,7 +344,8 @@ module Jazzy
|
|
331
344
|
dash: 'Method',
|
332
345
|
}.freeze,
|
333
346
|
'source.lang.swift.decl.typealias' => {
|
334
|
-
jazzy: '
|
347
|
+
jazzy: 'Type Alias',
|
348
|
+
url: 'Typealias',
|
335
349
|
dash: 'Alias',
|
336
350
|
}.freeze,
|
337
351
|
'source.lang.swift.decl.generic_type_param' => {
|
data/lib/jazzy/sourcekitten.rb
CHANGED
@@ -2,6 +2,7 @@ require 'json'
|
|
2
2
|
require 'pathname'
|
3
3
|
require 'shellwords'
|
4
4
|
require 'xcinvoke'
|
5
|
+
require 'CGI'
|
5
6
|
|
6
7
|
require 'jazzy/config'
|
7
8
|
require 'jazzy/executable'
|
@@ -27,7 +28,7 @@ class String
|
|
27
28
|
gsub(autolink_regex(middle_regex, after_highlight)) do
|
28
29
|
original = Regexp.last_match(0)
|
29
30
|
start_tag, raw_name, end_tag = Regexp.last_match.captures
|
30
|
-
link_target = yield(raw_name)
|
31
|
+
link_target = yield(CGI.unescape_html(raw_name))
|
31
32
|
|
32
33
|
if link_target &&
|
33
34
|
!link_target.type.extension? &&
|
@@ -82,17 +83,19 @@ module Jazzy
|
|
82
83
|
children,
|
83
84
|
type_category_prefix + type.plural_name,
|
84
85
|
"The following #{type.plural_name.downcase} are available globally.",
|
86
|
+
type_category_prefix + type.plural_url_name,
|
85
87
|
)
|
86
88
|
end
|
87
89
|
[group.compact, docs]
|
88
90
|
end
|
89
91
|
|
90
|
-
def self.make_group(group, name, abstract)
|
92
|
+
def self.make_group(group, name, abstract, url_name = nil)
|
91
93
|
group.reject! { |doc| doc.name.empty? }
|
92
94
|
unless group.empty?
|
93
95
|
SourceDeclaration.new.tap do |sd|
|
94
96
|
sd.type = SourceDeclaration::Type.overview
|
95
97
|
sd.name = name
|
98
|
+
sd.url_name = url_name
|
96
99
|
sd.abstract = Markdown.render(abstract)
|
97
100
|
sd.children = group
|
98
101
|
end
|
@@ -100,7 +103,7 @@ module Jazzy
|
|
100
103
|
end
|
101
104
|
|
102
105
|
def self.sanitize_filename(doc)
|
103
|
-
unsafe_filename = doc.name
|
106
|
+
unsafe_filename = doc.url_name || doc.name
|
104
107
|
sanitzation_enabled = Config.instance.use_safe_filenames
|
105
108
|
if sanitzation_enabled && !doc.type.name_controlled_manually?
|
106
109
|
return CGI.escape(unsafe_filename).gsub('_', '%5F').tr('%', '_')
|
@@ -154,7 +157,8 @@ module Jazzy
|
|
154
157
|
top_level_decl = doc.namespace_path.first
|
155
158
|
if top_level_decl && top_level_decl.type && top_level_decl.type.name
|
156
159
|
# File program elements under top ancestor’s type (Struct, Class, etc.)
|
157
|
-
[top_level_decl.type.
|
160
|
+
[top_level_decl.type.plural_url_name] +
|
161
|
+
doc.namespace_ancestors.map(&:name)
|
158
162
|
else
|
159
163
|
# Categories live in their own directory
|
160
164
|
[]
|
@@ -294,7 +298,7 @@ module Jazzy
|
|
294
298
|
name: name,
|
295
299
|
discussion: discovered[name],
|
296
300
|
}
|
297
|
-
end
|
301
|
+
end.reject { |param| param[:discussion].nil? }
|
298
302
|
end
|
299
303
|
|
300
304
|
# rubocop:disable Metrics/CyclomaticComplexity
|
@@ -540,7 +544,7 @@ module Jazzy
|
|
540
544
|
return nil unless name_part
|
541
545
|
wildcard_expansion = Regexp.escape(name_part)
|
542
546
|
.gsub('\.\.\.', '[^)]*')
|
543
|
-
.gsub(
|
547
|
+
.gsub(/<.*>/, '')
|
544
548
|
whole_name_pat = /\A#{wildcard_expansion}\Z/
|
545
549
|
docs.find do |doc|
|
546
550
|
whole_name_pat =~ doc.name
|
@@ -602,11 +606,16 @@ module Jazzy
|
|
602
606
|
end
|
603
607
|
|
604
608
|
def self.autolink(docs, root_decls)
|
609
|
+
@autolink_root_decls = root_decls
|
605
610
|
docs.each do |doc|
|
606
611
|
doc.children = autolink(doc.children, root_decls)
|
607
612
|
|
608
613
|
doc.return = autolink_text(doc.return, doc, root_decls) if doc.return
|
609
614
|
doc.abstract = autolink_text(doc.abstract, doc, root_decls)
|
615
|
+
(doc.parameters || []).each do |param|
|
616
|
+
param[:discussion] =
|
617
|
+
autolink_text(param[:discussion], doc, root_decls)
|
618
|
+
end
|
610
619
|
|
611
620
|
if doc.declaration
|
612
621
|
doc.declaration = autolink_text(
|
@@ -622,6 +631,11 @@ module Jazzy
|
|
622
631
|
end
|
623
632
|
end
|
624
633
|
|
634
|
+
# For autolinking external markdown documents
|
635
|
+
def self.autolink_document(html, doc)
|
636
|
+
autolink_text(html, doc, @autolink_root_decls || [])
|
637
|
+
end
|
638
|
+
|
625
639
|
def self.reject_objc_types(docs)
|
626
640
|
enums = docs.map do |doc|
|
627
641
|
[doc, doc.children]
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<ul class="nav-groups">
|
3
3
|
{{#structure}}
|
4
4
|
<li class="nav-group-name">
|
5
|
-
<a class="nav-group-name-link" href="{{path_to_root}}{{
|
5
|
+
<a class="nav-group-name-link" href="{{path_to_root}}{{url}}">{{section}}</a>
|
6
6
|
<ul class="nav-group-tasks">
|
7
7
|
{{#children}}
|
8
8
|
<li class="nav-group-task">
|
data/spec/integration_spec.rb
CHANGED
@@ -106,7 +106,7 @@ describe_cli 'jazzy' do
|
|
106
106
|
s.replace_pattern /^[\d\s:.-]+ ruby\[\d+:\d+\] warning:.*$[\n]?/, ''
|
107
107
|
# Remove version numbers from CocoaPods dependencies
|
108
108
|
# to make specs resilient against dependecy updates.
|
109
|
-
s.replace_pattern
|
109
|
+
s.replace_pattern(/(Installing \w+ )\((.*)\)/, '\1(X.Y.Z)')
|
110
110
|
end
|
111
111
|
|
112
112
|
require 'shellwords'
|
@@ -208,8 +208,8 @@ describe_cli 'jazzy' do
|
|
208
208
|
behaves_like cli_spec 'document_siesta',
|
209
209
|
# Siesta already has Docs/
|
210
210
|
'--output api-docs',
|
211
|
-
# Use
|
212
|
-
'--swift-version='
|
211
|
+
# Use Swift 4 rather than the specified 3.0.2
|
212
|
+
'--swift-version=4'
|
213
213
|
end
|
214
214
|
|
215
215
|
describe 'Creates docs for Swift project with a variety of contents' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jazzy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Simard
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-09-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: cocoapods
|
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
259
|
version: '0'
|
260
260
|
requirements: []
|
261
261
|
rubyforge_project:
|
262
|
-
rubygems_version: 2.6.
|
262
|
+
rubygems_version: 2.6.13
|
263
263
|
signing_key:
|
264
264
|
specification_version: 4
|
265
265
|
summary: Soulful docs for Swift & Objective-C.
|