Cif2DataParser
Date: 2019-10-22

org.jmol.adapter.readers.cif

## Class Cif2DataParser

- java.lang.Object
- - javajs.util.CifDataParser
  - - org.jmol.adapter.readers.cif.Cif2DataParser

- All Implemented Interfaces:
    javajs.api.GenericCifDataParser

      public class Cif2DataParser
      extends javajs.util.CifDataParser

  Fully implemented 2016.12.1 see http://journals.iucr.org/j/issues/2016/01/00/aj5269/index.html Will deliver JSON versions of the data while file reading and Java List/Map structures when called by x = getProperty("cifInfo", filename) Validated using the test-data suite by John Bollinger (John.Bollinger@stjude.org) found at https://github.com/COMCIFS/cif_api
  Author:
    Bob Hanson hansonr@stolaf.edu

- - ### Field Summary

    - ### Fields inherited from class javajs.util.CifDataParser

      `asObject, cch, cterm, debugging, ich, KEY_MAX, line, nullString, str, wasUnquoted`

    - ### Fields inherited from interface javajs.api.GenericCifDataParser

      `NONE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Cif2DataParser()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `private java.lang.String` | `fixLineFolding(java.lang.String str)` allow white space between \ and \n
    `static double[]` | `getArrayFromStringList(java.lang.String s, int n)` turn "[1,2,3]" into [1.0,2.0,3.0] array will be truncated to n elements, or filled with zeros to pad to n, as necessary.
    `protected java.lang.Object` | `getQuotedStringOrObject(char ch)` final get for quoted object
    `protected int` | `getVersion()`
    `protected boolean` | `isQuote(char ch)` Includes all possible operator tokens
    `private boolean` | `isSpaceOrColon(int ich)` used by readTable
    `protected java.lang.String` | `preprocessString()` initial processing; returns a string bounded by \1
    `private java.lang.Object` | `processQuotedString()` Handle all forms of quotation, including '...', "...", '''...''', """...""", and ;...\n...\n;
    `protected java.lang.String` | `processSemiString()` Sets a multiline semicolon-eclipsed string to be parsed from the beginning, allowing for CIF 2.0-type prefixed text lines and removing line folding.
    `java.lang.Object` | `readList()` Read a CIF 2.0 list structure, converting it to either a JSON string or to a Java data structure
    `java.lang.Object` | `readTable()` Read a CIF 2.0 table into either a JSON string or a java data structure
    `java.lang.String` | `toUnicode(java.lang.String data)` There is no need to convert to unicode in CIF 2.0.
    `protected java.lang.Object` | `unquoted(java.lang.String s)` Handle unquoted value as Integer or Float if we can.

    - ### Methods inherited from class javajs.util.CifDataParser

      `fixKey, fullTrim, getAllCifData, getColumnCount, getColumnData, getColumnName, getData, getFileHeader, getNextDataToken, getNextToken, getNextTokenObject, getNextTokenProtected, getTokenPeeked, isTerminator, parseDataBlockParameters, peekToken, prepareNextLine, preprocessSemiString, readLine, set, setNullValue, setString, skipLoop`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Cif2DataParser

          public Cif2DataParser()

  - ### Method Detail

    - #### getVersion

          protected int getVersion()

      Overrides:
        `getVersion` in class `javajs.util.CifDataParser`

    - #### toUnicode

          public java.lang.String toUnicode(java.lang.String data)

      There is no need to convert to unicode in CIF 2.0.
      Specified by:
        `toUnicode` in interface `javajs.api.GenericCifDataParser`
      Overrides:
        `toUnicode` in class `javajs.util.CifDataParser`
      Returns:
        cleaned string

    - #### isQuote

          protected boolean isQuote(char ch)

      Includes all possible operator tokens
      Overrides:
        `isQuote` in class `javajs.util.CifDataParser`
      Returns:
        true if this character is a (starting) quote

    - #### getQuotedStringOrObject

          protected java.lang.Object getQuotedStringOrObject(char ch)

      final get for quoted object
      Overrides:
        `getQuotedStringOrObject` in class `javajs.util.CifDataParser`
      Parameters:
        `ch` - current character being pointed to
      Returns:
        a String data object

    - #### preprocessString

          protected java.lang.String preprocessString()
                                               throws java.lang.Exception

      initial processing; returns a string bounded by \1
      Overrides:
        `preprocessString` in class `javajs.util.CifDataParser`
      Returns:
        escaped part with attached extra data
      Throws:
        `java.lang.Exception`

    - #### processQuotedString

          private java.lang.Object processQuotedString()

      Handle all forms of quotation, including '...', "...", '''...''', """...""", and ;...\n...\n;
      Returns:
        a string or data structure, depending upon setting asObject

    - #### processSemiString

          protected java.lang.String processSemiString()
                                                throws java.lang.Exception

      Sets a multiline semicolon-eclipsed string to be parsed from the beginning, allowing for CIF 2.0-type prefixed text lines and removing line folding. ;xxxx\comments here xxxx xxxx xxxx ;
      Returns:
        \1...quote....\1
      Throws:
        `java.lang.Exception`

    - #### readList

          public java.lang.Object readList()
                                    throws java.lang.Exception

      Read a CIF 2.0 list structure, converting it to either a JSON string or to a Java data structure
      Returns:
        a string or data structure, depending upon setting asObject
      Throws:
        `java.lang.Exception`

    - #### readTable

          public java.lang.Object readTable()
                                     throws java.lang.Exception

      Read a CIF 2.0 table into either a JSON string or a java data structure
      Returns:
        an Object or String, depending upon settings
      Throws:
        `java.lang.Exception`

    - #### isSpaceOrColon

          private boolean isSpaceOrColon(int ich)

      used by readTable
      Parameters:
        `ich` - buffer pointer
      Returns:
        true if whitespace or colon

    - #### unquoted

          protected java.lang.Object unquoted(java.lang.String s)

      Handle unquoted value as Integer or Float if we can.
      Overrides:
        `unquoted` in class `javajs.util.CifDataParser`
      Parameters:
        `s` - unquoted string
      Returns:
        unchanged value

    - #### fixLineFolding

          private java.lang.String fixLineFolding(java.lang.String str)

      allow white space between \ and \n
      Parameters:
        `str` - already enclosed in \1.....\1
      Returns:
        fixed line

    - #### getArrayFromStringList

          public static double[] getArrayFromStringList(java.lang.String s,
                                                        int n)

      turn "[1,2,3]" into [1.0,2.0,3.0] array will be truncated to n elements, or filled with zeros to pad to n, as necessary.
      Parameters:
        `s` -
        `n` -
      Returns:
        double[] array