@@ -59,7 +59,8 @@ module.exports = function (h, opts) {
5959 if ( typeof parts [ i ] [ 2 ] === 'object' && ! key ) {
6060 for ( copyKey in parts [ i ] [ 2 ] ) {
6161 if ( parts [ i ] [ 2 ] . hasOwnProperty ( copyKey ) && ! cur [ 1 ] [ copyKey ] ) {
62- cur [ 1 ] [ copyKey ] = parts [ i ] [ 2 ] [ copyKey ]
62+ if ( / d a t a - / . test ( copyKey ) ) data ( cur [ 1 ] , copyKey , parts [ i ] [ 2 ] [ copyKey ] )
63+ else cur [ 1 ] [ copyKey ] = parts [ i ] [ 2 ] [ copyKey ]
6364 }
6465 }
6566 } else {
@@ -71,11 +72,13 @@ module.exports = function (h, opts) {
7172 var j = i
7273 for ( ; i < parts . length ; i ++ ) {
7374 if ( parts [ i ] [ 0 ] === ATTR_VALUE || parts [ i ] [ 0 ] === ATTR_KEY ) {
74- if ( ! cur [ 1 ] [ key ] ) cur [ 1 ] [ key ] = strfn ( parts [ i ] [ 1 ] )
75+ if ( / d a t a - / . test ( key ) ) data ( cur [ 1 ] , key , parts [ i ] [ 1 ] )
76+ else if ( ! cur [ 1 ] [ key ] ) cur [ 1 ] [ key ] = strfn ( parts [ i ] [ 1 ] )
7577 else cur [ 1 ] [ key ] = concat ( cur [ 1 ] [ key ] , parts [ i ] [ 1 ] )
7678 } else if ( parts [ i ] [ 0 ] === VAR
7779 && ( parts [ i ] [ 1 ] === ATTR_VALUE || parts [ i ] [ 1 ] === ATTR_KEY ) ) {
78- if ( ! cur [ 1 ] [ key ] ) cur [ 1 ] [ key ] = strfn ( parts [ i ] [ 2 ] )
80+ if ( / d a t a - / . test ( key ) ) data ( cur [ 1 ] , key , parts [ i ] [ 2 ] )
81+ else if ( ! cur [ 1 ] [ key ] ) cur [ 1 ] [ key ] = strfn ( parts [ i ] [ 2 ] )
7982 else cur [ 1 ] [ key ] = concat ( cur [ 1 ] [ key ] , parts [ i ] [ 2 ] )
8083 } else {
8184 if ( key . length && ! cur [ 1 ] [ key ] && i === j
@@ -229,6 +232,11 @@ module.exports = function (h, opts) {
229232 }
230233 }
231234
235+ function data ( cur , key , value ) {
236+ if ( ! cur . attributes ) cur . attributes = { }
237+ cur . attributes [ key ] = strfn ( value )
238+ }
239+
232240 function strfn ( x ) {
233241 if ( typeof x === 'function' ) return x
234242 else if ( typeof x === 'string' ) return x
0 commit comments