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,28 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/swap'
3
+
4
+ class SwapTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_swap_without_args
8
+ cmd = convert { swap }
9
+ assert_equal 'convert +swap miff:-', cmd.to_s
10
+ end
11
+
12
+ def test_swap_with_one_arg_raises_error
13
+ assert_raises(ArgumentError) do
14
+ convert{ swap(1) }.to_s
15
+ end
16
+ end
17
+
18
+ def test_swap_with_two_args
19
+ cmd = convert('foo', 'bar') { swap(1,2) }
20
+ assert_equal 'convert foo bar -swap 1,2 miff:-', cmd.to_s
21
+ end
22
+
23
+ def test_swap_with_three_args_raises_error
24
+ assert_raises(ArgumentError) do
25
+ convert{ swap(1,2,3) }.to_s
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/text'
3
+
4
+ class TextTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_text_in_convert_without_left_top
8
+ cmd = convert { text 'Foo bar baz.' }
9
+ assert_equal 'convert -draw text \'Foo bar baz.\' miff:-', cmd.to_s
10
+ end
11
+
12
+ def test_text_in_convert_with_left_top
13
+ cmd = convert { text 'Foo bar baz.', left: 7, top: 9 }
14
+ assert_equal 'convert -draw text 7,9 \'Foo bar baz.\' miff:-',
15
+ cmd.to_s
16
+ end
17
+
18
+ def test_text_in_convert_with_top_only
19
+ cmd = convert { text 'Foo bar baz.', top: 9 }
20
+ assert_equal 'convert -draw text \'Foo bar baz.\' miff:-', cmd.to_s
21
+ end
22
+ end
@@ -0,0 +1,53 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/torn_paper_image'
3
+
4
+ class TornPaperImageTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_torn_paper_image_without_block_spread_blur_threshold
8
+ img = torn_paper_image('foo')
9
+ assert_equal 'convert foo ( +clone -virtual-pixel transparent ' +
10
+ '-spread 1 -channel A -blur 0x.7 -threshold 50% ) -blur 0x.7 ' +
11
+ '-compose copy_opacity -composite miff:-', img.to_s
12
+ end
13
+
14
+ def test_torn_paper_image_with_block_spread_blur_threshold
15
+ img = torn_paper_image('foo', spread: 17, blur: '1x4', threshold: 70) do
16
+ image 'tile:granite:'
17
+ append '-brightness-contrast', '38x-33'
18
+ end
19
+
20
+ assert_equal 'convert foo ( tile:granite: -brightness-contrast 38x-33 ) ( '\
21
+ '+clone -virtual-pixel transparent -spread 17 -channel A -blur 1x4 '\
22
+ '-threshold 70% ) -blur 1x4 -compose copy_opacity -composite miff:-',
23
+ img.to_s
24
+ end
25
+
26
+ def test_nested_torn_paper_image
27
+ cmd = convert(to: 'bar') do
28
+ torn_paper_image('foo')
29
+ end
30
+
31
+ assert_equal 'convert foo ( +clone -virtual-pixel transparent ' +
32
+ '-spread 1 -channel A -blur 0x.7 -threshold 50% ) -blur 0x.7 -compose ' +
33
+ 'copy_opacity -composite bar', cmd.to_s
34
+ end
35
+
36
+ def test_nested_torn_paper_image_via_lvar_arg
37
+ img = torn_paper_image('foo')
38
+ cmd = convert(img, to: 'bar')
39
+
40
+ assert_equal 'convert foo ( +clone -virtual-pixel transparent ' +
41
+ '-spread 1 -channel A -blur 0x.7 -threshold 50% ) -blur 0x.7 -compose ' +
42
+ 'copy_opacity -composite bar', cmd.to_s
43
+ end
44
+
45
+ def test_nested_torn_paper_image_via_lvar_in_block
46
+ img = torn_paper_image('foo')
47
+ cmd = convert(to: 'bar') { image(img) }
48
+
49
+ assert_equal 'convert foo ( +clone -virtual-pixel transparent ' +
50
+ '-spread 1 -channel A -blur 0x.7 -threshold 50% ) -blur 0x.7 -compose ' +
51
+ 'copy_opacity -composite bar', cmd.to_s
52
+ end
53
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../test_helper'
2
+ require 'skeptick/sugar/write'
3
+
4
+ class WriteTest < Skeptick::TestCase
5
+ include Skeptick
6
+
7
+ def test_write_in_convert
8
+ cmd = convert('foo') do
9
+ write 'path'
10
+ end
11
+
12
+ assert_equal 'convert foo -write path miff:-', cmd.to_s
13
+ end
14
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skeptick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxim Chernyak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-03 00:00:00.000000000 Z
11
+ date: 2014-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: posix-spawn
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.9.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Thin ImageMagick DSL with smart command composition
42
56
  email:
43
57
  - max@bitsonnet.com
@@ -52,42 +66,47 @@ files:
52
66
  - README.md
53
67
  - Rakefile
54
68
  - lib/skeptick.rb
55
- - lib/skeptick/chain.rb
56
- - lib/skeptick/chain/dsl_context.rb
57
69
  - lib/skeptick/command.rb
58
70
  - lib/skeptick/convert.rb
59
- - lib/skeptick/convert/dsl_context.rb
60
71
  - lib/skeptick/core.rb
72
+ - lib/skeptick/dsl_context.rb
61
73
  - lib/skeptick/error.rb
62
- - lib/skeptick/helper.rb
63
- - lib/skeptick/image.rb
64
- - lib/skeptick/image/dsl_context.rb
65
74
  - lib/skeptick/railtie.rb
66
75
  - lib/skeptick/sugar.rb
67
- - lib/skeptick/sugar/composition.rb
68
- - lib/skeptick/sugar/debugging.rb
69
- - lib/skeptick/sugar/drawing.rb
70
- - lib/skeptick/sugar/edges.rb
71
- - lib/skeptick/sugar/formatting.rb
76
+ - lib/skeptick/sugar/canvas.rb
77
+ - lib/skeptick/sugar/clone.rb
78
+ - lib/skeptick/sugar/compose.rb
79
+ - lib/skeptick/sugar/delete.rb
80
+ - lib/skeptick/sugar/draw.rb
81
+ - lib/skeptick/sugar/font.rb
82
+ - lib/skeptick/sugar/format.rb
72
83
  - lib/skeptick/sugar/geometry.rb
73
- - lib/skeptick/sugar/resizing.rb
74
- - lib/skeptick/sugar/sequence_manipulation.rb
84
+ - lib/skeptick/sugar/resized_image.rb
85
+ - lib/skeptick/sugar/rounded_corners_image.rb
86
+ - lib/skeptick/sugar/swap.rb
87
+ - lib/skeptick/sugar/text.rb
88
+ - lib/skeptick/sugar/torn_paper_image.rb
89
+ - lib/skeptick/sugar/write.rb
75
90
  - lib/skeptick/version.rb
76
91
  - logo.png
77
92
  - logo.rb
78
93
  - refresh_preview.scpt
79
94
  - skeptick.gemspec
80
- - test/chain_test.rb
81
95
  - test/convert_test.rb
82
- - test/image_test.rb
83
- - test/sugar/composition_test.rb
84
- - test/sugar/debugging_test.rb
85
- - test/sugar/drawing_test.rb
86
- - test/sugar/edges_test.rb
87
- - test/sugar/formatting_test.rb
96
+ - test/sugar/canvas_test.rb
97
+ - test/sugar/clone_test.rb
98
+ - test/sugar/compose_test.rb
99
+ - test/sugar/delete_test.rb
100
+ - test/sugar/draw_test.rb
101
+ - test/sugar/font_test.rb
102
+ - test/sugar/format_test.rb
88
103
  - test/sugar/geometry_test.rb
89
- - test/sugar/resizing_test.rb
90
- - test/sugar/sequence_manipulation_test.rb
104
+ - test/sugar/resized_image_test.rb
105
+ - test/sugar/rounded_corners_image_test.rb
106
+ - test/sugar/swap_test.rb
107
+ - test/sugar/text_test.rb
108
+ - test/sugar/torn_paper_image_test.rb
109
+ - test/sugar/write_test.rb
91
110
  - test/test_helper.rb
92
111
  homepage: https://github.com/maxim/skeptick
93
112
  licenses: []
@@ -108,21 +127,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
127
  version: '0'
109
128
  requirements: []
110
129
  rubyforge_project:
111
- rubygems_version: 2.2.2
130
+ rubygems_version: 2.4.5
112
131
  signing_key:
113
132
  specification_version: 4
114
133
  summary: Skeptick doesn't believe in Magick
115
134
  test_files:
116
- - test/chain_test.rb
117
135
  - test/convert_test.rb
118
- - test/image_test.rb
119
- - test/sugar/composition_test.rb
120
- - test/sugar/debugging_test.rb
121
- - test/sugar/drawing_test.rb
122
- - test/sugar/edges_test.rb
123
- - test/sugar/formatting_test.rb
136
+ - test/sugar/canvas_test.rb
137
+ - test/sugar/clone_test.rb
138
+ - test/sugar/compose_test.rb
139
+ - test/sugar/delete_test.rb
140
+ - test/sugar/draw_test.rb
141
+ - test/sugar/font_test.rb
142
+ - test/sugar/format_test.rb
124
143
  - test/sugar/geometry_test.rb
125
- - test/sugar/resizing_test.rb
126
- - test/sugar/sequence_manipulation_test.rb
144
+ - test/sugar/resized_image_test.rb
145
+ - test/sugar/rounded_corners_image_test.rb
146
+ - test/sugar/swap_test.rb
147
+ - test/sugar/text_test.rb
148
+ - test/sugar/torn_paper_image_test.rb
149
+ - test/sugar/write_test.rb
127
150
  - test/test_helper.rb
128
151
  has_rdoc:
@@ -1,55 +0,0 @@
1
- require 'skeptick/helper'
2
- require 'skeptick/convert'
3
- require 'skeptick/chain/dsl_context'
4
- require 'skeptick/command'
5
-
6
- module Skeptick
7
- class Chain
8
- include Command::Executable
9
-
10
- PIPE = 'miff:-'
11
-
12
- def initialize(context, *args, &blk)
13
- options = Helper.extract_options!(args)
14
- @to = options[:to]
15
- @context = context
16
- @block = blk
17
- reset
18
- end
19
-
20
- def convert(*args, &blk)
21
- @executables << Convert.new(@context, *args, &blk)
22
- end
23
-
24
- def piping?
25
- @executables.last && @executables.last.piping?
26
- end
27
-
28
- def process_method_missing(*args, &blk)
29
- @context.send(*args, &blk)
30
- end
31
-
32
- def to_s
33
- process_dsl
34
- @executables.map(&:command).join(' | ')
35
- end
36
-
37
- def inspect
38
- "Skeptick::Chain(#{to_s})"
39
- end
40
-
41
- private
42
- def reset
43
- @executables = []
44
- end
45
-
46
- def process_dsl
47
- reset
48
- DslContext.new(self).instance_eval(&@block)
49
-
50
- if @executables.size > 0 && @to && piping?
51
- @executables.last.destination = @to
52
- end
53
- end
54
- end
55
- end
@@ -1,21 +0,0 @@
1
- module Skeptick
2
- class Chain
3
- class DslContext
4
- def initialize(chain)
5
- @chain = chain
6
- end
7
-
8
- def convert(*args, &blk)
9
- @chain.convert(*args, &blk)
10
- end
11
-
12
- def pipe_or(path)
13
- @chain.piping? ? :pipe : path
14
- end
15
-
16
- def method_missing(*args, &blk)
17
- @chain.process_method_missing(*args, &blk)
18
- end
19
- end
20
- end
21
- end
@@ -1,27 +0,0 @@
1
- module Skeptick
2
- class Convert
3
- class DslContext
4
- def initialize(convert)
5
- @convert = convert
6
- end
7
-
8
- def set(*args)
9
- @convert.set(*args)
10
- end
11
- alias_method :apply, :set
12
- alias_method :with, :set
13
-
14
- def convert(*args, &blk)
15
- @convert.convert(*args, &blk)
16
- end
17
-
18
- def image(obj = nil, &blk)
19
- @convert.image(obj, &blk)
20
- end
21
-
22
- def method_missing(*args, &blk)
23
- @convert.process_method_missing(*args, &blk)
24
- end
25
- end
26
- end
27
- end
@@ -1,26 +0,0 @@
1
- module Skeptick
2
- module Helper
3
- module_function
4
-
5
- def extract_options!(array)
6
- array.last.is_a?(Hash) ? array.pop : {}
7
- end
8
-
9
- def object_to_index_range_list(obj)
10
- case obj
11
- when Integer, String
12
- obj
13
- when Range
14
- "#{obj.min}-#{obj.max}"
15
- when Array
16
- obj.join(',')
17
- else
18
- raise "invalid sequence reference"
19
- end
20
- end
21
-
22
- def process_args(*args)
23
- args.map{ |arg| arg.is_a?(Symbol) ? "-#{arg.to_s}" : arg }.join(' ')
24
- end
25
- end
26
- end
@@ -1,69 +0,0 @@
1
- require 'skeptick/helper'
2
- require 'skeptick/convert'
3
- require 'skeptick/chain'
4
- require 'skeptick/image/dsl_context'
5
-
6
- module Skeptick
7
- class Image
8
- attr_accessor :prepends, :appends
9
-
10
- def initialize(context, obj = nil, &blk)
11
- @context = context
12
- @obj = obj || blk
13
- reset
14
- end
15
-
16
- def set(*args)
17
- @prepends << Helper.process_args(*args)
18
- end
19
-
20
- def apply(*args)
21
- @appends << Helper.process_args(*args)
22
- end
23
-
24
- def image(obj, &blk)
25
- @image = Image.new(@context, obj, &blk)
26
- end
27
-
28
- def convert(*args, &blk)
29
- @image = Convert.new(@context, *args, &blk).become_inner
30
- end
31
-
32
- def process_method_missing(*args, &blk)
33
- @context.send(*args, &blk)
34
- end
35
-
36
- def to_s
37
- parts.join(' ')
38
- end
39
-
40
- def inspect
41
- "Skeptick::Image(#{to_s})"
42
- end
43
-
44
- def parts
45
- case @obj
46
- when :pipe then [ Chain::PIPE ]
47
- when Convert then @obj.become_inner.parts
48
- when Image then @obj.parts
49
- when Array then @obj
50
- when Proc then build_parts
51
- else [ @obj ]
52
- end
53
- end
54
-
55
- private
56
-
57
- def build_parts
58
- reset
59
- DslContext.new(self).instance_eval(&@obj)
60
- [*@prepends, @image, *@appends].compact
61
- end
62
-
63
- def reset
64
- @image = nil
65
- @prepends = []
66
- @appends = []
67
- end
68
- end
69
- end