versions.rb 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. module Jekyll
  2. module VersionFilter
  3. def get_version_type(version)
  4. releases = @context.registers[:site].data['project']['releases']
  5. releases.each do |type, versions|
  6. return type if versions.has_key?(version)
  7. end
  8. return nil
  9. end
  10. def get_documentation_link(v)
  11. releases = @context.registers[:site].data['project']['releases']
  12. releases.each do |type, versions|
  13. versions.each do |version, info|
  14. return info['documentation_link'] if version == v
  15. end
  16. end
  17. return nil
  18. end
  19. def get_version_link(targetVersion, page)
  20. defaultUrl = '/' + targetVersion + '/'
  21. menuByVersion = @context.registers[:site].data['menu']['version']
  22. return defaultUrl if not menuByVersion.has_key?(targetVersion)
  23. expectedUrl = page.gsub(/^\/[\d\.]+\//, defaultUrl)
  24. menuByVersion[targetVersion].each do |section, pages|
  25. pages.each do |title, url|
  26. return url if url == expectedUrl
  27. end
  28. end
  29. return defaultUrl
  30. end
  31. def get_edit_link(currentPath)
  32. project = @context.registers[:site].data['project']
  33. # Extract the version number from the current path
  34. version = currentPath.delete_prefix('/').split('/').first()
  35. if version == '' or version == 'releases'
  36. version = project['default_version']
  37. end
  38. # Edit the page on that version branch if the version is supported;
  39. # otherwise, use the default version branch
  40. versionType = get_version_type(version)
  41. if not (versionType == 'next' or versionType == 'current')
  42. version = project['default_version']
  43. end
  44. return 'https://github.com/thephpleague/' + project['repository'] + '/edit/' + version + '/docs/' + currentPath
  45. end
  46. end
  47. end
  48. Liquid::Template.register_filter(Jekyll::VersionFilter)