#!/usr/bin/env icarus
# DSMZ Bacteria Catalogue - Syntax file
# Version 2004.12.17.01
# Last Updated December 17, 2004
# Author: Domenico Marra & Francesca Piersigilli & Paolo Romano
# (c) CABRI 1999-2023
$fn={
Strain_number:strain_no
Other_collection_numbers:other_nos
Name:name
Infrasubspecific_names:inf_names
Serovar:serovar
Organism_type:org_type
Restrictions:restrictions
Status:status
History:history
Other_names:oth_names
Isolated_from:isol_from
Geographic_origin:geo_origin
Mutant:mutant
Genotype:genotype
Pathogenicity:pathogenicity
Enzyme_production:enzyme
Metabolite_production:metab
Applications:applic
Literature:lit
Conditions_for_growth:cond
Form_of_supply:supply
Further_information:finfo
}
$rules={
entry: ~ {$In:[file:text] $Out pre $Skip:0}
('Strain_number' {$Not} ln)*
('Strain_number' {$entryFip=$Fip $Wrt} ln {$App}
('Strain_number' {$Not} ln {$App})*)?
~
# fields
fields: ~ {$In:entry $Out $Skip:1}
(/\/[^\n]+\n/ {$Wrt} |
word {$Wrt:$fn.$Ct}
(/[\/A-Z]/ {$Not} ln {$App})+)+ ~
#indexing
strain_no: ~ {$In:[fields c:strain_no] $Out}
word ' ' (word2{$Wrt} |punct2)* ~
name: ~ {$In:[fields c:name] $Out}
word / /? (word2{$Wrt} |punct)* ~
strX: ~ {$In:[fields c:{restrictions org_type name inf_names status
enzyme history pathogenicity metab applic
cond supply serovar isol_from geo_origin
mutant genotype finfo}] $Out}
word (str{$Uniq:$Itc}| /./ |punct)* ~
lit: ~ {$In:[fields c:lit] $Out $Skip:0}
word (parola|numero{$Uniq:$Itc})* ~
other_nos: ~ {$In:[fields c:other_nos] $Out}
word (/ /)* ( '-' | (word2{$Uniq} | /; /)* ) ~
concat2: ~ {$In:[fields c:oth_names] $Out}
/[^\n]+/ {$Wrt} '\n' (/[^\n]+/ {$App} '\n')* ~
oth_names: ~ {$In:concat2 $Out}
word / /?
( / /? word3 {$Wrt:[s:$StrRep:[s:$Ct r:"[\"|\.]" to:""]]}
|/;/? /,/? /[^;]/+)* ~
#HTML stuff...
h_top: ~ {$In:[fields c:strain_no t:html] pre if:$ParInt:isTable $Fail}
word {$Rep:
|</TR><TR VALIGN=TOP>
|<TD colspan=2 bgcolor=\"#ffffff\">
|<font color=\"#000066\">
|This entry contains an HTML link to the reference
| database for synonyms of this catalogue.
|If there is no synonym data available, these links
|will be empty.<br><br>
|<B>CABRI:($entry.libName)</B></TD>
|</TR>
|<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
|<font color=\"#000066\"><b><i>$Ct</i></b></font></TD>
|<TD bgcolor=\"#ffffff\">
}
':'? {$Rep:""} /.*/ {$Rep:"$Ct</TD></TR>"} ~
h_name: ~ {$In:[fields c:name t:html] pre if:$ParInt:isTable $Fail}
'Name' {if:$isTable==0
$Rep:
|<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
|<font color=\"#000066\"><b><i>$Ct</i></b></font></TD>
|<TD bgcolor=\"#ffffff\">
}
/ ?/ (word2* {$rest=$Ct.rep:[' ' to:'%20']
$Rep:$Hlink:[dsmz_bact_namR p:{$rest $Ct}]}
| punct) ~
h_cond: ~ {$In:[fields c:cond t:html] pre if:$ParInt:isTable $Fail}
'Conditions_for_growth' {if:$isTable==0
$Rep:
|<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
|<font color=\"#000066\"><b><i>$Ct</i></b></font></TD>
|<TD bgcolor=\"#ffffff\">
}
(' Medium ' numero {$rest=$Ct.rep:[' ' to:'%20']
$Rep:$Hlink:[dsmz_mediaR p:{$rest $Ct}]})
(',' ' '? str)*
(';' ' '? 'medium'
' '? numero {$rest=$Ct.rep:[' ' to:'%20']
$Rep:$Hlink:[dsmz_mediaR p:{$rest $Ct}]}
(',' ' '? str)*)* ~
h_lit: ~ {$In:[fields t:html] pre if:$ParInt:isTable $Fail}
'Literature' {if:$isTable==0
$Rep:
|<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
|<font color=\"#000066\"><b><i>$Ct</i></b></font></TD>
|<TD bgcolor=\"#ffffff\">
}
( parola | numero {$rest=$Ct.rep:[' ' to:'%20']
$Rep:$Hlink:[dsmz_litR p:{$rest $Ct}]})* ~
h_res: ~ {$In:[fields t:html] pre if:$ParInt:isTable $Fail}
'Restrictions' {if:$isTable==0
$Rep:
|<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
|<font color=\"#000066\"><b><i>$Ct</i></b></font></TD>
|<TD bgcolor=\"#ffffff\">
}
( word6 |
( '(' ' '? /[A-F]/ {$Rep:$Hlink:[dsmz_restrR p:{$Ct $Ct}]} ')' ))* ~
h_fields: ~ {$In:[fields t:html] pre if:$ParInt:isTable $Fail}
word {if:$isTable==0
$Rep:
|<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
|<font color=\"#000066\"><b><i>$Ct</i></b></font></TD>
|<TD bgcolor=\"#ffffff\">
} ':'? {$Rep:""} /.*/ {$Rep:"$Ct</TD></TR>"} ~
t_fields: ~ {$In:[fields] $Out} tag /.*/ {$Wrt:$Itc} ~
# definitions
parola: ~/[^0-9]+/ ~
numero: ~/[0-9]+/ ~
tag: ~ word ':'?~
ln: ~/[^\n]*\n/ ~
word: ~/[0-9a-zA-Z_\/]+/ ~
word2: ~/[ 0-9a-zA-Z_\\.\\(\\)\/\\+-]+/ ~
str: ~/[a-zA-Z0-9&'=:\\(\\)\/\\%_-]+/ ~
punct: ~ /[ \t,;:\\.\\(\\)\\+\\*]+/ ~
punct2: ~ /[\t,;:\/\\+]+/ ~
word3: ~/[ 0-9a-zA-Z_\\"\\.\\(\\)\/\\*-]+/ ~
word6: ~/[^\\(\\)]+/ ~
}