@@ -125,32 +125,25 @@ void BindingData::CanParse(const FunctionCallbackInfo<Value>& args) {
125125
126126 Environment* env = Environment::GetCurrent (args);
127127 HandleScope handle_scope (env->isolate ());
128- Context::Scope context_scope (env->context ());
129128
130129 Utf8Value input (env->isolate (), args[0 ]);
131- ada::result<ada::url_aggregator> base;
132- ada::url_aggregator* base_pointer = nullptr ;
130+ std::string_view input_view = input.ToStringView ();
131+
132+ bool can_parse{};
133133 if (args[1 ]->IsString ()) {
134- base = ada::parse<ada::url_aggregator>(
135- Utf8Value (env->isolate (), args[1 ]).ToString ());
136- if (!base) {
137- return args.GetReturnValue ().Set (false );
138- }
139- base_pointer = &base.value ();
134+ Utf8Value base (env->isolate (), args[1 ]);
135+ std::string_view base_view = base.ToStringView ();
136+ can_parse = ada::can_parse (input_view, &base_view);
137+ } else {
138+ can_parse = ada::can_parse (input_view);
140139 }
141- auto out =
142- ada::parse<ada::url_aggregator>(input.ToStringView (), base_pointer);
143140
144- args.GetReturnValue ().Set (out. has_value () );
141+ args.GetReturnValue ().Set (can_parse );
145142}
146143
147144bool BindingData::FastCanParse (Local<Value> receiver,
148145 const FastOneByteString& input) {
149- std::string_view input_view (input.data , input.length );
150-
151- auto output = ada::parse<ada::url_aggregator>(input_view);
152-
153- return output.has_value ();
146+ return ada::can_parse (std::string_view (input.data , input.length ));
154147}
155148
156149CFunction BindingData::fast_can_parse_ (CFunction::Make(FastCanParse));
0 commit comments