laravel.rb 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. module Docs
  2. class Laravel < UrlScraper
  3. self.type = 'laravel'
  4. self.base_url = 'https://laravel.com'
  5. self.links = {
  6. home: 'https://laravel.com/',
  7. code: 'https://github.com/laravel/laravel'
  8. }
  9. html_filters.push 'laravel/entries', 'laravel/clean_html'
  10. options[:container] = ->(filter) {
  11. filter.subpath.start_with?('/api') ? '#content' : '.page_contain'
  12. }
  13. options[:skip_patterns] = [
  14. %r{\A/api/\d\.[0-9x]/\.html},
  15. %r{\A/api/\d\.[0-9x]/panel\.html},
  16. %r{\A/api/\d\.[0-9x]/namespaces\.html},
  17. %r{\A/api/\d\.[0-9x]/interfaces\.html},
  18. %r{\A/api/\d\.[0-9x]/traits\.html},
  19. %r{\A/api/\d\.[0-9x]/doc-index\.html},
  20. %r{\A/api/\d\.[0-9x]/Illuminate\.html},
  21. %r{\A/api/\d\.[0-9x]/search\.html} ]
  22. options[:attribution] = <<-HTML
  23. &copy; Taylor Otwell<br>
  24. Licensed under the MIT License.<br>
  25. Laravel is a trademark of Taylor Otwell.
  26. HTML
  27. version '8' do
  28. self.release = '8.4.1'
  29. self.root_path = '/api/8.x/index.html'
  30. self.initial_paths = %w(/docs/8.x/installation /api/8.x/classes.html)
  31. options[:only_patterns] = [%r{\A/api/8\.x/}, %r{\A/docs/8\.x/}]
  32. options[:fix_urls] = ->(url) do
  33. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/8.x/"
  34. url
  35. end
  36. end
  37. version '7' do
  38. self.release = '7.30.1'
  39. self.root_path = '/api/7.x/index.html'
  40. self.initial_paths = %w(/docs/7.x/installation /api/7.x/classes.html)
  41. options[:only_patterns] = [%r{\A/api/7\.x/}, %r{\A/docs/7\.x/}]
  42. options[:fix_urls] = ->(url) do
  43. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/7.x/"
  44. url
  45. end
  46. end
  47. version '6' do
  48. self.release = '6.20.0'
  49. self.root_path = '/api/6.x/index.html'
  50. self.initial_paths = %w(/docs/6.x/installation /api/6.x/classes.html)
  51. options[:only_patterns] = [%r{\A/api/6\.x/}, %r{\A/docs/6\.x/}]
  52. options[:fix_urls] = ->(url) do
  53. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/6.x/"
  54. url
  55. end
  56. end
  57. version '5.8' do
  58. self.release = '5.8.38'
  59. self.root_path = '/api/5.8/index.html'
  60. self.initial_paths = %w(/docs/5.8/installation /api/5.8/classes.html)
  61. options[:only_patterns] = [%r{\A/api/5\.8/}, %r{\A/docs/5\.8/}]
  62. options[:fix_urls] = ->(url) do
  63. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.8/"
  64. url
  65. end
  66. end
  67. version '5.7' do
  68. self.release = '5.7.7'
  69. self.root_path = '/api/5.7/index.html'
  70. self.initial_paths = %w(/docs/5.7/installation /api/5.7/classes.html)
  71. options[:only_patterns] = [%r{\A/api/5\.7/}, %r{\A/docs/5\.7/}]
  72. options[:fix_urls] = ->(url) do
  73. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.7/"
  74. url
  75. end
  76. end
  77. version '5.6' do
  78. self.release = '5.6.33'
  79. self.root_path = '/api/5.6/index.html'
  80. self.initial_paths = %w(/docs/5.6/installation /api/5.6/classes.html)
  81. options[:only_patterns] = [%r{\A/api/5\.6/}, %r{\A/docs/5\.6/}]
  82. options[:fix_urls] = ->(url) do
  83. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.6/"
  84. url
  85. end
  86. end
  87. version '5.5' do
  88. self.release = '5.5.28'
  89. self.root_path = '/api/5.5/index.html'
  90. self.initial_paths = %w(/docs/5.5/installation /api/5.5/classes.html)
  91. options[:only_patterns] = [%r{\A/api/5\.5/}, %r{\A/docs/5\.5/}]
  92. options[:fix_urls] = ->(url) do
  93. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.5/"
  94. url
  95. end
  96. end
  97. version '5.4' do
  98. self.release = '5.4.30'
  99. self.root_path = '/api/5.4/index.html'
  100. self.initial_paths = %w(/docs/5.4/installation /api/5.4/classes.html)
  101. options[:only_patterns] = [%r{\A/api/5\.4/}, %r{\A/docs/5\.4/}]
  102. options[:fix_urls] = ->(url) do
  103. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.4/"
  104. url
  105. end
  106. end
  107. version '5.3' do
  108. self.release = '5.3.30'
  109. self.root_path = '/api/5.3/index.html'
  110. self.initial_paths = %w(/docs/5.3/installation /api/5.3/classes.html)
  111. options[:only_patterns] = [%r{\A/api/5\.3/}, %r{\A/docs/5\.3/}]
  112. options[:fix_urls] = ->(url) do
  113. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.3/"
  114. url
  115. end
  116. end
  117. version '5.2' do
  118. self.release = '5.2.31'
  119. self.root_path = '/api/5.2/index.html'
  120. self.initial_paths = %w(/docs/5.2/installation /api/5.2/classes.html)
  121. options[:only_patterns] = [%r{\A/api/5\.2/}, %r{\A/docs/5\.2/}]
  122. options[:fix_urls] = ->(url) do
  123. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.2/"
  124. url
  125. end
  126. end
  127. version '5.1' do
  128. self.release = '5.1.33'
  129. self.root_path = '/api/5.1/index.html'
  130. self.initial_paths = %w(/docs/5.1/installation /api/5.1/classes.html)
  131. options[:only_patterns] = [%r{\A/api/5\.1/}, %r{\A/docs/5\.1/}]
  132. options[:fix_urls] = ->(url) do
  133. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.1/"
  134. url
  135. end
  136. end
  137. version '4.2' do
  138. self.release = '4.2.11'
  139. self.root_path = '/api/4.2/index.html'
  140. self.initial_paths = %w(/docs/4.2/installation /api/4.2/classes.html)
  141. options[:only_patterns] = [%r{\A/api/4\.2/}, %r{\A/docs/4\.2/}]
  142. options[:fix_urls] = ->(url) do
  143. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/4.2/"
  144. url
  145. end
  146. end
  147. def get_latest_version(opts)
  148. get_latest_github_release('laravel', 'laravel', opts)
  149. end
  150. end
  151. end