#!/usr/bin/env icarus
# ICLC Animal Cell Lines Database - Syntax file
# Version 2004.12.17.01
# Last Updated December 17, 2004
# Author: Domenico Marra & Francesca Piersigilli & Paolo Romano
# (c) CABRI 1999-2023

$fn={
  Accession_number:acc_no                 # MDS
  Cell_line_name:cell_line_name           # MDS
  Brief_description:brief                 # MDS
  Description:description                 # MDS
  Depositor:depositor                     # MDS
  Bibliographic_reference:biblio_ref      # MDS
  Morphology:morph                        # MDS
  Culture_conditions:culture_conditions   # MDS
  Viruses:viruses                         # MDS
  Properties:properties                   # MDS
  Release_conditions:rel_cond             # MDS
  Hazard:hazard                           # MDS
  Passage_number:pass_no                  # RDS
  Species_validation:spec_valid           # RDS
  Tumorigenicity:tumor                    # FDS
  Karyology:karyology                     # FDS
  Freezing_medium:freezing_medium         # FDS
  Sterility:sterility                     # FDS
  Validation_assays:val_assays            # FDS
  Further_bibliography:further_biblio     # FDS
  Comments:comments                       # FDS
}

$rules={
  entry:	~ {$In:[file:text] $Out pre $Skip:0}
		  ('Accession_number' {$Not} ln)*
		  ('Accession_number' {$entryFip=$Fip $Wrt} ln {$App}
		  ('Accession_number' {$Not} ln {$App})*)?
		~

# fields
  fields:	~ {$In:entry $Out $Skip:1}
                  (/\/[^\n]+\n/ {$Wrt} |
                  word {$Wrt:$fn.$Ct} 
                  (/[\/A-Z]/ {$Not} ln {$App})+)+ ~

#indexing
  acc_no:	~ {$In:[fields c:acc_no] $Out}
		  word ' ' (word2{$Wrt} |punct4)* ~

  strX:         ~ {$In:[fields c:{cell_line_name brief description depositor
                                  morph culture_conditions viruses
                                  properties rel_cond hazard pass_no spec_valid
                                  tumor karyology freezing_medium sterility
                                  val_assays comments}] $Out}
                  word (str{$Uniq:$Itc} | /./ |punct2)* ~

  biblio_ref:   ~ {$In:[fields c:biblio_ref] $Out}
                  bib_tag
                  (bib_word {$Uniq:$Itc} | bib_vol | bib_punct | ' ')*
                  ('[PMID: ' pmid {$Uniq:$Itc} ']')? ~

  further_biblio:       ~ {$In:[fields c:further_biblio] $Out}
                  bib_tag
                  (bib_word {$Uniq:$Itc} | bib_vol | bib_punct | ' ')*
                  ('[PMID: ' pmid {$Uniq:$Itc} ']')?
                  (' <BR>' (bib_word {$Uniq:$Itc} | bib_vol | bib_punct | ' ')*
                  ('[PMID: ' pmid {$Uniq:$Itc} ']')? )*
                  ~

  cell_line_name: ~ {$In:[fields c:cell_line_name] $Out}
		  word (word { $Wrt:[ s:$StrRep:[s:$Ct r:"[\/|\.|-]" to:""]] }
                   | /./ | punct)* ~

#HTML stuff
  h_top:      ~ {$In:[fields c:acc_no t:html] pre if:$ParInt:isTable $Fail}
               word {$Rep:
                 |</TR><TR VALIGN=TOP>
                 |<TD colspan=2 bgcolor=\"#ffffff\">
                 |<font color=\"#000066\">
                 |<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:"$Ct</TD></TR>"}  ~

  h_fields:    ~ {$In:[fields xc:{biblio_ref further_biblio} 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:"$Ct</TD></TR>"}  ~

 h_biblio_ref:  ~ {$In:[fields c:biblio_ref t:html]
                       pre if:$ParInt:isTable $Fail}
                  bib_tag {if:$isTable==0 $Rep:
                        |<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
                        |<font color=\"#000066\">
                        |<b><i>$Ct</i></b></font></TD>
                        |<TD bgcolor=\"#ffffff\">
                       }
                  /[^\\[]*/
                  ('[PMID: ' pmid {$Rep:$Hlink:[pubmedCabriR p:{$Ct $Ct}]} ']')?
                  x{$Rep:"</TD></TR>"}  ~

 h_further_biblio:      ~ {$In:[fields c:further_biblio t:html]
                       pre if:$ParInt:isTable $Fail}
                  bib_tag {if:$isTable==0 $Rep:
                        |<TR VALIGN=TOP><TD bgcolor=\"#ffffff\">
                        |<font color=\"#000066\">
                        |<b><i>$Ct</i></b></font></TD>
                        |<TD bgcolor=\"#ffffff\">
                       }
                   /[^\\[]*/
                ('[PMID: ' pmid {$Rep:$Hlink:[pubmedCabriR p:{$Ct $Ct}]} ']')?
                   ( /[^\\[]*/
                ('[PMID: ' pmid {$Rep:$Hlink:[pubmedCabriR p:{$Ct $Ct}]} ']')?)*
                  x{$Rep:"</TD></TR>"}  ~

  t_fields:     ~ {$In:fields $Out} tag /.*/ {$Wrt:$Itc} ~

# definitions
  tag:		~ word ~
  bib_tag:      ~ ('Bibliographic_reference'|'Further_bibliography') ~
  bib_word:     ~ /[a-zA-Z]+/ ~
  bib_punct:    ~ /[;:.-]/ ~
  bib_vol:      ~ (number bib_punct?)+ ~
  pmid:         ~ /[0-9]+/ ~
  number:       ~ /[0-9]+/ ~
  ln:		~ /[^\n]*\n/ ~
  word:		~ /[0-9a-zA-Z_\\.\\?\/-]+/ ~
  word2:	~ /[ 0-9a-zA-Z_\\.\\?\/-]+/ ~
  punct:	~ /[ \t,;:\\(\\)\\.\\+\\*]+/ ~  
  punct2:	~ /[ \t;\\(\\)]+/ ~  
  str:		~ /[a-zA-Z0-9&.:'=\/\\%_-]+/ ~
  punct4:	~ /[\t,;:\/\\+]+/ ~
}