angular.rb 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. module Docs
  2. class Angular < UrlScraper
  3. include StubRootPage
  4. self.name = 'Angular.js'
  5. self.slug = 'angular'
  6. self.type = 'angular'
  7. self.root_path = 'api.html'
  8. self.initial_paths = %w(guide.html)
  9. html_filters.push 'angular/clean_html', 'angular/entries', 'title'
  10. text_filters.push 'angular/clean_urls'
  11. options[:title] = false
  12. options[:root_title] = 'Angular.js'
  13. options[:decode_and_clean_paths] = true
  14. options[:fix_urls_before_parse] = ->(str) do
  15. str.gsub!('[', '%5B')
  16. str.gsub!(']', '%5D')
  17. str
  18. end
  19. options[:fix_urls] = ->(url) do
  20. %w(api guide).each do |str|
  21. url.sub! "/partials/#{str}/#{str}/", "/partials/#{str}/"
  22. url.sub! %r{/#{str}/img/}, "/img/"
  23. url.sub! %r{/#{str}/(.+?)/#{str}/}, "/#{str}/"
  24. url.sub! %r{/partials/#{str}/(.+?)(?<!\.html)(?:\z|(#.*))}, "/partials/#{str}/\\1.html\\2"
  25. end
  26. url
  27. end
  28. options[:only_patterns] = [%r{\Aapi/}, %r{\Aguide/}]
  29. options[:skip] = %w(api/ng.html)
  30. options[:attribution] = <<-HTML
  31. &copy; 2010&ndash;2016 Google, Inc.<br>
  32. Licensed under the Creative Commons Attribution License 4.0.
  33. HTML
  34. version '1.5' do
  35. self.release = '1.5.3'
  36. self.base_url = "https://code.angularjs.org/#{release}/docs/partials/"
  37. end
  38. version '1.4' do
  39. self.release = '1.4.10'
  40. self.base_url = "https://code.angularjs.org/#{release}/docs/partials/"
  41. end
  42. version '1.3' do
  43. self.release = '1.3.20'
  44. self.base_url = "https://code.angularjs.org/#{release}/docs/partials/"
  45. end
  46. version '1.2' do
  47. self.release = '1.2.29'
  48. self.base_url = "https://code.angularjs.org/#{release}/docs/partials/"
  49. end
  50. private
  51. def root_page_body
  52. require 'capybara/dsl'
  53. Capybara.current_driver = :selenium
  54. Capybara.run_server = false
  55. Capybara.app_host = 'https://code.angularjs.org'
  56. Capybara.visit("/#{self.class.release}/docs/api")
  57. Capybara.find('.side-navigation')['innerHTML']
  58. end
  59. end
  60. end