#!/usr/bin/env python
import os
import tempfile
import sys
import urllib
JS = [
'js/libpannellum.js',
'js/RequestAnimationFrame.js',
'js/pannellum.js'
]
CSS = [
'css/pannellum.css'
]
HTML = [
'pannellum.htm'
]
def merge(files):
buffer = []
for filename in files:
with open(os.path.join('..', 'src', filename), 'r') as f:
buffer.append(f.read())
return "".join(buffer)
def read(filename):
with open(os.path.join('..','src',filename), 'rb') as f:
return f.read()
def output(text, filename):
with open(os.path.join('..', 'build', filename), 'wb') as f:
f.write(text)
def JScompress(text):
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.jar --language_in=ECMASCRIPT5 --js %s --js_output_file %s" % (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
def cssCompress(text):
in_tuple = tempfile.mkstemp()
with os.fdopen(in_tuple[0], 'w') as handle:
handle.write(text)
out_tuple = tempfile.mkstemp()
os.system("java -jar yuicompressor-2.4.7.jar %s --type css -o %s --charset utf-8 -v" % (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
def htmlCompress(text):
in_tuple = tempfile.mkstemp()
with os.fdopen(in_tuple[0], 'w') as handle:
handle.write(text)
out_tuple = tempfile.mkstemp()
os.system("java -jar htmlcompressor-1.5.3.jar --remove-intertag-spaces --remove-quotes -o %s %s" % (out_tuple[1], in_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
def addHeader(text):
text = text.replace('','');
header = '\n\n'
return header + text
def build(files, css, html, filename):
folder = ''
cssfilename = filename + '.css'
htmlfilename = filename + '.htm'
filename = filename + '.js'
print "=" * 40
print "Compiling", filename
print "=" * 40
js = merge(files)
js = JScompress(js)
print "=" * 40
print "Compiling", cssfilename
print "=" * 40
css = merge(css)
css = css.replace("'img/grab.svg'","'data:image/svg+xml," + urllib.quote(read('css/img/grab.svg'),'') + "'")
css = css.replace("'img/grabbing.svg'","'data:image/svg+xml," + urllib.quote(read('css/img/grabbing.svg'),'') + "'")
css = cssCompress(css)
css = css.replace("'img/sprites.svg'","'data:image/svg+xml," + urllib.quote(read('css/img/sprites.svg'),'') + "'")
print "=" * 40
print "Compiling", htmlfilename
print "=" * 40
html = merge(html)
html = html.replace('','')
html = html.replace('','')
html = html.replace('','')
html = html.replace('','')
html = html.replace('"_blank">Pannellum','"_blank">Pannellum ' + read('../VERSION') + '')
html = htmlCompress(html)
output(addHeader(html), folder + htmlfilename)
def main():
build(JS, CSS, HTML, 'pannellum')
if __name__ == "__main__":
main()