Class 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 Description
      Cif2DataParser()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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.
      static int[] getIntArrayFromStringList​(java.lang.String s, int n)
      turn "[1,2,3]" into [1,2,3] 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 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, readList, 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
      • 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
      • getIntArrayFromStringList

        public static int[] getIntArrayFromStringList​(java.lang.String s,
                                                      int n)
        turn "[1,2,3]" into [1,2,3] array will be truncated to n elements, or filled with zeros to pad to n, as necessary.
        Parameters:
        s -
        n -
        Returns:
        int[] array