Skip to content

Commit

Permalink
Parse grammar definitions with System.Text.Json
Browse files Browse the repository at this point in the history
  • Loading branch information
Numpsy committed Oct 23, 2022
1 parent f8552e2 commit ba66148
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 36 deletions.
1 change: 1 addition & 0 deletions build/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
<LangVersion>latest</LangVersion>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
<SystemTextJsonVersion>6.0.0</SystemTextJsonVersion>
</PropertyGroup>
</Project>
55 changes: 27 additions & 28 deletions src/TextMateSharp.Grammars/GrammarDefinition.cs
Original file line number Diff line number Diff line change
@@ -1,30 +1,29 @@
using System.Collections.Generic;

using Newtonsoft.Json;
using System.Text.Json.Serialization;

namespace TextMateSharp.Grammars
{
public class Engines
{
[JsonProperty("engines")]
[JsonPropertyName("engines")]
public string VsCode { get; set; }
}

public class Scripts
{
[JsonProperty("update-grammar")]
[JsonPropertyName("update-grammar")]
public string UpdateGrammar { get; set; }
}

public class Language
{
[JsonProperty("id")]
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonProperty("extensions")]
[JsonPropertyName("extensions")]
public List<string> Extensions { get; set; }
[JsonProperty("aliases")]
[JsonPropertyName("aliases")]
public List<string> Aliases { get; set; }
[JsonProperty("configuration")]
[JsonPropertyName("configuration")]
public string Configuration { get; set; }

public override string ToString()
Expand All @@ -38,61 +37,61 @@ public override string ToString()

public class Grammar
{
[JsonProperty("language")]
[JsonPropertyName("language")]
public string Language { get; set; }
[JsonProperty("scopeName")]
[JsonPropertyName("scopeName")]
public string ScopeName { get; set; }
[JsonProperty("path")]
[JsonPropertyName("path")]
public string Path { get; set; }
}

public class Snippet
{
[JsonProperty("language")]
[JsonPropertyName("language")]
public string Language { get; set; }
[JsonProperty("path")]
[JsonPropertyName("path")]
public string Path { get; set; }
}

public class Contributes
{
[JsonProperty("languages")]
[JsonPropertyName("languages")]
public List<Language> Languages { get; set; }
[JsonProperty("grammars")]
[JsonPropertyName("grammars")]
public List<Grammar> Grammars { get; set; }
[JsonProperty("snippets")]
[JsonPropertyName("snippets")]
public List<Snippet> Snippets { get; set; }
}

public class Repository
{
[JsonProperty("type")]
[JsonPropertyName("type")]
public string Type { get; set; }
[JsonProperty("url")]
[JsonPropertyName("url")]
public string Url { get; set; }
}

public class GrammarDefinition
{
[JsonProperty("name")]
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonProperty("displayName")]
[JsonPropertyName("displayName")]
public string DisplayName { get; set; }
[JsonProperty("description")]
[JsonPropertyName("description")]
public string Description { get; set; }
[JsonProperty("version")]
[JsonPropertyName("version")]
public string Version { get; set; }
[JsonProperty("publisher")]
[JsonPropertyName("publisher")]
public string Publisher { get; set; }
[JsonProperty("license")]
[JsonPropertyName("license")]
public string License { get; set; }
[JsonProperty("engines")]
[JsonPropertyName("engines")]
public Engines Engines { get; set; }
[JsonProperty("scripts")]
[JsonPropertyName("scripts")]
public Scripts Scripts { get; set; }
[JsonProperty("contributes")]
[JsonPropertyName("contributes")]
public Contributes Contributes { get; set; }
[JsonProperty("repository")]
[JsonPropertyName("repository")]
public Repository Repository { get; set; }
}
}
9 changes: 2 additions & 7 deletions src/TextMateSharp.Grammars/RegistryOptions.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;

using TextMateSharp.Grammars.Resources;

using Newtonsoft.Json;

using TextMateSharp.Internal.Grammars.Reader;
using TextMateSharp.Internal.Themes.Reader;
using TextMateSharp.Internal.Types;
Expand Down Expand Up @@ -157,15 +156,11 @@ public IRawTheme GetDefaultTheme()

void InitializeAvailableGrammars()
{
var serializer = new JsonSerializer();

foreach (string grammar in GrammarNames.SupportedGrammars)
{
using (Stream stream = ResourceLoader.OpenGrammarPackage(grammar))
using (StreamReader reader = new StreamReader(stream))
using (JsonTextReader jsonTextReader = new JsonTextReader(reader))
{
GrammarDefinition definition = serializer.Deserialize<GrammarDefinition>(jsonTextReader);
GrammarDefinition definition = JsonSerializer.Deserialize<GrammarDefinition>(stream);
_availableGrammars.Add(grammar, definition);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/TextMateSharp.Grammars/TextMateSharp.Grammars.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<EmbeddedResource Include="Resources\Grammars\**\*.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
<PackageReference Include="System.Text.Json" Version="$(SystemTextJsonVersion)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\TextMateSharp\TextMateSharp.csproj" />
Expand Down

0 comments on commit ba66148

Please sign in to comment.