VersionLists.py 1.7 KB

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