diff --git a/Makefile b/Makefile
index 2d0ac51f..d3b04cb0 100644
--- a/Makefile
+++ b/Makefile
@@ -40,8 +40,8 @@ build/$(PACKAGE): $(COMPILED_JS)
# Remove all hidden .svn directories
-find build/$(PACKAGE) -name .svn -type d | xargs rm -rf {} \;
- # Remove all JS files that were compiled
- rm $(JS_BUILD_FILES)
+ # Create the release version of the main HTML file.
+ build/tools/ship.py --i=editor/svg-editor.html --on=svg_edit_release > build/$(PACKAGE)/svg-editor.html
# codedread: NOTE: Some files are not ready for the Closure compiler: (jquery)
$(COMPILED_JS):
@@ -75,4 +75,8 @@ clean:
rm -rf build/$(PACKAGE)
rm -rf build/firefox
rm -rf build/opera
+ rm -rf build/$(PACKAGE).zip
+ rm -rf build/$(PACKAGE)-src.tar.gz
+ rm -rf build/$(PACKAGE).xpi
+ rm -rf build/$(PACKAGE).wgt
rm -rf $(COMPILED_JS)
diff --git a/build/tools/ship.py b/build/tools/ship.py
index 55f5d87f..4e0ae62b 100755
--- a/build/tools/ship.py
+++ b/build/tools/ship.py
@@ -4,16 +4,19 @@
# ship.py
#
# Licensed under the Apache 2 License as is the rest of the project
-#
# Copyright (c) 2011 Jeff Schiller
#
+# This script has very little real-world application. It is only used in our pure-client web
+# app served on GoogleCode so we can have one HTML file, run a build script and generate a 'release'
+# version without having to maintain two separate HTML files.
+#
# This script takes the following inputs:
#
-# * a HTML file
-# * a series of flag names
+# * a HTML file (--i=in.html)
+# * a series of flag names (--on=Foo --on=Bar)
#
-# It parses, the HTML file, enables/disables sections of the makrup based
-# on conditional comments and flag values, then outputs a new HTML file.
+# It parses, the HTML file, enables/disables sections of the markup based
+# on if-else comments and flag values, then outputs a new HTML file.
#
# Example:
#
@@ -24,7 +27,7 @@
# BAR!
#
#
-# $ ship.py --i in.html --o test-out.html --enable foo
+# $ ship.py --i in.html --on foo
#
# out.html:
#
@@ -33,30 +36,117 @@
# BAR!
#
#
-# Only if-else-endif are currently supported. All conditional comment expressions must
-# be on one line with no other non-whitespace characters.
+# It has the following limitations:
+#
+# 1) Only if-else-endif are currently supported.
+# 2) All processing comments must be on one line with no other non-whitespace characters.
+# 3) Comments cannot be nested.
import optparse
+import os
+
+inside_if = False
+last_if_true = False
_options_parser = optparse.OptionParser(
- usage="%prog --i input.svg --o output.svg [--enable flag1]",
- description=("Hello world!"))
-_options_parser.add_option("--i",
- action="store", dest="input_html_file", help="Input HTML filename")
-_options_parser.add_option("--o",
- action="store", dest="output_html_file", help="Output HTML filename")
-_options_parser.add_option("--on",
- action="append", type="string", dest="enabled_flags",
- help="name of flag to enable")
+ usage='%prog --i input.html [--on flag1]',
+ description=('Rewrites an HTML file based on conditional comments and flags'))
+_options_parser.add_option('--i',
+ action='store', dest='input_html_file', help='Input HTML filename')
+_options_parser.add_option('--on',
+ action='append', type='string', dest='enabled_flags',
+ help='name of flag to enable')
def parse_args(args=None):
- options, rargs = _options_parser.parse_args(args)
- print options
+ options, rargs = _options_parser.parse_args(args)
+ return options, (None, None)
- if rargs:
- _options_parser.error("Additional arguments not handled: %r, see --help" % rargs)
+def parseComment(line, line_num, enabled_flags):
+ global inside_if
+ global last_if_true
- return options, (None, None)
+ start = line.find('{')
+ end = line.find('}')
+ statement = line[start+1:end].strip()
+ if statement.startswith('if '):
+ if inside_if == True:
+ print 'Fatal Error: Nested {if} found on line ' + str(line_num)
+ print line
+ quit()
+
+ # Evaluate whether the expression is true/false.
+ # only one variable name allowed for now
+ variable_name = statement[3:].strip()
+ if variable_name in enabled_flags:
+ last_if_true = True
+ line = ''
+ else:
+ last_if_true = False
+ line = ''
+
+ # invert the logic so the endif clause is closed properly
+ last_if_true = not last_if_true
+
+ elif statement == 'endif':
+ if inside_if == False:
+ print 'Fatal Error: {endif} found without {if} on line ' + str(line_num)
+ print line
+ quit()
+
+ if last_if_true:
+ line = ''
+ else:
+ line = ''
+
+ inside_if = False
+
+ return line
+
+
+def ship(inFileName, enabled_flags):
+ # read in HTML file
+ in_file = file(inFileName, 'r')
+
+ i = 0
+ lines = in_file.readlines()
+
+ out_lines = []
+
+ # loop for each line of markup
+ for line in lines:
+ strline = line.strip()
+ # if we find a comment, process it and print out
+ if strline.startswith('
+