qiita_org 0.1.24 → 0.1.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1613) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.yardopts +4 -0
  4. data/Gemfile +7 -0
  5. data/Gemfile.lock +39 -0
  6. data/gems/ruby/2.7.0/bin/_guard-core +27 -0
  7. data/gems/ruby/2.7.0/bin/coderay +27 -0
  8. data/gems/ruby/2.7.0/bin/guard +27 -0
  9. data/gems/ruby/2.7.0/bin/listen +27 -0
  10. data/gems/ruby/2.7.0/bin/pry +27 -0
  11. data/gems/ruby/2.7.0/bin/redcarpet +27 -0
  12. data/gems/ruby/2.7.0/bin/yard +27 -0
  13. data/gems/ruby/2.7.0/bin/yardoc +27 -0
  14. data/gems/ruby/2.7.0/bin/yri +27 -0
  15. data/gems/ruby/2.7.0/cache/coderay-1.1.3.gem +0 -0
  16. data/gems/ruby/2.7.0/cache/ffi-1.13.1.gem +0 -0
  17. data/gems/ruby/2.7.0/cache/formatador-0.2.5.gem +0 -0
  18. data/gems/ruby/2.7.0/cache/guard-2.16.2.gem +0 -0
  19. data/gems/ruby/2.7.0/cache/guard-yard-2.2.1.gem +0 -0
  20. data/gems/ruby/2.7.0/cache/listen-3.3.1.gem +0 -0
  21. data/gems/ruby/2.7.0/cache/lumberjack-1.2.8.gem +0 -0
  22. data/gems/ruby/2.7.0/cache/method_source-1.0.0.gem +0 -0
  23. data/gems/ruby/2.7.0/cache/nenv-0.3.0.gem +0 -0
  24. data/gems/ruby/2.7.0/cache/notiffany-0.1.3.gem +0 -0
  25. data/gems/ruby/2.7.0/cache/pry-0.13.1.gem +0 -0
  26. data/gems/ruby/2.7.0/cache/rb-fsevent-0.10.4.gem +0 -0
  27. data/gems/ruby/2.7.0/cache/rb-inotify-0.10.1.gem +0 -0
  28. data/gems/ruby/2.7.0/cache/redcarpet-3.5.0.gem +0 -0
  29. data/gems/ruby/2.7.0/cache/shellany-0.0.1.gem +0 -0
  30. data/gems/ruby/2.7.0/cache/yard-0.9.25.gem +0 -0
  31. data/gems/ruby/2.7.0/cache/yard-activesupport-concern-0.0.1.gem +0 -0
  32. data/gems/ruby/2.7.0/extensions/x86_64-darwin-17/2.7.0/ffi-1.13.1/ffi_c.bundle +0 -0
  33. data/gems/ruby/2.7.0/extensions/x86_64-darwin-17/2.7.0/ffi-1.13.1/gem.build_complete +0 -0
  34. data/gems/ruby/2.7.0/extensions/x86_64-darwin-17/2.7.0/ffi-1.13.1/gem_make.out +125 -0
  35. data/gems/ruby/2.7.0/extensions/x86_64-darwin-17/2.7.0/ffi-1.13.1/mkmf.log +208 -0
  36. data/gems/ruby/2.7.0/extensions/x86_64-darwin-17/2.7.0/redcarpet-3.5.0/gem.build_complete +0 -0
  37. data/gems/ruby/2.7.0/extensions/x86_64-darwin-17/2.7.0/redcarpet-3.5.0/gem_make.out +45 -0
  38. data/gems/ruby/2.7.0/extensions/x86_64-darwin-17/2.7.0/redcarpet-3.5.0/redcarpet.bundle +0 -0
  39. data/gems/ruby/2.7.0/gems/coderay-1.1.3/MIT-LICENSE +22 -0
  40. data/gems/ruby/2.7.0/gems/coderay-1.1.3/README_INDEX.rdoc +123 -0
  41. data/gems/ruby/2.7.0/gems/coderay-1.1.3/bin/coderay +215 -0
  42. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay.rb +284 -0
  43. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/duo.rb +81 -0
  44. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders.rb +18 -0
  45. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/_map.rb +17 -0
  46. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/comment_filter.rb +25 -0
  47. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/count.rb +39 -0
  48. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/debug.rb +49 -0
  49. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/debug_lint.rb +63 -0
  50. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/div.rb +23 -0
  51. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/encoder.rb +190 -0
  52. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/filter.rb +58 -0
  53. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/html.rb +333 -0
  54. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/html/css.rb +65 -0
  55. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/html/numbering.rb +108 -0
  56. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/html/output.rb +164 -0
  57. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/json.rb +83 -0
  58. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/lines_of_code.rb +45 -0
  59. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/lint.rb +59 -0
  60. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/null.rb +18 -0
  61. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/page.rb +24 -0
  62. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/span.rb +23 -0
  63. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/statistic.rb +95 -0
  64. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/terminal.rb +195 -0
  65. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/text.rb +46 -0
  66. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/token_kind_filter.rb +111 -0
  67. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/xml.rb +72 -0
  68. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/encoders/yaml.rb +50 -0
  69. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/for_redcloth.rb +95 -0
  70. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/helpers/file_type.rb +151 -0
  71. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/helpers/plugin.rb +55 -0
  72. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/helpers/plugin_host.rb +221 -0
  73. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/helpers/word_list.rb +72 -0
  74. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners.rb +27 -0
  75. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/_map.rb +24 -0
  76. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/c.rb +189 -0
  77. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/clojure.rb +217 -0
  78. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/cpp.rb +217 -0
  79. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/css.rb +196 -0
  80. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/debug.rb +75 -0
  81. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/delphi.rb +144 -0
  82. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/diff.rb +221 -0
  83. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/erb.rb +81 -0
  84. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/go.rb +208 -0
  85. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/groovy.rb +268 -0
  86. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/haml.rb +168 -0
  87. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/html.rb +275 -0
  88. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/java.rb +174 -0
  89. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/java/builtin_types.rb +421 -0
  90. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/java_script.rb +236 -0
  91. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/json.rb +98 -0
  92. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/lua.rb +280 -0
  93. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/php.rb +527 -0
  94. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/python.rb +287 -0
  95. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/raydebug.rb +75 -0
  96. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/ruby.rb +477 -0
  97. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/ruby/patterns.rb +178 -0
  98. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/ruby/string_state.rb +79 -0
  99. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/sass.rb +232 -0
  100. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/scanner.rb +337 -0
  101. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/sql.rb +169 -0
  102. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/taskpaper.rb +36 -0
  103. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/text.rb +26 -0
  104. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/xml.rb +17 -0
  105. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/scanners/yaml.rb +140 -0
  106. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/styles.rb +15 -0
  107. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/styles/_map.rb +7 -0
  108. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/styles/alpha.rb +153 -0
  109. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/styles/style.rb +18 -0
  110. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/token_kinds.rb +85 -0
  111. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/tokens.rb +164 -0
  112. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb +55 -0
  113. data/gems/ruby/2.7.0/gems/coderay-1.1.3/lib/coderay/version.rb +3 -0
  114. data/gems/ruby/2.7.0/gems/ffi-1.13.1/.appveyor.yml +30 -0
  115. data/gems/ruby/2.7.0/gems/ffi-1.13.1/.github/workflows/ci.yml +64 -0
  116. data/gems/ruby/2.7.0/gems/ffi-1.13.1/.gitignore +25 -0
  117. data/gems/ruby/2.7.0/gems/ffi-1.13.1/.gitmodules +4 -0
  118. data/gems/ruby/2.7.0/gems/ffi-1.13.1/.travis.yml +58 -0
  119. data/gems/ruby/2.7.0/gems/ffi-1.13.1/.yardopts +5 -0
  120. data/gems/ruby/2.7.0/gems/ffi-1.13.1/CHANGELOG.md +222 -0
  121. data/gems/ruby/2.7.0/gems/ffi-1.13.1/COPYING +49 -0
  122. data/gems/ruby/2.7.0/gems/ffi-1.13.1/Gemfile +17 -0
  123. data/gems/ruby/2.7.0/gems/ffi-1.13.1/LICENSE +24 -0
  124. data/gems/ruby/2.7.0/gems/ffi-1.13.1/LICENSE.SPECS +22 -0
  125. data/gems/ruby/2.7.0/gems/ffi-1.13.1/README.md +124 -0
  126. data/gems/ruby/2.7.0/gems/ffi-1.13.1/Rakefile +177 -0
  127. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/.sitearchdir.time +0 -0
  128. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/AbstractMemory.c +1105 -0
  129. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/AbstractMemory.h +175 -0
  130. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/ArrayType.c +162 -0
  131. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/ArrayType.h +59 -0
  132. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Buffer.c +365 -0
  133. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Call.c +493 -0
  134. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Call.h +107 -0
  135. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/ClosurePool.c +280 -0
  136. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/ClosurePool.h +57 -0
  137. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/DynamicLibrary.c +339 -0
  138. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/DynamicLibrary.h +98 -0
  139. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Function.c +902 -0
  140. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Function.h +87 -0
  141. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/FunctionInfo.c +270 -0
  142. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/LastError.c +229 -0
  143. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/LastError.h +47 -0
  144. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/LongDouble.c +65 -0
  145. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/LongDouble.h +47 -0
  146. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Makefile +269 -0
  147. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/MappedType.c +168 -0
  148. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/MappedType.h +59 -0
  149. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/MemoryPointer.c +197 -0
  150. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/MemoryPointer.h +53 -0
  151. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/MethodHandle.c +352 -0
  152. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/MethodHandle.h +56 -0
  153. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Platform.c +83 -0
  154. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Platform.h +45 -0
  155. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Pointer.c +508 -0
  156. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Pointer.h +63 -0
  157. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Struct.c +825 -0
  158. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Struct.h +112 -0
  159. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/StructByValue.c +150 -0
  160. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/StructByValue.h +55 -0
  161. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/StructLayout.c +704 -0
  162. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Thread.c +134 -0
  163. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Thread.h +81 -0
  164. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Type.c +379 -0
  165. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Type.h +61 -0
  166. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Types.c +139 -0
  167. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Types.h +89 -0
  168. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/Variadic.c +298 -0
  169. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/compat.h +82 -0
  170. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/extconf.h +5 -0
  171. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/extconf.rb +82 -0
  172. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/ffi.c +93 -0
  173. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/ffi_c.bundle +0 -0
  174. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/.libs/libffi.8.dylib +0 -0
  175. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/.libs/libffi.dylib +1 -0
  176. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/.libs/libffi.la +1 -0
  177. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/.libs/libffi.lai +41 -0
  178. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/.libs/libffi_convenience.la +1 -0
  179. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/Makefile +1796 -0
  180. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/config.log +1428 -0
  181. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/config.status +2400 -0
  182. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/fficonfig.h +218 -0
  183. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/include/Makefile +605 -0
  184. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/include/ffi.h +523 -0
  185. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/include/ffitarget.h +160 -0
  186. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/libffi.la +41 -0
  187. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/libffi.pc +11 -0
  188. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/libffi_convenience.la +41 -0
  189. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/libtool +11813 -0
  190. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/local.exp +2 -0
  191. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/man/Makefile +559 -0
  192. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/.deps/.dirstamp +0 -0
  193. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/.dirstamp +0 -0
  194. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/closures.lo +12 -0
  195. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/java_raw_api.lo +12 -0
  196. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/prep_cif.lo +12 -0
  197. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/raw_api.lo +12 -0
  198. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/types.lo +12 -0
  199. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/x86/.deps/.dirstamp +0 -0
  200. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/x86/.dirstamp +0 -0
  201. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/x86/ffi64.lo +12 -0
  202. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/x86/ffiw64.lo +12 -0
  203. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/x86/unix64.lo +12 -0
  204. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/src/x86/win64.lo +12 -0
  205. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/stamp-h1 +1 -0
  206. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-x86_64-darwin17/testsuite/Makefile +645 -0
  207. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi.bsd.mk +40 -0
  208. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi.darwin.mk +105 -0
  209. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi.gnu.mk +32 -0
  210. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi.mk +18 -0
  211. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi.vc.mk +26 -0
  212. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi.vc64.mk +26 -0
  213. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.appveyor.yml +66 -0
  214. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.gitattributes +4 -0
  215. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.github/issue_template.md +10 -0
  216. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.gitignore +38 -0
  217. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis.yml +83 -0
  218. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/ar-lib +270 -0
  219. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/bfin-sim.exp +58 -0
  220. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/build-cross-in-container.sh +14 -0
  221. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/build-in-container.sh +12 -0
  222. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/build.sh +142 -0
  223. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/compile +351 -0
  224. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/install.sh +71 -0
  225. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/m32r-sim.exp +58 -0
  226. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/moxie-sim.exp +60 -0
  227. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/or1k-sim.exp +58 -0
  228. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/powerpc-eabisim.exp +58 -0
  229. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/site.exp +27 -0
  230. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/.travis/wine-sim.exp +55 -0
  231. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/ChangeLog.old +7407 -0
  232. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/LICENSE +21 -0
  233. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +353 -0
  234. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/Makefile.am +160 -0
  235. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/README.md +482 -0
  236. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/acinclude.m4 +479 -0
  237. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/autogen.sh +2 -0
  238. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/config.guess +1466 -0
  239. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/config.sub +1836 -0
  240. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/configure.ac +410 -0
  241. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/configure.host +306 -0
  242. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +201 -0
  243. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/include/Makefile.am +9 -0
  244. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/include/ffi.h.in +523 -0
  245. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  246. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/include/ffi_common.h +153 -0
  247. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/libffi.map.in +76 -0
  248. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/libffi.pc.in +11 -0
  249. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +997 -0
  250. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/libtool-version +29 -0
  251. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  252. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_append_flag.m4 +50 -0
  253. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +194 -0
  254. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +122 -0
  255. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +53 -0
  256. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +88 -0
  257. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_configure_args.m4 +49 -0
  258. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +302 -0
  259. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +267 -0
  260. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +89 -0
  261. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/m4/ax_require_defined.m4 +37 -0
  262. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/make_sunver.pl +333 -0
  263. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/man/Makefile.am +8 -0
  264. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/man/ffi.3 +41 -0
  265. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
  266. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/man/ffi_prep_cif.3 +68 -0
  267. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  268. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.sln +33 -0
  269. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj +130 -0
  270. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters +57 -0
  271. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user +4 -0
  272. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +511 -0
  273. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/msvcc.sh +353 -0
  274. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/aarch64/ffi.c +1015 -0
  275. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/aarch64/ffitarget.h +92 -0
  276. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  277. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/aarch64/sysv.S +451 -0
  278. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +506 -0
  279. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/alpha/ffi.c +521 -0
  280. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/alpha/ffitarget.h +57 -0
  281. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  282. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/alpha/osf.S +282 -0
  283. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  284. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  285. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  286. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arm/ffi.c +854 -0
  287. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arm/ffitarget.h +89 -0
  288. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  289. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arm/sysv.S +385 -0
  290. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/arm/sysv_msvc_arm32.S +311 -0
  291. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/avr32/ffi.c +423 -0
  292. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/avr32/ffitarget.h +55 -0
  293. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/avr32/sysv.S +208 -0
  294. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  295. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  296. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  297. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/closures.c +1004 -0
  298. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/cris/ffi.c +386 -0
  299. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/cris/ffitarget.h +56 -0
  300. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
  301. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/debug.c +64 -0
  302. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/dlmalloc.c +5166 -0
  303. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
  304. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
  305. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/frv/ffitarget.h +62 -0
  306. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/ia64/ffi.c +604 -0
  307. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/ia64/ffitarget.h +56 -0
  308. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
  309. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/ia64/unix.S +567 -0
  310. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/java_raw_api.c +374 -0
  311. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
  312. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m32r/ffitarget.h +53 -0
  313. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
  314. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m68k/ffi.c +362 -0
  315. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m68k/ffitarget.h +54 -0
  316. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m68k/sysv.S +357 -0
  317. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  318. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  319. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  320. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  321. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/metag/ffitarget.h +53 -0
  322. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  323. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  324. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  325. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  326. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/mips/ffi.c +1130 -0
  327. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/mips/ffitarget.h +244 -0
  328. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/mips/n32.S +663 -0
  329. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/mips/o32.S +504 -0
  330. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/moxie/eabi.S +101 -0
  331. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/moxie/ffi.c +285 -0
  332. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  333. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  334. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  335. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  336. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  337. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  338. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  339. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/pa/ffi.c +674 -0
  340. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/pa/ffitarget.h +80 -0
  341. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/pa/hpux32.S +370 -0
  342. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/pa/linux.S +380 -0
  343. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/aix.S +566 -0
  344. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/aix_closure.S +694 -0
  345. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
  346. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/darwin.S +378 -0
  347. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +571 -0
  348. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/ffi.c +175 -0
  349. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +1440 -0
  350. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +1153 -0
  351. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +105 -0
  352. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  353. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/ffitarget.h +204 -0
  354. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/linux64.S +283 -0
  355. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +552 -0
  356. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +397 -0
  357. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/powerpc/sysv.S +173 -0
  358. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/prep_cif.c +263 -0
  359. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/raw_api.c +267 -0
  360. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/riscv/ffi.c +481 -0
  361. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/riscv/ffitarget.h +69 -0
  362. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/riscv/sysv.S +293 -0
  363. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/s390/ffi.c +756 -0
  364. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/s390/ffitarget.h +70 -0
  365. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  366. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/s390/sysv.S +325 -0
  367. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sh/ffi.c +717 -0
  368. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sh/ffitarget.h +54 -0
  369. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
  370. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sh64/ffi.c +469 -0
  371. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sh64/ffitarget.h +58 -0
  372. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sh64/sysv.S +539 -0
  373. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sparc/ffi.c +468 -0
  374. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  375. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sparc/ffitarget.h +81 -0
  376. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  377. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sparc/v8.S +443 -0
  378. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/sparc/v9.S +440 -0
  379. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  380. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  381. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  382. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/types.c +108 -0
  383. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  384. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  385. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  386. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  387. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/ffi.c +764 -0
  388. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/ffi64.c +888 -0
  389. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/ffitarget.h +160 -0
  390. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/ffiw64.c +313 -0
  391. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  392. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  393. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/sysv.S +1138 -0
  394. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/sysv_intel.S +995 -0
  395. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/unix64.S +622 -0
  396. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/win64.S +240 -0
  397. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  398. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  399. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  400. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/src/xtensa/sysv.S +258 -0
  401. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/stamp-h.in +1 -0
  402. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/Makefile.am +122 -0
  403. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
  404. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/lib/libffi.exp +640 -0
  405. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +283 -0
  406. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
  407. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
  408. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +78 -0
  409. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +50 -0
  410. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +63 -0
  411. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1745 -0
  412. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2885 -0
  413. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +743 -0
  414. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  415. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +46 -0
  416. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +54 -0
  417. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +26 -0
  418. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +138 -0
  419. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
  420. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +60 -0
  421. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +61 -0
  422. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +74 -0
  423. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
  424. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  425. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/many.c +59 -0
  426. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  427. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  428. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  429. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +52 -0
  430. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  431. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  432. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
  433. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
  434. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +36 -0
  435. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
  436. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
  437. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
  438. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
  439. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
  440. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
  441. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
  442. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
  443. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +43 -0
  444. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
  445. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
  446. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
  447. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
  448. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
  449. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  450. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  451. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  452. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +67 -0
  453. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +57 -0
  454. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
  455. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +60 -0
  456. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +64 -0
  457. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +66 -0
  458. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
  459. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
  460. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +81 -0
  461. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +68 -0
  462. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  463. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  464. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  465. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  466. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  467. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +67 -0
  468. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +89 -0
  469. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +81 -0
  470. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +81 -0
  471. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +82 -0
  472. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +89 -0
  473. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +92 -0
  474. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +90 -0
  475. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +95 -0
  476. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +55 -0
  477. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +94 -0
  478. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +95 -0
  479. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +96 -0
  480. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +102 -0
  481. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +89 -0
  482. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +91 -0
  483. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +93 -0
  484. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +113 -0
  485. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +90 -0
  486. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +95 -0
  487. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +90 -0
  488. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +90 -0
  489. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +95 -0
  490. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +98 -0
  491. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +90 -0
  492. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +109 -0
  493. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +98 -0
  494. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +124 -0
  495. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +113 -0
  496. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +99 -0
  497. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +117 -0
  498. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +97 -0
  499. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +88 -0
  500. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +90 -0
  501. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +91 -0
  502. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +93 -0
  503. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +91 -0
  504. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +92 -0
  505. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +132 -0
  506. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +115 -0
  507. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +95 -0
  508. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +91 -0
  509. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +91 -0
  510. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +92 -0
  511. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +91 -0
  512. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +91 -0
  513. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +93 -0
  514. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +66 -0
  515. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +43 -0
  516. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +61 -0
  517. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +42 -0
  518. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +105 -0
  519. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +61 -0
  520. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +70 -0
  521. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +55 -0
  522. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +74 -0
  523. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +74 -0
  524. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +86 -0
  525. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +91 -0
  526. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +74 -0
  527. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +86 -0
  528. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +74 -0
  529. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +142 -0
  530. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +44 -0
  531. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +42 -0
  532. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +42 -0
  533. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +114 -0
  534. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +42 -0
  535. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar_va.c +44 -0
  536. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +43 -0
  537. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +45 -0
  538. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +45 -0
  539. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +47 -0
  540. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +43 -0
  541. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort_va.c +44 -0
  542. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +36 -0
  543. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +138 -0
  544. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +341 -0
  545. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +152 -0
  546. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +161 -0
  547. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +134 -0
  548. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +121 -0
  549. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +110 -0
  550. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +111 -0
  551. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +111 -0
  552. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +112 -0
  553. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +131 -0
  554. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +111 -0
  555. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +131 -0
  556. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +131 -0
  557. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +90 -0
  558. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +145 -0
  559. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +148 -0
  560. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +124 -0
  561. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +125 -0
  562. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +70 -0
  563. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +117 -0
  564. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +54 -0
  565. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  566. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  567. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  568. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  569. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  570. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  571. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  572. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  573. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  574. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  575. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  576. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  577. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  578. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  579. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  580. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  581. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +36 -0
  582. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  583. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  584. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  585. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  586. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  587. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  588. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  589. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  590. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  591. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  592. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  593. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  594. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  595. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  596. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  597. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  598. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  599. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  600. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  601. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  602. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  603. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  604. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  605. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  606. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  607. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  608. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  609. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  610. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  611. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  612. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/rbffi.h +55 -0
  613. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/rbffi_endian.h +59 -0
  614. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/win32/stdbool.h +8 -0
  615. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/win32/stdint.h +201 -0
  616. data/gems/ruby/2.7.0/gems/ffi-1.13.1/ffi.gemspec +43 -0
  617. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi.rb +28 -0
  618. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/autopointer.rb +203 -0
  619. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/buffer.rb +4 -0
  620. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/callback.rb +4 -0
  621. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/data_converter.rb +67 -0
  622. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/enum.rb +296 -0
  623. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/errno.rb +43 -0
  624. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/ffi.rb +46 -0
  625. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/io.rb +62 -0
  626. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/library.rb +592 -0
  627. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/managedstruct.rb +84 -0
  628. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/memorypointer.rb +1 -0
  629. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform.rb +179 -0
  630. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
  631. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/aarch64-freebsd12/types.conf +128 -0
  632. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/aarch64-linux/types.conf +104 -0
  633. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/arm-freebsd/types.conf +152 -0
  634. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
  635. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/arm-linux/types.conf +132 -0
  636. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-cygwin/types.conf +3 -0
  637. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-darwin/types.conf +100 -0
  638. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-freebsd/types.conf +152 -0
  639. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
  640. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-gnu/types.conf +107 -0
  641. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-linux/types.conf +103 -0
  642. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-netbsd/types.conf +126 -0
  643. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  644. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-solaris/types.conf +122 -0
  645. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/i386-windows/types.conf +52 -0
  646. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/ia64-linux/types.conf +104 -0
  647. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mips-linux/types.conf +102 -0
  648. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mips64-linux/types.conf +104 -0
  649. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mips64el-linux/types.conf +104 -0
  650. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mipsel-linux/types.conf +102 -0
  651. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  652. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  653. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  654. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  655. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/powerpc-aix/types.conf +180 -0
  656. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
  657. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/powerpc-linux/types.conf +130 -0
  658. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  659. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
  660. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/s390-linux/types.conf +102 -0
  661. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/s390x-linux/types.conf +102 -0
  662. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/sparc-linux/types.conf +102 -0
  663. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/sparc-solaris/types.conf +128 -0
  664. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  665. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  666. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
  667. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
  668. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-darwin/types.conf +130 -0
  669. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
  670. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  671. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
  672. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-linux/types.conf +132 -0
  673. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
  674. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
  675. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
  676. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/platform/x86_64-windows/types.conf +52 -0
  677. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/pointer.rb +167 -0
  678. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/struct.rb +316 -0
  679. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/struct_by_reference.rb +72 -0
  680. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/struct_layout.rb +96 -0
  681. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/struct_layout_builder.rb +227 -0
  682. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/tools/const_generator.rb +230 -0
  683. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/tools/generator.rb +105 -0
  684. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/tools/generator_task.rb +32 -0
  685. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/tools/struct_generator.rb +194 -0
  686. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/tools/types_generator.rb +137 -0
  687. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/types.rb +194 -0
  688. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/union.rb +43 -0
  689. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/variadic.rb +78 -0
  690. data/gems/ruby/2.7.0/gems/ffi-1.13.1/lib/ffi/version.rb +3 -0
  691. data/gems/ruby/2.7.0/gems/ffi-1.13.1/samples/getlogin.rb +8 -0
  692. data/gems/ruby/2.7.0/gems/ffi-1.13.1/samples/getpid.rb +8 -0
  693. data/gems/ruby/2.7.0/gems/ffi-1.13.1/samples/gettimeofday.rb +18 -0
  694. data/gems/ruby/2.7.0/gems/ffi-1.13.1/samples/hello.rb +8 -0
  695. data/gems/ruby/2.7.0/gems/ffi-1.13.1/samples/inotify.rb +60 -0
  696. data/gems/ruby/2.7.0/gems/ffi-1.13.1/samples/pty.rb +75 -0
  697. data/gems/ruby/2.7.0/gems/ffi-1.13.1/samples/qsort.rb +20 -0
  698. data/gems/ruby/2.7.0/gems/formatador-0.2.5/CONTRIBUTING.md +18 -0
  699. data/gems/ruby/2.7.0/gems/formatador-0.2.5/CONTRIBUTORS.md +16 -0
  700. data/gems/ruby/2.7.0/gems/formatador-0.2.5/Gemfile +3 -0
  701. data/gems/ruby/2.7.0/gems/formatador-0.2.5/LICENSE.md +20 -0
  702. data/gems/ruby/2.7.0/gems/formatador-0.2.5/README.rdoc +117 -0
  703. data/gems/ruby/2.7.0/gems/formatador-0.2.5/Rakefile +143 -0
  704. data/gems/ruby/2.7.0/gems/formatador-0.2.5/changelog.txt +27 -0
  705. data/gems/ruby/2.7.0/gems/formatador-0.2.5/formatador.gemspec +83 -0
  706. data/gems/ruby/2.7.0/gems/formatador-0.2.5/lib/formatador.rb +131 -0
  707. data/gems/ruby/2.7.0/gems/formatador-0.2.5/lib/formatador/progressbar.rb +91 -0
  708. data/gems/ruby/2.7.0/gems/formatador-0.2.5/lib/formatador/table.rb +98 -0
  709. data/gems/ruby/2.7.0/gems/formatador-0.2.5/tests/basic_tests.rb +29 -0
  710. data/gems/ruby/2.7.0/gems/formatador-0.2.5/tests/table_tests.rb +96 -0
  711. data/gems/ruby/2.7.0/gems/formatador-0.2.5/tests/tests_helper.rb +15 -0
  712. data/gems/ruby/2.7.0/gems/guard-2.16.2/CHANGELOG.md +1 -0
  713. data/gems/ruby/2.7.0/gems/guard-2.16.2/LICENSE +22 -0
  714. data/gems/ruby/2.7.0/gems/guard-2.16.2/README.md +183 -0
  715. data/gems/ruby/2.7.0/gems/guard-2.16.2/bin/_guard-core +11 -0
  716. data/gems/ruby/2.7.0/gems/guard-2.16.2/bin/guard +111 -0
  717. data/gems/ruby/2.7.0/gems/guard-2.16.2/images/failed.png +0 -0
  718. data/gems/ruby/2.7.0/gems/guard-2.16.2/images/pending.png +0 -0
  719. data/gems/ruby/2.7.0/gems/guard-2.16.2/images/success.png +0 -0
  720. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard.rb +169 -0
  721. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb +59 -0
  722. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/cli.rb +200 -0
  723. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/cli/environments/bundler.rb +22 -0
  724. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/cli/environments/evaluate_only.rb +35 -0
  725. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/cli/environments/valid.rb +69 -0
  726. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commander.rb +104 -0
  727. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commands/all.rb +37 -0
  728. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commands/change.rb +31 -0
  729. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commands/notification.rb +26 -0
  730. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commands/pause.rb +29 -0
  731. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commands/reload.rb +36 -0
  732. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commands/scope.rb +38 -0
  733. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/commands/show.rb +24 -0
  734. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/config.rb +18 -0
  735. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/deprecated/dsl.rb +45 -0
  736. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/deprecated/evaluator.rb +39 -0
  737. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/deprecated/guard.rb +328 -0
  738. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/deprecated/guardfile.rb +84 -0
  739. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/deprecated/watcher.rb +27 -0
  740. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/dsl.rb +438 -0
  741. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/dsl_describer.rb +160 -0
  742. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/dsl_reader.rb +51 -0
  743. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/group.rb +64 -0
  744. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/guardfile.rb +37 -0
  745. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/guardfile/evaluator.rb +232 -0
  746. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/guardfile/generator.rb +128 -0
  747. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/interactor.rb +53 -0
  748. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/debugging.rb +68 -0
  749. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/groups.rb +40 -0
  750. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/helpers.rb +13 -0
  751. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/plugins.rb +53 -0
  752. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/queue.rb +51 -0
  753. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/scope.rb +121 -0
  754. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/session.rb +180 -0
  755. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/state.rb +25 -0
  756. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb +33 -0
  757. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/traps.rb +10 -0
  758. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/jobs/base.rb +21 -0
  759. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/jobs/pry_wrapper.rb +326 -0
  760. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/jobs/sleep.rb +26 -0
  761. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/notifier.rb +71 -0
  762. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/options.rb +22 -0
  763. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/plugin.rb +303 -0
  764. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/plugin_util.rb +191 -0
  765. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/rake_task.rb +42 -0
  766. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/runner.rb +128 -0
  767. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/templates/Guardfile +16 -0
  768. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/terminal.rb +13 -0
  769. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/ui.rb +262 -0
  770. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/ui/colors.rb +56 -0
  771. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/ui/config.rb +70 -0
  772. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/ui/logger.rb +30 -0
  773. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/version.rb +3 -0
  774. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/watcher.rb +88 -0
  775. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/watcher/pattern.rb +24 -0
  776. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/watcher/pattern/deprecated_regexp.rb +45 -0
  777. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/watcher/pattern/match_result.rb +18 -0
  778. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/watcher/pattern/matcher.rb +33 -0
  779. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/watcher/pattern/pathname_path.rb +15 -0
  780. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/watcher/pattern/simple_path.rb +23 -0
  781. data/gems/ruby/2.7.0/gems/guard-2.16.2/lib/tasks/releaser.rb +116 -0
  782. data/gems/ruby/2.7.0/gems/guard-2.16.2/man/guard.1 +108 -0
  783. data/gems/ruby/2.7.0/gems/guard-2.16.2/man/guard.1.html +196 -0
  784. data/gems/ruby/2.7.0/gems/guard-yard-2.2.1/LICENSE +19 -0
  785. data/gems/ruby/2.7.0/gems/guard-yard-2.2.1/README.markdown +59 -0
  786. data/gems/ruby/2.7.0/gems/guard-yard-2.2.1/lib/guard/yard.rb +74 -0
  787. data/gems/ruby/2.7.0/gems/guard-yard-2.2.1/lib/guard/yard/no_server.rb +10 -0
  788. data/gems/ruby/2.7.0/gems/guard-yard-2.2.1/lib/guard/yard/server.rb +79 -0
  789. data/gems/ruby/2.7.0/gems/guard-yard-2.2.1/lib/guard/yard/templates/Guardfile +5 -0
  790. data/gems/ruby/2.7.0/gems/guard-yard-2.2.1/lib/guard/yard/version.rb +5 -0
  791. data/gems/ruby/2.7.0/gems/listen-3.3.1/CHANGELOG.md +1 -0
  792. data/gems/ruby/2.7.0/gems/listen-3.3.1/CONTRIBUTING.md +45 -0
  793. data/gems/ruby/2.7.0/gems/listen-3.3.1/LICENSE.txt +22 -0
  794. data/gems/ruby/2.7.0/gems/listen-3.3.1/README.md +359 -0
  795. data/gems/ruby/2.7.0/gems/listen-3.3.1/bin/listen +12 -0
  796. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen.rb +47 -0
  797. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter.rb +43 -0
  798. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter/base.rb +129 -0
  799. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter/bsd.rb +108 -0
  800. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter/config.rb +28 -0
  801. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter/darwin.rb +77 -0
  802. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter/linux.rb +109 -0
  803. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter/polling.rb +39 -0
  804. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/adapter/windows.rb +100 -0
  805. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/backend.rb +40 -0
  806. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/change.rb +78 -0
  807. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/cli.rb +66 -0
  808. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/directory.rb +95 -0
  809. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/event/config.rb +45 -0
  810. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/event/loop.rb +93 -0
  811. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/event/processor.rb +128 -0
  812. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/event/queue.rb +54 -0
  813. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/file.rb +87 -0
  814. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/fsm.rb +130 -0
  815. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/listener.rb +134 -0
  816. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/listener/config.rb +43 -0
  817. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/logger.rb +35 -0
  818. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/options.rb +25 -0
  819. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/queue_optimizer.rb +134 -0
  820. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/record.rb +132 -0
  821. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/record/entry.rb +66 -0
  822. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/record/symlink_detector.rb +41 -0
  823. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/silencer.rb +102 -0
  824. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/silencer/controller.rb +50 -0
  825. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/thread.rb +52 -0
  826. data/gems/ruby/2.7.0/gems/listen-3.3.1/lib/listen/version.rb +5 -0
  827. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/CHANGELOG.md +129 -0
  828. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/MIT_LICENSE.txt +20 -0
  829. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/README.md +278 -0
  830. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/VERSION +1 -0
  831. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack.rb +93 -0
  832. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/context.rb +35 -0
  833. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device.rb +42 -0
  834. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device/date_rolling_log_file.rb +65 -0
  835. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device/log_file.rb +33 -0
  836. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device/multi.rb +46 -0
  837. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device/null.rb +15 -0
  838. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device/rolling_log_file.rb +145 -0
  839. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device/size_rolling_log_file.rb +63 -0
  840. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/device/writer.rb +182 -0
  841. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter.rb +152 -0
  842. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/date_time_formatter.rb +25 -0
  843. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/exception_formatter.rb +37 -0
  844. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/id_formatter.rb +23 -0
  845. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/inspect_formatter.rb +12 -0
  846. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/object_formatter.rb +12 -0
  847. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/pretty_print_formatter.rb +25 -0
  848. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/string_formatter.rb +12 -0
  849. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/strip_formatter.rb +12 -0
  850. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/formatter/structured_formatter.rb +63 -0
  851. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/log_entry.rb +66 -0
  852. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/logger.rb +522 -0
  853. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/rack.rb +9 -0
  854. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/rack/context.rb +18 -0
  855. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/rack/request_id.rb +27 -0
  856. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/rack/unit_of_work.rb +17 -0
  857. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/severity.rb +26 -0
  858. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/tag_formatter.rb +96 -0
  859. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/tagged_logger_support.rb +66 -0
  860. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/tagged_logging.rb +29 -0
  861. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/tags.rb +42 -0
  862. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lib/lumberjack/template.rb +121 -0
  863. data/gems/ruby/2.7.0/gems/lumberjack-1.2.8/lumberjack.gemspec +31 -0
  864. data/gems/ruby/2.7.0/gems/method_source-1.0.0/.circleci/config.yml +139 -0
  865. data/gems/ruby/2.7.0/gems/method_source-1.0.0/.gemtest +0 -0
  866. data/gems/ruby/2.7.0/gems/method_source-1.0.0/.yardopts +1 -0
  867. data/gems/ruby/2.7.0/gems/method_source-1.0.0/CHANGELOG.md +10 -0
  868. data/gems/ruby/2.7.0/gems/method_source-1.0.0/Gemfile +2 -0
  869. data/gems/ruby/2.7.0/gems/method_source-1.0.0/LICENSE +22 -0
  870. data/gems/ruby/2.7.0/gems/method_source-1.0.0/README.markdown +93 -0
  871. data/gems/ruby/2.7.0/gems/method_source-1.0.0/Rakefile +81 -0
  872. data/gems/ruby/2.7.0/gems/method_source-1.0.0/lib/method_source.rb +141 -0
  873. data/gems/ruby/2.7.0/gems/method_source-1.0.0/lib/method_source/code_helpers.rb +154 -0
  874. data/gems/ruby/2.7.0/gems/method_source-1.0.0/lib/method_source/source_location.rb +138 -0
  875. data/gems/ruby/2.7.0/gems/method_source-1.0.0/lib/method_source/version.rb +3 -0
  876. data/gems/ruby/2.7.0/gems/method_source-1.0.0/method_source.gemspec +33 -0
  877. data/gems/ruby/2.7.0/gems/method_source-1.0.0/spec/method_source/code_helpers_spec.rb +43 -0
  878. data/gems/ruby/2.7.0/gems/method_source-1.0.0/spec/method_source_spec.rb +143 -0
  879. data/gems/ruby/2.7.0/gems/method_source-1.0.0/spec/spec_helper.rb +101 -0
  880. data/gems/ruby/2.7.0/gems/nenv-0.3.0/.gitignore +14 -0
  881. data/gems/ruby/2.7.0/gems/nenv-0.3.0/LICENSE.txt +22 -0
  882. data/gems/ruby/2.7.0/gems/nenv-0.3.0/README.md +320 -0
  883. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv.rb +30 -0
  884. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/autoenvironment.rb +9 -0
  885. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/builder.rb +9 -0
  886. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/environment.rb +81 -0
  887. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/environment/dumper.rb +15 -0
  888. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/environment/dumper/default.rb +9 -0
  889. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/environment/loader.rb +20 -0
  890. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/environment/loader/default.rb +9 -0
  891. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/environment/loader/predicate.rb +18 -0
  892. data/gems/ruby/2.7.0/gems/nenv-0.3.0/lib/nenv/version.rb +3 -0
  893. data/gems/ruby/2.7.0/gems/nenv-0.3.0/nenv.gemspec +27 -0
  894. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/LICENSE.txt +22 -0
  895. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/README.md +89 -0
  896. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/images/failed.png +0 -0
  897. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/images/pending.png +0 -0
  898. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/images/success.png +0 -0
  899. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany.rb +6 -0
  900. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier.rb +210 -0
  901. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/base.rb +127 -0
  902. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/config.rb +34 -0
  903. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/detected.rb +122 -0
  904. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/emacs.rb +97 -0
  905. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/emacs/client.rb +52 -0
  906. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/file.rb +44 -0
  907. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/gntp.rb +92 -0
  908. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/growl.rb +82 -0
  909. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/libnotify.rb +54 -0
  910. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/notifysend.rb +91 -0
  911. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/rb_notifu.rb +89 -0
  912. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/terminal_notifier.rb +59 -0
  913. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/terminal_title.rb +39 -0
  914. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/tmux.rb +132 -0
  915. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/tmux/client.rb +107 -0
  916. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/tmux/notification.rb +62 -0
  917. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/notifier/tmux/session.rb +40 -0
  918. data/gems/ruby/2.7.0/gems/notiffany-0.1.3/lib/notiffany/version.rb +3 -0
  919. data/gems/ruby/2.7.0/gems/pry-0.13.1/CHANGELOG.md +1076 -0
  920. data/gems/ruby/2.7.0/gems/pry-0.13.1/LICENSE +25 -0
  921. data/gems/ruby/2.7.0/gems/pry-0.13.1/README.md +452 -0
  922. data/gems/ruby/2.7.0/gems/pry-0.13.1/bin/pry +13 -0
  923. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry.rb +146 -0
  924. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/basic_object.rb +10 -0
  925. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/block_command.rb +22 -0
  926. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/class_command.rb +194 -0
  927. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/cli.rb +227 -0
  928. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/code.rb +365 -0
  929. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/code/code_file.rb +114 -0
  930. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/code/code_range.rb +73 -0
  931. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/code/loc.rb +105 -0
  932. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/code_object.rb +197 -0
  933. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/color_printer.rb +66 -0
  934. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/command.rb +520 -0
  935. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/command_set.rb +418 -0
  936. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/command_state.rb +31 -0
  937. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/amend_line.rb +103 -0
  938. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/bang.rb +24 -0
  939. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/bang_pry.rb +21 -0
  940. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/cat.rb +70 -0
  941. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/cat/abstract_formatter.rb +32 -0
  942. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/cat/exception_formatter.rb +90 -0
  943. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/cat/file_formatter.rb +77 -0
  944. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/cat/input_expression_formatter.rb +48 -0
  945. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/cd.rb +46 -0
  946. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/change_inspector.rb +34 -0
  947. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/change_prompt.rb +51 -0
  948. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/clear_screen.rb +20 -0
  949. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/code_collector.rb +182 -0
  950. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/disable_pry.rb +31 -0
  951. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/easter_eggs.rb +101 -0
  952. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/edit.rb +223 -0
  953. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/edit/exception_patcher.rb +29 -0
  954. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/edit/file_and_line_locator.rb +47 -0
  955. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/exit.rb +47 -0
  956. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/exit_all.rb +33 -0
  957. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/exit_program.rb +27 -0
  958. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/find_method.rb +199 -0
  959. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/fix_indent.rb +23 -0
  960. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/help.rb +171 -0
  961. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/hist.rb +182 -0
  962. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/import_set.rb +27 -0
  963. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/jump_to.rb +33 -0
  964. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/list_inspectors.rb +42 -0
  965. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls.rb +135 -0
  966. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/constants.rb +75 -0
  967. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/formatter.rb +55 -0
  968. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/globals.rb +50 -0
  969. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/grep.rb +23 -0
  970. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/instance_vars.rb +40 -0
  971. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/interrogatable.rb +24 -0
  972. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/jruby_hacks.rb +55 -0
  973. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/local_names.rb +37 -0
  974. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/local_vars.rb +47 -0
  975. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/ls_entity.rb +65 -0
  976. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/methods.rb +55 -0
  977. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/methods_helper.rb +50 -0
  978. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ls/self_methods.rb +34 -0
  979. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/nesting.rb +29 -0
  980. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/play.rb +113 -0
  981. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/pry_backtrace.rb +30 -0
  982. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/pry_version.rb +21 -0
  983. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/raise_up.rb +38 -0
  984. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/reload_code.rb +74 -0
  985. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/reset.rb +22 -0
  986. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/ri.rb +75 -0
  987. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/save_file.rb +63 -0
  988. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/shell_command.rb +75 -0
  989. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/shell_mode.rb +29 -0
  990. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/show_doc.rb +94 -0
  991. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/show_info.rb +234 -0
  992. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/show_input.rb +22 -0
  993. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/show_source.rb +117 -0
  994. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/stat.rb +44 -0
  995. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/switch_to.rb +29 -0
  996. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/toggle_color.rb +28 -0
  997. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/watch_expression.rb +110 -0
  998. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/watch_expression/expression.rb +43 -0
  999. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/whereami.rb +205 -0
  1000. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/commands/wtf.rb +95 -0
  1001. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/config.rb +321 -0
  1002. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/config/attributable.rb +22 -0
  1003. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/config/lazy_value.rb +29 -0
  1004. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/config/memoized_value.rb +34 -0
  1005. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/config/value.rb +24 -0
  1006. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/control_d_handler.rb +28 -0
  1007. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/core_extensions.rb +144 -0
  1008. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/editor.rb +155 -0
  1009. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/env.rb +18 -0
  1010. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/exception_handler.rb +43 -0
  1011. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/exceptions.rb +73 -0
  1012. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/forwardable.rb +27 -0
  1013. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers.rb +8 -0
  1014. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers/base_helpers.rb +71 -0
  1015. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers/command_helpers.rb +146 -0
  1016. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers/documentation_helpers.rb +83 -0
  1017. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers/options_helpers.rb +34 -0
  1018. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers/platform.rb +60 -0
  1019. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers/table.rb +121 -0
  1020. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/helpers/text.rb +118 -0
  1021. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/history.rb +153 -0
  1022. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/hooks.rb +180 -0
  1023. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/indent.rb +412 -0
  1024. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/input_completer.rb +283 -0
  1025. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/input_lock.rb +129 -0
  1026. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/inspector.rb +39 -0
  1027. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/last_exception.rb +61 -0
  1028. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/method.rb +599 -0
  1029. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/method/disowned.rb +67 -0
  1030. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/method/patcher.rb +131 -0
  1031. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/method/weird_method_locator.rb +222 -0
  1032. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/object_path.rb +91 -0
  1033. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/output.rb +136 -0
  1034. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pager.rb +249 -0
  1035. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/plugins.rb +139 -0
  1036. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/prompt.rb +214 -0
  1037. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_class.rb +388 -0
  1038. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb +701 -0
  1039. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl.rb +257 -0
  1040. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl_file_loader.rb +79 -0
  1041. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/ring.rb +89 -0
  1042. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/slop.rb +672 -0
  1043. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/slop/LICENSE +20 -0
  1044. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/slop/commands.rb +190 -0
  1045. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/slop/option.rb +210 -0
  1046. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/syntax_highlighter.rb +26 -0
  1047. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/system_command_handler.rb +17 -0
  1048. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/testable.rb +68 -0
  1049. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/testable/evalable.rb +24 -0
  1050. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/testable/mockable.rb +22 -0
  1051. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/testable/pry_tester.rb +88 -0
  1052. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/testable/utility.rb +34 -0
  1053. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/testable/variables.rb +52 -0
  1054. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/version.rb +5 -0
  1055. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/warning.rb +27 -0
  1056. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/wrapped_module.rb +387 -0
  1057. data/gems/ruby/2.7.0/gems/pry-0.13.1/lib/pry/wrapped_module/candidate.rb +138 -0
  1058. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/.gitignore +13 -0
  1059. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/Gemfile +3 -0
  1060. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/Guardfile +8 -0
  1061. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/LICENSE.txt +22 -0
  1062. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/README.md +260 -0
  1063. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/Rakefile +33 -0
  1064. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/bin/fsevent_watch +0 -0
  1065. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/LICENSE +21 -0
  1066. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/FSEventsFix.c +626 -0
  1067. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/FSEventsFix.h +105 -0
  1068. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/TSICTString.c +373 -0
  1069. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/TSICTString.h +74 -0
  1070. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/cli.c +201 -0
  1071. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/cli.h +45 -0
  1072. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/common.h +22 -0
  1073. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/compat.c +41 -0
  1074. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/compat.h +100 -0
  1075. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/defines.h +40 -0
  1076. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/main.c +548 -0
  1077. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/signal_handlers.c +66 -0
  1078. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/fsevent_watch/signal_handlers.h +16 -0
  1079. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/ext/rakefile.rb +226 -0
  1080. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/lib/otnetstring.rb +85 -0
  1081. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/lib/rb-fsevent.rb +3 -0
  1082. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/lib/rb-fsevent/fsevent.rb +157 -0
  1083. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/lib/rb-fsevent/version.rb +5 -0
  1084. data/gems/ruby/2.7.0/gems/rb-fsevent-0.10.4/rb-fsevent.gemspec +26 -0
  1085. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/.gitignore +21 -0
  1086. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/.travis.yml +19 -0
  1087. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/.yardopts +4 -0
  1088. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/Gemfile +16 -0
  1089. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/LICENSE.md +10 -0
  1090. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/README.md +113 -0
  1091. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/Rakefile +14 -0
  1092. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify.rb +15 -0
  1093. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify/errors.rb +3 -0
  1094. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify/event.rb +146 -0
  1095. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify/native.rb +33 -0
  1096. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify/native/flags.rb +94 -0
  1097. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify/notifier.rb +326 -0
  1098. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify/version.rb +24 -0
  1099. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/lib/rb-inotify/watcher.rb +88 -0
  1100. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/rb-inotify.gemspec +28 -0
  1101. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/spec/inotify_spec.rb +9 -0
  1102. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/spec/notifier_spec.rb +180 -0
  1103. data/gems/ruby/2.7.0/gems/rb-inotify-0.10.1/spec/spec_helper.rb +29 -0
  1104. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/COPYING +20 -0
  1105. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/Gemfile +9 -0
  1106. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/README.markdown +405 -0
  1107. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/Rakefile +60 -0
  1108. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/bin/redcarpet +7 -0
  1109. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/.sitearchdir.time +0 -0
  1110. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/Makefile +267 -0
  1111. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/autolink.c +308 -0
  1112. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/autolink.h +55 -0
  1113. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/autolink.o +0 -0
  1114. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/buffer.c +203 -0
  1115. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/buffer.h +88 -0
  1116. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/buffer.o +0 -0
  1117. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/extconf.rb +6 -0
  1118. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/houdini.h +51 -0
  1119. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/houdini_href_e.c +124 -0
  1120. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/houdini_href_e.o +0 -0
  1121. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/houdini_html_e.c +104 -0
  1122. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/houdini_html_e.o +0 -0
  1123. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/html.c +845 -0
  1124. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/html.h +83 -0
  1125. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/html.o +0 -0
  1126. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/html_blocks.h +227 -0
  1127. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/html_smartypants.c +472 -0
  1128. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/html_smartypants.o +0 -0
  1129. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/markdown.c +2915 -0
  1130. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/markdown.h +143 -0
  1131. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/markdown.o +0 -0
  1132. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/rc_markdown.c +183 -0
  1133. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/rc_markdown.o +0 -0
  1134. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/rc_render.c +568 -0
  1135. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/rc_render.o +0 -0
  1136. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/redcarpet.bundle +0 -0
  1137. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/redcarpet.h +52 -0
  1138. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/stack.c +84 -0
  1139. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/stack.h +48 -0
  1140. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/ext/redcarpet/stack.o +0 -0
  1141. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/lib/redcarpet.bundle +0 -0
  1142. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/lib/redcarpet.rb +92 -0
  1143. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/lib/redcarpet/cli.rb +86 -0
  1144. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/lib/redcarpet/compat.rb +71 -0
  1145. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/lib/redcarpet/render_man.rb +65 -0
  1146. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/lib/redcarpet/render_strip.rb +60 -0
  1147. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/redcarpet.gemspec +71 -0
  1148. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/benchmark.rb +24 -0
  1149. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/custom_render_test.rb +67 -0
  1150. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/fixtures/benchmark.md +232 -0
  1151. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/html5_test.rb +82 -0
  1152. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/html_render_test.rb +274 -0
  1153. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/html_toc_render_test.rb +112 -0
  1154. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/markdown_test.rb +406 -0
  1155. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/pathological_inputs_test.rb +34 -0
  1156. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/redcarpet_bin_test.rb +80 -0
  1157. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/redcarpet_compat_test.rb +38 -0
  1158. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/safe_render_test.rb +35 -0
  1159. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/smarty_html_test.rb +51 -0
  1160. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/smarty_pants_test.rb +58 -0
  1161. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/stripdown_render_test.rb +69 -0
  1162. data/gems/ruby/2.7.0/gems/redcarpet-3.5.0/test/test_helper.rb +47 -0
  1163. data/gems/ruby/2.7.0/gems/shellany-0.0.1/.gitignore +14 -0
  1164. data/gems/ruby/2.7.0/gems/shellany-0.0.1/.rspec +2 -0
  1165. data/gems/ruby/2.7.0/gems/shellany-0.0.1/.travis.yml +13 -0
  1166. data/gems/ruby/2.7.0/gems/shellany-0.0.1/Gemfile +11 -0
  1167. data/gems/ruby/2.7.0/gems/shellany-0.0.1/LICENSE.txt +22 -0
  1168. data/gems/ruby/2.7.0/gems/shellany-0.0.1/README.md +72 -0
  1169. data/gems/ruby/2.7.0/gems/shellany-0.0.1/Rakefile +13 -0
  1170. data/gems/ruby/2.7.0/gems/shellany-0.0.1/lib/shellany.rb +5 -0
  1171. data/gems/ruby/2.7.0/gems/shellany-0.0.1/lib/shellany/sheller.rb +144 -0
  1172. data/gems/ruby/2.7.0/gems/shellany-0.0.1/lib/shellany/version.rb +3 -0
  1173. data/gems/ruby/2.7.0/gems/shellany-0.0.1/shellany.gemspec +22 -0
  1174. data/gems/ruby/2.7.0/gems/shellany-0.0.1/spec/lib/shellany/sheller_spec.rb +141 -0
  1175. data/gems/ruby/2.7.0/gems/shellany-0.0.1/spec/shellany_spec.rb +5 -0
  1176. data/gems/ruby/2.7.0/gems/shellany-0.0.1/spec/spec_helper.rb +24 -0
  1177. data/gems/ruby/2.7.0/gems/yard-0.9.25/.dockerignore +2 -0
  1178. data/gems/ruby/2.7.0/gems/yard-0.9.25/.github/ISSUE_TEMPLATE.md +33 -0
  1179. data/gems/ruby/2.7.0/gems/yard-0.9.25/.github/PULL_REQUEST_TEMPLATE.md +12 -0
  1180. data/gems/ruby/2.7.0/gems/yard-0.9.25/.github/workflows/ci.yml +30 -0
  1181. data/gems/ruby/2.7.0/gems/yard-0.9.25/.gitignore +14 -0
  1182. data/gems/ruby/2.7.0/gems/yard-0.9.25/.rspec +2 -0
  1183. data/gems/ruby/2.7.0/gems/yard-0.9.25/.rubocop.yml +112 -0
  1184. data/gems/ruby/2.7.0/gems/yard-0.9.25/.travis.yml +52 -0
  1185. data/gems/ruby/2.7.0/gems/yard-0.9.25/.yardopts +26 -0
  1186. data/gems/ruby/2.7.0/gems/yard-0.9.25/.yardopts_guide +19 -0
  1187. data/gems/ruby/2.7.0/gems/yard-0.9.25/.yardopts_i18n +23 -0
  1188. data/gems/ruby/2.7.0/gems/yard-0.9.25/CHANGELOG.md +804 -0
  1189. data/gems/ruby/2.7.0/gems/yard-0.9.25/CODE_OF_CONDUCT.md +15 -0
  1190. data/gems/ruby/2.7.0/gems/yard-0.9.25/CONTRIBUTING.md +140 -0
  1191. data/gems/ruby/2.7.0/gems/yard-0.9.25/Dockerfile.samus +28 -0
  1192. data/gems/ruby/2.7.0/gems/yard-0.9.25/Gemfile +32 -0
  1193. data/gems/ruby/2.7.0/gems/yard-0.9.25/LEGAL +66 -0
  1194. data/gems/ruby/2.7.0/gems/yard-0.9.25/LICENSE +22 -0
  1195. data/gems/ruby/2.7.0/gems/yard-0.9.25/README.md +325 -0
  1196. data/gems/ruby/2.7.0/gems/yard-0.9.25/Rakefile +39 -0
  1197. data/gems/ruby/2.7.0/gems/yard-0.9.25/SECURITY.md +26 -0
  1198. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/builtins_vs_eval.rb +24 -0
  1199. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/concat_vs_join.rb +13 -0
  1200. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/erb_vs_erubis.rb +54 -0
  1201. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/format_args.rb +47 -0
  1202. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/generation.rb +38 -0
  1203. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/marshal_vs_dbm.rb +64 -0
  1204. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/parsing.rb +46 -0
  1205. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/pathname_vs_string.rb +51 -0
  1206. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/rdoc_vs_yardoc.rb +11 -0
  1207. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/registry_store_types.rb +49 -0
  1208. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/ri_vs_yri.rb +19 -0
  1209. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/ripper_parser.rb +13 -0
  1210. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/splat_vs_flatten.rb +13 -0
  1211. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/template_erb.rb +23 -0
  1212. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/template_format.rb +7 -0
  1213. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/template_profile.rb +18 -0
  1214. data/gems/ruby/2.7.0/gems/yard-0.9.25/benchmarks/yri_cache.rb +20 -0
  1215. data/gems/ruby/2.7.0/gems/yard-0.9.25/bin/yard +13 -0
  1216. data/gems/ruby/2.7.0/gems/yard-0.9.25/bin/yardoc +13 -0
  1217. data/gems/ruby/2.7.0/gems/yard-0.9.25/bin/yri +13 -0
  1218. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/CodeObjects.md +115 -0
  1219. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/GettingStarted.md +679 -0
  1220. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/Handlers.md +152 -0
  1221. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/Overview.md +61 -0
  1222. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/Parser.md +191 -0
  1223. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/Tags.md +283 -0
  1224. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/TagsArch.md +123 -0
  1225. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/Templates.md +496 -0
  1226. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/WhatsNew.md +1245 -0
  1227. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/images/code-objects-class-diagram.png +0 -0
  1228. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/images/handlers-class-diagram.png +0 -0
  1229. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/images/overview-class-diagram.png +0 -0
  1230. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/images/parser-class-diagram.png +0 -0
  1231. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/images/tags-class-diagram.png +0 -0
  1232. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/templates/default/fulldoc/html/full_list_tag.erb +9 -0
  1233. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/templates/default/fulldoc/html/setup.rb +6 -0
  1234. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/templates/default/layout/html/setup.rb +9 -0
  1235. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/templates/default/layout/html/tag_list.erb +11 -0
  1236. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/templates/default/yard_tags/html/list.erb +18 -0
  1237. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/templates/default/yard_tags/html/setup.rb +26 -0
  1238. data/gems/ruby/2.7.0/gems/yard-0.9.25/docs/templates/plugin.rb +70 -0
  1239. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/rubygems_plugin.rb +9 -0
  1240. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard.rb +69 -0
  1241. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/autoload.rb +308 -0
  1242. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/command.rb +85 -0
  1243. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/command_parser.rb +93 -0
  1244. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/config.rb +198 -0
  1245. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/diff.rb +273 -0
  1246. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/display.rb +69 -0
  1247. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/gems.rb +84 -0
  1248. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/graph.rb +125 -0
  1249. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/help.rb +20 -0
  1250. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/i18n.rb +70 -0
  1251. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/list.rb +23 -0
  1252. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/markup_types.rb +32 -0
  1253. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/server.rb +266 -0
  1254. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/stats.rb +231 -0
  1255. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/yardoc.rb +789 -0
  1256. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/yardopts_command.rb +110 -0
  1257. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/cli/yri.rb +215 -0
  1258. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/base.rb +622 -0
  1259. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/class_object.rb +146 -0
  1260. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/class_variable_object.rb +11 -0
  1261. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/constant_object.rb +16 -0
  1262. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/extended_method_object.rb +24 -0
  1263. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/extra_file_object.rb +134 -0
  1264. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/macro_object.rb +172 -0
  1265. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/method_object.rb +196 -0
  1266. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/module_object.rb +21 -0
  1267. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/namespace_mapper.rb +141 -0
  1268. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/namespace_object.rb +200 -0
  1269. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/proxy.rb +245 -0
  1270. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/code_objects/root_object.rb +19 -0
  1271. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/config.rb +270 -0
  1272. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/core_ext/array.rb +16 -0
  1273. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/core_ext/file.rb +69 -0
  1274. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/core_ext/hash.rb +16 -0
  1275. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/core_ext/insertion.rb +63 -0
  1276. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/core_ext/module.rb +11 -0
  1277. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/core_ext/string.rb +68 -0
  1278. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/core_ext/symbol_hash.rb +75 -0
  1279. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/docstring.rb +386 -0
  1280. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/docstring_parser.rb +345 -0
  1281. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/gem_index.rb +29 -0
  1282. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/globals.rb +22 -0
  1283. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/base.rb +595 -0
  1284. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/alias_handler.rb +16 -0
  1285. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/attribute_handler.rb +13 -0
  1286. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/base.rb +164 -0
  1287. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/class_handler.rb +27 -0
  1288. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/constant_handler.rb +13 -0
  1289. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/handler_methods.rb +212 -0
  1290. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/init_handler.rb +20 -0
  1291. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/method_handler.rb +45 -0
  1292. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/mixin_handler.rb +21 -0
  1293. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/module_handler.rb +17 -0
  1294. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/override_comment_handler.rb +31 -0
  1295. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/path_handler.rb +11 -0
  1296. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/struct_handler.rb +13 -0
  1297. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/c/symbol_handler.rb +8 -0
  1298. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/common/method_handler.rb +19 -0
  1299. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/processor.rb +200 -0
  1300. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/alias_handler.rb +45 -0
  1301. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/attribute_handler.rb +87 -0
  1302. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/base.rb +165 -0
  1303. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/class_condition_handler.rb +92 -0
  1304. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/class_handler.rb +119 -0
  1305. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/class_variable_handler.rb +17 -0
  1306. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/comment_handler.rb +10 -0
  1307. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/constant_handler.rb +55 -0
  1308. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -0
  1309. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/dsl_handler.rb +15 -0
  1310. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -0
  1311. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/exception_handler.rb +27 -0
  1312. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/extend_handler.rb +22 -0
  1313. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -0
  1314. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -0
  1315. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/base.rb +245 -0
  1316. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
  1317. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -0
  1318. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -0
  1319. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -0
  1320. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -0
  1321. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -0
  1322. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -0
  1323. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -0
  1324. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -0
  1325. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
  1326. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -0
  1327. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -0
  1328. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -0
  1329. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -0
  1330. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -0
  1331. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -0
  1332. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/method_condition_handler.rb +9 -0
  1333. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/method_handler.rb +104 -0
  1334. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/mixin_handler.rb +49 -0
  1335. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/module_function_handler.rb +27 -0
  1336. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/module_handler.rb +12 -0
  1337. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -0
  1338. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/private_constant_handler.rb +43 -0
  1339. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -0
  1340. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -0
  1341. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/visibility_handler.rb +22 -0
  1342. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/handlers/ruby/yield_handler.rb +31 -0
  1343. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/i18n/locale.rb +67 -0
  1344. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/i18n/message.rb +57 -0
  1345. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/i18n/messages.rb +56 -0
  1346. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/i18n/po_parser.rb +61 -0
  1347. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/i18n/pot_generator.rb +290 -0
  1348. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/i18n/text.rb +173 -0
  1349. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/logging.rb +205 -0
  1350. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/options.rb +217 -0
  1351. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/base.rb +57 -0
  1352. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/c/c_parser.rb +235 -0
  1353. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/c/comment_parser.rb +134 -0
  1354. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/c/statement.rb +66 -0
  1355. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/ast_node.rb +551 -0
  1356. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/irb/slex.rb +276 -0
  1357. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/ruby_lex.rb +1345 -0
  1358. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -0
  1359. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/statement.rb +68 -0
  1360. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/statement_list.rb +394 -0
  1361. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/token_list.rb +74 -0
  1362. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/ruby_parser.rb +701 -0
  1363. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/ruby/token_resolver.rb +158 -0
  1364. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/parser/source_parser.rb +526 -0
  1365. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rake/yardoc_task.rb +81 -0
  1366. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/registry.rb +439 -0
  1367. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/registry_resolver.rb +217 -0
  1368. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/registry_store.rb +342 -0
  1369. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/backports.rb +10 -0
  1370. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/backports/LICENSE.txt +57 -0
  1371. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/backports/MIT.txt +20 -0
  1372. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/backports/gem.rb +10 -0
  1373. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/backports/source_index.rb +365 -0
  1374. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/doc_manager.rb +90 -0
  1375. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/hook.rb +197 -0
  1376. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/rubygems/specification.rb +50 -0
  1377. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/serializers/base.rb +83 -0
  1378. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/serializers/file_system_serializer.rb +123 -0
  1379. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/serializers/process_serializer.rb +24 -0
  1380. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/serializers/stdout_serializer.rb +34 -0
  1381. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/serializers/yardoc_serializer.rb +152 -0
  1382. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server.rb +13 -0
  1383. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/adapter.rb +100 -0
  1384. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/base.rb +209 -0
  1385. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/display_file_command.rb +29 -0
  1386. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/display_object_command.rb +65 -0
  1387. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/frames_command.rb +16 -0
  1388. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/library_command.rb +187 -0
  1389. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/library_index_command.rb +28 -0
  1390. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/list_command.rb +25 -0
  1391. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/root_request_command.rb +15 -0
  1392. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/search_command.rb +79 -0
  1393. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/static_file_command.rb +23 -0
  1394. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/commands/static_file_helpers.rb +61 -0
  1395. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/doc_server_helper.rb +91 -0
  1396. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/doc_server_serializer.rb +39 -0
  1397. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/library_version.rb +277 -0
  1398. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/rack_adapter.rb +89 -0
  1399. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/router.rb +187 -0
  1400. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/static_caching.rb +46 -0
  1401. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -0
  1402. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
  1403. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
  1404. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -0
  1405. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -0
  1406. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/layout/html/setup.rb +8 -0
  1407. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -0
  1408. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/default/method_details/html/setup.rb +5 -0
  1409. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -0
  1410. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -0
  1411. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -0
  1412. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -0
  1413. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
  1414. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -0
  1415. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -0
  1416. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
  1417. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -0
  1418. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/server/webrick_adapter.rb +45 -0
  1419. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/default_factory.rb +191 -0
  1420. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/default_tag.rb +13 -0
  1421. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/directives.rb +616 -0
  1422. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/library.rb +633 -0
  1423. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/option_tag.rb +13 -0
  1424. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/overload_tag.rb +71 -0
  1425. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/ref_tag.rb +8 -0
  1426. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/ref_tag_list.rb +28 -0
  1427. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/tag.rb +71 -0
  1428. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/tag_format_error.rb +7 -0
  1429. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/tags/types_explainer.rb +162 -0
  1430. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/engine.rb +186 -0
  1431. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/erb_cache.rb +23 -0
  1432. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/base_helper.rb +215 -0
  1433. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/filter_helper.rb +27 -0
  1434. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/html_helper.rb +670 -0
  1435. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -0
  1436. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -0
  1437. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/markup/rdoc_markup.rb +110 -0
  1438. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/markup_helper.rb +172 -0
  1439. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/method_helper.rb +75 -0
  1440. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/module_helper.rb +21 -0
  1441. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/text_helper.rb +112 -0
  1442. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/helpers/uml_helper.rb +47 -0
  1443. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/section.rb +105 -0
  1444. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/template.rb +418 -0
  1445. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/templates/template_options.rb +92 -0
  1446. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/verifier.rb +151 -0
  1447. data/gems/ruby/2.7.0/gems/yard-0.9.25/lib/yard/version.rb +6 -0
  1448. data/gems/ruby/2.7.0/gems/yard-0.9.25/po/ja.po +31108 -0
  1449. data/gems/ruby/2.7.0/gems/yard-0.9.25/samus.json +80 -0
  1450. data/gems/ruby/2.7.0/gems/yard-0.9.25/tasks/update_error_map.rake +53 -0
  1451. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/dot/setup.rb +7 -0
  1452. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/dot/superklass.erb +3 -0
  1453. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/html/constructor_details.erb +8 -0
  1454. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/html/setup.rb +2 -0
  1455. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/html/subclasses.erb +4 -0
  1456. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/setup.rb +36 -0
  1457. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/text/setup.rb +12 -0
  1458. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/class/text/subclasses.erb +5 -0
  1459. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/constant/text/header.erb +11 -0
  1460. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/constant/text/setup.rb +4 -0
  1461. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/abstract.erb +4 -0
  1462. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/deprecated.erb +1 -0
  1463. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/index.erb +5 -0
  1464. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/note.erb +6 -0
  1465. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/private.erb +4 -0
  1466. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/returns_void.erb +1 -0
  1467. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/text.erb +1 -0
  1468. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/html/todo.erb +6 -0
  1469. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/setup.rb +52 -0
  1470. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/abstract.erb +2 -0
  1471. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/deprecated.erb +2 -0
  1472. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/index.erb +2 -0
  1473. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/note.erb +4 -0
  1474. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/private.erb +2 -0
  1475. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/returns_void.erb +1 -0
  1476. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/text.erb +1 -0
  1477. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/docstring/text/todo.erb +4 -0
  1478. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/css/common.css +1 -0
  1479. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/css/full_list.css +58 -0
  1480. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/css/style.css +496 -0
  1481. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/frames.erb +17 -0
  1482. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/full_list.erb +37 -0
  1483. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/full_list_class.erb +2 -0
  1484. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/full_list_file.erb +7 -0
  1485. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/full_list_method.erb +10 -0
  1486. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/js/app.js +314 -0
  1487. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/js/full_list.js +216 -0
  1488. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/js/jquery.js +4 -0
  1489. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/fulldoc/html/setup.rb +241 -0
  1490. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/dot/header.erb +6 -0
  1491. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/dot/setup.rb +15 -0
  1492. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/breadcrumb.erb +11 -0
  1493. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/files.erb +11 -0
  1494. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/footer.erb +5 -0
  1495. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/headers.erb +15 -0
  1496. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/index.erb +2 -0
  1497. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/layout.erb +24 -0
  1498. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/listing.erb +4 -0
  1499. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/objects.erb +32 -0
  1500. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/script_setup.erb +4 -0
  1501. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/search.erb +13 -0
  1502. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/layout/html/setup.rb +89 -0
  1503. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method/html/header.erb +17 -0
  1504. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method/setup.rb +4 -0
  1505. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method/text/header.erb +1 -0
  1506. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method_details/html/header.erb +3 -0
  1507. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method_details/html/method_signature.erb +25 -0
  1508. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method_details/html/source.erb +10 -0
  1509. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method_details/setup.rb +11 -0
  1510. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method_details/text/header.erb +10 -0
  1511. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method_details/text/method_signature.erb +12 -0
  1512. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/method_details/text/setup.rb +11 -0
  1513. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/dot/child.erb +1 -0
  1514. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/dot/dependencies.erb +3 -0
  1515. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/dot/header.erb +6 -0
  1516. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/dot/info.erb +14 -0
  1517. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/dot/setup.rb +15 -0
  1518. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/attribute_details.erb +10 -0
  1519. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/attribute_summary.erb +8 -0
  1520. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/box_info.erb +43 -0
  1521. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/children.erb +8 -0
  1522. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/constant_summary.erb +17 -0
  1523. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/defines.erb +3 -0
  1524. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/header.erb +5 -0
  1525. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/inherited_attributes.erb +14 -0
  1526. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/inherited_constants.erb +8 -0
  1527. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/inherited_methods.erb +19 -0
  1528. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/item_summary.erb +40 -0
  1529. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/method_details_list.erb +9 -0
  1530. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/method_summary.erb +14 -0
  1531. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/methodmissing.erb +12 -0
  1532. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/html/pre_docstring.erb +1 -0
  1533. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/setup.rb +167 -0
  1534. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/text/children.erb +10 -0
  1535. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/text/class_meths_list.erb +8 -0
  1536. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/text/extends.erb +8 -0
  1537. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/text/header.erb +7 -0
  1538. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/text/includes.erb +8 -0
  1539. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/text/instance_meths_list.erb +8 -0
  1540. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/module/text/setup.rb +13 -0
  1541. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/onefile/html/files.erb +5 -0
  1542. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/onefile/html/headers.erb +6 -0
  1543. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/onefile/html/layout.erb +17 -0
  1544. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/onefile/html/readme.erb +3 -0
  1545. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/onefile/html/setup.rb +62 -0
  1546. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/root/dot/child.erb +3 -0
  1547. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/root/dot/setup.rb +6 -0
  1548. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/root/html/setup.rb +2 -0
  1549. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/html/example.erb +11 -0
  1550. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/html/index.erb +3 -0
  1551. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/html/option.erb +24 -0
  1552. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/html/overload.erb +14 -0
  1553. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/html/see.erb +8 -0
  1554. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/html/tag.erb +20 -0
  1555. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/setup.rb +57 -0
  1556. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/text/example.erb +12 -0
  1557. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/text/index.erb +1 -0
  1558. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/text/option.erb +20 -0
  1559. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/text/overload.erb +19 -0
  1560. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/text/see.erb +11 -0
  1561. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/default/tags/text/tag.erb +13 -0
  1562. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/class/html/setup.rb +2 -0
  1563. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/docstring/html/setup.rb +2 -0
  1564. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/fulldoc/html/css/style.css +108 -0
  1565. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/fulldoc/html/js/app.js +33 -0
  1566. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/fulldoc/html/setup.rb +74 -0
  1567. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/layout/html/layout.erb +81 -0
  1568. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/layout/html/setup.rb +25 -0
  1569. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/method/html/header.erb +18 -0
  1570. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/method/html/setup.rb +22 -0
  1571. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/module/html/header.erb +7 -0
  1572. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/module/html/method_list.erb +5 -0
  1573. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/module/html/setup.rb +27 -0
  1574. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/onefile/html/files.erb +4 -0
  1575. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/onefile/html/setup.rb +6 -0
  1576. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/onefile/html/toc.erb +3 -0
  1577. data/gems/ruby/2.7.0/gems/yard-0.9.25/templates/guide/tags/html/setup.rb +9 -0
  1578. data/gems/ruby/2.7.0/gems/yard-0.9.25/yard.gemspec +24 -0
  1579. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/.gitignore +14 -0
  1580. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/Gemfile +4 -0
  1581. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/LICENSE +22 -0
  1582. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/README.md +61 -0
  1583. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/Rakefile +2 -0
  1584. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/lib/yard-activesupport-concern.rb +40 -0
  1585. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/lib/yard-activesupport-concern/version.rb +7 -0
  1586. data/gems/ruby/2.7.0/gems/yard-activesupport-concern-0.0.1/yard-activesupport-concern.gemspec +26 -0
  1587. data/gems/ruby/2.7.0/specifications/coderay-1.1.3.gemspec +25 -0
  1588. data/gems/ruby/2.7.0/specifications/ffi-1.13.1.gemspec +44 -0
  1589. data/gems/ruby/2.7.0/specifications/formatador-0.2.5.gemspec +34 -0
  1590. data/gems/ruby/2.7.0/specifications/guard-2.16.2.gemspec +47 -0
  1591. data/gems/ruby/2.7.0/specifications/guard-yard-2.2.1.gemspec +36 -0
  1592. data/gems/ruby/2.7.0/specifications/listen-3.3.1.gemspec +36 -0
  1593. data/gems/ruby/2.7.0/specifications/lumberjack-1.2.8.gemspec +30 -0
  1594. data/gems/ruby/2.7.0/specifications/method_source-1.0.0.gemspec +32 -0
  1595. data/gems/ruby/2.7.0/specifications/nenv-0.3.0.gemspec +34 -0
  1596. data/gems/ruby/2.7.0/specifications/notiffany-0.1.3.gemspec +34 -0
  1597. data/gems/ruby/2.7.0/specifications/pry-0.13.1.gemspec +36 -0
  1598. data/gems/ruby/2.7.0/specifications/rb-fsevent-0.10.4.gemspec +35 -0
  1599. data/gems/ruby/2.7.0/specifications/rb-inotify-0.10.1.gemspec +38 -0
  1600. data/gems/ruby/2.7.0/specifications/redcarpet-3.5.0.gemspec +40 -0
  1601. data/gems/ruby/2.7.0/specifications/shellany-0.0.1.gemspec +30 -0
  1602. data/gems/ruby/2.7.0/specifications/yard-0.9.25.gemspec +23 -0
  1603. data/gems/ruby/2.7.0/specifications/yard-activesupport-concern-0.0.1.gemspec +34 -0
  1604. data/lib/qiita_org.rb +3 -10
  1605. data/lib/qiita_org/all.rb +27 -0
  1606. data/lib/qiita_org/post.rb +18 -0
  1607. data/lib/qiita_org/template.org +1 -0
  1608. data/lib/qiita_org/version.rb +1 -1
  1609. data/tests/test2.org +1 -0
  1610. data/tests/test3.org +1 -0
  1611. data/tests/test4.org +1 -0
  1612. data/tests/twitter_test.org +13 -0
  1613. metadata +1603 -2
@@ -0,0 +1,2915 @@
1
+ /*
2
+ * Copyright (c) 2009, Natacha Porté
3
+ * Copyright (c) 2015, Vicent Marti
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ * THE SOFTWARE.
22
+ */
23
+
24
+ #include "markdown.h"
25
+ #include "stack.h"
26
+
27
+ #include <assert.h>
28
+ #include <string.h>
29
+ #include <ctype.h>
30
+ #include <stdio.h>
31
+
32
+ #if defined(_WIN32)
33
+ #define strncasecmp _strnicmp
34
+ #endif
35
+
36
+ #define REF_TABLE_SIZE 8
37
+
38
+ #define BUFFER_BLOCK 0
39
+ #define BUFFER_SPAN 1
40
+
41
+ #define MKD_LI_END 8 /* internal list flag */
42
+
43
+ #define gperf_case_strncmp(s1, s2, n) strncasecmp(s1, s2, n)
44
+ #define GPERF_DOWNCASE 1
45
+ #define GPERF_CASE_STRNCMP 1
46
+ #include "html_blocks.h"
47
+
48
+ /***************
49
+ * LOCAL TYPES *
50
+ ***************/
51
+
52
+ /* link_ref: reference to a link */
53
+ struct link_ref {
54
+ unsigned int id;
55
+
56
+ struct buf *link;
57
+ struct buf *title;
58
+
59
+ struct link_ref *next;
60
+ };
61
+
62
+ /* footnote_ref: reference to a footnote */
63
+ struct footnote_ref {
64
+ unsigned int id;
65
+
66
+ int is_used;
67
+ unsigned int num;
68
+
69
+ struct buf *contents;
70
+ };
71
+
72
+ /* footnote_item: an item in a footnote_list */
73
+ struct footnote_item {
74
+ struct footnote_ref *ref;
75
+ struct footnote_item *next;
76
+ };
77
+
78
+ /* footnote_list: linked list of footnote_item */
79
+ struct footnote_list {
80
+ unsigned int count;
81
+ struct footnote_item *head;
82
+ struct footnote_item *tail;
83
+ };
84
+
85
+ /* char_trigger: function pointer to render active chars */
86
+ /* returns the number of chars taken care of */
87
+ /* data is the pointer of the beginning of the span */
88
+ /* offset is the number of valid chars before data */
89
+ struct sd_markdown;
90
+ typedef size_t
91
+ (*char_trigger)(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
92
+
93
+ static size_t char_emphasis(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
94
+ static size_t char_underline(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
95
+ static size_t char_quote(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
96
+ static size_t char_linebreak(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
97
+ static size_t char_codespan(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
98
+ static size_t char_escape(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
99
+ static size_t char_entity(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
100
+ static size_t char_langle_tag(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
101
+ static size_t char_autolink_url(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
102
+ static size_t char_autolink_email(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
103
+ static size_t char_autolink_www(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
104
+ static size_t char_link(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
105
+ static size_t char_superscript(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
106
+
107
+ enum markdown_char_t {
108
+ MD_CHAR_NONE = 0,
109
+ MD_CHAR_EMPHASIS,
110
+ MD_CHAR_CODESPAN,
111
+ MD_CHAR_LINEBREAK,
112
+ MD_CHAR_LINK,
113
+ MD_CHAR_LANGLE,
114
+ MD_CHAR_ESCAPE,
115
+ MD_CHAR_ENTITITY,
116
+ MD_CHAR_AUTOLINK_URL,
117
+ MD_CHAR_AUTOLINK_EMAIL,
118
+ MD_CHAR_AUTOLINK_WWW,
119
+ MD_CHAR_SUPERSCRIPT,
120
+ MD_CHAR_QUOTE
121
+ };
122
+
123
+ static char_trigger markdown_char_ptrs[] = {
124
+ NULL,
125
+ &char_emphasis,
126
+ &char_codespan,
127
+ &char_linebreak,
128
+ &char_link,
129
+ &char_langle_tag,
130
+ &char_escape,
131
+ &char_entity,
132
+ &char_autolink_url,
133
+ &char_autolink_email,
134
+ &char_autolink_www,
135
+ &char_superscript,
136
+ &char_quote
137
+ };
138
+
139
+ /* render • structure containing one particular render */
140
+ struct sd_markdown {
141
+ struct sd_callbacks cb;
142
+ void *opaque;
143
+
144
+ struct link_ref *refs[REF_TABLE_SIZE];
145
+ struct footnote_list footnotes_found;
146
+ struct footnote_list footnotes_used;
147
+ uint8_t active_char[256];
148
+ struct stack work_bufs[2];
149
+ unsigned int ext_flags;
150
+ size_t max_nesting;
151
+ int in_link_body;
152
+ };
153
+
154
+ /***************************
155
+ * HELPER FUNCTIONS *
156
+ ***************************/
157
+
158
+ static inline struct buf *
159
+ rndr_newbuf(struct sd_markdown *rndr, int type)
160
+ {
161
+ static const size_t buf_size[2] = {256, 64};
162
+ struct buf *work = NULL;
163
+ struct stack *pool = &rndr->work_bufs[type];
164
+
165
+ if (pool->size < pool->asize &&
166
+ pool->item[pool->size] != NULL) {
167
+ work = pool->item[pool->size++];
168
+ work->size = 0;
169
+ } else {
170
+ work = bufnew(buf_size[type]);
171
+ redcarpet_stack_push(pool, work);
172
+ }
173
+
174
+ return work;
175
+ }
176
+
177
+ static inline void
178
+ rndr_popbuf(struct sd_markdown *rndr, int type)
179
+ {
180
+ rndr->work_bufs[type].size--;
181
+ }
182
+
183
+ static void
184
+ unscape_text(struct buf *ob, struct buf *src)
185
+ {
186
+ size_t i = 0, org;
187
+ while (i < src->size) {
188
+ org = i;
189
+ while (i < src->size && src->data[i] != '\\')
190
+ i++;
191
+
192
+ if (i > org)
193
+ bufput(ob, src->data + org, i - org);
194
+
195
+ if (i + 1 >= src->size)
196
+ break;
197
+
198
+ bufputc(ob, src->data[i + 1]);
199
+ i += 2;
200
+ }
201
+ }
202
+
203
+ static unsigned int
204
+ hash_link_ref(const uint8_t *link_ref, size_t length)
205
+ {
206
+ size_t i;
207
+ unsigned int hash = 0;
208
+
209
+ for (i = 0; i < length; ++i)
210
+ hash = tolower(link_ref[i]) + (hash << 6) + (hash << 16) - hash;
211
+
212
+ return hash;
213
+ }
214
+
215
+ static struct link_ref *
216
+ add_link_ref(
217
+ struct link_ref **references,
218
+ const uint8_t *name, size_t name_size)
219
+ {
220
+ struct link_ref *ref = calloc(1, sizeof(struct link_ref));
221
+
222
+ if (!ref)
223
+ return NULL;
224
+
225
+ ref->id = hash_link_ref(name, name_size);
226
+ ref->next = references[ref->id % REF_TABLE_SIZE];
227
+
228
+ references[ref->id % REF_TABLE_SIZE] = ref;
229
+ return ref;
230
+ }
231
+
232
+ static struct link_ref *
233
+ find_link_ref(struct link_ref **references, uint8_t *name, size_t length)
234
+ {
235
+ unsigned int hash = hash_link_ref(name, length);
236
+ struct link_ref *ref = NULL;
237
+
238
+ ref = references[hash % REF_TABLE_SIZE];
239
+
240
+ while (ref != NULL) {
241
+ if (ref->id == hash)
242
+ return ref;
243
+
244
+ ref = ref->next;
245
+ }
246
+
247
+ return NULL;
248
+ }
249
+
250
+ static void
251
+ free_link_refs(struct link_ref **references)
252
+ {
253
+ size_t i;
254
+
255
+ for (i = 0; i < REF_TABLE_SIZE; ++i) {
256
+ struct link_ref *r = references[i];
257
+ struct link_ref *next;
258
+
259
+ while (r) {
260
+ next = r->next;
261
+ bufrelease(r->link);
262
+ bufrelease(r->title);
263
+ free(r);
264
+ r = next;
265
+ }
266
+ }
267
+ }
268
+
269
+ static struct footnote_ref *
270
+ create_footnote_ref(struct footnote_list *list, const uint8_t *name, size_t name_size)
271
+ {
272
+ struct footnote_ref *ref = calloc(1, sizeof(struct footnote_ref));
273
+ if (!ref)
274
+ return NULL;
275
+
276
+ ref->id = hash_link_ref(name, name_size);
277
+
278
+ return ref;
279
+ }
280
+
281
+ static int
282
+ add_footnote_ref(struct footnote_list *list, struct footnote_ref *ref)
283
+ {
284
+ struct footnote_item *item = calloc(1, sizeof(struct footnote_item));
285
+ if (!item)
286
+ return 0;
287
+ item->ref = ref;
288
+
289
+ if (list->head == NULL) {
290
+ list->head = list->tail = item;
291
+ } else {
292
+ list->tail->next = item;
293
+ list->tail = item;
294
+ }
295
+ list->count++;
296
+
297
+ return 1;
298
+ }
299
+
300
+ static struct footnote_ref *
301
+ find_footnote_ref(struct footnote_list *list, uint8_t *name, size_t length)
302
+ {
303
+ unsigned int hash = hash_link_ref(name, length);
304
+ struct footnote_item *item = NULL;
305
+
306
+ item = list->head;
307
+
308
+ while (item != NULL) {
309
+ if (item->ref->id == hash)
310
+ return item->ref;
311
+ item = item->next;
312
+ }
313
+
314
+ return NULL;
315
+ }
316
+
317
+ static void
318
+ free_footnote_ref(struct footnote_ref *ref)
319
+ {
320
+ bufrelease(ref->contents);
321
+ free(ref);
322
+ }
323
+
324
+ static void
325
+ free_footnote_list(struct footnote_list *list, int free_refs)
326
+ {
327
+ struct footnote_item *item = list->head;
328
+ struct footnote_item *next;
329
+
330
+ while (item) {
331
+ next = item->next;
332
+ if (free_refs)
333
+ free_footnote_ref(item->ref);
334
+ free(item);
335
+ item = next;
336
+ }
337
+ }
338
+
339
+ /*
340
+ Wrap isalnum so that characters outside of the ASCII range don't count.
341
+ */
342
+ static inline int
343
+ _isalnum(int c)
344
+ {
345
+ return isalnum(c) && c < 0x7f;
346
+ }
347
+
348
+ /*
349
+ * Check whether a char is a Markdown space.
350
+
351
+ * Right now we only consider spaces the actual
352
+ * space and a newline: tabs and carriage returns
353
+ * are filtered out during the preprocessing phase.
354
+ *
355
+ * If we wanted to actually be UTF-8 compliant, we
356
+ * should instead extract an Unicode codepoint from
357
+ * this character and check for space properties.
358
+ */
359
+ static inline int
360
+ _isspace(int c)
361
+ {
362
+ return c == ' ' || c == '\n';
363
+ }
364
+
365
+ /****************************
366
+ * INLINE PARSING FUNCTIONS *
367
+ ****************************/
368
+
369
+ /* is_mail_autolink • looks for the address part of a mail autolink and '>' */
370
+ /* this is less strict than the original markdown e-mail address matching */
371
+ static size_t
372
+ is_mail_autolink(uint8_t *data, size_t size)
373
+ {
374
+ size_t i = 0, nb = 0;
375
+
376
+ /* address is assumed to be: [-@._a-zA-Z0-9]+ with exactly one '@' */
377
+ for (i = 0; i < size; ++i) {
378
+ if (_isalnum(data[i]))
379
+ continue;
380
+
381
+ switch (data[i]) {
382
+ case '@':
383
+ nb++;
384
+
385
+ case '-':
386
+ case '.':
387
+ case '_':
388
+ break;
389
+
390
+ case '>':
391
+ return (nb == 1) ? i + 1 : 0;
392
+
393
+ default:
394
+ return 0;
395
+ }
396
+ }
397
+
398
+ return 0;
399
+ }
400
+
401
+ /* tag_length • returns the length of the given tag, or 0 is it's not valid */
402
+ static size_t
403
+ tag_length(uint8_t *data, size_t size, enum mkd_autolink *autolink)
404
+ {
405
+ size_t i, j;
406
+
407
+ /* a valid tag can't be shorter than 3 chars */
408
+ if (size < 3) return 0;
409
+
410
+ /* begins with a '<' optionally followed by '/', followed by letter or number */
411
+ if (data[0] != '<') return 0;
412
+ i = (data[1] == '/') ? 2 : 1;
413
+
414
+ if (!_isalnum(data[i]))
415
+ return 0;
416
+
417
+ /* scheme test */
418
+ *autolink = MKDA_NOT_AUTOLINK;
419
+
420
+ /* try to find the beginning of an URI */
421
+ while (i < size && (_isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-'))
422
+ i++;
423
+
424
+ if (i > 1 && data[i] == '@') {
425
+ if ((j = is_mail_autolink(data + i, size - i)) != 0) {
426
+ *autolink = MKDA_EMAIL;
427
+ return i + j;
428
+ }
429
+ }
430
+
431
+ if (i > 2 && data[i] == ':') {
432
+ *autolink = MKDA_NORMAL;
433
+ i++;
434
+ }
435
+
436
+ /* completing autolink test: no whitespace or ' or " */
437
+ if (i >= size)
438
+ *autolink = MKDA_NOT_AUTOLINK;
439
+
440
+ else if (*autolink) {
441
+ j = i;
442
+
443
+ while (i < size) {
444
+ if (data[i] == '\\') i += 2;
445
+ else if (data[i] == '>' || data[i] == '\'' ||
446
+ data[i] == '"' || data[i] == ' ' || data[i] == '\n')
447
+ break;
448
+ else i++;
449
+ }
450
+
451
+ if (i >= size) return 0;
452
+ if (i > j && data[i] == '>') return i + 1;
453
+ /* one of the forbidden chars has been found */
454
+ *autolink = MKDA_NOT_AUTOLINK;
455
+ }
456
+
457
+ /* looking for sometinhg looking like a tag end */
458
+ while (i < size && data[i] != '>') i++;
459
+ if (i >= size) return 0;
460
+ return i + 1;
461
+ }
462
+
463
+ /* parse_inline • parses inline markdown elements */
464
+ static void
465
+ parse_inline(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size)
466
+ {
467
+ size_t i = 0, end = 0, consumed = 0;
468
+ uint8_t action = 0;
469
+ struct buf work = { 0, 0, 0, 0 };
470
+
471
+ if (rndr->work_bufs[BUFFER_SPAN].size +
472
+ rndr->work_bufs[BUFFER_BLOCK].size > rndr->max_nesting)
473
+ return;
474
+
475
+ while (i < size) {
476
+ /* copying inactive chars into the output */
477
+ while (end < size && (action = rndr->active_char[data[end]]) == 0) {
478
+ end++;
479
+ }
480
+
481
+ if (rndr->cb.normal_text) {
482
+ work.data = data + i;
483
+ work.size = end - i;
484
+ rndr->cb.normal_text(ob, &work, rndr->opaque);
485
+ }
486
+ else
487
+ bufput(ob, data + i, end - i);
488
+
489
+ if (end >= size) break;
490
+ i = end;
491
+
492
+ end = markdown_char_ptrs[(int)action](ob, rndr, data + i, i - consumed, size - i);
493
+ if (!end) /* no action from the callback */
494
+ end = i + 1;
495
+ else {
496
+ i += end;
497
+ end = i;
498
+ consumed = i;
499
+ }
500
+ }
501
+ }
502
+
503
+ /* find_emph_char • looks for the next emph uint8_t, skipping other constructs */
504
+ static size_t
505
+ find_emph_char(uint8_t *data, size_t size, uint8_t c)
506
+ {
507
+ size_t i = 1;
508
+
509
+ while (i < size) {
510
+ while (i < size && data[i] != c && data[i] != '[')
511
+ i++;
512
+
513
+ if (i == size)
514
+ return 0;
515
+
516
+ /* not counting escaped chars */
517
+ if (i && data[i - 1] == '\\') {
518
+ i++; continue;
519
+ }
520
+
521
+ if (data[i] == c)
522
+ return i;
523
+
524
+ if (data[i] == '`') {
525
+ size_t span_nb = 0, bt;
526
+ size_t tmp_i = 0;
527
+
528
+ /* counting the number of opening backticks */
529
+ while (i < size && data[i] == '`') {
530
+ i++; span_nb++;
531
+ }
532
+
533
+ if (i >= size) return 0;
534
+
535
+ /* finding the matching closing sequence */
536
+ bt = 0;
537
+ while (i < size && bt < span_nb) {
538
+ if (!tmp_i && data[i] == c) tmp_i = i;
539
+ if (data[i] == '`') bt++;
540
+ else bt = 0;
541
+ i++;
542
+ }
543
+
544
+ if (i >= size) return tmp_i;
545
+ }
546
+ /* skipping a link */
547
+ else if (data[i] == '[') {
548
+ size_t tmp_i = 0;
549
+ uint8_t cc;
550
+
551
+ i++;
552
+ while (i < size && data[i] != ']') {
553
+ if (!tmp_i && data[i] == c) tmp_i = i;
554
+ i++;
555
+ }
556
+
557
+ i++;
558
+ while (i < size && (data[i] == ' ' || data[i] == '\n'))
559
+ i++;
560
+
561
+ if (i >= size)
562
+ return tmp_i;
563
+
564
+ switch (data[i]) {
565
+ case '[':
566
+ cc = ']'; break;
567
+
568
+ case '(':
569
+ cc = ')'; break;
570
+
571
+ default:
572
+ if (tmp_i)
573
+ return tmp_i;
574
+ else
575
+ continue;
576
+ }
577
+
578
+ i++;
579
+ while (i < size && data[i] != cc) {
580
+ if (!tmp_i && data[i] == c) tmp_i = i;
581
+ i++;
582
+ }
583
+
584
+ if (i >= size)
585
+ return tmp_i;
586
+
587
+ i++;
588
+ }
589
+ }
590
+
591
+ return 0;
592
+ }
593
+
594
+ /* parse_emph1 • parsing single emphase */
595
+ /* closed by a symbol not preceded by whitespace and not followed by symbol */
596
+ static size_t
597
+ parse_emph1(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size, uint8_t c)
598
+ {
599
+ size_t i = 0, len;
600
+ struct buf *work = 0;
601
+ int r;
602
+
603
+ /* skipping one symbol if coming from emph3 */
604
+ if (size > 1 && data[0] == c && data[1] == c) i = 1;
605
+
606
+ while (i < size) {
607
+ len = find_emph_char(data + i, size - i, c);
608
+ if (!len) return 0;
609
+ i += len;
610
+ if (i >= size) return 0;
611
+
612
+ if (data[i] == c && !_isspace(data[i - 1])) {
613
+
614
+ if (rndr->ext_flags & MKDEXT_NO_INTRA_EMPHASIS) {
615
+ if (i + 1 < size && _isalnum(data[i + 1]))
616
+ continue;
617
+ }
618
+
619
+ work = rndr_newbuf(rndr, BUFFER_SPAN);
620
+ parse_inline(work, rndr, data, i);
621
+
622
+ if (rndr->ext_flags & MKDEXT_UNDERLINE && c == '_')
623
+ r = rndr->cb.underline(ob, work, rndr->opaque);
624
+ else
625
+ r = rndr->cb.emphasis(ob, work, rndr->opaque);
626
+
627
+ rndr_popbuf(rndr, BUFFER_SPAN);
628
+ return r ? i + 1 : 0;
629
+ }
630
+ }
631
+
632
+ return 0;
633
+ }
634
+
635
+ /* parse_emph2 • parsing single emphase */
636
+ static size_t
637
+ parse_emph2(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size, uint8_t c)
638
+ {
639
+ size_t i = 0, len;
640
+ struct buf *work = 0;
641
+ int r;
642
+
643
+ while (i < size) {
644
+ len = find_emph_char(data + i, size - i, c);
645
+ if (!len) return 0;
646
+ i += len;
647
+
648
+ if (i + 1 < size && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) {
649
+ work = rndr_newbuf(rndr, BUFFER_SPAN);
650
+ parse_inline(work, rndr, data, i);
651
+
652
+ if (c == '~')
653
+ r = rndr->cb.strikethrough(ob, work, rndr->opaque);
654
+ else if (c == '=')
655
+ r = rndr->cb.highlight(ob, work, rndr->opaque);
656
+ else
657
+ r = rndr->cb.double_emphasis(ob, work, rndr->opaque);
658
+
659
+ rndr_popbuf(rndr, BUFFER_SPAN);
660
+ return r ? i + 2 : 0;
661
+ }
662
+ i++;
663
+ }
664
+ return 0;
665
+ }
666
+
667
+ /* parse_emph3 • parsing single emphase */
668
+ /* finds the first closing tag, and delegates to the other emph */
669
+ static size_t
670
+ parse_emph3(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size, uint8_t c)
671
+ {
672
+ size_t i = 0, len;
673
+ int r;
674
+
675
+ while (i < size) {
676
+ len = find_emph_char(data + i, size - i, c);
677
+ if (!len) return 0;
678
+ i += len;
679
+
680
+ /* skip whitespace preceded symbols */
681
+ if (data[i] != c || _isspace(data[i - 1]))
682
+ continue;
683
+
684
+ if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && rndr->cb.triple_emphasis) {
685
+ /* triple symbol found */
686
+ struct buf *work = rndr_newbuf(rndr, BUFFER_SPAN);
687
+
688
+ parse_inline(work, rndr, data, i);
689
+ r = rndr->cb.triple_emphasis(ob, work, rndr->opaque);
690
+ rndr_popbuf(rndr, BUFFER_SPAN);
691
+ return r ? i + 3 : 0;
692
+
693
+ } else if (i + 1 < size && data[i + 1] == c) {
694
+ /* double symbol found, handing over to emph1 */
695
+ len = parse_emph1(ob, rndr, data - 2, size + 2, c);
696
+ if (!len) return 0;
697
+ else return len - 2;
698
+
699
+ } else {
700
+ /* single symbol found, handing over to emph2 */
701
+ len = parse_emph2(ob, rndr, data - 1, size + 1, c);
702
+ if (!len) return 0;
703
+ else return len - 1;
704
+ }
705
+ }
706
+ return 0;
707
+ }
708
+
709
+ /* char_emphasis • single and double emphasis parsing */
710
+ static size_t
711
+ char_emphasis(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
712
+ {
713
+ uint8_t c = data[0];
714
+ size_t ret;
715
+
716
+ if (rndr->ext_flags & MKDEXT_NO_INTRA_EMPHASIS) {
717
+ if (offset > 0 && _isalnum(data[-1]))
718
+ return 0;
719
+ }
720
+
721
+ if (size > 2 && data[1] != c) {
722
+ /* whitespace cannot follow an opening emphasis;
723
+ * strikethrough only takes two characters '~~' */
724
+ if (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, rndr, data + 1, size - 1, c)) == 0)
725
+ return 0;
726
+
727
+ return ret + 1;
728
+ }
729
+
730
+ if (size > 3 && data[1] == c && data[2] != c) {
731
+ if (_isspace(data[2]) || (ret = parse_emph2(ob, rndr, data + 2, size - 2, c)) == 0)
732
+ return 0;
733
+
734
+ return ret + 2;
735
+ }
736
+
737
+ if (size > 4 && data[1] == c && data[2] == c && data[3] != c) {
738
+ if (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, rndr, data + 3, size - 3, c)) == 0)
739
+ return 0;
740
+
741
+ return ret + 3;
742
+ }
743
+
744
+ return 0;
745
+ }
746
+
747
+
748
+ /* char_linebreak • '\n' preceded by two spaces (assuming linebreak != 0) */
749
+ static size_t
750
+ char_linebreak(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
751
+ {
752
+ if (offset < 2 || data[-1] != ' ' || data[-2] != ' ')
753
+ return 0;
754
+
755
+ /* removing the last space from ob and rendering */
756
+ while (ob->size && ob->data[ob->size - 1] == ' ')
757
+ ob->size--;
758
+
759
+ return rndr->cb.linebreak(ob, rndr->opaque) ? 1 : 0;
760
+ }
761
+
762
+
763
+ /* char_codespan • '`' parsing a code span (assuming codespan != 0) */
764
+ static size_t
765
+ char_codespan(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
766
+ {
767
+ size_t end, nb = 0, i, f_begin, f_end;
768
+
769
+ /* counting the number of backticks in the delimiter */
770
+ while (nb < size && data[nb] == '`')
771
+ nb++;
772
+
773
+ /* finding the next delimiter */
774
+ i = 0;
775
+ for (end = nb; end < size && i < nb; end++) {
776
+ if (data[end] == '`') i++;
777
+ else i = 0;
778
+ }
779
+
780
+ if (i < nb && end >= size)
781
+ return 0; /* no matching delimiter */
782
+
783
+ /* trimming outside whitespaces */
784
+ f_begin = nb;
785
+ while (f_begin < end && data[f_begin] == ' ')
786
+ f_begin++;
787
+
788
+ f_end = end - nb;
789
+ while (f_end > nb && data[f_end-1] == ' ')
790
+ f_end--;
791
+
792
+ /* real code span */
793
+ if (f_begin < f_end) {
794
+ struct buf work = { data + f_begin, f_end - f_begin, 0, 0 };
795
+ if (!rndr->cb.codespan(ob, &work, rndr->opaque))
796
+ end = 0;
797
+ } else {
798
+ if (!rndr->cb.codespan(ob, 0, rndr->opaque))
799
+ end = 0;
800
+ }
801
+
802
+ return end;
803
+ }
804
+
805
+ /* char_quote • '"' parsing a quote */
806
+ static size_t
807
+ char_quote(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
808
+ {
809
+ size_t end, nq = 0, i, f_begin, f_end;
810
+
811
+ /* counting the number of quotes in the delimiter */
812
+ while (nq < size && data[nq] == '"')
813
+ nq++;
814
+
815
+ /* finding the next delimiter */
816
+ i = 0;
817
+ for (end = nq; end < size && i < nq; end++) {
818
+ if (data[end] == '"') i++;
819
+ else i = 0;
820
+ }
821
+
822
+ if (i < nq && end >= size)
823
+ return 0; /* no matching delimiter */
824
+
825
+ /* trimming outside whitespaces */
826
+ f_begin = nq;
827
+ while (f_begin < end && data[f_begin] == ' ')
828
+ f_begin++;
829
+
830
+ f_end = end - nq;
831
+ while (f_end > nq && data[f_end-1] == ' ')
832
+ f_end--;
833
+
834
+ /* real quote */
835
+ if (f_begin < f_end) {
836
+ struct buf work = { data + f_begin, f_end - f_begin, 0, 0 };
837
+ if (!rndr->cb.quote(ob, &work, rndr->opaque))
838
+ end = 0;
839
+ } else {
840
+ if (!rndr->cb.quote(ob, 0, rndr->opaque))
841
+ end = 0;
842
+ }
843
+
844
+ return end;
845
+ }
846
+
847
+ /* char_escape • '\\' backslash escape */
848
+ static size_t
849
+ char_escape(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
850
+ {
851
+ static const char *escape_chars = "\\`*_{}[]()#+-.!:|&<>^~=";
852
+ struct buf work = { 0, 0, 0, 0 };
853
+
854
+ if (size > 1) {
855
+ if (strchr(escape_chars, data[1]) == NULL)
856
+ return 0;
857
+
858
+ if (rndr->cb.normal_text) {
859
+ work.data = data + 1;
860
+ work.size = 1;
861
+ rndr->cb.normal_text(ob, &work, rndr->opaque);
862
+ }
863
+ else bufputc(ob, data[1]);
864
+ } else if (size == 1) {
865
+ bufputc(ob, data[0]);
866
+ }
867
+
868
+ return 2;
869
+ }
870
+
871
+ /* char_entity • '&' escaped when it doesn't belong to an entity */
872
+ /* valid entities are assumed to be anything matching &#?[A-Za-z0-9]+; */
873
+ static size_t
874
+ char_entity(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
875
+ {
876
+ size_t end = 1;
877
+ struct buf work = { 0, 0, 0, 0 };
878
+
879
+ if (end < size && data[end] == '#')
880
+ end++;
881
+
882
+ while (end < size && _isalnum(data[end]))
883
+ end++;
884
+
885
+ if (end < size && data[end] == ';')
886
+ end++; /* real entity */
887
+ else
888
+ return 0; /* lone '&' */
889
+
890
+ if (rndr->cb.entity) {
891
+ work.data = data;
892
+ work.size = end;
893
+ rndr->cb.entity(ob, &work, rndr->opaque);
894
+ }
895
+ else bufput(ob, data, end);
896
+
897
+ return end;
898
+ }
899
+
900
+ /* char_langle_tag • '<' when tags or autolinks are allowed */
901
+ static size_t
902
+ char_langle_tag(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
903
+ {
904
+ enum mkd_autolink altype = MKDA_NOT_AUTOLINK;
905
+ size_t end = tag_length(data, size, &altype);
906
+ struct buf work = { data, end, 0, 0 };
907
+ int ret = 0;
908
+
909
+ if (end > 2) {
910
+ if (rndr->cb.autolink && altype != MKDA_NOT_AUTOLINK) {
911
+ struct buf *u_link = rndr_newbuf(rndr, BUFFER_SPAN);
912
+ work.data = data + 1;
913
+ work.size = end - 2;
914
+ unscape_text(u_link, &work);
915
+ ret = rndr->cb.autolink(ob, u_link, altype, rndr->opaque);
916
+ rndr_popbuf(rndr, BUFFER_SPAN);
917
+ }
918
+ else if (rndr->cb.raw_html_tag)
919
+ ret = rndr->cb.raw_html_tag(ob, &work, rndr->opaque);
920
+ }
921
+
922
+ if (!ret) return 0;
923
+ else return end;
924
+ }
925
+
926
+ static size_t
927
+ char_autolink_www(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
928
+ {
929
+ struct buf *link, *link_url, *link_text;
930
+ size_t link_len, rewind;
931
+
932
+ if (!rndr->cb.link || rndr->in_link_body)
933
+ return 0;
934
+
935
+ link = rndr_newbuf(rndr, BUFFER_SPAN);
936
+
937
+ if ((link_len = sd_autolink__www(&rewind, link, data, offset, size, 0)) > 0) {
938
+ link_url = rndr_newbuf(rndr, BUFFER_SPAN);
939
+ BUFPUTSL(link_url, "http://");
940
+ bufput(link_url, link->data, link->size);
941
+
942
+ ob->size -= rewind;
943
+ if (rndr->cb.normal_text) {
944
+ link_text = rndr_newbuf(rndr, BUFFER_SPAN);
945
+ rndr->cb.normal_text(link_text, link, rndr->opaque);
946
+ rndr->cb.link(ob, link_url, NULL, link_text, rndr->opaque);
947
+ rndr_popbuf(rndr, BUFFER_SPAN);
948
+ } else {
949
+ rndr->cb.link(ob, link_url, NULL, link, rndr->opaque);
950
+ }
951
+ rndr_popbuf(rndr, BUFFER_SPAN);
952
+ }
953
+
954
+ rndr_popbuf(rndr, BUFFER_SPAN);
955
+ return link_len;
956
+ }
957
+
958
+ static size_t
959
+ char_autolink_email(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
960
+ {
961
+ struct buf *link;
962
+ size_t link_len, rewind;
963
+
964
+ if (!rndr->cb.autolink || rndr->in_link_body)
965
+ return 0;
966
+
967
+ link = rndr_newbuf(rndr, BUFFER_SPAN);
968
+
969
+ if ((link_len = sd_autolink__email(&rewind, link, data, offset, size, 0)) > 0) {
970
+ ob->size -= rewind;
971
+ rndr->cb.autolink(ob, link, MKDA_EMAIL, rndr->opaque);
972
+ }
973
+
974
+ rndr_popbuf(rndr, BUFFER_SPAN);
975
+ return link_len;
976
+ }
977
+
978
+ static size_t
979
+ char_autolink_url(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
980
+ {
981
+ struct buf *link;
982
+ size_t link_len, rewind;
983
+
984
+ if (!rndr->cb.autolink || rndr->in_link_body)
985
+ return 0;
986
+
987
+ link = rndr_newbuf(rndr, BUFFER_SPAN);
988
+
989
+ if ((link_len = sd_autolink__url(&rewind, link, data, offset, size, SD_AUTOLINK_SHORT_DOMAINS)) > 0) {
990
+ ob->size -= rewind;
991
+ rndr->cb.autolink(ob, link, MKDA_NORMAL, rndr->opaque);
992
+ }
993
+
994
+ rndr_popbuf(rndr, BUFFER_SPAN);
995
+ return link_len;
996
+ }
997
+
998
+ /* char_link • '[': parsing a link or an image */
999
+ static size_t
1000
+ char_link(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
1001
+ {
1002
+ int is_img = (offset && data[-1] == '!'), level;
1003
+ size_t i = 1, txt_e, link_b = 0, link_e = 0, title_b = 0, title_e = 0;
1004
+ struct buf *content = 0;
1005
+ struct buf *link = 0;
1006
+ struct buf *title = 0;
1007
+ struct buf *u_link = 0;
1008
+ size_t org_work_size = rndr->work_bufs[BUFFER_SPAN].size;
1009
+ int text_has_nl = 0, ret = 0;
1010
+ int in_title = 0, qtype = 0;
1011
+
1012
+ /* checking whether the correct renderer exists */
1013
+ if ((is_img && !rndr->cb.image) || (!is_img && !rndr->cb.link))
1014
+ goto cleanup;
1015
+
1016
+ /* looking for the matching closing bracket */
1017
+ for (level = 1; i < size; i++) {
1018
+ if (data[i] == '\n')
1019
+ text_has_nl = 1;
1020
+
1021
+ else if (data[i - 1] == '\\')
1022
+ continue;
1023
+
1024
+ else if (data[i] == '[')
1025
+ level++;
1026
+
1027
+ else if (data[i] == ']') {
1028
+ level--;
1029
+ if (level <= 0)
1030
+ break;
1031
+ }
1032
+ }
1033
+
1034
+ if (i >= size)
1035
+ goto cleanup;
1036
+
1037
+ txt_e = i;
1038
+ i++;
1039
+
1040
+ /* footnote link */
1041
+ if (rndr->ext_flags & MKDEXT_FOOTNOTES && data[1] == '^') {
1042
+ if (txt_e < 3)
1043
+ goto cleanup;
1044
+
1045
+ struct buf id = { 0, 0, 0, 0 };
1046
+ struct footnote_ref *fr;
1047
+
1048
+ id.data = data + 2;
1049
+ id.size = txt_e - 2;
1050
+
1051
+ fr = find_footnote_ref(&rndr->footnotes_found, id.data, id.size);
1052
+
1053
+ /* mark footnote used */
1054
+ if (fr && !fr->is_used) {
1055
+ if(!add_footnote_ref(&rndr->footnotes_used, fr))
1056
+ goto cleanup;
1057
+ fr->is_used = 1;
1058
+ fr->num = rndr->footnotes_used.count;
1059
+ }
1060
+
1061
+ /* render */
1062
+ if (fr && rndr->cb.footnote_ref)
1063
+ ret = rndr->cb.footnote_ref(ob, fr->num, rndr->opaque);
1064
+
1065
+ goto cleanup;
1066
+ }
1067
+
1068
+ /* skip any amount of whitespace or newline */
1069
+ /* (this is much more laxist than original markdown syntax) */
1070
+ while (i < size && _isspace(data[i]))
1071
+ i++;
1072
+
1073
+ /* inline style link */
1074
+ if (i < size && data[i] == '(') {
1075
+ /* skipping initial whitespace */
1076
+ i++;
1077
+
1078
+ while (i < size && _isspace(data[i]))
1079
+ i++;
1080
+
1081
+ link_b = i;
1082
+
1083
+ /* looking for link end: ' " ) */
1084
+ /* Count the number of open parenthesis */
1085
+ size_t nb_p = 0;
1086
+
1087
+ while (i < size) {
1088
+ if (data[i] == '\\') i += 2;
1089
+ else if (data[i] == '(' && i != 0) {
1090
+ nb_p++; i++;
1091
+ }
1092
+ else if (data[i] == ')') {
1093
+ if (nb_p == 0) break;
1094
+ else nb_p--; i++;
1095
+ } else if (i >= 1 && _isspace(data[i-1]) && (data[i] == '\'' || data[i] == '"')) break;
1096
+ else i++;
1097
+ }
1098
+
1099
+ if (i >= size) goto cleanup;
1100
+ link_e = i;
1101
+
1102
+ /* looking for title end if present */
1103
+ if (data[i] == '\'' || data[i] == '"') {
1104
+ qtype = data[i];
1105
+ in_title = 1;
1106
+ i++;
1107
+ title_b = i;
1108
+
1109
+ while (i < size) {
1110
+ if (data[i] == '\\') i += 2;
1111
+ else if (data[i] == qtype) {in_title = 0; i++;}
1112
+ else if ((data[i] == ')') && !in_title) break;
1113
+ else i++;
1114
+ }
1115
+
1116
+ if (i >= size) goto cleanup;
1117
+
1118
+ /* skipping whitespaces after title */
1119
+ title_e = i - 1;
1120
+ while (title_e > title_b && _isspace(data[title_e]))
1121
+ title_e--;
1122
+
1123
+ /* checking for closing quote presence */
1124
+ if (data[title_e] != '\'' && data[title_e] != '"') {
1125
+ title_b = title_e = 0;
1126
+ link_e = i;
1127
+ }
1128
+ }
1129
+
1130
+ /* remove whitespace at the end of the link */
1131
+ while (link_e > link_b && _isspace(data[link_e - 1]))
1132
+ link_e--;
1133
+
1134
+ /* remove optional angle brackets around the link */
1135
+ if (data[link_b] == '<') link_b++;
1136
+ if (data[link_e - 1] == '>') link_e--;
1137
+
1138
+ /* building escaped link and title */
1139
+ if (link_e > link_b) {
1140
+ link = rndr_newbuf(rndr, BUFFER_SPAN);
1141
+ bufput(link, data + link_b, link_e - link_b);
1142
+ }
1143
+
1144
+ if (title_e > title_b) {
1145
+ title = rndr_newbuf(rndr, BUFFER_SPAN);
1146
+ bufput(title, data + title_b, title_e - title_b);
1147
+ }
1148
+
1149
+ i++;
1150
+ }
1151
+
1152
+ /* reference style link */
1153
+ else if (i < size && data[i] == '[') {
1154
+ struct buf id = { 0, 0, 0, 0 };
1155
+ struct link_ref *lr;
1156
+
1157
+ /* looking for the id */
1158
+ i++;
1159
+ link_b = i;
1160
+ while (i < size && data[i] != ']') i++;
1161
+ if (i >= size) goto cleanup;
1162
+ link_e = i;
1163
+
1164
+ /* finding the link_ref */
1165
+ if (link_b == link_e) {
1166
+ if (text_has_nl) {
1167
+ struct buf *b = rndr_newbuf(rndr, BUFFER_SPAN);
1168
+ size_t j;
1169
+
1170
+ for (j = 1; j < txt_e; j++) {
1171
+ if (data[j] != '\n')
1172
+ bufputc(b, data[j]);
1173
+ else if (data[j - 1] != ' ')
1174
+ bufputc(b, ' ');
1175
+ }
1176
+
1177
+ id.data = b->data;
1178
+ id.size = b->size;
1179
+ } else {
1180
+ id.data = data + 1;
1181
+ id.size = txt_e - 1;
1182
+ }
1183
+ } else {
1184
+ id.data = data + link_b;
1185
+ id.size = link_e - link_b;
1186
+ }
1187
+
1188
+ lr = find_link_ref(rndr->refs, id.data, id.size);
1189
+ if (!lr)
1190
+ goto cleanup;
1191
+
1192
+ /* keeping link and title from link_ref */
1193
+ link = lr->link;
1194
+ title = lr->title;
1195
+ i++;
1196
+ }
1197
+
1198
+ /* shortcut reference style link */
1199
+ else {
1200
+ struct buf id = { 0, 0, 0, 0 };
1201
+ struct link_ref *lr;
1202
+
1203
+ /* crafting the id */
1204
+ if (text_has_nl) {
1205
+ struct buf *b = rndr_newbuf(rndr, BUFFER_SPAN);
1206
+ size_t j;
1207
+
1208
+ for (j = 1; j < txt_e; j++) {
1209
+ if (data[j] != '\n')
1210
+ bufputc(b, data[j]);
1211
+ else if (data[j - 1] != ' ')
1212
+ bufputc(b, ' ');
1213
+ }
1214
+
1215
+ id.data = b->data;
1216
+ id.size = b->size;
1217
+ } else {
1218
+ id.data = data + 1;
1219
+ id.size = txt_e - 1;
1220
+ }
1221
+
1222
+ /* finding the link_ref */
1223
+ lr = find_link_ref(rndr->refs, id.data, id.size);
1224
+ if (!lr)
1225
+ goto cleanup;
1226
+
1227
+ /* keeping link and title from link_ref */
1228
+ link = lr->link;
1229
+ title = lr->title;
1230
+
1231
+ /* rewinding the whitespace */
1232
+ i = txt_e + 1;
1233
+ }
1234
+
1235
+ /* building content: img alt is escaped, link content is parsed */
1236
+ if (txt_e > 1) {
1237
+ content = rndr_newbuf(rndr, BUFFER_SPAN);
1238
+ if (is_img) {
1239
+ bufput(content, data + 1, txt_e - 1);
1240
+ } else {
1241
+ /* disable autolinking when parsing inline the
1242
+ * content of a link */
1243
+ rndr->in_link_body = 1;
1244
+ parse_inline(content, rndr, data + 1, txt_e - 1);
1245
+ rndr->in_link_body = 0;
1246
+ }
1247
+ }
1248
+
1249
+ if (link) {
1250
+ u_link = rndr_newbuf(rndr, BUFFER_SPAN);
1251
+ unscape_text(u_link, link);
1252
+ }
1253
+
1254
+ /* calling the relevant rendering function */
1255
+ if (is_img) {
1256
+ if (ob->size && ob->data[ob->size - 1] == '!')
1257
+ ob->size -= 1;
1258
+
1259
+ ret = rndr->cb.image(ob, u_link, title, content, rndr->opaque);
1260
+ } else {
1261
+ ret = rndr->cb.link(ob, u_link, title, content, rndr->opaque);
1262
+ }
1263
+
1264
+ /* cleanup */
1265
+ cleanup:
1266
+ rndr->work_bufs[BUFFER_SPAN].size = (int)org_work_size;
1267
+ return ret ? i : 0;
1268
+ }
1269
+
1270
+ static size_t
1271
+ char_superscript(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
1272
+ {
1273
+ size_t sup_start, sup_len;
1274
+ struct buf *sup;
1275
+
1276
+ if (!rndr->cb.superscript)
1277
+ return 0;
1278
+
1279
+ if (size < 2)
1280
+ return 0;
1281
+
1282
+ if (data[1] == '(') {
1283
+ sup_start = sup_len = 2;
1284
+
1285
+ while (sup_len < size && data[sup_len] != ')' && data[sup_len - 1] != '\\')
1286
+ sup_len++;
1287
+
1288
+ if (sup_len == size)
1289
+ return 0;
1290
+ } else {
1291
+ sup_start = sup_len = 1;
1292
+
1293
+ while (sup_len < size && !_isspace(data[sup_len]))
1294
+ sup_len++;
1295
+ }
1296
+
1297
+ if (sup_len - sup_start == 0)
1298
+ return (sup_start == 2) ? 3 : 0;
1299
+
1300
+ sup = rndr_newbuf(rndr, BUFFER_SPAN);
1301
+ parse_inline(sup, rndr, data + sup_start, sup_len - sup_start);
1302
+ rndr->cb.superscript(ob, sup, rndr->opaque);
1303
+ rndr_popbuf(rndr, BUFFER_SPAN);
1304
+
1305
+ return (sup_start == 2) ? sup_len + 1 : sup_len;
1306
+ }
1307
+
1308
+ /*********************************
1309
+ * BLOCK-LEVEL PARSING FUNCTIONS *
1310
+ *********************************/
1311
+
1312
+ /* is_empty • returns the line length when it is empty, 0 otherwise */
1313
+ static size_t
1314
+ is_empty(const uint8_t *data, size_t size)
1315
+ {
1316
+ size_t i;
1317
+
1318
+ for (i = 0; i < size && data[i] != '\n'; i++)
1319
+ if (data[i] != ' ')
1320
+ return 0;
1321
+
1322
+ return i + 1;
1323
+ }
1324
+
1325
+ /* is_hrule • returns whether a line is a horizontal rule */
1326
+ static int
1327
+ is_hrule(uint8_t *data, size_t size)
1328
+ {
1329
+ size_t i = 0, n = 0;
1330
+ uint8_t c;
1331
+
1332
+ /* skipping initial spaces */
1333
+ if (size < 3) return 0;
1334
+ if (data[0] == ' ') { i++;
1335
+ if (data[1] == ' ') { i++;
1336
+ if (data[2] == ' ') { i++; } } }
1337
+
1338
+ /* looking at the hrule uint8_t */
1339
+ if (i + 2 >= size
1340
+ || (data[i] != '*' && data[i] != '-' && data[i] != '_'))
1341
+ return 0;
1342
+ c = data[i];
1343
+
1344
+ /* the whole line must be the char or whitespace */
1345
+ while (i < size && data[i] != '\n') {
1346
+ if (data[i] == c) n++;
1347
+ else if (data[i] != ' ')
1348
+ return 0;
1349
+
1350
+ i++;
1351
+ }
1352
+
1353
+ return n >= 3;
1354
+ }
1355
+
1356
+ /* check if a line begins with a code fence; return the
1357
+ * width of the code fence */
1358
+ static size_t
1359
+ prefix_codefence(uint8_t *data, size_t size)
1360
+ {
1361
+ size_t i = 0, n = 0;
1362
+ uint8_t c;
1363
+
1364
+ /* skipping initial spaces */
1365
+ if (size < 3) return 0;
1366
+ if (data[0] == ' ') { i++;
1367
+ if (data[1] == ' ') { i++;
1368
+ if (data[2] == ' ') { i++; } } }
1369
+
1370
+ /* looking at the hrule uint8_t */
1371
+ if (i + 2 >= size || !(data[i] == '~' || data[i] == '`'))
1372
+ return 0;
1373
+
1374
+ c = data[i];
1375
+
1376
+ /* the whole line must be the uint8_t or whitespace */
1377
+ while (i < size && data[i] == c) {
1378
+ n++; i++;
1379
+ }
1380
+
1381
+ if (n < 3)
1382
+ return 0;
1383
+
1384
+ return i;
1385
+ }
1386
+
1387
+ /* check if a line is a code fence; return its size if it is */
1388
+ static size_t
1389
+ is_codefence(uint8_t *data, size_t size, struct buf *syntax)
1390
+ {
1391
+ size_t i = 0, syn_len = 0;
1392
+ uint8_t *syn_start;
1393
+
1394
+ i = prefix_codefence(data, size);
1395
+ if (i == 0)
1396
+ return 0;
1397
+
1398
+ while (i < size && data[i] == ' ')
1399
+ i++;
1400
+
1401
+ syn_start = data + i;
1402
+
1403
+ if (i < size && data[i] == '{') {
1404
+ i++; syn_start++;
1405
+
1406
+ while (i < size && data[i] != '}' && data[i] != '\n') {
1407
+ syn_len++; i++;
1408
+ }
1409
+
1410
+ if (i == size || data[i] != '}')
1411
+ return 0;
1412
+
1413
+ /* strip all whitespace at the beginning and the end
1414
+ * of the {} block */
1415
+ while (syn_len > 0 && _isspace(syn_start[0])) {
1416
+ syn_start++; syn_len--;
1417
+ }
1418
+
1419
+ while (syn_len > 0 && _isspace(syn_start[syn_len - 1]))
1420
+ syn_len--;
1421
+
1422
+ i++;
1423
+ } else {
1424
+ while (i < size && !_isspace(data[i])) {
1425
+ syn_len++; i++;
1426
+ }
1427
+ }
1428
+
1429
+ if (syntax) {
1430
+ syntax->data = syn_start;
1431
+ syntax->size = syn_len;
1432
+ }
1433
+
1434
+ while (i < size && data[i] != '\n') {
1435
+ if (!_isspace(data[i]))
1436
+ return 0;
1437
+
1438
+ i++;
1439
+ }
1440
+
1441
+ return i + 1;
1442
+ }
1443
+
1444
+ /* is_atxheader • returns whether the line is a hash-prefixed header */
1445
+ static int
1446
+ is_atxheader(struct sd_markdown *rndr, uint8_t *data, size_t size)
1447
+ {
1448
+ if (data[0] != '#')
1449
+ return 0;
1450
+
1451
+ if (rndr->ext_flags & MKDEXT_SPACE_HEADERS) {
1452
+ size_t level = 0;
1453
+
1454
+ while (level < size && level < 6 && data[level] == '#')
1455
+ level++;
1456
+
1457
+ if (level < size && data[level] != ' ')
1458
+ return 0;
1459
+ }
1460
+
1461
+ return 1;
1462
+ }
1463
+
1464
+ /* is_headerline • returns whether the line is a setext-style hdr underline */
1465
+ static int
1466
+ is_headerline(uint8_t *data, size_t size)
1467
+ {
1468
+ size_t i = 0;
1469
+
1470
+ /* test of level 1 header */
1471
+ if (data[i] == '=') {
1472
+ for (i = 1; i < size && data[i] == '='; i++);
1473
+ while (i < size && data[i] == ' ') i++;
1474
+ return (i >= size || data[i] == '\n') ? 1 : 0; }
1475
+
1476
+ /* test of level 2 header */
1477
+ if (data[i] == '-') {
1478
+ for (i = 1; i < size && data[i] == '-'; i++);
1479
+ while (i < size && data[i] == ' ') i++;
1480
+ return (i >= size || data[i] == '\n') ? 2 : 0; }
1481
+
1482
+ return 0;
1483
+ }
1484
+
1485
+ static int
1486
+ is_next_headerline(uint8_t *data, size_t size)
1487
+ {
1488
+ size_t i = 0;
1489
+
1490
+ while (i < size && data[i] != '\n')
1491
+ i++;
1492
+
1493
+ if (++i >= size)
1494
+ return 0;
1495
+
1496
+ return is_headerline(data + i, size - i);
1497
+ }
1498
+
1499
+ /* prefix_quote • returns blockquote prefix length */
1500
+ static size_t
1501
+ prefix_quote(uint8_t *data, size_t size)
1502
+ {
1503
+ size_t i = 0;
1504
+ if (i < size && data[i] == ' ') i++;
1505
+ if (i < size && data[i] == ' ') i++;
1506
+ if (i < size && data[i] == ' ') i++;
1507
+
1508
+ if (i < size && data[i] == '>') {
1509
+ if (i + 1 < size && data[i + 1] == ' ')
1510
+ return i + 2;
1511
+
1512
+ return i + 1;
1513
+ }
1514
+
1515
+ return 0;
1516
+ }
1517
+
1518
+ /* prefix_code • returns prefix length for block code*/
1519
+ static size_t
1520
+ prefix_code(uint8_t *data, size_t size)
1521
+ {
1522
+ if (size > 3 && data[0] == ' ' && data[1] == ' '
1523
+ && data[2] == ' ' && data[3] == ' ') return 4;
1524
+
1525
+ return 0;
1526
+ }
1527
+
1528
+ /* prefix_oli • returns ordered list item prefix */
1529
+ static size_t
1530
+ prefix_oli(uint8_t *data, size_t size)
1531
+ {
1532
+ size_t i = 0;
1533
+
1534
+ if (i < size && data[i] == ' ') i++;
1535
+ if (i < size && data[i] == ' ') i++;
1536
+ if (i < size && data[i] == ' ') i++;
1537
+
1538
+ if (i >= size || data[i] < '0' || data[i] > '9')
1539
+ return 0;
1540
+
1541
+ while (i < size && data[i] >= '0' && data[i] <= '9')
1542
+ i++;
1543
+
1544
+ if (i + 1 >= size || data[i] != '.' || data[i + 1] != ' ')
1545
+ return 0;
1546
+
1547
+ if (is_next_headerline(data + i, size - i))
1548
+ return 0;
1549
+
1550
+ return i + 2;
1551
+ }
1552
+
1553
+ /* prefix_uli • returns unordered list item prefix */
1554
+ static size_t
1555
+ prefix_uli(uint8_t *data, size_t size)
1556
+ {
1557
+ size_t i = 0;
1558
+
1559
+ if (i < size && data[i] == ' ') i++;
1560
+ if (i < size && data[i] == ' ') i++;
1561
+ if (i < size && data[i] == ' ') i++;
1562
+
1563
+ if (i + 1 >= size ||
1564
+ (data[i] != '*' && data[i] != '+' && data[i] != '-') ||
1565
+ data[i + 1] != ' ')
1566
+ return 0;
1567
+
1568
+ if (is_next_headerline(data + i, size - i))
1569
+ return 0;
1570
+
1571
+ return i + 2;
1572
+ }
1573
+
1574
+
1575
+ /* parse_block • parsing of one block, returning next uint8_t to parse */
1576
+ static void parse_block(struct buf *ob, struct sd_markdown *rndr,
1577
+ uint8_t *data, size_t size);
1578
+
1579
+
1580
+ /* parse_blockquote • handles parsing of a blockquote fragment */
1581
+ static size_t
1582
+ parse_blockquote(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size)
1583
+ {
1584
+ size_t beg, end = 0, pre, work_size = 0;
1585
+ uint8_t *work_data = 0;
1586
+ struct buf *out = 0;
1587
+
1588
+ out = rndr_newbuf(rndr, BUFFER_BLOCK);
1589
+ beg = 0;
1590
+ while (beg < size) {
1591
+ for (end = beg + 1; end < size && data[end - 1] != '\n'; end++);
1592
+
1593
+ pre = prefix_quote(data + beg, end - beg);
1594
+
1595
+ if (pre)
1596
+ beg += pre; /* skipping prefix */
1597
+
1598
+ /* empty line followed by non-quote line */
1599
+ else if (is_empty(data + beg, end - beg) &&
1600
+ (end >= size || (prefix_quote(data + end, size - end) == 0 &&
1601
+ !is_empty(data + end, size - end))))
1602
+ break;
1603
+
1604
+ if (beg < end) { /* copy into the in-place working buffer */
1605
+ /* bufput(work, data + beg, end - beg); */
1606
+ if (!work_data)
1607
+ work_data = data + beg;
1608
+ else if (data + beg != work_data + work_size)
1609
+ memmove(work_data + work_size, data + beg, end - beg);
1610
+ work_size += end - beg;
1611
+ }
1612
+ beg = end;
1613
+ }
1614
+
1615
+ parse_block(out, rndr, work_data, work_size);
1616
+ if (rndr->cb.blockquote)
1617
+ rndr->cb.blockquote(ob, out, rndr->opaque);
1618
+ rndr_popbuf(rndr, BUFFER_BLOCK);
1619
+ return end;
1620
+ }
1621
+
1622
+ static size_t
1623
+ parse_htmlblock(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size, int do_render);
1624
+
1625
+ /* parse_paragraph • handles parsing of a regular paragraph */
1626
+ static size_t
1627
+ parse_paragraph(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size)
1628
+ {
1629
+ size_t i = 0, end = 0;
1630
+ int level = 0, last_is_empty = 1;
1631
+ struct buf work = { data, 0, 0, 0 };
1632
+
1633
+ while (i < size) {
1634
+ for (end = i + 1; end < size && data[end - 1] != '\n'; end++) /* empty */;
1635
+
1636
+ if (is_empty(data + i, size - i))
1637
+ break;
1638
+
1639
+ if (!last_is_empty && (level = is_headerline(data + i, size - i)) != 0)
1640
+ break;
1641
+
1642
+ last_is_empty = 0;
1643
+
1644
+ if (is_atxheader(rndr, data + i, size - i) ||
1645
+ is_hrule(data + i, size - i) ||
1646
+ prefix_quote(data + i, size - i)) {
1647
+ end = i;
1648
+ break;
1649
+ }
1650
+
1651
+ /*
1652
+ * Early termination of a paragraph with the same logic
1653
+ * as Markdown 1.0.0. If this logic is applied, the
1654
+ * Markdown 1.0.3 test suite won't pass cleanly
1655
+ *
1656
+ * :: If the first character in a new line is not a letter,
1657
+ * let's check to see if there's some kind of block starting
1658
+ * here
1659
+ */
1660
+ if ((rndr->ext_flags & MKDEXT_LAX_SPACING) && !isalpha(data[i])) {
1661
+ if (prefix_oli(data + i, size - i) ||
1662
+ prefix_uli(data + i, size - i)) {
1663
+ end = i;
1664
+ break;
1665
+ }
1666
+
1667
+ /* see if an html block starts here */
1668
+ if (data[i] == '<' && rndr->cb.blockhtml &&
1669
+ parse_htmlblock(ob, rndr, data + i, size - i, 0)) {
1670
+ end = i;
1671
+ break;
1672
+ }
1673
+
1674
+ /* see if a code fence starts here */
1675
+ if ((rndr->ext_flags & MKDEXT_FENCED_CODE) != 0 &&
1676
+ is_codefence(data + i, size - i, NULL) != 0) {
1677
+ end = i;
1678
+ break;
1679
+ }
1680
+ }
1681
+
1682
+ i = end;
1683
+ }
1684
+
1685
+ work.size = i;
1686
+ while (work.size && data[work.size - 1] == '\n')
1687
+ work.size--;
1688
+
1689
+ if (!level) {
1690
+ struct buf *tmp = rndr_newbuf(rndr, BUFFER_BLOCK);
1691
+ parse_inline(tmp, rndr, work.data, work.size);
1692
+ if (rndr->cb.paragraph)
1693
+ rndr->cb.paragraph(ob, tmp, rndr->opaque);
1694
+ rndr_popbuf(rndr, BUFFER_BLOCK);
1695
+ } else {
1696
+ struct buf *header_work;
1697
+
1698
+ if (work.size) {
1699
+ size_t beg;
1700
+ i = work.size;
1701
+ work.size -= 1;
1702
+
1703
+ while (work.size && data[work.size] != '\n')
1704
+ work.size -= 1;
1705
+
1706
+ beg = work.size + 1;
1707
+ while (work.size && data[work.size - 1] == '\n')
1708
+ work.size -= 1;
1709
+
1710
+ if (work.size > 0) {
1711
+ struct buf *tmp = rndr_newbuf(rndr, BUFFER_BLOCK);
1712
+ parse_inline(tmp, rndr, work.data, work.size);
1713
+
1714
+ if (rndr->cb.paragraph)
1715
+ rndr->cb.paragraph(ob, tmp, rndr->opaque);
1716
+
1717
+ rndr_popbuf(rndr, BUFFER_BLOCK);
1718
+ work.data += beg;
1719
+ work.size = i - beg;
1720
+ }
1721
+ else work.size = i;
1722
+ }
1723
+
1724
+ header_work = rndr_newbuf(rndr, BUFFER_SPAN);
1725
+ parse_inline(header_work, rndr, work.data, work.size);
1726
+
1727
+ if (rndr->cb.header)
1728
+ rndr->cb.header(ob, header_work, (int)level, rndr->opaque);
1729
+
1730
+ rndr_popbuf(rndr, BUFFER_SPAN);
1731
+ }
1732
+
1733
+ return end;
1734
+ }
1735
+
1736
+ /* parse_fencedcode • handles parsing of a block-level code fragment */
1737
+ static size_t
1738
+ parse_fencedcode(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size)
1739
+ {
1740
+ size_t beg, end;
1741
+ struct buf *work = 0;
1742
+ struct buf lang = { 0, 0, 0, 0 };
1743
+
1744
+ beg = is_codefence(data, size, &lang);
1745
+ if (beg == 0) return 0;
1746
+
1747
+ work = rndr_newbuf(rndr, BUFFER_BLOCK);
1748
+
1749
+ while (beg < size) {
1750
+ size_t fence_end;
1751
+ struct buf fence_trail = { 0, 0, 0, 0 };
1752
+
1753
+ fence_end = is_codefence(data + beg, size - beg, &fence_trail);
1754
+ if (fence_end != 0 && fence_trail.size == 0) {
1755
+ beg += fence_end;
1756
+ break;
1757
+ }
1758
+
1759
+ for (end = beg + 1; end < size && data[end - 1] != '\n'; end++);
1760
+
1761
+ if (beg < end) {
1762
+ /* verbatim copy to the working buffer,
1763
+ escaping entities */
1764
+ if (is_empty(data + beg, end - beg))
1765
+ bufputc(work, '\n');
1766
+ else bufput(work, data + beg, end - beg);
1767
+ }
1768
+ beg = end;
1769
+ }
1770
+
1771
+ if (work->size && work->data[work->size - 1] != '\n')
1772
+ bufputc(work, '\n');
1773
+
1774
+ if (rndr->cb.blockcode)
1775
+ rndr->cb.blockcode(ob, work, lang.size ? &lang : NULL, rndr->opaque);
1776
+
1777
+ rndr_popbuf(rndr, BUFFER_BLOCK);
1778
+ return beg;
1779
+ }
1780
+
1781
+ static size_t
1782
+ parse_blockcode(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size)
1783
+ {
1784
+ size_t beg, end, pre;
1785
+ struct buf *work = 0;
1786
+
1787
+ work = rndr_newbuf(rndr, BUFFER_BLOCK);
1788
+
1789
+ beg = 0;
1790
+ while (beg < size) {
1791
+ for (end = beg + 1; end < size && data[end - 1] != '\n'; end++) {};
1792
+ pre = prefix_code(data + beg, end - beg);
1793
+
1794
+ if (pre)
1795
+ beg += pre; /* skipping prefix */
1796
+ else if (!is_empty(data + beg, end - beg))
1797
+ /* non-empty non-prefixed line breaks the pre */
1798
+ break;
1799
+
1800
+ if (beg < end) {
1801
+ /* verbatim copy to the working buffer,
1802
+ escaping entities */
1803
+ if (is_empty(data + beg, end - beg))
1804
+ bufputc(work, '\n');
1805
+ else bufput(work, data + beg, end - beg);
1806
+ }
1807
+ beg = end;
1808
+ }
1809
+
1810
+ while (work->size && work->data[work->size - 1] == '\n')
1811
+ work->size -= 1;
1812
+
1813
+ bufputc(work, '\n');
1814
+
1815
+ if (rndr->cb.blockcode)
1816
+ rndr->cb.blockcode(ob, work, NULL, rndr->opaque);
1817
+
1818
+ rndr_popbuf(rndr, BUFFER_BLOCK);
1819
+ return beg;
1820
+ }
1821
+
1822
+ /* parse_listitem • parsing of a single list item */
1823
+ /* assuming initial prefix is already removed */
1824
+ static size_t
1825
+ parse_listitem(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size, int *flags)
1826
+ {
1827
+ struct buf *work = 0, *inter = 0;
1828
+ size_t beg = 0, end, pre, sublist = 0, orgpre = 0, i;
1829
+ int in_empty = 0, has_inside_empty = 0, in_fence = 0;
1830
+
1831
+ /* keeping track of the first indentation prefix */
1832
+ while (orgpre < 3 && orgpre < size && data[orgpre] == ' ')
1833
+ orgpre++;
1834
+
1835
+ beg = prefix_uli(data, size);
1836
+ if (!beg)
1837
+ beg = prefix_oli(data, size);
1838
+
1839
+ if (!beg)
1840
+ return 0;
1841
+
1842
+ /* skipping to the beginning of the following line */
1843
+ end = beg;
1844
+ while (end < size && data[end - 1] != '\n')
1845
+ end++;
1846
+
1847
+ /* getting working buffers */
1848
+ work = rndr_newbuf(rndr, BUFFER_SPAN);
1849
+ inter = rndr_newbuf(rndr, BUFFER_SPAN);
1850
+
1851
+ /* putting the first line into the working buffer */
1852
+ bufput(work, data + beg, end - beg);
1853
+ beg = end;
1854
+
1855
+ /* process the following lines */
1856
+ while (beg < size) {
1857
+ size_t has_next_uli = 0, has_next_oli = 0;
1858
+
1859
+ end++;
1860
+
1861
+ while (end < size && data[end - 1] != '\n')
1862
+ end++;
1863
+
1864
+ /* process an empty line */
1865
+ if (is_empty(data + beg, end - beg)) {
1866
+ in_empty = 1;
1867
+ beg = end;
1868
+ continue;
1869
+ }
1870
+
1871
+ /* calculating the indentation */
1872
+ i = 0;
1873
+ while (i < 4 && beg + i < end && data[beg + i] == ' ')
1874
+ i++;
1875
+
1876
+ pre = i;
1877
+
1878
+ if (rndr->ext_flags & MKDEXT_FENCED_CODE) {
1879
+ if (is_codefence(data + beg + i, end - beg - i, NULL) != 0)
1880
+ in_fence = !in_fence;
1881
+ }
1882
+
1883
+ /* Only check for new list items if we are **not** inside
1884
+ * a fenced code block */
1885
+ if (!in_fence) {
1886
+ has_next_uli = prefix_uli(data + beg + i, end - beg - i);
1887
+ has_next_oli = prefix_oli(data + beg + i, end - beg - i);
1888
+ }
1889
+
1890
+ /* checking for ul/ol switch */
1891
+ if (in_empty && (
1892
+ ((*flags & MKD_LIST_ORDERED) && has_next_uli) ||
1893
+ (!(*flags & MKD_LIST_ORDERED) && has_next_oli))){
1894
+ *flags |= MKD_LI_END;
1895
+ break; /* the following item must have same list type */
1896
+ }
1897
+
1898
+ /* checking for a new item */
1899
+ if ((has_next_uli && !is_hrule(data + beg + i, end - beg - i)) || has_next_oli) {
1900
+ if (in_empty)
1901
+ has_inside_empty = 1;
1902
+
1903
+ if (pre == orgpre) /* the following item must have */
1904
+ break; /* the same indentation */
1905
+
1906
+ if (!sublist)
1907
+ sublist = work->size;
1908
+ }
1909
+ /* joining only indented stuff after empty lines */
1910
+ else if (in_empty && i < 4 && data[beg] != '\t') {
1911
+ *flags |= MKD_LI_END;
1912
+ break;
1913
+ }
1914
+ else if (in_empty) {
1915
+ bufputc(work, '\n');
1916
+ has_inside_empty = 1;
1917
+ }
1918
+
1919
+ in_empty = 0;
1920
+
1921
+ /* adding the line without prefix into the working buffer */
1922
+ bufput(work, data + beg + i, end - beg - i);
1923
+ beg = end;
1924
+ }
1925
+
1926
+ /* render of li contents */
1927
+ if (has_inside_empty)
1928
+ *flags |= MKD_LI_BLOCK;
1929
+
1930
+ if (*flags & MKD_LI_BLOCK) {
1931
+ /* intermediate render of block li */
1932
+ if (sublist && sublist < work->size) {
1933
+ parse_block(inter, rndr, work->data, sublist);
1934
+ parse_block(inter, rndr, work->data + sublist, work->size - sublist);
1935
+ }
1936
+ else
1937
+ parse_block(inter, rndr, work->data, work->size);
1938
+ } else {
1939
+ /* intermediate render of inline li */
1940
+ if (sublist && sublist < work->size) {
1941
+ parse_inline(inter, rndr, work->data, sublist);
1942
+ parse_block(inter, rndr, work->data + sublist, work->size - sublist);
1943
+ }
1944
+ else
1945
+ parse_inline(inter, rndr, work->data, work->size);
1946
+ }
1947
+
1948
+ /* render of li itself */
1949
+ if (rndr->cb.listitem)
1950
+ rndr->cb.listitem(ob, inter, *flags, rndr->opaque);
1951
+
1952
+ rndr_popbuf(rndr, BUFFER_SPAN);
1953
+ rndr_popbuf(rndr, BUFFER_SPAN);
1954
+ return beg;
1955
+ }
1956
+
1957
+
1958
+ /* parse_list • parsing ordered or unordered list block */
1959
+ static size_t
1960
+ parse_list(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size, int flags)
1961
+ {
1962
+ struct buf *work = 0;
1963
+ size_t i = 0, j;
1964
+
1965
+ work = rndr_newbuf(rndr, BUFFER_BLOCK);
1966
+
1967
+ while (i < size) {
1968
+ j = parse_listitem(work, rndr, data + i, size - i, &flags);
1969
+ i += j;
1970
+
1971
+ if (!j || (flags & MKD_LI_END))
1972
+ break;
1973
+ }
1974
+
1975
+ if (rndr->cb.list)
1976
+ rndr->cb.list(ob, work, flags, rndr->opaque);
1977
+ rndr_popbuf(rndr, BUFFER_BLOCK);
1978
+ return i;
1979
+ }
1980
+
1981
+ /* parse_atxheader • parsing of atx-style headers */
1982
+ static size_t
1983
+ parse_atxheader(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size)
1984
+ {
1985
+ size_t level = 0;
1986
+ size_t i, end, skip;
1987
+
1988
+ while (level < size && level < 6 && data[level] == '#')
1989
+ level++;
1990
+
1991
+ for (i = level; i < size && data[i] == ' '; i++);
1992
+
1993
+ for (end = i; end < size && data[end] != '\n'; end++);
1994
+ skip = end;
1995
+
1996
+ while (end && data[end - 1] == '#')
1997
+ end--;
1998
+
1999
+ while (end && data[end - 1] == ' ')
2000
+ end--;
2001
+
2002
+ if (end > i) {
2003
+ struct buf *work = rndr_newbuf(rndr, BUFFER_SPAN);
2004
+
2005
+ parse_inline(work, rndr, data + i, end - i);
2006
+
2007
+ if (rndr->cb.header)
2008
+ rndr->cb.header(ob, work, (int)level, rndr->opaque);
2009
+
2010
+ rndr_popbuf(rndr, BUFFER_SPAN);
2011
+ }
2012
+
2013
+ return skip;
2014
+ }
2015
+
2016
+ /* parse_footnote_def • parse a single footnote definition */
2017
+ static void
2018
+ parse_footnote_def(struct buf *ob, struct sd_markdown *rndr, unsigned int num, uint8_t *data, size_t size)
2019
+ {
2020
+ struct buf *work = 0;
2021
+ work = rndr_newbuf(rndr, BUFFER_SPAN);
2022
+
2023
+ parse_block(work, rndr, data, size);
2024
+
2025
+ if (rndr->cb.footnote_def)
2026
+ rndr->cb.footnote_def(ob, work, num, rndr->opaque);
2027
+ rndr_popbuf(rndr, BUFFER_SPAN);
2028
+ }
2029
+
2030
+ /* parse_footnote_list • render the contents of the footnotes */
2031
+ static void
2032
+ parse_footnote_list(struct buf *ob, struct sd_markdown *rndr, struct footnote_list *footnotes)
2033
+ {
2034
+ struct buf *work = 0;
2035
+ struct footnote_item *item;
2036
+ struct footnote_ref *ref;
2037
+
2038
+ if (footnotes->count == 0)
2039
+ return;
2040
+
2041
+ work = rndr_newbuf(rndr, BUFFER_BLOCK);
2042
+
2043
+ item = footnotes->head;
2044
+ while (item) {
2045
+ ref = item->ref;
2046
+ parse_footnote_def(work, rndr, ref->num, ref->contents->data, ref->contents->size);
2047
+ item = item->next;
2048
+ }
2049
+
2050
+ if (rndr->cb.footnotes)
2051
+ rndr->cb.footnotes(ob, work, rndr->opaque);
2052
+ rndr_popbuf(rndr, BUFFER_BLOCK);
2053
+ }
2054
+
2055
+ /* htmlblock_end • checking end of HTML block : </tag>[ \t]*\n[ \t*]\n */
2056
+ /* returns the length on match, 0 otherwise */
2057
+ static size_t
2058
+ htmlblock_end_tag(
2059
+ const char *tag,
2060
+ size_t tag_len,
2061
+ struct sd_markdown *rndr,
2062
+ uint8_t *data,
2063
+ size_t size)
2064
+ {
2065
+ size_t i, w;
2066
+
2067
+ /* checking if tag is a match */
2068
+ if (tag_len + 3 >= size ||
2069
+ strncasecmp((char *)data + 2, tag, tag_len) != 0 ||
2070
+ data[tag_len + 2] != '>')
2071
+ return 0;
2072
+
2073
+ /* checking white lines */
2074
+ i = tag_len + 3;
2075
+ w = 0;
2076
+ if (i < size && (w = is_empty(data + i, size - i)) == 0)
2077
+ return 0; /* non-blank after tag */
2078
+ i += w;
2079
+ w = 0;
2080
+
2081
+ if (i < size)
2082
+ w = is_empty(data + i, size - i);
2083
+
2084
+ return i + w;
2085
+ }
2086
+
2087
+ static size_t
2088
+ htmlblock_end(const char *curtag,
2089
+ struct sd_markdown *rndr,
2090
+ uint8_t *data,
2091
+ size_t size,
2092
+ int start_of_line)
2093
+ {
2094
+ size_t tag_size = strlen(curtag);
2095
+ size_t i = 1, end_tag;
2096
+ int block_lines = 0;
2097
+
2098
+ while (i < size) {
2099
+ i++;
2100
+ while (i < size && !(data[i - 1] == '<' && data[i] == '/')) {
2101
+ if (data[i] == '\n')
2102
+ block_lines++;
2103
+
2104
+ i++;
2105
+ }
2106
+
2107
+ /* If we are only looking for unindented tags, skip the tag
2108
+ * if it doesn't follow a newline.
2109
+ *
2110
+ * The only exception to this is if the tag is still on the
2111
+ * initial line; in that case it still counts as a closing
2112
+ * tag
2113
+ */
2114
+ if (start_of_line && block_lines > 0 && data[i - 2] != '\n')
2115
+ continue;
2116
+
2117
+ if (i + 2 + tag_size >= size)
2118
+ break;
2119
+
2120
+ end_tag = htmlblock_end_tag(curtag, tag_size, rndr, data + i - 1, size - i + 1);
2121
+ if (end_tag)
2122
+ return i + end_tag - 1;
2123
+ }
2124
+
2125
+ return 0;
2126
+ }
2127
+
2128
+
2129
+ /* parse_htmlblock • parsing of inline HTML block */
2130
+ static size_t
2131
+ parse_htmlblock(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size, int do_render)
2132
+ {
2133
+ size_t i, j = 0, tag_end;
2134
+ const char *curtag = NULL;
2135
+ struct buf work = { data, 0, 0, 0 };
2136
+
2137
+ /* identification of the opening tag */
2138
+ if (size < 2 || data[0] != '<')
2139
+ return 0;
2140
+
2141
+ i = 1;
2142
+ while (i < size && data[i] != '>' && data[i] != ' ')
2143
+ i++;
2144
+
2145
+ if (i < size)
2146
+ curtag = find_block_tag((char *)data + 1, (int)i - 1);
2147
+
2148
+ /* handling of special cases */
2149
+ if (!curtag) {
2150
+
2151
+ /* HTML comment, laxist form */
2152
+ if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
2153
+ i = 5;
2154
+
2155
+ while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
2156
+ i++;
2157
+
2158
+ i++;
2159
+
2160
+ if (i < size)
2161
+ j = is_empty(data + i, size - i);
2162
+
2163
+ if (j) {
2164
+ work.size = i + j;
2165
+ if (do_render && rndr->cb.blockhtml)
2166
+ rndr->cb.blockhtml(ob, &work, rndr->opaque);
2167
+ return work.size;
2168
+ }
2169
+ }
2170
+
2171
+ /* HR, which is the only self-closing block tag considered */
2172
+ if (size > 4 && (data[1] == 'h' || data[1] == 'H') && (data[2] == 'r' || data[2] == 'R')) {
2173
+ i = 3;
2174
+ while (i < size && data[i] != '>')
2175
+ i++;
2176
+
2177
+ if (i + 1 < size) {
2178
+ i++;
2179
+ j = is_empty(data + i, size - i);
2180
+ if (j) {
2181
+ work.size = i + j;
2182
+ if (do_render && rndr->cb.blockhtml)
2183
+ rndr->cb.blockhtml(ob, &work, rndr->opaque);
2184
+ return work.size;
2185
+ }
2186
+ }
2187
+ }
2188
+
2189
+ /* no special case recognised */
2190
+ return 0;
2191
+ }
2192
+
2193
+ /* looking for an unindented matching closing tag */
2194
+ /* followed by a blank line */
2195
+ tag_end = htmlblock_end(curtag, rndr, data, size, 1);
2196
+
2197
+ /* if not found, trying a second pass looking for indented match */
2198
+ /* but not if tag is "ins" or "del" (following original Markdown.pl) */
2199
+ if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0) {
2200
+ tag_end = htmlblock_end(curtag, rndr, data, size, 0);
2201
+ }
2202
+
2203
+ if (!tag_end)
2204
+ return 0;
2205
+
2206
+ /* the end of the block has been found */
2207
+ work.size = tag_end;
2208
+ if (do_render && rndr->cb.blockhtml)
2209
+ rndr->cb.blockhtml(ob, &work, rndr->opaque);
2210
+
2211
+ return tag_end;
2212
+ }
2213
+
2214
+ static void
2215
+ parse_table_row(
2216
+ struct buf *ob,
2217
+ struct sd_markdown *rndr,
2218
+ uint8_t *data,
2219
+ size_t size,
2220
+ size_t columns,
2221
+ int *col_data,
2222
+ int header_flag)
2223
+ {
2224
+ size_t i = 0, col;
2225
+ struct buf *row_work = 0;
2226
+
2227
+ if (!rndr->cb.table_cell || !rndr->cb.table_row)
2228
+ return;
2229
+
2230
+ row_work = rndr_newbuf(rndr, BUFFER_SPAN);
2231
+
2232
+ if (i < size && data[i] == '|')
2233
+ i++;
2234
+
2235
+ for (col = 0; col < columns && i < size; ++col) {
2236
+ size_t cell_start, cell_end;
2237
+ struct buf *cell_work;
2238
+
2239
+ cell_work = rndr_newbuf(rndr, BUFFER_SPAN);
2240
+
2241
+ while (i < size && _isspace(data[i]))
2242
+ i++;
2243
+
2244
+ cell_start = i;
2245
+
2246
+ while (i < size && data[i] != '|')
2247
+ i++;
2248
+
2249
+ cell_end = i - 1;
2250
+
2251
+ while (cell_end > cell_start && _isspace(data[cell_end]))
2252
+ cell_end--;
2253
+
2254
+ parse_inline(cell_work, rndr, data + cell_start, 1 + cell_end - cell_start);
2255
+ rndr->cb.table_cell(row_work, cell_work, col_data[col] | header_flag, rndr->opaque);
2256
+
2257
+ rndr_popbuf(rndr, BUFFER_SPAN);
2258
+ i++;
2259
+ }
2260
+
2261
+ for (; col < columns; ++col) {
2262
+ struct buf empty_cell = { 0, 0, 0, 0 };
2263
+ rndr->cb.table_cell(row_work, &empty_cell, col_data[col] | header_flag, rndr->opaque);
2264
+ }
2265
+
2266
+ rndr->cb.table_row(ob, row_work, rndr->opaque);
2267
+
2268
+ rndr_popbuf(rndr, BUFFER_SPAN);
2269
+ }
2270
+
2271
+ static size_t
2272
+ parse_table_header(
2273
+ struct buf *ob,
2274
+ struct sd_markdown *rndr,
2275
+ uint8_t *data,
2276
+ size_t size,
2277
+ size_t *columns,
2278
+ int **column_data)
2279
+ {
2280
+ int pipes;
2281
+ size_t i = 0, col, header_end, under_end;
2282
+
2283
+ pipes = 0;
2284
+ while (i < size && data[i] != '\n')
2285
+ if (data[i++] == '|')
2286
+ pipes++;
2287
+
2288
+ if (i == size || pipes == 0)
2289
+ return 0;
2290
+
2291
+ header_end = i;
2292
+
2293
+ while (header_end > 0 && _isspace(data[header_end - 1]))
2294
+ header_end--;
2295
+
2296
+ if (data[0] == '|')
2297
+ pipes--;
2298
+
2299
+ if (header_end && data[header_end - 1] == '|')
2300
+ pipes--;
2301
+
2302
+ *columns = pipes + 1;
2303
+ *column_data = calloc(*columns, sizeof(int));
2304
+
2305
+ /* Parse the header underline */
2306
+ i++;
2307
+ if (i < size && data[i] == '|')
2308
+ i++;
2309
+
2310
+ under_end = i;
2311
+ while (under_end < size && data[under_end] != '\n')
2312
+ under_end++;
2313
+
2314
+ for (col = 0; col < *columns && i < under_end; ++col) {
2315
+ size_t dashes = 0;
2316
+
2317
+ while (i < under_end && data[i] == ' ')
2318
+ i++;
2319
+
2320
+ if (data[i] == ':') {
2321
+ i++; (*column_data)[col] |= MKD_TABLE_ALIGN_L;
2322
+ dashes++;
2323
+ }
2324
+
2325
+ while (i < under_end && data[i] == '-') {
2326
+ i++; dashes++;
2327
+ }
2328
+
2329
+ if (i < under_end && data[i] == ':') {
2330
+ i++; (*column_data)[col] |= MKD_TABLE_ALIGN_R;
2331
+ dashes++;
2332
+ }
2333
+
2334
+ while (i < under_end && data[i] == ' ')
2335
+ i++;
2336
+
2337
+ if (i < under_end && data[i] != '|' && data[i] != '+')
2338
+ break;
2339
+
2340
+ if (dashes < 1)
2341
+ break;
2342
+
2343
+ i++;
2344
+ }
2345
+
2346
+ if (col < *columns)
2347
+ return 0;
2348
+
2349
+ parse_table_row(
2350
+ ob, rndr, data,
2351
+ header_end,
2352
+ *columns,
2353
+ *column_data,
2354
+ MKD_TABLE_HEADER
2355
+ );
2356
+
2357
+ return under_end + 1;
2358
+ }
2359
+
2360
+ static size_t
2361
+ parse_table(
2362
+ struct buf *ob,
2363
+ struct sd_markdown *rndr,
2364
+ uint8_t *data,
2365
+ size_t size)
2366
+ {
2367
+ size_t i;
2368
+
2369
+ struct buf *header_work = 0;
2370
+ struct buf *body_work = 0;
2371
+
2372
+ size_t columns;
2373
+ int *col_data = NULL;
2374
+
2375
+ header_work = rndr_newbuf(rndr, BUFFER_SPAN);
2376
+ body_work = rndr_newbuf(rndr, BUFFER_BLOCK);
2377
+
2378
+ i = parse_table_header(header_work, rndr, data, size, &columns, &col_data);
2379
+ if (i > 0) {
2380
+
2381
+ while (i < size) {
2382
+ size_t row_start;
2383
+ int pipes = 0;
2384
+
2385
+ row_start = i;
2386
+
2387
+ while (i < size && data[i] != '\n')
2388
+ if (data[i++] == '|')
2389
+ pipes++;
2390
+
2391
+ if (pipes == 0 || i == size) {
2392
+ i = row_start;
2393
+ break;
2394
+ }
2395
+
2396
+ parse_table_row(
2397
+ body_work,
2398
+ rndr,
2399
+ data + row_start,
2400
+ i - row_start,
2401
+ columns,
2402
+ col_data, 0
2403
+ );
2404
+
2405
+ i++;
2406
+ }
2407
+
2408
+ if (rndr->cb.table)
2409
+ rndr->cb.table(ob, header_work, body_work, rndr->opaque);
2410
+ }
2411
+
2412
+ free(col_data);
2413
+ rndr_popbuf(rndr, BUFFER_SPAN);
2414
+ rndr_popbuf(rndr, BUFFER_BLOCK);
2415
+ return i;
2416
+ }
2417
+
2418
+ /* parse_block • parsing of one block, returning next uint8_t to parse */
2419
+ static void
2420
+ parse_block(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t size)
2421
+ {
2422
+ size_t beg, end, i;
2423
+ uint8_t *txt_data;
2424
+ beg = 0;
2425
+
2426
+ if (rndr->work_bufs[BUFFER_SPAN].size +
2427
+ rndr->work_bufs[BUFFER_BLOCK].size > rndr->max_nesting)
2428
+ return;
2429
+
2430
+ while (beg < size) {
2431
+ txt_data = data + beg;
2432
+ end = size - beg;
2433
+
2434
+ if (is_atxheader(rndr, txt_data, end))
2435
+ beg += parse_atxheader(ob, rndr, txt_data, end);
2436
+
2437
+ else if (data[beg] == '<' && rndr->cb.blockhtml &&
2438
+ (i = parse_htmlblock(ob, rndr, txt_data, end, 1)) != 0)
2439
+ beg += i;
2440
+
2441
+ else if ((i = is_empty(txt_data, end)) != 0)
2442
+ beg += i;
2443
+
2444
+ else if (is_hrule(txt_data, end)) {
2445
+ if (rndr->cb.hrule)
2446
+ rndr->cb.hrule(ob, rndr->opaque);
2447
+
2448
+ while (beg < size && data[beg] != '\n')
2449
+ beg++;
2450
+
2451
+ beg++;
2452
+ }
2453
+
2454
+ else if ((rndr->ext_flags & MKDEXT_FENCED_CODE) != 0 &&
2455
+ (i = parse_fencedcode(ob, rndr, txt_data, end)) != 0)
2456
+ beg += i;
2457
+
2458
+ else if ((rndr->ext_flags & MKDEXT_TABLES) != 0 &&
2459
+ (i = parse_table(ob, rndr, txt_data, end)) != 0)
2460
+ beg += i;
2461
+
2462
+ else if (prefix_quote(txt_data, end))
2463
+ beg += parse_blockquote(ob, rndr, txt_data, end);
2464
+
2465
+ else if (!(rndr->ext_flags & MKDEXT_DISABLE_INDENTED_CODE) && prefix_code(txt_data, end))
2466
+ beg += parse_blockcode(ob, rndr, txt_data, end);
2467
+
2468
+ else if (prefix_uli(txt_data, end))
2469
+ beg += parse_list(ob, rndr, txt_data, end, 0);
2470
+
2471
+ else if (prefix_oli(txt_data, end))
2472
+ beg += parse_list(ob, rndr, txt_data, end, MKD_LIST_ORDERED);
2473
+
2474
+ else
2475
+ beg += parse_paragraph(ob, rndr, txt_data, end);
2476
+ }
2477
+ }
2478
+
2479
+
2480
+
2481
+ /*********************
2482
+ * REFERENCE PARSING *
2483
+ *********************/
2484
+
2485
+ /* is_footnote • returns whether a line is a footnote definition or not */
2486
+ static int
2487
+ is_footnote(const uint8_t *data, size_t beg, size_t end, size_t *last, struct footnote_list *list)
2488
+ {
2489
+ size_t i = 0;
2490
+ struct buf *contents = 0;
2491
+ size_t ind = 0;
2492
+ int in_empty = 0;
2493
+ size_t start = 0;
2494
+
2495
+ size_t id_offset, id_end;
2496
+
2497
+ /* up to 3 optional leading spaces */
2498
+ if (beg + 3 >= end) return 0;
2499
+ if (data[beg] == ' ') { i = 1;
2500
+ if (data[beg + 1] == ' ') { i = 2;
2501
+ if (data[beg + 2] == ' ') { i = 3;
2502
+ if (data[beg + 3] == ' ') return 0; } } }
2503
+ i += beg;
2504
+
2505
+ /* id part: caret followed by anything between brackets */
2506
+ if (data[i] != '[') return 0;
2507
+ i++;
2508
+ if (i >= end || data[i] != '^') return 0;
2509
+ i++;
2510
+ id_offset = i;
2511
+ while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
2512
+ i++;
2513
+ if (i >= end || data[i] != ']') return 0;
2514
+ id_end = i;
2515
+
2516
+ /* spacer: colon (space | tab)* newline? (space | tab)* */
2517
+ i++;
2518
+ if (i >= end || data[i] != ':') return 0;
2519
+ i++;
2520
+
2521
+ /* getting content buffer */
2522
+ contents = bufnew(64);
2523
+
2524
+ start = i;
2525
+
2526
+ /* process lines similiar to a list item */
2527
+ while (i < end) {
2528
+ while (i < end && data[i] != '\n' && data[i] != '\r') i++;
2529
+
2530
+ /* process an empty line */
2531
+ if (is_empty(data + start, i - start)) {
2532
+ in_empty = 1;
2533
+ if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2534
+ i++;
2535
+ if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
2536
+ }
2537
+ start = i;
2538
+ continue;
2539
+ }
2540
+
2541
+ /* calculating the indentation */
2542
+ ind = 0;
2543
+ while (ind < 4 && start + ind < end && data[start + ind] == ' ')
2544
+ ind++;
2545
+
2546
+ /* joining only indented stuff after empty lines;
2547
+ * note that now we only require 1 space of indentation
2548
+ * to continue, just like lists */
2549
+ if (ind == 0) {
2550
+ if (start == id_end + 2 && data[start] == '\t') {}
2551
+ else break;
2552
+ }
2553
+ else if (in_empty) {
2554
+ bufputc(contents, '\n');
2555
+ }
2556
+
2557
+ in_empty = 0;
2558
+
2559
+ /* adding the line into the content buffer */
2560
+ bufput(contents, data + start + ind, i - start - ind);
2561
+ /* add carriage return */
2562
+ if (i < end) {
2563
+ bufput(contents, "\n", 1);
2564
+ if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2565
+ i++;
2566
+ if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
2567
+ }
2568
+ }
2569
+ start = i;
2570
+ }
2571
+
2572
+ if (last)
2573
+ *last = start;
2574
+
2575
+ if (list) {
2576
+ struct footnote_ref *ref;
2577
+ ref = create_footnote_ref(list, data + id_offset, id_end - id_offset);
2578
+ if (!ref)
2579
+ return 0;
2580
+ if (!add_footnote_ref(list, ref)) {
2581
+ free_footnote_ref(ref);
2582
+ return 0;
2583
+ }
2584
+ ref->contents = contents;
2585
+ }
2586
+
2587
+ return 1;
2588
+ }
2589
+
2590
+ /* is_ref • returns whether a line is a reference or not */
2591
+ static int
2592
+ is_ref(const uint8_t *data, size_t beg, size_t end, size_t *last, struct link_ref **refs)
2593
+ {
2594
+ /* int n; */
2595
+ size_t i = 0;
2596
+ size_t id_offset, id_end;
2597
+ size_t link_offset, link_end;
2598
+ size_t title_offset, title_end;
2599
+ size_t line_end;
2600
+
2601
+ /* up to 3 optional leading spaces */
2602
+ if (beg + 3 >= end) return 0;
2603
+ if (data[beg] == ' ') { i = 1;
2604
+ if (data[beg + 1] == ' ') { i = 2;
2605
+ if (data[beg + 2] == ' ') { i = 3;
2606
+ if (data[beg + 3] == ' ') return 0; } } }
2607
+ i += beg;
2608
+
2609
+ /* id part: anything but a newline between brackets */
2610
+ if (data[i] != '[') return 0;
2611
+ i++;
2612
+ id_offset = i;
2613
+ while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
2614
+ i++;
2615
+ if (i >= end || data[i] != ']') return 0;
2616
+ id_end = i;
2617
+
2618
+ /* spacer: colon (space | tab)* newline? (space | tab)* */
2619
+ i++;
2620
+ if (i >= end || data[i] != ':') return 0;
2621
+ i++;
2622
+ while (i < end && strchr("\t ", data[i])) i++;
2623
+ if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2624
+ i++;
2625
+ if (i < end && data[i] == '\r' && data[i - 1] == '\n') i++; }
2626
+ while (i < end && strchr("\t ", data[i])) i++;
2627
+ if (i >= end) return 0;
2628
+
2629
+ /* link: whitespace-free sequence, optionally between angle brackets */
2630
+ if (data[i] == '<')
2631
+ i++;
2632
+
2633
+ link_offset = i;
2634
+
2635
+ while (i < end && data[i] != ' ' && data[i] != '\n' && data[i] != '\r')
2636
+ i++;
2637
+
2638
+ if (data[i - 1] == '>') link_end = i - 1;
2639
+ else link_end = i;
2640
+
2641
+ /* optional spacer: (space | tab)* (newline | '\'' | '"' | '(' ) */
2642
+ while (i < end && strchr("\t ", data[i])) i++;
2643
+ if (i < end && data[i] != '\n' && data[i] != '\r'
2644
+ && data[i] != '\'' && data[i] != '"' && data[i] != '(')
2645
+ return 0;
2646
+ line_end = 0;
2647
+ /* computing end-of-line */
2648
+ if (i >= end || data[i] == '\r' || data[i] == '\n') line_end = i;
2649
+ if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
2650
+ line_end = i + 1;
2651
+
2652
+ /* optional (space|tab)* spacer after a newline */
2653
+ if (line_end) {
2654
+ i = line_end + 1;
2655
+ while (i < end && strchr("\t ", data[i])) i++; }
2656
+
2657
+ /* optional title: any non-newline sequence enclosed in '"()
2658
+ alone on its line */
2659
+ title_offset = title_end = 0;
2660
+ if (i + 1 < end
2661
+ && (data[i] == '\'' || data[i] == '"' || data[i] == '(')) {
2662
+ i++;
2663
+ title_offset = i;
2664
+ /* looking for EOL */
2665
+ while (i < end && data[i] != '\n' && data[i] != '\r') i++;
2666
+ if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
2667
+ title_end = i + 1;
2668
+ else title_end = i;
2669
+ /* stepping back */
2670
+ i -= 1;
2671
+ while (i > title_offset && data[i] == ' ')
2672
+ i -= 1;
2673
+ if (i > title_offset
2674
+ && (data[i] == '\'' || data[i] == '"' || data[i] == ')')) {
2675
+ line_end = title_end;
2676
+ title_end = i; } }
2677
+
2678
+ if (!line_end || link_end == link_offset)
2679
+ return 0; /* garbage after the link empty link */
2680
+
2681
+ /* a valid ref has been found, filling-in return structures */
2682
+ if (last)
2683
+ *last = line_end;
2684
+
2685
+ if (refs) {
2686
+ struct link_ref *ref;
2687
+
2688
+ ref = add_link_ref(refs, data + id_offset, id_end - id_offset);
2689
+ if (!ref)
2690
+ return 0;
2691
+
2692
+ ref->link = bufnew(link_end - link_offset);
2693
+ bufput(ref->link, data + link_offset, link_end - link_offset);
2694
+
2695
+ if (title_end > title_offset) {
2696
+ ref->title = bufnew(title_end - title_offset);
2697
+ bufput(ref->title, data + title_offset, title_end - title_offset);
2698
+ }
2699
+ }
2700
+
2701
+ return 1;
2702
+ }
2703
+
2704
+ static void expand_tabs(struct buf *ob, const uint8_t *line, size_t size)
2705
+ {
2706
+ size_t i = 0, tab = 0;
2707
+
2708
+ while (i < size) {
2709
+ size_t org = i;
2710
+
2711
+ while (i < size && line[i] != '\t') {
2712
+ i++; tab++;
2713
+ }
2714
+
2715
+ if (i > org)
2716
+ bufput(ob, line + org, i - org);
2717
+
2718
+ if (i >= size)
2719
+ break;
2720
+
2721
+ do {
2722
+ bufputc(ob, ' '); tab++;
2723
+ } while (tab % 4);
2724
+
2725
+ i++;
2726
+ }
2727
+ }
2728
+
2729
+ /**********************
2730
+ * EXPORTED FUNCTIONS *
2731
+ **********************/
2732
+
2733
+ struct sd_markdown *
2734
+ sd_markdown_new(
2735
+ unsigned int extensions,
2736
+ size_t max_nesting,
2737
+ const struct sd_callbacks *callbacks,
2738
+ void *opaque)
2739
+ {
2740
+ struct sd_markdown *md = NULL;
2741
+
2742
+ assert(max_nesting > 0 && callbacks);
2743
+
2744
+ md = malloc(sizeof(struct sd_markdown));
2745
+ if (!md)
2746
+ return NULL;
2747
+
2748
+ memcpy(&md->cb, callbacks, sizeof(struct sd_callbacks));
2749
+
2750
+ redcarpet_stack_init(&md->work_bufs[BUFFER_BLOCK], 4);
2751
+ redcarpet_stack_init(&md->work_bufs[BUFFER_SPAN], 8);
2752
+
2753
+ memset(md->active_char, 0x0, 256);
2754
+
2755
+ if (md->cb.emphasis || md->cb.double_emphasis || md->cb.triple_emphasis) {
2756
+ md->active_char['*'] = MD_CHAR_EMPHASIS;
2757
+ md->active_char['_'] = MD_CHAR_EMPHASIS;
2758
+
2759
+ if (extensions & MKDEXT_STRIKETHROUGH)
2760
+ md->active_char['~'] = MD_CHAR_EMPHASIS;
2761
+ if (extensions & MKDEXT_HIGHLIGHT)
2762
+ md->active_char['='] = MD_CHAR_EMPHASIS;
2763
+ if (extensions & MKDEXT_QUOTE)
2764
+ md->active_char['"'] = MD_CHAR_QUOTE;
2765
+ }
2766
+
2767
+ if (md->cb.codespan)
2768
+ md->active_char['`'] = MD_CHAR_CODESPAN;
2769
+
2770
+ if (md->cb.linebreak)
2771
+ md->active_char['\n'] = MD_CHAR_LINEBREAK;
2772
+
2773
+ if (md->cb.image || md->cb.link)
2774
+ md->active_char['['] = MD_CHAR_LINK;
2775
+
2776
+ md->active_char['<'] = MD_CHAR_LANGLE;
2777
+ md->active_char['\\'] = MD_CHAR_ESCAPE;
2778
+ md->active_char['&'] = MD_CHAR_ENTITITY;
2779
+
2780
+ if (extensions & MKDEXT_AUTOLINK) {
2781
+ md->active_char[':'] = MD_CHAR_AUTOLINK_URL;
2782
+ md->active_char['@'] = MD_CHAR_AUTOLINK_EMAIL;
2783
+ md->active_char['w'] = MD_CHAR_AUTOLINK_WWW;
2784
+ }
2785
+
2786
+ if (extensions & MKDEXT_SUPERSCRIPT)
2787
+ md->active_char['^'] = MD_CHAR_SUPERSCRIPT;
2788
+
2789
+ /* Extension data */
2790
+ md->ext_flags = extensions;
2791
+ md->opaque = opaque;
2792
+ md->max_nesting = max_nesting;
2793
+ md->in_link_body = 0;
2794
+
2795
+ return md;
2796
+ }
2797
+
2798
+ void
2799
+ sd_markdown_render(struct buf *ob, const uint8_t *document, size_t doc_size, struct sd_markdown *md)
2800
+ {
2801
+ #define MARKDOWN_GROW(x) ((x) + ((x) >> 1))
2802
+ static const char UTF8_BOM[] = {0xEF, 0xBB, 0xBF};
2803
+
2804
+ struct buf *text;
2805
+ size_t beg, end;
2806
+ int in_fence = 0;
2807
+
2808
+ text = bufnew(64);
2809
+ if (!text)
2810
+ return;
2811
+
2812
+ /* Preallocate enough space for our buffer to avoid expanding while copying */
2813
+ bufgrow(text, doc_size);
2814
+
2815
+ /* reset the references table */
2816
+ memset(&md->refs, 0x0, REF_TABLE_SIZE * sizeof(void *));
2817
+
2818
+ int footnotes_enabled = md->ext_flags & MKDEXT_FOOTNOTES;
2819
+ int codefences_enabled = md->ext_flags & MKDEXT_FENCED_CODE;
2820
+
2821
+ /* reset the footnotes lists */
2822
+ if (footnotes_enabled) {
2823
+ memset(&md->footnotes_found, 0x0, sizeof(md->footnotes_found));
2824
+ memset(&md->footnotes_used, 0x0, sizeof(md->footnotes_used));
2825
+ }
2826
+
2827
+ /* first pass: looking for references, copying everything else */
2828
+ beg = 0;
2829
+
2830
+ /* Skip a possible UTF-8 BOM, even though the Unicode standard
2831
+ * discourages having these in UTF-8 documents */
2832
+ if (doc_size >= 3 && memcmp(document, UTF8_BOM, 3) == 0)
2833
+ beg += 3;
2834
+
2835
+ while (beg < doc_size) { /* iterating over lines */
2836
+ if (codefences_enabled && (is_codefence(document + beg, doc_size - beg, NULL) != 0))
2837
+ in_fence = !in_fence;
2838
+
2839
+ if (!in_fence && footnotes_enabled && is_footnote(document, beg, doc_size, &end, &md->footnotes_found))
2840
+ beg = end;
2841
+ else if (!in_fence && is_ref(document, beg, doc_size, &end, md->refs))
2842
+ beg = end;
2843
+ else { /* skipping to the next line */
2844
+ end = beg;
2845
+ while (end < doc_size && document[end] != '\n' && document[end] != '\r')
2846
+ end++;
2847
+
2848
+ /* adding the line body if present */
2849
+ if (end > beg)
2850
+ expand_tabs(text, document + beg, end - beg);
2851
+
2852
+ while (end < doc_size && (document[end] == '\n' || document[end] == '\r')) {
2853
+ /* add one \n per newline */
2854
+ if (document[end] == '\n' || (end + 1 < doc_size && document[end + 1] != '\n'))
2855
+ bufputc(text, '\n');
2856
+ end++;
2857
+ }
2858
+
2859
+ beg = end;
2860
+ }
2861
+ }
2862
+
2863
+ /* pre-grow the output buffer to minimize allocations */
2864
+ bufgrow(ob, MARKDOWN_GROW(text->size));
2865
+
2866
+ /* second pass: actual rendering */
2867
+ if (md->cb.doc_header)
2868
+ md->cb.doc_header(ob, md->opaque);
2869
+
2870
+ if (text->size) {
2871
+ /* adding a final newline if not already present */
2872
+ if (text->data[text->size - 1] != '\n' && text->data[text->size - 1] != '\r')
2873
+ bufputc(text, '\n');
2874
+
2875
+ parse_block(ob, md, text->data, text->size);
2876
+ }
2877
+
2878
+ /* footnotes */
2879
+ if (footnotes_enabled)
2880
+ parse_footnote_list(ob, md, &md->footnotes_used);
2881
+
2882
+ if (md->cb.doc_footer)
2883
+ md->cb.doc_footer(ob, md->opaque);
2884
+
2885
+ /* Null-terminate the buffer */
2886
+ bufcstr(ob);
2887
+
2888
+ /* clean-up */
2889
+ bufrelease(text);
2890
+ free_link_refs(md->refs);
2891
+ if (footnotes_enabled) {
2892
+ free_footnote_list(&md->footnotes_found, 1);
2893
+ free_footnote_list(&md->footnotes_used, 0);
2894
+ }
2895
+
2896
+ assert(md->work_bufs[BUFFER_SPAN].size == 0);
2897
+ assert(md->work_bufs[BUFFER_BLOCK].size == 0);
2898
+ }
2899
+
2900
+ void
2901
+ sd_markdown_free(struct sd_markdown *md)
2902
+ {
2903
+ size_t i;
2904
+
2905
+ for (i = 0; i < (size_t)md->work_bufs[BUFFER_SPAN].asize; ++i)
2906
+ bufrelease(md->work_bufs[BUFFER_SPAN].item[i]);
2907
+
2908
+ for (i = 0; i < (size_t)md->work_bufs[BUFFER_BLOCK].asize; ++i)
2909
+ bufrelease(md->work_bufs[BUFFER_BLOCK].item[i]);
2910
+
2911
+ redcarpet_stack_free(&md->work_bufs[BUFFER_SPAN]);
2912
+ redcarpet_stack_free(&md->work_bufs[BUFFER_BLOCK]);
2913
+
2914
+ free(md);
2915
+ }