Add alternate DNA format import
This commit is contained in:
@@ -46,15 +46,11 @@ DNA_OPTIONS = (
|
||||
|
||||
def importDna(string, fitName=None):
|
||||
sMkt = Market.getInstance()
|
||||
|
||||
ids = list(map(int, re.findall(r'\d+', string)))
|
||||
for id_ in ids:
|
||||
try:
|
||||
try:
|
||||
try:
|
||||
Ship(sMkt.getItem(sMkt.getItem(id_)))
|
||||
except ValueError:
|
||||
Citadel(sMkt.getItem(sMkt.getItem(id_)))
|
||||
Ship(sMkt.getItem(id_))
|
||||
except ValueError:
|
||||
Citadel(sMkt.getItem(id_))
|
||||
string = string[string.index(str(id_)):]
|
||||
@@ -66,7 +62,29 @@ def importDna(string, fitName=None):
|
||||
pass
|
||||
string = string[:string.index("::") + 2]
|
||||
info = string.split(":")
|
||||
return processImportInfo(info, fitName, ";")
|
||||
|
||||
def importDnaAlt(string, fitName=None):
|
||||
sMkt = Market.getInstance()
|
||||
ids = list(map(int, re.findall(r'\d+', string)))
|
||||
for id_ in ids:
|
||||
try:
|
||||
try:
|
||||
Ship(sMkt.getItem(id_))
|
||||
except ValueError:
|
||||
Citadel(sMkt.getItem(id_))
|
||||
string = string[string.index(str(id_)):]
|
||||
break
|
||||
except (KeyboardInterrupt, SystemExit):
|
||||
raise
|
||||
except:
|
||||
pyfalog.warning("Exception caught in importDna")
|
||||
pass
|
||||
info = string.split(":")
|
||||
return processImportInfo(info, fitName, "*")
|
||||
|
||||
def processImportInfo(info, fitName, amountSeparator):
|
||||
sMkt = Market.getInstance()
|
||||
f = Fit()
|
||||
try:
|
||||
try:
|
||||
@@ -89,7 +107,11 @@ def importDna(string, fitName=None):
|
||||
moduleList = []
|
||||
for itemInfo in info[1:]:
|
||||
if itemInfo:
|
||||
itemID, amount = itemInfo.split(";")
|
||||
if amountSeparator in itemInfo:
|
||||
itemID, amount = itemInfo.split(amountSeparator)
|
||||
else:
|
||||
itemID = itemInfo
|
||||
amount = 1
|
||||
item = sMkt.getItem(int(itemID), eager="group.category")
|
||||
|
||||
if item.category.name == "Drone":
|
||||
|
||||
@@ -31,7 +31,7 @@ from logbook import Logger
|
||||
from eos import db
|
||||
from eos.const import ImplantLocation
|
||||
from service.fit import Fit as svcFit
|
||||
from service.port.dna import exportDna, importDna
|
||||
from service.port.dna import exportDna, importDna, importDnaAlt
|
||||
from service.port.eft import (
|
||||
exportEft, importEft, importEftCfg,
|
||||
isValidDroneImport, isValidFighterImport, isValidCargoImport,
|
||||
@@ -250,6 +250,9 @@ class Port:
|
||||
m = re.search(dnaChatPattern, firstLine)
|
||||
if m:
|
||||
return "DNA", True, (cls.importDna(m.group("dna"), fitName=m.group("fitName")),)
|
||||
m = re.search(r"DNA:(?P<dna>\d+(:\d+(\*\d+)?)*)", firstLine)
|
||||
if m:
|
||||
return "DNA", True, (cls.importDnaAlt(m.group("dna")),)
|
||||
|
||||
if activeFit is not None:
|
||||
# Try to import mutated module
|
||||
@@ -297,6 +300,10 @@ class Port:
|
||||
def importDna(string, fitName=None):
|
||||
return importDna(string, fitName=fitName)
|
||||
|
||||
@staticmethod
|
||||
def importDnaAlt(string, fitName=None):
|
||||
return importDnaAlt(string, fitName=fitName)
|
||||
|
||||
@staticmethod
|
||||
def exportDna(fit, options, callback=None):
|
||||
return exportDna(fit, options, callback=callback)
|
||||
|
||||
Reference in New Issue
Block a user