Christopher
8 years ago
12 changed files with 2859 additions and 2672 deletions
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2 |
||||
guid: 1b39a7374cafc4d698bac382a6ec8092 |
||||
folderAsset: yes |
||||
timeCreated: 1488287629 |
||||
licenseType: Free |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2 |
||||
guid: 246e827fcb2f2445fab551623bf99ba3 |
||||
folderAsset: yes |
||||
timeCreated: 1481645890 |
||||
licenseType: Free |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
@ -0,0 +1,159 @@
|
||||
//----------------------------------------------------------------------- |
||||
// <summary> |
||||
// Unity Editor tool that formats line endings to be consistent. |
||||
// </summary> |
||||
// <copyright file="LineEndingsEditMenu.cs" company="Tiaan.com"> |
||||
// Copyright (c) 2014 Tiaan Geldenhuys |
||||
// |
||||
// Permission is hereby granted, free of charge, to any person |
||||
// obtaining a copy of this software and associated documentation |
||||
// files (the "Software"), to deal in the Software without |
||||
// restriction, including without limitation the rights to use, |
||||
// copy, modify, merge, publish, distribute, sublicense, and/or |
||||
// sell copies of the Software, and to permit persons to whom the |
||||
// Software is furnished to do so, subject to the following |
||||
// conditions: |
||||
// |
||||
// The above copyright notice and this permission notice shall be |
||||
// included in all copies or substantial portions of the Software. |
||||
// |
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
||||
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
||||
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
||||
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
||||
// OTHER DEALINGS IN THE SOFTWARE. |
||||
// </copyright> |
||||
//----------------------------------------------------------------------- |
||||
namespace TiaanDotCom.Unity3D.EditorTools |
||||
{ |
||||
using System.Collections.Generic; |
||||
using System.IO; |
||||
using System.Text.RegularExpressions; |
||||
using UnityEditor; |
||||
using UnityEngine; |
||||
|
||||
/// <summary> |
||||
/// Implements menu items for the Unity Editor to perform |
||||
/// end-of-line conversion and fix issues such as for the |
||||
/// following: "There are inconsistent line endings in the |
||||
/// 'Assets/.../*.cs' script. Some are Mac OS X (UNIX) and |
||||
/// some are Windows. This might lead to incorrect line |
||||
/// numbers in stacktraces and compiler errors." |
||||
/// </summary> |
||||
public static class LineEndingsEditMenu |
||||
{ |
||||
// [MenuItem("Tools/Fungus/Utilities/EOL Conversion (Windows)")] |
||||
// public static void ConvertLineEndingsToWindowsFormat() |
||||
// { |
||||
// ConvertLineEndings(false); |
||||
// } |
||||
|
||||
[MenuItem("Tools/Fungus/Utilities/Convert to Mac Line Endings")] |
||||
public static void ConvertLineEndingsToMacFormat() |
||||
{ |
||||
ConvertLineEndings(true); |
||||
} |
||||
|
||||
private static void ConvertLineEndings(bool isUnixFormat) |
||||
{ |
||||
string title = string.Format( |
||||
"EOL Conversion to {0} Format", |
||||
(isUnixFormat ? "UNIX" : "Windows")); |
||||
if (!EditorUtility.DisplayDialog( |
||||
title, |
||||
"This operation may potentially modify " + |
||||
"many files in the current project! " + |
||||
"Hopefully you have backups of everything. " + |
||||
"Are you sure you want to proceed?", |
||||
"Yes", |
||||
"No")) |
||||
{ |
||||
Debug.Log("EOL Conversion was not attempted."); |
||||
return; |
||||
} |
||||
|
||||
var fileTypes = new string[] |
||||
{ |
||||
"*.txt", |
||||
"*.cs", |
||||
"*.js", |
||||
"*.boo", |
||||
"*.compute", |
||||
"*.shader", |
||||
"*.cginc", |
||||
"*.glsl", |
||||
"*.xml", |
||||
"*.xaml", |
||||
"*.json", |
||||
"*.inc", |
||||
"*.css", |
||||
"*.htm", |
||||
"*.html", |
||||
}; |
||||
|
||||
string projectAssetsPath = Application.dataPath; |
||||
int totalFileCount = 0; |
||||
var changedFiles = new List<string>(); |
||||
var regex = new Regex(@"(?<!\r)\n"); |
||||
const string LineEnd = "\r\n"; |
||||
var comparisonType = System.StringComparison.Ordinal; |
||||
foreach (string fileType in fileTypes) |
||||
{ |
||||
string[] filenames = Directory.GetFiles( |
||||
projectAssetsPath, |
||||
fileType, |
||||
SearchOption.AllDirectories); |
||||
totalFileCount += filenames.Length; |
||||
foreach (string filename in filenames) |
||||
{ |
||||
string originalText = File.ReadAllText(filename); |
||||
string changedText; |
||||
changedText = regex.Replace(originalText, LineEnd); |
||||
if (isUnixFormat) |
||||
{ |
||||
changedText = |
||||
changedText.Replace(LineEnd, "\n"); |
||||
} |
||||
|
||||
bool isTextIdentical = string.Equals( |
||||
changedText, originalText, comparisonType); |
||||
if (!isTextIdentical) |
||||
{ |
||||
changedFiles.Add(filename); |
||||
File.WriteAllText( |
||||
filename, |
||||
changedText, |
||||
System.Text.Encoding.UTF8); |
||||
} |
||||
} |
||||
} |
||||
|
||||
int changedFileCount = changedFiles.Count; |
||||
int skippedFileCount = (totalFileCount - changedFileCount); |
||||
string message = string.Format( |
||||
"EOL Conversion skipped {0} " + |
||||
"files and changed {1} files", |
||||
skippedFileCount, |
||||
changedFileCount); |
||||
if (changedFileCount <= 0) |
||||
{ |
||||
message += "."; |
||||
} |
||||
else |
||||
{ |
||||
message += (":" + LineEnd); |
||||
message += string.Join(LineEnd, changedFiles.ToArray()); |
||||
} |
||||
|
||||
Debug.Log(message); |
||||
if (changedFileCount > 0) |
||||
{ |
||||
// Recompile modified scripts. |
||||
AssetDatabase.Refresh(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2 |
||||
guid: 71f72aa69e779c946beeee31eb72d4d3 |
||||
MonoImporter: |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
Loading…
Reference in new issue