1// sass.hpp must go before all system headers to get the
2// __EXTENSIONS__ fix on Solaris.
3#include "sass.hpp"
4
5#include "ast.hpp"
6#include "to_value.hpp"
7
8namespace Sass {
9
10 // Custom_Error is a valid value
11 Value* To_Value::operator()(Custom_Error* e)
12 {
13 return e;
14 }
15
16 // Custom_Warning is a valid value
17 Value* To_Value::operator()(Custom_Warning* w)
18 {
19 return w;
20 }
21
22 // Boolean is a valid value
23 Value* To_Value::operator()(Boolean* b)
24 {
25 return b;
26 }
27
28 // Number is a valid value
29 Value* To_Value::operator()(Number* n)
30 {
31 return n;
32 }
33
34 // Color is a valid value
35 Value* To_Value::operator()(Color_RGBA* c)
36 {
37 return c;
38 }
39
40 // Color is a valid value
41 Value* To_Value::operator()(Color_HSLA* c)
42 {
43 return c;
44 }
45
46 // String_Constant is a valid value
47 Value* To_Value::operator()(String_Constant* s)
48 {
49 return s;
50 }
51
52 // String_Quoted is a valid value
53 Value* To_Value::operator()(String_Quoted* s)
54 {
55 return s;
56 }
57
58 // List is a valid value
59 Value* To_Value::operator()(List* l)
60 {
61 List_Obj ll = SASS_MEMORY_NEW(List,
62 l->pstate(),
63 l->length(),
64 l->separator(),
65 l->is_arglist(),
66 l->is_bracketed());
67 for (size_t i = 0, L = l->length(); i < L; ++i) {
68 ll->append(element: (*l)[i]->perform(op: this));
69 }
70 return ll.detach();
71 }
72
73 // Map is a valid value
74 Value* To_Value::operator()(Map* m)
75 {
76 return m;
77 }
78
79 // Null is a valid value
80 Value* To_Value::operator()(Null* n)
81 {
82 return n;
83 }
84
85 // Function is a valid value
86 Value* To_Value::operator()(Function* n)
87 {
88 return n;
89 }
90
91 // Argument returns its value
92 Value* To_Value::operator()(Argument* arg)
93 {
94 if (!arg->name().empty()) return 0;
95 return arg->value()->perform(op: this);
96 }
97
98 // SelectorList is converted to a string
99 Value* To_Value::operator()(SelectorList* s)
100 {
101 return SASS_MEMORY_NEW(String_Quoted,
102 s->pstate(),
103 s->to_string(ctx.c_options));
104 }
105
106 // Binary_Expression is converted to a string
107 Value* To_Value::operator()(Binary_Expression* s)
108 {
109 return SASS_MEMORY_NEW(String_Quoted,
110 s->pstate(),
111 s->to_string(ctx.c_options));
112 }
113
114};
115

source code of gtk/subprojects/libsass/src/to_value.cpp