middleman-core 3.3.2 → 3.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/features/helpers_select_tag.feature +6 -8
- data/lib/middleman-core.rb +1 -2
- data/lib/middleman-core/application.rb +10 -9
- data/lib/middleman-core/cli.rb +9 -13
- data/lib/middleman-core/cli/build.rb +26 -27
- data/lib/middleman-core/cli/bundler.rb +6 -7
- data/lib/middleman-core/cli/console.rb +10 -13
- data/lib/middleman-core/cli/extension.rb +2 -4
- data/lib/middleman-core/cli/init.rb +27 -28
- data/lib/middleman-core/cli/server.rb +43 -44
- data/lib/middleman-core/configuration.rb +13 -11
- data/lib/middleman-core/core_extensions/data.rb +21 -29
- data/lib/middleman-core/core_extensions/extensions.rb +8 -8
- data/lib/middleman-core/core_extensions/external_helpers.rb +3 -5
- data/lib/middleman-core/core_extensions/file_watcher.rb +7 -11
- data/lib/middleman-core/core_extensions/front_matter.rb +5 -6
- data/lib/middleman-core/core_extensions/rendering.rb +40 -30
- data/lib/middleman-core/core_extensions/request.rb +16 -19
- data/lib/middleman-core/core_extensions/routing.rb +37 -36
- data/lib/middleman-core/core_extensions/show_exceptions.rb +1 -5
- data/lib/middleman-core/extension.rb +14 -16
- data/lib/middleman-core/extensions.rb +4 -6
- data/lib/middleman-core/load_paths.rb +3 -6
- data/lib/middleman-core/logger.rb +1 -3
- data/lib/middleman-core/meta_pages.rb +11 -11
- data/lib/middleman-core/meta_pages/config_setting.rb +4 -4
- data/lib/middleman-core/meta_pages/sitemap_resource.rb +2 -2
- data/lib/middleman-core/meta_pages/sitemap_tree.rb +4 -4
- data/lib/middleman-core/preview_server.rb +12 -11
- data/lib/middleman-core/profiling.rb +6 -8
- data/lib/middleman-core/renderers/asciidoc.rb +12 -13
- data/lib/middleman-core/renderers/coffee_script.rb +2 -4
- data/lib/middleman-core/renderers/erb.rb +3 -4
- data/lib/middleman-core/renderers/haml.rb +2 -4
- data/lib/middleman-core/renderers/kramdown.rb +3 -4
- data/lib/middleman-core/renderers/less.rb +3 -9
- data/lib/middleman-core/renderers/liquid.rb +4 -8
- data/lib/middleman-core/renderers/markdown.rb +7 -11
- data/lib/middleman-core/renderers/redcarpet.rb +14 -16
- data/lib/middleman-core/renderers/sass.rb +36 -15
- data/lib/middleman-core/renderers/slim.rb +7 -10
- data/lib/middleman-core/renderers/stylus.rb +2 -6
- data/lib/middleman-core/sitemap.rb +6 -13
- data/lib/middleman-core/sitemap/extensions/ignores.rb +4 -10
- data/lib/middleman-core/sitemap/extensions/on_disk.rb +3 -7
- data/lib/middleman-core/sitemap/extensions/proxies.rb +7 -12
- data/lib/middleman-core/sitemap/extensions/redirects.rb +7 -15
- data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +7 -15
- data/lib/middleman-core/sitemap/extensions/traversal.rb +4 -7
- data/lib/middleman-core/sitemap/queryable.rb +22 -27
- data/lib/middleman-core/sitemap/resource.rb +13 -25
- data/lib/middleman-core/sitemap/store.rb +11 -15
- data/lib/middleman-core/templates.rb +9 -12
- data/lib/middleman-core/templates/default.rb +6 -7
- data/lib/middleman-core/templates/empty.rb +0 -1
- data/lib/middleman-core/templates/extension/Gemfile +1 -1
- data/lib/middleman-core/templates/extension/Rakefile +2 -2
- data/lib/middleman-core/templates/extension/lib/lib.rb +0 -1
- data/lib/middleman-core/templates/html5.rb +6 -7
- data/lib/middleman-core/templates/local.rb +1 -2
- data/lib/middleman-core/templates/mobile.rb +3 -4
- data/lib/middleman-core/templates/shared/config.ru +1 -1
- data/lib/middleman-core/util.rb +5 -6
- data/lib/middleman-core/version.rb +1 -1
- data/lib/middleman-more/core_extensions/compass.rb +0 -1
- data/lib/middleman-more/core_extensions/default_helpers.rb +25 -16
- data/lib/middleman-more/core_extensions/i18n.rb +24 -23
- data/lib/middleman-more/extensions/asset_hash.rb +4 -6
- data/lib/middleman-more/extensions/asset_host.rb +1 -1
- data/lib/middleman-more/extensions/automatic_alt_tags.rb +2 -3
- data/lib/middleman-more/extensions/automatic_image_sizes.rb +4 -5
- data/lib/middleman-more/extensions/cache_buster.rb +0 -1
- data/lib/middleman-more/extensions/gzip.rb +1 -1
- data/lib/middleman-more/extensions/lorem.rb +8 -8
- data/lib/middleman-more/extensions/minify_css.rb +9 -8
- data/lib/middleman-more/extensions/minify_javascript.rb +5 -6
- data/lib/middleman-more/extensions/relative_assets.rb +0 -1
- data/lib/middleman-more/templates/smacss.rb +6 -7
- data/middleman-core.gemspec +1 -1
- metadata +5 -5
@@ -1,6 +1,5 @@
|
|
1
1
|
# CLI Module
|
2
2
|
module Middleman::Cli
|
3
|
-
|
4
3
|
# Server thor task
|
5
4
|
class Server < Thor
|
6
5
|
check_unknown_options!
|
@@ -9,54 +8,54 @@ module Middleman::Cli
|
|
9
8
|
|
10
9
|
desc 'server [options]', 'Start the preview server'
|
11
10
|
method_option :environment,
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
aliases: '-e',
|
12
|
+
default: ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
|
13
|
+
desc: 'The environment Middleman will run under'
|
15
14
|
method_option :host,
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
type: :string,
|
16
|
+
aliases: '-h',
|
17
|
+
default: '0.0.0.0',
|
18
|
+
desc: 'Bind to HOST address'
|
20
19
|
method_option :port,
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
aliases: '-p',
|
21
|
+
default: '4567',
|
22
|
+
desc: 'The port Middleman will listen on'
|
24
23
|
method_option :verbose,
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
type: :boolean,
|
25
|
+
default: false,
|
26
|
+
desc: 'Print debug messages'
|
28
27
|
method_option :instrument,
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
type: :string,
|
29
|
+
default: false,
|
30
|
+
desc: 'Print instrument messages'
|
32
31
|
method_option :disable_watcher,
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
type: :boolean,
|
33
|
+
default: false,
|
34
|
+
desc: 'Disable the file change and delete watcher process'
|
36
35
|
method_option :profile,
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
type: :boolean,
|
37
|
+
default: false,
|
38
|
+
desc: 'Generate profiling report for server startup'
|
40
39
|
method_option :reload_paths,
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
type: :string,
|
41
|
+
default: false,
|
42
|
+
desc: 'Additional paths to auto-reload when files change'
|
44
43
|
method_option :force_polling,
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
type: :boolean,
|
45
|
+
default: false,
|
46
|
+
desc: 'Force file watcher into polling mode'
|
48
47
|
method_option :latency,
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
type: :numeric,
|
49
|
+
aliases: '-l',
|
50
|
+
default: 0.25,
|
51
|
+
desc: 'Set file watcher latency, in seconds'
|
53
52
|
|
54
53
|
# Start the server
|
55
54
|
def server
|
56
55
|
require 'middleman-core'
|
57
56
|
require 'middleman-core/preview_server'
|
58
57
|
|
59
|
-
|
58
|
+
unless ENV['MM_ROOT']
|
60
59
|
puts '== Could not find a Middleman project config.rb'
|
61
60
|
puts '== Treating directory as a static site to be served'
|
62
61
|
ENV['MM_ROOT'] = Dir.pwd
|
@@ -64,15 +63,15 @@ module Middleman::Cli
|
|
64
63
|
end
|
65
64
|
|
66
65
|
params = {
|
67
|
-
:
|
68
|
-
:
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:
|
72
|
-
:
|
73
|
-
:
|
74
|
-
:
|
75
|
-
:
|
66
|
+
port: options['port'],
|
67
|
+
host: options['host'],
|
68
|
+
environment: options['environment'],
|
69
|
+
debug: options['verbose'],
|
70
|
+
instrumenting: options['instrument'],
|
71
|
+
disable_watcher: options['disable_watcher'],
|
72
|
+
reload_paths: options['reload_paths'],
|
73
|
+
force_polling: options['force_polling'],
|
74
|
+
latency: options['latency']
|
76
75
|
}
|
77
76
|
|
78
77
|
puts '== The Middleman is loading'
|
@@ -85,5 +84,5 @@ module Middleman::Cli
|
|
85
84
|
end
|
86
85
|
|
87
86
|
# Map "s" to "server"
|
88
|
-
Base.map(
|
87
|
+
Base.map('s' => 'server')
|
89
88
|
end
|
@@ -39,7 +39,7 @@ module Middleman
|
|
39
39
|
end
|
40
40
|
|
41
41
|
# Needed so that method_missing makes sense
|
42
|
-
def respond_to?(method, include_private
|
42
|
+
def respond_to?(method, include_private=false)
|
43
43
|
super || config.defines_setting?(method)
|
44
44
|
end
|
45
45
|
end
|
@@ -53,7 +53,7 @@ module Middleman
|
|
53
53
|
# @deprecated Prefer accessing settings through "config".
|
54
54
|
#
|
55
55
|
# @return [ConfigurationManager]
|
56
|
-
|
56
|
+
alias_method :settings, :config
|
57
57
|
|
58
58
|
# Set attributes (global variables)
|
59
59
|
#
|
@@ -80,7 +80,7 @@ module Middleman
|
|
80
80
|
end
|
81
81
|
|
82
82
|
# Needed so that method_missing makes sense
|
83
|
-
def respond_to?(method, include_private
|
83
|
+
def respond_to?(method, include_private=false)
|
84
84
|
super || config.defines_setting?(method)
|
85
85
|
end
|
86
86
|
end
|
@@ -111,16 +111,17 @@ module Middleman
|
|
111
111
|
# Get the value of a setting by key. Returns nil if there is no such setting.
|
112
112
|
# @return [Object]
|
113
113
|
def [](key)
|
114
|
-
|
115
|
-
|
114
|
+
setting_obj = setting(key)
|
115
|
+
setting_obj ? setting_obj.value : nil
|
116
116
|
end
|
117
117
|
|
118
118
|
# Set the value of a setting by key. Creates the setting if it doesn't exist.
|
119
119
|
# @param [Symbol] key
|
120
120
|
# @param [Object] val
|
121
|
+
# rubocop:disable UselessSetterCall
|
121
122
|
def []=(key, val)
|
122
|
-
|
123
|
-
|
123
|
+
setting_obj = setting(key) || define_setting(key)
|
124
|
+
setting_obj.value = val
|
124
125
|
end
|
125
126
|
|
126
127
|
# Allow configuration settings to be read and written via methods
|
@@ -135,7 +136,7 @@ module Middleman
|
|
135
136
|
end
|
136
137
|
|
137
138
|
# Needed so that method_missing makes sense
|
138
|
-
def respond_to?(method, include_private
|
139
|
+
def respond_to?(method, include_private=false)
|
139
140
|
super || defines_setting?(method) || (method =~ /^(\w+)=$/ && defines_setting?($1))
|
140
141
|
end
|
141
142
|
|
@@ -143,7 +144,7 @@ module Middleman
|
|
143
144
|
# @param [Symbol] key
|
144
145
|
# @return [Boolean]
|
145
146
|
def defines_setting?(key)
|
146
|
-
@settings.
|
147
|
+
@settings.key?(key)
|
147
148
|
end
|
148
149
|
|
149
150
|
# Define a new setting, with optional default and user-friendly description.
|
@@ -155,7 +156,7 @@ module Middleman
|
|
155
156
|
# @return [ConfigSetting]
|
156
157
|
def define_setting(key, default=nil, description=nil)
|
157
158
|
raise "Setting #{key} doesn't exist" if @finalized
|
158
|
-
raise "Setting #{key} already defined" if @settings.
|
159
|
+
raise "Setting #{key} already defined" if @settings.key?(key)
|
159
160
|
raise 'Setting key must be a Symbol' unless key.is_a? Symbol
|
160
161
|
|
161
162
|
@settings[key] = ConfigSetting.new(key, default, description)
|
@@ -170,7 +171,7 @@ module Middleman
|
|
170
171
|
|
171
172
|
# Deep duplicate of the configuration manager
|
172
173
|
def dup
|
173
|
-
ConfigurationManager.new.tap {|c| c.load_settings(
|
174
|
+
ConfigurationManager.new.tap { |c| c.load_settings(all_settings) }
|
174
175
|
end
|
175
176
|
|
176
177
|
# Load in a list of settings
|
@@ -227,6 +228,7 @@ module Middleman
|
|
227
228
|
end
|
228
229
|
|
229
230
|
# Whether or not there has been a value set beyond the default
|
231
|
+
# rubocop:disable TrivialAccessors
|
230
232
|
def value_set?
|
231
233
|
@value_set
|
232
234
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
module Middleman
|
2
2
|
module CoreExtensions
|
3
|
-
|
4
3
|
# The data extension parses YAML and JSON files in the data/ directory
|
5
4
|
# and makes them available to config.rb, templates and extensions
|
6
5
|
module Data
|
7
|
-
|
8
6
|
# Extension registered
|
9
7
|
class << self
|
10
8
|
# @private
|
@@ -16,7 +14,7 @@ module Middleman
|
|
16
14
|
app.config.define_setting :data_dir, 'data', 'The directory data files are stored in'
|
17
15
|
app.send :include, InstanceMethods
|
18
16
|
end
|
19
|
-
|
17
|
+
alias_method :included, :registered
|
20
18
|
end
|
21
19
|
|
22
20
|
# Instance methods
|
@@ -24,12 +22,12 @@ module Middleman
|
|
24
22
|
# Setup data files before anything else so they are available when
|
25
23
|
# parsing config.rb
|
26
24
|
def initialize
|
27
|
-
|
28
|
-
|
25
|
+
files.changed DataStore.matcher do |file|
|
26
|
+
data.touch_file(file) if file.start_with?("#{config[:data_dir]}/")
|
29
27
|
end
|
30
28
|
|
31
|
-
|
32
|
-
|
29
|
+
files.deleted DataStore.matcher do |file|
|
30
|
+
data.remove_file(file) if file.start_with?("#{config[:data_dir]}/")
|
33
31
|
end
|
34
32
|
|
35
33
|
super
|
@@ -45,10 +43,8 @@ module Middleman
|
|
45
43
|
|
46
44
|
# The core logic behind the data extension.
|
47
45
|
class DataStore
|
48
|
-
|
49
46
|
# Static methods
|
50
47
|
class << self
|
51
|
-
|
52
48
|
# The regex which tells Middleman which files are for data
|
53
49
|
#
|
54
50
|
# @return [Regexp]
|
@@ -137,7 +133,7 @@ module Middleman
|
|
137
133
|
data_branch = data_branch[dir]
|
138
134
|
end
|
139
135
|
|
140
|
-
data_branch.delete(basename) if data_branch.
|
136
|
+
data_branch.delete(basename) if data_branch.key?(basename)
|
141
137
|
end
|
142
138
|
|
143
139
|
# Get a hash from either internal static data or a callback
|
@@ -147,13 +143,10 @@ module Middleman
|
|
147
143
|
def data_for_path(path)
|
148
144
|
response = nil
|
149
145
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
response = self.store[path.to_s]
|
155
|
-
elsif self.callbacks.has_key?(path.to_s)
|
156
|
-
response = self.callbacks[path.to_s].call()
|
146
|
+
if store.key?(path.to_s)
|
147
|
+
response = store[path.to_s]
|
148
|
+
elsif callbacks.key?(path.to_s)
|
149
|
+
response = callbacks[path.to_s].call
|
157
150
|
end
|
158
151
|
|
159
152
|
response
|
@@ -164,22 +157,19 @@ module Middleman
|
|
164
157
|
# @param [String] path The namespace to search for
|
165
158
|
# @return [Hash, nil]
|
166
159
|
def method_missing(path)
|
167
|
-
if @local_data.
|
160
|
+
if @local_data.key?(path.to_s)
|
168
161
|
return @local_data[path.to_s]
|
169
162
|
else
|
170
163
|
result = data_for_path(path)
|
171
|
-
|
172
|
-
if result
|
173
|
-
return ::Middleman::Util.recursively_enhance(result)
|
174
|
-
end
|
164
|
+
return ::Middleman::Util.recursively_enhance(result) if result
|
175
165
|
end
|
176
166
|
|
177
167
|
super
|
178
168
|
end
|
179
169
|
|
180
170
|
# Needed so that method_missing makes sense
|
181
|
-
def respond_to?(method, include_private
|
182
|
-
super ||
|
171
|
+
def respond_to?(method, include_private=false)
|
172
|
+
super || key?(method)
|
183
173
|
end
|
184
174
|
|
185
175
|
# Make DataStore act like a hash. Return requested data, or
|
@@ -188,24 +178,26 @@ module Middleman
|
|
188
178
|
# @param [String, Symbol] key The name of the data namespace
|
189
179
|
# @return [Hash, nil]
|
190
180
|
def [](key)
|
191
|
-
__send__(key) if
|
181
|
+
__send__(key) if key?(key)
|
192
182
|
end
|
193
183
|
|
194
|
-
def
|
195
|
-
@local_data.
|
184
|
+
def key?(key)
|
185
|
+
@local_data.key?(key.to_s) || data_for_path(key)
|
196
186
|
end
|
197
187
|
|
188
|
+
alias_method :has_key?, :key?
|
189
|
+
|
198
190
|
# Convert all the data into a static hash
|
199
191
|
#
|
200
192
|
# @return [Hash]
|
201
193
|
def to_h
|
202
194
|
data = {}
|
203
195
|
|
204
|
-
|
196
|
+
store.each do |k, _|
|
205
197
|
data[k] = data_for_path(k)
|
206
198
|
end
|
207
199
|
|
208
|
-
|
200
|
+
callbacks.each do |k, _|
|
209
201
|
data[k] = data_for_path(k)
|
210
202
|
end
|
211
203
|
|
@@ -32,7 +32,6 @@
|
|
32
32
|
module Middleman
|
33
33
|
module CoreExtensions
|
34
34
|
module Extensions
|
35
|
-
|
36
35
|
# Register extension
|
37
36
|
class << self
|
38
37
|
# @private
|
@@ -49,9 +48,9 @@ module Middleman
|
|
49
48
|
|
50
49
|
app.extend ClassMethods
|
51
50
|
app.send :include, InstanceMethods
|
52
|
-
app.delegate :configure, :
|
51
|
+
app.delegate :configure, to: :"self.class"
|
53
52
|
end
|
54
|
-
|
53
|
+
alias_method :included, :registered
|
55
54
|
end
|
56
55
|
|
57
56
|
# Class methods
|
@@ -75,7 +74,7 @@ module Middleman
|
|
75
74
|
else
|
76
75
|
extend extension
|
77
76
|
if extension.respond_to?(:registered)
|
78
|
-
if extension.method(:registered).arity
|
77
|
+
if extension.method(:registered).arity == 1
|
79
78
|
extension.registered(self, &block)
|
80
79
|
else
|
81
80
|
extension.registered(self, options, &block)
|
@@ -96,6 +95,7 @@ module Middleman
|
|
96
95
|
#
|
97
96
|
# @param [Symbol, Module] ext Which extension to activate
|
98
97
|
# @return [void]
|
98
|
+
# rubocop:disable BlockNesting
|
99
99
|
def activate(ext, options={}, &block)
|
100
100
|
ext_module = if ext.is_a?(Module)
|
101
101
|
ext
|
@@ -157,7 +157,7 @@ module Middleman
|
|
157
157
|
|
158
158
|
# Check for and evaluate local configuration
|
159
159
|
local_config = File.join(root, 'config.rb')
|
160
|
-
if File.
|
160
|
+
if File.exist? local_config
|
161
161
|
logger.debug '== Reading: Local config'
|
162
162
|
instance_eval File.read(local_config), local_config, 1
|
163
163
|
end
|
@@ -172,16 +172,16 @@ module Middleman
|
|
172
172
|
# polluted with paths from other test app directories that don't
|
173
173
|
# exist anymore.
|
174
174
|
if ENV['TEST']
|
175
|
-
::I18n.load_path.delete_if {|path| path =~ %r{tmp/aruba}}
|
175
|
+
::I18n.load_path.delete_if { |path| path =~ %r{tmp/aruba} }
|
176
176
|
::I18n.reload!
|
177
177
|
end
|
178
178
|
|
179
179
|
run_hook :after_configuration
|
180
180
|
|
181
181
|
logger.debug 'Loaded extensions:'
|
182
|
-
|
182
|
+
extensions.each do |ext, klass|
|
183
183
|
if ext.is_a?(Hash)
|
184
|
-
ext.each do |k,_|
|
184
|
+
ext.each do |k, _|
|
185
185
|
logger.debug "== Extension: #{k}"
|
186
186
|
end
|
187
187
|
else
|
@@ -2,16 +2,14 @@
|
|
2
2
|
module Middleman
|
3
3
|
module CoreExtensions
|
4
4
|
module ExternalHelpers
|
5
|
-
|
6
5
|
# Setup extension
|
7
6
|
class << self
|
8
|
-
|
9
7
|
# once registered
|
10
8
|
def registered(app)
|
11
9
|
# Setup a default helpers paths
|
12
10
|
app.config.define_setting :helpers_dir, 'helpers', 'Directory to autoload helper modules from'
|
13
11
|
app.config.define_setting :helpers_filename_glob, '**.rb', 'Glob pattern for matching helper ruby files'
|
14
|
-
app.config.define_setting :helpers_filename_to_module_name_proc,
|
12
|
+
app.config.define_setting :helpers_filename_to_module_name_proc, proc { |filename|
|
15
13
|
basename = File.basename(filename, File.extname(filename))
|
16
14
|
basename.camelcase
|
17
15
|
}, 'Proc implementing the conversion from helper filename to module name'
|
@@ -19,7 +17,7 @@ module Middleman
|
|
19
17
|
# After config
|
20
18
|
app.after_configuration do
|
21
19
|
helpers_path = File.join(root, config[:helpers_dir])
|
22
|
-
next unless File.
|
20
|
+
next unless File.exist?(helpers_path)
|
23
21
|
|
24
22
|
Dir[File.join(helpers_path, config[:helpers_filename_glob])].each do |filename|
|
25
23
|
module_name = config[:helpers_filename_to_module_name_proc].call(filename)
|
@@ -32,7 +30,7 @@ module Middleman
|
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
35
|
-
|
33
|
+
alias_method :included, :registered
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
@@ -5,7 +5,6 @@ require 'set'
|
|
5
5
|
module Middleman
|
6
6
|
module CoreExtensions
|
7
7
|
module FileWatcher
|
8
|
-
|
9
8
|
IGNORE_LIST = [
|
10
9
|
/^bin(\/|$)/,
|
11
10
|
/^\.bundle(\/|$)/,
|
@@ -26,7 +25,6 @@ module Middleman
|
|
26
25
|
|
27
26
|
# Setup extension
|
28
27
|
class << self
|
29
|
-
|
30
28
|
# Once registered
|
31
29
|
def registered(app)
|
32
30
|
app.send :include, InstanceMethods
|
@@ -47,12 +45,11 @@ module Middleman
|
|
47
45
|
files.reload_path('.')
|
48
46
|
end
|
49
47
|
end
|
50
|
-
|
48
|
+
alias_method :included, :registered
|
51
49
|
end
|
52
50
|
|
53
51
|
# Instance methods
|
54
52
|
module InstanceMethods
|
55
|
-
|
56
53
|
# Access the file api
|
57
54
|
# @return [Middleman::CoreExtensions::FileWatcher::API]
|
58
55
|
def files
|
@@ -62,10 +59,9 @@ module Middleman
|
|
62
59
|
|
63
60
|
# Core File Change API class
|
64
61
|
class API
|
65
|
-
|
66
62
|
attr_reader :app
|
67
63
|
attr_reader :known_paths
|
68
|
-
delegate :logger, :
|
64
|
+
delegate :logger, to: :app
|
69
65
|
|
70
66
|
# Initialize api and internal path cache
|
71
67
|
def initialize(app)
|
@@ -102,7 +98,7 @@ module Middleman
|
|
102
98
|
path = Pathname(path)
|
103
99
|
logger.debug "== File Change: #{path}"
|
104
100
|
@known_paths << path
|
105
|
-
|
101
|
+
run_callbacks(path, :changed)
|
106
102
|
end
|
107
103
|
|
108
104
|
# Notify callbacks that a file was deleted
|
@@ -113,7 +109,7 @@ module Middleman
|
|
113
109
|
path = Pathname(path)
|
114
110
|
logger.debug "== File Deletion: #{path}"
|
115
111
|
@known_paths.delete(path)
|
116
|
-
|
112
|
+
run_callbacks(path, :deleted)
|
117
113
|
end
|
118
114
|
|
119
115
|
# Manually trigger update events
|
@@ -151,7 +147,7 @@ module Middleman
|
|
151
147
|
|
152
148
|
def exists?(path)
|
153
149
|
p = Pathname(path)
|
154
|
-
p = p.relative_path_from(Pathname(@app.root))
|
150
|
+
p = p.relative_path_from(Pathname(@app.root)) unless p.relative?
|
155
151
|
@known_paths.include?(p)
|
156
152
|
end
|
157
153
|
|
@@ -163,7 +159,7 @@ module Middleman
|
|
163
159
|
app.config[:file_watcher_ignore].any? { |r| path =~ r }
|
164
160
|
end
|
165
161
|
|
166
|
-
|
162
|
+
protected
|
167
163
|
|
168
164
|
# Notify callbacks for a file given an array of callbacks
|
169
165
|
#
|
@@ -172,7 +168,7 @@ module Middleman
|
|
172
168
|
# @return [void]
|
173
169
|
def run_callbacks(path, callbacks_name)
|
174
170
|
path = path.to_s
|
175
|
-
|
171
|
+
send(callbacks_name).each do |callback, matcher|
|
176
172
|
next unless matcher.nil? || path.match(matcher)
|
177
173
|
@app.instance_exec(path, &callback)
|
178
174
|
end
|