This commit is contained in:
gazhonsepaskwa
2025-02-18 11:59:16 +01:00
parent 1d4b97ed9a
commit dcb9bde568
9 changed files with 50 additions and 48 deletions

View File

@@ -68,9 +68,10 @@ bool check_unclosed_quote(char *c, t_node *node)
while (cpy)
{
i = 0;
while(cpy->val[i])
while (cpy->val[i])
{
if ((cpy->val[i] == '"' || cpy->val[i] == '\'') && cpy->val[i] != c[0] && closed)
if ((cpy->val[i] == '"' || cpy->val[i] == '\'')
&& cpy->val[i] != c[0] && closed)
in_other_quote = !in_other_quote;
if (cpy->val[i] == c[0] && !in_other_quote)
closed = !closed;

View File

@@ -33,7 +33,7 @@ static t_node *tokenize_base(char *str)
return (lst);
}
void unstick_main(t_node *it)
void unstick_main(t_node *it)
{
char *first_str;
char *second_str;
@@ -52,42 +52,6 @@ void unstick_main(t_node *it)
ft_free(&second_str);
}
bool unstick_quote(int count, t_node *it)
{
char *first_str;
char *second_str;
if (count == 0)
return (false);
first_str = ft_substr(it->val, 0, count + 1);
second_str = ft_substr(it->val, count + 1, ft_strlen(it->val));
ft_free(&it->val);
it->val = ft_strdup(first_str);
create_node_after(it, second_str);
ft_free(&first_str);
ft_free(&second_str);
return (true);
}
int quote_sticked(char *str)
{
int i;
char quote;
i = 1;
quote = 0;
update_quote(&quote, str[0]);
while (str[i])
{
if (quote && str[i] == quote)
if (str[i + 1] && is_meta(str[i + 1]))
return(i);
update_quote(&quote, str[i]);
i++;
}
return (0);
}
static int unstick_nodes(t_node *head)
{
t_node *it;

View File

@@ -39,12 +39,12 @@ int trim_nodes(t_node *head)
return (1);
}
static bool is_space(char c)
static bool is_space(char c)
{
if ((c >= 9 && c <= 13) || c == 32)
return (true);
else
return (false);
return (false);
}
int goto_nxt_space(char *str)

View File

@@ -53,6 +53,42 @@ void set_token(t_node *head)
}
}
bool unstick_quote(int count, t_node *it)
{
char *first_str;
char *second_str;
if (count == 0)
return (false);
first_str = ft_substr(it->val, 0, count + 1);
second_str = ft_substr(it->val, count + 1, ft_strlen(it->val));
ft_free(&it->val);
it->val = ft_strdup(first_str);
create_node_after(it, second_str);
ft_free(&first_str);
ft_free(&second_str);
return (true);
}
int quote_sticked(char *str)
{
int i;
char quote;
i = 1;
quote = 0;
update_quote(&quote, str[0]);
while (str[i])
{
if (quote && str[i] == quote)
if (str[i + 1] && is_meta(str[i + 1]))
return (i);
update_quote(&quote, str[i]);
i++;
}
return (0);
}
int find_quote_node(t_node *head, char q)
{
t_node *it;

View File

@@ -68,7 +68,7 @@ int unic(int *meta)
return (1);
}
void update_quote(char *quote, char cmp)
void update_quote(char *quote, char cmp)
{
if (*quote == 0 && (cmp == '"' || cmp == '\''))
*quote = cmp;