elixir.rb 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. module Docs
  2. class Elixir < UrlScraper
  3. include MultipleBaseUrls
  4. self.name = 'Elixir'
  5. self.type = 'elixir'
  6. self.root_path = 'api-reference.html'
  7. self.links = {
  8. home: 'https://elixir-lang.org/',
  9. code: 'https://github.com/elixir-lang/elixir'
  10. }
  11. html_filters.push 'elixir/clean_html', 'elixir/entries', 'title'
  12. options[:container] = ->(filter) {
  13. filter.current_url.path.start_with?('/getting-started') ? '#main' : '#content'
  14. }
  15. options[:title] = false
  16. options[:root_title] = 'Elixir'
  17. options[:attribution] = <<-HTML
  18. &copy; 2012 Plataformatec<br>
  19. Licensed under the Apache License, Version 2.0.
  20. HTML
  21. def initial_urls
  22. [ "https://hexdocs.pm/elixir/#{self.class.release}/api-reference.html",
  23. "https://hexdocs.pm/eex/#{self.class.release}/EEx.html",
  24. "https://hexdocs.pm/ex_unit/#{self.class.release}/ExUnit.html",
  25. "https://hexdocs.pm/iex/#{self.class.release}/IEx.html",
  26. "https://hexdocs.pm/logger/#{self.class.release}/Logger.html",
  27. "https://hexdocs.pm/mix/#{self.class.release}/Mix.html",
  28. "https://elixir-lang.org/getting-started/introduction.html" ]
  29. end
  30. version '1.14' do
  31. self.release = '1.14.1'
  32. self.base_urls = [
  33. "https://hexdocs.pm/elixir/#{release}/",
  34. "https://hexdocs.pm/eex/#{release}/",
  35. "https://hexdocs.pm/ex_unit/#{release}/",
  36. "https://hexdocs.pm/iex/#{release}/",
  37. "https://hexdocs.pm/logger/#{release}/",
  38. "https://hexdocs.pm/mix/#{release}/",
  39. 'https://elixir-lang.org/getting-started/'
  40. ]
  41. end
  42. version '1.13' do
  43. self.release = '1.13.4'
  44. self.base_urls = [
  45. "https://hexdocs.pm/elixir/#{release}/",
  46. "https://hexdocs.pm/eex/#{release}/",
  47. "https://hexdocs.pm/ex_unit/#{release}/",
  48. "https://hexdocs.pm/iex/#{release}/",
  49. "https://hexdocs.pm/logger/#{release}/",
  50. "https://hexdocs.pm/mix/#{release}/",
  51. 'https://elixir-lang.org/getting-started/'
  52. ]
  53. end
  54. version '1.12' do
  55. self.release = '1.12.0'
  56. self.base_urls = [
  57. "https://hexdocs.pm/elixir/#{release}/",
  58. "https://hexdocs.pm/eex/#{release}/",
  59. "https://hexdocs.pm/ex_unit/#{release}/",
  60. "https://hexdocs.pm/iex/#{release}/",
  61. "https://hexdocs.pm/logger/#{release}/",
  62. "https://hexdocs.pm/mix/#{release}/",
  63. 'https://elixir-lang.org/getting-started/'
  64. ]
  65. end
  66. version '1.11' do
  67. self.release = '1.11.2'
  68. self.base_urls = [
  69. "https://hexdocs.pm/elixir/#{release}/",
  70. "https://hexdocs.pm/eex/#{release}/",
  71. "https://hexdocs.pm/ex_unit/#{release}/",
  72. "https://hexdocs.pm/iex/#{release}/",
  73. "https://hexdocs.pm/logger/#{release}/",
  74. "https://hexdocs.pm/mix/#{release}/",
  75. 'https://elixir-lang.org/getting-started/'
  76. ]
  77. end
  78. version '1.10' do
  79. self.release = '1.10.4'
  80. self.base_urls = [
  81. "https://hexdocs.pm/elixir/#{release}/",
  82. "https://hexdocs.pm/eex/#{release}/",
  83. "https://hexdocs.pm/ex_unit/#{release}/",
  84. "https://hexdocs.pm/iex/#{release}/",
  85. "https://hexdocs.pm/logger/#{release}/",
  86. "https://hexdocs.pm/mix/#{release}/",
  87. 'https://elixir-lang.org/getting-started/'
  88. ]
  89. end
  90. version '1.9' do
  91. self.release = '1.9.4'
  92. self.base_urls = [
  93. "https://hexdocs.pm/elixir/#{release}/",
  94. "https://hexdocs.pm/eex/#{release}/",
  95. "https://hexdocs.pm/ex_unit/#{release}/",
  96. "https://hexdocs.pm/iex/#{release}/",
  97. "https://hexdocs.pm/logger/#{release}/",
  98. "https://hexdocs.pm/mix/#{release}/",
  99. 'https://elixir-lang.org/getting-started/'
  100. ]
  101. end
  102. version '1.8' do
  103. self.release = '1.8.2'
  104. self.base_urls = [
  105. "https://hexdocs.pm/elixir/#{release}/",
  106. "https://hexdocs.pm/eex/#{release}/",
  107. "https://hexdocs.pm/ex_unit/#{release}/",
  108. "https://hexdocs.pm/iex/#{release}/",
  109. "https://hexdocs.pm/logger/#{release}/",
  110. "https://hexdocs.pm/mix/#{release}/",
  111. 'https://elixir-lang.org/getting-started/'
  112. ]
  113. end
  114. version '1.7' do
  115. self.release = '1.7.4'
  116. self.base_urls = [
  117. "https://hexdocs.pm/elixir/#{release}/",
  118. "https://hexdocs.pm/eex/#{release}/",
  119. "https://hexdocs.pm/ex_unit/#{release}/",
  120. "https://hexdocs.pm/iex/#{release}/",
  121. "https://hexdocs.pm/logger/#{release}/",
  122. "https://hexdocs.pm/mix/#{release}/",
  123. 'https://elixir-lang.org/getting-started/'
  124. ]
  125. end
  126. version '1.6' do
  127. self.release = '1.6.6'
  128. self.base_urls = [
  129. "https://hexdocs.pm/elixir/#{release}/",
  130. "https://hexdocs.pm/eex/#{release}/",
  131. "https://hexdocs.pm/ex_unit/#{release}/",
  132. "https://hexdocs.pm/iex/#{release}/",
  133. "https://hexdocs.pm/logger/#{release}/",
  134. "https://hexdocs.pm/mix/#{release}/",
  135. 'https://elixir-lang.org/getting-started/'
  136. ]
  137. end
  138. version '1.5' do
  139. self.release = '1.5.3'
  140. self.base_urls = [
  141. "https://hexdocs.pm/elixir/#{release}/",
  142. "https://hexdocs.pm/eex/#{release}/",
  143. "https://hexdocs.pm/ex_unit/#{release}/",
  144. "https://hexdocs.pm/iex/#{release}/",
  145. "https://hexdocs.pm/logger/#{release}/",
  146. "https://hexdocs.pm/mix/#{release}/",
  147. 'https://elixir-lang.org/getting-started/'
  148. ]
  149. end
  150. version '1.4' do
  151. self.release = '1.4.5'
  152. self.base_urls = [
  153. "https://hexdocs.pm/elixir/#{release}/",
  154. "https://hexdocs.pm/eex/#{release}/",
  155. "https://hexdocs.pm/ex_unit/#{release}/",
  156. "https://hexdocs.pm/iex/#{release}/",
  157. "https://hexdocs.pm/logger/#{release}/",
  158. "https://hexdocs.pm/mix/#{release}/",
  159. 'https://elixir-lang.org/getting-started/'
  160. ]
  161. end
  162. version '1.3' do
  163. self.release = '1.3.4'
  164. self.base_urls = [
  165. "https://hexdocs.pm/elixir/#{release}/",
  166. "https://hexdocs.pm/eex/#{release}/",
  167. "https://hexdocs.pm/ex_unit/#{release}/",
  168. "https://hexdocs.pm/iex/#{release}/",
  169. "https://hexdocs.pm/logger/#{release}/",
  170. "https://hexdocs.pm/mix/#{release}/",
  171. 'https://elixir-lang.org/getting-started/'
  172. ]
  173. end
  174. def get_latest_version(opts)
  175. doc = fetch_doc('https://hexdocs.pm/elixir/api-reference.html', opts)
  176. doc.at_css('.sidebar-projectVersion').content.strip[1..-1]
  177. end
  178. end
  179. end