rmagick 2.16.0 → 5.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (441) hide show
  1. checksums.yaml +5 -5
  2. data/.devcontainer/Dockerfile +14 -0
  3. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  4. data/.devcontainer/devcontainer.json +11 -0
  5. data/.devcontainer/setup-repo.sh +10 -0
  6. data/.devcontainer/setup-user.sh +45 -0
  7. data/.editorconfig +3 -0
  8. data/.github/ISSUE_TEMPLATE.md +17 -0
  9. data/.github/workflows/ci.yml +157 -0
  10. data/.gitignore +9 -1
  11. data/.rspec +1 -0
  12. data/.rubocop.yml +37 -340
  13. data/.rubocop_todo.yml +456 -0
  14. data/.yardopts +5 -0
  15. data/CHANGELOG.md +536 -0
  16. data/CODE_OF_CONDUCT.md +122 -7
  17. data/CONTRIBUTING.md +37 -6
  18. data/Gemfile +18 -4
  19. data/README.md +319 -0
  20. data/Rakefile +83 -98
  21. data/before_install_linux.sh +65 -28
  22. data/before_install_osx.sh +58 -2
  23. data/ext/RMagick/extconf.rb +310 -393
  24. data/ext/RMagick/{rmagick.c → rmagick.cpp} +119 -127
  25. data/ext/RMagick/rmagick.h +290 -363
  26. data/ext/RMagick/rmagick_gvl.h +224 -0
  27. data/ext/RMagick/rmdraw.cpp +1696 -0
  28. data/ext/RMagick/rmenum.cpp +796 -0
  29. data/ext/RMagick/{rmfill.c → rmfill.cpp} +287 -197
  30. data/ext/RMagick/rmilist.cpp +1275 -0
  31. data/ext/RMagick/rmimage.cpp +16459 -0
  32. data/ext/RMagick/{rminfo.c → rminfo.cpp} +738 -910
  33. data/ext/RMagick/rmkinfo.cpp +210 -0
  34. data/ext/RMagick/rmmain.cpp +1923 -0
  35. data/ext/RMagick/rmmontage.cpp +474 -0
  36. data/ext/RMagick/rmpixel.cpp +1322 -0
  37. data/ext/RMagick/{rmstruct.c → rmstruct.cpp} +104 -284
  38. data/ext/RMagick/{rmutil.c → rmutil.cpp} +500 -433
  39. data/lib/rmagick/version.rb +5 -4
  40. data/lib/rmagick.rb +2 -0
  41. data/lib/rmagick_internal.rb +397 -459
  42. data/lib/rvg/clippath.rb +3 -4
  43. data/lib/rvg/container.rb +30 -22
  44. data/lib/rvg/deep_equal.rb +11 -11
  45. data/lib/rvg/describable.rb +2 -2
  46. data/lib/rvg/embellishable.rb +67 -68
  47. data/lib/rvg/misc.rb +139 -142
  48. data/lib/rvg/paint.rb +2 -1
  49. data/lib/rvg/pathdata.rb +7 -8
  50. data/lib/rvg/rvg.rb +49 -46
  51. data/lib/rvg/stretchable.rb +22 -28
  52. data/lib/rvg/stylable.rb +12 -10
  53. data/lib/rvg/text.rb +169 -165
  54. data/lib/rvg/transformable.rb +17 -16
  55. data/lib/rvg/units.rb +5 -5
  56. data/rmagick.gemspec +7 -41
  57. data/sig/rmagick/_draw_common_methods.rbs +64 -0
  58. data/sig/rmagick/_image_common_methods.rbs +389 -0
  59. data/sig/rmagick/draw.rbs +38 -0
  60. data/sig/rmagick/draw_attribute.rbs +28 -0
  61. data/sig/rmagick/enum.rbs +814 -0
  62. data/sig/rmagick/error.rbs +11 -0
  63. data/sig/rmagick/fill.rbs +21 -0
  64. data/sig/rmagick/geometry.rbs +14 -0
  65. data/sig/rmagick/image.rbs +194 -0
  66. data/sig/rmagick/image_list.rbs +181 -0
  67. data/sig/rmagick/iptc.rbs +101 -0
  68. data/sig/rmagick/kernel_info.rbs +12 -0
  69. data/sig/rmagick/optional_method_arguments.rbs +10 -0
  70. data/sig/rmagick/pixel.rbs +46 -0
  71. data/sig/rmagick/struct.rbs +90 -0
  72. data/sig/rmagick.rbs +43 -0
  73. data/sig/rvg/clippath.rbs +34 -0
  74. data/sig/rvg/container.rbs +78 -0
  75. data/sig/rvg/deep_equal.rbs +48 -0
  76. data/sig/rvg/describable.rbs +30 -0
  77. data/sig/rvg/embellishable.rbs +226 -0
  78. data/sig/rvg/misc.rbs +145 -0
  79. data/sig/rvg/paint.rbs +55 -0
  80. data/sig/rvg/pathdata.rbs +77 -0
  81. data/sig/rvg/rvg.rbs +125 -0
  82. data/sig/rvg/stretchable.rbs +56 -0
  83. data/sig/rvg/stylable.rbs +66 -0
  84. data/sig/rvg/text.rbs +118 -0
  85. data/sig/rvg/transformable.rbs +59 -0
  86. data/sig/rvg/units.rbs +33 -0
  87. metadata +68 -428
  88. data/.hound.yml +0 -2
  89. data/.simplecov +0 -27
  90. data/.travis.yml +0 -74
  91. data/Doxyfile +0 -1514
  92. data/README.textile +0 -251
  93. data/deprecated/RMagick.rb +0 -6
  94. data/doc/.cvsignore +0 -1
  95. data/doc/comtasks.html +0 -287
  96. data/doc/constants.html +0 -1581
  97. data/doc/css/doc.css +0 -299
  98. data/doc/css/popup.css +0 -34
  99. data/doc/css/ref.css +0 -67
  100. data/doc/draw.html +0 -3272
  101. data/doc/ex/InitialCoords.rb +0 -22
  102. data/doc/ex/NewCoordSys.rb +0 -30
  103. data/doc/ex/OrigCoordSys.rb +0 -16
  104. data/doc/ex/PreserveAspectRatio.rb +0 -204
  105. data/doc/ex/RotateScale.rb +0 -36
  106. data/doc/ex/Skew.rb +0 -38
  107. data/doc/ex/Use01.rb +0 -15
  108. data/doc/ex/Use02.rb +0 -20
  109. data/doc/ex/Use03.rb +0 -16
  110. data/doc/ex/ViewBox.rb +0 -31
  111. data/doc/ex/adaptive_threshold.rb +0 -9
  112. data/doc/ex/add_noise.rb +0 -16
  113. data/doc/ex/affine.rb +0 -48
  114. data/doc/ex/affine_transform.rb +0 -20
  115. data/doc/ex/arc.rb +0 -49
  116. data/doc/ex/arcpath.rb +0 -32
  117. data/doc/ex/arcs01.rb +0 -28
  118. data/doc/ex/arcs02.rb +0 -59
  119. data/doc/ex/average.rb +0 -15
  120. data/doc/ex/axes.rb +0 -64
  121. data/doc/ex/baseline_shift01.rb +0 -17
  122. data/doc/ex/bilevel_channel.rb +0 -8
  123. data/doc/ex/blur_image.rb +0 -12
  124. data/doc/ex/border.rb +0 -10
  125. data/doc/ex/bounding_box.rb +0 -42
  126. data/doc/ex/cbezier1.rb +0 -41
  127. data/doc/ex/cbezier2.rb +0 -41
  128. data/doc/ex/cbezier3.rb +0 -41
  129. data/doc/ex/cbezier4.rb +0 -42
  130. data/doc/ex/cbezier5.rb +0 -42
  131. data/doc/ex/cbezier6.rb +0 -53
  132. data/doc/ex/channel.rb +0 -25
  133. data/doc/ex/charcoal.rb +0 -12
  134. data/doc/ex/chop.rb +0 -29
  135. data/doc/ex/circle.rb +0 -33
  136. data/doc/ex/circle01.rb +0 -16
  137. data/doc/ex/clip_path.rb +0 -60
  138. data/doc/ex/coalesce.rb +0 -57
  139. data/doc/ex/color_fill_to_border.rb +0 -29
  140. data/doc/ex/color_floodfill.rb +0 -28
  141. data/doc/ex/color_histogram.rb +0 -47
  142. data/doc/ex/color_reset.rb +0 -11
  143. data/doc/ex/colorize.rb +0 -16
  144. data/doc/ex/colors.rb +0 -64
  145. data/doc/ex/compose_mask.rb +0 -22
  146. data/doc/ex/composite.rb +0 -133
  147. data/doc/ex/composite_layers.rb +0 -53
  148. data/doc/ex/composite_tiled.rb +0 -21
  149. data/doc/ex/contrast.rb +0 -36
  150. data/doc/ex/crop.rb +0 -31
  151. data/doc/ex/crop_with_gravity.rb +0 -42
  152. data/doc/ex/cubic01.rb +0 -43
  153. data/doc/ex/cubic02.rb +0 -91
  154. data/doc/ex/cycle_colormap.rb +0 -21
  155. data/doc/ex/dissolve.rb +0 -12
  156. data/doc/ex/drawcomp.rb +0 -42
  157. data/doc/ex/drop_shadow.rb +0 -60
  158. data/doc/ex/edge.rb +0 -11
  159. data/doc/ex/ellipse.rb +0 -45
  160. data/doc/ex/ellipse01.rb +0 -21
  161. data/doc/ex/emboss.rb +0 -11
  162. data/doc/ex/enhance.rb +0 -28
  163. data/doc/ex/equalize.rb +0 -11
  164. data/doc/ex/evenodd.rb +0 -42
  165. data/doc/ex/fill_pattern.rb +0 -23
  166. data/doc/ex/flatten_images.rb +0 -36
  167. data/doc/ex/flip.rb +0 -11
  168. data/doc/ex/flop.rb +0 -11
  169. data/doc/ex/font_styles.rb +0 -32
  170. data/doc/ex/fonts.rb +0 -20
  171. data/doc/ex/frame.rb +0 -12
  172. data/doc/ex/gaussian_blur.rb +0 -11
  173. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  174. data/doc/ex/get_pixels.rb +0 -47
  175. data/doc/ex/get_type_metrics.rb +0 -141
  176. data/doc/ex/gradientfill.rb +0 -27
  177. data/doc/ex/grav.rb +0 -45
  178. data/doc/ex/gravity.rb +0 -80
  179. data/doc/ex/group.rb +0 -26
  180. data/doc/ex/hatchfill.rb +0 -27
  181. data/doc/ex/image.rb +0 -44
  182. data/doc/ex/images/Apple.miff +0 -0
  183. data/doc/ex/images/Ballerina.jpg +0 -0
  184. data/doc/ex/images/Ballerina3.jpg +0 -0
  185. data/doc/ex/images/Button_0.gif +0 -0
  186. data/doc/ex/images/Button_1.gif +0 -0
  187. data/doc/ex/images/Button_2.gif +0 -0
  188. data/doc/ex/images/Button_3.gif +0 -0
  189. data/doc/ex/images/Button_4.gif +0 -0
  190. data/doc/ex/images/Button_5.gif +0 -0
  191. data/doc/ex/images/Button_6.gif +0 -0
  192. data/doc/ex/images/Button_7.gif +0 -0
  193. data/doc/ex/images/Button_8.gif +0 -0
  194. data/doc/ex/images/Button_9.gif +0 -0
  195. data/doc/ex/images/Button_A.gif +0 -0
  196. data/doc/ex/images/Button_B.gif +0 -0
  197. data/doc/ex/images/Button_C.gif +0 -0
  198. data/doc/ex/images/Button_D.gif +0 -0
  199. data/doc/ex/images/Button_E.gif +0 -0
  200. data/doc/ex/images/Button_F.gif +0 -0
  201. data/doc/ex/images/Button_G.gif +0 -0
  202. data/doc/ex/images/Button_H.gif +0 -0
  203. data/doc/ex/images/Button_I.gif +0 -0
  204. data/doc/ex/images/Button_J.gif +0 -0
  205. data/doc/ex/images/Button_K.gif +0 -0
  206. data/doc/ex/images/Button_L.gif +0 -0
  207. data/doc/ex/images/Button_M.gif +0 -0
  208. data/doc/ex/images/Button_N.gif +0 -0
  209. data/doc/ex/images/Button_O.gif +0 -0
  210. data/doc/ex/images/Button_P.gif +0 -0
  211. data/doc/ex/images/Button_Q.gif +0 -0
  212. data/doc/ex/images/Button_R.gif +0 -0
  213. data/doc/ex/images/Button_S.gif +0 -0
  214. data/doc/ex/images/Button_T.gif +0 -0
  215. data/doc/ex/images/Button_U.gif +0 -0
  216. data/doc/ex/images/Button_V.gif +0 -0
  217. data/doc/ex/images/Button_W.gif +0 -0
  218. data/doc/ex/images/Button_X.gif +0 -0
  219. data/doc/ex/images/Button_Y.gif +0 -0
  220. data/doc/ex/images/Button_Z.gif +0 -0
  221. data/doc/ex/images/Cheetah.jpg +0 -0
  222. data/doc/ex/images/Coffee.wmf +0 -0
  223. data/doc/ex/images/Flower_Hat.jpg +0 -0
  224. data/doc/ex/images/Gold_Statue.jpg +0 -0
  225. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  226. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  227. data/doc/ex/images/Leaf.miff +0 -0
  228. data/doc/ex/images/No.wmf +0 -0
  229. data/doc/ex/images/Polynesia.jpg +0 -0
  230. data/doc/ex/images/Red_Rocks.jpg +0 -0
  231. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  232. data/doc/ex/images/Shorts.jpg +0 -0
  233. data/doc/ex/images/Snake.wmf +0 -0
  234. data/doc/ex/images/Violin.jpg +0 -0
  235. data/doc/ex/images/Yellow_Rose.miff +0 -0
  236. data/doc/ex/images/big-duck.gif +0 -0
  237. data/doc/ex/images/duck.gif +0 -0
  238. data/doc/ex/images/duck0.gif +0 -0
  239. data/doc/ex/images/duck1.gif +0 -0
  240. data/doc/ex/images/duck10.gif +0 -0
  241. data/doc/ex/images/duck11.gif +0 -0
  242. data/doc/ex/images/duck12.gif +0 -0
  243. data/doc/ex/images/duck13.gif +0 -0
  244. data/doc/ex/images/duck14.gif +0 -0
  245. data/doc/ex/images/duck15.gif +0 -0
  246. data/doc/ex/images/duck2.gif +0 -0
  247. data/doc/ex/images/duck3.gif +0 -0
  248. data/doc/ex/images/duck4.gif +0 -0
  249. data/doc/ex/images/duck5.gif +0 -0
  250. data/doc/ex/images/duck6.gif +0 -0
  251. data/doc/ex/images/duck7.gif +0 -0
  252. data/doc/ex/images/duck8.gif +0 -0
  253. data/doc/ex/images/duck9.gif +0 -0
  254. data/doc/ex/images/graydient230x6.gif +0 -0
  255. data/doc/ex/images/image_with_profile.jpg +0 -0
  256. data/doc/ex/images/logo400x83.gif +0 -0
  257. data/doc/ex/images/model.miff +0 -0
  258. data/doc/ex/images/notimplemented.gif +0 -0
  259. data/doc/ex/images/smile.miff +0 -0
  260. data/doc/ex/images/spin.gif +0 -0
  261. data/doc/ex/implode.rb +0 -34
  262. data/doc/ex/level.rb +0 -11
  263. data/doc/ex/level_colors.rb +0 -11
  264. data/doc/ex/line.rb +0 -41
  265. data/doc/ex/line01.rb +0 -21
  266. data/doc/ex/mask.rb +0 -35
  267. data/doc/ex/matte_fill_to_border.rb +0 -39
  268. data/doc/ex/matte_floodfill.rb +0 -32
  269. data/doc/ex/matte_replace.rb +0 -39
  270. data/doc/ex/median_filter.rb +0 -28
  271. data/doc/ex/modulate.rb +0 -11
  272. data/doc/ex/mono.rb +0 -23
  273. data/doc/ex/morph.rb +0 -25
  274. data/doc/ex/mosaic.rb +0 -35
  275. data/doc/ex/motion_blur.rb +0 -11
  276. data/doc/ex/negate.rb +0 -11
  277. data/doc/ex/negate_channel.rb +0 -9
  278. data/doc/ex/nested_rvg.rb +0 -21
  279. data/doc/ex/nonzero.rb +0 -42
  280. data/doc/ex/normalize.rb +0 -11
  281. data/doc/ex/oil_paint.rb +0 -11
  282. data/doc/ex/opacity.rb +0 -37
  283. data/doc/ex/ordered_dither.rb +0 -11
  284. data/doc/ex/path.rb +0 -63
  285. data/doc/ex/pattern1.rb +0 -25
  286. data/doc/ex/pattern2.rb +0 -26
  287. data/doc/ex/polaroid.rb +0 -27
  288. data/doc/ex/polygon.rb +0 -23
  289. data/doc/ex/polygon01.rb +0 -21
  290. data/doc/ex/polyline.rb +0 -22
  291. data/doc/ex/polyline01.rb +0 -21
  292. data/doc/ex/posterize.rb +0 -8
  293. data/doc/ex/preview.rb +0 -8
  294. data/doc/ex/qbezierpath.rb +0 -52
  295. data/doc/ex/quad01.rb +0 -34
  296. data/doc/ex/quantize-m.rb +0 -25
  297. data/doc/ex/radial_blur.rb +0 -9
  298. data/doc/ex/raise.rb +0 -8
  299. data/doc/ex/random_threshold_channel.rb +0 -13
  300. data/doc/ex/rect01.rb +0 -14
  301. data/doc/ex/rect02.rb +0 -20
  302. data/doc/ex/rectangle.rb +0 -34
  303. data/doc/ex/reduce_noise.rb +0 -28
  304. data/doc/ex/remap.rb +0 -11
  305. data/doc/ex/remap_images.rb +0 -19
  306. data/doc/ex/resize_to_fill.rb +0 -8
  307. data/doc/ex/resize_to_fit.rb +0 -8
  308. data/doc/ex/roll.rb +0 -9
  309. data/doc/ex/rotate.rb +0 -44
  310. data/doc/ex/rotate_f.rb +0 -14
  311. data/doc/ex/roundrect.rb +0 -33
  312. data/doc/ex/rubyname.rb +0 -30
  313. data/doc/ex/rvg_clippath.rb +0 -12
  314. data/doc/ex/rvg_linecap.rb +0 -42
  315. data/doc/ex/rvg_linejoin.rb +0 -40
  316. data/doc/ex/rvg_opacity.rb +0 -18
  317. data/doc/ex/rvg_pattern.rb +0 -26
  318. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  319. data/doc/ex/segment.rb +0 -11
  320. data/doc/ex/sepiatone.rb +0 -7
  321. data/doc/ex/shade.rb +0 -11
  322. data/doc/ex/shadow.rb +0 -30
  323. data/doc/ex/shave.rb +0 -15
  324. data/doc/ex/shear.rb +0 -10
  325. data/doc/ex/sketch.rb +0 -17
  326. data/doc/ex/skewx.rb +0 -51
  327. data/doc/ex/skewy.rb +0 -47
  328. data/doc/ex/smile.rb +0 -125
  329. data/doc/ex/solarize.rb +0 -11
  330. data/doc/ex/sparse_color.rb +0 -54
  331. data/doc/ex/splice.rb +0 -8
  332. data/doc/ex/spread.rb +0 -11
  333. data/doc/ex/stegano.rb +0 -55
  334. data/doc/ex/stroke_dasharray.rb +0 -42
  335. data/doc/ex/stroke_fill.rb +0 -10
  336. data/doc/ex/stroke_linecap.rb +0 -44
  337. data/doc/ex/stroke_linejoin.rb +0 -48
  338. data/doc/ex/stroke_width.rb +0 -49
  339. data/doc/ex/swirl.rb +0 -17
  340. data/doc/ex/text.rb +0 -37
  341. data/doc/ex/text01.rb +0 -16
  342. data/doc/ex/text_align.rb +0 -36
  343. data/doc/ex/text_antialias.rb +0 -37
  344. data/doc/ex/text_styles.rb +0 -19
  345. data/doc/ex/text_undercolor.rb +0 -28
  346. data/doc/ex/texture_fill_to_border.rb +0 -34
  347. data/doc/ex/texture_floodfill.rb +0 -32
  348. data/doc/ex/texturefill.rb +0 -24
  349. data/doc/ex/threshold.rb +0 -13
  350. data/doc/ex/to_blob.rb +0 -13
  351. data/doc/ex/translate.rb +0 -39
  352. data/doc/ex/transparent.rb +0 -38
  353. data/doc/ex/transpose.rb +0 -9
  354. data/doc/ex/transverse.rb +0 -9
  355. data/doc/ex/tref01.rb +0 -24
  356. data/doc/ex/triangle01.rb +0 -15
  357. data/doc/ex/trim.rb +0 -23
  358. data/doc/ex/tspan01.rb +0 -17
  359. data/doc/ex/tspan02.rb +0 -17
  360. data/doc/ex/tspan03.rb +0 -19
  361. data/doc/ex/unsharp_mask.rb +0 -28
  362. data/doc/ex/viewex.rb +0 -33
  363. data/doc/ex/vignette.rb +0 -12
  364. data/doc/ex/watermark.rb +0 -27
  365. data/doc/ex/wave.rb +0 -9
  366. data/doc/ex/wet_floor.rb +0 -58
  367. data/doc/ex/writing_mode01.rb +0 -26
  368. data/doc/ex/writing_mode02.rb +0 -26
  369. data/doc/ilist.html +0 -2056
  370. data/doc/image1.html +0 -4680
  371. data/doc/image2.html +0 -3665
  372. data/doc/image3.html +0 -4522
  373. data/doc/imageattrs.html +0 -1638
  374. data/doc/imusage.html +0 -514
  375. data/doc/index.html +0 -416
  376. data/doc/info.html +0 -1499
  377. data/doc/magick.html +0 -565
  378. data/doc/optequiv.html +0 -2435
  379. data/doc/rvg.html +0 -975
  380. data/doc/rvgclip.html +0 -248
  381. data/doc/rvggroup.html +0 -305
  382. data/doc/rvgimage.html +0 -289
  383. data/doc/rvgpattern.html +0 -475
  384. data/doc/rvgshape.html +0 -406
  385. data/doc/rvgstyle.html +0 -270
  386. data/doc/rvgtext.html +0 -465
  387. data/doc/rvgtspan.html +0 -238
  388. data/doc/rvgtut.html +0 -530
  389. data/doc/rvguse.html +0 -145
  390. data/doc/rvgxform.html +0 -294
  391. data/doc/scripts/doc.js +0 -22
  392. data/doc/scripts/stripeTables.js +0 -23
  393. data/doc/struct.html +0 -1339
  394. data/doc/usage.html +0 -1621
  395. data/examples/constitute.rb +0 -7
  396. data/examples/crop_with_gravity.rb +0 -42
  397. data/examples/demo.rb +0 -324
  398. data/examples/describe.rb +0 -43
  399. data/examples/find_similar_region.rb +0 -34
  400. data/examples/histogram.rb +0 -321
  401. data/examples/identify.rb +0 -185
  402. data/examples/image_opacity.rb +0 -29
  403. data/examples/import_export.rb +0 -31
  404. data/examples/pattern_fill.rb +0 -38
  405. data/examples/rotating_text.rb +0 -44
  406. data/examples/spinner.rb +0 -49
  407. data/examples/thumbnail.rb +0 -64
  408. data/examples/vignette.rb +0 -78
  409. data/ext/RMagick/rmdraw.c +0 -2022
  410. data/ext/RMagick/rmenum.c +0 -1235
  411. data/ext/RMagick/rmilist.c +0 -1270
  412. data/ext/RMagick/rmimage.c +0 -15427
  413. data/ext/RMagick/rmmain.c +0 -1741
  414. data/ext/RMagick/rmmontage.c +0 -519
  415. data/ext/RMagick/rmpixel.c +0 -1114
  416. data/spec/rmagick/ImageList1_spec.rb +0 -24
  417. data/spec/rmagick/draw_spec.rb +0 -156
  418. data/spec/rmagick/image/blue_shift_spec.rb +0 -16
  419. data/spec/rmagick/image/composite_spec.rb +0 -140
  420. data/spec/rmagick/image/constitute_spec.rb +0 -15
  421. data/spec/rmagick/image/dispatch_spec.rb +0 -18
  422. data/spec/rmagick/image/from_blob_spec.rb +0 -14
  423. data/spec/rmagick/image/ping_spec.rb +0 -14
  424. data/spec/rmagick/image/properties_spec.rb +0 -29
  425. data/spec/spec_helper.rb +0 -4
  426. data/test/Image1.rb +0 -565
  427. data/test/Image2.rb +0 -1304
  428. data/test/Image3.rb +0 -1030
  429. data/test/ImageList1.rb +0 -806
  430. data/test/ImageList2.rb +0 -385
  431. data/test/Image_attributes.rb +0 -697
  432. data/test/Import_Export.rb +0 -121
  433. data/test/Info.rb +0 -345
  434. data/test/Magick.rb +0 -321
  435. data/test/Pixel.rb +0 -116
  436. data/test/Preview.rb +0 -57
  437. data/test/cmyk.icm +0 -0
  438. data/test/srgb.icm +0 -0
  439. data/test/test_all_basic.rb +0 -38
  440. data/test/tmpnam_test.rb +0 -50
  441. data/wercker.yml +0 -10
data/CONTRIBUTING.md CHANGED
@@ -20,8 +20,13 @@ RMagick is a Ruby gem with a C extension. The extension wraps the ImageMagick C
20
20
  Priorities
21
21
  ----------
22
22
 
23
- 1. Green build of the gem on all operating systems. You can see the current build state on [the project page at Travis CI](https://travis-ci.org/rmagick/rmagick). You are welcome to improve it.
24
- 2. [Open issues](https://github.com/rmagick/rmagick/issues). You are welcome to reproduce them, report current state, suggest solutions, open pull requests with fixes. If you don't know where to start, sort issues by least recently updated. You can also [subscribe to receive random issues by email](http://www.codetriage.com/rmagick/rmagick).
23
+ 1. [Open issues][open-issues]. You are welcome to reproduce them, report
24
+ current state, suggest solutions, open pull requests with fixes. If you
25
+ don't know where to start, sort issues by least recently updated. You can
26
+ also [subscribe to receive random issues by email][codetriage].
27
+
28
+ 2. [CodeClimate Issues][codeclimate-issues]. You can install [CodeClimate
29
+ Browser Extension][codeclimate-extension] to see them right on GitHub.
25
30
 
26
31
 
27
32
  Testing
@@ -33,18 +38,44 @@ If you write new tests, please do it in RSpec.
33
38
 
34
39
  You are also welcome to convert existing Test/Unit tests to RSpec.
35
40
 
41
+ Run all tests:
42
+
43
+ bundle exec rake
44
+
45
+ It will run RSpec and Minitest tests.
46
+
47
+ Useful information about RSpec:
48
+ * [Better Specs](http://www.betterspecs.org/) — how to write RSpec tests better
49
+ * [RSpec matchers cheat sheet](http://cheatrags.com/rspec-matchers) - how to use RSpec matchers to test different things
50
+
36
51
 
37
52
  Committing
38
53
  ----------
39
54
 
40
- All work for a next release is done in the `develop` branch. Please create your branch off of it.
41
-
42
55
  It is better if you follow [Git Style Guide](https://github.com/agis-/git-style-guide).
43
56
 
44
57
 
45
58
  Pull Requests
46
59
  -------------
47
60
 
48
- Please choose the `rmagick/rmagick` repo and the `develop` branch as the destination for your pull request.
61
+ Please choose the `rmagick/rmagick` repo as the destination for your pull
62
+ request. GitHub may suggest `rmagick-temp/rmagick` repo by default. **This is
63
+ incorrect.** Please switch to `rmagick/rmagick`. It should be the next repo in
64
+ the drop-down list.
65
+
66
+ Every pull request is tested on GitHub Actions to cover Linux builds and Windows builds.
67
+ It runs all tests on several Ruby and ImageMagick versions.
68
+
69
+ A quick way to fix formatting errors is to run `bundle exec rubocop --autocorrect path/to/file.rb`.
70
+
71
+ If you add new classes or methods, please add tests for them as well.
72
+ RSpec is preferred (see above).
73
+ Tests should test all possible branches of code execution (all conditions in `if`/`case` statements, etc.) to avoid errors later.
74
+
75
+ Thanks
76
+ ------
49
77
 
50
- NOTE: GitHub suggests `rmagick-temp/rmagick` repo by default. **This is incorrect.** Please switch to `rmagick/rmagick`. It should be the next repo in the drop-down list.
78
+ [open-issues]: https://github.com/rmagick/rmagick/issues
79
+ [codetriage]: http://www.codetriage.com/rmagick/rmagick
80
+ [codeclimate-issues]: https://codeclimate.com/github/rmagick/rmagick/issues
81
+ [codeclimate-extension]: https://docs.codeclimate.com/docs/browser-extension
data/Gemfile CHANGED
@@ -3,8 +3,22 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in rmagick.gemspec
4
4
  gemspec
5
5
 
6
- group :development, :test do
7
- gem 'simplecov', :require => false
6
+ gem 'pry', '~> 0.14'
7
+ gem 'rake-compiler', '~> 1.0'
8
+ gem 'rspec', '~> 3.8'
9
+ gem 'rspec_junit_formatter', '~> 0.6.0'
10
+ gem 'simplecov', '~> 0.16.1'
11
+ gem 'yard', '~> 0.9.24'
12
+
13
+ if RUBY_PLATFORM !~ /mswin|mingw/
14
+ gem 'rubocop', '~> 0.81.0'
15
+ gem 'rubocop-rspec', '~> 1.38.1'
16
+ gem 'rubocop-performance', '~> 1.5.2'
17
+ end
18
+
19
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
20
+ # For CI
21
+ gem 'rbs', '~> 3.4'
22
+
23
+ gem 'steep', '~> 1.6'
8
24
  end
9
- # Used by README.textile
10
- # gem "RedCloth"
data/README.md ADDED
@@ -0,0 +1,319 @@
1
+ RMagick
2
+ =======
3
+
4
+ [![GemVersion](https://img.shields.io/gem/v/rmagick.svg?style=flat)](https://rubygems.org/gems/rmagick)
5
+ ![CI](https://github.com/rmagick/rmagick/workflows/CI/badge.svg)
6
+
7
+ Table of Contents
8
+ -----------------
9
+
10
+ - [Introduction](#introduction)
11
+ - [Prerequisites](#prerequisites)
12
+ - [Installing RMagick](#installing-rmagick)
13
+ - [Using RMagick](#using-rmagick)
14
+ - [Things that can go wrong](#things-that-can-go-wrong)
15
+ - [Upgrading](#upgrading)
16
+ - [More samples](#more-samples)
17
+ - [Reporting Bugs](#reporting-bugs)
18
+ - [Development Setup](#development-setup)
19
+ - [Credits](#credits)
20
+ - [License](#mit-license)
21
+ - [Releasing](#releasing)
22
+
23
+ Introduction
24
+ ------------
25
+
26
+ RMagick is an interface between the Ruby programming language and the
27
+ ImageMagick image processing library.
28
+
29
+ Prerequisites
30
+ -------------
31
+
32
+ These prerequisites are required for the latest version of RMagick.
33
+
34
+ **OS**
35
+ - Linux
36
+ - \*BSD
37
+ - macOS
38
+ - Windows
39
+ - Other \*nix-like systems
40
+
41
+ **C++ compiler**
42
+ - RMagick 5.4.0 or later requires a C++ compiler.
43
+
44
+ **Ruby**
45
+ - Version 2.3 or later.
46
+
47
+ You can get Ruby from <https://www.ruby-lang.org>.
48
+
49
+ Ruby must be able to build C-Extensions (e.g. MRI, Rubinius, not JRuby)
50
+
51
+ **ImageMagick**
52
+ - Version 6.7.7 or later (6.x.x).
53
+ - Version 7.0.8 or later (7.x.x). Require RMagick 4.1.0 or later.
54
+
55
+ You can get ImageMagick from <https://imagemagick.org>.
56
+
57
+ ### Linux
58
+ #### Ubuntu
59
+ On Ubuntu, you can run:
60
+
61
+ ```sh
62
+ sudo apt-get install libmagickwand-dev
63
+ ```
64
+
65
+ #### Centos
66
+ On Centos, you can run:
67
+
68
+ ```sh
69
+ sudo yum install ImageMagick-devel
70
+ ```
71
+
72
+ #### Arch Linux
73
+ On Arch Linux, you can run:
74
+
75
+ ```sh
76
+ pacman -Syy imagemagick
77
+ ```
78
+
79
+ #### Alpine Linux
80
+ On Alpine Linux, you can run:
81
+
82
+ ```
83
+ apk add imagemagick imagemagick-dev imagemagick-libs
84
+ ```
85
+
86
+ or you can run if you would like to use ImageMagick 6:
87
+
88
+ ```
89
+ apk add imagemagick6 imagemagick6-dev imagemagick6-libs
90
+ ```
91
+
92
+ ### macOS
93
+ On macOS, you can run:
94
+
95
+ ```sh
96
+ brew install imagemagick
97
+ ```
98
+
99
+ or you can run if you would like to use ImageMagick 6:
100
+
101
+ ```sh
102
+ brew install imagemagick@6
103
+ ```
104
+
105
+ ### Windows
106
+ 1. Install latest Ruby+Devkit package which you can get from [RubyInstaller for Windows](https://rubyinstaller.org).
107
+ 2. You might need to configure `PATH` environment variable to where the compiler is located.
108
+ (Ex: `set PATH=C:\Ruby27-x64\msys64\usr\bin;C:\Ruby27-x64\msys64\mingw64\bin;%PATH%`)
109
+ 3. Download `ImageMagick-7.XXXX-Q16-x64-dll.exe` (not, `ImageMagick-7.XXXX-Q16-x64-static.exe`) binary from [Windows Binary Release](https://imagemagick.org/script/download.php#windows), or you can download ImageMagick 6 from [Windows Binary Release](https://legacy.imagemagick.org/script/download.php#windows).
110
+ 4. Install ImageMagick. You need to turn on checkboxes `Add application directory to your system path` and `Install development headers and libraries for C and C++` in an installer for RMagick.
111
+ <img width="50%" src="https://user-images.githubusercontent.com/199156/77183472-b72cbd00-6b11-11ea-8b9a-247bc1f9d8b1.png" />
112
+
113
+ Installing RMagick
114
+ ------------------
115
+
116
+ ### Installing via Bundler
117
+
118
+ Add to your `Gemfile`:
119
+
120
+ ```rb
121
+ gem 'rmagick'
122
+ ```
123
+
124
+ Then run:
125
+
126
+ ```sh
127
+ bundle install
128
+ ```
129
+
130
+ ### Installing via RubyGems
131
+
132
+ Run:
133
+
134
+ ```sh
135
+ gem install rmagick
136
+ ```
137
+
138
+ ### Versioning
139
+
140
+ RMagick is versioned according to Semantic Versioning. For stable version
141
+ compatible with Ruby 1.8+, use `~> 2.0`. Versions >= 3 work on Ruby >= 2.x
142
+ only.
143
+
144
+ Using RMagick
145
+ -------------
146
+
147
+ Require RMagick in your project as follows:
148
+
149
+ ```rb
150
+ require 'rmagick'
151
+ ```
152
+
153
+ See <https://rmagick.github.io/usage.html> for links to more information.
154
+
155
+ Things that can go wrong
156
+ ------------------------
157
+
158
+ The [RMagick installation FAQ][faq] has answers to the most commonly reported
159
+ problems, though may be out of date.
160
+
161
+ ### Can't install RMagick. Can't find libMagick or one of the dependent libraries. Check the mkmf.log file for more detailed information
162
+
163
+ Typically this message means that one or more of the libraries that ImageMagick
164
+ depends on hasn't been installed. Examine the mkmf.log file in the ext/RMagick
165
+ subdirectory of the installation directory for any error messages. These
166
+ messages typically contain enough additional information for you to be able to
167
+ diagnose the problem. Also see [this FAQ][libmagick-faq].
168
+
169
+ ### Cannot open shared object file
170
+
171
+ If you get a message like this:
172
+
173
+ ```sh
174
+ $DIR/RMagick.rb:11:in `require': libMagick.so.0:
175
+ cannot open shared object file: No such file or directory -
176
+ $DIR/RMagick2.so (LoadError)
177
+ ```
178
+
179
+ you probably do not have the directory in which the ImageMagick library
180
+ is installed in your load path. An easy way to fix this is to define
181
+ the directory in the `LD_LIBRARY_PATH` environment variable. For
182
+ example, suppose you installed the ImageMagick library `libMagick.so` in
183
+ `/usr/local/lib`. (By default this is where it is installed.) Create the
184
+ `LD_LIBRARY_PATH` variable like this:
185
+
186
+ ```sh
187
+ export LD_LIBRARY_PATH=/usr/local/lib
188
+ ```
189
+
190
+ On Linux, see `ld(1)` and `ld.so(8)` for more information. On other operating
191
+ systems, see the documentation for the dynamic loading facility.
192
+
193
+ This operation might not be required when you can use 4.2.5 or later.
194
+
195
+ ### Segmentation fault
196
+
197
+ Default stack size of your operating system might be too small. Try removing
198
+ the limit with this command:
199
+
200
+ ```sh
201
+ ulimit -s unlimited
202
+ ```
203
+
204
+ Upgrading
205
+ ---------
206
+
207
+ If you upgrade to a newer release of ImageMagick, make sure you're using a
208
+ release of RMagick that supports that release. It's safe to install a new
209
+ release of RMagick over an earlier release.
210
+
211
+ More samples
212
+ ------------
213
+
214
+ You can find more sample RMagick programs in the `/examples` directory. These
215
+ programs are not installed in the RMagick documentation tree.
216
+
217
+ Reporting bugs
218
+ --------------
219
+
220
+ Please report bugs in RMagick, its documentation, or its installation programs
221
+ via the bug tracker on the [RMagick issues page][issues].
222
+
223
+ However, We can't help with Ruby installation and configuration or ImageMagick
224
+ installation and configuration. Information about reporting problems and
225
+ getting help for ImageMagick is available at the [ImageMagick
226
+ website][imagemagick] or the [ImageMagick Forum][imagemagick-forum].
227
+
228
+ Development Setup
229
+ -----------------
230
+
231
+ In order to minimize issues on your local machine, we recommend that you make
232
+ use of a [Vagrant installation][dev-box].
233
+
234
+ Steps to get up and running with a passing build are as follows:
235
+
236
+ ### 1) set up the Vagrant environment
237
+
238
+ If you don't already have Vagrant installed, you can download and install it
239
+ from [here][vagrant]. Once installed, we can set up a pre-built environment:
240
+
241
+ ```sh
242
+ git clone https://github.com/tjschuck/rake-compiler-dev-box.git
243
+ cd rake-compiler-dev-box
244
+ vagrant up
245
+ ```
246
+
247
+ This last part will probably take a while as it has to download an Ubuntu image
248
+ and configure it. If there is an error during this process, you may need to
249
+ reboot your computer and enable virtualization in your BIOS settings.
250
+
251
+ ### 2) clone RMagick and log in to the vagrant box
252
+
253
+ Within the `rake-compiler-dev-box` directory:
254
+
255
+ ```sh
256
+ git clone https://github.com/rmagick/rmagick.git # or your fork
257
+ vagrant ssh
258
+ ```
259
+
260
+ ### 3) install ImageMagick and additional environment stuff
261
+
262
+ ```sh
263
+ cd /vagrant/rmagick
264
+ export IMAGEMAGICK_VERSION=6.8.9-10
265
+ bash ./before_install_linux.sh
266
+ ```
267
+
268
+ This will take just a few minutes to build ImageMagick
269
+
270
+ ### 4) build RMagick
271
+
272
+ ```sh
273
+ rake
274
+ ```
275
+
276
+ This compiles the RMagick extensions and runs the tests. If all goes well
277
+ you'll see a lot of output, eventually ending in something like:
278
+
279
+ ```sh
280
+ Finished tests in 35.865734s, 11.3758 tests/s, 6560.3007 assertions/s.
281
+
282
+ 408 tests, 235290 assertions, 0 failures, 0 errors, 0 skips
283
+ ```
284
+
285
+ And you're all set! The copy of RMagick within `/vagrant/rmagick` inside your
286
+ Vagrant session is the same as the one in the `rake-compiler-dev-box` directory
287
+ on your machine. You can make changes locally and run tests within your `ssh`
288
+ session.
289
+
290
+ Credits
291
+ -------
292
+
293
+ **Authors:** Tim Hunter, Omer Bar-or, Benjamin Thomas
294
+
295
+ Thanks to [ImageMagick Studio LLC][imagemagick] for ImageMagick and for hosting
296
+ the RMagick documentation.
297
+
298
+ License
299
+ -----------
300
+
301
+ [MIT License](LICENSE)
302
+
303
+ Releasing
304
+ ---------
305
+
306
+ See <https://github.com/rmagick/rmagick/wiki/Release-Process>
307
+
308
+ 1. Update ChangeLog
309
+ 2. Edit `lib/rmagick/version.rb`
310
+ 3. Are the tests passing? Run `rake` again just to be sure.
311
+ 4. `rake release`
312
+
313
+ [issues]: https://github.com/rmagick/rmagick/issues
314
+ [libmagick-faq]: https://web.archive.org/web/20140512193354/https://rmagick.rubyforge.org/install-faq.html#libmagick
315
+ [faq]: https://web.archive.org/web/20140512193354/https://rmagick.rubyforge.org/install-faq.html
316
+ [imagemagick]: https://imagemagick.org
317
+ [imagemagick-forum]: https://imagemagick.org/discourse-server
318
+ [dev-box]: https://github.com/tjschuck/rake-compiler-dev-box
319
+ [vagrant]: https://www.vagrantup.com/
data/Rakefile CHANGED
@@ -3,21 +3,28 @@ require './lib/rmagick/version'
3
3
  require 'fileutils'
4
4
  require 'English'
5
5
 
6
+ desc "Open an irb session preloaded with this library"
7
+ task :console do
8
+ sh "irb -r ./ext/RMagick/extconf.rb -r ./lib/rmagick.rb"
9
+ end
10
+
6
11
  task :config do
7
12
  def version
8
13
  Magick::VERSION
9
14
  end
15
+
10
16
  # e.g. 2.13.3 becomes RMagick_2-13-3
11
17
  def version_tag
12
- "RMagick_#{version.gsub('.','-')}"
18
+ "RMagick_#{version.tr('.', '-')}"
13
19
  end
20
+
14
21
  # e.g. 2.13.3 becomes rmagick-2.13.3.gem
15
22
  def gem_name
16
23
  "rmagick-#{version}.gem"
17
24
  end
18
25
 
19
26
  def base
20
- File.expand_path('..', __FILE__)
27
+ File.expand_path(__dir__)
21
28
  end
22
29
  end
23
30
 
@@ -30,18 +37,18 @@ task :assert_clean_repo do
30
37
  end
31
38
 
32
39
  desc 'build gem'
33
- task :build => [:config] do
40
+ task build: [:config] do
34
41
  sh 'gem build -V rmagick.gemspec'
35
42
  if $CHILD_STATUS.success?
36
43
  FileUtils.mkdir_p(File.join(base, 'pkg'))
37
44
  FileUtils.mv(File.join(base, gem_name), 'pkg')
38
45
  else
39
- STDERR.puts 'Could not build gem'
46
+ warn 'Could not build gem'
40
47
  exit $CHILD_STATUS.exitstatus
41
48
  end
42
49
  end
43
50
 
44
- task :push_and_tag => [:build] do
51
+ task push_and_tag: [:build] do
45
52
  sh "gem push #{File.join(base, 'pkg', gem_name)}"
46
53
  if $CHILD_STATUS.success?
47
54
  sh "git tag -a -m \"Version #{version}\" #{version_tag}"
@@ -54,117 +61,100 @@ task :push_and_tag => [:build] do
54
61
  end
55
62
 
56
63
  desc 'Release'
57
- task :release => [:assert_clean_repo, :push_and_tag]
58
-
59
- desc 'Release and build the legacy way'
60
- task :legacy_release=> ['legacy:README.html', 'legacy:extconf', 'legacy:doc', 'legacy:manifest', 'release']
64
+ task release: %i[assert_clean_repo push_and_tag]
61
65
 
62
- namespace :legacy do
63
- require 'find'
66
+ namespace :website do
67
+ PATH_TO_LOCAL_WEBSITE_REPOSITORY = File.expand_path('../rmagick.github.io')
64
68
 
65
- task :redcloth do
66
- require 'redcloth'
67
- end
68
-
69
- README = 'README.html'
70
- MANIFEST = 'ext/RMagick/MANIFEST'
71
-
72
- # Change the version number placeholders in a file.
73
- # Returns an array of lines from the file.
74
- def reversion(name)
69
+ def replace_reversion(lines)
75
70
  now = Time.new
76
71
  now = now.strftime('%m/%d/%y')
77
72
 
78
- lines = File.readlines name
79
73
  lines.each do |line|
80
- line.gsub!(%r{0\.0\.0}, Magick::VERSION)
74
+ line.gsub!(/0\.0\.0/, Magick::VERSION)
81
75
  line.gsub!(%r{YY/MM/DD}, now)
82
76
  end
83
77
  lines
84
78
  end
85
79
 
86
- # Rewrite a file containing embedded version number placeholders.
87
- def reversion_file(name)
88
- lines = reversion(name)
89
- tmp_name = name + '_tmp'
90
- mv name, tmp_name
91
- begin
92
- File.open(name, 'w') { |f| lines.each { |line| f.write line } }
93
- rescue
94
- mv tmp_name, name
95
- ensure
96
- rm tmp_name
97
- end
98
- end
99
-
100
- desc 'Update version in extconf'
101
- task :extconf do
102
- reversion_file 'ext/RMagick/extconf.rb'
80
+ def update_html(input_dir, output_dir, file_name)
81
+ lines = File.readlines(File.join(input_dir, file_name))
82
+ lines = replace_reversion(lines)
83
+ File.open(File.join(output_dir, file_name), 'w') { |f| lines.each { |line| f.write line } }
103
84
  end
104
85
 
105
- desc 'Build README.txt from README.textile using RedCloth'
106
- task 'README.txt' => [:redcloth] do
107
- reversion_file 'README.textile'
108
- body = File.readlines 'README.textile'
109
- body = RedCloth.new(body.join).to_html + "\n"
110
- File.open('README.txt', 'w') { |f| f.write body }
86
+ ENTITY = {
87
+ '&' => '&amp;',
88
+ '>' => '&gt;',
89
+ '<' => '&lt;'
90
+ }.freeze
91
+
92
+ def file_to_html(input_dir, input_file_name, output_dir, output_file_name)
93
+ File.open(File.join(input_dir, input_file_name)) do |src|
94
+ File.open(File.join(output_dir, output_file_name), 'w') do |dest|
95
+ dest.puts <<~END_EXHTMLHEAD
96
+ <!DOCTYPE public PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
97
+ <html xmlns="http://www.w3.org/1999/xhtml">
98
+ <head>
99
+ <meta name="generator" content="ex2html.rb" />
100
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
101
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />
102
+ <title>RMagick example: #{input_file_name}</title>
103
+ </head>
104
+ <body>
105
+ <h1>#{input_file_name}</h1>
106
+ <div class="bodybox">
107
+ <div class="bodyfloat">
108
+ <pre>
109
+ END_EXHTMLHEAD
110
+
111
+ src.each do |line|
112
+ line.gsub!(/[&><]/) { |s| ENTITY[s] }
113
+ dest.puts(line)
114
+ end
115
+
116
+ dest.puts <<~END_EXHTMLTAIL
117
+ </pre>
118
+ </div>
119
+ </div>
120
+ <div id="close"><a href="javascript:window.close();">Close window</a></div>
121
+ </body>
122
+ </html>
123
+ END_EXHTMLTAIL
124
+ end
125
+ end
111
126
  end
112
127
 
113
- desc 'Build README.html from README.txt'
114
- task README => 'README.txt' do
115
- puts "writing #{README}"
116
- File.open(README, 'w') do |html|
117
- html.write <<END_HTML_HEAD
118
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
119
- <html>
120
- <head>
121
- <title>RMagick #{Magick::VERSION} README</title>
122
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
123
- <meta name="GENERATOR" content="RedCloth">
124
- </head>
125
- <body>
126
- END_HTML_HEAD
127
- html.write File.readlines('README.txt')
128
- html.write <<END_HTML_TAIL
129
- </body>
130
- </html>
131
- END_HTML_TAIL
128
+ desc 'Update RMagick website'
129
+ task :update do
130
+ unless File.exist?(PATH_TO_LOCAL_WEBSITE_REPOSITORY)
131
+ puts "Please clone the rmagick.github.io repository to #{PATH_TO_LOCAL_WEBSITE_REPOSITORY}"
132
+ exit 1
132
133
  end
133
- end
134
134
 
135
- desc 'Update versions in html files'
136
- task :doc do
137
- Dir.chdir('doc') do
138
- FileList['*.html'].each { |d| reversion_file(d) }
135
+ Dir.glob('doc/*.html') do |file|
136
+ update_html('doc', PATH_TO_LOCAL_WEBSITE_REPOSITORY, File.basename(file))
139
137
  end
140
- end
141
138
 
142
- # Remove files we don't want in the tarball.
143
- # Ensure files are not executable. (ref: bug #10080)
144
- desc "Remove files we don't want in the .gem; ensure files are not executable"
145
- task :fix_files do
146
- rm 'README.txt', :verbose => true
147
- chmod 0644, FileList['doc/*.html', 'doc/ex/*.rb', 'doc/ex/images/*', 'examples/*.rb']
139
+ Dir.glob('doc/ex/*.rb') do |file|
140
+ file_name = File.basename(file)
141
+ file_to_html('doc/ex', file_name, PATH_TO_LOCAL_WEBSITE_REPOSITORY, "#{file_name}.html")
142
+ end
148
143
  end
144
+ end
149
145
 
150
- desc 'Build manifest'
151
- task :manifest do
152
- now = Time.new
153
- now = now.strftime('%H:%M:%S %m/%d/%y')
154
- puts "generating #{MANIFEST}"
155
-
156
- File.open(MANIFEST, 'w') do |f|
157
- f.puts "MANIFEST for #{Magick::VERSION} - #{now}\n\n"
158
- Find.find('.') do |name|
159
- next if File.directory? name
160
- f.puts name[2..-1] # remove leading "./"
161
- end
146
+ namespace :rbs do
147
+ desc 'Validate RBS definitions'
148
+ task :validate do
149
+ all_sigs = Dir.glob('sig').map { |dir| "-I #{dir}" }.join(' ')
150
+ sh("bundle exec rbs #{all_sigs} validate") do |ok, _|
151
+ abort('one or more rbs validate failed') unless ok
162
152
  end
163
153
  end
164
154
  end
165
155
 
156
+ require 'bundler/gem_tasks'
166
157
  require 'rake/extensiontask'
167
- require 'rake/testtask'
168
158
  require 'rspec/core/rake_task'
169
159
  RSpec::Core::RakeTask.new(:spec)
170
160
 
@@ -172,17 +162,12 @@ Rake::ExtensionTask.new('RMagick2') do |ext|
172
162
  ext.ext_dir = 'ext/RMagick'
173
163
  end
174
164
 
175
- Rake::TestTask.new(:test) do |t|
176
- t.libs << 'test'
177
- end
178
-
179
- task :test => :compile
180
- task :spec => :compile
165
+ task spec: :compile
181
166
 
182
167
  if ENV['STYLE_CHECKS']
183
168
  require 'rubocop/rake_task'
184
169
  RuboCop::RakeTask.new
185
- task :default => [:spec, :test, :rubocop]
170
+ task default: %i[rubocop]
186
171
  else
187
- task :default => [:spec, :test]
172
+ task default: %i[spec]
188
173
  end