1
0

openjdk.rb 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. module Docs
  2. class Openjdk < FileScraper
  3. # Downloaded from packages.debian.org/sid/openjdk-8-doc
  4. # Extracting subdirectory /usr/share/doc/openjdk-8-jre-headless/api
  5. self.name = 'OpenJDK'
  6. self.type = 'openjdk'
  7. self.root_path = 'overview-summary.html'
  8. self.links = {
  9. home: 'https://openjdk.java.net/',
  10. code: 'https://github.com/openjdk/jdk'
  11. }
  12. html_filters.insert_after 'internal_urls', 'openjdk/clean_urls'
  13. html_filters.push 'openjdk/entries', 'openjdk/clean_html'
  14. options[:skip_patterns] = [
  15. /compact[123]-/,
  16. /package-frame\.html/,
  17. /package-tree\.html/,
  18. /package-use\.html/,
  19. /class-use\//,
  20. /doc-files\//]
  21. options[:attribution] = <<-HTML
  22. &copy; 1993, 2020, Oracle and/or its affiliates. All rights reserved.<br>
  23. Documentation extracted from Debian's OpenJDK Development Kit package.<br>
  24. Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br>
  25. Various third party code in OpenJDK is licensed under different licenses (see Debian package).<br>
  26. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
  27. HTML
  28. version '11' do
  29. self.release = '11.0.9'
  30. self.root_path = 'index.html'
  31. self.base_url = 'https://docs.oracle.com/en/java/javase/11/docs/api/'
  32. options[:only_patterns] = [/\Ajava\./]
  33. end
  34. version '8' do
  35. self.release = '8'
  36. options[:only_patterns] = [
  37. /\Ajava\/beans\//,
  38. /\Ajava\/io\//,
  39. /\Ajava\/lang\//,
  40. /\Ajava\/math\//,
  41. /\Ajava\/net\//,
  42. /\Ajava\/nio\//,
  43. /\Ajava\/security\//,
  44. /\Ajava\/text\//,
  45. /\Ajava\/time\//,
  46. /\Ajava\/util\//,
  47. /\Ajavax\/annotation\//,
  48. /\Ajavax\/crypto\//,
  49. /\Ajavax\/imageio\//,
  50. /\Ajavax\/lang\//,
  51. /\Ajavax\/management\//,
  52. /\Ajavax\/naming\//,
  53. /\Ajavax\/net\//,
  54. /\Ajavax\/print\//,
  55. /\Ajavax\/script\//,
  56. /\Ajavax\/security\//,
  57. /\Ajavax\/sound\//,
  58. /\Ajavax\/tools\//]
  59. end
  60. version '8 GUI' do
  61. self.release = '8'
  62. options[:only_patterns] = [
  63. /\Ajava\/awt\//,
  64. /\Ajavax\/swing\//]
  65. end
  66. version '8 Web' do
  67. self.release = '8'
  68. options[:only_patterns] = [
  69. /\Ajava\/applet\//,
  70. /\Ajava\/rmi\//,
  71. /\Ajava\/sql\//,
  72. /\Ajavax\/accessibility\//,
  73. /\Ajavax\/activation\//,
  74. /\Ajavax\/activity\//,
  75. /\Ajavax\/jws\//,
  76. /\Ajavax\/rmi\//,
  77. /\Ajavax\/sql\//,
  78. /\Ajavax\/transaction\//,
  79. /\Ajavax\/xml\//,
  80. /\Aorg\/ietf\//,
  81. /\Aorg\/omg\//,
  82. /\Aorg\/w3c\//,
  83. /\Aorg\/xml\//]
  84. end
  85. # Monkey patch to properly read HTML files encoded in ISO-8859-1
  86. def read_file(path)
  87. File.read(path).force_encoding('iso-8859-1').encode('utf-8') rescue nil
  88. end
  89. def get_latest_version(opts)
  90. latest_version = 8
  91. current_attempt = latest_version
  92. attempts = 0
  93. while attempts < 3
  94. current_attempt += 1
  95. doc = fetch_doc("https://packages.debian.org/sid/openjdk-#{current_attempt}-doc", opts)
  96. if doc.at_css('.perror').nil?
  97. latest_version = current_attempt
  98. attempts = 0
  99. else
  100. attempts += 1
  101. end
  102. end
  103. latest_version
  104. end
  105. end
  106. end