Skip to content

Commit 2a2538a

Browse files
committed
Merge pull request #24 from chaosgame/master
Use nan>=2.0.0 for compatibility with io.js 3.x+
2 parents 7cd1920 + 9535da5 commit 2a2538a

File tree

2 files changed

+58
-47
lines changed

2 files changed

+58
-47
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
"cld",
99
"cld2"
1010
],
11-
"version": "2.4.4",
11+
"version": "2.4.5",
1212
"main": "./index",
1313
"dependencies": {
1414
"glob": "^5.0.10",
15-
"nan": "^1.2.0",
15+
"nan": "^2.0.5",
1616
"rimraf": "^2.4.0",
1717
"underscore": "^1.6.0"
1818
},

src/cld.cc

Lines changed: 56 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,23 @@
66
namespace NodeCld {
77

88
NAN_METHOD(Detect) {
9-
NanScope();
10-
11-
v8::Local<v8::Object> results = NanNew<v8::Object>();
12-
v8::String::Utf8Value text(args[0]->ToString());
9+
v8::Local<v8::Object> results = Nan::New<v8::Object>();
10+
v8::String::Utf8Value text(info[0]->ToString());
1311

1412
char *bytes = *text;
1513
int numBytes = text.length();
16-
bool isPlainText = args[1]->ToBoolean()->Value();
14+
bool isPlainText = info[1]->ToBoolean()->Value();
1715

1816
CLD2::CLDHints hints;
1917
hints.tld_hint = 0;
2018
hints.content_language_hint = 0;
2119
hints.language_hint = CLD2::UNKNOWN_LANGUAGE;
2220
hints.encoding_hint = CLD2::UNKNOWN_ENCODING;
2321

24-
v8::String::Utf8Value languageHint(args[2]->ToString());
25-
v8::String::Utf8Value encodingHint(args[3]->ToString());
26-
v8::String::Utf8Value tldHint(args[4]->ToString());
27-
v8::String::Utf8Value httpHint(args[5]->ToString());
22+
v8::String::Utf8Value languageHint(info[2]->ToString());
23+
v8::String::Utf8Value encodingHint(info[3]->ToString());
24+
v8::String::Utf8Value tldHint(info[4]->ToString());
25+
v8::String::Utf8Value httpHint(info[5]->ToString());
2826

2927
if (tldHint.length() > 0) {
3028
hints.tld_hint = *tldHint;
@@ -60,25 +58,29 @@ namespace NodeCld {
6058
&isReliable
6159
);
6260

63-
v8::Local<v8::Array> languages = v8::Local<v8::Array>(NanNew<v8::Array>());
61+
v8::Local<v8::Array> languages = v8::Local<v8::Array>(Nan::New<v8::Array>());
6462
for(int idx = 0; idx < 3; idx++) {
6563
CLD2::Language lang = language3[idx];
66-
64+
6765
if (lang == CLD2::UNKNOWN_LANGUAGE) {
6866
continue;
6967
}
70-
71-
v8::Local<v8::Object> item = NanNew<v8::Object>();
72-
item->Set(NanNew<v8::String>("name"), NanNew<v8::String>(Constants::getInstance().getLanguageName(lang)));
73-
item->Set(NanNew<v8::String>("code"), NanNew<v8::String>(Constants::getInstance().getLanguageCode(lang)));
74-
item->Set(NanNew<v8::String>("percent"), NanNew<v8::Number>(percent3[idx]));
75-
item->Set(NanNew<v8::String>("score"), NanNew<v8::Number>(normalized_score3[idx]));
76-
77-
languages->Set(NanNew<v8::Integer>(idx), item);
68+
69+
v8::Local<v8::Object> item = Nan::New<v8::Object>();
70+
Nan::Set(item, Nan::New<v8::String>("name").ToLocalChecked(),
71+
Nan::New<v8::String>(Constants::getInstance().getLanguageName(lang)).ToLocalChecked());
72+
Nan::Set(item, Nan::New<v8::String>("code").ToLocalChecked(),
73+
Nan::New<v8::String>(Constants::getInstance().getLanguageCode(lang)).ToLocalChecked());
74+
Nan::Set(item, Nan::New<v8::String>("percent").ToLocalChecked(),
75+
Nan::New<v8::Number>(percent3[idx]));
76+
Nan::Set(item, Nan::New<v8::String>("score").ToLocalChecked(),
77+
Nan::New<v8::Number>(normalized_score3[idx]));
78+
79+
Nan::Set(languages, static_cast<uint32_t>(idx), item);
7880
}
7981

8082
unsigned int chunkIdx = 0;
81-
v8::Local<v8::Array> chunks = v8::Local<v8::Array>(NanNew<v8::Array>());
83+
v8::Local<v8::Array> chunks = v8::Local<v8::Array>(Nan::New<v8::Array>());
8284
for(unsigned int resultIdx = 0; resultIdx < resultChunkVector.size(); resultIdx++) {
8385
CLD2::ResultChunk chunk = resultChunkVector.at(resultIdx);
8486
CLD2::Language lang = static_cast<CLD2::Language>(chunk.lang1);
@@ -87,55 +89,64 @@ namespace NodeCld {
8789
continue;
8890
}
8991

90-
v8::Local<v8::Object> item = NanNew<v8::Object>();
91-
item->Set(NanNew<v8::String>("name"), NanNew<v8::String>(Constants::getInstance().getLanguageName(lang)));
92-
item->Set(NanNew<v8::String>("code"), NanNew<v8::String>(Constants::getInstance().getLanguageCode(lang)));
93-
item->Set(NanNew<v8::String>("offset"), NanNew<v8::Number>(chunk.offset));
94-
item->Set(NanNew<v8::String>("bytes"), NanNew<v8::Number>(chunk.bytes));
95-
96-
chunks->Set(NanNew<v8::Integer>(chunkIdx), item);
92+
v8::Local<v8::Object> item = Nan::New<v8::Object>();
93+
Nan::Set(item, Nan::New<v8::String>("name").ToLocalChecked(),
94+
Nan::New<v8::String>(Constants::getInstance().getLanguageName(lang)).ToLocalChecked());
95+
Nan::Set(item, Nan::New<v8::String>("code").ToLocalChecked(),
96+
Nan::New<v8::String>(Constants::getInstance().getLanguageCode(lang)).ToLocalChecked());
97+
Nan::Set(item, Nan::New<v8::String>("offset").ToLocalChecked(),
98+
Nan::New<v8::Number>(chunk.offset));
99+
Nan::Set(item, Nan::New<v8::String>("bytes").ToLocalChecked(),
100+
Nan::New<v8::Number>(chunk.bytes));
101+
102+
Nan::Set(chunks, Nan::New<v8::Integer>(chunkIdx), item);
97103
chunkIdx++;
98104
}
99105

100-
results->Set(NanNew<v8::String>("reliable"), NanNew<v8::Boolean>(isReliable));
101-
results->Set(NanNew<v8::String>("textBytes"), NanNew<v8::Number>(textBytesFound));
102-
results->Set(NanNew<v8::String>("languages"), languages);
103-
results->Set(NanNew<v8::String>("chunks"), chunks);
104-
105-
NanReturnValue(results);
106+
Nan::Set(results, Nan::New<v8::String>("reliable").ToLocalChecked(),
107+
Nan::New<v8::Boolean>(isReliable));
108+
Nan::Set(results, Nan::New<v8::String>("textBytes").ToLocalChecked(),
109+
Nan::New<v8::Number>(textBytesFound));
110+
Nan::Set(results, Nan::New<v8::String>("languages").ToLocalChecked(),
111+
languages);
112+
Nan::Set(results, Nan::New<v8::String>("chunks").ToLocalChecked(),
113+
chunks);
114+
115+
info.GetReturnValue().Set(results);
106116
}
107117

108118
extern "C" void init (v8::Handle<v8::Object> target) {
109-
NanScope();
110-
111119
// set detected languages
112-
v8::Local<v8::Array> detected = NanNew<v8::Array>();
120+
v8::Local<v8::Array> detected = Nan::New<v8::Array>();
113121
vector<NodeCldDetected>* rawDetected = Constants::getInstance().getDetected();
114122
for(vector<NodeCldDetected>::size_type i = 0; i < rawDetected->size(); i++) {
115123
NodeCldDetected rawLanguage = rawDetected->at(i);
116-
detected->Set(static_cast<uint32_t>(i), NanNew<v8::String>(rawLanguage.name));
124+
Nan::Set(detected, static_cast<uint32_t>(i),
125+
Nan::New<v8::String>(rawLanguage.name).ToLocalChecked());
117126
}
118-
target->Set(NanNew<v8::String>("DETECTED_LANGUAGES"), detected);
127+
Nan::Set(target, Nan::New<v8::String>("DETECTED_LANGUAGES").ToLocalChecked(), detected);
119128

120129
// set all languages
121-
v8::Local<v8::Object> languages = NanNew<v8::Object>();
130+
v8::Local<v8::Object> languages = Nan::New<v8::Object>();
122131
vector<NodeCldLanguage>* rawLanguages = Constants::getInstance().getLanguages();
123132
for(vector<NodeCldLanguage>::size_type i = 0; i < rawLanguages->size(); i++) {
124133
NodeCldLanguage rawLanguage = rawLanguages->at(i);
125-
languages->Set(NanNew<v8::String>(rawLanguage.name), NanNew<v8::String>(rawLanguage.code));
134+
Nan::Set(languages, Nan::New<v8::String>(rawLanguage.name).ToLocalChecked(),
135+
Nan::New<v8::String>(rawLanguage.code).ToLocalChecked());
126136
}
127-
target->Set(NanNew<v8::String>("LANGUAGES"), languages);
137+
Nan::Set(target, Nan::New<v8::String>("LANGUAGES").ToLocalChecked(), languages);
128138

129139
// set encodings
130-
v8::Local<v8::Array> encodings = NanNew<v8::Array>();
140+
v8::Local<v8::Array> encodings = Nan::New<v8::Array>();
131141
vector<NodeCldEncoding>* rawEncodings = Constants::getInstance().getEncodings();
132142
for(vector<NodeCldEncoding>::size_type i = 0; i < rawEncodings->size(); i++) {
133143
NodeCldEncoding rawEncoding = rawEncodings->at(i);
134-
encodings->Set(static_cast<uint32_t>(i), NanNew<v8::String>(rawEncoding.name));
144+
Nan::Set(encodings, static_cast<uint32_t>(i),
145+
Nan::New<v8::String>(rawEncoding.name).ToLocalChecked());
135146
}
136-
target->Set(NanNew<v8::String>("ENCODINGS"), encodings);
147+
Nan::Set(target, Nan::New<v8::String>("ENCODINGS").ToLocalChecked(), encodings);
137148

138-
NODE_SET_METHOD(target, "detect", Detect);
149+
Nan::SetMethod(target, "detect", Detect);
139150
}
140151

141152
NODE_MODULE(cld, init);

0 commit comments

Comments
 (0)