+ /**
+ * Converts the shorthand form of the `border` style to seperate styles.
+ *
+ * @param {CKEDITOR.htmlParser.element} element
+ */
+ splitBorderShorthand: function( element ) {
+ if ( !element.styles.border ) {
+ return;
+ }
+
+ var widths = element.styles.border.match( /([\.\d]+\w+)/g ) || [ '0px' ];
+ switch ( widths.length ) {
+ case 1:
+ element.styles[ 'border-width' ] = widths[0];
+ break;
+ case 2:
+ mapStyles( [ 0, 1, 0, 1 ] );
+ break;
+ case 3:
+ mapStyles( [ 0, 1, 2, 1 ] );
+ break;
+ case 4:
+ mapStyles( [ 0, 1, 2, 3 ] );
+ break;
+ }
+
+ element.styles[ 'border-style' ] = element.styles[ 'border-style' ] ||
+ ( element.styles.border.match( /(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|initial|inherit)/ ) || [] )[ 0 ];
+ if ( !element.styles[ 'border-style' ] )
+ delete element.styles[ 'border-style' ];
+
+ delete element.styles.border;
+
+ function mapStyles( map ) {
+ element.styles['border-top-width'] = widths[ map[0] ];
+ element.styles['border-right-width'] = widths[ map[1] ];
+ element.styles['border-bottom-width'] = widths[ map[2] ];
+ element.styles['border-left-width'] = widths[ map[3] ];
+ }
+ },
+
+ listTypeToStyle: function( element ) {
+ if ( element.attributes.type ) {
+ switch ( element.attributes.type ) {
+ case 'a':
+ element.styles[ 'list-style-type' ] = 'lower-alpha';
+ break;
+ case 'A':
+ element.styles[ 'list-style-type' ] = 'upper-alpha';
+ break;
+ case 'i':
+ element.styles[ 'list-style-type' ] = 'lower-roman';
+ break;
+ case 'I':
+ element.styles[ 'list-style-type' ] = 'upper-roman';
+ break;
+ case '1':
+ element.styles[ 'list-style-type' ] = 'decimal';
+ break;
+ default:
+ element.styles[ 'list-style-type' ] = element.attributes.type;
+ }
+ }
+ },
+
+ /**
+ * Converts the shorthand form of the `margin` style to seperate styles.
+ *
+ * @param {CKEDITOR.htmlParser.element} element
+ */
+ splitMarginShorthand: function( element ) {
+ if ( !element.styles.margin ) {
+ return;
+ }
+
+ var widths = element.styles.margin.match( /(\-?[\.\d]+\w+)/g ) || [ '0px' ];
+ switch ( widths.length ) {
+ case 1:
+ mapStyles( [ 0, 0, 0, 0 ] );
+ break;
+ case 2:
+ mapStyles( [ 0, 1, 0, 1 ] );
+ break;
+ case 3:
+ mapStyles( [ 0, 1, 2, 1 ] );
+ break;
+ case 4:
+ mapStyles( [ 0, 1, 2, 3 ] );
+ break;
+ }
+
+ delete element.styles.margin;
+
+ function mapStyles( map ) {
+ element.styles['margin-top'] = widths[ map[0] ];
+ element.styles['margin-right'] = widths[ map[1] ];
+ element.styles['margin-bottom'] = widths[ map[2] ];
+ element.styles['margin-left'] = widths[ map[3] ];
+ }
+ },
+