visionmedia-bind 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +12 -0
- data/Manifest +11 -3
- data/README.rdoc +1 -1
- data/Rakefile +2 -2
- data/Todo.rdoc +2 -2
- data/bin/rbind +15 -18
- data/bind.gemspec +7 -7
- data/examples/globbing.rb +7 -0
- data/examples/log_changes.rb +3 -3
- data/examples/refresh_browsers.rb +4 -2
- data/examples/style.css +2 -1
- data/lib/bind/actions.rb +0 -1
- data/lib/bind/command_helpers.rb +4 -1
- data/lib/bind/listener.rb +31 -9
- data/lib/bind/version.rb +1 -4
- data/spec/bind_listener_spec.rb +26 -4
- data/spec/fixtures/assets/bar.css +0 -0
- data/spec/fixtures/assets/foo.css +0 -0
- data/spec/fixtures/assets/jquery.js +0 -0
- data/spec/fixtures/assets/js/app.js +0 -0
- data/spec/fixtures/assets/js/test.js +0 -0
- data/spec/spec_helper.rb +5 -1
- metadata +14 -7
- data/examples/refresh_browsers_haml.rb +0 -10
- data/examples/style.sass +0 -2
- data/lib/bind/actions/refresh_browsers_haml.rb +0 -40
data/History.rdoc
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
|
2
|
+
=== 0.2.0 / 2009-03-09
|
3
|
+
|
4
|
+
* Added gitignore
|
5
|
+
* Added support for multiple actions
|
6
|
+
* Added example for multiple actions
|
7
|
+
* Added --eval to common options
|
8
|
+
* Added spec runner / globbing example
|
9
|
+
* Added #expand_dirs
|
10
|
+
* Changed devel dependency visionmedia-commander >=2.5.6
|
11
|
+
* Changed option :files to :paths
|
12
|
+
* Removed RefreshBrowsersHaml, getting to specific to be helpful
|
13
|
+
|
2
14
|
=== 0.1.0 / 2009-03-03
|
3
15
|
|
4
16
|
* Changed exec name bind to rbind to avoid collision
|
data/Manifest
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
bin/rbind
|
2
2
|
bind.gemspec
|
3
3
|
examples/demo.html
|
4
|
+
examples/globbing.rb
|
4
5
|
examples/log_changes.rb
|
5
6
|
examples/refresh_browsers.rb
|
6
|
-
examples/refresh_browsers_haml.rb
|
7
7
|
examples/style.css
|
8
|
-
examples/style.sass
|
9
8
|
History.rdoc
|
10
9
|
lib/bind/actions/refresh_browsers.rb
|
11
|
-
lib/bind/actions/refresh_browsers_haml.rb
|
12
10
|
lib/bind/actions.rb
|
13
11
|
lib/bind/command_helpers.rb
|
14
12
|
lib/bind/listener.rb
|
@@ -18,10 +16,20 @@ Manifest
|
|
18
16
|
Rakefile
|
19
17
|
README.rdoc
|
20
18
|
spec/bind_listener_spec.rb
|
19
|
+
spec/fixtures/assets/bar.css
|
20
|
+
spec/fixtures/assets/foo.css
|
21
|
+
spec/fixtures/assets/jquery.js
|
22
|
+
spec/fixtures/assets/js/app.js
|
23
|
+
spec/fixtures/assets/js/test.js
|
21
24
|
spec/fixtures/style.css
|
22
25
|
spec/spec_helper.rb
|
23
26
|
tasks/docs.rake
|
24
27
|
tasks/gemspec.rake
|
25
28
|
tasks/release.rake
|
26
29
|
tasks/spec.rake
|
30
|
+
test/assets/javascripts/app/foo.js
|
31
|
+
test/assets/javascripts/jquery.js
|
32
|
+
test/assets/stylesheets/foo.css
|
33
|
+
test/assets/stylesheets/style.css
|
34
|
+
test/stylesheets/style.sass
|
27
35
|
Todo.rdoc
|
data/README.rdoc
CHANGED
@@ -32,7 +32,7 @@ sass file is modified, it will be compiled to '..' (up a directory) preceding th
|
|
32
32
|
|
33
33
|
path = 'http://localhost'
|
34
34
|
action = Bind::Actions::RefreshBrowsersHaml.new path, '..', 'Safari', 'Firefox'
|
35
|
-
listener = Bind::Listener.new :interval => 1, :debug => $stdout, :action => action, :
|
35
|
+
listener = Bind::Listener.new :interval => 1, :debug => $stdout, :action => action, :paths => Dir['*.haml'] + Dir['*.sass']
|
36
36
|
listener.run!
|
37
37
|
|
38
38
|
== License:
|
data/Rakefile
CHANGED
@@ -4,13 +4,13 @@ require 'rake'
|
|
4
4
|
require 'echoe'
|
5
5
|
require './lib/bind.rb'
|
6
6
|
|
7
|
-
Echoe.new("bind", Bind::VERSION
|
7
|
+
Echoe.new("bind", Bind::VERSION) do |p|
|
8
8
|
p.author = "TJ Holowaychuk"
|
9
9
|
p.email = "tj@vision-media.ca"
|
10
10
|
p.summary = "bind actions to filesystem events"
|
11
11
|
p.url = "http://github.com/visionmedia/bind"
|
12
12
|
p.runtime_dependencies = []
|
13
|
-
p.runtime_dependencies << 'visionmedia-commander >=2.
|
13
|
+
p.runtime_dependencies << 'visionmedia-commander >=2.5.6'
|
14
14
|
end
|
15
15
|
|
16
16
|
Dir['tasks/**/*.rake'].sort.each { |lib| load lib }
|
data/Todo.rdoc
CHANGED
data/bin/rbind
CHANGED
@@ -11,19 +11,16 @@ program :description, 'Bind actions to filesystem events'
|
|
11
11
|
|
12
12
|
command :to do |c|
|
13
13
|
set_common_options c
|
14
|
-
c.syntax = 'rbind to <
|
15
|
-
c.summary = 'Bind to
|
16
|
-
c.description = 'Bind to modification of a file or
|
17
|
-
c.example 'Bind to a single file, logging its path when changed', "
|
18
|
-
c.
|
14
|
+
c.syntax = 'rbind to <path> [path ...] [options] '
|
15
|
+
c.summary = 'Bind to a file system event'
|
16
|
+
c.description = 'Bind to modification of a file or files within a directory.'
|
17
|
+
c.example 'Bind to a single file, logging its path when changed', "rbind to style.css -e 'puts file.path'"
|
18
|
+
c.example 'Bind to a file, and a directory of files', "rbind to stylesheets style.css -e 'puts file.path'"
|
19
|
+
c.example 'Run specs when ruby files are modified', "rbind to lib/**/*.rb -e 'system \"rake spec\"'"
|
19
20
|
c.when_called do |args, options|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
else
|
24
|
-
abort 'invalid option. --eval switch is required in order to perform any action on the bound file(s)'
|
25
|
-
end
|
26
|
-
options.files = args
|
21
|
+
abort 'invalid option. --eval switch is required in order to perform any action on the bound file(s)' unless options.eval
|
22
|
+
common_options options
|
23
|
+
options.paths = args
|
27
24
|
listener(options).run!
|
28
25
|
end
|
29
26
|
end
|
@@ -32,17 +29,17 @@ command :refresh do |c|
|
|
32
29
|
set_common_options c
|
33
30
|
c.syntax = 'rbind refresh <uri> [options]'
|
34
31
|
c.summary = 'Bind to <uri>, refreshing browsers.'
|
35
|
-
c.description = 'Bind to <uri>, refreshing browsers when the
|
32
|
+
c.description = 'Bind to <uri>, refreshing browsers when the paths you are watching change.'
|
36
33
|
c.example = 'Bind a few css files for quick editing in multiple browsers', 'bind refresh http://localhost/page --files style.css,reset.css --browsers Safari,Firefox'
|
37
34
|
c.example = 'Bind local static html (no scheme)', 'bind refresh examples/demo.html -f style.css -b Safari'
|
38
35
|
c.option '-b', '--browsers BROWSERS', Array, 'List of browsers you wish to refresh. Defaults to Safari'
|
39
|
-
c.option '-
|
36
|
+
c.option '-p', '--paths PATHS', Array, 'List of files, directories, or globs to bind to'
|
40
37
|
c.when_called do |args, options|
|
41
|
-
|
42
|
-
|
38
|
+
common_options options
|
39
|
+
uri = expand_path args.shift
|
43
40
|
browsers = options.browsers || ['Safari']
|
44
|
-
options.
|
45
|
-
abort 'invalid option. --
|
41
|
+
options.actions << Bind::Actions::RefreshBrowsers.new(uri, *browsers)
|
42
|
+
abort 'invalid option. --paths switch is required in order to bind' if options.paths.nil?
|
46
43
|
listener(options).run!
|
47
44
|
end
|
48
45
|
end
|
data/bind.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{bind}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.2.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["TJ Holowaychuk"]
|
9
|
-
s.date = %q{2009-03-
|
9
|
+
s.date = %q{2009-03-09}
|
10
10
|
s.default_executable = %q{rbind}
|
11
11
|
s.description = %q{bind actions to filesystem events}
|
12
12
|
s.email = %q{tj@vision-media.ca}
|
13
13
|
s.executables = ["rbind"]
|
14
|
-
s.extra_rdoc_files = ["bin/rbind", "bind.gemspec", "lib/bind/actions/refresh_browsers.rb", "lib/bind/actions
|
15
|
-
s.files = ["bin/rbind", "bind.gemspec", "examples/demo.html", "examples/
|
14
|
+
s.extra_rdoc_files = ["bin/rbind", "bind.gemspec", "lib/bind/actions/refresh_browsers.rb", "lib/bind/actions.rb", "lib/bind/command_helpers.rb", "lib/bind/listener.rb", "lib/bind/version.rb", "lib/bind.rb", "README.rdoc", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/release.rake", "tasks/spec.rake"]
|
15
|
+
s.files = ["bin/rbind", "bind.gemspec", "examples/demo.html", "examples/globbing.rb", "examples/log_changes.rb", "examples/refresh_browsers.rb", "examples/style.css", "History.rdoc", "lib/bind/actions/refresh_browsers.rb", "lib/bind/actions.rb", "lib/bind/command_helpers.rb", "lib/bind/listener.rb", "lib/bind/version.rb", "lib/bind.rb", "Manifest", "Rakefile", "README.rdoc", "spec/bind_listener_spec.rb", "spec/fixtures/assets/bar.css", "spec/fixtures/assets/foo.css", "spec/fixtures/assets/jquery.js", "spec/fixtures/assets/js/app.js", "spec/fixtures/assets/js/test.js", "spec/fixtures/style.css", "spec/spec_helper.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/release.rake", "tasks/spec.rake", "test/assets/javascripts/app/foo.js", "test/assets/javascripts/jquery.js", "test/assets/stylesheets/foo.css", "test/assets/stylesheets/style.css", "test/stylesheets/style.sass", "Todo.rdoc"]
|
16
16
|
s.has_rdoc = true
|
17
17
|
s.homepage = %q{http://github.com/visionmedia/bind}
|
18
18
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Bind", "--main", "README.rdoc"]
|
@@ -26,11 +26,11 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.specification_version = 2
|
27
27
|
|
28
28
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
29
|
-
s.add_runtime_dependency(%q<visionmedia-commander>, [">= 2.
|
29
|
+
s.add_runtime_dependency(%q<visionmedia-commander>, [">= 2.5.6"])
|
30
30
|
else
|
31
|
-
s.add_dependency(%q<visionmedia-commander>, [">= 2.
|
31
|
+
s.add_dependency(%q<visionmedia-commander>, [">= 2.5.6"])
|
32
32
|
end
|
33
33
|
else
|
34
|
-
s.add_dependency(%q<visionmedia-commander>, [">= 2.
|
34
|
+
s.add_dependency(%q<visionmedia-commander>, [">= 2.5.6"])
|
35
35
|
end
|
36
36
|
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
|
2
|
+
require File.dirname(__FILE__) + '/../lib/bind'
|
3
|
+
|
4
|
+
paths = [File.dirname(__FILE__) + '/*.rb']
|
5
|
+
action = lambda { |file| puts "modified #{file.path}" }
|
6
|
+
listener = Bind::Listener.new :event => :change, :paths => paths, :interval => 1, :actions => [action], :timeout => 10
|
7
|
+
listener.run!
|
data/examples/log_changes.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
|
2
2
|
require File.dirname(__FILE__) + '/../lib/bind'
|
3
3
|
|
4
|
-
# Execute this file to start the listener, then alter
|
4
|
+
# Execute this file to start the listener, then alter any file in this directory
|
5
5
|
|
6
|
-
|
6
|
+
paths = [File.dirname(__FILE__)]
|
7
7
|
action = lambda { |file| puts "modified #{file}" }
|
8
|
-
listener = Bind::Listener.new :event => :change, :
|
8
|
+
listener = Bind::Listener.new :event => :change, :paths => paths, :interval => 1, :actions => [action], :timeout => 10, :debug => $stdout
|
9
9
|
listener.run!
|
@@ -3,8 +3,10 @@ require File.dirname(__FILE__) + '/../lib/bind'
|
|
3
3
|
|
4
4
|
# Execute this file to start the listener, then alter style.css a few times
|
5
5
|
|
6
|
+
actions = []
|
6
7
|
html = File.expand_path(File.dirname(__FILE__) + '/demo.html')
|
7
8
|
style = File.dirname(__FILE__) + '/style.css'
|
8
|
-
|
9
|
-
|
9
|
+
actions << lambda { |file| puts "modified #{file.path}" }
|
10
|
+
actions << Bind::Actions::RefreshBrowsers.new(html, 'Safari')
|
11
|
+
listener = Bind::Listener.new :event => :change, :paths => [style], :interval => 1, :actions => actions, :timeout => 60
|
10
12
|
listener.run!
|
data/examples/style.css
CHANGED
data/lib/bind/actions.rb
CHANGED
data/lib/bind/command_helpers.rb
CHANGED
@@ -3,6 +3,7 @@ def set_common_options c
|
|
3
3
|
c.option '-i', '--interval SECONDS', Integer, 'Interval in seconds in which to listen for an event.'
|
4
4
|
c.option '-t', '--timeout SECONDS', Integer, 'Timeout after n seconds.'
|
5
5
|
c.option '-r', '--require LIBS', Array, 'Require ruby libraries.'
|
6
|
+
c.option '-e', '--eval STRING', String, 'Evaluate a string of Ruby in context of Bind, so the file local variable is available.'
|
6
7
|
c.option '-V', '--verbose', 'Log information to STDOUT.'
|
7
8
|
end
|
8
9
|
|
@@ -10,7 +11,9 @@ def listener options
|
|
10
11
|
Bind::Listener.new options_to_hash(options)
|
11
12
|
end
|
12
13
|
|
13
|
-
def
|
14
|
+
def common_options options
|
15
|
+
options.actions ||= []
|
16
|
+
options.actions << lambda { |file| eval options.eval } if options.eval
|
14
17
|
options.require.each { |lib| require lib } if options.require
|
15
18
|
options.debug = $stdout if options.verbose
|
16
19
|
end
|
data/lib/bind/listener.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Bind
|
4
4
|
class Listener
|
5
5
|
|
6
|
-
attr_accessor :
|
6
|
+
attr_accessor :paths, :actions, :timeout, :interval, :event
|
7
7
|
attr_reader :run_time, :start_time, :finish_time
|
8
8
|
|
9
9
|
#--
|
@@ -13,12 +13,12 @@ module Bind
|
|
13
13
|
class Error < StandardError; end
|
14
14
|
|
15
15
|
##
|
16
|
-
# Event listener. Must specify the :
|
16
|
+
# Event listener. Must specify the :paths, and :action options.
|
17
17
|
#
|
18
18
|
# === Options:
|
19
19
|
#
|
20
|
-
# :
|
21
|
-
# :
|
20
|
+
# :paths array of file or directory paths
|
21
|
+
# :actions objects responding to #call, which is used as the callbacks for the event handler
|
22
22
|
# :timeout time in seconds, after which the listener should stop. Defaults to 0, meaning infinity
|
23
23
|
# :event event to bind to, may be one of (:change). Defaults to :change
|
24
24
|
# :debug log verbose debugging information to this stream
|
@@ -27,22 +27,36 @@ module Bind
|
|
27
27
|
|
28
28
|
def initialize options = {}
|
29
29
|
@run_time, @mtimes = 0, {}
|
30
|
-
@
|
31
|
-
raise ArgumentError, 'specify one or more :
|
30
|
+
@paths = options.fetch :paths do
|
31
|
+
raise ArgumentError, 'specify one or more :paths (or directories) to bind the listener to'
|
32
32
|
end
|
33
|
-
@
|
34
|
-
raise ArgumentError, '
|
33
|
+
@actions = options.fetch :actions do
|
34
|
+
raise ArgumentError, ':actions must be an array of objects responding to #call'
|
35
35
|
end
|
36
36
|
@log = options.fetch :debug, false
|
37
37
|
@timeout = options.fetch :timeout, 0
|
38
38
|
@interval = options.fetch :interval, 2
|
39
39
|
@event = options.fetch :event, :change
|
40
40
|
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# Expand directories into file paths.
|
44
|
+
|
45
|
+
def expand_dirs paths
|
46
|
+
paths.inject [] do |files, path|
|
47
|
+
case
|
48
|
+
when File.directory?(path) ; files += Dir["#{path}/**/*.*"]
|
49
|
+
when File.file?(path) ; files << path
|
50
|
+
else files += Dir[path]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
41
54
|
|
42
55
|
##
|
43
56
|
# Start the listener.
|
44
57
|
|
45
58
|
def run!
|
59
|
+
files = expand_dirs @paths
|
46
60
|
start_time = Time.now
|
47
61
|
log "binding to #{files.join(', ')}, watching #{event} every #{interval} second(s)." +
|
48
62
|
(timeout > 0 ? " Terminating in #{timeout} seconds" : '')
|
@@ -61,13 +75,21 @@ module Bind
|
|
61
75
|
|
62
76
|
private
|
63
77
|
|
78
|
+
##
|
79
|
+
# Invoke all current actions with a +file+.
|
80
|
+
|
81
|
+
def call_actions_with file
|
82
|
+
p actions
|
83
|
+
actions.each { |action| action.call file }
|
84
|
+
end
|
85
|
+
|
64
86
|
##
|
65
87
|
# Handle change event.
|
66
88
|
|
67
89
|
def change file
|
68
90
|
if changed? file
|
69
91
|
log "changed #{file.path}"
|
70
|
-
|
92
|
+
call_actions_with file
|
71
93
|
@mtimes[file.path] = file.mtime
|
72
94
|
end
|
73
95
|
end
|
data/lib/bind/version.rb
CHANGED
data/spec/bind_listener_spec.rb
CHANGED
@@ -1,14 +1,36 @@
|
|
1
1
|
|
2
2
|
describe Bind::Listener do
|
3
3
|
|
4
|
-
def listener &action
|
5
|
-
Bind::Listener.new :event => :change, :
|
4
|
+
def listener *paths, &action
|
5
|
+
Bind::Listener.new :event => :change, :paths => paths, :interval => 1, :actions => [action], :timeout => 2
|
6
6
|
end
|
7
7
|
|
8
|
-
it "should
|
8
|
+
it "should expand directories" do
|
9
|
+
files = %w(
|
10
|
+
./spec/fixtures/assets/bar.css
|
11
|
+
./spec/fixtures/assets/foo.css
|
12
|
+
./spec/fixtures/assets/jquery.js
|
13
|
+
./spec/fixtures/assets/js/app.js
|
14
|
+
./spec/fixtures/assets/js/test.js
|
15
|
+
)
|
16
|
+
l = listener {}
|
17
|
+
l.expand_dirs(fixture_path('assets')).should == files
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should expand directories using globbing" do
|
21
|
+
files = %w(
|
22
|
+
./spec/fixtures/assets/jquery.js
|
23
|
+
./spec/fixtures/assets/js/app.js
|
24
|
+
./spec/fixtures/assets/js/test.js
|
25
|
+
)
|
9
26
|
l = listener {}
|
27
|
+
l.expand_dirs(fixture_path('assets/**/*.js')).should == files
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should record total runtime" do
|
31
|
+
l = listener(fixture_path('style.css')) {}
|
10
32
|
l.run!
|
11
33
|
l.run_time.to_i.should == 2
|
12
34
|
end
|
13
|
-
|
35
|
+
|
14
36
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: visionmedia-bind
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TJ Holowaychuk
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-03-
|
12
|
+
date: 2009-03-09 00:00:00 -07:00
|
13
13
|
default_executable: rbind
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 2.
|
23
|
+
version: 2.5.6
|
24
24
|
version:
|
25
25
|
description: bind actions to filesystem events
|
26
26
|
email: tj@vision-media.ca
|
@@ -32,7 +32,6 @@ extra_rdoc_files:
|
|
32
32
|
- bin/rbind
|
33
33
|
- bind.gemspec
|
34
34
|
- lib/bind/actions/refresh_browsers.rb
|
35
|
-
- lib/bind/actions/refresh_browsers_haml.rb
|
36
35
|
- lib/bind/actions.rb
|
37
36
|
- lib/bind/command_helpers.rb
|
38
37
|
- lib/bind/listener.rb
|
@@ -47,14 +46,12 @@ files:
|
|
47
46
|
- bin/rbind
|
48
47
|
- bind.gemspec
|
49
48
|
- examples/demo.html
|
49
|
+
- examples/globbing.rb
|
50
50
|
- examples/log_changes.rb
|
51
51
|
- examples/refresh_browsers.rb
|
52
|
-
- examples/refresh_browsers_haml.rb
|
53
52
|
- examples/style.css
|
54
|
-
- examples/style.sass
|
55
53
|
- History.rdoc
|
56
54
|
- lib/bind/actions/refresh_browsers.rb
|
57
|
-
- lib/bind/actions/refresh_browsers_haml.rb
|
58
55
|
- lib/bind/actions.rb
|
59
56
|
- lib/bind/command_helpers.rb
|
60
57
|
- lib/bind/listener.rb
|
@@ -64,12 +61,22 @@ files:
|
|
64
61
|
- Rakefile
|
65
62
|
- README.rdoc
|
66
63
|
- spec/bind_listener_spec.rb
|
64
|
+
- spec/fixtures/assets/bar.css
|
65
|
+
- spec/fixtures/assets/foo.css
|
66
|
+
- spec/fixtures/assets/jquery.js
|
67
|
+
- spec/fixtures/assets/js/app.js
|
68
|
+
- spec/fixtures/assets/js/test.js
|
67
69
|
- spec/fixtures/style.css
|
68
70
|
- spec/spec_helper.rb
|
69
71
|
- tasks/docs.rake
|
70
72
|
- tasks/gemspec.rake
|
71
73
|
- tasks/release.rake
|
72
74
|
- tasks/spec.rake
|
75
|
+
- test/assets/javascripts/app/foo.js
|
76
|
+
- test/assets/javascripts/jquery.js
|
77
|
+
- test/assets/stylesheets/foo.css
|
78
|
+
- test/assets/stylesheets/style.css
|
79
|
+
- test/stylesheets/style.sass
|
73
80
|
- Todo.rdoc
|
74
81
|
has_rdoc: true
|
75
82
|
homepage: http://github.com/visionmedia/bind
|
@@ -1,10 +0,0 @@
|
|
1
|
-
|
2
|
-
require File.dirname(__FILE__) + '/../lib/bind'
|
3
|
-
|
4
|
-
# Execute this file to start the listener, then alter style.css a few times
|
5
|
-
|
6
|
-
html = File.expand_path(File.dirname(__FILE__) + '/demo.html')
|
7
|
-
style = File.dirname(__FILE__) + '/style.sass'
|
8
|
-
action = Bind::Actions::RefreshBrowsersHaml.new html, '.', 'Safari'
|
9
|
-
listener = Bind::Listener.new :event => :change, :files => [style], :interval => 2, :action => action, :debug => $stdout
|
10
|
-
listener.run!
|
data/examples/style.sass
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'rubygems'
|
3
|
-
require 'haml'
|
4
|
-
require 'haml/exec'
|
5
|
-
|
6
|
-
module Bind
|
7
|
-
module Actions
|
8
|
-
class RefreshBrowsersHaml
|
9
|
-
|
10
|
-
attr_accessor :browsers, :uri
|
11
|
-
|
12
|
-
def initialize uri, dest, *browsers
|
13
|
-
@uri, @dest, @browsers = uri, File.expand_path(dest), browsers
|
14
|
-
end
|
15
|
-
|
16
|
-
def call file
|
17
|
-
build_haml file if haml? file
|
18
|
-
build_sass file if sass? file
|
19
|
-
@browsers.each { |browser| `open -g -a #{browser} #{uri}` }
|
20
|
-
end
|
21
|
-
|
22
|
-
def build_haml file
|
23
|
-
`haml #{ file.path } #{ File.join(@dest, file.path.sub('.haml', '.html')) }`
|
24
|
-
end
|
25
|
-
|
26
|
-
def build_sass file
|
27
|
-
`sass #{ file.path } #{ File.join(@dest, file.path.sub('.sass', '.css')) }`
|
28
|
-
end
|
29
|
-
|
30
|
-
def haml? file
|
31
|
-
file.path.include? '.haml'
|
32
|
-
end
|
33
|
-
|
34
|
-
def sass? file
|
35
|
-
file.path.include? '.sass'
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|