diff --git a/README.md b/README.md index 655064b..3a3b4d7 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,16 @@ As Apex & SOQL/SOQL are case-insenstive languages you need to use the provided C To parse a class file (NPM version): - let lexer = new ApexLexer(new CaseInsensitiveInputStream("public class Hello {}")) - let tokens = new CommonTokenStream(lexer); +```typescript +import { CharStreams } from "antlr4ts"; - let parser = new ApexParser(tokens) - let context = parser.compilationUnit() +const stream = CharStreams.fromString("public class Hello {}"); +let lexer = new ApexLexer(new CaseInsensitiveInputStream(stream)); +let tokens = new CommonTokenStream(lexer); + +let parser = new ApexParser(tokens); +let context = parser.compilationUnit(); +``` The 'context' is a CompilationUnitContext object which is the root of the parsed representation of the class. You can access the parse tree via functions on it. @@ -30,14 +35,18 @@ The npm module uses antlr4ts 0.5.0-alpha.4, this was updated from 0.5.0-alpha.3 sure that if you are using a matching versions of this dependency if you use it directly. To avoid issues you can import 'CommonTokenStream' & 'ParseTreeWalker' from 'apex-parser' instead of from antlr4ts. - import { CommonTokenStream} from "apex-parser"; - import { ParseTreeWalker } from "apex-parser"; +```typescript +import { CommonTokenStream} from "apex-parser"; +import { ParseTreeWalker } from "apex-parser"; +``` ## SOSL FIND quoting SOSL FIND uses ' as a quoting character when embedded in Apex, in the API braces are used: - Find {something} RETURNING Account +```sosl +Find {something} RETURNING Account +``` To parse the API format there is an alternative parser rule, soslLiteralAlt, that you can use instead of soslLiteral. See SOSLParserTest for some examples of how these differ. @@ -45,31 +54,41 @@ To parse the API format there is an alternative parser rule, soslLiteralAlt, tha Maven - - io.github.apex-dev-tools - apex-parser - 4.4.0 - +```xml + + io.github.apex-dev-tools + apex-parser + 4.4.0 + +``` NPM - "@apexdevtools/apex-parser": "^4.4.0" +```json +{ + "@apexdevtools/apex-parser": "^4.4.0" +} +``` ## Building To build both distributions: - npm run build +```shell +npm run build +``` ## Testing Unit tests are executed during the respective package builds. The system tests require both packages to be built, as the js test also spawns the jar version. They use a collection of sample projects located in the [apex-samples](https://github.com/apex-dev-tools/apex-samples) repository. Follow the README instructions in apex-samples to checkout the submodules. To run the tests: - # Set SAMPLES env var to samples repo location - export SAMPLES= +```shell +# Set SAMPLES env var to samples repo location +export SAMPLES= - # Exec test script - npm run test-samples +# Exec test script +npm run test-samples +``` System test failures relating to the snapshots may highlight regressions. Though if an error is expected or the samples have changed, instead use `npm run test-snapshot` to update the snapshots, then commit the changes.