Skip to content

Commit 4c4b6e7

Browse files
committed
[llvm][mustache][NFC] Use type alias for escape symbols
This data structure's type and/or representation is likely to change. Using an alias, makes it easy to refactor.
1 parent a24457e commit 4c4b6e7

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

llvm/lib/Support/Mustache.cpp

Lines changed: 18 additions & 15 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 {
@@ -124,15 +126,15 @@ class ASTNode {
124126

125127
ASTNode(llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
126128
llvm::StringMap<SectionLambda> &SectionLambdas,
127-
llvm::DenseMap<char, std::string> &Escapes)
129+
EscapeMap &Escapes)
128130
: Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
129131
Escapes(Escapes), Ty(Type::Root), Parent(nullptr),
130132
ParentContext(nullptr) {}
131133

132134
ASTNode(std::string Body, ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
133135
llvm::StringMap<Lambda> &Lambdas,
134136
llvm::StringMap<SectionLambda> &SectionLambdas,
135-
llvm::DenseMap<char, std::string> &Escapes)
137+
EscapeMap &Escapes)
136138
: Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
137139
Escapes(Escapes), Ty(Type::Text), Body(std::move(Body)), Parent(Parent),
138140
ParentContext(nullptr) {}
@@ -141,7 +143,7 @@ class ASTNode {
141143
ASTNode(Type Ty, Accessor Accessor, ASTNode *Parent,
142144
llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
143145
llvm::StringMap<SectionLambda> &SectionLambdas,
144-
llvm::DenseMap<char, std::string> &Escapes)
146+
EscapeMap &Escapes)
145147
: Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
146148
Escapes(Escapes), Ty(Ty), Parent(Parent),
147149
AccessorValue(std::move(Accessor)), ParentContext(nullptr) {}
@@ -171,7 +173,7 @@ class ASTNode {
171173
StringMap<AstPtr> &Partials;
172174
StringMap<Lambda> &Lambdas;
173175
StringMap<SectionLambda> &SectionLambdas;
174-
DenseMap<char, std::string> &Escapes;
176+
EscapeMap &Escapes;
175177
Type Ty;
176178
size_t Indentation = 0;
177179
std::string RawBody;
@@ -187,15 +189,15 @@ class ASTNode {
187189
AstPtr createRootNode(llvm::StringMap<AstPtr> &Partials,
188190
llvm::StringMap<Lambda> &Lambdas,
189191
llvm::StringMap<SectionLambda> &SectionLambdas,
190-
llvm::DenseMap<char, std::string> &Escapes) {
192+
EscapeMap &Escapes) {
191193
return std::make_unique<ASTNode>(Partials, Lambdas, SectionLambdas, Escapes);
192194
}
193195

194196
AstPtr createNode(ASTNode::Type T, Accessor A, ASTNode *Parent,
195197
llvm::StringMap<AstPtr> &Partials,
196198
llvm::StringMap<Lambda> &Lambdas,
197199
llvm::StringMap<SectionLambda> &SectionLambdas,
198-
llvm::DenseMap<char, std::string> &Escapes) {
200+
EscapeMap &Escapes) {
199201
return std::make_unique<ASTNode>(T, std::move(A), Parent, Partials, Lambdas,
200202
SectionLambdas, Escapes);
201203
}
@@ -204,7 +206,7 @@ AstPtr createTextNode(std::string Body, ASTNode *Parent,
204206
llvm::StringMap<AstPtr> &Partials,
205207
llvm::StringMap<Lambda> &Lambdas,
206208
llvm::StringMap<SectionLambda> &SectionLambdas,
207-
llvm::DenseMap<char, std::string> &Escapes) {
209+
EscapeMap &Escapes) {
208210
return std::make_unique<ASTNode>(std::move(Body), Parent, Partials, Lambdas,
209211
SectionLambdas, Escapes);
210212
}
@@ -374,7 +376,7 @@ SmallVector<Token> tokenize(StringRef Template) {
374376
class EscapeStringStream : public raw_ostream {
375377
public:
376378
explicit EscapeStringStream(llvm::raw_ostream &WrappedStream,
377-
DenseMap<char, std::string> &Escape)
379+
EscapeMap &Escape)
378380
: Escape(Escape), WrappedStream(WrappedStream) {
379381
SetUnbuffered();
380382
}
@@ -394,7 +396,7 @@ class EscapeStringStream : public raw_ostream {
394396
uint64_t current_pos() const override { return WrappedStream.tell(); }
395397

396398
private:
397-
DenseMap<char, std::string> &Escape;
399+
EscapeMap &Escape;
398400
llvm::raw_ostream &WrappedStream;
399401
};
400402

@@ -433,13 +435,13 @@ class Parser {
433435
AstPtr parse(llvm::StringMap<AstPtr> &Partials,
434436
llvm::StringMap<Lambda> &Lambdas,
435437
llvm::StringMap<SectionLambda> &SectionLambdas,
436-
llvm::DenseMap<char, std::string> &Escapes);
438+
EscapeMap &Escapes);
437439

438440
private:
439441
void parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
440442
llvm::StringMap<Lambda> &Lambdas,
441443
llvm::StringMap<SectionLambda> &SectionLambdas,
442-
llvm::DenseMap<char, std::string> &Escapes);
444+
EscapeMap &Escapes);
443445

444446
SmallVector<Token> Tokens;
445447
size_t CurrentPtr;
@@ -449,7 +451,7 @@ class Parser {
449451
AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
450452
llvm::StringMap<Lambda> &Lambdas,
451453
llvm::StringMap<SectionLambda> &SectionLambdas,
452-
llvm::DenseMap<char, std::string> &Escapes) {
454+
EscapeMap &Escapes) {
453455
Tokens = tokenize(TemplateStr);
454456
CurrentPtr = 0;
455457
AstPtr RootNode = createRootNode(Partials, Lambdas, SectionLambdas, Escapes);
@@ -460,7 +462,7 @@ AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
460462
void Parser::parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
461463
llvm::StringMap<Lambda> &Lambdas,
462464
llvm::StringMap<SectionLambda> &SectionLambdas,
463-
llvm::DenseMap<char, std::string> &Escapes) {
465+
EscapeMap &Escapes) {
464466

465467
while (CurrentPtr < Tokens.size()) {
466468
Token CurrentToken = Tokens[CurrentPtr];
@@ -726,15 +728,16 @@ void Template::registerLambda(std::string Name, SectionLambda L) {
726728
SectionLambdas[Name] = L;
727729
}
728730

729-
void Template::overrideEscapeCharacters(DenseMap<char, std::string> E) {
731+
void Template::overrideEscapeCharacters(EscapeMap E) {
730732
Escapes = std::move(E);
731733
}
732734

733735
Template::Template(StringRef TemplateStr) {
734736
Parser P = Parser(TemplateStr);
735737
Tree = P.parse(Partials, Lambdas, SectionLambdas, Escapes);
736738
// The default behavior is to escape html entities.
737-
DenseMap<char, std::string> HtmlEntities = {{'&', "&amp;"},
739+
const
740+
EscapeMap HtmlEntities = {{'&', "&amp;"},
738741
{'<', "&lt;"},
739742
{'>', "&gt;"},
740743
{'"', "&quot;"},

0 commit comments

Comments
 (0)