-
Notifications
You must be signed in to change notification settings - Fork 5
/
tokenizer.hpp
72 lines (49 loc) · 1.63 KB
/
tokenizer.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef MUSTACHE_TOKENIZER_HPP
#define MUSTACHE_TOKENIZER_HPP
#include <iostream>
#include <memory>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include "exception.hpp"
#include "node.hpp"
#include "utils.hpp"
namespace mustache {
/*! \class Tokenizer
\brief Tokenizes a template
This class tokenizes a string template and returns a token tree.
*/
class Tokenizer {
private:
//! The default initial start string
std::string _startSequence;
//! The default initial stop string
std::string _stopSequence;
//! Whether to escape HTML by default
bool _escapeByDefault;
public:
typedef std::auto_ptr<Tokenizer> Ptr;
//! Constructor
Tokenizer() : _startSequence("{{"), _stopSequence("}}"), _escapeByDefault(true) {};
//! Sets the start sequence
void setStartSequence(const std::string& start);
//! Sets the start sequence
void setStartSequence(const char * start, int len = 0);
//! Sets the stop sequence
void setStopSequence(const std::string& stop);
//! Sets the stop sequence
void setStopSequence(const char * stop, int len = 0);
//! Sets whether to escape HTML by default
void setEscapeByDefault(bool flag);
//! Gets the current start sequence
const std::string & getStartSequence();
//! Gets the current stop sequence
const std::string & getStopSequence();
//! Gets whether to escape HTML by default
bool getEscapeByDefault();
//! Tokenizes the given string template
void tokenize(std::string * tmpl, Node * root);
};
} // namespace Mustache
#endif