C. Scott Ananian has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/356865 )

Change subject: WIP: Use annotations for inline LanguageConverter markup.
......................................................................

WIP: Use annotations for inline LanguageConverter markup.

Change-Id: I9cae1c6c0d6efda5b0ba3c6f454e25834ae6eacc
---
M extension.json
A modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js
2 files changed, 74 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/65/356865/1

diff --git a/extension.json b/extension.json
index 294c8a0..6238300 100644
--- a/extension.json
+++ b/extension.json
@@ -1895,6 +1895,7 @@
                },
                "ext.visualEditor.mwlanguage": {
                        "scripts": [
+                               
"modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js",
                                
"modules/ve-mw/dm/nodes/ve.dm.MWLanguageVariantNode.js",
                                
"modules/ve-mw/ce/nodes/ve.ce.MWLanguageVariantNode.js"
                        ],
diff --git 
a/modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js 
b/modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js
new file mode 100644
index 0000000..27925f5
--- /dev/null
+++ b/modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js
@@ -0,0 +1,73 @@
+/*!
+ * VisualEditor DataModel LanguageConverterRawAnnotation class.
+ *
+ * @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * DataModel MediaWiki nowiki annotation
+ *
+ * Represents `<nowiki>` tags (in HTML as `<span typeof="mw:Nowiki">`) and 
unwraps them when they change
+ * so as to retrigger Parsoid's escaping mechanism.
+ *
+ * @class
+ * @extends ve.dm.Annotation
+ * @constructor
+ * @param {Object} element [description]
+ */
+ve.dm.LanguageConverterRawAnnotation = function 
VeDmLanguageConverterRawAnnotation() {
+       // Parent constructor
+       ve.dm.LanguageConverterRawAnnotation.super.apply( this, arguments );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.dm.LanguageConverterRawAnnotation, ve.dm.Annotation );
+
+/* Static Properties */
+
+ve.dm.LanguageConverterRawAnnotation.static.name = 'mwLanguageConverterRaw';
+
+ve.dm.LanguageConverterRawAnnotation.static.matchRdfaTypes = [ 
'mw:LanguageVariant' ];
+
+ve.dm.LanguageConverterRawAnnotation.static.matchFunction = function( node ) {
+       var mwvDataJSON = node.getAttribute( 'data-mw-variant' ),
+               mwvData = mwvDataJSON ? JSON.parse( mwvDataJSON ) : {};
+       return mwvData.disabled && false; // XXX
+};
+
+ve.dm.LanguageConverterRawAnnotation.static.toDataElement = function ( 
domElements, converter ) {
+       var node = domElements[ 0 ],
+               mwvDataJSON = node.getAttribute( 'data-mw-variant' ),
+               mwvData = mwvDataJSON ? JSON.parse( mwvDataJSON ) : {},
+               text = mwvData.text || '',
+               tree = $( "<div>" ).append( $.parseHTML(text) )[ 0 ],
+               context = converter.contextStack[ converter.contextStack.length 
- 1 ],
+               childAnnotations = context.annotations.clone(),
+               annotation = converter.annotationFactory.createFromElement(
+                       { type: this.name }, converter.store
+               );
+       childAnnotations.push( annotation );
+
+       // XXX needs a stub node here as 1st element in order to reload the
+       // modelClass from in Converter.getDataFromDomSubtree.
+       return converter.getDataFromDomClean( tree, undefined, childAnnotations 
);
+};
+
+ve.dm.LanguageConverterRawAnnotation.static.toDomElements = function ( 
dataElement, doc, converter, childDomElements ) {
+       // XXX choose 'span' or 'div'
+       var domElement = document.createElement( 'span' );
+
+       domElement.setAttribute( 'typeof', 'mw:LanguageVariant' );
+       domElement.setAttribute( 'data-mw-variant', JSON.stringify({
+               disabled: true,
+               show: true,
+               text: "foo" // XXX
+       }));
+       return [ domElement ];
+};
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.LanguageConverterRawAnnotation );

-- 
To view, visit https://gerrit.wikimedia.org/r/356865
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9cae1c6c0d6efda5b0ba3c6f454e25834ae6eacc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: C. Scott Ananian <canan...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to