Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pconerly/9ca03d588e6a5bf49e44 to your computer and use it in GitHub Desktop.
Save pconerly/9ca03d588e6a5bf49e44 to your computer and use it in GitHub Desktop.
import fnmatch
import glob
import os
start_dir = '.'
start_dir = '/Users/peterconerly/src/picmonkey/py/frontend/frontend/static/js/v2'
extension = '*.coffee'
for root, dirnames, filenames in os.walk(start_dir):
for filename in fnmatch.filter(filenames, extension):
file = os.path.join(root, filename)
print "================================================"
print file
f = open(file, 'r+')
finstr = f.read()
already_converted = "define((require) ->"
alreadyIndex = finstr.find(already_converted)
if alreadyIndex > -1:
print " %s" % alreadyIndex
print " %s" % file
continue
start = "define(["
mid = "], ("
end = ") ->"
startIndex = finstr.find(start)
midIndex = finstr.find(mid)
endIndex = finstr.find(end)
print startIndex, midIndex, endIndex
if -1 in [start, mid, end]:
print "Didn't find one of the requirejs markers."
requires = finstr[startIndex +len(start):midIndex].strip().split(',')
variables = finstr[midIndex+len(mid):endIndex].strip().split(',')
# remove empties, due to awesome trailing commas.
requires = filter(None, requires)
variables = filter(None, variables)
# print "-------"
# print len(requires)
# print requires
# print "-------"
# print len(variables)
# print variables
# print "-------"
assert(len(requires) == len(variables))
require_tmpl = " %s = require(%s)"
require_strings = [require_tmpl % (var.strip(), req.strip()) for var, req in zip(variables, requires)]
require_block = "\n".join(require_strings)
# print require_block
define_tmpl = """define((require) ->
%s"""
print define_tmpl % require_block
result = define_tmpl % require_block
# result += "\n"
result += finstr[endIndex+len(end):]
print "------------------------------------------------"
print "converted."
# print result
# fout = open(file, 'w')
f.seek(0)
f.write(result)
f.truncate()
f.close()
print "================================================"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment