BadScript 2
Loading...
Searching...
No Matches
BadScript2.Settings.BadSettingsReader Class Reference

Reads a JSON file and returns the resulting BadSettings Object. More...

Public Member Functions

 BadSettingsReader (BadSettings rootSettings, IFileSystem mFileSystem, params string[] sourceFiles)
 Constructs a new BadSettingsReader.
 
BadSettings ReadSettings ()
 Returns a new Instance of BadSettings with all source files loaded.
 

Private Member Functions

JToken ReadJsonFile (string fileName)
 Parses a JSON File and returns the resulting JObject.
 
void ReadDynamicSettings (BadSettings settings)
 Processes Dynamic Include Statements inside a settings object.
 

Static Private Member Functions

static BadSettings CreateSettings (JToken? token, string path)
 Creates a Settings Object from a JToken.
 

Private Attributes

readonly BadSettings m_RootSettings
 The Root Settings Object that all other Settings are added into.
 
readonly string[] m_SourceFiles
 The Source Files that are used to read the Settings.
 
readonly IFileSystem m_FileSystem
 

Detailed Description

Reads a JSON file and returns the resulting BadSettings Object.

Definition at line 11 of file BadSettingsReader.cs.

Constructor & Destructor Documentation

◆ BadSettingsReader()

BadScript2.Settings.BadSettingsReader.BadSettingsReader ( BadSettings  rootSettings,
IFileSystem  mFileSystem,
params string[]  sourceFiles 
)

Constructs a new BadSettingsReader.

Parameters
rootSettingsRoot Settings Object
sourceFilesList of Source Files

Definition at line 30 of file BadSettingsReader.cs.

31 {
32 m_SourceFiles = sourceFiles;
33 m_RootSettings = rootSettings;
34 m_FileSystem = mFileSystem;
35 }
readonly string[] m_SourceFiles
The Source Files that are used to read the Settings.
readonly BadSettings m_RootSettings
The Root Settings Object that all other Settings are added into.

Member Function Documentation

◆ CreateSettings()

static BadSettings BadScript2.Settings.BadSettingsReader.CreateSettings ( JToken?  token,
string  path 
)
staticprivate

Creates a Settings Object from a JToken.

Parameters
tokenJToken to convert
Returns
BadSettings Instance

Definition at line 86 of file BadSettingsReader.cs.

87 {
88 if (token is
89 not
90 {
91 Type: JTokenType.Object,
92 })
93 {
94 return new BadSettings(token, path);
95 }
96
97 Dictionary<string, BadSettings> settings = new Dictionary<string, BadSettings>();
98 JObject obj = (JObject)token;
99
100 foreach (KeyValuePair<string, JToken?> keyValuePair in obj)
101 {
102 settings.Add(keyValuePair.Key, CreateSettings(keyValuePair.Value, path));
103 }
104
105 return new BadSettings(settings, path);
106 }
static BadSettings CreateSettings(JToken? token, string path)
Creates a Settings Object from a JToken.

◆ ReadDynamicSettings()

void BadScript2.Settings.BadSettingsReader.ReadDynamicSettings ( BadSettings  settings)
private

Processes Dynamic Include Statements inside a settings object.

Parameters
settingsSettings object to process

Definition at line 113 of file BadSettingsReader.cs.

114 {
115 BadLogger.Log("Processing Dynamic Includes", "SettingsReader");
116 BadSettings? elems = settings.FindProperty("SettingsBuilder.Include");
117 string[]? includes = elems?.GetValue<string[]>();
118
119 if (includes == null)
120 {
121 return;
122 }
123
124 elems?.SetValue(null);
125
126 do
127 {
128 List<BadSettings> setting = new List<BadSettings>();
129
130 foreach (string include in includes)
131 {
132 if (include.Contains('*'))
133 {
134 bool allDirs = include.Contains("**");
135 string[] parts = include.Split(
136 new[]
137 {
138 '*',
139 },
140 StringSplitOptions.RemoveEmptyEntries
141 );
142 string path = parts[0];
143 string extension = parts[1];
144 IEnumerable<string> files = m_FileSystem.GetFiles(
145 path,
146 extension,
147 allDirs
148 );
149 setting.AddRange(
150 files.Select(
151 f =>
152 {
153 BadLogger.Log("Reading settings from file: " + f, "SettingsReader");
154
155 return CreateSettings(ReadJsonFile(f), f);
156 }
157 )
158 );
159 }
160 else
161 {
162 BadLogger.Log("Reading settings from file: " + include, "SettingsReader");
163 setting.Add(CreateSettings(ReadJsonFile(include), include));
164 }
165 }
166
167 settings.Populate(true, setting.ToArray());
168
169
170 BadLogger.Log("Resolving environment variables", "SettingsReader");
171 BadSettings.ResolveEnvironmentVariables(settings);
172
173 elems = settings.FindProperty("SettingsBuilder.Include");
174 includes = elems?.GetValue<string[]>();
175 }
176 while (includes != null);
177
178 settings.RemoveProperty("SettingsBuilder");
179 }
Public facing interface for a logger.
Definition BadLogger.cs:7
static void Log(string message)
Writes a Log to the Message Handler.
Definition BadLogger.cs:26
JToken ReadJsonFile(string fileName)
Parses a JSON File and returns the resulting JObject.
IEnumerable< string > GetFiles(string path, string extension, bool recursive)
Returns all files in the given directory that match the specified extension.

◆ ReadJsonFile()

JToken BadScript2.Settings.BadSettingsReader.ReadJsonFile ( string  fileName)
private

Parses a JSON File and returns the resulting JObject.

Parameters
fileNameSource File
Returns

Definition at line 73 of file BadSettingsReader.cs.

74 {
75 string json = m_FileSystem.ReadAllText(fileName);
76 JToken token = JToken.Parse(json);
77
78 return token;
79 }

◆ ReadSettings()

BadSettings BadScript2.Settings.BadSettingsReader.ReadSettings ( )

Returns a new Instance of BadSettings with all source files loaded.

Returns
BadSettings Instance

Definition at line 41 of file BadSettingsReader.cs.

42 {
43 List<BadSettings> settings = new List<BadSettings>
44 {
46 };
47
48 Queue<string> files = new Queue<string>(m_SourceFiles);
49
50 while (files.Count != 0)
51 {
52 string file = files.Dequeue();
53 BadLogger.Log("Reading settings from file: " + file, "SettingsReader");
54 settings.Add(CreateSettings(ReadJsonFile(file), file));
55 }
56
57 BadSettings s = new BadSettings(string.Empty);
58 s.Populate(true, settings.ToArray());
59
60 BadLogger.Log("Resolving environment variables", "SettingsReader");
61 BadSettings.ResolveEnvironmentVariables(s);
62
64
65 return s;
66 }
void ReadDynamicSettings(BadSettings settings)
Processes Dynamic Include Statements inside a settings object.

Member Data Documentation

◆ m_FileSystem

readonly IFileSystem BadScript2.Settings.BadSettingsReader.m_FileSystem
private

Definition at line 23 of file BadSettingsReader.cs.

◆ m_RootSettings

readonly BadSettings BadScript2.Settings.BadSettingsReader.m_RootSettings
private

The Root Settings Object that all other Settings are added into.

Definition at line 16 of file BadSettingsReader.cs.

◆ m_SourceFiles

readonly string [] BadScript2.Settings.BadSettingsReader.m_SourceFiles
private

The Source Files that are used to read the Settings.

Definition at line 21 of file BadSettingsReader.cs.


The documentation for this class was generated from the following file: