Skip to content

Commit 64366a8

Browse files
authored
Merge pull request #2 from adam-fowler/jmes-expression
Rename `Expression` to `JMESExpression`
2 parents 3a7d095 + a71b479 commit 64366a8

File tree

8 files changed

+24
-20
lines changed

8 files changed

+24
-20
lines changed

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ Below is a simple example of usage.
99
```swift
1010
import JMESPath
1111

12-
let expression = try Expression.compile("a.b")
12+
// compile query "a.b"
13+
let expression = try JMESExpression.compile("a.b")
14+
// use query to search json string
1315
let result = try expression.search(json: #"{"a": {"b": "hello"}}"#, as: String.self)
1416
assert(String == "hello")
1517
```
@@ -22,8 +24,10 @@ struct TestObject {
2224
}
2325
let a: TestSubObject
2426
}
25-
let expression = try Expression.compile("a.b[1]")
27+
// compile query "a.b[1]"
28+
let expression = try JMESExpression.compile("a.b[1]")
2629
let test = TestObject(a: .init(b: ["hello", "world!"]))
27-
let result = try expression.search(test, as: String.self)
30+
// use query to search `test` object
31+
let result = try expression.search(object: test, as: String.self)
2832
assert(result == "world!")
2933
```

Sources/JMESPath/Expression.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Foundation
33
/// JMES Expression
44
///
55
/// Holds a compiled JMES expression and allows you to search Json text or a type already in memory
6-
public struct Expression {
6+
public struct JMESExpression {
77
let ast: Ast
88

99
public static func compile(_ text: String) throws -> Self {

Sources/JMESPath/Lexer.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Foundation
33
/// Lexer object
44
///
55
/// Parses raw text to create an array of tokens
6-
class Lexer {
6+
internal class Lexer {
77
var index: String.Index
88
let text: String
99

Sources/JMESPath/Parser.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/// Parser object.
22
///
33
/// Parses array of tokens to create AST
4-
class Parser {
4+
internal class Parser {
55
let tokens: [Token]
66
var index: Int
77

Sources/JMESPath/Token.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/// Represents a lexical token of a JMESPath expression
2-
enum Token: Equatable {
2+
internal enum Token: Equatable {
33
case identifier(String)
44
case quotedIdentifier(String)
55
case number(Int)

Tests/JMESPathTests/ComplianceTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ final class ComplianceTests: XCTestCase {
7979

8080
func testBenchmark(_ c: Case) {
8181
do {
82-
let expression = try Expression.compile(c.expression)
82+
let expression = try JMESExpression.compile(c.expression)
8383
_ = try expression.search(object: self.given.value)
8484
} catch {
8585
XCTFail("\(error)")
@@ -88,7 +88,7 @@ final class ComplianceTests: XCTestCase {
8888

8989
func testError(_ c: Case, error: String) {
9090
do {
91-
let expression = try Expression.compile(c.expression)
91+
let expression = try JMESExpression.compile(c.expression)
9292
_ = try expression.search(object: self.given.value)
9393
} catch {
9494
return
@@ -103,7 +103,7 @@ final class ComplianceTests: XCTestCase {
103103
@available(iOS 11.0, tvOS 11.0, watchOS 5.0, *)
104104
func testResult(_ c: Case, result: Any?) {
105105
do {
106-
let expression = try Expression.compile(c.expression)
106+
let expression = try JMESExpression.compile(c.expression)
107107

108108
let resultJson: String? = try result.map {
109109
let data = try JSONSerialization.data(withJSONObject: $0, options: [.fragmentsAllowed, .sortedKeys])

Tests/JMESPathTests/ErrorTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import XCTest
33

44
final class ErrorTests: XCTestCase {
55
func testUnknownFunction() throws {
6-
let expression = try Expression.compile("unknown(@)")
6+
let expression = try JMESExpression.compile("unknown(@)")
77
XCTAssertThrowsError(try expression.search(object: "test")) { error in
88
switch error {
99
case let error as JMESPathError where error == .runtime("Unknown function name 'unknown'"):
@@ -15,7 +15,7 @@ final class ErrorTests: XCTestCase {
1515
}
1616

1717
func testWrongNumberOfArgs() throws {
18-
let expression = try Expression.compile("reverse(@, @)")
18+
let expression = try JMESExpression.compile("reverse(@, @)")
1919
XCTAssertThrowsError(try expression.search(object: "test")) { error in
2020
switch error {
2121
case let error as JMESPathError where error == .runtime("Invalid number of arguments, expected 1, got 2"):
@@ -27,7 +27,7 @@ final class ErrorTests: XCTestCase {
2727
}
2828

2929
func testWrongArg() throws {
30-
let expression = try Expression.compile("sum(@)")
30+
let expression = try JMESExpression.compile("sum(@)")
3131
XCTAssertThrowsError(try expression.search(object: "test")) { error in
3232
switch error {
3333
case let error as JMESPathError where error == .runtime("Invalid argument, expected array[number], got string"):
@@ -39,7 +39,7 @@ final class ErrorTests: XCTestCase {
3939
}
4040

4141
func testWrongVarArg() throws {
42-
let expression = try Expression.compile("merge(@, i)")
42+
let expression = try JMESExpression.compile("merge(@, i)")
4343
XCTAssertThrowsError(try expression.search(json: #"{"i": 24}"#)) { error in
4444
switch error {
4545
case let error as JMESPathError where error == .runtime("Invalid variadic argument, expected object, got number"):
@@ -51,7 +51,7 @@ final class ErrorTests: XCTestCase {
5151
}
5252

5353
func testMinByWrongType() throws {
54-
let expression = try Expression.compile("min_by(@, &i)")
54+
let expression = try JMESExpression.compile("min_by(@, &i)")
5555
XCTAssertThrowsError(try expression.search(json: #"[{"i": true}]"#)) { error in
5656
switch error {
5757
case let error as JMESPathError where error == .runtime("Invalid argment, expected array values to be strings or numbers, instead got boolean"):
@@ -63,7 +63,7 @@ final class ErrorTests: XCTestCase {
6363
}
6464

6565
func testSortByWrongType() throws {
66-
let expression = try Expression.compile("sort_by(@, &i)")
66+
let expression = try JMESExpression.compile("sort_by(@, &i)")
6767
XCTAssertThrowsError(try expression.search(json: #"[{"i": "one"}, {"i": 2}]"#)) { error in
6868
switch error {
6969
case let error as JMESPathError where error == .runtime("Sort arguments all have to be the same type, expected string, instead got number"):

Tests/JMESPathTests/MirrorTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import XCTest
44
final class MirrorTests: XCTestCase {
55
func testInterpreter<Value: Equatable>(_ expression: String, data: Any, result: Value) {
66
do {
7-
let expression = try Expression.compile(expression)
7+
let expression = try JMESExpression.compile(expression)
88
let value = try XCTUnwrap(expression.search(object: data, as: Value.self))
99
XCTAssertEqual(value, result)
1010
} catch {
@@ -79,16 +79,16 @@ final class MirrorTests: XCTestCase {
7979
func testCustomReflectableArray() {
8080
struct TestObject: CustomReflectable {
8181
let a: [Int]
82-
var customMirror: Mirror { return Mirror(reflecting: a) }
82+
var customMirror: Mirror { return Mirror(reflecting: self.a) }
8383
}
84-
let test = TestObject(a: [1,2,3,4])
84+
let test = TestObject(a: [1, 2, 3, 4])
8585
self.testInterpreter("[2]", data: test, result: 3)
8686
}
8787

8888
func testCustomReflectableDictionary() {
8989
struct TestObject: CustomReflectable {
9090
let d: [String: String]
91-
var customMirror: Mirror { return Mirror(reflecting: d) }
91+
var customMirror: Mirror { return Mirror(reflecting: self.d) }
9292
}
9393
let test = TestObject(d: ["test": "one", "test2": "two", "test3": "three"])
9494
self.testInterpreter("test2", data: test, result: "two")

0 commit comments

Comments
 (0)