module Docs
class Openjdk < FileScraper
self.name = 'OpenJDK'
self.type = 'openjdk'
self.root_path = 'overview-summary.html'
self.links = {
home: 'https://openjdk.java.net/',
code: 'https://github.com/openjdk/jdk'
}
html_filters.insert_after 'internal_urls', 'openjdk/clean_urls'
options[:skip_patterns] = [
/compact[123]-/,
/package-frame\.html/,
/package-tree\.html/,
/package-use\.html/,
/class-use\//,
/doc-files\//,
/\.svg/,
/\.png/
]
options[:only_patterns] = [
/\Ajava\./,
/\Ajdk\./
]
options[:attribution] = <<-HTML
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
HTML
NEWFILTERS = ['openjdk/entries_new', 'openjdk/clean_html_new']
version '21' do
self.release = '21'
self.root_path = 'index.html'
self.base_url = 'https://docs.oracle.com/en/java/javase/21/docs/api/'
html_filters.push NEWFILTERS
options[:container] = 'main'
end
version '17' do
self.release = '17'
self.root_path = 'index.html'
self.base_url = 'https://docs.oracle.com/en/java/javase/17/docs/api/'
html_filters.push NEWFILTERS
options[:container] = 'main'
end
OLDFILTERS = ['openjdk/entries', 'openjdk/clean_html']
version '11' do
self.release = '11.0.11'
self.root_path = 'index.html'
self.base_url = 'https://docs.oracle.com/en/java/javase/11/docs/api/'
html_filters.push OLDFILTERS
end
version '8' do
self.release = '8'
self.base_url = 'https://docs.oracle.com/javase/8/docs/api/'
html_filters.push OLDFILTERS
options[:only_patterns] = [
/\Ajava\/beans\//,
/\Ajava\/io\//,
/\Ajava\/lang\//,
/\Ajava\/math\//,
/\Ajava\/net\//,
/\Ajava\/nio\//,
/\Ajava\/security\//,
/\Ajava\/text\//,
/\Ajava\/time\//,
/\Ajava\/util\//,
/\Ajavax\/annotation\//,
/\Ajavax\/crypto\//,
/\Ajavax\/imageio\//,
/\Ajavax\/lang\//,
/\Ajavax\/management\//,
/\Ajavax\/naming\//,
/\Ajavax\/net\//,
/\Ajavax\/print\//,
/\Ajavax\/script\//,
/\Ajavax\/security\//,
/\Ajavax\/sound\//,
/\Ajavax\/tools\//
]
end
version '8 GUI' do
self.release = '8'
self.base_url = 'https://docs.oracle.com/javase/8/docs/api/'
html_filters.push OLDFILTERS
options[:only_patterns] = [
/\Ajava\/awt\//,
/\Ajavax\/swing\//
]
end
version '8 Web' do
self.release = '8'
self.base_url = 'https://docs.oracle.com/javase/8/docs/api/'
html_filters.push OLDFILTERS
options[:only_patterns] = [
/\Ajava\/applet\//,
/\Ajava\/rmi\//,
/\Ajava\/sql\//,
/\Ajavax\/accessibility\//,
/\Ajavax\/activation\//,
/\Ajavax\/activity\//,
/\Ajavax\/jws\//,
/\Ajavax\/rmi\//,
/\Ajavax\/sql\//,
/\Ajavax\/transaction\//,
/\Ajavax\/xml\//,
/\Aorg\/ietf\//,
/\Aorg\/omg\//,
/\Aorg\/w3c\//,
/\Aorg\/xml\//]
end
# Monkey patch to properly read HTML files encoded in ISO-8859-1
def read_file(path)
File.read(path).force_encoding('iso-8859-1').encode('utf-8') rescue nil
end
def get_latest_version(opts)
doc = fetch_doc("https://jdk.java.net/archive/", opts)
version = doc.at_css('#downloads > table > tr > th').content
version.gsub!(/\(.*\)/, '')
version.gsub!(/[a-zA-z]/, '')
version
end
end
end