123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ResBuilder
- {
- static class Tools
- {
- public static readonly Encoding UTF8 = new UTF8Encoding(false, false);
- public static readonly Encoding UTF8_BOM = new UTF8Encoding(true, false);
- public static string DecodeUTF8(byte[] data)
- {
- if (data.Length > 3)
- {
- if ((data[0] == 0xEF) && (data[1] == 0xBB) && (data[2] == 0xBF))
- {
- return UTF8_BOM.GetString(data);
- }
- }
- return UTF8.GetString(data);
- }
- public static bool ExistCharInLineBefore(string str, int endIdex, char c)
- {
- for (int i = endIdex - 1; i >= 0; i--)
- {
- if (str[i] == '\n')
- {
- return false;
- }
- if (str[i] == c)
- {
- return true;
- }
- }
- return false;
- }
- public static string FindUpDirectory(string dirName, int rlev = 3)
- {
- var curPath = Environment.CurrentDirectory;
- var curNode = new DirectoryInfo(curPath);
- var uplev = 0;
- while (curNode.Parent != null && uplev < rlev)
- {
- var ret = curNode.GetDirectories(dirName, SearchOption.TopDirectoryOnly);
- if (ret.Length > 0)
- {
- return ret[0].FullName;
- }
- else
- {
- curNode = curNode.Parent;
- }
- uplev++;
- }
- return null;
- }
- internal static uint HashFileNameWithoutExtension(string relativeFilePath)
- {
- uint hash = 0;
- for (int i = 0; i < relativeFilePath.Length; i++)
- {
- uint cc = relativeFilePath[i];
- if (cc == '.')
- {
- break;
- }
- if (cc >= '0' && cc <= '9')
- {
- cc = cc - '0';
- }
- else if (cc >= 'A' && cc <= 'Z')
- {
- cc = cc - 'A' + 10;
- }
- else if (cc >= 'a' && cc <= 'z')
- {
- cc = cc - 'a' + 34;
- }
- else
- {
- cc = 59;
- }
- hash += (hash << 5) + cc;
- }
- return hash;
- }
- }
- }
|