Initial commit
[yaffs-website] / node_modules / node-sass / src / sass_types / string.cpp
1 #include <nan.h>
2 #include "string.h"
3 #include "../create_string.h"
4
5 namespace SassTypes
6 {
7   String::String(Sass_Value* v) : SassValueWrapper(v) {}
8
9   Sass_Value* String::construct(const std::vector<v8::Local<v8::Value>> raw_val, Sass_Value **out) {
10     char const* value = "";
11
12     if (raw_val.size() >= 1) {
13       if (!raw_val[0]->IsString()) {
14         return fail("Argument should be a string.", out);
15       }
16
17       value = create_string(raw_val[0]);
18     }
19
20     return *out = sass_make_string(value);
21   }
22
23   void String::initPrototype(v8::Local<v8::FunctionTemplate> proto) {
24     Nan::SetPrototypeMethod(proto, "getValue", GetValue);
25     Nan::SetPrototypeMethod(proto, "setValue", SetValue);
26   }
27
28   NAN_METHOD(String::GetValue) {
29     info.GetReturnValue().Set(Nan::New<v8::String>(sass_string_get_value(unwrap(info.This())->value)).ToLocalChecked());
30   }
31
32   NAN_METHOD(String::SetValue) {
33     if (info.Length() != 1) {
34       return Nan::ThrowTypeError("Expected just one argument");
35     }
36
37     if (!info[0]->IsString()) {
38       return Nan::ThrowTypeError("Supplied value should be a string");
39     }
40
41     sass_string_set_value(unwrap(info.This())->value, create_string(info[0]));
42   }
43 }