Method: Jazzy::SourceKitten.parse

Defined in:
lib/jazzy/sourcekitten.rb

.parse(sourcekitten_output, options, inject_docs) ⇒ Hash

Parse sourcekitten STDOUT output as JSON

Returns:

  • (Hash)

    structured docs



1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
# File 'lib/jazzy/sourcekitten.rb', line 1088

def self.parse(sourcekitten_output, options, inject_docs)
  @min_acl = options.min_acl
  @skip_undocumented = options.skip_undocumented
  @stats = Stats.new
  @inaccessible_protocols = []

  # Process each module separately to inject the source module name
  docs = sourcekitten_output.zip(options.module_names).map do |json, name|
    @current_module_name = name
    sourcekitten_dicts = filter_files(JSON.parse(json).flatten)
    make_source_declarations(sourcekitten_dicts)
  end.flatten + inject_docs

  docs = expand_extensions(docs)
  docs = deduplicate_declarations(docs)
  docs = reject_objc_types(docs)
  docs = reject_swift_types(docs)
  docs = mark_objc_external_categories(docs)

  @doc_index = DocIndex.new(docs)

  docs = Grouper.group_docs(docs, @doc_index)

  make_doc_urls(docs)
  autolink(docs)
  [docs, @stats]
end