class Middleman::JSPMExtension

Public Class Methods

new(app, options_hash = {}, &block) click to toggle source
Calls superclass method
# File lib/middleman-jspm/extension.rb, line 8
def initialize(app, options_hash = {}, &block)
        super
        app.set :jspm_dir, options.jspm_dir
        app.after_build do |builder|
                require 'fileutils'
                require 'uglifier'
        
                modules = jspm_get_modules()
        
                if modules.length > 0
                        FileUtils.mkdir_p "#{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/"
                        if jspm_include_system()
                                assets = [
                                        "jspm_packages/system",
                                        "config"
                                ]
                        
                                File.open("#{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/system.js","w") do |fp|
                                        fp.write assets.map{|x| sprockets.find_asset(x).to_s }.join("\n")
                                end
                        end
                end
        
                modules.each do |m|
                        command = m["self-executing"] ? "bundle-sfx" : "bundle"
                        additions_and_subtractions = ""
                        if(m["include"] && m["include"].kind_of?(Array))
                                additions_and_subtractions += " - " + m["include"].join(" - ")
                        end
                        if(m["exclude"] && !m["self-executing"] && m["exclude"].kind_of?(Array))
                                additions_and_subtractions += " - " + m["exclude"].join(" - ")
                        end
                        system("node node_modules/jspm/jspm.js #{command} #{m["name"]}#{additions_and_subtractions} #{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/#{m["name"]}.js")
                end
        
                if modules.length > 0
                        Dir.glob("#{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/**/*.js").each do |file|
                                puts "Uglifying #{file}"
                                compressed_source = Uglifier.compile(File.read(file))
                                File.open(file, 'w') do |f_pointer|
                                        f_pointer.write(compressed_source)
                                end
                        end
                end
        end
end

Public Instance Methods

after_configuration() click to toggle source
# File lib/middleman-jspm/extension.rb, line 58
def after_configuration
        app.sprockets.append_path options.jspm_dir
end
included(app, options_hash = {}, &block)
Alias for: registered
jspm_get_modules() click to toggle source
# File lib/middleman-jspm/extension.rb, line 69
def jspm_get_modules()
        if sprockets.find_asset("modules.json")
                JSON.parse(sprockets.find_asset("modules.json").to_s)
        elsif File.exists?('modules.json')
                JSON.parse(File.read("modules.json"))
        else
                []
        end
end
jspm_include_environment() click to toggle source
# File lib/middleman-jspm/extension.rb, line 108
def jspm_include_environment()
        if build?
                if jspm_include_system()
                        javascript_include_tag("system")
                end
        else
                javascript_include_tag     "jspm_packages/system.js", "config.js" 
        end
end
jspm_include_module(name) click to toggle source
# File lib/middleman-jspm/extension.rb, line 79
def jspm_include_module(name)
        if build?
                modules = jspm_get_modules()
                
                m = modules.find_index{|m| m["name"] == name }
                
                if not m.nil? and modules[m]["self-executing"]
                        "<script src=\"#{asset_path(:js, name)}\"></script>"
                else
                        "<script>System.import('#{name}');</script>"
                end
        else
                "<script>System.import('#{name}');</script>"
        end
end
jspm_include_system() click to toggle source
# File lib/middleman-jspm/extension.rb, line 95
def jspm_include_system()
        include_system = false
        modules = jspm_get_modules()
                
        modules.each do |mod|
                if !mod["self-executing"]
                        include_system = true
                        break
                end
        end
        return include_system
end
jspm_path(package, source="npm") click to toggle source
# File lib/middleman-jspm/extension.rb, line 63
def jspm_path(package, source="npm")
        Dir.glob("#{jspm_dir}/#{source}/#{package}*").map{|x| if File.directory? x then x else nil end }.delete_if{|x| x.nil? }.sort do |a,b|
                b.gsub("#{jspm_dir}/#{source}/#{package}@","").split('.').map { |e| e.to_i } <=> a.gsub("#{jspm_dir}/github/twbs/bootstrap-sass@","").split('.').map { |e| e.to_i }
        end.first
end
registered(app, options_hash = {}, &block) click to toggle source
# File lib/middleman-jspm/extension.rb, line 54
def registered(app, options_hash = {}, &block)
        
end
Also aliased as: included