Class: LadyJosephine::ImageUploader
- Inherits:
-
BaseUploader
- Object
- CarrierWave::Uploader::Base
- BaseUploader
- LadyJosephine::ImageUploader
show all
- Defined in:
- app/uploader/lady_josephine/image_uploader.rb
Instance Method Summary
collapse
#auto_orient, #compress_to_fill, #compress_to_fit, #store_dir, #strip
Instance Method Details
4
5
6
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 4
def add_metadata(image)
@version_metadata = metadata_entry(image[:dimensions], image[:size])
end
|
51
52
53
54
55
56
57
58
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 51
def collect_metadata
if version_name.nil?
original_filename.present? ? collect_metadata_from_upload : collect_metadata_from_model
else
model.send(mounted_as).metadata
end
end
|
76
77
78
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 76
def collect_metadata_from_cache(json_data)
HashWithIndifferentAccess.new(JSON.parse(json_data))
end
|
67
68
69
70
71
72
73
74
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 67
def collect_metadata_from_model
metadata_column = "#{mounted_as}_metadata"
if model.respond_to?(metadata_column) && (json_data = model.send metadata_column).present?
collect_metadata_from_cache(json_data)
else
collect_metadata_from_version_names
end
end
|
60
61
62
63
64
65
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 60
def collect_metadata_from_upload
versions.inject(HashWithIndifferentAccess.new) do |metadata, (key,version_data)|
metadata[key] = version_data.version_metadata
metadata
end
end
|
80
81
82
83
84
85
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 80
def collect_metadata_from_version_names
versions.inject(HashWithIndifferentAccess.new) do |metadata, (key,version_data)|
metadata[key] = dummy_version_metadata(key)
metadata
end
end
|
25
26
27
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 25
def dummy_version_metadata(version_name)
metadata_entry([width_from_version_name(version_name),width_from_version_name(version_name)],1000)
end
|
#dynamic_version(version) ⇒ Object
113
114
115
116
117
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 113
def dynamic_version(version)
LadyJosephine.image_sizes[version].each do |method, args|
self.send method, *args
end
end
|
#extension_white_list ⇒ Object
119
120
121
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 119
def extension_white_list
%w(jpg jpeg gif png)
end
|
47
48
49
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 47
def metadata
@metadata ||= collect_metadata
end
|
#metadata_entry(dimensions, size) ⇒ Object
8
9
10
11
12
13
14
15
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 8
def metadata_entry(dimensions, size)
data = HashWithIndifferentAccess.new
data['width'] = dimensions[0]
data['height'] = dimensions[1]
data['size'] = size / 1000
data['ratio'] = ratio data['width'], data['height']
data
end
|
#ratio(width, height) ⇒ Object
17
18
19
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 17
def ratio(width, height)
(width.to_f / height.to_f).round(2)
end
|
#srcset(options = {}) ⇒ Object
33
34
35
36
37
38
39
40
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 33
def srcset(options = {})
src_versions = [options[:only]].reject(&:blank?).flatten.empty? ? versions.keys{|version| version =~ /^w\d+$/ } : [options[:only]].flatten
src_versions = src_versions - [options[:except]].flatten
src_versions.collect do |version, version_data|
srcset_string url(version), metadata[version]['width']
end.reject(&:blank?).join(", ")
end
|
#srcset_string(url, width) ⇒ Object
29
30
31
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 29
def srcset_string(url, width)
"#{url} #{width}w"
end
|
21
22
23
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 21
def version_metadata
@version_metadata || dummy_version_metadata(version_name)
end
|
#width_from_version_name(version_string) ⇒ Object
42
43
44
|
# File 'app/uploader/lady_josephine/image_uploader.rb', line 42
def width_from_version_name(version_string)
version_string.to_s.sub(/\D*(\d+)\D*/,'\1').to_i
end
|