3 #include "to_value.hpp"
7 Value_Ptr To_Value::fallback_impl(AST_Node_Ptr n)
9 // throw a runtime error if this happens
10 // we want a well defined set of possible nodes
11 throw std::runtime_error("invalid node for to_value");
16 // Custom_Error is a valid value
17 Value_Ptr To_Value::operator()(Custom_Error_Ptr e)
22 // Custom_Warning is a valid value
23 Value_Ptr To_Value::operator()(Custom_Warning_Ptr w)
28 // Boolean is a valid value
29 Value_Ptr To_Value::operator()(Boolean_Ptr b)
34 // Number is a valid value
35 Value_Ptr To_Value::operator()(Number_Ptr n)
40 // Color is a valid value
41 Value_Ptr To_Value::operator()(Color_Ptr c)
46 // String_Constant is a valid value
47 Value_Ptr To_Value::operator()(String_Constant_Ptr s)
52 // String_Quoted is a valid value
53 Value_Ptr To_Value::operator()(String_Quoted_Ptr s)
58 // List is a valid value
59 Value_Ptr To_Value::operator()(List_Ptr l)
61 List_Obj ll = SASS_MEMORY_NEW(List,
66 for (size_t i = 0, L = l->length(); i < L; ++i) {
67 ll->append((*l)[i]->perform(this));
72 // Map is a valid value
73 Value_Ptr To_Value::operator()(Map_Ptr m)
78 // Null is a valid value
79 Value_Ptr To_Value::operator()(Null_Ptr n)
84 // Argument returns its value
85 Value_Ptr To_Value::operator()(Argument_Ptr arg)
87 if (!arg->name().empty()) return 0;
88 return arg->value()->perform(this);
91 // Selector_List is converted to a string
92 Value_Ptr To_Value::operator()(Selector_List_Ptr s)
94 return SASS_MEMORY_NEW(String_Quoted,
96 s->to_string(ctx.c_options));
99 // Binary_Expression is converted to a string
100 Value_Ptr To_Value::operator()(Binary_Expression_Ptr s)
102 return SASS_MEMORY_NEW(String_Quoted,
104 s->to_string(ctx.c_options));