laravel.rb 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  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' : '#docsScreen'
  12. }
  13. options[:skip_patterns] = [
  14. %r{\A/api/[1-9]?\d\.[0-9x]/\.html},
  15. %r{\A/api/[1-9]?\d\.[0-9x]/panel\.html},
  16. %r{\A/api/[1-9]?\d\.[0-9x]/namespaces\.html},
  17. %r{\A/api/[1-9]?\d\.[0-9x]/interfaces\.html},
  18. %r{\A/api/[1-9]?\d\.[0-9x]/traits\.html},
  19. %r{\A/api/[1-9]?\d\.[0-9x]/doc-index\.html},
  20. %r{\A/api/[1-9]?\d\.[0-9x]/Illuminate\.html},
  21. %r{\A/api/[1-9]?\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 '11' do
  28. self.release = '11.11.1'
  29. self.root_path = '/api/11.x/index.html'
  30. self.initial_paths = %w(/docs/11.x/installation /api/11.x/classes.html)
  31. options[:only_patterns] = [%r{\A/api/11\.x/}, %r{\A/docs/11\.x/}]
  32. options[:fix_urls] = ->(url) do
  33. url.sub! %r{11.x/+}, "11.x/"
  34. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?![1-9]?\d)}, "#{Laravel.base_url}/docs/11.x/"
  35. url
  36. end
  37. end
  38. version '10' do
  39. self.release = '10.48.14'
  40. self.root_path = '/api/10.x/index.html'
  41. self.initial_paths = %w(/docs/10.x/installation /api/10.x/classes.html)
  42. options[:only_patterns] = [%r{\A/api/10\.x/}, %r{\A/docs/10\.x/}]
  43. options[:fix_urls] = ->(url) do
  44. url.sub! %r{10.x/+}, "10.x/"
  45. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?![1-9]?\d)}, "#{Laravel.base_url}/docs/10.x/"
  46. url
  47. end
  48. end
  49. version '9' do
  50. self.release = '9.52.16'
  51. self.root_path = '/api/9.x/index.html'
  52. self.initial_paths = %w(/docs/9.x/installation /api/9.x/classes.html)
  53. options[:only_patterns] = [%r{\A/api/9\.x/}, %r{\A/docs/9\.x/}]
  54. options[:fix_urls] = ->(url) do
  55. url.sub! %r{9.x/+}, "9.x/"
  56. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/9.x/"
  57. url
  58. end
  59. end
  60. version '8' do
  61. self.release = '8.83.27'
  62. self.root_path = '/api/8.x/index.html'
  63. self.initial_paths = %w(/docs/8.x/installation /api/8.x/classes.html)
  64. options[:only_patterns] = [%r{\A/api/8\.x/}, %r{\A/docs/8\.x/}]
  65. options[:fix_urls] = ->(url) do
  66. url.sub! %r{8.x/+}, "8.x/"
  67. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/8.x/"
  68. url
  69. end
  70. end
  71. version '7' do
  72. self.release = '7.30.6'
  73. self.root_path = '/api/7.x/index.html'
  74. self.initial_paths = %w(/docs/7.x/installation /api/7.x/classes.html)
  75. options[:only_patterns] = [%r{\A/api/7\.x/}, %r{\A/docs/7\.x/}]
  76. options[:fix_urls] = ->(url) do
  77. url.sub! %r{7.x/+}, "7.x/"
  78. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/7.x/"
  79. url
  80. end
  81. end
  82. version '6' do
  83. self.release = '6.20.44'
  84. self.root_path = '/api/6.x/index.html'
  85. self.initial_paths = %w(/docs/6.x/installation /api/6.x/classes.html)
  86. options[:only_patterns] = [%r{\A/api/6\.x/}, %r{\A/docs/6\.x/}]
  87. options[:fix_urls] = ->(url) do
  88. url.sub! %r{6.x/+}, "6.x/"
  89. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/6.x/"
  90. url
  91. end
  92. end
  93. version '5.8' do
  94. self.release = '5.8.38'
  95. self.root_path = '/api/5.8/index.html'
  96. self.initial_paths = %w(/docs/5.8/installation /api/5.8/classes.html)
  97. options[:only_patterns] = [%r{\A/api/5\.8/}, %r{\A/docs/5\.8/}]
  98. options[:fix_urls] = ->(url) do
  99. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.8/"
  100. url
  101. end
  102. end
  103. version '5.7' do
  104. self.release = '5.7.7'
  105. self.root_path = '/api/5.7/index.html'
  106. self.initial_paths = %w(/docs/5.7/installation /api/5.7/classes.html)
  107. options[:only_patterns] = [%r{\A/api/5\.7/}, %r{\A/docs/5\.7/}]
  108. options[:fix_urls] = ->(url) do
  109. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.7/"
  110. url
  111. end
  112. end
  113. version '5.6' do
  114. self.release = '5.6.33'
  115. self.root_path = '/api/5.6/index.html'
  116. self.initial_paths = %w(/docs/5.6/installation /api/5.6/classes.html)
  117. options[:only_patterns] = [%r{\A/api/5\.6/}, %r{\A/docs/5\.6/}]
  118. options[:fix_urls] = ->(url) do
  119. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.6/"
  120. url
  121. end
  122. end
  123. version '5.5' do
  124. self.release = '5.5.28'
  125. self.root_path = '/api/5.5/index.html'
  126. self.initial_paths = %w(/docs/5.5/installation /api/5.5/classes.html)
  127. options[:only_patterns] = [%r{\A/api/5\.5/}, %r{\A/docs/5\.5/}]
  128. options[:fix_urls] = ->(url) do
  129. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.5/"
  130. url
  131. end
  132. end
  133. version '5.4' do
  134. self.release = '5.4.30'
  135. self.root_path = '/api/5.4/index.html'
  136. self.initial_paths = %w(/docs/5.4/installation /api/5.4/classes.html)
  137. options[:only_patterns] = [%r{\A/api/5\.4/}, %r{\A/docs/5\.4/}]
  138. options[:fix_urls] = ->(url) do
  139. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.4/"
  140. url
  141. end
  142. end
  143. version '5.3' do
  144. self.release = '5.3.30'
  145. self.root_path = '/api/5.3/index.html'
  146. self.initial_paths = %w(/docs/5.3/installation /api/5.3/classes.html)
  147. options[:only_patterns] = [%r{\A/api/5\.3/}, %r{\A/docs/5\.3/}]
  148. options[:fix_urls] = ->(url) do
  149. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.3/"
  150. url
  151. end
  152. end
  153. version '5.2' do
  154. self.release = '5.2.31'
  155. self.root_path = '/api/5.2/index.html'
  156. self.initial_paths = %w(/docs/5.2/installation /api/5.2/classes.html)
  157. options[:only_patterns] = [%r{\A/api/5\.2/}, %r{\A/docs/5\.2/}]
  158. options[:fix_urls] = ->(url) do
  159. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.2/"
  160. url
  161. end
  162. end
  163. version '5.1' do
  164. self.release = '5.1.33'
  165. self.root_path = '/api/5.1/index.html'
  166. self.initial_paths = %w(/docs/5.1/installation /api/5.1/classes.html)
  167. options[:only_patterns] = [%r{\A/api/5\.1/}, %r{\A/docs/5\.1/}]
  168. options[:fix_urls] = ->(url) do
  169. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.1/"
  170. url
  171. end
  172. end
  173. version '4.2' do
  174. self.release = '4.2.11'
  175. self.root_path = '/api/4.2/index.html'
  176. self.initial_paths = %w(/docs/4.2/installation /api/4.2/classes.html)
  177. options[:only_patterns] = [%r{\A/api/4\.2/}, %r{\A/docs/4\.2/}]
  178. options[:fix_urls] = ->(url) do
  179. url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/4.2/"
  180. url
  181. end
  182. end
  183. def get_latest_version(opts)
  184. get_latest_github_release('laravel', 'laravel', opts)
  185. end
  186. end
  187. end