mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-25 23:05:35 +00:00
Merge "Hack MWTemplate so it also does partial type matches"
This commit is contained in:
commit
44940b4551
|
@ -30,7 +30,16 @@ ve.dm.MWTemplateNode.static.name = 'MWtemplate';
|
||||||
|
|
||||||
ve.dm.MWTemplateNode.static.matchTagNames = null;
|
ve.dm.MWTemplateNode.static.matchTagNames = null;
|
||||||
|
|
||||||
ve.dm.MWTemplateNode.static.matchRdfaTypes = [ 'mw:Object/Template' ];
|
// We're interested in all nodes that have mw:Object/Template, even if they also have other mw:
|
||||||
|
// types. So we match all mw: types, then use a matchFunction to assert that mw:Object/Template
|
||||||
|
// is in there.
|
||||||
|
ve.dm.MWTemplateNode.static.matchRdfaTypes = [ 'mw:Object/Template', /^mw:/ ];
|
||||||
|
|
||||||
|
ve.dm.MWTemplateNode.static.matchFunction = function ( domElement ) {
|
||||||
|
return ve.indexOf( 'mw:Object/Template',
|
||||||
|
( domElement.getAttribute( 'typeof' ) || '' ).split( ' ' )
|
||||||
|
) !== -1;
|
||||||
|
};
|
||||||
|
|
||||||
ve.dm.MWTemplateNode.static.getHashObject = function ( dataElement ) {
|
ve.dm.MWTemplateNode.static.getHashObject = function ( dataElement ) {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -865,7 +865,33 @@ ve.dm.example.MWTemplate = {
|
||||||
'html/0/data-parsoid': '{\"tsr\":[18,34],\"src\":\"{{Inline|1,234}}\",\"dsr\":[18,34,null,null]}',
|
'html/0/data-parsoid': '{\"tsr\":[18,34],\"src\":\"{{Inline|1,234}}\",\"dsr\":[18,34,null,null]}',
|
||||||
'html/0/typeof': 'mw:Object/Template'
|
'html/0/typeof': 'mw:Object/Template'
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
'mixed': '<link about="#mwt1" rel="mw:WikiLink/Category" typeof="mw:Object/Template" data-mw="{"id":"mwt1","target":{"wt":"Inline"},"params":{"1":{"wt":"5,678"}}}"><span about="#mwt1">Foo</span>',
|
||||||
|
'mixedDataOpen': {
|
||||||
|
'type': 'MWtemplateInline',
|
||||||
|
'attributes': {
|
||||||
|
'mw': {
|
||||||
|
'id': 'mwt1',
|
||||||
|
'target': { 'wt': 'Inline' },
|
||||||
|
'params': {
|
||||||
|
'1': { 'wt': '5,678' }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'mwOriginal': {
|
||||||
|
'id': 'mwt1',
|
||||||
|
'target': { 'wt': 'Inline' },
|
||||||
|
'params': {
|
||||||
|
'1': { 'wt': '5,678' }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'html/0/about': '#mwt1',
|
||||||
|
'html/0/rel': 'mw:WikiLink/Category',
|
||||||
|
'html/0/typeof': 'mw:Object/Template',
|
||||||
|
'html/0/data-mw': '{\"id\":\"mwt1\",\"target\":{\"wt\":\"Inline\"},\"params\":{\"1\":{\"wt\":\"5,678\"}}}',
|
||||||
|
'html/1/about': '#mwt1'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'mixedDataClose' : { 'type': '/MWtemplateInline' }
|
||||||
};
|
};
|
||||||
|
|
||||||
ve.dm.example.MWTemplate.blockParamsHash = ve.getHash( ve.dm.MWTemplateNode.static.getHashObject( ve.dm.example.MWTemplate.blockData ) );
|
ve.dm.example.MWTemplate.blockParamsHash = ve.getHash( ve.dm.MWTemplateNode.static.getHashObject( ve.dm.example.MWTemplate.blockData ) );
|
||||||
|
@ -880,6 +906,12 @@ ve.dm.example.MWTemplate.inlineStoreItems = {
|
||||||
'value': $( ve.dm.example.MWTemplate.inlineOpen + ve.dm.example.MWTemplate.inlineContent + ve.dm.example.MWTemplate.inlineClose ).get()
|
'value': $( ve.dm.example.MWTemplate.inlineOpen + ve.dm.example.MWTemplate.inlineContent + ve.dm.example.MWTemplate.inlineClose ).get()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ve.dm.example.MWTemplate.mixedParamsHash = ve.getHash( ve.dm.MWTemplateNode.static.getHashObject( ve.dm.example.MWTemplate.mixedDataOpen ) );
|
||||||
|
ve.dm.example.MWTemplate.mixedStoreItems = {
|
||||||
|
'hash': ve.dm.example.MWTemplate.mixedParamsHash,
|
||||||
|
'value': $( ve.dm.example.MWTemplate.mixed ).get()
|
||||||
|
};
|
||||||
|
|
||||||
ve.dm.example.domToDataCases = {
|
ve.dm.example.domToDataCases = {
|
||||||
'paragraph with plain text': {
|
'paragraph with plain text': {
|
||||||
'html': '<body><p>abc</p></body>',
|
'html': '<body><p>abc</p></body>',
|
||||||
|
@ -2210,22 +2242,16 @@ ve.dm.example.domToDataCases = {
|
||||||
'<meta typeof="mw:Placeholder" data-parsoid="foobar" /></body>',
|
'<meta typeof="mw:Placeholder" data-parsoid="foobar" /></body>',
|
||||||
'data': ve.dm.example.withMeta
|
'data': ve.dm.example.withMeta
|
||||||
},
|
},
|
||||||
'RDFa types spread across two attributes': {
|
'RDFa types spread across two attributes, about grouping is forced': {
|
||||||
'html': '<body><link rel="mw:WikiLink/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Object/Template"></body>',
|
'html': '<body>' + ve.dm.example.MWTemplate.mixed + '</body>',
|
||||||
'data': [
|
'data': [
|
||||||
{
|
{ 'type': 'paragraph', 'internal': { 'generated': 'wrapper' } },
|
||||||
'type': 'alienMeta',
|
ve.dm.example.MWTemplate.mixedDataOpen,
|
||||||
'attributes': {
|
ve.dm.example.MWTemplate.mixedDataClose,
|
||||||
'style': 'link',
|
{ 'type': '/paragraph' }
|
||||||
'key': 'mw:WikiLink/Category',
|
],
|
||||||
'value': './Category:Foo',
|
'storeItems': [
|
||||||
'html/0/rel': 'mw:WikiLink/Category',
|
ve.dm.example.MWTemplate.mixedStoreItems
|
||||||
'html/0/href': './Category:Foo',
|
|
||||||
'html/0/about': '#mwt1',
|
|
||||||
'html/0/typeof': 'mw:Object/Template'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ 'type': '/alienMeta' },
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
'about grouping': {
|
'about grouping': {
|
||||||
|
@ -2295,20 +2321,6 @@ ve.dm.example.domToDataCases = {
|
||||||
{ 'type': '/alienBlock' }
|
{ 'type': '/alienBlock' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
'about grouping is forced': {
|
|
||||||
'html': '<body><link rel="mw:WikiLink/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Object/Template"><span about="#mwt1">Foo</span></body>',
|
|
||||||
'data': [
|
|
||||||
{ 'type': 'paragraph', 'internal': { 'generated': 'wrapper' } },
|
|
||||||
{
|
|
||||||
'type': 'alienInline',
|
|
||||||
'attributes': {
|
|
||||||
'domElements': $( '<link rel="mw:WikiLink/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Object/Template"><span about="#mwt1">Foo</span>' ).get()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ 'type': '/alienInline' },
|
|
||||||
{ 'type': '/paragraph' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
'mw:Entity': {
|
'mw:Entity': {
|
||||||
'html': '<body><p>a<span typeof="mw:Entity">¢</span>b<span typeof="mw:Entity">¥</span><span typeof="mw:Entity">™</span></p></body>',
|
'html': '<body><p>a<span typeof="mw:Entity">¢</span>b<span typeof="mw:Entity">¥</span><span typeof="mw:Entity">™</span></p></body>',
|
||||||
'data': [
|
'data': [
|
||||||
|
|
Loading…
Reference in a new issue