mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
SourceKit-LSP currently parses the XML comment to generate Markdown again but round-tripping a (probably markdown) doc comment to XML to Markdown is lossy in many cases and unnecessary work. Include the comment as it is spelled in source in the cursor info response so that sourcekit-lsp can display it. Part of rdar://120685874
59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
//===--- CommentConversion.h - Conversion of comments to other formats ----===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_IDE_COMMENT_CONVERSION_H
|
|
#define SWIFT_IDE_COMMENT_CONVERSION_H
|
|
|
|
#include "swift/Basic/LLVM.h"
|
|
#include "swift/AST/TypeOrExtensionDecl.h"
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
namespace swift {
|
|
class Decl;
|
|
class DocComment;
|
|
|
|
namespace ide {
|
|
|
|
/// If the declaration has a documentation comment, prints the comment to \p OS
|
|
/// in Clang-like XML format.
|
|
///
|
|
/// \returns true if the declaration has a documentation comment.
|
|
bool getDocumentationCommentAsXML(
|
|
const Decl *D, raw_ostream &OS,
|
|
TypeOrExtensionDecl SynthesizedTarget = TypeOrExtensionDecl());
|
|
|
|
/// If the declaration has a documentation comment, prints the comment to \p OS
|
|
/// in the form it's written in source.
|
|
///
|
|
/// \returns true if the declaration has a documentation comment.
|
|
bool getRawDocumentationComment(const Decl *D, raw_ostream &OS);
|
|
|
|
/// If the declaration has a documentation comment and a localization key,
|
|
/// print it into the given output stream and return true. Else, return false.
|
|
bool getLocalizationKey(const Decl *D, raw_ostream &OS);
|
|
|
|
/// Converts the given comment to Doxygen.
|
|
void getDocumentationCommentAsDoxygen(const DocComment *DC, raw_ostream &OS);
|
|
|
|
/// Extract and normalize text from the given comment.
|
|
std::string extractPlainTextFromComment(const StringRef Text);
|
|
|
|
/// Given the raw text in markup format, convert its content to xml.
|
|
bool convertMarkupToXML(StringRef Text, raw_ostream &OS);
|
|
|
|
} // namespace ide
|
|
} // namespace swift
|
|
|
|
#endif // SWIFT_IDE_COMMENT_CONVERSION_H
|
|
|