diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index f047ba73..bfc6225c 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,4 +1,8 @@ [ + [ + "2021-12-29", + "New documentation: PointCloudLibrary" + ], [ "2021-12-27", "New documentation: Zig" diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 97a24878..f9925f53 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -657,6 +657,11 @@ credits = [ '2005-2017 Sebastian Bergmann', 'CC BY', 'https://creativecommons.org/licenses/by/3.0/' + ], [ + 'PointCloudLibrary', + '2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.', + 'BSD', + 'https://raw.githubusercontent.com/PointCloudLibrary/pcl/master/LICENSE.txt' ], [ 'Pony', '2016-2020, The Pony Developers & 2014-2015, Causality Ltd.', diff --git a/lib/docs/filters/point_cloud_library/clean_html.rb b/lib/docs/filters/point_cloud_library/clean_html.rb new file mode 100644 index 00000000..143345d6 --- /dev/null +++ b/lib/docs/filters/point_cloud_library/clean_html.rb @@ -0,0 +1,12 @@ +module Docs + class PointCloudLibrary + class CleanHtmlFilter < Filter + def call + @doc = at_css('.contents') + css('.dynheader.closed').remove + css('.permalink').remove + doc + end + end + end +end diff --git a/lib/docs/filters/point_cloud_library/entries.rb b/lib/docs/filters/point_cloud_library/entries.rb new file mode 100644 index 00000000..29b22214 --- /dev/null +++ b/lib/docs/filters/point_cloud_library/entries.rb @@ -0,0 +1,45 @@ +module Docs + class PointCloudLibrary + class EntriesFilter < Docs::EntriesFilter + def get_type + group = at_css('.title .ingroups') + return group.content unless group.nil? + name = get_name + return 'pcl' unless name.match(/^pcl::.*::/) + name.gsub(/^pcl::/, '').gsub(/::.*/, '') + end + + def get_name + at_css('.title').content.gsub(/[<(].*/, '') + end + + def additional_entries + # Only add additional_entries from PointCloudLibrary modules (group__*.html) + return [] if not slug.include?("group") + entries = [] + + css('table.memberdecls td.memItemRight').map do |node| + href = node.at_css("a").attr('href') + if href.index("#").nil? then + href += "#" + end + + # Skip page that's not crawled + # TODO: Sync this with options[:skip_patterns] in point_cloud_library.rb + if href.include?("namespace") || href.include?("structsvm") || href.include?("classopenni") then + next + end + + # Only add function and classes documentation + doxygen_type = node.parent.parent.at_css("tr.heading").text.strip + if not(doxygen_type == "Functions" || doxygen_type == "Classes") then + next + end + + entries << [node.content, href] + end + entries + end + end + end +end diff --git a/lib/docs/scrapers/point_cloud_library.rb b/lib/docs/scrapers/point_cloud_library.rb new file mode 100644 index 00000000..f9ce6827 --- /dev/null +++ b/lib/docs/scrapers/point_cloud_library.rb @@ -0,0 +1,41 @@ +module Docs + class PointCloudLibrary < UrlScraper + self.name = 'PointCloudLibrary' + self.type = 'point_cloud_library' + self.slug = 'point_cloud_library' + self.base_url = 'https://pointclouds.org/documentation/' + self.root_path = 'modules.html' + # Add hierarchy.html to crawl all classes*.html that's not reachable from modules.html + self.initial_paths = [ + "https://pointclouds.org/documentation/hierarchy.html" + ] + self.release = '1.12.1' + + self.links = { + home: 'https://pointclouds.org/', + code: 'https://github.com/PointCloudLibrary/pcl' + } + + html_filters.push 'point_cloud_library/entries', 'point_cloud_library/clean_html' + + # Remove the `clean_text` because Doxygen are actually creating empty + # anchor such as to do anchor link.. and that anchor + # will be removed by clean_text + self.text_filters = FilterStack.new + text_filters.push 'images', 'inner_html', 'attribution' + + def get_latest_version(opts) + get_latest_github_release('PointCloudLibrary', 'pcl', opts)[4..] + end + + options[:attribution] = <<-HTML + © 2009–2012, Willow Garage, Inc.
+ © 2012–, Open Perception, Inc.
+ Licensed under the BSD License. + HTML + + # Skip source code since it doesn't provide any useful docs + options[:skip_patterns] = [/_source/, /namespace/, /h\.html/, /structsvm/, /struct_/, /classopenni/, /class_/] + + end +end diff --git a/public/icons/docs/point_cloud_library/16.png b/public/icons/docs/point_cloud_library/16.png new file mode 100644 index 00000000..90f0b827 Binary files /dev/null and b/public/icons/docs/point_cloud_library/16.png differ diff --git a/public/icons/docs/point_cloud_library/16@2x.png b/public/icons/docs/point_cloud_library/16@2x.png new file mode 100644 index 00000000..f56f6b4b Binary files /dev/null and b/public/icons/docs/point_cloud_library/16@2x.png differ diff --git a/public/icons/docs/point_cloud_library/SOURCE b/public/icons/docs/point_cloud_library/SOURCE new file mode 100644 index 00000000..180ad4e2 --- /dev/null +++ b/public/icons/docs/point_cloud_library/SOURCE @@ -0,0 +1 @@ +https://github.com/PointCloudLibrary/pcl/blob/master/pcl.png