# -- coding: utf-8 --

"""
create the files:
  add_to_prefs
  Zeitschriftenaufsatz-Profil.txt
"""

numauthors=12

liste0 = (
("issn","ISSN","ISSN",0), # 4th Element means: Rule is not used
("isbn","ISBN","ISBN"), # (Beitrag in einem Sammelwerk)
("doi","DOI","DOI"),
("titel","TITEL","Titel"),
("titel","TITEL","Webseite"), ## Tag ist doppelt: (kein Problem -> set)
("Zusatztitel","ZUSATZTITEL","Zusatztitel",0), # not used
("jahr","JAHR","Erscheinungsjahr"),
("journal","JOURNAL","TitelZeitschrift"),
("Buchtitel","BUCHTITEL","TitelSammelwerk"), # (für Beitrag in einem Sammelwerk)
("Herausgeber","HERAUSGEBER","HerausgeberSammelwerk"), # (Beitrag in einem Sammelwerk)
("Auflage","AUFLAGE","Auflage",0), 
("Erscheinungsort","ERSCHEINUNGSORT","Erscheinungsort",0),
("verlag","VERLAG","Verlag"),
("band","BAND","Bandzählung"),
("heft","HEFT","Heftzählung"),
("seiten","SEITEN","SeitenVonbis"),
("Reihe","REIHE","Schriftenreihe"), # (für Beitrag in einem Sammelwerk)
("url","URL","URL"),
("urn","URN","URN",0),
("Bemerkung","Bemerkung","_Bemerkung",0), # "_" bedeutet OHNE dynaform
)
liste1 = \
tuple( ("name"+str(i),"NAME"+str(i),0) for i in range(1,numauthors+1) ) + \
tuple( ("vorname"+str(i),"VORNAME"+str(i),0) for i in range(1,numauthors+1) )


def len_is_3(x):
  return len(x)==3
liste = filter(len_is_3,liste0+liste1)


liste_auswahl0 = (
("sprache","SPRACHE","_Sprache"),
)
liste_auswahl1 = \
tuple( ("status"+str(i),"STATUS"+str(i),"fuStatus"+str(i)) for i in range(1,numauthors+1) )
liste_auswahl = liste_auswahl0 + liste_auswahl1

profil = open("Zeitschriftenaufsatz-Profil.txt",'w')
profil.write(
r'''autofillForms@blueimp.net	0.9.5.2	Zeitschriftenaufsatz	(?:^https:\/\/sep\.ub\.fu-berlin\.de)

''')
for overwriteflag,l in [("false",x) for x in liste0] +\
                       [("true",x) for x in liste_auswahl0]:
  if len(l)==4:
     name,tag,rule,xx = l
     userule = "false"
  else:
     name,tag,rule = l
     userule = "true"
  if rule[0]=='_':
    rulename = rule[1:]
    rulepattern = rulename
  else:
    rulename = rule
    rulepattern = 'dynaFormPanel:'+rule
  profil.write (rulename + '\t')
  #if userule=="true":
  profil.write ("<"+name+">")
  profil.write ('\t(?:^'+rulepattern + '$)\t(?:)\t'+overwriteflag+'\t'+ userule+"\n")

for i in range(numauthors):
   profil.write ((
'List:%d:Name\t<name%d>\t(?:^listview:%d:Name$)\t(?:)\tfalse\ttrue\n'
'List:%d:Vorname\t<vorname%d>\t(?:^listview:%d:Vorname$)\t(?:)\tfalse\ttrue\n'
'List:%d:fuStatus\t<status%d>\t(?:^listview:%d:fuStatus$)\t(?:)\ttrue\ttrue\n')
% (3*(i,i+1,i)))
profil.close()

for name,tag,rule in liste+liste_auswahl:
  print ("START"+tag+ ": :END"+tag)


def formula(tag):
  return (r'this.getClipboardText().substring(this.getClipboardText().indexOf(\"' +
          "START"+tag+r':\")+'
             +str(6+len(tag))+
          r',this.getClipboardText().indexOf(\"' +
          ":END"+tag+r'\"))')

def formula2(tag): # for scrollbox selection field
  return r'\"(?:^\"+'+formula(tag)+r'+\"$)\"'

names_tags = \
  list(set([(name,formula(tag)) for name,tag,rule in liste] +
           [(name,formula2(tag)) for name,tag,rule in liste_auswahl] ))

out=open("add_to_prefs","w")

out.write(
'user_pref("extensions.autofillForms@blueimp.net.dynamicTags", "<'+
 ">\t<".join ([name for name,tag in names_tags]) + '>");\n')

out.write(
'user_pref("extensions.autofillForms@blueimp.net.dynamicTagCodes", "'
 + "\t".join ([tag  for name,tag in names_tags]) + '");\n')

out.write(
'''user_pref("extensions.autofillForms@blueimp.net.enableDynamicTags", true);
user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
user_pref("capability.policy.allowclipboard.sites", "sep.ub.fu-berlin.de");
user_pref("capability.policy.policynames", "allowclipboard");
''')
#user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");

out.close()
