@@ -125,32 +125,25 @@ void BindingData::CanParse(const FunctionCallbackInfo<Value>& args) { |
125 | 125 |
|
126 | 126 | Environment* env = Environment::GetCurrent(args); |
127 | 127 | HandleScope handle_scope(env->isolate()); |
128 | | - Context::Scope context_scope(env->context()); |
129 | 128 |
|
130 | 129 | 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{}; |
133 | 133 | 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); |
140 | 139 | } |
141 | | - auto out = |
142 | | - ada::parse<ada::url_aggregator>(input.ToStringView(), base_pointer); |
143 | 140 |
|
144 | | - args.GetReturnValue().Set(out.has_value()); |
| 141 | + args.GetReturnValue().Set(can_parse); |
145 | 142 | } |
146 | 143 |
|
147 | 144 | bool BindingData::FastCanParse(Local<Value> receiver, |
148 | 145 | 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)); |
154 | 147 | } |
155 | 148 |
|
156 | 149 | CFunction BindingData::fast_can_parse_(CFunction::Make(FastCanParse)); |
|