mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Currently the printer only supports the subset of markdown used by educational notes. It bolds headers, improves the appearance of lists and horizontal rules, and does basic indenting of blockquotes and code blocks.
70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
//===--- Markup.h - Markup --------------------------------------*- C++ -*-===//
|
|
//
|
|
// 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_MARKUP_MARKUP_H
|
|
#define SWIFT_MARKUP_MARKUP_H
|
|
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/Support/Allocator.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
#include "swift/Basic/SourceLoc.h"
|
|
#include "swift/Markup/AST.h"
|
|
#include "swift/Markup/LineList.h"
|
|
|
|
namespace swift {
|
|
|
|
struct RawComment;
|
|
|
|
namespace markup {
|
|
|
|
class LineList;
|
|
|
|
class MarkupContext final {
|
|
llvm::BumpPtrAllocator Allocator;
|
|
|
|
public:
|
|
void *allocate(unsigned long Bytes, unsigned Alignment) {
|
|
return Allocator.Allocate(Bytes, Alignment);
|
|
}
|
|
|
|
template <typename T, typename It>
|
|
T *allocateCopy(It Begin, It End) {
|
|
T *Res =
|
|
static_cast<T *>(allocate(sizeof(T) * (End - Begin), alignof(T)));
|
|
for (unsigned i = 0; Begin != End; ++Begin, ++i)
|
|
new (Res + i) T(*Begin);
|
|
return Res;
|
|
}
|
|
|
|
template <typename T>
|
|
MutableArrayRef<T> allocateCopy(ArrayRef<T> Array) {
|
|
return MutableArrayRef<T>(allocateCopy<T>(Array.begin(), Array.end()),
|
|
Array.size());
|
|
}
|
|
|
|
StringRef allocateCopy(StringRef Str) {
|
|
ArrayRef<char> Result =
|
|
allocateCopy(llvm::makeArrayRef(Str.data(), Str.size()));
|
|
return StringRef(Result.data(), Result.size());
|
|
}
|
|
|
|
LineList getLineList(swift::RawComment RC);
|
|
};
|
|
|
|
Document *parseDocument(MarkupContext &MC, StringRef String);
|
|
Document *parseDocument(MarkupContext &MC, LineList &LL);
|
|
|
|
} // namespace markup
|
|
} // namespace swift
|
|
|
|
#endif // SWIFT_MARKUP_MARKUP_H
|