mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:17:44 +00:00
LibJS: Implement the RegExpStringIterator object
This implementation closely follows the StringIterator object in that the abstract closure meant to be created in CreateRegExpStringIterator is instead unrolled into RegExpStringIterator.prototype.next.
This commit is contained in:
parent
6cf64d0f09
commit
cfddcad7cf
7 changed files with 189 additions and 5 deletions
38
Userland/Libraries/LibJS/Runtime/RegExpStringIterator.h
Normal file
38
Userland/Libraries/LibJS/Runtime/RegExpStringIterator.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Tim Flynn <trflynn89@pm.me>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibJS/Runtime/Object.h>
|
||||
|
||||
namespace JS {
|
||||
|
||||
class RegExpStringIterator final : public Object {
|
||||
JS_OBJECT(RegExpStringIterator, Object);
|
||||
|
||||
public:
|
||||
static RegExpStringIterator* create(GlobalObject&, Object& regexp_object, String string, bool global, bool unicode);
|
||||
|
||||
explicit RegExpStringIterator(Object& prototype, Object& regexp_object, String string, bool global, bool unicode);
|
||||
virtual ~RegExpStringIterator() override = default;
|
||||
|
||||
Object& regexp_object() { return m_regexp_object; }
|
||||
String const& string() const { return m_string; }
|
||||
bool global() const { return m_global; }
|
||||
bool unicode() const { return m_unicode; }
|
||||
|
||||
bool done() const { return m_done; }
|
||||
void set_done() { m_done = true; }
|
||||
|
||||
private:
|
||||
Object& m_regexp_object;
|
||||
String m_string;
|
||||
bool m_global { false };
|
||||
bool m_unicode { false };
|
||||
bool m_done { false };
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue