Class: WebResourceBundler::Filters::ImageEncodeFilter::Filter

Inherits:
BaseFilter
  • Object
show all
Defined in:
lib/web_resource_bundler/filters/image_encode_filter.rb

Constant Summary collapse

FILE_PREFIX =
'base64_'
IE_FILE_PREFIX =
'base64_ie_'
MHTML_FILE_PREFIX =
'mhtml_'

Instance Attribute Summary

Attributes inherited from BaseFilter

#settings

Instance Method Summary collapse

Methods inherited from BaseFilter

#apply

Constructor Details

#initialize(settings, file_manager) ⇒ Filter

Returns a new instance of Filter.



9
10
11
12
# File 'lib/web_resource_bundler/filters/image_encode_filter.rb', line 9

def initialize(settings, file_manager)
  super settings, file_manager
  @generator = CssGenerator.new(@settings, @file_manager)
end

Instance Method Details

#apply!(block_data) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/web_resource_bundler/filters/image_encode_filter.rb', line 19

def apply!(block_data)
  added_files = [] 
  block_data.styles.each do |file|
    #creating new css file with content for IE
    ie_css_file = WebResourceBundler::ResourceFile.new_ie_css_file(encoded_filepath_for_ie(file.path), file.content.dup)
    #creating new mhtml file with images encoded in base64
    mhtml_file = WebResourceBundler::ResourceFile.new_mhtml_file(mhtml_filepath(file.path), "")
    file.path = encoded_filepath(file.path)
    #we've created separate file for IE so current file should be marked as CSS only
    file.types = [WebResourceBundler::ResourceFileType::CSS]
    unless file.content.empty?
      @generator.encode_images!(file.content)
      #getting images to construct mhtml file
      images = @generator.encode_images_for_ie!(ie_css_file.content, mhtml_file.path)
      mhtml_file.content = @generator.construct_mhtml_content(images)
    end
    added_files << ie_css_file
    added_files << mhtml_file
  end
  block_data.files += added_files 
  block_data
end

#encoded_filepath(base_file_path) ⇒ Object

path of a new file with images encoded



43
44
45
# File 'lib/web_resource_bundler/filters/image_encode_filter.rb', line 43

def encoded_filepath(base_file_path)
  File.join(@settings[:cache_dir], FILE_PREFIX + File.basename(base_file_path))
end

#encoded_filepath_for_ie(base_file_path) ⇒ Object

path of a new file for IE with images encoded



48
49
50
# File 'lib/web_resource_bundler/filters/image_encode_filter.rb', line 48

def encoded_filepath_for_ie(base_file_path)
  File.join(@settings[:cache_dir], IE_FILE_PREFIX + File.basename(base_file_path))
end

#mhtml_filepath(base_file_path) ⇒ Object

filepath of mhtml file for IE



53
54
55
# File 'lib/web_resource_bundler/filters/image_encode_filter.rb', line 53

def mhtml_filepath(base_file_path)
  File.join(@settings[:cache_dir], MHTML_FILE_PREFIX + File.basename(base_file_path, ".*") + '.mhtml') 
end

#set_settings(settings) ⇒ Object



14
15
16
17
# File 'lib/web_resource_bundler/filters/image_encode_filter.rb', line 14

def set_settings(settings)
  super settings
  @generator.set_settings(settings)
end