# Path: inter/inter.py
# def cleanup_js(inter):
#   def _remove_constructor(item):
# def add_names(inter):
#   def generate_ints():
#   def _c(x):
# def get_meta(inter):
# def prepare_for_display(inter, filter_out):
#   def _sort(x1, x2):
#   def convert(x):
# def bounding_box(inter):
#   def oget(m, k, d):
#   def fget(m, k, d = 0.0):
#   def circle(shape):
#   def disc(shape):
#   def label(shape):
#   def vertex(shape):
#   def polygon(shape):
#   def octagon(shape):
#   def rect(shape):
#   def unknown(shape):
# def size(inter):
# def sort_by_type(inter):
#   def _sort(x1, x2):
# def _count_num_values(pads, param):
# def _equidistant(pads, direction):
# def _all_equal(pads, direction):
# def _sort_by_field(pads, field, reverse=False):
#   def _sort_by(a, b):
# def _clone_pad(pad_in, remove):
# def _make_mods(skip, pad, pads):
# def _check_single(orig_pads, horizontal):
# def _split_dual(pads, direction):
# def _one_by_one_equal(r1, r2, direction):
# def _check_dual_alt(r1, r2):
# def _check_dual(orig_pads, horizontal):
# def _split_quad(pads):
# def _check_quad(orig_pads):
# def _check_sequential(pads):
# def _find_pad_patterns(pads):
# def find_pad_patterns(inter):
# def import_footprint(importer, footprint_name):


import os.path, re, traceback
from inter import inter
from qtscriptwrapper import JsEngine
from qtscriptwrapper import JsEngineException

def new_coffee(new_id, new_name):
  return """\
#format %s
#name %s
#id %s
#desc TODO

footprint = () ->
  []
""" % (current_format, new_name, new_id)

def preprocess_coffee(code):
  def repl(m):
    t = m.group(2)
    i = float(m.group(1))
    if t == 'mi' or t == 'mil':
      return str(i*0.0254)
    elif t == 'in':
      return str(i*25.4)
    else:
      return m.group(0)
  return re.sub('([-+]?[0-9]*\.?[0-9]+)([mi][ni]l?)', repl, code)

def compile_coffee(code):
  try:
    preprocessed = preprocess_coffee(code)
    interim = eval_coffee_footprint(preprocessed)
    if interim != None:
      interim = inter.cleanup_js(interim)

# Path: inter/inter.py
# def cleanup_js(inter):
#   def _remove_constructor(item):
# def add_names(inter):
#   def generate_ints():
#   def _c(x):
# def get_meta(inter):
# def prepare_for_display(inter, filter_out):
#   def _sort(x1, x2):
#   def convert(x):
# def bounding_box(inter):
#   def oget(m, k, d):
#   def fget(m, k, d = 0.0):
#   def circle(shape):
#   def disc(shape):
#   def label(shape):
#   def vertex(shape):
#   def polygon(shape):
#   def octagon(shape):
#   def rect(shape):
#   def unknown(shape):
# def size(inter):
# def sort_by_type(inter):
#   def _sort(x1, x2):
# def _count_num_values(pads, param):
# def _equidistant(pads, direction):
# def _all_equal(pads, direction):
# def _sort_by_field(pads, field, reverse=False):
#   def _sort_by(a, b):
# def _clone_pad(pad_in, remove):
# def _make_mods(skip, pad, pads):
# def _check_single(orig_pads, horizontal):
# def _split_dual(pads, direction):
# def _one_by_one_equal(r1, r2, direction):
# def _check_dual_alt(r1, r2):
# def _check_dual(orig_pads, horizontal):
# def _split_quad(pads):
# def _check_quad(orig_pads):
# def _check_sequential(pads):
# def _find_pad_patterns(pads):
# def find_pad_patterns(inter):
# def import_footprint(importer, footprint_name):


# Path: coffee/pycoffee.py
import os.path, re, traceback
from inter import inter
from qtscriptwrapper import JsEngine
from qtscriptwrapper import JsEngineException


def new_coffee(new_id, new_name):
  return """\
#format %s
#name %s
#id %s
#desc TODO

footprint = () ->
  []
""" % (current_format, new_name, new_id)

def preprocess_coffee(code):
  def repl(m):
    t = m.group(2)
    i = float(m.group(1))
    if t == 'mi' or t == 'mil':
      return str(i*0.0254)
    elif t == 'in':
      return str(i*25.4)
    else:
      return m.group(0)
  return re.sub('([-+]?[0-9]*\.?[0-9]+)([mi][ni]l?)', repl, code)

def compile_coffee(code):
  try:
    preprocessed = preprocess_coffee(code)
    interim = eval_coffee_footprint(preprocessed)
    if interim != None:
      interim = inter.cleanup_js(interim)

      interim = inter.add_names(interim)