skeptick 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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