Skip to content

Commit

Permalink
Append their resources, don't replace ours.
Browse files Browse the repository at this point in the history
  • Loading branch information
envygeeks committed Nov 18, 2015
1 parent b642b90 commit 6aaf477
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 12 deletions.
28 changes: 18 additions & 10 deletions lib/jekyll/assets/config.rb
Expand Up @@ -5,6 +5,12 @@
module Jekyll
module Assets
module Config
DefaultSources = %W(
_assets/css _assets/stylesheets
_assets/images _assets/img _assets/fonts
_assets/javascripts _assets/js
)

Development = {
"skip_baseurl_with_cdn" => false,
"skip_prefix_with_cdn" => false,
Expand All @@ -15,13 +21,7 @@ module Config
"compress" => {
"css" => false,
"js" => false
},

"sources" => [
"_assets/css", "_assets/stylesheets",
"_assets/images", "_assets/img", "_assets/fonts",
"_assets/javascripts", "_assets/js"
]
}
}

#
Expand All @@ -36,15 +36,23 @@ module Config

#

def self.merge_sources(jekyll, config)
config["sources"] = (DefaultSources + (config["sources"] ||= [])).map do |val|
jekyll.in_source_dir(val)
end
end

#

def self.defaults
%W(development test).include?(Jekyll.env) ? Development : Production
end

#

def self.merge(nhash, ohash = defaults)
ohash.merge(nhash) do |key, oval, nval|
oval.is_a?(Hash) && nval.is_a?(Hash) ? merge(nval, oval) : nval
def self.merge(new_hash, old_hash = defaults)
old_hash.merge(new_hash) do |key, old_val, new_val|
old_val.is_a?(Hash) && new_val.is_a?(Hash) ? merge(new_val, old_val) : new_val
end
end
end
Expand Down
5 changes: 4 additions & 1 deletion lib/jekyll/assets/hooks/configuration.rb
Expand Up @@ -3,5 +3,8 @@
# Encoding: utf-8

Jekyll::Assets::Hook.register :env, :init, :early do
jekyll.config.store("assets", Jekyll::Assets::Config.merge(asset_config))
jekyll.config["assets"] = Jekyll::Assets::Config.merge(asset_config)
Jekyll::Assets::Config.merge_sources(
jekyll, asset_config
)
end
3 changes: 2 additions & 1 deletion spec/lib/jekyll/assets/hooks/sources_spec.rb
Expand Up @@ -8,9 +8,10 @@
let(:site) { stub_jekyll_site }

it "allows user to set their own asset locations" do
old_size = site.sprockets.asset_config["sources"].size
stub_asset_config site, "sources" => %W(_foo/bar)
results = env.paths.grep(/\A#{Regexp.union(site.in_source_dir)}/)
expect(results).to include site.in_source_dir("_foo/bar")
expect(results.size).to eq 1
expect(results.size).to eq old_size + 1
end
end

0 comments on commit 6aaf477

Please sign in to comment.