Sha256: 3dbed842f4976e92db1863c8e122d67d8c257f5b02dbfab84e6c8b860d08dc91

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

module WebResourceBundler
  class BlockData
    attr_accessor :files, :inline_block, :condition, :child_blocks

    def initialize(condition = "")
      @inline_block = ""
      @files        = []
      @condition    = condition
      @child_blocks = []
    end

    def styles
      @files.select { |f| f.type[:ext] == 'css' } 
    end

    def scripts
      @files.select { |f| f.type[:ext] == 'js'}
    end

    def base64_styles
      @files.select { |f| WebResourceBundler::ResourceFileType::CSS_TYPES.include?(f.type)}
    end

    def mhtml_styles
      @files.select { |f| WebResourceBundler::ResourceFileType::MHTML_TYPES.include?(f.type)}
    end

    def clone
      clon              = self.dup 
      clon.files        = self.files.map {|f| f.clone}
      clon.child_blocks = clon.child_blocks.any? ? self.child_blocks.map { |block| block.clone } : []
      clon
    end

    def all_files
      result = self.files
      self.child_blocks.each do |child|
        result += child.all_files
      end
      result
    end

    def self.all_childs(block_data)
      result = []
      result << block_data
      block_data.child_blocks.each do |child|
        result += BlockData.all_childs(child)
      end
      result
    end

    def apply_filters(filters)
      if filters.any?
        filters.each do |filter|
          items = BlockData.all_childs(self)
          items.each { |block_data| filter.apply!(block_data) } 
        end      
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
web_resource_bundler-0.0.23 lib/web_resource_bundler/content_management/block_data.rb
web_resource_bundler-0.0.22 lib/web_resource_bundler/content_management/block_data.rb
web_resource_bundler-0.0.21 lib/web_resource_bundler/content_management/block_data.rb