ember.rb 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. module Docs
  2. class Ember < UrlScraper
  3. class << self
  4. attr_accessor :guide_url
  5. end
  6. self.name = 'Ember.js'
  7. self.slug = 'ember'
  8. self.type = 'ember'
  9. self.release = '2.7.0'
  10. self.base_url = 'http://emberjs.com/api/'
  11. self.guide_url = "https://guides.emberjs.com/v#{self.release}/"
  12. self.initial_urls = [guide_url]
  13. self.links = {
  14. home: 'http://emberjs.com/',
  15. code: 'https://github.com/emberjs/ember.js'
  16. }
  17. html_filters.push 'ember/entries', 'ember/clean_html', 'title'
  18. options[:trailing_slash] = false
  19. options[:title] = false
  20. options[:root_title] = 'Ember.js'
  21. options[:container] = ->(filter) do
  22. if filter.base_url.path.start_with?('/api')
  23. filter.root_page? ? '#toc-list' : '#content'
  24. else
  25. 'main'
  26. end
  27. end
  28. # Duplicates
  29. options[:skip] = %w(classes/String.html data/classes/DS.html)
  30. options[:skip_patterns] = [/\._/, /contributing/]
  31. options[:attribution] = <<-HTML
  32. &copy; 2016 Yehuda Katz, Tom Dale and Ember.js contributors<br>
  33. Licensed under the MIT License.
  34. HTML
  35. def guide_url
  36. @guide_url ||= URL.parse(self.class.guide_url)
  37. end
  38. private
  39. def process_url?(url)
  40. base_url.contains?(url) || guide_url.contains?(url)
  41. end
  42. def process_response(response)
  43. original_scheme = @base_url.scheme
  44. original_host = @base_url.host
  45. original_path = @base_url.path
  46. @base_url.scheme = response.effective_url.scheme
  47. @base_url.host = response.effective_url.host
  48. @base_url.path = response.effective_url.path[/\A\/v[\d\.]+\//, 0] || '/api/'
  49. super
  50. ensure
  51. @base_url.scheme = original_scheme
  52. @base_url.host = original_host
  53. @base_url.path = original_path
  54. end
  55. end
  56. end