Selaa lähdekoodia

Added modularize script.

Mr.doob 6 vuotta sitten
vanhempi
commit
eebed390cb
1 muutettua tiedostoa jossa 94 lisäystä ja 0 poistoa
  1. 94 0
      utils/modularize.js

+ 94 - 0
utils/modularize.js

@@ -0,0 +1,94 @@
+/**
+ * @author mrdoob / http://mrdoob.com/
+ */
+
+var fs = require( 'fs' );
+
+var srcFolder = '../examples/js/';
+var dstFolder = '../examples/jsm/';
+
+var files = [
+	{ path: 'controls/OrbitControls.js', ignoreList: [] },
+	{ path: 'controls/MapControls.js', ignoreList: [] },
+	{ path: 'controls/TrackballControls.js', ignoreList: [] },
+	// { file: 'controls/TransformControls.js', ignoreList: [] },
+	{ path: 'loaders/GLTFLoader.js', ignoreList: [ 'NoSide', 'Matrix2', 'DDSLoader', 'DRACOLoader', 'BufferGeometryUtils' ] },
+	{ path: 'loaders/OBJLoader.js', ignoreList: [] }
+];
+
+for ( var i = 0; i < files.length; i ++ ) {
+
+	var file = files[ i ];
+	convert( file.path, file.ignoreList );
+
+}
+
+//
+
+function convert( path, ignoreList ) {
+
+	var contents = fs.readFileSync( srcFolder + path, 'utf8' );
+
+	var className = '';
+	var dependencies = {};
+
+	// class name
+
+	contents = contents.replace( /THREE\.([a-zA-Z0-9]+) = /g, function ( match, p1 ) {
+
+		className = p1;
+
+		console.log( className );
+
+		return `_IMPORTS_\n\nvar ${p1} = `;
+
+	} );
+
+	contents = contents.replace( /THREE\.([a-zA-Z0-9]+)\./g, function ( match, p1 ) {
+
+		if ( p1 === className ) return `${p1}.`;
+
+		return match;
+
+	} );
+
+	// methods
+
+	contents = contents.replace( /new THREE\.([a-zA-Z0-9]+)\(/g, function ( match, p1 ) {
+
+		if ( ignoreList.includes( p1 ) ) return match;
+
+		dependencies[ p1 ] = true;
+
+		return `new ${p1}(`;
+
+	} );
+
+	// constants
+
+	contents = contents.replace( /THREE\.([a-zA-Z0-9]+)/g, function ( match, p1 ) {
+
+		if ( ignoreList.includes( p1 ) ) return match;
+		if ( p1 === className ) return match;
+
+		dependencies[ p1 ] = true;
+
+		// console.log( match, p1 );
+
+		return `${p1}`;
+
+	} );
+
+	//
+
+	var keys = Object.keys( dependencies ).sort().map( value => '\n\t' + value ).toString();
+	var imports = `import {${keys}\n} from "../../../build/three.module.js";`;
+	var exports = `export { ${className} }`;
+
+	var output = contents.replace( '_IMPORTS_', imports ) + '\n' + exports;
+
+	// console.log( output );
+
+	fs.writeFileSync( dstFolder + path, output, 'utf-8' );
+
+};