@@ -137,19 +137,19 @@ const parseAttributeJSXAttribute = (t, path, attributes, tagName, elementType) =
137
137
let name
138
138
let modifiers
139
139
let argument
140
- /* istanbul ignore else */
141
- if ( t . isJSXNamespacedName ( namePath ) && isDirective ( namePath . get ( 'namespace.name' ) . node ) ) {
142
- ; [ name , argument ] = namePath . get ( 'namespace.name' ) . node . split ( '--' )
143
- modifiers = namePath . get ( 'name.name' ) . node . split ( '-' )
144
- } else if ( t . isJSXIdentifier ( namePath ) ) {
145
- ; [ name , argument ] = path . get ( 'name.name' ) . node . split ( '--' )
146
- prefix = prefixes . find ( el => name . startsWith ( el ) ) || 'attrs'
147
- name = name . replace ( new RegExp ( `^${ prefix } \-?` ) , '' )
148
- name = name [ 0 ] . toLowerCase ( ) + name . substr ( 1 )
140
+ if ( t . isJSXNamespacedName ( namePath ) ) {
141
+ name = `${ namePath . get ( 'namespace.name' ) . node } :${ namePath . get ( 'name.name' ) . node } `
149
142
} else {
150
- throw new Error ( `getAttributes (attribute name): ${ namePath . type } is not supported` )
143
+ name = namePath . get ( ' name' ) . node
151
144
}
152
145
146
+ ; [ name , ...modifiers ] = name . split ( '_' )
147
+ ; [ name , argument ] = name . split ( ':' )
148
+
149
+ prefix = prefixes . find ( el => name . startsWith ( el ) ) || 'attrs'
150
+ name = name . replace ( new RegExp ( `^${ prefix } \-?` ) , '' )
151
+ name = name [ 0 ] . toLowerCase ( ) + name . substr ( 1 )
152
+
153
153
const valuePath = path . get ( 'value' )
154
154
let value
155
155
if ( ! valuePath . node ) {
@@ -168,14 +168,15 @@ const parseAttributeJSXAttribute = (t, path, attributes, tagName, elementType) =
168
168
}
169
169
}
170
170
171
+ value . _argument = argument
172
+ value . _modifiers = modifiers
173
+
171
174
if ( rootAttributes . includes ( name ) ) {
172
175
attributes [ name ] = value
173
176
} else {
174
177
if ( isDirective ( name ) ) {
175
178
name = kebabcase ( name . substr ( 1 ) )
176
179
prefix = 'directives'
177
- value . _argument = argument
178
- value . _modifiers = modifiers
179
180
}
180
181
if ( name . match ( xlinkRE ) ) {
181
182
name = name . replace ( xlinkRE , ( _ , firstCharacter ) => {
@@ -269,7 +270,7 @@ const transformDirectives = (t, directives) =>
269
270
...( directive . value . _argument
270
271
? [ t . objectProperty ( t . identifier ( 'arg' ) , t . stringLiteral ( directive . value . _argument ) ) ]
271
272
: [ ] ) ,
272
- ...( directive . value . _modifiers
273
+ ...( directive . value . _modifiers && directive . value . _modifiers . length > 0
273
274
? [
274
275
t . objectProperty (
275
276
t . identifier ( 'modifiers' ) ,
0 commit comments