discourse/lib/autospec/reload_css.rb

41 lines
957 B
Ruby
Raw Normal View History

module Autospec; end
2013-11-02 06:57:50 +08:00
class Autospec::ReloadCss
2013-11-02 06:57:50 +08:00
WATCHERS = {}
def self.watch(pattern, &blk)
2013-11-02 06:57:50 +08:00
WATCHERS[pattern] = blk
end
2013-11-02 06:57:50 +08:00
# css, scss, sass or handlebars
watch(/\.css$/)
2013-11-02 06:57:50 +08:00
watch(/\.ca?ss\.erb$/)
watch(/\.s[ac]ss$/)
watch(/\.handlebars$/)
def self.message_bus
MessageBus::Instance.new.tap do |bus|
bus.site_id_lookup do
2013-11-02 06:57:50 +08:00
# this is going to be dev the majority of the time
# if you have multisite configured in dev stuff may be different
"default"
end
end
end
def self.run_on_change(paths)
paths.map! do |p|
hash = nil
2013-11-02 06:57:50 +08:00
fullpath = "#{Rails.root}/#{p}"
hash = Digest::MD5.hexdigest(File.read(fullpath)) if File.exists?(fullpath)
p = p.sub /\.sass\.erb/, ""
p = p.sub /\.sass/, ""
p = p.sub /\.scss/, ""
p = p.sub /^app\/assets\/stylesheets/, "assets"
2013-11-02 06:57:50 +08:00
{ name: p, hash: hash }
end
message_bus.publish "/file-change", paths
end
end