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