@@ -5,13 +5,8 @@ module Bashly
55 class Watch
66 attr_reader :dirs , :options
77
8- DEFAULT_OPTIONS = {
9- force_polling : true ,
10- latency : 1.0 ,
11- } . freeze
12-
138 def initialize ( *dirs , **options )
14- @options = DEFAULT_OPTIONS . merge ( options ) . freeze
9+ @options = default_options . merge ( options ) . freeze
1510 @dirs = dirs . empty? ? [ '.' ] : dirs
1611 end
1712
@@ -24,10 +19,20 @@ def on_change(&)
2419
2520 private
2621
27- def build_listener
28- listen . to ( *dirs , **options ) do |modified , added , removed |
29- yield changes ( modified , added , removed )
30- end
22+ def default_options
23+ {
24+ force_polling : force_polling? ,
25+ latency : latency ,
26+ }
27+ end
28+
29+ def force_polling?
30+ !Settings . watch_evented
31+ end
32+
33+ def latency
34+ value = Settings . watch_latency . to_f
35+ value . positive? ? value : 0.1
3136 end
3237
3338 def start ( &block )
@@ -42,16 +47,22 @@ def stop
4247 @listener = nil
4348 end
4449
45- def changes ( modified , added , removed )
46- { modified :, added :, removed : }
47- end
48-
4950 def wait
5051 sleep
5152 rescue ::Interrupt => e
5253 raise Bashly ::Interrupt , cause : e
5354 end
5455
56+ def build_listener
57+ listen . to ( *dirs , **options ) do |modified , added , removed |
58+ yield changes ( modified , added , removed )
59+ end
60+ end
61+
62+ def changes ( modified , added , removed )
63+ { modified :, added :, removed : }
64+ end
65+
5566 def listen = Listen
5667 end
5768end
0 commit comments