Sha256: a3acf3b452cc7d7753e3d3870b691500eab1def343ad48f4c53de9818fb5753b

Contents?: true

Size: 960 Bytes

Versions: 2

Compression:

Stored size: 960 Bytes

Contents

require 'listen'

module RevealCK
  module Commands
    # The idea of listening for file system changes and then
    # rebuilding slides.
    class ListenToRebuildSlides
      attr_reader :ui, :rebuild_method
      def initialize(ui, &block)
        @ui = ui
        @rebuild_method = block
      end

      def run
        ::Listen.to('.', ignore: ignored_files_regex) do |mod, add, del|
          message_and_rebuild(mod, add, del)
        end.start
      end

      private

      def message_about_files(files, message)
        return if files.empty?

        file_names = files.join(', ')
        ui.message("#{message}: #{file_names}", :rebuild)
      end

      def ignored_files_regex
        %r{^slides/.+$}
      end

      def message_and_rebuild(mod, add, del)
        message_about_files(mod, 'Modified')
        message_about_files(add, 'Added')
        message_about_files(del, 'Deleted')
        rebuild_method.call
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
reveal-ck-3.9.0 lib/reveal-ck/commands/listen_to_rebuild_slides.rb
reveal-ck-3.8.1 lib/reveal-ck/commands/listen_to_rebuild_slides.rb