diff --git a/bin/combine-examples.py b/bin/combine-examples.py new file mode 100755 index 0000000000..67c02ab2dd --- /dev/null +++ b/bin/combine-examples.py @@ -0,0 +1,27 @@ +#!/usr/bin/python + +import re +import sys + + +def main(argv): + examples = {} + requires = set() + for filename in argv[1:]: + lines = open(filename).readlines() + if len(lines) > 0 and lines[0].startswith('// NOCOMPILE'): + continue + requires.update(line for line in lines if line.startswith('goog.require')) + examples[filename] = [line for line in lines if not line.startswith('goog.require')] + for require in sorted(requires): + print require, + for filename in sorted(examples.keys()): + print '// ', filename + print '(function(){' + for line in examples[filename]: + print line, + print '})();' + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/build.py b/build.py index 97176d259f..9d4b0a3f14 100755 --- a/build.py +++ b/build.py @@ -166,7 +166,7 @@ virtual('default', 'build') virtual('integration-test', 'lint', 'build', 'build-all', - 'test', 'build-examples', 'check-examples', 'apidoc') + 'test', 'build/examples/all.combined.js', 'check-examples', 'apidoc') virtual('build', 'build/ol.css', 'build/ol.js', @@ -280,7 +280,8 @@ def build_src_internal_types_js(t): '--typedef', 'src/objectliterals.jsdoc') -virtual('build-examples', 'examples', EXAMPLES_COMBINED) +virtual('build-examples', 'examples', 'build/examples/all.combined.js', + EXAMPLES_COMBINED) virtual('examples', 'examples/example-list.xml', EXAMPLES_JSON) @@ -296,6 +297,20 @@ def examples_examples_list_js(t): t.run('%(PYTHON)s', 'bin/exampleparser.py', 'examples', 'examples') +@target('build/examples/all.combined.js', 'build/examples/all.js', PLOVR_JAR, + SRC, INTERNAL_SRC, SHADER_SRC, LIBTESS_JS_SRC, + 'buildcfg/base.json', 'build/examples/all.json') +def build_examples_all_combined_js(t): + t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build', + 'buildcfg/examples-all.json') + report_sizes(t) + + +@target('build/examples/all.js', EXAMPLES_SRC) +def build_examples_all_js(t): + t.output('bin/combine-examples.py', t.dependencies) + + @rule(r'\Abuild/examples/(?P.*).json\Z') def examples_star_json(name, match): def action(t): diff --git a/buildcfg/examples-all.json b/buildcfg/examples-all.json new file mode 100644 index 0000000000..32af55283e --- /dev/null +++ b/buildcfg/examples-all.json @@ -0,0 +1,20 @@ +{ + "externs": [ + "//json.js", + "//jquery-1.7.js", + "../externs/bingmaps.js", + "../externs/bootstrap.js", + "../externs/geojson.js", + "../externs/topojson.js", + "../externs/oli.js", + "../externs/proj4js.js", + "../externs/tilejson.js", + "../externs/closure-compiler.js" + ], + "id": "simple", + "inherits": "base.json", + "inputs": [ + "../build/examples/all.js", + "../build/src/internal/src/types.js" + ] +}