module Guff::PageFeatures FEATURES = { "jquery": { scripts: %w{ /guff-stuff/jquery-2.2.1.min.js }, }, "luigi-template": { scripts: %w{ /guff-stuff/luigi-template-0.4.1.min.js }, }, "font-awesome": { styles: %w{ /guff-stuff/font-awesome-4.5.0/css/font-awesome.min.css }, }, "bootstrap": { deps: %w{jquery}, styles: %w{ /guff-stuff/bootstrap-3.3.6/css/bootstrap.min.css /guff-stuff/bootstrap-3.3.6/css/bootstrap-theme.min.css }, scripts: %w{ /guff-stuff/bootstrap-3.3.6/js/bootstrap.min.js }, # TODO metas: [] of Hash(String, String), }, "guff/util": { deps: %w{jquery luigi-template}, scripts: %w{ /guff-stuff/js/util.js }, }, } def self.add(key : String, page) raise "unknown feature: #{key}" unless FEATURES.has_key?(key) f = FEATURES[key] if f.has_key?(:deps) # add dependencies (f[:deps] as Array(String)).each do |dep| page.add_feature(dep) end end if f.has_key?(:scripts) # add scripts (f[:scripts] as Array(String)).each do |path| page.scripts << path end end if f.has_key?(:styles) # add styles (f[:styles] as Array(String)).each do |path| page.styles << path end end if f.has_key?(:metas) # add metas (f[:metas] as Array(Hash(String, String))).each do |meta| page.metas << meta end end end end