Clang Project

clang_source_code/include/clang/Rewrite/Core/HTMLRewrite.h
1//==- HTMLRewrite.h - Translate source code into prettified HTML ---*- C++ -*-//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9//  This file defines a set of functions used for translating source code
10//  into beautified HTML.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CLANG_REWRITE_CORE_HTMLREWRITE_H
15#define LLVM_CLANG_REWRITE_CORE_HTMLREWRITE_H
16
17#include "clang/Basic/SourceLocation.h"
18#include <string>
19
20namespace clang {
21
22class Rewriter;
23class RewriteBuffer;
24class Preprocessor;
25
26namespace html {
27
28  /// HighlightRange - Highlight a range in the source code with the specified
29  /// start/end tags.  B/E must be in the same file.  This ensures that
30  /// start/end tags are placed at the start/end of each line if the range is
31  /// multiline.
32  void HighlightRange(Rewriter &RSourceLocation BSourceLocation E,
33                      const char *StartTagconst char *EndTag,
34                      bool IsTokenRange = true);
35
36  /// HighlightRange - Highlight a range in the source code with the specified
37  /// start/end tags.  The Start/end of the range must be in the same file.
38  /// This ensures that start/end tags are placed at the start/end of each line
39  /// if the range is multiline.
40  inline void HighlightRange(Rewriter &RSourceRange Range,
41                             const char *StartTagconst char *EndTag) {
42    HighlightRange(RRange.getBegin(), Range.getEnd(), StartTagEndTag);
43  }
44
45  /// HighlightRange - This is the same as the above method, but takes
46  /// decomposed file locations.
47  void HighlightRange(RewriteBuffer &RBunsigned Bunsigned E,
48                      const char *BufferStart,
49                      const char *StartTagconst char *EndTag);
50
51  /// EscapeText - HTMLize a specified file so that special characters are
52  /// are translated so that they are not interpreted as HTML tags.
53  void EscapeText(RewriterRFileID FID,
54                  bool EscapeSpaces = falsebool ReplaceTabs = false);
55
56  /// EscapeText - HTMLized the provided string so that special characters
57  ///  in 's' are not interpreted as HTML tags.  Unlike the version of
58  ///  EscapeText that rewrites a file, this version by default replaces tabs
59  ///  with spaces.
60  std::string EscapeText(StringRef s,
61                         bool EscapeSpaces = falsebool ReplaceTabs = false);
62
63  void AddLineNumbers(RewriterRFileID FID);
64
65  void AddHeaderFooterInternalBuiltinCSS(Rewriter &RFileID FID,
66                                         StringRef title);
67
68  /// SyntaxHighlight - Relex the specified FileID and annotate the HTML with
69  /// information about keywords, comments, etc.
70  void SyntaxHighlight(Rewriter &RFileID FIDconst Preprocessor &PP);
71
72  /// HighlightMacros - This uses the macro table state from the end of the
73  /// file, to reexpand macros and insert (into the HTML) information about the
74  /// macro expansions.  This won't be perfectly perfect, but it will be
75  /// reasonably close.
76  void HighlightMacros(Rewriter &RFileID FIDconst Preprocessor &PP);
77
78// end html namespace
79// end clang namespace
80
81#endif
82