voltron-crop 0.1.3
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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +8 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +14 -0
- data/LICENSE.txt +21 -0
- data/README.md +102 -0
- data/Rakefile +6 -0
- data/app/assets/javascripts/cropit.js +1234 -0
- data/app/assets/javascripts/simple-slider.js +363 -0
- data/app/assets/javascripts/voltron-crop.js +233 -0
- data/app/assets/stylesheets/voltron-crop.scss +98 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/generators/voltron/crop/install/assets_generator.rb +25 -0
- data/lib/generators/voltron/crop/install_generator.rb +39 -0
- data/lib/voltron/config/crop.rb +18 -0
- data/lib/voltron/crop.rb +16 -0
- data/lib/voltron/crop/action_view/field.rb +28 -0
- data/lib/voltron/crop/active_record/base.rb +52 -0
- data/lib/voltron/crop/engine.rb +17 -0
- data/lib/voltron/crop/version.rb +5 -0
- data/voltron-crop.gemspec +33 -0
- metadata +221 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
$zoom-height: 30px;
|
2
|
+
$dragger-size: 14px;
|
3
|
+
$dragger-color: #234051;
|
4
|
+
$track-height: 3px;
|
5
|
+
$track-color: #CCCCCC;
|
6
|
+
|
7
|
+
.zoom-container {
|
8
|
+
position: relative;
|
9
|
+
.icon-zoom-out {
|
10
|
+
float: left;
|
11
|
+
color: #000;
|
12
|
+
}
|
13
|
+
.icon-zoom-in {
|
14
|
+
float: right;
|
15
|
+
color: #000;
|
16
|
+
}
|
17
|
+
.slider-container {
|
18
|
+
position: absolute;
|
19
|
+
width: 100%;
|
20
|
+
}
|
21
|
+
.zoom-icon {
|
22
|
+
cursor: pointer;
|
23
|
+
background: none;
|
24
|
+
border: none;
|
25
|
+
outline: none;
|
26
|
+
i {
|
27
|
+
width: 16px;
|
28
|
+
height: 16px;
|
29
|
+
color: #CCCCCC;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
.zoom-out {
|
33
|
+
position: relative;
|
34
|
+
z-index: 101;
|
35
|
+
float: left;
|
36
|
+
}
|
37
|
+
.zoom-in {
|
38
|
+
position: relative;
|
39
|
+
z-index: 101;
|
40
|
+
float: right;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
.slider {
|
46
|
+
height: $zoom-height;
|
47
|
+
z-index: 100;
|
48
|
+
.dragger {
|
49
|
+
border-radius: 50%;
|
50
|
+
background: $dragger-color;
|
51
|
+
width: $dragger-size;
|
52
|
+
height: $dragger-size;
|
53
|
+
}
|
54
|
+
.track {
|
55
|
+
top: 0;
|
56
|
+
padding: ($zoom-height / 2) 0;
|
57
|
+
&:after {
|
58
|
+
content: " ";
|
59
|
+
position: absolute;
|
60
|
+
background: $track-color;
|
61
|
+
height: $track-height;
|
62
|
+
width: 100%;
|
63
|
+
margin-top: $track-height / -2;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
.cropit-container {
|
69
|
+
display: inline-block;
|
70
|
+
*zoom: 1;
|
71
|
+
|
72
|
+
&:before, &:after {
|
73
|
+
content: " ";
|
74
|
+
display: table;
|
75
|
+
}
|
76
|
+
|
77
|
+
&:after {
|
78
|
+
clear: both;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
.cropit-preview {
|
83
|
+
cursor: move;
|
84
|
+
}
|
85
|
+
|
86
|
+
.cropit-preview-background-container {
|
87
|
+
overflow: hidden;
|
88
|
+
}
|
89
|
+
|
90
|
+
.cropit-preview-background {
|
91
|
+
transition: opacity 600ms;
|
92
|
+
cursor: move;
|
93
|
+
opacity: .4;
|
94
|
+
}
|
95
|
+
|
96
|
+
.cropit-zoom {
|
97
|
+
position: relative;
|
98
|
+
}
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "voltron/crop"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Voltron
|
2
|
+
module Crop
|
3
|
+
module Generators
|
4
|
+
module Install
|
5
|
+
class AssetsGenerator < Rails::Generators::Base
|
6
|
+
|
7
|
+
source_root File.expand_path('../../../../../../', __FILE__)
|
8
|
+
|
9
|
+
desc 'Install Voltron Crop assets'
|
10
|
+
|
11
|
+
def copy_javascripts_assets
|
12
|
+
copy_file 'app/assets/javascripts/voltron-crop.js', Rails.root.join('app', 'assets', 'javascripts', 'voltron-crop.js')
|
13
|
+
copy_file 'app/assets/javascripts/cropit.js', Rails.root.join('app', 'assets', 'javascripts', 'cropit.js')
|
14
|
+
copy_file 'app/assets/javascripts/simple-slider.js', Rails.root.join('app', 'assets', 'javascripts', 'simple-slider.js')
|
15
|
+
end
|
16
|
+
|
17
|
+
def copy_stylesheets_assets
|
18
|
+
copy_file 'app/assets/stylesheets/voltron-crop.scss', Rails.root.join('app', 'assets', 'stylesheets', 'voltron-crop.scss')
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Voltron
|
2
|
+
module Crop
|
3
|
+
module Generators
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
|
6
|
+
desc 'Add Voltron Crop initializer'
|
7
|
+
|
8
|
+
def inject_initializer
|
9
|
+
|
10
|
+
voltron_initialzer_path = Rails.root.join('config', 'initializers', 'voltron.rb')
|
11
|
+
|
12
|
+
unless File.exist? voltron_initialzer_path
|
13
|
+
unless system("cd #{Rails.root.to_s} && rails generate voltron:install")
|
14
|
+
puts 'Voltron initializer does not exist. Please ensure you have the \'voltron\' gem installed and run `rails g voltron:install` to create it'
|
15
|
+
return false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
current_initiailzer = File.read voltron_initialzer_path
|
20
|
+
|
21
|
+
unless current_initiailzer.match(Regexp.new(/# === Voltron Crop Configuration ===/))
|
22
|
+
inject_into_file(voltron_initialzer_path, after: "Voltron.setup do |config|\n") do
|
23
|
+
<<-CONTENT
|
24
|
+
|
25
|
+
# === Voltron Crop Configuration ===
|
26
|
+
|
27
|
+
# The minimum width of the cropped image. If the cropped image width is smaller than this it will be scaled up automatically
|
28
|
+
# config.crop.min_width = 300
|
29
|
+
|
30
|
+
# The minimum height of the cropped image. If the cropped image height is smaller than this it will be scaled up automatically
|
31
|
+
# config.crop.min_height = 300
|
32
|
+
CONTENT
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/voltron/crop.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'voltron'
|
2
|
+
require 'carrierwave'
|
3
|
+
require 'voltron/config/crop'
|
4
|
+
require 'voltron/crop/version'
|
5
|
+
require 'voltron/crop/action_view/field'
|
6
|
+
require 'voltron/crop/active_record/base'
|
7
|
+
|
8
|
+
module Voltron
|
9
|
+
module Crop
|
10
|
+
|
11
|
+
# Nothing needed here for now
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'voltron/crop/engine' if defined?(Rails)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Voltron
|
2
|
+
module Crop
|
3
|
+
module Field
|
4
|
+
|
5
|
+
def crop_field(method, options={})
|
6
|
+
@method = method
|
7
|
+
@options = options.deep_symbolize_keys
|
8
|
+
|
9
|
+
prepare
|
10
|
+
file_field method, @options
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def prepare
|
16
|
+
@options[:data] ||= {}
|
17
|
+
@options[:data].merge!({
|
18
|
+
crop_image: @options.delete(:image) || @object.send(@method).try(:url),
|
19
|
+
crop_cache: @object.send("#{@method}_cache"),
|
20
|
+
crop_x: @object.send("#{@method}_x"),
|
21
|
+
crop_y: @object.send("#{@method}_y"),
|
22
|
+
crop_zoom: @object.send("#{@method}_zoom")
|
23
|
+
})
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Voltron
|
2
|
+
module Crop
|
3
|
+
module Base
|
4
|
+
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
|
9
|
+
def mount_uploader(*args)
|
10
|
+
super *args
|
11
|
+
|
12
|
+
column = args.first.to_sym
|
13
|
+
|
14
|
+
attr_accessor "#{column}_x", "#{column}_y", "#{column}_w", "#{column}_h", "#{column}_zoom"
|
15
|
+
|
16
|
+
after_validation do
|
17
|
+
upload = send(column)
|
18
|
+
|
19
|
+
if errors.empty? && upload.present?
|
20
|
+
# Create a temp file to store the newly cropped image
|
21
|
+
to = Tempfile.new([column.to_s, File.extname(upload.path)])
|
22
|
+
|
23
|
+
dimensions = [send("#{column}_w"), send("#{column}_w")].join('x')
|
24
|
+
coordinates = [send("#{column}_x"), send("#{column}_y")].join('+')
|
25
|
+
|
26
|
+
# Crop the image, scale up if it's smaller than the required crop size
|
27
|
+
img = ::MiniMagick::Image.new(upload.path)
|
28
|
+
img.crop("#{dimensions}+#{coordinates}")
|
29
|
+
if img.width < Voltron.config.crop.min_width || img.height < Voltron.config.crop.min_height
|
30
|
+
img.resize "#{Voltron.config.crop.min_width}x#{Voltron.config.crop.min_height}"
|
31
|
+
end
|
32
|
+
img.write to.path
|
33
|
+
to.close
|
34
|
+
|
35
|
+
input_name = ActionView::Helpers::Tags::Base.new(ActiveModel::Naming.param_key(self), column, nil).send(:tag_name)
|
36
|
+
|
37
|
+
file = ActionDispatch::Http::UploadedFile.new({
|
38
|
+
type: upload.content_type,
|
39
|
+
filename: upload.file.original_filename,
|
40
|
+
head: "Content-Disposition: form-data; name=\"#{input_name}\"; filename=\"#{upload.filename}\"\r\nContent-Type: #{upload.content_type}\r\n",
|
41
|
+
tempfile: to
|
42
|
+
})
|
43
|
+
|
44
|
+
send("#{column}=", file)
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Voltron
|
2
|
+
module Crop
|
3
|
+
class Engine < Rails::Engine
|
4
|
+
|
5
|
+
isolate_namespace Voltron
|
6
|
+
|
7
|
+
initializer "voltron.crop.initialize" do
|
8
|
+
::ActionView::Helpers::FormBuilder.send :include, ::Voltron::Crop::Field
|
9
|
+
|
10
|
+
ActiveSupport.on_load :active_record do
|
11
|
+
::ActiveRecord::Base.send :include, ::Voltron::Crop::Base
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'voltron/crop/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'voltron-crop'
|
8
|
+
spec.version = Voltron::Crop::VERSION
|
9
|
+
spec.authors = ['Eric Hainer']
|
10
|
+
spec.email = ['eric@commercekitchen.com']
|
11
|
+
|
12
|
+
spec.summary = %q{Adds logic to crop images}
|
13
|
+
spec.homepage = 'https://github.com/ehainer/voltron-crop'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.bindir = 'exe'
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'rails', '>= 4.2'
|
22
|
+
spec.add_dependency 'voltron', '>= 0.2.5'
|
23
|
+
spec.add_dependency 'carrierwave', '~> 1.0'
|
24
|
+
spec.add_dependency 'sass-rails', '>= 5.0'
|
25
|
+
spec.add_dependency 'mini_magick', '>= 4.3.0'
|
26
|
+
|
27
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
30
|
+
spec.add_development_dependency 'rspec-rails', '>= 3.4'
|
31
|
+
spec.add_development_dependency 'factory_girl_rails', '~> 4.0'
|
32
|
+
spec.add_development_dependency 'sqlite3', '>= 1.2'
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: voltron-crop
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eric Hainer
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-06-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: voltron
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.2.5
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.2.5
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: carrierwave
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sass-rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mini_magick
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 4.3.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 4.3.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.12'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.12'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '10.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '10.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec-rails
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.4'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.4'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: factory_girl_rails
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '4.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '4.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: sqlite3
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '1.2'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '1.2'
|
167
|
+
description:
|
168
|
+
email:
|
169
|
+
- eric@commercekitchen.com
|
170
|
+
executables: []
|
171
|
+
extensions: []
|
172
|
+
extra_rdoc_files: []
|
173
|
+
files:
|
174
|
+
- ".gitignore"
|
175
|
+
- ".rspec"
|
176
|
+
- ".travis.yml"
|
177
|
+
- CODE_OF_CONDUCT.md
|
178
|
+
- Gemfile
|
179
|
+
- LICENSE.txt
|
180
|
+
- README.md
|
181
|
+
- Rakefile
|
182
|
+
- app/assets/javascripts/cropit.js
|
183
|
+
- app/assets/javascripts/simple-slider.js
|
184
|
+
- app/assets/javascripts/voltron-crop.js
|
185
|
+
- app/assets/stylesheets/voltron-crop.scss
|
186
|
+
- bin/console
|
187
|
+
- bin/setup
|
188
|
+
- lib/generators/voltron/crop/install/assets_generator.rb
|
189
|
+
- lib/generators/voltron/crop/install_generator.rb
|
190
|
+
- lib/voltron/config/crop.rb
|
191
|
+
- lib/voltron/crop.rb
|
192
|
+
- lib/voltron/crop/action_view/field.rb
|
193
|
+
- lib/voltron/crop/active_record/base.rb
|
194
|
+
- lib/voltron/crop/engine.rb
|
195
|
+
- lib/voltron/crop/version.rb
|
196
|
+
- voltron-crop.gemspec
|
197
|
+
homepage: https://github.com/ehainer/voltron-crop
|
198
|
+
licenses:
|
199
|
+
- MIT
|
200
|
+
metadata: {}
|
201
|
+
post_install_message:
|
202
|
+
rdoc_options: []
|
203
|
+
require_paths:
|
204
|
+
- lib
|
205
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0'
|
210
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
requirements: []
|
216
|
+
rubyforge_project:
|
217
|
+
rubygems_version: 2.7.6
|
218
|
+
signing_key:
|
219
|
+
specification_version: 4
|
220
|
+
summary: Adds logic to crop images
|
221
|
+
test_files: []
|