diff --git a/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj b/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj index 27c8791..d711aa1 100644 --- a/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj +++ b/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj @@ -38,6 +38,7 @@ 6CA62EAB29F9D36700785B11 /* TreeSitterTSX in Frameworks */ = {isa = PBXBuildFile; productRef = 6CA62EAA29F9D36700785B11 /* TreeSitterTSX */; }; 6CEC70FE29C3A85000B61C7A /* TreeSitterRegex in Frameworks */ = {isa = PBXBuildFile; productRef = 6CEC70FD29C3A85000B61C7A /* TreeSitterRegex */; }; 7DB18E9729FDC51C00F8EC00 /* TreeSitterScala in Frameworks */ = {isa = PBXBuildFile; productRef = 7DB18E9629FDC51C00F8EC00 /* TreeSitterScala */; }; + 9D0F66222A3F522700E0F4B7 /* TreeSitterTOML in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0F66212A3F522700E0F4B7 /* TreeSitterTOML */; }; 9D6E74512A2B9B2A0070701E /* TreeSitterOCaml in Frameworks */ = {isa = PBXBuildFile; productRef = 9D6E74502A2B9B2A0070701E /* TreeSitterOCaml */; }; 9DB1B4362A2C0DAA0027B04E /* TreeSitterJSDoc in Frameworks */ = {isa = PBXBuildFile; productRef = 9DB1B4352A2C0DAA0027B04E /* TreeSitterJSDoc */; }; 9DFDC3662A02D9BE0023B3BC /* TreeSitterMarkdown in Frameworks */ = {isa = PBXBuildFile; productRef = 9DFDC3652A02D9BE0023B3BC /* TreeSitterMarkdown */; }; @@ -69,6 +70,7 @@ 28B3F03C290C363E000CD04D /* TreeSitterGo in Frameworks */, 7DB18E9729FDC51C00F8EC00 /* TreeSitterScala in Frameworks */, 28B3F05D290C3709000CD04D /* TreeSitterSwift in Frameworks */, + 9D0F66222A3F522700E0F4B7 /* TreeSitterTOML in Frameworks */, 28B9F7AA290DDAC900245748 /* TreeSitterBash in Frameworks */, 28B3F030290C35F9000CD04D /* TreeSitterCPP in Frameworks */, 28B3F04E290C3698000CD04D /* TreeSitterJSON in Frameworks */, @@ -196,6 +198,7 @@ 9DFDC3652A02D9BE0023B3BC /* TreeSitterMarkdown */, 9D6E74502A2B9B2A0070701E /* TreeSitterOCaml */, 9DB1B4352A2C0DAA0027B04E /* TreeSitterJSDoc */, + 9D0F66212A3F522700E0F4B7 /* TreeSitterTOML */, ); productName = "CodeLanguages-Container"; productReference = 28B3F00C290C207D000CD04D /* CodeLanguages_Container.framework */; @@ -258,6 +261,7 @@ 9DFDC3642A02D9BE0023B3BC /* XCRemoteSwiftPackageReference "tree-sitter-markdown" */, 9D6E744F2A2B9B2A0070701E /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */, 9DB1B4342A2C0DA90027B04E /* XCRemoteSwiftPackageReference "tree-sitter-jsdoc" */, + 9D0F66202A3F522700E0F4B7 /* XCRemoteSwiftPackageReference "tree-sitter-toml" */, ); productRefGroup = 28B3F00D290C207D000CD04D /* Products */; projectDirPath = ""; @@ -739,6 +743,14 @@ kind = branch; }; }; + 9D0F66202A3F522700E0F4B7 /* XCRemoteSwiftPackageReference "tree-sitter-toml" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/cengelbart39/tree-sitter-toml.git"; + requirement = { + branch = feature/spm; + kind = branch; + }; + }; 9D6E744F2A2B9B2A0070701E /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/tree-sitter/tree-sitter-ocaml.git"; @@ -916,6 +928,11 @@ package = 7DB18E9529FDC51C00F8EC00 /* XCRemoteSwiftPackageReference "tree-sitter-scala" */; productName = TreeSitterScala; }; + 9D0F66212A3F522700E0F4B7 /* TreeSitterTOML */ = { + isa = XCSwiftPackageProductDependency; + package = 9D0F66202A3F522700E0F4B7 /* XCRemoteSwiftPackageReference "tree-sitter-toml" */; + productName = TreeSitterTOML; + }; 9D6E74502A2B9B2A0070701E /* TreeSitterOCaml */ = { isa = XCSwiftPackageProductDependency; package = 9D6E744F2A2B9B2A0070701E /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */; diff --git a/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 03108a3..0dda996 100644 --- a/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -270,6 +270,15 @@ "revision" : "eda05af7ac41adb4eb19c346883c0fa32fe3bdd8" } }, + { + "identity" : "tree-sitter-toml", + "kind" : "remoteSourceControl", + "location" : "https://github.com/cengelbart39/tree-sitter-toml.git", + "state" : { + "branch" : "feature/spm", + "revision" : "28db724e8e30920638b46d408c0fbac007ac6a62" + } + }, { "identity" : "tree-sitter-typescript", "kind" : "remoteSourceControl", diff --git a/CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h b/CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h index 8015f8e..3129e65 100644 --- a/CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h +++ b/CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h @@ -53,6 +53,7 @@ extern TSLanguage *tree_sitter_rust(); extern TSLanguage *tree_sitter_scala(); extern TSLanguage *tree_sitter_sql(); extern TSLanguage *tree_sitter_swift(); +extern TSLanguage *tree_sitter_toml(); extern TSLanguage *tree_sitter_tsx(); extern TSLanguage *tree_sitter_typescript(); extern TSLanguage *tree_sitter_yaml(); diff --git a/CodeLanguagesContainer.xcframework.zip b/CodeLanguagesContainer.xcframework.zip index ea657de..6b4f910 100644 Binary files a/CodeLanguagesContainer.xcframework.zip and b/CodeLanguagesContainer.xcframework.zip differ diff --git a/README.md b/README.md index 2820534..69cbac6 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ In order to add support for additional languages we have a complete guide on how | [Scala](https://github.com/tree-sitter/tree-sitter-scala) | ✅ | ✅ | | [Sql](https://github.com/lukepistrol/tree-sitter-sql/tree/feature/spm) | ✅ | ✅ | | [Swift](https://github.com/alex-pinkus/tree-sitter-swift/tree/with-generated-files) | ✅ | ✅ | -| [TOML](https://github.com/ikatyang/tree-sitter-toml) | | | +| [TOML](https://github.com/cengelbart39/tree-sitter-toml/tree/feature/spm) | ✅ | ✅ | | [TypeScript/TSX](https://github.com/tree-sitter/tree-sitter-typescript) | ✅ | ✅ | | [Verilog](https://github.com/tree-sitter/tree-sitter-verilog) | | _not available_ | | [YAML](https://github.com/lukepistrol/tree-sitter-yaml/tree/feature/spm) | ✅ | ✅ | diff --git a/Sources/CodeEditLanguages/CodeLanguage+Definitions.swift b/Sources/CodeEditLanguages/CodeLanguage+Definitions.swift index b0f3a1a..d771a13 100644 --- a/Sources/CodeEditLanguages/CodeLanguage+Definitions.swift +++ b/Sources/CodeEditLanguages/CodeLanguage+Definitions.swift @@ -43,6 +43,7 @@ public extension CodeLanguage { .scala, .sql, .swift, + .toml, .tsx, .typescript, .yaml, @@ -286,6 +287,13 @@ public extension CodeLanguage { extensions: ["swift"] ) + /// A language structure for `TOML` + static let toml: CodeLanguage = .init( + id: .toml, + tsName: "toml", + extensions: ["toml"] + ) + /// A language structure for `TSX` static let tsx: CodeLanguage = .init( id: .tsx, diff --git a/Sources/CodeEditLanguages/CodeLanguage.swift b/Sources/CodeEditLanguages/CodeLanguage.swift index d0e5613..bef4930 100644 --- a/Sources/CodeEditLanguages/CodeLanguage.swift +++ b/Sources/CodeEditLanguages/CodeLanguage.swift @@ -136,6 +136,8 @@ public struct CodeLanguage { return tree_sitter_sql() case .swift: return tree_sitter_swift() + case .toml: + return tree_sitter_toml() case .tsx: return tree_sitter_tsx() case .typescript: diff --git a/Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md b/Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md index 45f1ac1..9cb70b3 100644 --- a/Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md +++ b/Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md @@ -47,6 +47,7 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL) - Scala - SQL - Swift +- TOML - YAML - Zig @@ -100,6 +101,7 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL) - ``scala`` - ``sql`` - ``swift`` +- ``toml`` - ``yaml`` - ``zig`` diff --git a/Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md b/Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md index 48becbb..e31f57f 100644 --- a/Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md +++ b/Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md @@ -63,5 +63,6 @@ let query = TreeSitterModel.shared.swiftQuery - ``scalaQuery`` - ``sqlQuery`` - ``swiftQuery`` +- ``tomlQuery`` - ``yamlQuery`` - ``zigQuery`` diff --git a/Sources/CodeEditLanguages/Resources/tree-sitter-toml/highlights.scm b/Sources/CodeEditLanguages/Resources/tree-sitter-toml/highlights.scm new file mode 100644 index 0000000..e4d6966 --- /dev/null +++ b/Sources/CodeEditLanguages/Resources/tree-sitter-toml/highlights.scm @@ -0,0 +1,33 @@ +; Properties +;----------- + +(bare_key) @property +(quoted_key) @string + +; Literals +;--------- + +(boolean) @constant.builtin +(comment) @comment +(string) @string +(integer) @number +(float) @number +(offset_date_time) @string.special +(local_date_time) @string.special +(local_date) @string.special +(local_time) @string.special + +; Punctuation +;------------ + +"." @punctuation.delimiter +"," @punctuation.delimiter + +"=" @operator + +"[" @punctuation.bracket +"]" @punctuation.bracket +"[[" @punctuation.bracket +"]]" @punctuation.bracket +"{" @punctuation.bracket +"}" @punctuation.bracket diff --git a/Sources/CodeEditLanguages/TreeSitterLanguage.swift b/Sources/CodeEditLanguages/TreeSitterLanguage.swift index b7616ac..71814bd 100644 --- a/Sources/CodeEditLanguages/TreeSitterLanguage.swift +++ b/Sources/CodeEditLanguages/TreeSitterLanguage.swift @@ -41,6 +41,7 @@ public enum TreeSitterLanguage: String { case scala case sql case swift + case toml case tsx case typescript case yaml diff --git a/Sources/CodeEditLanguages/TreeSitterModel.swift b/Sources/CodeEditLanguages/TreeSitterModel.swift index 73be026..8fe75a5 100644 --- a/Sources/CodeEditLanguages/TreeSitterModel.swift +++ b/Sources/CodeEditLanguages/TreeSitterModel.swift @@ -84,6 +84,8 @@ public class TreeSitterModel { return sqlQuery case .swift: return swiftQuery + case .toml: + return tomlQuery case .tsx: return tsxQuery case .typescript: @@ -257,6 +259,11 @@ public class TreeSitterModel { return queryFor(.swift) }() + /// Query for `TOML` files. + public private(set) lazy var tomlQuery: Query? = { + return queryFor(.toml) + }() + /// Query for `TSX` files. public private(set) lazy var tsxQuery: Query? = { return queryFor(.tsx) diff --git a/Tests/CodeEditLanguagesTests/CodeEditLanguagesTests.swift b/Tests/CodeEditLanguagesTests/CodeEditLanguagesTests.swift index b6d8224..bb5b78b 100644 --- a/Tests/CodeEditLanguagesTests/CodeEditLanguagesTests.swift +++ b/Tests/CodeEditLanguagesTests/CodeEditLanguagesTests.swift @@ -675,6 +675,25 @@ final class CodeEditLanguagesTests: XCTestCase { XCTAssertNotNil(query) XCTAssertNotEqual(query?.patternCount, 0) } + +// MARK: - TOML + + func test_CodeLanguageTOML() throws { + let url = URL(fileURLWithPath: "~/path/to/file.toml") + let language = CodeLanguage.detectLanguageFrom(url: url) + + XCTAssertEqual(language.id, .toml) + } + + func test_FetchQueryTOML() throws { + var language = CodeLanguage.toml + language.resourceURL = bundleURL + + let data = try Data(contentsOf: language.queryURL!) + let query = try? Query(language: language.language!, data: data) + XCTAssertNotNil(query) + XCTAssertNotEqual(query?.patternCount, 0) + } // MARK: - TSX