[llvm] 6c764a6 - [llvm][mustache][NFC] Use type alias for escape symbols (#138050)

via llvm-commits llvm-commits at lists.llvm.org
Tue May 6 15:54:35 PDT 2025


Author: Paul Kirth
Date: 2025-05-06T15:54:32-07:00
New Revision: 6c764a6dda9f63dda38540a52b2b3bbbb1f3291b

URL: https://github.com/llvm/llvm-project/commit/6c764a6dda9f63dda38540a52b2b3bbbb1f3291b
DIFF: https://github.com/llvm/llvm-project/commit/6c764a6dda9f63dda38540a52b2b3bbbb1f3291b.diff

LOG: [llvm][mustache][NFC] Use type alias for escape symbols (#138050)

This data structure's type and/or representation is likely to change.
Using an alias, makes it easy to refactor.

Added: 
    

Modified: 
    llvm/lib/Support/Mustache.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Support/Mustache.cpp b/llvm/lib/Support/Mustache.cpp
index 1c6bdc820f75e..222587e19b31f 100644
--- a/llvm/lib/Support/Mustache.cpp
+++ b/llvm/lib/Support/Mustache.cpp
@@ -110,6 +110,8 @@ class Token {
   size_t Indentation;
 };
 
+using EscapeMap = DenseMap<char, std::string>;
+
 class ASTNode {
 public:
   enum Type {
@@ -123,16 +125,14 @@ class ASTNode {
   };
 
   ASTNode(llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
-          llvm::StringMap<SectionLambda> &SectionLambdas,
-          llvm::DenseMap<char, std::string> &Escapes)
+          llvm::StringMap<SectionLambda> &SectionLambdas, EscapeMap &Escapes)
       : Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
         Escapes(Escapes), Ty(Type::Root), Parent(nullptr),
         ParentContext(nullptr) {}
 
   ASTNode(std::string Body, ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
           llvm::StringMap<Lambda> &Lambdas,
-          llvm::StringMap<SectionLambda> &SectionLambdas,
-          llvm::DenseMap<char, std::string> &Escapes)
+          llvm::StringMap<SectionLambda> &SectionLambdas, EscapeMap &Escapes)
       : Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
         Escapes(Escapes), Ty(Type::Text), Body(std::move(Body)), Parent(Parent),
         ParentContext(nullptr) {}
@@ -140,8 +140,7 @@ class ASTNode {
   // Constructor for Section/InvertSection/Variable/UnescapeVariable Nodes
   ASTNode(Type Ty, Accessor Accessor, ASTNode *Parent,
           llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
-          llvm::StringMap<SectionLambda> &SectionLambdas,
-          llvm::DenseMap<char, std::string> &Escapes)
+          llvm::StringMap<SectionLambda> &SectionLambdas, EscapeMap &Escapes)
       : Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
         Escapes(Escapes), Ty(Ty), Parent(Parent),
         AccessorValue(std::move(Accessor)), ParentContext(nullptr) {}
@@ -171,7 +170,7 @@ class ASTNode {
   StringMap<AstPtr> &Partials;
   StringMap<Lambda> &Lambdas;
   StringMap<SectionLambda> &SectionLambdas;
-  DenseMap<char, std::string> &Escapes;
+  EscapeMap &Escapes;
   Type Ty;
   size_t Indentation = 0;
   std::string RawBody;
@@ -187,7 +186,7 @@ class ASTNode {
 AstPtr createRootNode(llvm::StringMap<AstPtr> &Partials,
                       llvm::StringMap<Lambda> &Lambdas,
                       llvm::StringMap<SectionLambda> &SectionLambdas,
-                      llvm::DenseMap<char, std::string> &Escapes) {
+                      EscapeMap &Escapes) {
   return std::make_unique<ASTNode>(Partials, Lambdas, SectionLambdas, Escapes);
 }
 
@@ -195,7 +194,7 @@ AstPtr createNode(ASTNode::Type T, Accessor A, ASTNode *Parent,
                   llvm::StringMap<AstPtr> &Partials,
                   llvm::StringMap<Lambda> &Lambdas,
                   llvm::StringMap<SectionLambda> &SectionLambdas,
-                  llvm::DenseMap<char, std::string> &Escapes) {
+                  EscapeMap &Escapes) {
   return std::make_unique<ASTNode>(T, std::move(A), Parent, Partials, Lambdas,
                                    SectionLambdas, Escapes);
 }
@@ -204,7 +203,7 @@ AstPtr createTextNode(std::string Body, ASTNode *Parent,
                       llvm::StringMap<AstPtr> &Partials,
                       llvm::StringMap<Lambda> &Lambdas,
                       llvm::StringMap<SectionLambda> &SectionLambdas,
-                      llvm::DenseMap<char, std::string> &Escapes) {
+                      EscapeMap &Escapes) {
   return std::make_unique<ASTNode>(std::move(Body), Parent, Partials, Lambdas,
                                    SectionLambdas, Escapes);
 }
@@ -374,7 +373,7 @@ SmallVector<Token> tokenize(StringRef Template) {
 class EscapeStringStream : public raw_ostream {
 public:
   explicit EscapeStringStream(llvm::raw_ostream &WrappedStream,
-                              DenseMap<char, std::string> &Escape)
+                              EscapeMap &Escape)
       : Escape(Escape), WrappedStream(WrappedStream) {
     SetUnbuffered();
   }
@@ -394,7 +393,7 @@ class EscapeStringStream : public raw_ostream {
   uint64_t current_pos() const override { return WrappedStream.tell(); }
 
 private:
-  DenseMap<char, std::string> &Escape;
+  EscapeMap &Escape;
   llvm::raw_ostream &WrappedStream;
 };
 
@@ -433,13 +432,13 @@ class Parser {
   AstPtr parse(llvm::StringMap<AstPtr> &Partials,
                llvm::StringMap<Lambda> &Lambdas,
                llvm::StringMap<SectionLambda> &SectionLambdas,
-               llvm::DenseMap<char, std::string> &Escapes);
+               EscapeMap &Escapes);
 
 private:
   void parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
                      llvm::StringMap<Lambda> &Lambdas,
                      llvm::StringMap<SectionLambda> &SectionLambdas,
-                     llvm::DenseMap<char, std::string> &Escapes);
+                     EscapeMap &Escapes);
 
   SmallVector<Token> Tokens;
   size_t CurrentPtr;
@@ -449,7 +448,7 @@ class Parser {
 AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
                      llvm::StringMap<Lambda> &Lambdas,
                      llvm::StringMap<SectionLambda> &SectionLambdas,
-                     llvm::DenseMap<char, std::string> &Escapes) {
+                     EscapeMap &Escapes) {
   Tokens = tokenize(TemplateStr);
   CurrentPtr = 0;
   AstPtr RootNode = createRootNode(Partials, Lambdas, SectionLambdas, Escapes);
@@ -460,7 +459,7 @@ AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
 void Parser::parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
                            llvm::StringMap<Lambda> &Lambdas,
                            llvm::StringMap<SectionLambda> &SectionLambdas,
-                           llvm::DenseMap<char, std::string> &Escapes) {
+                           EscapeMap &Escapes) {
 
   while (CurrentPtr < Tokens.size()) {
     Token CurrentToken = Tokens[CurrentPtr];
@@ -724,19 +723,17 @@ void Template::registerLambda(std::string Name, SectionLambda L) {
   SectionLambdas[Name] = L;
 }
 
-void Template::overrideEscapeCharacters(DenseMap<char, std::string> E) {
-  Escapes = std::move(E);
-}
+void Template::overrideEscapeCharacters(EscapeMap E) { Escapes = std::move(E); }
 
 Template::Template(StringRef TemplateStr) {
   Parser P = Parser(TemplateStr);
   Tree = P.parse(Partials, Lambdas, SectionLambdas, Escapes);
   // The default behavior is to escape html entities.
-  DenseMap<char, std::string> HtmlEntities = {{'&', "&"},
-                                              {'<', "<"},
-                                              {'>', ">"},
-                                              {'"', """},
-                                              {'\'', "'"}};
+  const EscapeMap HtmlEntities = {{'&', "&"},
+                                  {'<', "<"},
+                                  {'>', ">"},
+                                  {'"', """},
+                                  {'\'', "'"}};
   overrideEscapeCharacters(HtmlEntities);
 }
 


        


More information about the llvm-commits mailing list