VersionLists.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from homepagebuilder.core.project import Project
  2. from homepagebuilder.interfaces import require,script,format_code
  3. mcv = require('MinecraftVersions') # 需求前置 MinecraftVersions
  4. MANIFSET = mcv.get_manifset()
  5. FULL_VERSIONS = MANIFSET.get('versions')
  6. ID_LIST = [version.get('id') for version in FULL_VERSIONS]
  7. @script('VersionArchiveList')
  8. def version_achive_list(cat_name,env,card,**_):
  9. cat_name = format_code(code = cat_name,data=card,env=env)
  10. cards = list(filter(lambda card:isinstance(card.get('cats'),list)
  11. and cat_name in card.get('cats'), env.get('project').get_all_card()))
  12. code = '<StackPanel Margin="8,2,8,15">'
  13. res = env.get('project').resources
  14. cards.sort(key=lambda card:ID_LIST.index(format_code(card['version-id'],
  15. data=card,env=env)))
  16. if len(cards) > 0 and cards[0]['version-type-id'] not in ['Release','April-Fools']:
  17. code += res.components['VersionLinks/Future']
  18. for vercard in cards:
  19. if vercard.get('lack'):
  20. code += format_code(code = res.components['VersionLinks/Lack'],
  21. data=vercard,env=env)
  22. else:
  23. code += format_code(code = res.components['VersionLinks/Common'],
  24. data=vercard,env=env)
  25. code += '</StackPanel>'
  26. return code
  27. @script('VersionLatestList')
  28. def version_latest_list(env,**_):
  29. proj = env.get('project')
  30. components = env.get('components')
  31. code = ''
  32. for version_type in ['release','snapshot']:
  33. if latest_version := mcv.get_latest(version_type):
  34. vercard = proj.base_library.get_card(latest_version,False)
  35. code += format_code(code = components['VersionLinks/Latest'],
  36. data=vercard,env=env)
  37. return code