The cex
library is primarily intended to simplify access to CEX data for other code libraries, rather than end users. For most purposes, you can use CEX-formatted data directly from higher-level libraries, like the ohco2
library for working with citable texts.
If you need to parse CEX data directly, however, you can use the cex
library to get access to specific blocks of a CEX source.
Import the package:
import edu.holycross.shot.cex._
Parse a String
of CEX data:
val cexStr = """
#!cexversion
3.0
"""
val cex = CexParser(cexStr)
In the JVM environment, you can parse a file:
val cex = CexParserSource.fromFile("jvm/src/test/resources/sample.cex")
Map CEX block labels to Vector
s of one or
more string data sets, and get the string content of a specified block type:
val blockMap = cex.blockMap
val ctsCatalog = cex.blockString("ctscatalog")
val ctsData = cex.blockString("ctsdata")
At this point, you could work with individual blocks of the CEX source using appropriate libraries for particular kinds of citable data. For example, you can create a repository of canonically citable texts directly from CEX content containing a ctscatalog
and ctsdata
block.
import edu.holycross.shot.ohco2._
val concatenated = "#!ctscatalog\n" + ctsCatalog + "\n#!ctsdata\n" + ctsData
val textRepository = TextRepository(concatenated)
See the documentation for the ohco2
library.