Changed prompt len calculation

This commit is contained in:
Maieul BOYER 2024-07-20 15:34:25 +02:00
parent 7c47a558ac
commit 252c4c37e7
No known key found for this signature in database
3 changed files with 73 additions and 26 deletions

58
includes/app/colors.h Normal file
View file

@ -0,0 +1,58 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* colors.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/20 15:06:54 by maiboyer #+# #+# */
/* Updated: 2024/07/20 15:17:57 by maiboyer ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef COLORS_H
# define COLORS_H
# define RESET "\x1b[0m"
# define BOLD "\x1b[1m"
# define WEAK "\x1b[2m"
# define ITALIC "\x1b[3m"
# define UNDERLINE "\x1b[4m"
# define COL_BLACK "\x1b[30m"
# define COL_RED "\x1b[31m"
# define COL_GREEN "\x1b[32m"
# define COL_YELLOW "\x1b[33m"
# define COL_BLUE "\x1b[34m"
# define COL_MAGENTA "\x1b[35m"
# define COL_CYAN "\x1b[36m"
# define COL_WHITE "\x1b[37m"
# define COLB_BLACK "\x1b[90m"
# define COLB_RED "\x1b[91m"
# define COLB_GREEN "\x1b[92m"
# define COLB_YELLOW "\x1b[93m"
# define COLB_BLUE "\x1b[94m"
# define COLB_MAGENTA "\x1b[95m"
# define COLB_CYAN "\x1b[96m"
# define COLB_WHITE "\x1b[97m"
# define COLBG_BLACK "\x1b[40m"
# define COLBG_RED "\x1b[41m"
# define COLBG_GREEN "\x1b[42m"
# define COLBG_YELLOW "\x1b[43m"
# define COLBG_BLUE "\x1b[44m"
# define COLBG_MAGENTA "\x1b[45m"
# define COLBG_CYAN "\x1b[46m"
# define COLBG_WHITE "\x1b[47m"
# define COLBBG_BLACK "\x1b[10m0"
# define COLBBG_RED "\x1b[10m1"
# define COLBBG_GREEN "\x1b[10m2"
# define COLBBG_YELLOW "\x1b[10m3"
# define COLBBG_BLUE "\x1b[10m4"
# define COLBBG_MAGENTA "\x1b[10m5"
# define COLBBG_CYAN "\x1b[10m6"
# define COLBBG_WHITE "\x1b[10m7"
#endif /* COLORS_H */

View file

@ -6,7 +6,7 @@
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */ /* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/11 18:21:45 by maiboyer #+# #+# */ /* Created: 2024/07/11 18:21:45 by maiboyer #+# #+# */
/* Updated: 2024/07/18 13:46:22 by maiboyer ### ########.fr */ /* Updated: 2024/07/20 15:33:01 by maiboyer ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -45,16 +45,17 @@ t_usize line_get_prompt_len(t_const_str s)
return (0); return (0);
while (s[i]) while (s[i])
{ {
if (s[i] == '\x1b' && s[i + 1] == '[') if (s[i] == '\x1b' && s[++i] == '[')
{ {
i += 2;
while (0x30 <= s[i] && s[i] <= 0x3F)
i++; i++;
while (0x20 <= s[i] && s[i] <= 0x2F) while ('0' <= s[i] && s[i] <= '?')
i++; i++;
if (0x40 <= s[i] && s[i] <= 0x7E) while (' ' <= s[i] && s[i] <= '/')
i++;
if ('@' <= s[i] && s[i] <= '~')
i++; i++;
} }
else
_modify_vars(&i, &ret, true); _modify_vars(&i, &ret, true);
} }
return (ret); return (ret);

View file

@ -6,13 +6,15 @@
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */ /* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/28 14:40:38 by rparodi #+# #+# */ /* Created: 2024/03/28 14:40:38 by rparodi #+# #+# */
/* Updated: 2024/07/20 14:23:13 by maiboyer ### ########.fr */ /* Updated: 2024/07/20 15:30:46 by maiboyer ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "app/colors.h"
#include "app/env.h" #include "app/env.h"
#include "app/node.h" #include "app/node.h"
#include "app/signal_handler.h" #include "app/signal_handler.h"
#include "ast/ast.h"
#include "line/line.h" #include "line/line.h"
#include "me/hashmap/hashmap_env.h" #include "me/hashmap/hashmap_env.h"
#include "me/str/str.h" #include "me/str/str.h"
@ -23,13 +25,6 @@
#include <errno.h> #include <errno.h>
#include <sys/types.h> #include <sys/types.h>
#undef free
#undef malloc
#undef realloc
#undef calloc
#include "ast/ast.h"
t_error ast_from_node(t_parse_node node, t_str input, t_ast_node *out); t_error ast_from_node(t_parse_node node, t_str input, t_ast_node *out);
void ast_print_node(t_ast_node self); void ast_print_node(t_ast_node self);
@ -124,7 +119,7 @@ void exec_shcat(t_state *shcat)
free_node(shcat->current_node); free_node(shcat->current_node);
} }
t_error handle_arguments(t_state *state) t_error get_user_input(t_state *state)
{ {
t_line_state lstate; t_line_state lstate;
@ -150,7 +145,7 @@ void ft_take_args(t_state *state)
while (true) while (true)
{ {
state->str_input = NULL; state->str_input = NULL;
if (handle_arguments(state)) if (get_user_input(state))
ft_exit(state, 1); ft_exit(state, 1);
if (state->str_input == NULL) if (state->str_input == NULL)
ft_exit(state, 0); ft_exit(state, 0);
@ -179,12 +174,10 @@ void free_myparser(t_parser self)
ts_parser_delete(self.parser); ts_parser_delete(self.parser);
} }
#define IGN_START "\1"
#define IGN_END "\2"
t_i32 main(t_i32 argc, t_str argv[], t_str envp[]) t_i32 main(t_i32 argc, t_str argv[], t_str envp[])
{ {
t_state state; t_state state;
//char truc[] = COLB_YELLOW "42sh" COL_GREEN ">" COL_WHITE "$ " RESET;
(void)argc; (void)argc;
(void)argv; (void)argv;
@ -196,11 +189,6 @@ t_i32 main(t_i32 argc, t_str argv[], t_str envp[])
state.env = create_env_map(); state.env = create_env_map();
if (populate_env(state.env, envp)) if (populate_env(state.env, envp))
me_abort("Unable to build env hashmap"); me_abort("Unable to build env hashmap");
state.prompt = "\x1B[93m" state.prompt = COLB_YELLOW "42sh" COL_GREEN ">" COL_WHITE "$ " RESET;
"42sh"
"\x1B[32m"
">"
"\x1B[0m"
"$ ";
ft_take_args(&state); ft_take_args(&state);
} }