Browse Source

first release

ide user ide_gero3 13 years ago
parent
commit
d2be9844c6

+ 1 - 0
node_modules/argsparser/.gitignore

@@ -0,0 +1 @@
+.DS_Store

+ 4 - 0
node_modules/argsparser/Makefile

@@ -0,0 +1,4 @@
+test:
+	node test/test.js
+
+.PHONY: test

+ 1 - 0
node_modules/argsparser/index.js

@@ -0,0 +1 @@
+module.exports = require('./lib/argsparser');

+ 41 - 0
node_modules/argsparser/lib/argsparser.js

@@ -0,0 +1,41 @@
+/**
+ * Parser arguments array
+ * @param {Array} args optional arguments arrray.
+ * @return {Object} opts key value hash.
+ * @export
+ */
+exports.parse = function(args) {
+    // args is optional, default is process.argv
+    args = args || process.argv;
+
+    var opts = {}, curSwitch;
+
+    args.forEach(function(arg) {
+        // its a switch
+        if (/^(-|--)/.test(arg) || !curSwitch) {
+            opts[arg] = true;
+            curSwitch = arg;
+        // this arg is a data
+        } else {
+            if (arg === 'false') {
+                arg = false;
+            } else if (arg === 'true') {
+                arg = true;
+            } else if (!isNaN(arg)) {
+                arg = Number(arg);
+            }
+
+            // it was a boolean switch per default, 
+            // now it has got a val
+            if (typeof opts[curSwitch] === 'boolean') {
+                opts[curSwitch] = arg;
+            } else if (Array.isArray(opts[curSwitch])) {
+                opts[curSwitch].push(arg);
+            } else {
+                opts[curSwitch] = [opts[curSwitch], arg];
+            }
+        }
+    });
+
+    return opts;
+};

+ 19 - 0
node_modules/argsparser/package.json

@@ -0,0 +1,19 @@
+{
+    "name": "argsparser",
+    "description": "A tiny command line arguments parser",
+    "version": "0.0.6",
+    "author": "Oleg Slobodskoi <[email protected]>",
+    "repository": {
+        "type": "git",
+        "url": "http://github.com/kof/node-argsparser.git"
+    },
+    "keywords": [ "arguments", "options", "command line", "parser" ],
+    "engines": { "node": ">= 0.2.0" },
+    "scripts": { "test": "node ./test/test.js"  },
+    "licenses": [
+        { 
+            "type": "MIT",
+            "url" : "http://www.opensource.org/licenses/mit-license.php"
+        }
+    ]
+}

+ 34 - 0
node_modules/argsparser/readme.md

@@ -0,0 +1,34 @@
+## Yet another tiny arguments parser for node
+
+## Features
+ * extremely tiny
+ * instead to parse all possible spellings, it uses just some simple rules
+
+## How this parser works
+The target is to get a key-value object from an array. A key can be the first element or element prefixed by "-" and "--" (switch). 
+So the parser loops through the array and looks for keys. After he could detect an a key all next elements will be added as a value of this key until he find another key.
+If there is no value, then the key is true (boolean). If there are a lot of values, then the key is an array.
+
+## Examples
+
+node script.js -> {"node": "script.js"}
+
+node script.js -o -> {"node": "script.js", "-o": true}
+
+node script.js -o test -> {"node": "script.js", "-o": "test"}
+
+node script.js -a testa --b testb -> {node: "script.js", "-a": "testa", "--b": "testb"}
+ 
+node script.js -paths /test.js /test1.js -> {node: "script.js", "-paths": ["/test.js", "/test1.js"]}
+
+## Usage
+
+    // per default it parses process.argv
+    var args = require( "argsparser" ).parse(); // {"node": "/path/to/your/script.js"}
+    
+    // optional you can pass your own arguments array
+    var args = require( "argsparser" ).parse(["-a", "test"]); // {"-a": "test"}
+
+    
+## Installation
+    npm install argsparser    

+ 39 - 0
node_modules/argsparser/test/test.js

@@ -0,0 +1,39 @@
+var a = require('assert'),
+    util = require('util'),
+    parse = require('../lib/argsparser').parse;
+
+util.print('Run tests...\n');
+
+a.deepEqual(parse(), {node: __filename}, 'node script.js');
+
+a.deepEqual(parse(['-o']), {'-o': true}, 'node script.js -o');
+
+a.deepEqual(parse(['-o', 'true']), {'-o': true}, 'node script.js -o true');
+
+a.deepEqual(parse(['-o', 'false']), {'-o': false}, 'node script.js -o false');
+
+a.deepEqual(parse(['-o', '123']), {'-o': 123}, 'node script.js -o 123');
+
+a.deepEqual(parse(['--token', 'bla--bla']), {'--token': 'bla--bla'}, 'node script.js --token bla--bla');
+
+a.deepEqual(parse(['-o', '123.456']), {'-o': 123.456}, 'node script.js -o 123.456');
+
+a.deepEqual(parse(['-o', 'test']), {'-o': 'test'}, 'node script.js -o test');
+
+a.deepEqual(parse(['-a', 'testa', '-b', 'testb']), {'-a': 'testa', '-b': 'testb'}, 'node script.js -a testa -b testb');
+
+a.deepEqual(parse(['--a', 'testa', '--b', 'testb']), {'--a': 'testa', '--b': 'testb'}, 'node script.js --a testa --b testb ');
+
+a.deepEqual(parse(['-a', 'testa', '--b', 'testb']), {'-a': 'testa', '--b': 'testb'}, 'node script.js -a testa --b testb');
+
+a.deepEqual(parse(['--a', 'testa', '-b', 'testb']), {'--a': 'testa', '-b': 'testb'}, 'node script.js --a testa -b testb');
+
+a.deepEqual(parse(['-paths', '/test.js', '/test1.js']), {'-paths': ['/test.js', '/test1.js']}, 'node script.js -paths /test.js /test1.js');
+
+a.deepEqual(parse(['--paths', '/test.js', '/test1.js']), {'--paths': ['/test.js', '/test1.js']}, 'node script.js --paths /test.js /test1.js');
+
+a.deepEqual(parse(['--paths', '/test.js', '/test1.js', '-a', 'testa']), {'--paths': ['/test.js', '/test1.js'], '-a': 'testa'}, 'node script.js --paths /test.js /test1.js -a testa');
+
+a.deepEqual(parse(['--port', '80', '8080']), {'--port': [80, 8080]}, 'node server.js --port 80 8080');
+
+util.print('All tests ok\n');

+ 438 - 0
utils/build.js

@@ -0,0 +1,438 @@
+var fs = require("fs");
+var path = require("path");
+var argsparser =  require( "argsparser" );
+
+
+var COMMON_FILES = [
+'Three.js',
+'core/Clock.js',
+'core/Color.js',
+'core/Vector2.js',
+'core/Vector3.js',
+'core/Vector4.js',
+'core/Frustum.js',
+'core/Ray.js',
+'core/Rectangle.js',
+'core/Math.js',
+'core/Matrix3.js',
+'core/Matrix4.js',
+'core/Object3D.js',
+'core/Projector.js',
+'core/Quaternion.js',
+'core/Vertex.js',
+'core/Face3.js',
+'core/Face4.js',
+'core/UV.js',
+'core/Geometry.js',
+'core/Spline.js',
+'cameras/Camera.js',
+'cameras/OrthographicCamera.js',
+'cameras/PerspectiveCamera.js',
+'lights/Light.js',
+'lights/AmbientLight.js',
+'lights/DirectionalLight.js',
+'lights/PointLight.js',
+'lights/SpotLight.js',
+'loaders/Loader.js',
+'loaders/BinaryLoader.js',
+'loaders/JSONLoader.js',
+'loaders/SceneLoader.js',
+'materials/Material.js',
+'materials/LineBasicMaterial.js',
+'materials/MeshBasicMaterial.js',
+'materials/MeshLambertMaterial.js',
+'materials/MeshPhongMaterial.js',
+'materials/MeshDepthMaterial.js',
+'materials/MeshNormalMaterial.js',
+'materials/MeshFaceMaterial.js',
+'materials/ParticleBasicMaterial.js',
+'materials/ParticleCanvasMaterial.js',
+'materials/ParticleDOMMaterial.js',
+'materials/ShaderMaterial.js',
+'textures/Texture.js',
+'textures/DataTexture.js',
+'objects/Particle.js',
+'objects/ParticleSystem.js',
+'objects/Line.js',
+'objects/Mesh.js',
+'objects/Bone.js',
+'objects/SkinnedMesh.js',
+'objects/MorphAnimMesh.js',
+'objects/Ribbon.js',
+'objects/LOD.js',
+'objects/Sprite.js',
+'scenes/Scene.js',
+'scenes/Fog.js',
+'scenes/FogExp2.js',
+'renderers/CanvasRenderer.js',
+'renderers/WebGLShaders.js',
+'renderers/WebGLRenderer.js',
+'renderers/WebGLRenderTarget.js',
+'renderers/WebGLRenderTargetCube.js',
+'renderers/renderables/RenderableVertex.js',
+'renderers/renderables/RenderableFace3.js',
+'renderers/renderables/RenderableFace4.js',
+'renderers/renderables/RenderableObject.js',
+'renderers/renderables/RenderableParticle.js',
+'renderers/renderables/RenderableLine.js'
+];
+
+var EXTRAS_FILES = [
+'extras/ColorUtils.js',
+'extras/GeometryUtils.js',
+'extras/ImageUtils.js',
+'extras/SceneUtils.js',
+'extras/ShaderUtils.js',
+'extras/core/BufferGeometry.js',
+'extras/core/Curve.js',
+'extras/core/CurvePath.js',
+'extras/core/EventTarget.js',
+'extras/core/Gyroscope.js',
+'extras/core/Path.js',
+'extras/core/Shape.js',
+'extras/core/TextPath.js',
+'extras/animation/AnimationHandler.js',
+'extras/animation/Animation.js',
+'extras/animation/KeyFrameAnimation.js',
+'extras/cameras/CubeCamera.js',
+'extras/cameras/CombinedCamera.js',
+'extras/controls/FirstPersonControls.js',
+'extras/controls/PathControls.js',
+'extras/controls/FlyControls.js',
+'extras/controls/RollControls.js',
+'extras/controls/TrackballControls.js',
+'extras/geometries/CubeGeometry.js',
+'extras/geometries/CylinderGeometry.js',
+'extras/geometries/ExtrudeGeometry.js',
+'extras/geometries/LatheGeometry.js',
+'extras/geometries/PlaneGeometry.js',
+'extras/geometries/SphereGeometry.js',
+'extras/geometries/TextGeometry.js',
+'extras/geometries/TorusGeometry.js',
+'extras/geometries/TorusKnotGeometry.js',
+'extras/geometries/TubeGeometry.js',
+'extras/geometries/PolyhedronGeometry.js',
+'extras/geometries/IcosahedronGeometry.js',
+'extras/geometries/OctahedronGeometry.js',
+'extras/geometries/TetrahedronGeometry.js',
+'extras/geometries/ParametricGeometry.js',
+'extras/helpers/AxisHelper.js',
+'extras/helpers/ArrowHelper.js',
+'extras/helpers/CameraHelper.js',
+'extras/modifiers/SubdivisionModifier.js',
+'extras/objects/ImmediateRenderObject.js',
+'extras/objects/LensFlare.js',
+'extras/objects/MorphBlendMesh.js',
+'extras/renderers/plugins/LensFlarePlugin.js',
+'extras/renderers/plugins/ShadowMapPlugin.js',
+'extras/renderers/plugins/SpritePlugin.js',
+'extras/renderers/plugins/DepthPassPlugin.js',
+'extras/shaders/ShaderFlares.js',
+'extras/shaders/ShaderSprite.js'
+];
+
+var CANVAS_FILES = [
+'Three.js',
+'core/Color.js',
+'core/Vector2.js',
+'core/Vector3.js',
+'core/Vector4.js',
+'core/Frustum.js',
+'core/Ray.js',
+'core/Rectangle.js',
+'core/Math.js',
+'core/Matrix3.js',
+'core/Matrix4.js',
+'core/Object3D.js',
+'core/Projector.js',
+'core/Quaternion.js',
+'core/Vertex.js',
+'core/Face3.js',
+'core/Face4.js',
+'core/UV.js',
+'core/Geometry.js',
+'cameras/Camera.js',
+'cameras/OrthographicCamera.js',
+'cameras/PerspectiveCamera.js',
+'lights/Light.js',
+'lights/AmbientLight.js',
+'lights/DirectionalLight.js',
+'lights/PointLight.js',
+'loaders/Loader.js',
+'loaders/BinaryLoader.js',
+'loaders/JSONLoader.js',
+'loaders/SceneLoader.js',
+'materials/Material.js',
+'materials/LineBasicMaterial.js',
+'materials/MeshBasicMaterial.js',
+'materials/MeshLambertMaterial.js',
+'materials/MeshPhongMaterial.js',
+'materials/MeshDepthMaterial.js',
+'materials/MeshNormalMaterial.js',
+'materials/MeshFaceMaterial.js',
+'materials/ParticleBasicMaterial.js',
+'materials/ParticleCanvasMaterial.js',
+'textures/Texture.js',
+'textures/DataTexture.js',
+'objects/Particle.js',
+'objects/Line.js',
+'objects/Mesh.js',
+'objects/Bone.js',
+'objects/Sprite.js',
+'scenes/Scene.js',
+'renderers/CanvasRenderer.js',
+'renderers/renderables/RenderableVertex.js',
+'renderers/renderables/RenderableFace3.js',
+'renderers/renderables/RenderableFace4.js',
+'renderers/renderables/RenderableObject.js',
+'renderers/renderables/RenderableParticle.js',
+'renderers/renderables/RenderableLine.js'
+];
+
+var WEBGL_FILES = [
+'Three.js',
+'core/Color.js',
+'core/Vector2.js',
+'core/Vector3.js',
+'core/Vector4.js',
+'core/Frustum.js',
+'core/Ray.js',
+'core/Rectangle.js',
+'core/Math.js',
+'core/Matrix3.js',
+'core/Matrix4.js',
+'core/Object3D.js',
+'core/Projector.js',
+'core/Quaternion.js',
+'core/Vertex.js',
+'core/Face3.js',
+'core/Face4.js',
+'core/UV.js',
+'core/Geometry.js',
+'core/Spline.js',
+'cameras/Camera.js',
+'cameras/OrthographicCamera.js',
+'cameras/PerspectiveCamera.js',
+'lights/Light.js',
+'lights/AmbientLight.js',
+'lights/DirectionalLight.js',
+'lights/PointLight.js',
+'lights/SpotLight.js',
+'loaders/Loader.js',
+'loaders/BinaryLoader.js',
+'loaders/JSONLoader.js',
+'loaders/SceneLoader.js',
+'materials/Material.js',
+'materials/LineBasicMaterial.js',
+'materials/MeshBasicMaterial.js',
+'materials/MeshLambertMaterial.js',
+'materials/MeshPhongMaterial.js',
+'materials/MeshDepthMaterial.js',
+'materials/MeshNormalMaterial.js',
+'materials/MeshFaceMaterial.js',
+'materials/ParticleBasicMaterial.js',
+'materials/ShaderMaterial.js',
+'textures/Texture.js',
+'textures/DataTexture.js',
+'objects/Particle.js',
+'objects/ParticleSystem.js',
+'objects/Line.js',
+'objects/Mesh.js',
+'objects/Bone.js',
+'objects/SkinnedMesh.js',
+'objects/Ribbon.js',
+'objects/LOD.js',
+'objects/Sprite.js',
+'scenes/Scene.js',
+'scenes/Fog.js',
+'scenes/FogExp2.js',
+'renderers/WebGLShaders.js',
+'renderers/WebGLRenderer.js',
+'renderers/WebGLRenderTarget.js',
+'renderers/WebGLRenderTargetCube.js',
+'renderers/renderables/RenderableVertex.js',
+'renderers/renderables/RenderableFace3.js',
+'renderers/renderables/RenderableFace4.js',
+'renderers/renderables/RenderableObject.js',
+'renderers/renderables/RenderableParticle.js',
+'renderers/renderables/RenderableLine.js',
+'extras/core/BufferGeometry.js',
+'extras/core/Gyroscope.js',
+'extras/helpers/CameraHelper.js',
+'extras/objects/LensFlare.js',
+'extras/objects/ImmediateRenderObject.js',
+'extras/renderers/plugins/LensFlarePlugin.js',
+'extras/renderers/plugins/ShadowMapPlugin.js',
+'extras/renderers/plugins/SpritePlugin.js',
+'extras/shaders/ShaderFlares.js',
+'extras/shaders/ShaderSprite.js'
+];
+
+function merge(files){
+	"use strict";
+	var buffer = [];
+	for (var i = 0,il = files.length;i<il;i++){
+		var fileName = path.join("src", files[i]);
+		buffer.push(fs.readFileSync(fileName,'utf8'));
+	}
+	
+	return buffer.join("");
+
+}
+
+function output(text, filename){
+	"use strict";
+    var file = path.join('build', filename);
+    fs.writeFileSync(file,text,'utf8');
+}
+
+
+function compress(text, fname_externs){
+	/*
+
+	externs = ""
+	if fname_externs:
+		externs = "--externs %s.js" % fname_externs
+
+	in_tuple = tempfile.mkstemp()
+	with os.fdopen(in_tuple[0], 'w') as handle:
+		handle.write(text)
+
+	out_tuple = tempfile.mkstemp()
+
+	os.system("java -jar compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis --jscomp_off=checkTypes --externs externs_common.js %s --language_in=ECMASCRIPT5_STRICT --js %s --js_output_file %s" % (externs, in_tuple[1], out_tuple[1]))
+
+	with os.fdopen(out_tuple[0], 'r') as handle:
+		compressed = handle.read()
+
+	os.unlink(in_tuple[1])
+	os.unlink(out_tuple[1])
+
+	return compressed*/
+	"use strict";
+	return text;
+}
+
+function addHeader(text, endFilename){
+	"use strict";
+	return "// " + endFilename + " - http://github.com/mrdoob/three.js\n" + text;
+	
+}
+
+function makeDebug(text){
+	"use strict";
+	var position = 0;
+	while (true){
+		position = text.indexOf("/* DEBUG", position);
+		if (position == -1){
+			break;
+		}
+		text = text.substring(0,position) + text.substring(position+8);
+		position = text.find("*/", position);
+		text = text.substring(0,position) + text.substring(position+2);
+	}
+	return text;
+}
+
+function buildLib(files, debug, minified, filename, fname_externs){
+	"use strict";
+	var text = merge(files);
+
+	if (debug){
+		text = makeDebug(text);
+		filename = filename + 'Debug';
+	}
+	
+	var folder;
+	if (filename == "Three"){
+		folder = '';
+	} else {
+		folder = 'custom/';
+	}
+
+	filename = filename + '.js';
+
+	//print("=" * 40)
+	console.log("========================================");
+	console.log("Compiling " + filename);
+	//print("=" * 40)
+	console.log("========================================");
+
+	if (minified){
+		text = compress(text, fname_externs);
+	}
+
+	output(addHeader(text, filename), folder + filename);
+
+}
+
+function buildIncludes(files, filename){
+	"use strict";
+	//var template = "\t\t<script src='../src/%s'></script>";
+	//var text = "\n".join(template % f for f in files)
+	var text = [];
+	for (var i = 0,il = files.length;i<il;i++){
+		text.push("\t\t<script src='../src/" + files[i] + "'></script>");
+	}
+	
+	output(text.join("\n"), filename + '.js');
+}
+
+
+function parse_args(){
+	"use strict";
+	//parse 
+	var returnValue = argsparser.parse();
+	/*
+	# If no arguments have been passed, show the help message and exit
+	if len(sys.argv) == 1:
+		parser.print_help()
+		sys.exit(1)
+*/
+	for (var i in returnValue){
+		if (i.substring(0,2) == "--"){
+			returnValue[i.substring(2)] = returnValue[i];
+			delete returnValue[i];
+		} else {
+			delete returnValue[i];
+		}
+	}
+	return returnValue;
+}
+
+function main(){
+	try {
+	"use strict";
+	var args = parse_args();
+	var debug = args.debug;
+	var minified = args.minified;
+
+	var config = [
+	['Three', 'includes', '', COMMON_FILES.concat(EXTRAS_FILES), args.common],
+	['ThreeCanvas', 'includes_canvas', '', CANVAS_FILES, args.canvas],
+	['ThreeWebGL', 'includes_webgl', '', WEBGL_FILES, args.webgl],
+	['ThreeExtras', 'includes_extras', 'externs_extras', EXTRAS_FILES, args.extras]
+	];
+
+
+	for (var i = 0,il = config.length;i<il;i++){
+		var chosenConfig = config[i],
+			fname_lib = chosenConfig[0], 
+			fname_inc = chosenConfig[1], 
+			fname_externs = chosenConfig[2], 
+			files = chosenConfig[3], 
+			enabled = chosenConfig[4];
+		if (enabled || args.all){
+			buildLib(files, debug, minified, fname_lib, fname_externs);
+			if (args.includes){
+				buildIncludes(files, fname_inc);
+			}
+		}
+	}
+	}catch(e){
+		console.dir(e);
+	}
+}
+main();
+
+