Process Lua scripts by stripping comments. This can save up a few bytes up to kilobytes.
parent
8c57d7befb
commit
6b89b38b96
|
@ -222,7 +222,12 @@ namespace GarrysMod.AddonCreator.Addon
|
||||||
throw new FileNotFoundException("Addon building requires a valid addon.json file.");
|
throw new FileNotFoundException("Addon building requires a valid addon.json file.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var files = Files;
|
var files = Files
|
||||||
|
// minimize lua code
|
||||||
|
.Select(f => f.Key.EndsWith(".lua", StringComparison.OrdinalIgnoreCase)
|
||||||
|
? new KeyValuePair<string, AddonFileInfo>(f.Key, new LuaAddonFileInfo(f.Value))
|
||||||
|
: f)
|
||||||
|
.ToDictionary(i => i.Key, i => i.Value);
|
||||||
|
|
||||||
// Check for errors and ignores in addon.json
|
// Check for errors and ignores in addon.json
|
||||||
var addonJson =
|
var addonJson =
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace GarrysMod.AddonCreator.Addon
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Wrapper around another file info for optimizing Lua files.
|
||||||
|
/// </summary>
|
||||||
|
public class LuaAddonFileInfo : AddonFileInfo
|
||||||
|
{
|
||||||
|
private readonly AddonFileInfo _fi;
|
||||||
|
|
||||||
|
private byte[] _content;
|
||||||
|
|
||||||
|
private readonly string _stripCommentsRegex = string.Join("|", new[]
|
||||||
|
{
|
||||||
|
// block comments
|
||||||
|
@"/\*(.*?)\*/",
|
||||||
|
@"\-\-\[\[(.*?)\]\]",
|
||||||
|
|
||||||
|
// line comments
|
||||||
|
@"//(.*?)(?<linebreak>\r?\n)",
|
||||||
|
@"\-\-(.*?)(?<linebreak>\r?\n)"
|
||||||
|
});
|
||||||
|
private string _luaCode;
|
||||||
|
|
||||||
|
public LuaAddonFileInfo(AddonFileInfo actual)
|
||||||
|
{
|
||||||
|
_fi = actual;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override byte[] GetContents()
|
||||||
|
{
|
||||||
|
if (_content != null)
|
||||||
|
return _content;
|
||||||
|
|
||||||
|
_luaCode = Encoding.UTF8.GetString(_fi.GetContents());
|
||||||
|
_luaCode = Regex.Replace(_luaCode, _stripCommentsRegex, m => m.Groups["linebreak"] != null ? m.Groups["linebreak"].Value : "");
|
||||||
|
|
||||||
|
|
||||||
|
return _content;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,6 +40,9 @@
|
||||||
<BaseIntermediateOutputPath>$(SolutionDir)\obj\$(TargetName)\$(Configuration)\$(Platform)\</BaseIntermediateOutputPath>
|
<BaseIntermediateOutputPath>$(SolutionDir)\obj\$(TargetName)\$(Configuration)\$(Platform)\</BaseIntermediateOutputPath>
|
||||||
<OutputPath>$(SolutionDir)\bin\$(Configuration)\$(Platform)\</OutputPath>
|
<OutputPath>$(SolutionDir)\bin\$(Configuration)\$(Platform)\</OutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartupObject>GarrysMod.AddonCreator.Program</StartupObject>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
@ -53,6 +56,7 @@
|
||||||
<Compile Include="Addon\AddonFileInfo.cs" />
|
<Compile Include="Addon\AddonFileInfo.cs" />
|
||||||
<Compile Include="Addon\AddonJson.cs" />
|
<Compile Include="Addon\AddonJson.cs" />
|
||||||
<Compile Include="Addon\AddonWhitelist.cs" />
|
<Compile Include="Addon\AddonWhitelist.cs" />
|
||||||
|
<Compile Include="Addon\LuaAddonFileInfo.cs" />
|
||||||
<Compile Include="Extensions.cs" />
|
<Compile Include="Extensions.cs" />
|
||||||
<Compile Include="Addon\JsonAddonFileInfo.cs" />
|
<Compile Include="Addon\JsonAddonFileInfo.cs" />
|
||||||
<Compile Include="Hashing\Crc32.cs" />
|
<Compile Include="Hashing\Crc32.cs" />
|
||||||
|
@ -64,6 +68,9 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Tests\" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
|
Loading…
Reference in New Issue