Package 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 -
Method Summary
Modifier and TypeMethodDescriptionprivate String
fixLineFolding
(String str) allow white space between \ and \nstatic double[]
getArrayFromStringList
(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
(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 Object
getQuotedStringOrObject
(char ch) final get for quoted objectprotected int
protected boolean
isQuote
(char ch) Includes all possible operator tokensprivate boolean
isSpaceOrColon
(int ich) used by readTableprotected String
initial processing; returns a string bounded by \1private Object
Handle all forms of quotation, including '...', "...", '''...''', """...""", and ;...\n...\n;protected String
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.Read a CIF 2.0 table into either a JSON string or a java data structureThere is no need to convert to unicode in CIF 2.0.protected Object
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, skipNextToken
-
Constructor Details
-
Cif2DataParser
public Cif2DataParser()
-
-
Method Details
-
getVersion
protected int getVersion()- Overrides:
getVersion
in classjavajs.util.CifDataParser
-
toUnicode
There is no need to convert to unicode in CIF 2.0.- Specified by:
toUnicode
in interfacejavajs.api.GenericCifDataParser
- Overrides:
toUnicode
in classjavajs.util.CifDataParser
- Parameters:
data
-- Returns:
- cleaned string
-
isQuote
protected boolean isQuote(char ch) Includes all possible operator tokens- Overrides:
isQuote
in classjavajs.util.CifDataParser
- Parameters:
ch
-- Returns:
- true if this character is a (starting) quote
-
getQuotedStringOrObject
final get for quoted object- Overrides:
getQuotedStringOrObject
in classjavajs.util.CifDataParser
- Parameters:
ch
- current character being pointed to- Returns:
- a String data object
-
preprocessString
initial processing; returns a string bounded by \1- Overrides:
preprocessString
in classjavajs.util.CifDataParser
- Returns:
- escaped part with attached extra data
- Throws:
Exception
-
processQuotedString
Handle all forms of quotation, including '...', "...", '''...''', """...""", and ;...\n...\n;- Returns:
- a string or data structure, depending upon setting asObject
-
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. ;xxxx\comments here xxxx xxxx xxxx ;- Returns:
- \1...quote....\1
- Throws:
Exception
-
readTable
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:
Exception
-
isSpaceOrColon
private boolean isSpaceOrColon(int ich) used by readTable- Parameters:
ich
- buffer pointer- Returns:
- true if whitespace or colon
-
unquoted
Handle unquoted value as Integer or Float if we can.- Overrides:
unquoted
in classjavajs.util.CifDataParser
- Parameters:
s
- unquoted string- Returns:
- unchanged value
-
fixLineFolding
allow white space between \ and \n- Parameters:
str
- already enclosed in \1.....\1- Returns:
- fixed line
-
getArrayFromStringList
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
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
-