jazzy 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|