Commit e022da6b authored by Calvin Metcalf's avatar Calvin Metcalf
Browse files

adds the ability to do custom builds from the command line

parent d1b28c7e
Loading
Loading
Loading
Loading
+61 −7
Original line number Diff line number Diff line
var buildDefs = require('./buildDefs');

module.exports = function(grunt) {
  grunt.initConfig({
		pkg: grunt.file.readJSON('package.json'),
@@ -23,6 +25,13 @@ module.exports = function(grunt) {
						"http://"+(process.env.IP||"127.0.0.1")+":"+(process.env.PORT||"8080")+"/test/opt.html"
					]
				}
			},
      amd:{
        options: {
  				urls: [//my ide requries process.env.IP and PORT
						"http://"+(process.env.IP||"127.0.0.1")+":"+(process.env.PORT||"8080")+"/test/amd.html"
					]
				}
			}
		},
		jshint: {
@@ -39,20 +48,56 @@ module.exports = function(grunt) {
          define: true
        }
			},
			all: [ './src/*.js','./src/projCode/*.js','./src/defs/*.js']
			all: [ './src/*.js','./src/projCode/*.js']
		},
    requirejs: {
      compile: {
      custom:{
        options:{
          out: "./dist/proj4.custom.js",
          baseUrl: "./src",
          //name: "proj4",
          wrap: {
            startFile: 'almond/top.frag',
            endFile: 'almond/end.frag'
          },
          name: '../almond/almond',
          include: ['proj4'],
          optimize:'uglify2',
          uglify2:{
            mangle: true
          },
          preserveLicenseComments: false
        }
      },
      reg:{
        options:{
          out: "./dist/proj4.js",
          baseUrl: "./src",
          //name: "proj4",
          out: "./dist/proj4.amd.js",
          wrap: {
            startFile: 'almond/top.frag',
            endFile: 'almond/end.frag'
          },
          name: '../almond/almond',
          include: ['proj4']
          include: ['proj4'],
          optimize:'uglify2',
          uglify2:{
            mangle: true
          },
          preserveLicenseComments: false
        }
      },
      amd:{
        options:{
          out: "./dist/amd/proj4.js",
          baseUrl: "./src",
          name: "proj4",
          //include: ['proj4'],
          optimize:'none',
          uglify2:{
            mangle: true
          },
          preserveLicenseComments: false
        }
      }
    }
@@ -62,5 +107,14 @@ module.exports = function(grunt) {
	grunt.loadNpmTasks('grunt-contrib-connect');
	grunt.loadNpmTasks('grunt-mocha-phantomjs');
	grunt.registerTask('test', ['connect', 'mocha_phantomjs:before']);
  grunt.registerTask('default', ['jshint','test','requirejs','mocha_phantomjs:after']);
	grunt.registerTask('defs',function(){
		var defs = grunt.option('defs');
		if(defs && defs.indexOf(',')>-1){
			defs = defs.split(',');
		}
		buildDefs.defs(defs);
	});
  grunt.registerTask('amd',['defs','jshint','requirejs:amd','connect','mocha_phantomjs:amd']);
	grunt.registerTask('build',['defs','jshint','requirejs:custom']);
  grunt.registerTask('default', ['defs','jshint','test','requirejs:reg','mocha_phantomjs:after']);
}
+4 −1
Original line number Diff line number Diff line
(function (root, factory) {
  /* global module: false */
  if (typeof define === 'function' && define.amd) {
    define(factory);
  } else if(typeof module !== 'undefined'){
    module.exports = factory();
  }else {
    root.proj4 = factory();
  }

buildDefs.js

0 → 100644
+89 −0
Original line number Diff line number Diff line
var defaultLocals = require('./src/defs/defaultLocals');
var top = "define(function(require, exports, module) {module.exports = function(defs) {defs(";
var end = ")}});";
var pTop = "define(function(require, exports) {";
var pBottom = "});"
var projes = {
  aea: "exports.aea = require('./projCode/aea');",

  lcc: "exports.lcc = require('./projCode/lcc');",
  utm: "exports.utm = require('./projCode/utm');",
  aeqd: "exports.aeqd = require('./projCode/aeqd');",
  eqdc: "exports.eqdc = require('./projCode/eqdc');",

  merc: "exports.merc = require('./projCode/merc');",
  poly: "exports.poly = require('./projCode/poly');",
  mill: "exports.mill = require('./projCode/mill');",
  cea: "exports.cea = require('./projCode/cea');",
  krovak: "exports.krovak = require('./projCode/krovak');",
  sterea: "exports.sterea = require('./projCode/sterea');",

  laea: "exports.laea = require('./projCode/laea');",
  cass: "exports.cass = require('./projCode/cass');",
  eqc: "exports.eqc = require('./projCode/eqc');",
  tmerc: "exports.tmerc = require('./projCode/tmerc');",
  longlat: "exports.longlat = require('./projCode/longlat');exports.identity=exports.longlat;",
  somerc: "exports.somerc = require('./projCode/somerc');",
  sinu: "exports.sinu = require('./projCode/sinu');",
  stere: "exports.stere = require('./projCode/stere');",
  gnom: "exports.gnom = require('./projCode/gnom');",
  omerc: "exports.omerc = require('./projCode/omerc');",
  nzmg: "exports.nzmg = require('./projCode/nzmg');",
  moll: "exports.moll = require('./projCode/moll');",
  vandg: "exports.vandg = require('./projCode/vandg');"
};

var fs = require('fs');

function buildDefs(defs) {
  if (!defs) {
    return writeDefs(defaultLocals);
  }
  else if (typeof defs === 'string') {
    return writeDefs(defaultLocals.filter(filterString(defs)));
  }
  else {
    return writeDefs(defaultLocals.filter(filterArray(defs)));
  }
}

function writeDefs(defs) {
  writeProjes(defs);
  fs.writeFileSync('./src/defs/local.js', top + JSON.stringify(defs) + end, 'utf8');
}

function writeProjes(defs) {
  var out = {};
  defs.forEach(function(d) {
    if (d.projName && (d.projName in projes)) {
      out[d.projName] = projes[d.projName];
    }
  });
  out.longlat = projes.longlat;
  out.identity = out.longlat;
  var outString = pTop;
  for (var key in out) {
    outString += out[key];
  }
  outString += pBottom;
  fs.writeFileSync('./src/projections.js', outString, 'utf8');
}

function filterString(string) {
  var key = string.split(':')[0];
  var value = string.split(':')[1];
  return function(obj) {
    return (key in obj) && obj[key] === value;
  };
}

function filterArray(array) {
  var funcArray = array.map(filterString);
  return function(obj) {
    return funcArray.some(function(f) {
      return f(obj);
    });
  };
}

exports.defs = buildDefs;
+0 −14
Original line number Diff line number Diff line
@@ -20,20 +20,6 @@ define(function(require, exports, module) {
  var constants = require('./constants');
  var datum = require('./datum');
  var projections = require('./projections');
  projections.longlat = {
    init: function() {
      //no-op for longlat
    },
    forward: function(pt) {
      //identity transform
      return pt;
    },
    inverse: function(pt) {
      //identity transform
      return pt;
    }
  };
  projections.identity = projections.longlat;

  var proj = function(srsCode) {
    this.srsCodeInput = srsCode;
+4730 −4400

File changed and moved.

Preview size limit exceeded, changes collapsed.

Loading