1b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# Copyright (c) 2013 Brandon Jones, Colin MacKenzie IV 2b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 3b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# This software is provided 'as-is', without any express or implied 4b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# warranty. In no event will the authors be held liable for any damages 5b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# arising from the use of this software. 6b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 7b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# Permission is granted to anyone to use this software for any purpose, 8b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# including commercial applications, and to alter it and redistribute it 9b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# freely, subject to the following restrictions: 10b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 11b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 1. The origin of this software must not be misrepresented; you must not 12b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# claim that you wrote the original software. If you use this software 13b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# in a product, an acknowledgment in the product documentation would be 14b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# appreciated but is not required. 15b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 16b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 2. Altered source versions must be plainly marked as such, and must not 17b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# be misrepresented as being the original software. 18b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 19b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 3. This notice may not be removed or altered from any source distribution. 20b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis$:.unshift File.expand_path('.', File.dirname(__FILE__)) 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisrequire 'sprockets' 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisrequire 'jasmine' 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisclass Jasmine::Config 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis def simple_config_file 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis File.expand_path GLMatrix.base_path.join('spec/jasmine.yml') 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisend 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisclass Rack::Jasmine::Runner 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis alias_method :jasmine_call, :call 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis def call(env) 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis GLMatrix.compile 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis jasmine_call env 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisend 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennismodule GLMatrix 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis autoload :ReleaseHelper, 'gl-matrix/release_helper' 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis autoload :Version, 'gl-matrix/version' 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis autoload :VERSION, 'gl-matrix/version' 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis module_function 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis def release(&block) 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis GLMatrix::ReleaseHelper.release &block 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis def sprockets 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis env = Sprockets::Environment.new base_path 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis env.append_path base_path.join('src') 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis env 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis def base_path 5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis Pathname.new File.expand_path('../..', File.dirname(__FILE__)) 5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis # Compiles the source file to the dest file. If a block 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis # is given, the source file is yielded and replaced with 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis # the result. Returns the destination as a Pathname. 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis def compile(source = 'gl-matrix.js', dest = 'dist/gl-matrix.js') 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis dest = base_path.join dest 6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis js = sprockets[source] 6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis js = yield js if block_given? 6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis File.open dest, "w" do |f| 6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis f.puts js 7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis puts "compiled #{source} to #{dest.relative_path_from base_path}" 7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis dest 7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 7566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis def minify(source = 'gl-matrix.js', dest = 'dist/gl-matrix-min.js') 7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis dest = compile source, dest do |js| 7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis Uglifier.compile js 7966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 8066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 8166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis puts "minified #{source} to #{dest.relative_path_from base_path}" 8266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis end 8366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 8466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisend 85