4
4
#include < stdexcept>
5
5
#include < vector>
6
6
#include < nan.h>
7
+ #include " ../debug.h"
7
8
#include " value.h"
8
9
#include " factory.h"
9
10
@@ -27,6 +28,59 @@ namespace SassTypes
27
28
static NAN_METHOD (New);
28
29
static Sass_Value *fail (const char *, Sass_Value **);
29
30
31
+ static void print_value (Sass_Value *v) {
32
+ if (v) {
33
+ if (sass_value_is_null (v)) {
34
+ TRACEINST (v) << " #null" ;
35
+ } else if (sass_value_is_number (v)) {
36
+ TRACEINST (v) << " #number "
37
+ << sass_number_get_value (v)
38
+ << " unit=<" << sass_number_get_unit (v) << " >" ;
39
+ } else if (sass_value_is_string (v)) {
40
+ TRACEINST (v) << " #string "
41
+ << ' "' << sass_string_get_value (v) << ' "'
42
+ << " , quoted=" << (sass_string_is_quoted (v) ? ' Y' : ' N' );
43
+ } else if (sass_value_is_boolean (v)) {
44
+ TRACEINST (v) << " #boolean " << sass_boolean_get_value (v);
45
+ } else if (sass_value_is_color (v)) {
46
+ TRACEINST (v) << " #color RGBA: <"
47
+ << sass_color_get_r (v) << " ,"
48
+ << sass_color_get_g (v) << " ,"
49
+ << sass_color_get_b (v) << " ,"
50
+ << sass_color_get_a (v) << " >" ;
51
+ } else if (sass_value_is_list (v)) {
52
+ enum Sass_Separator sep = sass_list_get_separator (v);
53
+ size_t len = sass_list_get_length (v);
54
+ TRACEINST (v) << " #list "
55
+ << " separator=<" << (sep == SASS_COMMA ? ' ,' : ' ' ) << " >"
56
+ << " length=" << len;
57
+ for (size_t i = 0 ; i < len; i ++) {
58
+ TRACEINST (v) << " item(" << i << " )" ;
59
+ print_value (sass_list_get_value (v, i));
60
+ }
61
+ TRACEINST (v) << " #list end" ;
62
+ } else if (sass_value_is_map (v)) {
63
+ size_t len = sass_map_get_length (v);
64
+ TRACEINST (v) << " #map length=" << len;
65
+ for (size_t i = 0 ; i < len; i ++) {
66
+ TRACEINST (v) << " key(" << i << " )" ;
67
+ print_value (sass_map_get_key (v, i));
68
+ TRACEINST (v) << " value(" << i << " )" ;
69
+ print_value (sass_map_get_value (v, i));
70
+ }
71
+ TRACEINST (v) << " #map end" ;
72
+ } else if (sass_value_is_error (v)) {
73
+ TRACEINST (v) << " #error " << sass_error_get_message (v);
74
+ } else if (sass_value_is_warning (v)) {
75
+ TRACEINST (v) << " #warn " << sass_warning_get_message (v);
76
+ } else {
77
+ TRACEINST (v) << " #unknown" ;
78
+ }
79
+ } else {
80
+ TRACE () << " (null value)" ;
81
+ }
82
+ }
83
+
30
84
protected:
31
85
Sass_Value* value;
32
86
static T* unwrap (v8::Local<v8::Object>);
@@ -42,6 +96,9 @@ namespace SassTypes
42
96
template <class T >
43
97
SassValueWrapper<T>::SassValueWrapper(Sass_Value* v) {
44
98
this ->value = sass_clone_value (v);
99
+ TRACEINST (this ) << " ctor " << (void *)this ->value << " := " << (void *)v;
100
+ print_value (v);
101
+ TRACEINST (this ) << " done" ;
45
102
}
46
103
47
104
template <class T >
@@ -52,7 +109,11 @@ namespace SassTypes
52
109
53
110
template <class T >
54
111
Sass_Value* SassValueWrapper<T>::get_sass_value() {
55
- return sass_clone_value (this ->value );
112
+ Sass_Value *nv = sass_clone_value (this ->value );
113
+ TRACEINST (this ) << (void *)nv << " := " << (void *)this ->value ;
114
+ print_value (this ->value );
115
+ TRACEINST (this ) << " done" ;
116
+ return nv;
56
117
}
57
118
58
119
template <class T >
0 commit comments