9917cbdee3be17d2dd6942f1fc559bc85dd40b2137fe54c84f59af7114a2cd5baba3b9e3e9bd7b185d09caee7cf8dc345c0178a53c5cb2d8aa144888734b05 973 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /* @flow */
  2. import { cached, camelize } from 'shared/util'
  3. const normalize = cached(camelize)
  4. function normalizeKeyName (str: string): string {
  5. if (str.match(/^v\-/)) {
  6. return str.replace(/(v-[a-z\-]+\:)([a-z\-]+)$/i, ($, directive, prop) => {
  7. return directive + normalize(prop)
  8. })
  9. }
  10. return normalize(str)
  11. }
  12. function transformNode (el: ASTElement) {
  13. if (Array.isArray(el.attrsList)) {
  14. el.attrsList.forEach(attr => {
  15. if (attr.name && attr.name.match(/\-/)) {
  16. const realName = normalizeKeyName(attr.name)
  17. if (el.attrsMap) {
  18. el.attrsMap[realName] = el.attrsMap[attr.name]
  19. delete el.attrsMap[attr.name]
  20. }
  21. if (el.rawAttrsMap && el.rawAttrsMap[attr.name]) {
  22. el.rawAttrsMap[realName] = el.rawAttrsMap[attr.name]
  23. // $flow-disable-line
  24. delete el.rawAttrsMap[attr.name]
  25. }
  26. attr.name = realName
  27. }
  28. })
  29. }
  30. }
  31. export default {
  32. transformNode
  33. }