module Docs
class Crystal < UrlScraper
self.type = 'crystal'
self.base_url = 'https://crystal-lang.org/'
self.initial_paths = %w(docs/index.html)
self.links = {
home: 'https://crystal-lang.org/',
code: 'https://github.com/crystal-lang/crystal'
}
html_filters.push 'crystal/entries', 'crystal/clean_html'
options[:attribution] = ->(filter) {
if filter.slug.start_with?('docs')
<<-HTML
To the extent possible under law, the persons who contributed to this work
have waived
all copyright and related or neighboring rights to this work
by associating CC0 with it.
HTML
else
<<-HTML
© 2012–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
HTML
end
}
version do
self.release = '0.35.1'
self.root_path = "api/#{release}/index.html"
options[:only_patterns] = [/\Adocs\//, /\Aapi\/#{release}\//]
options[:skip_patterns] = [/debug/i]
options[:replace_paths] = {
"api/#{release}/" => "api/#{release}/index.html",
'docs/' => 'docs/index.html'
}
end
def get_latest_version(opts)
doc = fetch_doc('https://crystal-lang.org/', opts)
doc.at_css('.latest-release').content.scan(/([0-9.]+)/)[0][0]
end
end
end