%% -*- BibStyle -*-
%% 
%% This is a sample bibliography style 
%% for the BibStyle mode for WinEdt 5.4.
%% 
%% It won't do anything useful (though it works).
%% 
%% R Schlicht <w.m.l@gmx.net>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


ENTRY
  { address
    author
    journal
    month
    number
    note
    pages
    publisher
    title
    year
    volume
  }
  {}
  { label }

INTEGERS { stringfield stringitem stringbibliography stringlen }

STRINGS { string }

FUNCTION {init.string}
{ 
   "WinEdt" 'string :=
   string text.length$ 'stringlen :=
}

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  "This entry " write$
  ""
  #0 'stringitem :=
}

FUNCTION {fin.entry}
{ write$
  stringitem #0 =
    { "does not contain the word `" string * "'." * }
    {   ". That makes a total of "
      stringitem int.to.str$ *
      " occurences." *
      stringbibliography stringitem + 'stringbibliography :=
    }
  if$
  write$
  newline$
}

INTEGERS { start end }

FUNCTION {check.for.string}
{  duplicate$
   #0 'stringfield := 
   text.length$ stringlen - #2 + 'end := 
   #0 'start := 
   { start end < }
   { duplicate$
     start stringlen substring$
     string =
       { stringfield #1 + 'stringfield :=}
       'skip$
     if$
     start #1 + 'start :=
   }
   while$
   stringfield #0 =
      { pop$ pop$ }
      { pop$
        stringitem #0 =
          { "contains of " stringfield int.to.str$ *
            " occurences of the word `" * string * "' in the \emph{" * swap$ "} field" * * }
          { ", " stringfield int.to.str$ * " in the \emph{" * swap$ "} field" * * }
        if$
        write$
      }
   if$
   stringfield stringitem + 'stringitem :=
}


FUNCTION {check}
{ duplicate$ empty$
    { pop$ pop$ }
    { check.for.string }
  if$
}


% the only entry this bibliography style knows:
FUNCTION {article}
{ output.bibitem
  "Author" author check
  "Title" title check
  "Journal" journal check
  "Publisher" publisher check
  "Address" address check
  "Month" month check
  "Note" note check
  "Pages" pages check
  "Year" year check
  "Volume" volume check
  fin.entry
}

READ

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ "% This bibliography has been generated by sample.bst," write$ newline$
  "% the bibliography style that is a sample for the" write$ newline$
  "% BibStyle mode for WinEdt 5.4." write$ newline$ newline$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.string}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
  "Your bibliography contains of "
  stringbibliography int.to.str$ *
  " occurences of the word `" string * "'." * *
  write$ newline$
}

EXECUTE {end.bib}