Skip to content

Commit d687118

Browse files
authored
Merge pull request #1458 from MasterEnoc/openjdk
Add OpenJDK version 15
2 parents c49736b + 1b927c7 commit d687118

5 files changed

Lines changed: 143 additions & 22 deletions

File tree

docs/file-scrapers.md

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -133,23 +133,16 @@ tar xf ocaml-4.10-refman-html.tar.gz --transform 's/htmlman/ocaml/'
133133
```
134134

135135
## OpenJDK
136+
Search 'Openjdk' in https://www.debian.org/distrib/packages, find the `openjdk-$VERSION-doc` package,
137+
download it, extract it with `dpkg -x $PACKAGE ./` and move `./usr/share/doc/openjdk-16-jre-headless/api/`
138+
to `path/to/devdocs/docs/openjdk~$VERSION`
136139

137-
https://packages.debian.org/sid/openjdk-11-doc
138-
139-
```sh
140-
mkdir docs/openjdk~11
141-
curl --remote-name http://ftp.debian.org/debian/pool/main/o/openjdk-11/openjdk-11-doc_11.0.9.1+1-1_all.deb
142-
bsdtar --extract --to-stdout --file openjdk-11-doc_11.0.9.1+1-1_all.deb data.tar.xz | \
143-
bsdtar --extract --xz --file - --strip-components=6 --directory=docs/openjdk\~11/ ./usr/share/doc/openjdk-11-jre-headless/api/
144-
```
145-
146-
https://packages.debian.org/sid/openjdk-8-doc
147-
140+
If you use or have access to a Debian-based GNU/Linux distribution you can run the following command:
148141
```sh
149-
mkdir docs/openjdk~8
150-
curl --remote-name http://ftp.debian.org/debian/pool/main/o/openjdk-8/openjdk-8-doc_8u272-b10-1_all.deb
151-
bsdtar --extract --to-stdout --file openjdk-8-doc_8u272-b10-1_all.deb data.tar.xz | \
152-
bsdtar --extract --xz --file - --strip-components=6 --directory=docs/openjdk\~8/ ./usr/share/doc/openjdk-8-jre-headless/api/
142+
apt download openjdk-$VERSION-doc
143+
dpkg -x $PACKAGE ./
144+
# previous command makes a directory called 'usr' in the current directory
145+
mv ./usr/share/doc/openjdk-16-jre-headless/api/ path/to/devdocs/docs/openjdk~$VERSION
153146
```
154147

155148
## PHP

lib/docs/filters/openjdk/clean_html.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# coding: utf-8
12
# frozen_string_literal: true
23

34
module Docs
@@ -130,6 +131,13 @@ def call
130131
node.remove_attribute('class') unless node['class'] == 'inheritance'
131132
end
132133

134+
# fix ul section that contains summaries or tables
135+
css('ul').each do |node|
136+
node.css('section').each do |subnode|
137+
node.add_previous_sibling(subnode)
138+
end
139+
end
140+
133141
doc
134142
end
135143
end
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
module Docs
2+
class Openjdk
3+
class CleanHtmlNewFilter < Filter
4+
def call
5+
6+
if root_page?
7+
at_css('h1').content = "OpenJDK #{release} Documentation"
8+
end
9+
10+
css('.header .sub-title').remove
11+
12+
css('blockquote pre').each do |node|
13+
node.parent.name = 'pre'
14+
node.parent['class'] = 'highlight'
15+
node.parent['data-language'] = 'java'
16+
node.parent.content = node.content
17+
node.remove
18+
end
19+
20+
# fix ul section that contains summaries or tables
21+
css('ul').each do |node|
22+
node.css('section').each do |subnode|
23+
node.add_previous_sibling(subnode)
24+
end
25+
end
26+
27+
# add syntax highlight to code blocks
28+
css('pre > code').each do |node|
29+
node.parent['class'] = 'lang-java'
30+
node.parent['data-language'] = 'java'
31+
end
32+
33+
# add syntax highlight to each method
34+
css('.member-signature').each do |node|
35+
node.name = 'pre'
36+
node['class'] = 'lang-java'
37+
node['data-language'] = 'java'
38+
39+
node.css('span').each do |subnode|
40+
subnode.name = 'code'
41+
end
42+
43+
end
44+
45+
doc
46+
end
47+
end
48+
end
49+
end
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
module Docs
2+
class Openjdk
3+
class EntriesNewFilter < Docs::EntriesFilter
4+
5+
def get_name
6+
name = at_css('.header > .title').content.strip
7+
name.remove! 'Package '
8+
name.remove! 'Class '
9+
name.remove! 'Interface '
10+
name.remove! 'Annotation Type '
11+
name.remove! 'Enum '
12+
name.remove! %r{<.*}
13+
name
14+
end
15+
16+
def get_type
17+
return 'Packages' if slug.end_with?('package-summary')
18+
return 'Modules' if slug.end_with?('module-summary')
19+
20+
if subtitle = at_css('.header > .sub-title:last-of-type')
21+
type = subtitle.content.strip
22+
else
23+
type = at_css('.header > .title').content.strip.remove 'Package '
24+
type.remove!('Module ')
25+
end
26+
type = type.split('.')[0..2].join('.')
27+
type
28+
end
29+
30+
def additional_entries
31+
css('a[name$=".summary"]').each_with_object({}) do |summary, entries|
32+
next if summary['name'].include?('nested') || summary['name'].include?('constructor') ||
33+
summary['name'].include?('field') || summary['name'].include?('constant')
34+
summary.parent.css('.memberNameLink a').each do |node|
35+
name = node.parent.parent.content.strip
36+
name.sub! %r{\(.+?\)}m, '()'
37+
id = node['href'].remove(%r{.*#})
38+
entries[name] ||= ["#{self.name}.#{name}", id]
39+
end
40+
end.values
41+
end
42+
43+
end
44+
end
45+
end

lib/docs/scrapers/openjdk.rb

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
module Docs
22
class Openjdk < FileScraper
3-
# Downloaded from packages.debian.org/sid/openjdk-8-doc
4-
# Extracting subdirectory /usr/share/doc/openjdk-8-jre-headless/api
3+
54
self.name = 'OpenJDK'
65
self.type = 'openjdk'
76
self.root_path = 'overview-summary.html'
@@ -11,15 +10,19 @@ class Openjdk < FileScraper
1110
}
1211

1312
html_filters.insert_after 'internal_urls', 'openjdk/clean_urls'
14-
html_filters.push 'openjdk/entries', 'openjdk/clean_html'
1513

1614
options[:skip_patterns] = [
1715
/compact[123]-/,
1816
/package-frame\.html/,
1917
/package-tree\.html/,
2018
/package-use\.html/,
2119
/class-use\//,
22-
/doc-files\//]
20+
/doc-files\//,
21+
/\.svg/,
22+
/\.png/
23+
]
24+
25+
options[:only_patterns] = [/\Ajava\./]
2326

2427
options[:attribution] = <<-HTML
2528
&copy; 1993, 2020, Oracle and/or its affiliates. All rights reserved.<br>
@@ -29,16 +32,32 @@ class Openjdk < FileScraper
2932
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
3033
HTML
3134

35+
NEWFILTERS = ['openjdk/entries_new', 'openjdk/clean_html_new']
36+
37+
version '15' do
38+
self.release = '15.0.1'
39+
self.root_path = 'index.html'
40+
41+
html_filters.push NEWFILTERS
42+
43+
options[:container] = 'main'
44+
end
45+
46+
OLDFILTERS = ['openjdk/entries', 'openjdk/clean_html']
47+
3248
version '11' do
3349
self.release = '11.0.9'
3450
self.root_path = 'index.html'
3551
self.base_url = 'https://docs.oracle.com/en/java/javase/11/docs/api/'
36-
options[:only_patterns] = [/\Ajava\./]
52+
53+
html_filters.push OLDFILTERS
3754
end
3855

3956
version '8' do
4057
self.release = '8'
4158

59+
html_filters.push OLDFILTERS
60+
4261
options[:only_patterns] = [
4362
/\Ajava\/beans\//,
4463
/\Ajava\/io\//,
@@ -61,20 +80,27 @@ class Openjdk < FileScraper
6180
/\Ajavax\/script\//,
6281
/\Ajavax\/security\//,
6382
/\Ajavax\/sound\//,
64-
/\Ajavax\/tools\//]
83+
/\Ajavax\/tools\//
84+
]
6585
end
6686

6787
version '8 GUI' do
6888
self.release = '8'
6989

90+
html_filters.push OLDFILTERS
91+
7092
options[:only_patterns] = [
7193
/\Ajava\/awt\//,
72-
/\Ajavax\/swing\//]
94+
/\Ajavax\/swing\//
95+
]
96+
7397
end
7498

7599
version '8 Web' do
76100
self.release = '8'
77101

102+
html_filters.push OLDFILTERS
103+
78104
options[:only_patterns] = [
79105
/\Ajava\/applet\//,
80106
/\Ajava\/rmi\//,

0 commit comments

Comments
 (0)