gcc.rb 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. module Docs
  2. class Gcc < Gnu
  3. self.name = 'GCC'
  4. self.slug = 'gcc'
  5. self.links = {
  6. home: 'https://gcc.gnu.org/'
  7. }
  8. html_filters.push 'gcc/clean_html', 'title'
  9. options[:root_title] = false
  10. options[:title] = false
  11. options[:replace_paths] = {
  12. 'aarch64_002dfeature_002dmodifiers.html' => 'AArch64-Options.html',
  13. 'AssemblerTemplate.html' => 'Extended-Asm.html',
  14. 'AVR-Named-Address-Spaces.html' => 'Named-Address-Spaces.html',
  15. 'AVR-Variable-Attributes.html' => 'Variable-Attributes.html',
  16. 'Clobbers.html' => 'Extended-Asm.html',
  17. 'dashMF.html' => 'Preprocessor-Options.html',
  18. 'GotoLabels.html' => 'Extended-Asm.html',
  19. 'InputOperands.html' => 'Extended-Asm.html',
  20. 'OutputOperands.html' => 'Extended-Asm.html',
  21. 'PowerPC-Type-Attributes.html' => 'Type-Attributes.html',
  22. 'SPU-Type-Attributes.html' => 'Type-Attributes.html',
  23. 'Type_002dpunning.html' => 'Optimize-Options.html',
  24. 'Volatile.html' => 'Extended-Asm.html',
  25. 'Wtrigraphs.html' => 'Preprocessor-Options.html',
  26. 'x86-Type-Attributes.html' => 'Type-Attributes.html',
  27. 'x86-Variable-Attributes.html' => 'Variable-Attributes.html',
  28. 'x86floatingpointasmoperands.html' => 'Extended-Asm.html',
  29. 'x86Operandmodifiers.html' => 'Extended-Asm.html',
  30. 'Example-of-asm-with-clobbered-asm-reg.html' => 'Extended-Asm.html',
  31. 'Extended-asm-with-goto.html' => 'Extended-Asm.html',
  32. 'fdollars_002din_002didentifiers.html' => 'Preprocessor-Options.html',
  33. 'i386-Type-Attributes.html' => 'Variable-Attributes.html',
  34. 'i386-Variable-Attributes.html' => 'Variable-Attributes.html'
  35. }
  36. CPP_PATHS = {
  37. 'dashMF.html' => 'Invocation.html',
  38. 'fdollars_002din_002didentifiers.html' => 'Invocation.html',
  39. 'Identifier-characters.html' => 'Implementation_002ddefined-behavior.html',
  40. 'trigraphs.html' => 'Initial-processing.html',
  41. 'Wtrigraphs.html' => 'Invocation.html'
  42. }
  43. version '12' do
  44. self.release = '12.1.0'
  45. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  46. end
  47. version '12 CPP' do
  48. self.release = '12.1.0'
  49. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  50. end
  51. version '11' do
  52. self.release = '11.1.0'
  53. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  54. end
  55. version '11 CPP' do
  56. self.release = '11.1.0'
  57. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  58. end
  59. version '10' do
  60. self.release = '10.2.0'
  61. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  62. end
  63. version '10 CPP' do
  64. self.release = '10.2.0'
  65. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  66. end
  67. version '9' do
  68. self.release = '9.3.0'
  69. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  70. end
  71. version '9 CPP' do
  72. self.release = '9.3.0'
  73. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  74. options[:replace_paths] = CPP_PATHS
  75. end
  76. version '8' do
  77. self.release = '8.3.0'
  78. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  79. end
  80. version '8 CPP' do
  81. self.release = '8.3.0'
  82. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  83. options[:replace_paths] = CPP_PATHS
  84. end
  85. version '7' do
  86. self.release = '7.4.0'
  87. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  88. end
  89. version '7 CPP' do
  90. self.release = '7.4.0'
  91. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  92. options[:replace_paths] = CPP_PATHS
  93. end
  94. version '6' do
  95. self.release = '6.4.0'
  96. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  97. options[:root_title] = 'Using the GNU Compiler Collection (GCC)'
  98. end
  99. version '6 CPP' do
  100. self.release = '6.4.0'
  101. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  102. options[:replace_paths] = CPP_PATHS
  103. end
  104. version '5' do
  105. self.release = '5.4.0'
  106. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  107. options[:root_title] = 'Using the GNU Compiler Collection (GCC)'
  108. end
  109. version '5 CPP' do
  110. self.release = '5.4.0'
  111. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  112. options[:replace_paths] = CPP_PATHS
  113. end
  114. version '4' do
  115. self.release = '4.9.3'
  116. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  117. options[:root_title] = 'Using the GNU Compiler Collection (GCC)'
  118. end
  119. version '4 CPP' do
  120. self.release = '4.9.3'
  121. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  122. options[:replace_paths] = CPP_PATHS
  123. end
  124. def get_latest_version(opts)
  125. doc = fetch_doc('https://gcc.gnu.org/onlinedocs/', opts)
  126. label = doc.at_css('ul > li > ul > li > a').content.strip
  127. label.scan(/([0-9.]+)/)[0][0]
  128. end
  129. end
  130. end