mirror of
https://github.com/3lswear/webserv.git
synced 2025-10-29 13:27:59 +03:00
intermed changes
This commit is contained in:
@@ -76,6 +76,11 @@ class toml_node
|
|||||||
value.map = obj;
|
value.map = obj;
|
||||||
type = MAP;
|
type = MAP;
|
||||||
}
|
}
|
||||||
|
void setMapArray(TOMLMapArray *map_array)
|
||||||
|
{
|
||||||
|
value.map_array = map_array;
|
||||||
|
type = MAPARRAY;
|
||||||
|
}
|
||||||
std::string *toString(void) const
|
std::string *toString(void) const
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
|
|||||||
@@ -96,6 +96,30 @@ namespace config
|
|||||||
return (node);
|
return (node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toml_node *parseMapArray(void)
|
||||||
|
{
|
||||||
|
std::cerr << "Parsing MapArray" << std::endl;
|
||||||
|
toml_node *node = new toml_node;
|
||||||
|
TOMLMapArray *servers = new TOMLMapArray;
|
||||||
|
|
||||||
|
while (tokenizer.hasMoreTokens())
|
||||||
|
{
|
||||||
|
s_token current;
|
||||||
|
try { current = tokenizer.getToken(); }
|
||||||
|
catch (std::logic_error e)
|
||||||
|
{
|
||||||
|
std::cerr << e.what() << std::endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (current.type == MAPARRAY_DECL)
|
||||||
|
servers->push_back(parseMap()->getMap());
|
||||||
|
else
|
||||||
|
throw std::logic_error("unexpected token in parseMapArray");
|
||||||
|
}
|
||||||
|
node->setMapArray(servers);
|
||||||
|
return (node);
|
||||||
|
}
|
||||||
|
|
||||||
toml_node *parseString(void)
|
toml_node *parseString(void)
|
||||||
{
|
{
|
||||||
/* toml_node *node; */
|
/* toml_node *node; */
|
||||||
@@ -272,6 +296,10 @@ namespace config
|
|||||||
root = parsedBool;
|
root = parsedBool;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MAPARRAY_DECL:
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
throw std::logic_error("JOPA :(");
|
throw std::logic_error("JOPA :(");
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ namespace config
|
|||||||
ARR_CLOSE,
|
ARR_CLOSE,
|
||||||
MAP_OPEN,
|
MAP_OPEN,
|
||||||
MAP_CLOSE,
|
MAP_CLOSE,
|
||||||
MAPARRAY_OPEN,
|
MAPARRAY_DECL
|
||||||
MAPARRAY_CLOSE
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct s_token
|
struct s_token
|
||||||
@@ -144,27 +143,23 @@ namespace config
|
|||||||
file.get(c);
|
file.get(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (c == ']')
|
|
||||||
{
|
|
||||||
std::streampos prev_pos = file.tellg();
|
|
||||||
file.get(c);
|
|
||||||
if (c == ']')
|
|
||||||
{
|
|
||||||
token.type = MAPARRAY_CLOSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
token.type = ARR_CLOSE;
|
|
||||||
file.seekg(prev_pos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (c == '[')
|
else if (c == '[')
|
||||||
{
|
{
|
||||||
std::streampos prev_pos = file.tellg();
|
std::streampos prev_pos = file.tellg();
|
||||||
file.get(c);
|
file.get(c);
|
||||||
if (c == '[')
|
if (c == '[')
|
||||||
{
|
{
|
||||||
token.type = MAPARRAY_OPEN;
|
token.type = MAPARRAY_DECL;
|
||||||
|
file.get(c);
|
||||||
|
while (c != ']')
|
||||||
|
{
|
||||||
|
token.value += c;
|
||||||
|
file.get(c);
|
||||||
|
}
|
||||||
|
if (c == ']')
|
||||||
|
file.get(c);
|
||||||
|
if (c != ']')
|
||||||
|
throw std::logic_error("error in MAPARRAY_DECL");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -173,10 +168,8 @@ namespace config
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/* else if (c == '[') */
|
else if (c == ']')
|
||||||
/* token.type = ARR_OPEN; */
|
token.type = ARR_CLOSE;
|
||||||
/* else if (c == ']') */
|
|
||||||
/* token.type = ARR_CLOSE; */
|
|
||||||
else if (c == '=')
|
else if (c == '=')
|
||||||
token.type = ASSIGN;
|
token.type = ASSIGN;
|
||||||
else if (c == '\n')
|
else if (c == '\n')
|
||||||
|
|||||||
Reference in New Issue
Block a user