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