allejo / allejo/bzfPluginGen

Generate code to read a configuration file

Aperta
#1 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
enhancement
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.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.