pascalabcnet/ParserTools/Tools.cs
Александр Земляк 51e4ae050a
Перемещение модулей SPython в Lib\SPython (#3371)
* Replace languageCaseSensitive by languageName data in PCU and caseSensitive parameters in Compiler functions

* Implement SearchDirectories filling in Compiler and move SPython standard modules to their new directory

* Implement search using current language extension first in Compiler

* Delete LibForVB folder and update TestRunner to support different Lib dirs

* Update installer scripts to create separate Lib folder for SPython

* Take into account Lib dirs not found

* Delete supportedSourceFiles variable in Compiler

* Delete unused functions from LanguageIntegrator
2026-01-13 08:20:13 +03:00

69 lines
2.4 KiB
C#

// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System.IO;
namespace PascalABCCompiler
{
public enum SourceFileOperation
{
GetText, GetLastWriteTime, Exists, FileEncoding
}
public delegate object SourceFilesProviderDelegate(string FileName, SourceFileOperation FileOperation);
public static class SourceFilesProviders
{
public static object DefaultSourceFilesProvider(string FileName, SourceFileOperation FileOperation)
{
switch (FileOperation)
{
case SourceFileOperation.GetText:
if (!File.Exists(FileName)) return null;
/*TextReader tr = new StreamReader(file_name, System.Text.Encoding.GetEncoding(1251));
//TextReader tr = new StreamReader(file_name, System.Text.Encoding.);
string Text = tr.ReadToEnd();
tr.Close();*/
string Text = FileReader.ReadFileContent(FileName, null);
return Text;
case SourceFileOperation.Exists:
return File.Exists(FileName);
case SourceFileOperation.GetLastWriteTime:
return File.GetLastWriteTime(FileName);
}
return null;
}
}
public class FormatTools
{
public static string LanguageAndExtensionsFormatted(string languageName, string[] extensions)
{
return string.Format("{0} ({1})", languageName, ExtensionsToString(extensions, "*", ";"));
}
public static string ExtensionsToString(string[] Extensions,string Mask,string Delimer)
{
string res = "";
for (int i = 0; i < Extensions.Length; i++)
{
res += Mask+Extensions[i];
if (i != Extensions.Length - 1)
res += Delimer;
}
return res;
}
public static string ObjectsToString(object[] Objects, string Delimer)
{
string res = "";
for (int i = 0; i < Objects.Length; i++)
{
res += Objects[i].ToString();
if (i != Objects.Length - 1)
res += Delimer;
}
return res;
}
}
}