166a37686207944273ced825e0e8b6b6375f8c3deJamie GennisCopyright (c) 2013 Brandon Jones, Colin MacKenzie IV 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 366a37686207944273ced825e0e8b6b6375f8c3deJamie GennisThis software is provided 'as-is', without any express or implied 466a37686207944273ced825e0e8b6b6375f8c3deJamie Genniswarranty. In no event will the authors be held liable for any damages 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisarising from the use of this software. 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie GennisPermission is granted to anyone to use this software for any purpose, 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisincluding commercial applications, and to alter it and redistribute it 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisfreely, subject to the following restrictions: 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1. The origin of this software must not be misrepresented; you must not 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis claim that you wrote the original software. If you use this software 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis in a product, an acknowledgment in the product documentation would be 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis appreciated but is not required. 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2. Altered source versions must be plainly marked as such, and must not 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis be misrepresented as being the original software. 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3. This notice may not be removed or altered from any source distribution. 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 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