refactor Server into a dynamically loadable class
This commit is contained in:
parent
61ef9ee3da
commit
17be87bafd
30 changed files with 300 additions and 337 deletions
|
@ -50,22 +50,18 @@ module Middleman::CoreExtensions::Features
|
|||
#
|
||||
# activate MyFeatureModule
|
||||
def activate(feature)
|
||||
feature = feature.to_s if feature.is_a? Symbol
|
||||
if feature.is_a? Symbol
|
||||
feature = feature.to_s
|
||||
end
|
||||
|
||||
if feature.is_a? String
|
||||
feature = feature.camelize
|
||||
feature = Middleman::Features.const_get(feature)
|
||||
end
|
||||
|
||||
|
||||
$stderr.puts "== Activating: #{feature}" if logging?
|
||||
register feature
|
||||
end
|
||||
|
||||
# Deprecated API. Please use `activate` instead.
|
||||
def enable(feature_name)
|
||||
$stderr.puts "Warning: Feature activation has been renamed from enable to activate"
|
||||
activate(feature_name)
|
||||
super(feature_name)
|
||||
end
|
||||
|
||||
# Add a block/proc to be run after features have been setup
|
||||
def after_feature_init(&block)
|
||||
|
@ -73,6 +69,10 @@ module Middleman::CoreExtensions::Features
|
|||
@run_after_features << block
|
||||
end
|
||||
|
||||
def run_after_features
|
||||
@run_after_features || []
|
||||
end
|
||||
|
||||
# Load features before starting server
|
||||
def new
|
||||
# Check for and evaluate local configuration
|
||||
|
@ -88,8 +88,14 @@ module Middleman::CoreExtensions::Features
|
|||
activate ext
|
||||
end
|
||||
|
||||
@run_after_features.each { |block| class_eval(&block) }
|
||||
|
||||
run_after_features.each { |block| class_eval(&block) }
|
||||
|
||||
if logging?
|
||||
extensions.each do |ext|
|
||||
$stderr.puts "== Extension: #{ext}"
|
||||
end
|
||||
end
|
||||
|
||||
super
|
||||
end
|
||||
end
|
||||
|
|
|
@ -42,31 +42,35 @@ module Middleman::CoreExtensions::FrontMatter
|
|||
app.data_content("page", data)
|
||||
end
|
||||
end
|
||||
|
||||
def parse_front_matter(content)
|
||||
yaml_regex = /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
||||
if content =~ yaml_regex
|
||||
begin
|
||||
data = YAML.load($1)
|
||||
rescue => e
|
||||
puts "YAML Exception: #{e.message}"
|
||||
end
|
||||
|
||||
content = content.split(yaml_regex).last
|
||||
end
|
||||
|
||||
data ||= {}
|
||||
[data, content]
|
||||
end
|
||||
end
|
||||
alias :included :registered
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
def parse_front_matter(content)
|
||||
yaml_regex = /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
||||
if content =~ yaml_regex
|
||||
begin
|
||||
data = YAML.load($1)
|
||||
rescue => e
|
||||
puts "YAML Exception: #{e.message}"
|
||||
end
|
||||
|
||||
content = content.split(yaml_regex).last
|
||||
end
|
||||
|
||||
data ||= {}
|
||||
[data, content]
|
||||
Middleman::CoreExtensions::FrontMatter.parse_front_matter(content)
|
||||
end
|
||||
end
|
||||
|
||||
module YamlAware
|
||||
def prepare
|
||||
options, @data = Middleman::Server.parse_front_matter(@data)
|
||||
options, @data = Middleman::CoreExtensions::FrontMatter.parse_front_matter(@data)
|
||||
super
|
||||
end
|
||||
end
|
||||
|
|
|
@ -25,8 +25,9 @@ module Middleman::CoreExtensions::RackMap
|
|||
builder.use ::Rack::Head
|
||||
middleware.each { |c,a,b| builder.use(c, *a, &b) }
|
||||
maps.each { |p,b| builder.map(p, &b) }
|
||||
app = self
|
||||
builder.map "/" do
|
||||
run Middleman::Server.new!(*args, &bk)
|
||||
run app.new!(*args, &bk)
|
||||
end
|
||||
builder
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue