Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1431640
LazyAttributes.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
LazyAttributes.php
View Options
<?php
namespace
Wikimedia\RemexHtml\Tokenizer
;
/**
* An Attributes implementation which defers interpretation of regex match
* results until the caller requires them.
*
* This should not be directly instantiated outside of Tokenizer.
*/
class
LazyAttributes
implements
Attributes
{
/** @var callable */
private
$interpreter
;
/** @var mixed */
private
$data
;
/** @var string[] */
private
$attributes
;
/** @var Attribute[] */
private
$attrObjects
;
public
function
__construct
(
$data
,
callable
$interpreter
)
{
$this
->
interpreter
=
$interpreter
;
$this
->
data
=
$data
;
}
/**
* Initialize the attributes array
*/
private
function
init
()
{
if
(
$this
->
attributes
===
null
)
{
$func
=
$this
->
interpreter
;
$this
->
attributes
=
$func
(
$this
->
data
);
// @phan-suppress-next-line PhanTypeMismatchPropertyProbablyReal
$this
->
interpreter
=
null
;
$this
->
data
=
null
;
}
}
public
function
offsetExists
(
$offset
):
bool
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
return
isset
(
$this
->
attributes
[
$offset
]
);
}
public
function
&
offsetGet
(
$offset
):
string
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
return
$this
->
attributes
[
$offset
];
}
public
function
offsetSet
(
$offset
,
$value
):
void
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
$this
->
attributes
[
$offset
]
=
$value
;
if
(
$this
->
attrObjects
!==
null
)
{
$this
->
attrObjects
[
$offset
]
=
new
Attribute
(
$offset
,
null
,
null
,
$offset
,
$value
);
}
}
public
function
offsetUnset
(
$offset
):
void
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
unset
(
$this
->
attributes
[
$offset
]
);
unset
(
$this
->
attrObjects
[
$offset
]
);
}
public
function
getValues
()
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
return
$this
->
attributes
;
}
public
function
getObjects
()
{
if
(
$this
->
attrObjects
===
null
)
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
$result
=
[];
foreach
(
$this
->
attributes
as
$name
=>
$value
)
{
$result
[
$name
]
=
new
Attribute
(
$name
,
null
,
null
,
$name
,
$value
);
}
$this
->
attrObjects
=
$result
;
}
return
$this
->
attrObjects
;
}
public
function
count
():
int
{
if
(
$this
->
attributes
===
null
)
{
return
count
(
$this
->
data
);
}
return
count
(
$this
->
attributes
);
}
public
function
getIterator
():
\ArrayIterator
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
return
new
\ArrayIterator
(
$this
->
attributes
);
}
public
function
merge
(
Attributes
$other
)
{
if
(
$this
->
attributes
===
null
)
{
$this
->
init
();
}
foreach
(
$other
as
$name
=>
$value
)
{
if
(
!
isset
(
$this
->
attributes
[
$name
]
)
)
{
$this
->
attributes
[
$name
]
=
$value
;
}
}
}
public
function
clone
()
{
return
$this
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 20:53 (1 d, 12 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
70/02/36dd55c38f4e0038124f4e97eb6e
Default Alt Text
LazyAttributes.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment