Generate code to read a configuration file
- Lingua principale
- TypeScript
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Add a ChunkWriter to generate a configuration file reader that makes use of bzfs' `PluginConfig`
## Specification
**src/IConfig.ts**
```ts
export enum ConfigPropertyType {
Int = 'Int',
Float = 'Float',
Double = 'Double',
String = 'String',
Team = 'Team',
}
export interface IConfigProperty {
name: string;
type: ConfigPropertyType;
optional: boolean;
defaultValue?: any;
}
export interface IConfig {
sectionName: string;
properties: IConfigProperty[];
}
```
**Given Data**
```ts
{
sectionName: 'someSpecialSection',
properties: [
{
name: 'my_int',
type: ConfigPropertyType.Int,
optional: true,
},
{
name: 'my_string',
type: ConfigPropertyType.String,
optional: false,
},
]
}
```
**Expected Output**
```cpp
class TestClass : public bz_Plugin
{
public:
void Init(const char* config);
private:
void loadConfigurationFile();
int settings_myInt;
std::string settings_myString;
const char* configFile;
};
void TestClass::Init(const char* config)
{
configFile = config;
loadConfigurationFile();
}
void TestClass::loadConfigurationFile()
{
const char* section = "someSpecialSection";
PluginConfig plgCfg = PluginConfig(configFile);
if (plgCfg.errors)
{
bz_debugMessagef(0, "ERROR :: There was an error reading the configuration file: %s", configFile);
return;
}
std::string my_int = plgCfg.item(section, "my_int").c_str();
if (!my_int.empty())
{
settings_myInt = atoi(my_int);
}
std::string my_string = plgCfg.item(section, "my_string").c_str();
if (my_string.empty())
{
bz_debugMessagef(0, "ERROR :: The 'my_string' configuration field is required");
}
else
{
settings_myString = bz_trim(my_string.c_str(), "\"");
}
}
```
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.