本网站正在建设中(~ ̄▽ ̄)~

  • 你好~!欢迎来到中文歌声合成个人收集站-VCPedia.cn!
  • 若发现页面信息有误投稿至本站,请联系管理员。

Module:Var-array

VCPedia.cn ——关于中文歌声合成的一切。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
  1. local module = {}
  2. function module.new(name, array)
  3. local frame = mw.getCurrentFrame()
  4. local idCount = frame:callParserFunction( '#var', 'array.idCount', 0)
  5. function foo(name, array)
  6. name = '@array-innerArrayIdentifier:'..name
  7. frame:callParserFunction( '#vardefine', name, name)
  8. for i, v in ipairs(array) do
  9. if type(v) == 'table' then
  10. idCount = idCount + 1
  11. local innerArrayName = name..'___'..idCount..'___'
  12. foo(innerArrayName, v)
  13. v = '@array-innerArrayIdentifier:'..innerArrayName
  14. end
  15. frame:callParserFunction( '#vardefine', name..i, v)
  16. end
  17. frame:callParserFunction( '#vardefine', name..'.count', #array)
  18. end
  19. foo(name, array)
  20. frame:callParserFunction( '#vardefine', 'array.idCount', idCount)
  21. return name
  22. end
  23. function module.get(name)
  24. local frame = mw.getCurrentFrame()
  25. if type(name) == 'nil' then return nil end
  26. local time = 0
  27. function foo(name)
  28. local array = {}
  29. time = time + 1
  30. if time == 1 then
  31. name = '@array-innerArrayIdentifier:'..name
  32. end
  33. local count = frame:callParserFunction( '#var', name..'.count')
  34. if count == '' then return false end
  35. for i=1, count do
  36. local val = frame:callParserFunction('#var', name..i)
  37. if string.find(val, '^@array%-innerArrayIdentifier:') then
  38. array[i] = foo(val)
  39. else
  40. array[i] = val
  41. end
  42. end
  43. return array
  44. end
  45. return foo(name)
  46. end
  47. return module