output.hpp
1.25 KB
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
#ifndef SASS_OUTPUT_H
#define SASS_OUTPUT_H
#include <string>
#include <vector>
#include "util.hpp"
#include "inspect.hpp"
#include "operation.hpp"
namespace Sass {
class Context;
// Refactor to make it generic to find linefeed (look behind)
inline bool ends_with(std::string const & value, std::string const & ending)
{
if (ending.size() > value.size()) return false;
return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
}
class Output : public Inspect {
protected:
using Inspect::operator();
public:
Output(Sass_Output_Options& opt);
virtual ~Output();
protected:
std::string charset;
std::vector<AST_Node_Ptr> top_nodes;
public:
OutputBuffer get_buffer(void);
virtual void operator()(Map_Ptr);
virtual void operator()(Ruleset_Ptr);
virtual void operator()(Supports_Block_Ptr);
virtual void operator()(Media_Block_Ptr);
virtual void operator()(Directive_Ptr);
virtual void operator()(Keyframe_Rule_Ptr);
virtual void operator()(Import_Ptr);
virtual void operator()(Comment_Ptr);
virtual void operator()(Number_Ptr);
virtual void operator()(String_Quoted_Ptr);
virtual void operator()(String_Constant_Ptr);
void fallback_impl(AST_Node_Ptr n);
};
}
#endif