/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* format.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cchauvet <|", out[i - 1])) { while (out[i] == out[i - 1]) i++; if (ft_replace(&out, i)) return (NULL); } if (out[i] != '\0') i++; } return (out); } static char *ft_spacer_before(const char *str) { char *out; ssize_t i; out = ft_strdup(str); if (out == NULL) return (NULL); i = -1; while (out[++i] != '\0') { while (ft_is_in_quote(out, i + 1)) i++; if (out[i] == '\0') break ; if (ft_is_in("><|", out[i + 1])) { while (out[i] == ' ') i++; while (out[i] == out[i + 1]) i++; if (ft_replace(&out, i + 1)) return (NULL); } } return (out); } static void ft_space_simplifier(char *str) { size_t i; size_t y; i = 0; while (str[i] != '\0') { if (ft_is_in_quote(str, i)) i++; if (str[i] != '\0') break ; y = 0; while (str[y + i] == ' ') y++; if (y > 1) { ft_strshift(str + i, -y + 1); y--; } i++; } } char *ft_formater(t_data *data, const char *str) { char *out; char *temp; if (ft_str_is_empty(str)) return (ft_strdup(" ")); temp = ft_spacer_after(str); if (temp == NULL) return (NULL); out = ft_spacer_before(temp); free(temp); if (out == NULL) return (NULL); ft_space_simplifier(out); if (out[ft_strlen(out) - 1] == ' ') out[ft_strlen(out) - 1] = '\0'; temp = ft_env_filler(data, out); free(out); return (temp); }