Home | History | Annotate | Download | only in support
      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