Sha256: 1cd999c1eb477482ecc74e056f9691036152ac2e6635c66caf96296afee0b790

Contents?: true

Size: 1.49 KB

Versions: 26

Compression:

Stored size: 1.49 KB

Contents

require "tinymce/rails/asset_manifest"

module TinyMCE
  module Rails
    class AssetInstaller
      def initialize(assets, target, manifest_path)
        @assets = assets
        @target = target
        @manifest_path = manifest_path || target
      end
      
      def install
        cleanup_assets
        copy_assets
        append_to_manifest
        
        manifest.write
      end
    
    private
      def manifest
        @manifest ||= AssetManifest.load(@manifest_path)
      end
      
      def cleanup_assets
        manifest.each(/^tinymce\//) do |asset|
          manifest.remove(asset) if index_asset?(asset)
          
          manifest.remove_digest(asset) do |src, dest|
            move_asset(src, dest)
          end
        end
      end
      
      def copy_assets
        FileUtils.cp_r(@assets, @target, :preserve => true)
      end
      
      def append_to_manifest
        asset_files.each do |file|
          manifest.append(logical_path(file), file)
        end
      end
      
      def asset_files
        Pathname.glob("#{@assets}/**/*").select(&:file?)
      end
      
      def logical_path(file)
        file.relative_path_from(@assets.parent).to_s
      end
      
      def move_asset(src, dest)
        src = File.join(@target, src)
        dest = File.join(@target, dest)
        
        FileUtils.mv(src, dest, :force => true) if src != dest && File.exists?(src)
      end
      
      def index_asset?(asset)
        asset =~ /\/index\.js$/
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
tinymce-rails-4.1.6 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.1.5 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.1.4 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.1.3 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.1.2 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.1.0 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.28.2 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.28.1 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.28 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.26 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.19 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.18 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.16 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.12 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.11 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.10 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.8 lib/tinymce/rails/asset_installer.rb
tinymce-rails-3.5.9 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.7 lib/tinymce/rails/asset_installer.rb
tinymce-rails-4.0.6 lib/tinymce/rails/asset_installer.rb