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
@@ -1,29 +0,0 @@
1
- module Skeptick
2
- class Image
3
- class DslContext
4
- def initialize(image)
5
- @image = image
6
- end
7
-
8
- def set(*args)
9
- @image.set(*args)
10
- end
11
-
12
- def apply(*args)
13
- @image.apply(*args)
14
- end
15
-
16
- def image(obj)
17
- @image.image(obj)
18
- end
19
-
20
- def convert(*args, &blk)
21
- @image.convert(*args, &blk)
22
- end
23
-
24
- def method_missing(*args, &blk)
25
- @image.process_method_missing(*args, &blk)
26
- end
27
- end
28
- end
29
- end
@@ -1,55 +0,0 @@
1
- module Skeptick
2
- module Sugar
3
- module Composition
4
- module Helper
5
- def compose(blending, *args, &blk)
6
- convert(*args, &blk).tap do |c|
7
- c.append :compose, blending.to_s
8
- c.append :composite
9
- end
10
- end
11
- end
12
-
13
- module Operators
14
- def +(other)
15
- compose(:over, self, other)
16
- end
17
-
18
- def -(other)
19
- compose(:dstout, self, other)
20
- end
21
-
22
- def *(other)
23
- compose(:multiply, self, other)
24
- end
25
-
26
- def /(other)
27
- compose(:divide, self, other)
28
- end
29
-
30
- def &(other)
31
- compose(:dstin, self, other) { apply '-alpha Set' }
32
- end
33
-
34
- def |(other)
35
- compose(:dstover, self, other)
36
- end
37
- end
38
- end
39
- end
40
-
41
- # Include compose into external context
42
- include Sugar::Composition::Helper
43
-
44
- # Include compose into Image's and Convert's DSL context
45
- class Image::DslContext; include Sugar::Composition::Helper end
46
- class Convert::DslContext; include Sugar::Composition::Helper end
47
-
48
- # Include compose into Image and Convert objects
49
- class Image; include Sugar::Composition::Helper end
50
- class Convert; include Sugar::Composition::Helper end
51
-
52
- # Include operators into Image and Convert objects
53
- class Image; include Sugar::Composition::Operators end
54
- class Convert; include Sugar::Composition::Operators end
55
- end
@@ -1,12 +0,0 @@
1
- module Skeptick
2
- module Sugar
3
- module Debugging
4
- def save(path)
5
- apply('-write', path)
6
- end
7
- end
8
- end
9
-
10
- class Image::DslContext; include Sugar::Debugging end
11
- class Convert::DslContext; include Sugar::Debugging end
12
- end
@@ -1,32 +0,0 @@
1
- module Skeptick
2
- module Sugar
3
- module Drawing
4
- def canvas(string, options = {})
5
- if options[:size]
6
- set '-size', options[:size]
7
- end
8
-
9
- set "canvas:#{string}"
10
- end
11
-
12
- def draw(*args)
13
- set '-draw', args.join(' ').shellescape
14
- end
15
-
16
- def write(text, options = {})
17
- if options[:left] && options[:top]
18
- opts = "#{options[:left]},#{options[:top]} "
19
- end
20
-
21
- draw "text #{opts}'#{text}'"
22
- end
23
-
24
- def font(name)
25
- set '-font', name.split(/\s/).map(&:capitalize).join('-')
26
- end
27
- end
28
- end
29
-
30
- class Image::DslContext; include Sugar::Drawing end
31
- class Convert::DslContext; include Sugar::Drawing end
32
- end
@@ -1,70 +0,0 @@
1
- require 'skeptick/sugar/composition'
2
- require 'skeptick/sugar/formatting'
3
-
4
- module Skeptick
5
- module Sugar
6
- module Edges
7
- def rounded_corners_image(image = nil, options = {}, &blk)
8
- options = image.is_a?(Hash) ? image : options
9
- radius = options[:radius] || 15
10
- width, height = options.values_at(:width, :height)
11
-
12
- if options[:size]
13
- width, height = *options[:size].split('x').map(&:to_i)
14
- end
15
-
16
- if block_given?
17
- image = Image.new(self, &blk)
18
- end
19
-
20
- border = if width && height
21
- "roundrectangle 1,1 #{width},#{height} #{radius},#{radius}"
22
- else
23
- convert(image, to: 'info:') do
24
- format "roundrectangle 1,1 %[fx:w], %[fx:h] #{radius},#{radius}"
25
- end.execute.strip
26
- end
27
-
28
- compose(:dstin, image) do
29
- convert do
30
- set '+clone'
31
- set :alpha, 'transparent', :background, 'none'
32
- draw border
33
- end
34
-
35
- set :alpha, 'set'
36
- end
37
- end
38
-
39
- def torn_paper_image(image = nil, options = {}, &blk)
40
- options = image.is_a?(Hash) ? image : options
41
-
42
- spread = options[:spread] || 1
43
- blur = options[:blur] || '0x.7'
44
- threshold = options[:threshold] || 50
45
-
46
- if block_given?
47
- image = Image.new(self, &blk)
48
- end
49
-
50
- compose(:copy_opacity, image) do
51
- convert do
52
- set '+clone'
53
- apply :alpha, 'extract'
54
- apply '-virtual-pixel', 'black'
55
- apply :spread, spread
56
- apply :blur, blur
57
- apply :threshold, "#{threshold}%"
58
- end
59
-
60
- apply :alpha, 'off'
61
- end
62
- end
63
- end
64
- end
65
-
66
- include Sugar::Edges
67
-
68
- class Image::DslContext; include Sugar::Edges end
69
- class Convert::DslContext; include Sugar::Edges end
70
- end
@@ -1,12 +0,0 @@
1
- module Skeptick
2
- module Sugar
3
- module Formatting
4
- def format(*args)
5
- set '-format', args.join(' ').shellescape
6
- end
7
- end
8
- end
9
-
10
- class Image::DslContext; include Sugar::Formatting end
11
- class Convert::DslContext; include Sugar::Formatting end
12
- end
@@ -1,16 +0,0 @@
1
- require 'skeptick/sugar/geometry'
2
-
3
- module Skeptick
4
- module Sugar
5
- module Resizing
6
- def resized_image(path, options = {})
7
- image("#{path}[#{geometry(options)}]")
8
- end
9
- end
10
- end
11
-
12
- include Sugar::Resizing
13
-
14
- class Image::DslContext; include Sugar::Resizing end
15
- class Convert::DslContext; include Sugar::Resizing end
16
- end
@@ -1,43 +0,0 @@
1
- module Skeptick
2
- module Sugar
3
- module SequenceManipulation
4
- def clone(*args)
5
- obj = (args.size < 2 ? args.first : args)
6
- set(
7
- if obj
8
- "-clone #{Helper.object_to_index_range_list(obj)}"
9
- else
10
- '+clone'
11
- end
12
- )
13
- end
14
-
15
- def delete(*args)
16
- obj = (args.size < 2 ? args.first : args)
17
- set(
18
- if obj
19
- "-delete #{Helper.object_to_index_range_list(obj)}"
20
- else
21
- '+delete'
22
- end
23
- )
24
- end
25
-
26
- def swap(*args)
27
- set(
28
- if args.empty?
29
- '+swap'
30
- elsif args.size == 2
31
- "-swap #{args.join(',')}"
32
- else
33
- raise ArgumentError,
34
- "wrong number of arguments (#{args.size} for 0, 2)"
35
- end
36
- )
37
- end
38
- end
39
- end
40
-
41
- class Image::DslContext; include Sugar::SequenceManipulation end
42
- class Convert::DslContext; include Sugar::SequenceManipulation end
43
- end
@@ -1,94 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class ChainTest < Skeptick::TestCase
4
- include Skeptick
5
-
6
- def test_dsl_methods_available
7
- assert_respond_to self, :chain
8
- end
9
-
10
- def test_chaining_two_converts
11
- cmd = chain do
12
- convert('foo')
13
- convert(:pipe)
14
- end
15
-
16
- assert_equal 'convert foo miff:- | convert miff:- miff:-', cmd.to_s
17
- end
18
-
19
- def test_chaining_two_converts_to_destination
20
- cmd = chain(to: 'baz') do
21
- convert('foo')
22
- convert(:pipe)
23
- end
24
-
25
- assert_equal 'convert foo miff:- | convert miff:- baz', cmd.to_s
26
- end
27
-
28
- def test_last_convert_destination_prevails
29
- cmd = chain(to: 'baz') do
30
- convert('foo')
31
- convert(:pipe, to: 'qux')
32
- end
33
-
34
- assert_equal 'convert foo miff:- | convert miff:- qux', cmd.to_s
35
- end
36
-
37
- def test_pipe_or_returns_pipe_if_piping
38
- cmd = chain do
39
- convert('foo')
40
- convert(pipe_or('bar'))
41
- end
42
-
43
- assert_equal 'convert foo miff:- | convert miff:- miff:-', cmd.to_s
44
- end
45
-
46
- def test_pipe_or_returns_path_if_not_piping
47
- cmd = chain { convert(pipe_or('foo')) }
48
- assert_equal 'convert foo miff:-', cmd.to_s
49
- end
50
-
51
- def test_lvars_from_external_context_are_accessible
52
- foo = 'foo'
53
- cmd = chain { convert(foo) }
54
- assert_equal 'convert foo miff:-', cmd.to_s
55
- end
56
-
57
- def test_methods_from_external_context_are_accessible
58
- context = Class.new do
59
- include Skeptick
60
- def foo; 'foo' end
61
- def cmd; chain { convert(foo) } end
62
- end
63
-
64
- assert_equal 'convert foo miff:-', context.new.cmd.to_s
65
- end
66
-
67
- def test_complex_piping_case
68
- cmd = chain(to: 'foo') do
69
- convert('resized_design', 'mask') do
70
- set '-geometry', '-left-top'
71
- set '-brightness-contrast', '-12x20'
72
- end
73
-
74
- convert('foo') do
75
- convert('qux') do
76
- set '+asdf'
77
- set '+fdsa'
78
- end
79
-
80
- image 'bleh'
81
- set '-resize'
82
- end
83
-
84
- convert('paper_path', pipe_or('paper_path')) do
85
- set '-geometry +left+top'
86
- end
87
- end
88
-
89
- assert_equal 'convert resized_design mask -geometry -left-top ' +
90
- '-brightness-contrast -12x20 miff:- | convert foo ' +
91
- '\( qux \+asdf \+fdsa \) bleh -resize miff:- | convert paper_path ' +
92
- 'miff:- -geometry \+left\+top foo', cmd.to_s
93
- end
94
- end
@@ -1,145 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class ImageTest < Skeptick::TestCase
4
- include Skeptick
5
-
6
- def test_dsl_method_available
7
- assert_respond_to self, :image
8
- end
9
-
10
- def test_set_prepends_to_image_segment
11
- cmd = convert do
12
- image do
13
- image 'bar'
14
- set '-foo'
15
- end
16
- end
17
-
18
- assert_equal 'convert -foo bar miff:-', cmd.to_s
19
- end
20
-
21
- def test_apply_appends_to_image_segment
22
- cmd = convert do
23
- image do
24
- apply '-foo'
25
- image 'bar'
26
- end
27
- end
28
-
29
- assert_equal 'convert bar -foo miff:-', cmd.to_s
30
- end
31
-
32
- def test_lvars_from_external_context_are_accessible
33
- foo = '-test'
34
-
35
- cmd = convert do
36
- image do
37
- apply foo
38
- image 'bar'
39
- end
40
- end
41
-
42
- assert_equal 'convert bar -test miff:-', cmd.to_s
43
- end
44
-
45
- def test_methods_from_external_context_are_accessible
46
- context = Class.new do
47
- include Skeptick
48
- def foo; :foo end
49
- def cmd
50
- convert do
51
- image do
52
- apply foo
53
- image 'bar'
54
- end
55
- end
56
- end
57
- end
58
-
59
- assert_equal 'convert bar -foo miff:-', context.new.cmd.to_s
60
- end
61
-
62
- def test_inject_image_into_convert
63
- sample = image do
64
- set :size, '400x400'
65
- image 'tile:granite:'
66
- apply '-brightness-contrast', '38x-33'
67
- apply :blur, '0x0.5'
68
- end
69
-
70
- cmd = convert do
71
- set '-foo'
72
- image sample
73
- set '-bar'
74
- end
75
-
76
- assert_equal 'convert -foo -size 400x400 tile:granite: ' +
77
- '-brightness-contrast 38x-33 -blur 0x0.5 -bar miff:-', cmd.to_s
78
- end
79
-
80
- def test_inject_image_into_convert_as_argument
81
- sample = image do
82
- set :size, '400x400'
83
- image 'tile:granite:'
84
- apply '-brightness-contrast', '38x-33'
85
- apply :blur, '0x0.5'
86
- end
87
-
88
- cmd = convert(sample)
89
- assert_equal 'convert -size 400x400 tile:granite: -brightness-contrast ' +
90
- '38x-33 -blur 0x0.5 miff:-', cmd.to_s
91
- end
92
-
93
- def test_declare_image_inside_convert
94
- cmd = convert do
95
- set '-foo'
96
- image do
97
- set :size, '400x400'
98
- image 'tile:granite:'
99
- apply '-brightness-contrast', '38x-33'
100
- apply :blur, '0x0.5'
101
- end
102
- set '-bar'
103
- end
104
-
105
- assert_equal 'convert -foo -size 400x400 tile:granite: ' +
106
- '-brightness-contrast 38x-33 -blur 0x0.5 -bar miff:-', cmd.to_s
107
- end
108
-
109
- def test_nested_image
110
- sample = image do
111
- set :foo
112
- image 'bar'
113
- apply :baz
114
- end
115
-
116
- cmd = convert do
117
- image do
118
- set :size, '400x400'
119
- image sample
120
- apply '-brightness-contrast', '38x-33'
121
- apply :blur, '0x0.5'
122
- end
123
- end
124
-
125
- assert_equal 'convert -size 400x400 -foo bar -baz -brightness-contrast ' +
126
- '38x-33 -blur 0x0.5 miff:-', cmd.to_s
127
- end
128
-
129
- def test_convert_as_image_object
130
- sample = convert('foo', to: 'bar') do
131
- set :baz
132
- end
133
-
134
- cmd = convert do
135
- image do
136
- set '-setting'
137
- image sample
138
- apply '-operation'
139
- end
140
- end
141
-
142
- assert_equal 'convert -setting ( foo -baz ) -operation miff:-',
143
- cmd.to_s
144
- end
145
- end