openjdk.rb 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. module Docs
  2. class Openjdk < FileScraper
  3. self.name = 'OpenJDK'
  4. self.type = 'openjdk'
  5. self.root_path = 'overview-summary.html'
  6. self.links = {
  7. home: 'https://openjdk.java.net/',
  8. code: 'https://github.com/openjdk/jdk'
  9. }
  10. html_filters.insert_after 'internal_urls', 'openjdk/clean_urls'
  11. options[:skip_patterns] = [
  12. /compact[123]-/,
  13. /package-frame\.html/,
  14. /package-tree\.html/,
  15. /package-use\.html/,
  16. /class-use\//,
  17. /doc-files\//,
  18. /\.svg/,
  19. /\.png/
  20. ]
  21. options[:only_patterns] = [
  22. /\Ajava\./,
  23. /\Ajdk\./
  24. ]
  25. options[:attribution] = <<-HTML
  26. &copy; 1993, 2022, Oracle and/or its affiliates. All rights reserved.<br>
  27. Documentation extracted from Debian's OpenJDK Development Kit package.<br>
  28. Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br>
  29. Various third party code in OpenJDK is licensed under different licenses (see Debian package).<br>
  30. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
  31. HTML
  32. NEWFILTERS = ['openjdk/entries_new', 'openjdk/clean_html_new']
  33. version '19' do
  34. self.release = '19'
  35. self.root_path = 'index.html'
  36. self.base_url = 'https://docs.oracle.com/en/java/javase/19/docs/api/'
  37. html_filters.push NEWFILTERS
  38. options[:container] = 'main'
  39. end
  40. version '18' do
  41. self.release = '18'
  42. self.root_path = 'index.html'
  43. self.base_url = 'https://docs.oracle.com/en/java/javase/18/docs/api/'
  44. html_filters.push NEWFILTERS
  45. options[:container] = 'main'
  46. end
  47. version '17' do
  48. self.release = '17'
  49. self.root_path = 'index.html'
  50. self.base_url = 'https://docs.oracle.com/en/java/javase/17/docs/api/'
  51. html_filters.push NEWFILTERS
  52. options[:container] = 'main'
  53. end
  54. OLDFILTERS = ['openjdk/entries', 'openjdk/clean_html']
  55. version '11' do
  56. self.release = '11.0.11'
  57. self.root_path = 'index.html'
  58. self.base_url = 'https://docs.oracle.com/en/java/javase/11/docs/api/'
  59. html_filters.push OLDFILTERS
  60. end
  61. version '8' do
  62. self.release = '8'
  63. self.base_url = 'https://docs.oracle.com/javase/8/docs/api/'
  64. html_filters.push OLDFILTERS
  65. options[:only_patterns] = [
  66. /\Ajava\/beans\//,
  67. /\Ajava\/io\//,
  68. /\Ajava\/lang\//,
  69. /\Ajava\/math\//,
  70. /\Ajava\/net\//,
  71. /\Ajava\/nio\//,
  72. /\Ajava\/security\//,
  73. /\Ajava\/text\//,
  74. /\Ajava\/time\//,
  75. /\Ajava\/util\//,
  76. /\Ajavax\/annotation\//,
  77. /\Ajavax\/crypto\//,
  78. /\Ajavax\/imageio\//,
  79. /\Ajavax\/lang\//,
  80. /\Ajavax\/management\//,
  81. /\Ajavax\/naming\//,
  82. /\Ajavax\/net\//,
  83. /\Ajavax\/print\//,
  84. /\Ajavax\/script\//,
  85. /\Ajavax\/security\//,
  86. /\Ajavax\/sound\//,
  87. /\Ajavax\/tools\//
  88. ]
  89. end
  90. version '8 GUI' do
  91. self.release = '8'
  92. self.base_url = 'https://docs.oracle.com/javase/8/docs/api/'
  93. html_filters.push OLDFILTERS
  94. options[:only_patterns] = [
  95. /\Ajava\/awt\//,
  96. /\Ajavax\/swing\//
  97. ]
  98. end
  99. version '8 Web' do
  100. self.release = '8'
  101. self.base_url = 'https://docs.oracle.com/javase/8/docs/api/'
  102. html_filters.push OLDFILTERS
  103. options[:only_patterns] = [
  104. /\Ajava\/applet\//,
  105. /\Ajava\/rmi\//,
  106. /\Ajava\/sql\//,
  107. /\Ajavax\/accessibility\//,
  108. /\Ajavax\/activation\//,
  109. /\Ajavax\/activity\//,
  110. /\Ajavax\/jws\//,
  111. /\Ajavax\/rmi\//,
  112. /\Ajavax\/sql\//,
  113. /\Ajavax\/transaction\//,
  114. /\Ajavax\/xml\//,
  115. /\Aorg\/ietf\//,
  116. /\Aorg\/omg\//,
  117. /\Aorg\/w3c\//,
  118. /\Aorg\/xml\//]
  119. end
  120. # Monkey patch to properly read HTML files encoded in ISO-8859-1
  121. def read_file(path)
  122. File.read(path).force_encoding('iso-8859-1').encode('utf-8') rescue nil
  123. end
  124. def get_latest_version(opts)
  125. doc = fetch_doc("https://jdk.java.net/archive/", opts)
  126. version = doc.at_css('#downloads > table > tr > th').content
  127. version.gsub!(/\(.*\)/, '')
  128. version.gsub!(/[a-zA-z]/, '')
  129. version
  130. end
  131. end
  132. end