Skip to content

Commit

Permalink
Undocumented from obj instead of raw hash
Browse files Browse the repository at this point in the history
This commit does not change the output of the integration specs.
  • Loading branch information
pcantrell committed Jun 23, 2016
1 parent c60cb8c commit 9833412
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 53 deletions.
52 changes: 10 additions & 42 deletions lib/jazzy/doc_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -161,43 +161,15 @@ def self.relative_path_if_inside(path, base_path)
end
end

def self.decl_for_token(token)
if token['key.parsed_declaration']
token['key.parsed_declaration']
elsif token['key.annotated_decl']
token['key.annotated_decl'].gsub(/<[^>]+>/, '')
elsif token['key.name']
token['key.name']
else
'unknown declaration'
end
end

def self.filepath_for_token(token)
if ENV['JAZZY_INTEGRATION_SPECS']
Pathname.new(token['key.filepath']).basename.to_s
else
token['key.filepath']
end
end

def self.line_number_for_token(token)
if token['key.doc.line']
token['key.doc.line'] # Objective-C
else
token['key.parsed_scope.start'] # Swift
end
end

def self.warnings_for_tokens(tokens_by_file)
def self.warnings_for_declarations(decls_by_file)
warnings = []
tokens_by_file.each_key do |file|
tokens_by_file[file].each do |token|
decls_by_file.each_key do |file|
decls_by_file[file].each do |decl|
warnings << {
file: filepath_for_token(token),
line: line_number_for_token(token),
symbol: token['key.name'],
symbol_kind: token['key.kind'],
file: decl.file.basename,
line: decl.line || decl.start_line,
symbol: decl.name,
symbol_kind: decl.type.kind,
warning: 'undocumented',
}
end
Expand All @@ -207,15 +179,11 @@ def self.warnings_for_tokens(tokens_by_file)

def self.write_lint_report(undocumented, options)
(options.output + 'undocumented.json').open('w') do |f|
tokens_by_file = undocumented.group_by do |d|
if d['key.filepath']
Pathname.new(d['key.filepath']).basename.to_s
else
d['key.modulename'] || ''
end
decls_by_file = undocumented.group_by do |d|
d.file.basename
end

warnings = warnings_for_tokens(tokens_by_file)
warnings = warnings_for_declarations(decls_by_file)

lint_report = {
warnings: warnings,
Expand Down
1 change: 1 addition & 0 deletions lib/jazzy/source_declaration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def objc_category_name
attr_accessor :line
attr_accessor :column
attr_accessor :usr
attr_accessor :modulename
attr_accessor :name
attr_accessor :declaration
attr_accessor :other_language_declaration
Expand Down
23 changes: 13 additions & 10 deletions lib/jazzy/sourcekitten.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ module Jazzy
# This module interacts with the sourcekitten command-line executable
module SourceKitten
@documented_count = 0
@undocumented_tokens = []
@undocumented_decls = []

# Group root-level docs by custom categories (if any) and type
def self.group_docs(docs)
Expand Down Expand Up @@ -150,8 +150,8 @@ def self.run_sourcekitten(arguments)

def self.make_default_doc_info(declaration)
# @todo: Fix these
declaration.line = 0
declaration.column = 0
declaration.line = nil
declaration.column = nil
declaration.abstract = 'Undocumented'
declaration.parameters = []
declaration.children = []
Expand Down Expand Up @@ -186,7 +186,7 @@ def self.process_undocumented_token(doc, declaration)
filepath = doc['key.filepath']
objc = Config.instance.objc_mode
if filepath && (filepath.start_with?(source_directory) || objc)
@undocumented_tokens << doc
@undocumented_decls << declaration
end
return nil if !documented_child?(doc) && @skip_undocumented
make_default_doc_info(declaration)
Expand Down Expand Up @@ -222,12 +222,11 @@ def self.parameters(doc)
# rubocop:disable Metrics/PerceivedComplexity
def self.make_doc_info(doc, declaration)
return unless should_document?(doc)

unless doc['key.doc.full_as_xml']
return process_undocumented_token(doc, declaration)
end

declaration.line = doc['key.doc.line']
declaration.column = doc['key.doc.column']
declaration.declaration = Highlighter.highlight(
doc['key.parsed_declaration'] || doc['key.doc.declaration'],
Config.instance.objc_mode ? 'objc' : 'swift',
Expand All @@ -237,6 +236,7 @@ def self.make_doc_info(doc, declaration)
doc['key.swift_declaration'], 'swift'
)
end

declaration.abstract = Jazzy.markdown.render(doc['key.doc.comment'] || '')
declaration.discussion = ''
declaration.return = make_paragraphs(doc, 'key.doc.result_discussion')
Expand Down Expand Up @@ -291,11 +291,14 @@ def self.make_source_declarations(docs, parent = nil)
end

declaration.file = Pathname(doc['key.filepath']) if doc['key.filepath']
declaration.usr = doc['key.usr']
declaration.usr = doc['key.usr']
declaration.modulename = doc['key.modulename']
declaration.name = doc['key.name']
declaration.mark = current_mark
declaration.access_control_level =
SourceDeclaration::AccessControlLevel.from_doc(doc)
declaration.line = doc['key.doc.line']
declaration.column = doc['key.doc.column']
declaration.start_line = doc['key.parsed_scope.start']
declaration.end_line = doc['key.parsed_scope.end']

Expand All @@ -310,9 +313,9 @@ def self.make_source_declarations(docs, parent = nil)
# rubocop:enable Metrics/MethodLength

def self.doc_coverage
return 0 if @documented_count == 0 && @undocumented_tokens.count == 0
return 0 if @documented_count == 0 && @undocumented_decls.count == 0
(100 * @documented_count) /
(@undocumented_tokens.count + @documented_count)
(@undocumented_decls.count + @documented_count)
end

# Merges multiple extensions of the same entity into a single document.
Expand Down Expand Up @@ -547,7 +550,7 @@ def self.parse(sourcekitten_output, min_acl, skip_undocumented, inject_docs)
docs = group_docs(docs)
make_doc_urls(docs)
autolink(docs, ungrouped_docs)
[docs, doc_coverage, @undocumented_tokens]
[docs, doc_coverage, @undocumented_decls]
end
end
end
2 changes: 1 addition & 1 deletion spec/integration_specs
Submodule integration_specs updated 51 files
+1 −1 document_moya_podspec/after/execution_output.txt
+5 −5 document_realm_swift/after/docs/Classes.html
+5 −5 document_realm_swift/after/docs/Classes/AnyRealmCollection.html
+5 −5 document_realm_swift/after/docs/Classes/LinkingObjects.html
+5 −5 document_realm_swift/after/docs/Classes/List.html
+5 −5 document_realm_swift/after/docs/Classes/Migration.html
+5 −5 document_realm_swift/after/docs/Classes/Object.html
+5 −5 document_realm_swift/after/docs/Classes/ObjectSchema.html
+5 −5 document_realm_swift/after/docs/Classes/Property.html
+5 −5 document_realm_swift/after/docs/Classes/RLMGenerator.html
+5 −5 document_realm_swift/after/docs/Classes/Realm.html
+5 −5 document_realm_swift/after/docs/Classes/Realm/Configuration.html
+5 −5 document_realm_swift/after/docs/Classes/RealmOptional.html
+5 −5 document_realm_swift/after/docs/Classes/Results.html
+5 −5 document_realm_swift/after/docs/Classes/Schema.html
+5 −5 document_realm_swift/after/docs/Enums.html
+5 −5 document_realm_swift/after/docs/Enums/Error.html
+5 −5 document_realm_swift/after/docs/Enums/Notification.html
+5 −5 document_realm_swift/after/docs/Enums/RealmCollectionChange.html
+5 −5 document_realm_swift/after/docs/Functions.html
+5 −5 document_realm_swift/after/docs/Protocols.html
+5 −5 document_realm_swift/after/docs/Protocols/RealmCollectionType.html
+5 −5 document_realm_swift/after/docs/Structs.html
+5 −5 document_realm_swift/after/docs/Structs/SortDescriptor.html
+5 −5 document_realm_swift/after/docs/Typealiases.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes.html
+5 −5 ...alm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/AnyRealmCollection.html
+5 −5 ...t_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/LinkingObjects.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/List.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/Migration.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/Object.html
+5 −5 ...ent_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/ObjectSchema.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/Property.html
+5 −5 ...ent_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/RLMGenerator.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/Realm.html
+5 −5 ...lm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/Realm/Configuration.html
+5 −5 ...nt_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/RealmOptional.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/Results.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Classes/Schema.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Enums.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Enums/Error.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Enums/Notification.html
+5 −5 ...lm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Enums/RealmCollectionChange.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Functions.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Protocols.html
+5 −5 ..._swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Protocols/RealmCollectionType.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Structs.html
+5 −5 ...t_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Structs/SortDescriptor.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/Typealiases.html
+5 −5 document_realm_swift/after/docs/docsets/RealmSwift.docset/Contents/Resources/Documents/index.html
+5 −5 document_realm_swift/after/docs/index.html

0 comments on commit 9833412

Please sign in to comment.