gcc.rb 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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 '11' do
  44. self.release = '11.1.0'
  45. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  46. end
  47. version '11 CPP' do
  48. self.release = '11.1.0'
  49. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  50. end
  51. version '10' do
  52. self.release = '10.2.0'
  53. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  54. end
  55. version '10 CPP' do
  56. self.release = '10.2.0'
  57. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  58. end
  59. version '9' do
  60. self.release = '9.3.0'
  61. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  62. end
  63. version '9 CPP' do
  64. self.release = '9.3.0'
  65. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  66. options[:replace_paths] = CPP_PATHS
  67. end
  68. version '8' do
  69. self.release = '8.3.0'
  70. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  71. end
  72. version '8 CPP' do
  73. self.release = '8.3.0'
  74. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  75. options[:replace_paths] = CPP_PATHS
  76. end
  77. version '7' do
  78. self.release = '7.4.0'
  79. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  80. end
  81. version '7 CPP' do
  82. self.release = '7.4.0'
  83. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  84. options[:replace_paths] = CPP_PATHS
  85. end
  86. version '6' do
  87. self.release = '6.4.0'
  88. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  89. options[:root_title] = 'Using the GNU Compiler Collection (GCC)'
  90. end
  91. version '6 CPP' do
  92. self.release = '6.4.0'
  93. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  94. options[:replace_paths] = CPP_PATHS
  95. end
  96. version '5' do
  97. self.release = '5.4.0'
  98. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  99. options[:root_title] = 'Using the GNU Compiler Collection (GCC)'
  100. end
  101. version '5 CPP' do
  102. self.release = '5.4.0'
  103. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  104. options[:replace_paths] = CPP_PATHS
  105. end
  106. version '4' do
  107. self.release = '4.9.3'
  108. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/gcc/"
  109. options[:root_title] = 'Using the GNU Compiler Collection (GCC)'
  110. end
  111. version '4 CPP' do
  112. self.release = '4.9.3'
  113. self.base_url = "https://gcc.gnu.org/onlinedocs/gcc-#{release}/cpp/"
  114. options[:replace_paths] = CPP_PATHS
  115. end
  116. def get_latest_version(opts)
  117. doc = fetch_doc('https://gcc.gnu.org/onlinedocs/', opts)
  118. label = doc.at_css('ul > li > ul > li > a').content.strip
  119. label.scan(/([0-9.]+)/)[0][0]
  120. end
  121. end
  122. end