skeptick 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +14 -0
  3. data/README.md +63 -289
  4. data/lib/skeptick/command.rb +8 -19
  5. data/lib/skeptick/convert.rb +65 -82
  6. data/lib/skeptick/core.rb +1 -7
  7. data/lib/skeptick/dsl_context.rb +32 -0
  8. data/lib/skeptick/sugar.rb +13 -7
  9. data/lib/skeptick/sugar/canvas.rb +8 -0
  10. data/lib/skeptick/sugar/clone.rb +9 -0
  11. data/lib/skeptick/sugar/compose.rb +50 -0
  12. data/lib/skeptick/sugar/delete.rb +9 -0
  13. data/lib/skeptick/sugar/draw.rb +7 -0
  14. data/lib/skeptick/sugar/font.rb +7 -0
  15. data/lib/skeptick/sugar/format.rb +7 -0
  16. data/lib/skeptick/sugar/geometry.rb +25 -31
  17. data/lib/skeptick/sugar/resized_image.rb +15 -0
  18. data/lib/skeptick/sugar/rounded_corners_image.rb +42 -0
  19. data/lib/skeptick/sugar/swap.rb +12 -0
  20. data/lib/skeptick/sugar/text.rb +11 -0
  21. data/lib/skeptick/sugar/torn_paper_image.rb +32 -0
  22. data/lib/skeptick/sugar/write.rb +8 -0
  23. data/lib/skeptick/version.rb +1 -1
  24. data/logo.rb +12 -11
  25. data/refresh_preview.scpt +1 -1
  26. data/skeptick.gemspec +1 -0
  27. data/test/convert_test.rb +128 -33
  28. data/test/sugar/canvas_test.rb +16 -0
  29. data/test/sugar/clone_test.rb +41 -0
  30. data/test/sugar/{composition_test.rb → compose_test.rb} +35 -87
  31. data/test/sugar/delete_test.rb +41 -0
  32. data/test/sugar/draw_test.rb +11 -0
  33. data/test/sugar/font_test.rb +11 -0
  34. data/test/sugar/format_test.rb +12 -0
  35. data/test/sugar/{resizing_test.rb → resized_image_test.rb} +5 -5
  36. data/test/sugar/rounded_corners_image_test.rb +53 -0
  37. data/test/sugar/swap_test.rb +28 -0
  38. data/test/sugar/text_test.rb +22 -0
  39. data/test/sugar/torn_paper_image_test.rb +53 -0
  40. data/test/sugar/write_test.rb +14 -0
  41. metadata +57 -34
  42. data/lib/skeptick/chain.rb +0 -55
  43. data/lib/skeptick/chain/dsl_context.rb +0 -21
  44. data/lib/skeptick/convert/dsl_context.rb +0 -27
  45. data/lib/skeptick/helper.rb +0 -26
  46. data/lib/skeptick/image.rb +0 -69
  47. data/lib/skeptick/image/dsl_context.rb +0 -29
  48. data/lib/skeptick/sugar/composition.rb +0 -55
  49. data/lib/skeptick/sugar/debugging.rb +0 -12
  50. data/lib/skeptick/sugar/drawing.rb +0 -32
  51. data/lib/skeptick/sugar/edges.rb +0 -70
  52. data/lib/skeptick/sugar/formatting.rb +0 -12
  53. data/lib/skeptick/sugar/resizing.rb +0 -16
  54. data/lib/skeptick/sugar/sequence_manipulation.rb +0 -43
  55. data/test/chain_test.rb +0 -94
  56. data/test/image_test.rb +0 -145
  57. data/test/sugar/debugging_test.rb +0 -24
  58. data/test/sugar/drawing_test.rb +0 -86
  59. data/test/sugar/edges_test.rb +0 -99
  60. data/test/sugar/formatting_test.rb +0 -19
  61. data/test/sugar/sequence_manipulation_test.rb +0 -98
@@ -0,0 +1,41 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/clone'
3
+
4
+ class CloneTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_clone_without_args
8
+ cmd = convert { clone }
9
+ assert_equal 'convert +clone miff:-', cmd.to_s
10
+ end
11
+
12
+ def test_clone_with_one_arg
13
+ cmd = convert { clone(1) }
14
+ assert_equal 'convert -clone 1 miff:-', cmd.to_s
15
+ end
16
+
17
+ def test_clone_with_two_args
18
+ cmd = convert { clone(1,3) }
19
+ assert_equal 'convert -clone 1,3 miff:-', cmd.to_s
20
+ end
21
+
22
+ def test_clone_with_array
23
+ cmd = convert { clone([1,3]) }
24
+ assert_equal 'convert -clone 1,3 miff:-', cmd.to_s
25
+ end
26
+
27
+ def test_clone_with_inclusive_range
28
+ cmd = convert { clone(1..3) }
29
+ assert_equal 'convert -clone 1-3 miff:-', cmd.to_s
30
+ end
31
+
32
+ def test_clone_with_exclusive_range
33
+ cmd = convert { clone(1...3) }
34
+ assert_equal 'convert -clone 1-2 miff:-', cmd.to_s
35
+ end
36
+
37
+ def test_clone_in_nested_convert
38
+ cmd = convert('foo') { convert { clone; set :bar } }
39
+ assert_equal 'convert foo ( +clone -bar ) miff:-', cmd.to_s
40
+ end
41
+ end
@@ -1,11 +1,11 @@
1
1
  require_relative '../test_helper'
2
- require 'skeptick/sugar/composition'
2
+ require 'skeptick/sugar/compose'
3
3
 
4
4
  # DISCLAIMER
5
5
  # These tests are not examples of proper usage of ImageMagick.
6
6
  # In fact, most of them are entirely invalid. The point is to
7
7
  # test the logic of building strings.
8
- class CompositionTest < Skeptick::TestCase
8
+ class ComposeTest < Skeptick::TestCase
9
9
  include Skeptick
10
10
 
11
11
  def test_compose_with_blending
@@ -59,22 +59,22 @@ class CompositionTest < Skeptick::TestCase
59
59
  end
60
60
 
61
61
  def test_compose_with_ops
62
- cmd = compose(:over) { with '-foo' }
62
+ cmd = compose(:over) { set '-foo' }
63
63
  assert_equal 'convert -foo -compose over -composite miff:-', cmd.to_s
64
64
  end
65
65
 
66
66
  def test_compose_with_concatenated_ops
67
- cmd = compose(:over) { with '-foo', 'bar' }
67
+ cmd = compose(:over) { set '-foo', 'bar' }
68
68
  assert_equal 'convert -foo bar -compose over -composite miff:-', cmd.to_s
69
69
  end
70
70
 
71
71
  def test_compose_with_multiple_ops
72
- cmd = compose(:over) { with '-foo'; with '+bar' }
72
+ cmd = compose(:over) { set '-foo'; set '+bar' }
73
73
  assert_equal 'convert -foo +bar -compose over -composite miff:-', cmd.to_s
74
74
  end
75
75
 
76
76
  def test_compose_with_multiple_concatenated_ops
77
- cmd = compose(:over) { with '-foo', 'bar'; with '+baz', 'qux' }
77
+ cmd = compose(:over) { set '-foo', 'bar'; set '+baz', 'qux' }
78
78
  assert_equal 'convert -foo bar +baz qux -compose over -composite miff:-',
79
79
  cmd.to_s
80
80
  end
@@ -82,8 +82,8 @@ class CompositionTest < Skeptick::TestCase
82
82
  def test_compose_with_ops_inputs_and_output
83
83
  cmd = compose(:over, 'foo', 'bar', to: 'baz') do
84
84
  image 'qux'
85
- with '+quux'
86
- with '-corge', 'grault'
85
+ set '+quux'
86
+ set :corge, 'grault'
87
87
  end
88
88
 
89
89
  assert_equal 'convert foo bar qux +quux -corge grault -compose over ' +
@@ -92,7 +92,7 @@ class CompositionTest < Skeptick::TestCase
92
92
 
93
93
  def test_nested_compose
94
94
  cmd = compose(:over, to: 'baz') do
95
- compose(:multiply, 'foo') { with 'bar' }
95
+ compose(:multiply, 'foo') { set 'bar' }
96
96
  end
97
97
 
98
98
  assert_equal 'convert ( foo bar -compose multiply -composite ) -compose ' +
@@ -101,7 +101,7 @@ class CompositionTest < Skeptick::TestCase
101
101
 
102
102
  def test_nested_compose_ignores_output
103
103
  cmd = compose(:over, to: 'baz') do
104
- compose(:multiply, 'foo', to: 'nowhere') { with 'bar' }
104
+ compose(:multiply, 'foo', to: 'nowhere') { set 'bar' }
105
105
  end
106
106
 
107
107
  assert_equal 'convert ( foo bar -compose multiply -composite ) -compose ' +
@@ -111,12 +111,12 @@ class CompositionTest < Skeptick::TestCase
111
111
  def test_multi_image_nested_compose
112
112
  cmd = compose(:over, 'foo', to: 'bar') do
113
113
  compose(:multiply, 'qux') do
114
- with '+asdf'
115
- with '+fdsa'
114
+ set '+asdf'
115
+ set '+fdsa'
116
116
  end
117
117
 
118
118
  image 'bleh'
119
- with '-resize'
119
+ set '-resize'
120
120
  end
121
121
 
122
122
  assert_equal 'convert foo ( qux +asdf +fdsa -compose multiply ' +
@@ -125,14 +125,14 @@ class CompositionTest < Skeptick::TestCase
125
125
 
126
126
  def test_compose_composition
127
127
  complex_image = compose(:over, 'qux') do
128
- with '+asdf'
129
- with '+fdsa'
128
+ set '+asdf'
129
+ set '+fdsa'
130
130
  end
131
131
 
132
132
  cmd = compose(:multiply, 'foo', to: 'bar') do
133
133
  image complex_image
134
134
  image 'bleh'
135
- with '-resize'
135
+ set '-resize'
136
136
  end
137
137
 
138
138
  assert_equal 'convert foo ( qux +asdf +fdsa -compose over -composite ) ' +
@@ -140,81 +140,29 @@ class CompositionTest < Skeptick::TestCase
140
140
  end
141
141
 
142
142
  def test_compose_double_nesting_with_composition
143
- complex_image = compose('foo', to: 'nowhere') do
144
- compose('bar', to: 'nowhere') do
145
- compose('baz') do
143
+ complex_image = compose(:multiply, to: 'nowhere') do
144
+ compose(:over, to: 'nowhere') do
145
+ compose(:hardlight) do
146
146
  image 'image1'
147
- with '-option', 'qux'
147
+ set :option, 'qux'
148
148
  end
149
149
 
150
150
  image 'image2'
151
- with '+option'
151
+ set '+option'
152
152
  end
153
153
  end
154
154
 
155
- cmd = compose('image3') do
155
+ cmd = compose(:screen) do
156
156
  image complex_image
157
- image 'image4'
158
- with '-option', 'quux'
157
+ image 'image3'
158
+ set :option, 'quux'
159
159
  end
160
160
 
161
- assert_equal 'convert ( ( ( image1 -option qux -compose baz -composite ' +
162
- ') image2 +option -compose bar -composite ) -compose foo -composite ) ' +
163
- 'image4 -option quux -compose image3 -composite miff:-', cmd.to_s
164
- end
165
-
166
- def test_plus_operator_on_image
167
- lhs = image('foo')
168
- rhs = image('bar')
169
- result = convert(lhs + rhs)
170
-
171
- assert_equal 'convert ( foo bar -compose over -composite ) miff:-',
172
- result.to_s
173
- end
174
-
175
- def test_minus_operator_on_image
176
- lhs = image('foo')
177
- rhs = image('bar')
178
- result = convert(lhs - rhs)
179
-
180
- assert_equal 'convert ( foo bar -compose dstout -composite ) miff:-',
181
- result.to_s
182
- end
183
-
184
- def test_multiply_operator_on_image
185
- lhs = image('foo')
186
- rhs = image('bar')
187
- result = convert(lhs * rhs)
188
-
189
- assert_equal 'convert ( foo bar -compose multiply -composite ) miff:-',
190
- result.to_s
191
- end
192
-
193
- def test_divide_operator_on_image
194
- lhs = image('foo')
195
- rhs = image('bar')
196
- result = convert(lhs / rhs)
197
-
198
- assert_equal 'convert ( foo bar -compose divide -composite ) miff:-',
199
- result.to_s
200
- end
201
-
202
- def test_and_operator_on_image
203
- lhs = image('foo')
204
- rhs = image('bar')
205
- result = convert(lhs & rhs)
206
-
207
- assert_equal 'convert ( foo bar -alpha Set -compose dstin -composite ) ' +
208
- 'miff:-', result.to_s
209
- end
210
-
211
- def test_or_operator_on_image
212
- lhs = image('foo')
213
- rhs = image('bar')
214
- result = convert(lhs | rhs)
215
-
216
- assert_equal 'convert ( foo bar -compose dstover -composite ) miff:-',
217
- result.to_s
161
+ assert_equal 'convert ( '\
162
+ '( ( image1 -option qux -compose hardlight -composite ) '\
163
+ 'image2 +option -compose over -composite '\
164
+ ') -compose multiply -composite ) '\
165
+ 'image3 -option quux -compose screen -composite miff:-', cmd.to_s
218
166
  end
219
167
 
220
168
  def test_plus_operator_on_convert
@@ -222,7 +170,7 @@ class CompositionTest < Skeptick::TestCase
222
170
  rhs = convert('bar')
223
171
  result = lhs + rhs
224
172
 
225
- assert_equal 'convert ( foo ) ( bar ) -compose over -composite miff:-',
173
+ assert_equal 'convert foo bar -compose over -composite miff:-',
226
174
  result.to_s
227
175
  end
228
176
 
@@ -231,7 +179,7 @@ class CompositionTest < Skeptick::TestCase
231
179
  rhs = convert('bar')
232
180
  result = lhs - rhs
233
181
 
234
- assert_equal 'convert ( foo ) ( bar ) -compose dstout -composite miff:-',
182
+ assert_equal 'convert foo bar -compose dstout -composite miff:-',
235
183
  result.to_s
236
184
  end
237
185
 
@@ -240,7 +188,7 @@ class CompositionTest < Skeptick::TestCase
240
188
  rhs = convert('bar')
241
189
  result = lhs * rhs
242
190
 
243
- assert_equal 'convert ( foo ) ( bar ) -compose multiply -composite miff:-',
191
+ assert_equal 'convert foo bar -compose multiply -composite miff:-',
244
192
  result.to_s
245
193
  end
246
194
 
@@ -249,7 +197,7 @@ class CompositionTest < Skeptick::TestCase
249
197
  rhs = convert('bar')
250
198
  result = lhs / rhs
251
199
 
252
- assert_equal 'convert ( foo ) ( bar ) -compose divide -composite miff:-',
200
+ assert_equal 'convert foo bar -compose divide -composite miff:-',
253
201
  result.to_s
254
202
  end
255
203
 
@@ -258,7 +206,7 @@ class CompositionTest < Skeptick::TestCase
258
206
  rhs = convert('bar')
259
207
  result = lhs & rhs
260
208
 
261
- assert_equal 'convert ( foo ) ( bar ) -alpha Set -compose dstin ' +
209
+ assert_equal 'convert foo bar -alpha Set -compose dstin ' +
262
210
  '-composite miff:-', result.to_s
263
211
  end
264
212
 
@@ -267,7 +215,7 @@ class CompositionTest < Skeptick::TestCase
267
215
  rhs = convert('bar')
268
216
  result = lhs | rhs
269
217
 
270
- assert_equal 'convert ( foo ) ( bar ) -compose dstover -composite miff:-',
218
+ assert_equal 'convert foo bar -compose dstover -composite miff:-',
271
219
  result.to_s
272
220
  end
273
221
  end
@@ -0,0 +1,41 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/delete'
3
+
4
+ class DeleteTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_delete_without_args
8
+ cmd = convert { delete }
9
+ assert_equal 'convert +delete miff:-', cmd.to_s
10
+ end
11
+
12
+ def test_delete_with_one_arg
13
+ cmd = convert { delete(1) }
14
+ assert_equal 'convert -delete 1 miff:-', cmd.to_s
15
+ end
16
+
17
+ def test_delete_with_two_args
18
+ cmd = convert { delete(1,3) }
19
+ assert_equal 'convert -delete 1,3 miff:-', cmd.to_s
20
+ end
21
+
22
+ def test_delete_with_array
23
+ cmd = convert { delete([1,3]) }
24
+ assert_equal 'convert -delete 1,3 miff:-', cmd.to_s
25
+ end
26
+
27
+ def test_delete_with_inclusive_range
28
+ cmd = convert { delete(1..3) }
29
+ assert_equal 'convert -delete 1-3 miff:-', cmd.to_s
30
+ end
31
+
32
+ def test_delete_with_exclusive_range
33
+ cmd = convert { delete(1...3) }
34
+ assert_equal 'convert -delete 1-2 miff:-', cmd.to_s
35
+ end
36
+
37
+ def test_delete_in_nested_convert
38
+ cmd = convert('foo') { convert('bar') { delete } }
39
+ assert_equal 'convert foo ( bar +delete ) miff:-', cmd.to_s
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/draw'
3
+
4
+ class DrawTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_draw_in_convert
8
+ cmd = convert { draw 'fill none bezier 1,2 3,4' }
9
+ assert_equal 'convert -draw fill none bezier 1,2 3,4 miff:-', cmd.to_s
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/font'
3
+
4
+ class FontTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_font_in_convert
8
+ cmd = convert { font 'handwriting - dakota Regular' }
9
+ assert_equal 'convert -font Handwriting---Dakota-Regular miff:-', cmd.to_s
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/format'
3
+
4
+ class FormatTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_format_in_convert
8
+ cmd = convert { format "roundrectangle 1,1 %[fx:w], %[fx:h] 5,5" }
9
+ assert_equal 'convert -format roundrectangle 1,1 %[fx:w], '\
10
+ '%[fx:h] 5,5 miff:-', cmd.to_s
11
+ end
12
+ end
@@ -1,22 +1,22 @@
1
1
  require_relative '../test_helper'
2
- require 'skeptick/sugar/resizing'
2
+ require 'skeptick/sugar/resized_image'
3
3
 
4
- class ResizingTest < Skeptick::TestCase
4
+ class ResizedImageTest < Skeptick::TestCase
5
5
  include Skeptick
6
6
 
7
- def test_resize_image_with_geometry_options
7
+ def test_resized_image_with_geometry_options
8
8
  img = resized_image('foo', width: 200, shrink_only: true)
9
9
  cmd = convert(img)
10
10
  assert_equal 'convert foo[200x>] miff:-', cmd.to_s
11
11
  end
12
12
 
13
- def test_resize_image_nested_via_lvar
13
+ def test_resized_image_nested_via_lvar
14
14
  img = resized_image('foo', width: 200, shrink_only: true)
15
15
  cmd = convert { image(img) }
16
16
  assert_equal 'convert foo[200x>] miff:-', cmd.to_s
17
17
  end
18
18
 
19
- def test_resize_image_nested_via_block
19
+ def test_resized_image_nested_via_block
20
20
  cmd = convert do
21
21
  resized_image('foo', height: 100, shrink_only: true)
22
22
  end
@@ -0,0 +1,53 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/rounded_corners_image'
3
+
4
+ class RoundedCornersImageTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_rounded_corners_image_without_block_and_radius
8
+ img = rounded_corners_image('foo', size: '200x300')
9
+
10
+ assert_equal 'convert foo ( +clone '\
11
+ '-draw roundrectangle 1,1 200,300 15,15 ) -compose dstin '\
12
+ '-composite miff:-', img.to_s
13
+ end
14
+
15
+ def test_rounded_corners_image_with_block_and_radius
16
+ img = rounded_corners_image(size: '200x300', radius: 20) do
17
+ image 'tile:granite:'
18
+ append '-brightness-contrast', '38x-33'
19
+ end
20
+
21
+ assert_equal 'convert ( tile:granite: -brightness-contrast 38x-33 )'\
22
+ ' ( +clone -draw roundrectangle 1,1 '\
23
+ '200,300 20,20 ) -compose dstin -composite miff:-', img.to_s
24
+ end
25
+
26
+ def test_nested_rounded_corners_image
27
+ cmd = convert(to: 'bar') do
28
+ rounded_corners_image('foo', size: '200x300', radius: 5)
29
+ end
30
+
31
+ assert_equal 'convert foo ( +clone '\
32
+ '-draw roundrectangle 1,1 200,300 5,5 ) -compose '\
33
+ 'dstin -composite bar', cmd.to_s
34
+ end
35
+
36
+ def test_nested_rounded_corners_image_via_lvar_arg
37
+ img = rounded_corners_image('foo', size: '200x300', radius: 5)
38
+ cmd = convert(img, to: 'bar')
39
+
40
+ assert_equal 'convert foo ( +clone '\
41
+ '-draw roundrectangle 1,1 200,300 5,5 ) -compose '\
42
+ 'dstin -composite bar', cmd.to_s
43
+ end
44
+
45
+ def test_nested_rounded_corners_image_via_lvar_in_block
46
+ img = rounded_corners_image('foo', size: '200x300', radius: 5)
47
+ cmd = convert(to: 'bar') { image(img) }
48
+
49
+ assert_equal 'convert foo ( +clone '\
50
+ '-draw roundrectangle 1,1 200,300 5,5 ) -compose '\
51
+ 'dstin -composite bar', cmd.to_s
52
+ end
53
+ end