# 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 re, copy, math
from bs4 import BeautifulSoup, Tag
from mutil.mutil import *
from inter import inter

  def __init__(self, fn):
    self.fn = fn
    self.soup = _load_xml_file(fn)
    _check_xml(self.soup)

  def save(self):
    _save_xml_file(self.fn, self.soup)

  def get_data(self):
   return str(self.soup)

  # remark that this pretty formatting is NOT what is used in the final
  # eagle XML as eagle does not get rid of heading and trailing \n and such
  def get_pretty_data(self):
   return str(self.soup.prettify())

  def get_pretty_footprint(self, eagle_name):
    packages = self.soup.eagle.drawing.packages('package')
    for some_package in packages:
      if some_package['name'].lower() == eagle_name.lower():
        return str(some_package.prettify())
    raise Exception("Footprint not found")
   

  def export_footprint(self, interim):
    # make a deep copy so we can make mods without harm
    interim = copy.deepcopy(interim)
    interim = self.add_ats_to_names(interim)
    interim = clean_floats(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: export/eagle.py
import re, copy, math
from bs4 import BeautifulSoup, Tag
from mutil.mutil import *
from inter import inter


  def __init__(self, fn):
    self.fn = fn
    self.soup = _load_xml_file(fn)
    _check_xml(self.soup)

  def save(self):
    _save_xml_file(self.fn, self.soup)

  def get_data(self):
   return str(self.soup)

  # remark that this pretty formatting is NOT what is used in the final
  # eagle XML as eagle does not get rid of heading and trailing \n and such
  def get_pretty_data(self):
   return str(self.soup.prettify())

  def get_pretty_footprint(self, eagle_name):
    packages = self.soup.eagle.drawing.packages('package')
    for some_package in packages:
      if some_package['name'].lower() == eagle_name.lower():
        return str(some_package.prettify())
    raise Exception("Footprint not found")
   

  def export_footprint(self, interim):
    # make a deep copy so we can make mods without harm
    interim = copy.deepcopy(interim)
    interim = self.add_ats_to_names(interim)
    interim = clean_floats(interim)

    meta = inter.get_meta(interim)