Skip to content

Commit 6c764a6

Browse files
authored
[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.
1 parent 0a07e6b commit 6c764a6

File tree

1 file changed

+21
-24
lines changed

1 file changed

+21
-24
lines changed

llvm/lib/Support/Mustache.cpp

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ class Token {
110110
size_t Indentation;
111111
};
112112

113+
using EscapeMap = DenseMap<char, std::string>;
114+
113115
class ASTNode {
114116
public:
115117
enum Type {
@@ -123,25 +125,22 @@ class ASTNode {
123125
};
124126

125127
ASTNode(llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
126-
llvm::StringMap<SectionLambda> &SectionLambdas,
127-
llvm::DenseMap<char, std::string> &Escapes)
128+
llvm::StringMap<SectionLambda> &SectionLambdas, EscapeMap &Escapes)
128129
: Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
129130
Escapes(Escapes), Ty(Type::Root), Parent(nullptr),
130131
ParentContext(nullptr) {}
131132

132133
ASTNode(std::string Body, ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
133134
llvm::StringMap<Lambda> &Lambdas,
134-
llvm::StringMap<SectionLambda> &SectionLambdas,
135-
llvm::DenseMap<char, std::string> &Escapes)
135+
llvm::StringMap<SectionLambda> &SectionLambdas, EscapeMap &Escapes)
136136
: Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
137137
Escapes(Escapes), Ty(Type::Text), Body(std::move(Body)), Parent(Parent),
138138
ParentContext(nullptr) {}
139139

140140
// Constructor for Section/InvertSection/Variable/UnescapeVariable Nodes
141141
ASTNode(Type Ty, Accessor Accessor, ASTNode *Parent,
142142
llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
143-
llvm::StringMap<SectionLambda> &SectionLambdas,
144-
llvm::DenseMap<char, std::string> &Escapes)
143+
llvm::StringMap<SectionLambda> &SectionLambdas, EscapeMap &Escapes)
145144
: Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
146145
Escapes(Escapes), Ty(Ty), Parent(Parent),
147146
AccessorValue(std::move(Accessor)), ParentContext(nullptr) {}
@@ -171,7 +170,7 @@ class ASTNode {
171170
StringMap<AstPtr> &Partials;
172171
StringMap<Lambda> &Lambdas;
173172
StringMap<SectionLambda> &SectionLambdas;
174-
DenseMap<char, std::string> &Escapes;
173+
EscapeMap &Escapes;
175174
Type Ty;
176175
size_t Indentation = 0;
177176
std::string RawBody;
@@ -187,15 +186,15 @@ class ASTNode {
187186
AstPtr createRootNode(llvm::StringMap<AstPtr> &Partials,
188187
llvm::StringMap<Lambda> &Lambdas,
189188
llvm::StringMap<SectionLambda> &SectionLambdas,
190-
llvm::DenseMap<char, std::string> &Escapes) {
189+
EscapeMap &Escapes) {
191190
return std::make_unique<ASTNode>(Partials, Lambdas, SectionLambdas, Escapes);
192191
}
193192

194193
AstPtr createNode(ASTNode::Type T, Accessor A, ASTNode *Parent,
195194
llvm::StringMap<AstPtr> &Partials,
196195
llvm::StringMap<Lambda> &Lambdas,
197196
llvm::StringMap<SectionLambda> &SectionLambdas,
198-
llvm::DenseMap<char, std::string> &Escapes) {
197+
EscapeMap &Escapes) {
199198
return std::make_unique<ASTNode>(T, std::move(A), Parent, Partials, Lambdas,
200199
SectionLambdas, Escapes);
201200
}
@@ -204,7 +203,7 @@ AstPtr createTextNode(std::string Body, ASTNode *Parent,
204203
llvm::StringMap<AstPtr> &Partials,
205204
llvm::StringMap<Lambda> &Lambdas,
206205
llvm::StringMap<SectionLambda> &SectionLambdas,
207-
llvm::DenseMap<char, std::string> &Escapes) {
206+
EscapeMap &Escapes) {
208207
return std::make_unique<ASTNode>(std::move(Body), Parent, Partials, Lambdas,
209208
SectionLambdas, Escapes);
210209
}
@@ -374,7 +373,7 @@ SmallVector<Token> tokenize(StringRef Template) {
374373
class EscapeStringStream : public raw_ostream {
375374
public:
376375
explicit EscapeStringStream(llvm::raw_ostream &WrappedStream,
377-
DenseMap<char, std::string> &Escape)
376+
EscapeMap &Escape)
378377
: Escape(Escape), WrappedStream(WrappedStream) {
379378
SetUnbuffered();
380379
}
@@ -394,7 +393,7 @@ class EscapeStringStream : public raw_ostream {
394393
uint64_t current_pos() const override { return WrappedStream.tell(); }
395394

396395
private:
397-
DenseMap<char, std::string> &Escape;
396+
EscapeMap &Escape;
398397
llvm::raw_ostream &WrappedStream;
399398
};
400399

@@ -433,13 +432,13 @@ class Parser {
433432
AstPtr parse(llvm::StringMap<AstPtr> &Partials,
434433
llvm::StringMap<Lambda> &Lambdas,
435434
llvm::StringMap<SectionLambda> &SectionLambdas,
436-
llvm::DenseMap<char, std::string> &Escapes);
435+
EscapeMap &Escapes);
437436

438437
private:
439438
void parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
440439
llvm::StringMap<Lambda> &Lambdas,
441440
llvm::StringMap<SectionLambda> &SectionLambdas,
442-
llvm::DenseMap<char, std::string> &Escapes);
441+
EscapeMap &Escapes);
443442

444443
SmallVector<Token> Tokens;
445444
size_t CurrentPtr;
@@ -449,7 +448,7 @@ class Parser {
449448
AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
450449
llvm::StringMap<Lambda> &Lambdas,
451450
llvm::StringMap<SectionLambda> &SectionLambdas,
452-
llvm::DenseMap<char, std::string> &Escapes) {
451+
EscapeMap &Escapes) {
453452
Tokens = tokenize(TemplateStr);
454453
CurrentPtr = 0;
455454
AstPtr RootNode = createRootNode(Partials, Lambdas, SectionLambdas, Escapes);
@@ -460,7 +459,7 @@ AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
460459
void Parser::parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
461460
llvm::StringMap<Lambda> &Lambdas,
462461
llvm::StringMap<SectionLambda> &SectionLambdas,
463-
llvm::DenseMap<char, std::string> &Escapes) {
462+
EscapeMap &Escapes) {
464463

465464
while (CurrentPtr < Tokens.size()) {
466465
Token CurrentToken = Tokens[CurrentPtr];
@@ -724,19 +723,17 @@ void Template::registerLambda(std::string Name, SectionLambda L) {
724723
SectionLambdas[Name] = L;
725724
}
726725

727-
void Template::overrideEscapeCharacters(DenseMap<char, std::string> E) {
728-
Escapes = std::move(E);
729-
}
726+
void Template::overrideEscapeCharacters(EscapeMap E) { Escapes = std::move(E); }
730727

731728
Template::Template(StringRef TemplateStr) {
732729
Parser P = Parser(TemplateStr);
733730
Tree = P.parse(Partials, Lambdas, SectionLambdas, Escapes);
734731
// The default behavior is to escape html entities.
735-
DenseMap<char, std::string> HtmlEntities = {{'&', "&amp;"},
736-
{'<', "&lt;"},
737-
{'>', "&gt;"},
738-
{'"', "&quot;"},
739-
{'\'', "&#39;"}};
732+
const EscapeMap HtmlEntities = {{'&', "&amp;"},
733+
{'<', "&lt;"},
734+
{'>', "&gt;"},
735+
{'"', "&quot;"},
736+
{'\'', "&#39;"}};
740737
overrideEscapeCharacters(HtmlEntities);
741738
}
742739

0 commit comments

Comments
 (0)