Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5964373
TemplateInfo.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
TemplateInfo.php
View Options
<?php
declare
(
strict_types
=
1
);
namespace
Wikimedia\Parsoid\NodeData
;
use
stdClass
;
use
Wikimedia\JsonCodec\Hint
;
use
Wikimedia\JsonCodec\JsonCodecable
;
use
Wikimedia\JsonCodec\JsonCodecableTrait
;
class
TemplateInfo
implements
JsonCodecable
{
use
JsonCodecableTrait
;
/**
* The target wikitext
*/
public
?
string
$targetWt
=
null
;
/**
* The parser function name
*/
public
?
string
$func
=
null
;
/**
* The URL of the target
*/
public
?
string
$href
=
null
;
/**
* Param infos indexed by key (ParamInfo->k)
* @var list<ParamInfo>
*/
public
array
$paramInfos
=
[];
/**
* The type of template (template, templatearg, parserfunction).
* @note For backward-compatibility reasons, this property is
* not serialized/deserialized.
* @var 'template'|'templatearg'|'parserfunction'|null
*/
public
?
string
$type
=
null
;
/**
* The index into data-parsoid.pi
*/
public
?
int
$i
=
null
;
/** @inheritDoc */
public
static
function
newFromJsonArray
(
array
$json
):
TemplateInfo
{
$ti
=
new
TemplateInfo
;
$ti
->
targetWt
=
$json
[
'target'
][
'wt'
]
??
null
;
$ti
->
href
=
$json
[
'target'
][
'href'
]
??
null
;
$ti
->
func
=
$json
[
'target'
][
'function'
]
??
null
;
$ti
->
paramInfos
=
[];
$params
=
(
array
)(
$json
[
'params'
]
??
null
);
foreach
(
$params
as
$k
=>
$v
)
{
// Converting $params to an array can turn the keys into ints,
// so we need to explicitly cast them back to string.
$info
=
new
ParamInfo
(
(
string
)
$k
);
$info
->
valueWt
=
$v
->
wt
??
null
;
$info
->
html
=
$v
->
html
??
null
;
$info
->
keyWt
=
$v
->
key
->
wt
??
null
;
$ti
->
paramInfos
[]
=
$info
;
}
$ti
->
i
=
$json
[
'i'
]
??
null
;
return
$ti
;
}
/** @inheritDoc */
public
static
function
jsonClassHintFor
(
string
$keyname
)
{
static
$hints
=
null
;
if
(
$hints
===
null
)
{
$hints
=
[
// The most deeply nested stdClass structure is "wt" inside
// "key" inside a parameter:
// "params":{"1":{"key":{"wt":"..."}}}
'params'
=>
Hint
::
build
(
stdClass
::
class
,
Hint
::
ALLOW_OBJECT
,
Hint
::
STDCLASS
,
Hint
::
ALLOW_OBJECT
,
Hint
::
STDCLASS
,
Hint
::
ALLOW_OBJECT
),
];
}
return
$hints
[
$keyname
]
??
null
;
}
/** @inheritDoc */
public
function
toJsonArray
():
array
{
// This is a complicated serialization, but necessary for
// backward compatibility with existing data-mw
$target
=
[
'wt'
=>
$this
->
targetWt
];
if
(
$this
->
func
!==
null
)
{
$target
[
'function'
]
=
$this
->
func
;
}
if
(
$this
->
href
!==
null
)
{
$target
[
'href'
]
=
$this
->
href
;
}
$params
=
[];
foreach
(
$this
->
paramInfos
as
$info
)
{
// Non-standard serialization of ParamInfo, alas.
$param
=
[
'wt'
=>
$info
->
valueWt
,
];
if
(
$info
->
html
!==
null
)
{
$param
[
'html'
]
=
$info
->
html
;
}
if
(
$info
->
keyWt
!==
null
)
{
$param
[
'key'
]
=
(
object
)[
'wt'
=>
$info
->
keyWt
,
];
}
$params
[
$info
->
k
]
=
(
object
)
$param
;
}
return
[
'target'
=>
$target
,
'params'
=>
(
object
)
$params
,
'i'
=>
$this
->
i
,
];
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 10:16 (1 w, 1 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
e8/c5/9ffe6d06c17c2651a6df640a22b2
Default Alt Text
TemplateInfo.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment