1 Copyright (c) 2013 Brandon Jones, Colin MacKenzie IV 2 3 This software is provided 'as-is', without any express or implied 4 warranty. In no event will the authors be held liable for any damages 5 arising from the use of this software. 6 7 Permission is granted to anyone to use this software for any purpose, 8 including commercial applications, and to alter it and redistribute it 9 freely, subject to the following restrictions: 10 11 1. The origin of this software must not be misrepresented; you must not 12 claim that you wrote the original software. If you use this software 13 in a product, an acknowledgment in the product documentation would be 14 appreciated but is not required. 15 16 2. Altered source versions must be plainly marked as such, and must not 17 be misrepresented as being the original software. 18 19 3. This notice may not be removed or altered from any source distribution. 20 21 $:.unshift File.expand_path('.', File.dirname(__FILE__)) 22 require 'sprockets' 23 require 'jasmine' 24 25 class Jasmine::Config 26 def simple_config_file 27 File.expand_path GLMatrix.base_path.join('spec/jasmine.yml') 28 end 29 end 30 31 class Rack::Jasmine::Runner 32 alias_method :jasmine_call, :call 33 def call(env) 34 GLMatrix.compile 35 jasmine_call env 36 end 37 end 38 39 module GLMatrix 40 autoload :ReleaseHelper, 'gl-matrix/release_helper' 41 autoload :Version, 'gl-matrix/version' 42 autoload :VERSION, 'gl-matrix/version' 43 44 module_function 45 46 def release(&block) 47 GLMatrix::ReleaseHelper.release &block 48 end 49 50 def sprockets 51 env = Sprockets::Environment.new base_path 52 env.append_path base_path.join('src') 53 env 54 end 55 56 def base_path 57 Pathname.new File.expand_path('../..', File.dirname(__FILE__)) 58 end 59 60 # Compiles the source file to the dest file. If a block 61 # is given, the source file is yielded and replaced with 62 # the result. Returns the destination as a Pathname. 63 def compile(source = 'gl-matrix.js', dest = 'dist/gl-matrix.js') 64 dest = base_path.join dest 65 js = sprockets[source] 66 js = yield js if block_given? 67 68 File.open dest, "w" do |f| 69 f.puts js 70 end 71 72 puts "compiled #{source} to #{dest.relative_path_from base_path}" 73 dest 74 end 75 76 def minify(source = 'gl-matrix.js', dest = 'dist/gl-matrix-min.js') 77 dest = compile source, dest do |js| 78 Uglifier.compile js 79 end 80 81 puts "minified #{source} to #{dest.relative_path_from base_path}" 82 end 83 84 end 85