Sha256: 640b91723d61b17fee642b7cfa1ad2b77ce907b2f3ce1950d2fd693a923e015d

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

Thread.abort_on_exception = true

module Slinky
  class Listener
    def initialize manifest, livereload
      @manifest = manifest
      @livereload = livereload
    end

    def run
      listener = Listen.to(@manifest.dir) do |mod, add, rem|
        handle_mod(mod) if mod.size > 0
        handle_add(add) if add.size > 0

        EM.next_tick {
          files = (mod + add + rem).map{|path|
            mpath = Pathname.new(path)\
              .relative_path_from(Pathname.new(@manifest.dir).expand_path).to_s
            mf = @manifest.find_by_path(mpath, false).first
            if mf
              mf.output_path
            else
              path
            end
          }
          @livereload.reload_browser(files)
        } if @livereload

        handle_rem(rem) if rem.size > 0        
      end
      listener.start
      listener
    end

    def handle_mod files
    end
    
    def handle_add files
      EM.next_tick {
        begin
          @manifest.add_all_by_path files
        rescue
        end
      }
    end

    def handle_rem files
      EM.next_tick {
        begin
          @manifest.remove_all_by_path files
        rescue
        end
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slinky-0.7.1 lib/slinky/listener.rb