Skip to content

Commit c2ef861

Browse files
authored
Add TOML Grammar (#48)
* Add TOML Grammar * Fix tomlQuery
1 parent aa7d922 commit c2ef861

File tree

13 files changed

+101
-1
lines changed

13 files changed

+101
-1
lines changed

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj

+17
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
6CA62EAB29F9D36700785B11 /* TreeSitterTSX in Frameworks */ = {isa = PBXBuildFile; productRef = 6CA62EAA29F9D36700785B11 /* TreeSitterTSX */; };
3939
6CEC70FE29C3A85000B61C7A /* TreeSitterRegex in Frameworks */ = {isa = PBXBuildFile; productRef = 6CEC70FD29C3A85000B61C7A /* TreeSitterRegex */; };
4040
7DB18E9729FDC51C00F8EC00 /* TreeSitterScala in Frameworks */ = {isa = PBXBuildFile; productRef = 7DB18E9629FDC51C00F8EC00 /* TreeSitterScala */; };
41+
9D0F66222A3F522700E0F4B7 /* TreeSitterTOML in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0F66212A3F522700E0F4B7 /* TreeSitterTOML */; };
4142
9D6E74512A2B9B2A0070701E /* TreeSitterOCaml in Frameworks */ = {isa = PBXBuildFile; productRef = 9D6E74502A2B9B2A0070701E /* TreeSitterOCaml */; };
4243
9DB1B4362A2C0DAA0027B04E /* TreeSitterJSDoc in Frameworks */ = {isa = PBXBuildFile; productRef = 9DB1B4352A2C0DAA0027B04E /* TreeSitterJSDoc */; };
4344
9DFDC3662A02D9BE0023B3BC /* TreeSitterMarkdown in Frameworks */ = {isa = PBXBuildFile; productRef = 9DFDC3652A02D9BE0023B3BC /* TreeSitterMarkdown */; };
@@ -69,6 +70,7 @@
6970
28B3F03C290C363E000CD04D /* TreeSitterGo in Frameworks */,
7071
7DB18E9729FDC51C00F8EC00 /* TreeSitterScala in Frameworks */,
7172
28B3F05D290C3709000CD04D /* TreeSitterSwift in Frameworks */,
73+
9D0F66222A3F522700E0F4B7 /* TreeSitterTOML in Frameworks */,
7274
28B9F7AA290DDAC900245748 /* TreeSitterBash in Frameworks */,
7375
28B3F030290C35F9000CD04D /* TreeSitterCPP in Frameworks */,
7476
28B3F04E290C3698000CD04D /* TreeSitterJSON in Frameworks */,
@@ -196,6 +198,7 @@
196198
9DFDC3652A02D9BE0023B3BC /* TreeSitterMarkdown */,
197199
9D6E74502A2B9B2A0070701E /* TreeSitterOCaml */,
198200
9DB1B4352A2C0DAA0027B04E /* TreeSitterJSDoc */,
201+
9D0F66212A3F522700E0F4B7 /* TreeSitterTOML */,
199202
);
200203
productName = "CodeLanguages-Container";
201204
productReference = 28B3F00C290C207D000CD04D /* CodeLanguages_Container.framework */;
@@ -258,6 +261,7 @@
258261
9DFDC3642A02D9BE0023B3BC /* XCRemoteSwiftPackageReference "tree-sitter-markdown" */,
259262
9D6E744F2A2B9B2A0070701E /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */,
260263
9DB1B4342A2C0DA90027B04E /* XCRemoteSwiftPackageReference "tree-sitter-jsdoc" */,
264+
9D0F66202A3F522700E0F4B7 /* XCRemoteSwiftPackageReference "tree-sitter-toml" */,
261265
);
262266
productRefGroup = 28B3F00D290C207D000CD04D /* Products */;
263267
projectDirPath = "";
@@ -739,6 +743,14 @@
739743
kind = branch;
740744
};
741745
};
746+
9D0F66202A3F522700E0F4B7 /* XCRemoteSwiftPackageReference "tree-sitter-toml" */ = {
747+
isa = XCRemoteSwiftPackageReference;
748+
repositoryURL = "https://github.com/cengelbart39/tree-sitter-toml.git";
749+
requirement = {
750+
branch = feature/spm;
751+
kind = branch;
752+
};
753+
};
742754
9D6E744F2A2B9B2A0070701E /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */ = {
743755
isa = XCRemoteSwiftPackageReference;
744756
repositoryURL = "https://github.com/tree-sitter/tree-sitter-ocaml.git";
@@ -916,6 +928,11 @@
916928
package = 7DB18E9529FDC51C00F8EC00 /* XCRemoteSwiftPackageReference "tree-sitter-scala" */;
917929
productName = TreeSitterScala;
918930
};
931+
9D0F66212A3F522700E0F4B7 /* TreeSitterTOML */ = {
932+
isa = XCSwiftPackageProductDependency;
933+
package = 9D0F66202A3F522700E0F4B7 /* XCRemoteSwiftPackageReference "tree-sitter-toml" */;
934+
productName = TreeSitterTOML;
935+
};
919936
9D6E74502A2B9B2A0070701E /* TreeSitterOCaml */ = {
920937
isa = XCSwiftPackageProductDependency;
921938
package = 9D6E744F2A2B9B2A0070701E /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */;

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

+9
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,15 @@
270270
"revision" : "eda05af7ac41adb4eb19c346883c0fa32fe3bdd8"
271271
}
272272
},
273+
{
274+
"identity" : "tree-sitter-toml",
275+
"kind" : "remoteSourceControl",
276+
"location" : "https://github.com/cengelbart39/tree-sitter-toml.git",
277+
"state" : {
278+
"branch" : "feature/spm",
279+
"revision" : "28db724e8e30920638b46d408c0fbac007ac6a62"
280+
}
281+
},
273282
{
274283
"identity" : "tree-sitter-typescript",
275284
"kind" : "remoteSourceControl",

CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ extern TSLanguage *tree_sitter_rust();
5353
extern TSLanguage *tree_sitter_scala();
5454
extern TSLanguage *tree_sitter_sql();
5555
extern TSLanguage *tree_sitter_swift();
56+
extern TSLanguage *tree_sitter_toml();
5657
extern TSLanguage *tree_sitter_tsx();
5758
extern TSLanguage *tree_sitter_typescript();
5859
extern TSLanguage *tree_sitter_yaml();
121 KB
Binary file not shown.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ In order to add support for additional languages we have a complete guide on how
8080
| [Scala](https://github.com/tree-sitter/tree-sitter-scala) |||
8181
| [Sql](https://github.com/lukepistrol/tree-sitter-sql/tree/feature/spm) |||
8282
| [Swift](https://github.com/alex-pinkus/tree-sitter-swift/tree/with-generated-files) |||
83-
| [TOML](https://github.com/ikatyang/tree-sitter-toml) | | |
83+
| [TOML](https://github.com/cengelbart39/tree-sitter-toml/tree/feature/spm) | | |
8484
| [TypeScript/TSX](https://github.com/tree-sitter/tree-sitter-typescript) |||
8585
| [Verilog](https://github.com/tree-sitter/tree-sitter-verilog) | | _not available_ |
8686
| [YAML](https://github.com/lukepistrol/tree-sitter-yaml/tree/feature/spm) |||

Sources/CodeEditLanguages/CodeLanguage+Definitions.swift

+8
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public extension CodeLanguage {
4343
.scala,
4444
.sql,
4545
.swift,
46+
.toml,
4647
.tsx,
4748
.typescript,
4849
.yaml,
@@ -286,6 +287,13 @@ public extension CodeLanguage {
286287
extensions: ["swift"]
287288
)
288289

290+
/// A language structure for `TOML`
291+
static let toml: CodeLanguage = .init(
292+
id: .toml,
293+
tsName: "toml",
294+
extensions: ["toml"]
295+
)
296+
289297
/// A language structure for `TSX`
290298
static let tsx: CodeLanguage = .init(
291299
id: .tsx,

Sources/CodeEditLanguages/CodeLanguage.swift

+2
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ public struct CodeLanguage {
136136
return tree_sitter_sql()
137137
case .swift:
138138
return tree_sitter_swift()
139+
case .toml:
140+
return tree_sitter_toml()
139141
case .tsx:
140142
return tree_sitter_tsx()
141143
case .typescript:

Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md

+2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
4747
- Scala
4848
- SQL
4949
- Swift
50+
- TOML
5051
- YAML
5152
- Zig
5253

@@ -100,6 +101,7 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
100101
- ``scala``
101102
- ``sql``
102103
- ``swift``
104+
- ``toml``
103105
- ``yaml``
104106
- ``zig``
105107

Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md

+1
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,6 @@ let query = TreeSitterModel.shared.swiftQuery
6363
- ``scalaQuery``
6464
- ``sqlQuery``
6565
- ``swiftQuery``
66+
- ``tomlQuery``
6667
- ``yamlQuery``
6768
- ``zigQuery``
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
; Properties
2+
;-----------
3+
4+
(bare_key) @property
5+
(quoted_key) @string
6+
7+
; Literals
8+
;---------
9+
10+
(boolean) @constant.builtin
11+
(comment) @comment
12+
(string) @string
13+
(integer) @number
14+
(float) @number
15+
(offset_date_time) @string.special
16+
(local_date_time) @string.special
17+
(local_date) @string.special
18+
(local_time) @string.special
19+
20+
; Punctuation
21+
;------------
22+
23+
"." @punctuation.delimiter
24+
"," @punctuation.delimiter
25+
26+
"=" @operator
27+
28+
"[" @punctuation.bracket
29+
"]" @punctuation.bracket
30+
"[[" @punctuation.bracket
31+
"]]" @punctuation.bracket
32+
"{" @punctuation.bracket
33+
"}" @punctuation.bracket

Sources/CodeEditLanguages/TreeSitterLanguage.swift

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public enum TreeSitterLanguage: String {
4141
case scala
4242
case sql
4343
case swift
44+
case toml
4445
case tsx
4546
case typescript
4647
case yaml

Sources/CodeEditLanguages/TreeSitterModel.swift

+7
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ public class TreeSitterModel {
8484
return sqlQuery
8585
case .swift:
8686
return swiftQuery
87+
case .toml:
88+
return tomlQuery
8789
case .tsx:
8890
return tsxQuery
8991
case .typescript:
@@ -257,6 +259,11 @@ public class TreeSitterModel {
257259
return queryFor(.swift)
258260
}()
259261

262+
/// Query for `TOML` files.
263+
public private(set) lazy var tomlQuery: Query? = {
264+
return queryFor(.toml)
265+
}()
266+
260267
/// Query for `TSX` files.
261268
public private(set) lazy var tsxQuery: Query? = {
262269
return queryFor(.tsx)

Tests/CodeEditLanguagesTests/CodeEditLanguagesTests.swift

+19
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,25 @@ final class CodeEditLanguagesTests: XCTestCase {
675675
XCTAssertNotNil(query)
676676
XCTAssertNotEqual(query?.patternCount, 0)
677677
}
678+
679+
// MARK: - TOML
680+
681+
func test_CodeLanguageTOML() throws {
682+
let url = URL(fileURLWithPath: "~/path/to/file.toml")
683+
let language = CodeLanguage.detectLanguageFrom(url: url)
684+
685+
XCTAssertEqual(language.id, .toml)
686+
}
687+
688+
func test_FetchQueryTOML() throws {
689+
var language = CodeLanguage.toml
690+
language.resourceURL = bundleURL
691+
692+
let data = try Data(contentsOf: language.queryURL!)
693+
let query = try? Query(language: language.language!, data: data)
694+
XCTAssertNotNil(query)
695+
XCTAssertNotEqual(query?.patternCount, 0)
696+
}
678697

679698
// MARK: - TSX
680699

0 commit comments

Comments
 (0)