Merge pull request 'Added functions' (#54) from YanTheKaller/libublsettings:master into master

Reviewed-on: #54
master v1.49
Dmitry Razumov 4 months ago
commit 6abb3b1b05

@ -35,6 +35,33 @@ char *yon_char_append_c(const char *source, char append)
return NULL; return NULL;
} }
char *yon_char_append_element(char *source,char *target, char *divider){
if (!yon_char_is_empty(target)&&!yon_char_is_empty(divider)){
if (yon_char_is_empty(source)) return yon_char_new(target);
int size;
config_str parsed = yon_char_parse(source,&size,divider);
if (yon_char_parsed_check_exist(parsed,size,target)==-1){
yon_char_parsed_add_or_create_if_exists(parsed,&size,target);
return yon_char_parsed_to_string(parsed,size,divider);
}
}
return yon_char_new(source);
}
char *yon_char_remove_element(char *source,char *target, char *divider){
if (!yon_char_is_empty(source)&&!yon_char_is_empty(target)&&!yon_char_is_empty(divider)){
if (yon_char_is_empty(source)) return NULL;
int size;
config_str parsed = yon_char_parse(source,&size,divider);
int pos = yon_char_parsed_check_exist(parsed,size,target);
if (pos!=-1){
parsed = yon_char_parsed_rip(parsed,&size,pos);
return yon_char_parsed_to_string(parsed,size,divider);
}
}
return yon_char_new(source);
}
char *yon_char_new(const char *chr) char *yon_char_new(const char *chr)
{ {
if (chr){ if (chr){
@ -574,8 +601,10 @@ char *yon_char_parsed_to_string_full(config_str parsed, int size, char *divider_
if (parsed && size>0){ if (parsed && size>0){
char *final_string = ""; char *final_string = "";
char *temp; char *temp;
for (int i=0;i<size;i++){ temp = yon_char_unite(final_string,parsed[0],NULL);
temp = yon_char_unite(final_string,yon_char_is_empty(final_string)?"":divider_replace,parsed[i],NULL); final_string=temp;
for (int i=1;i<size;i++){
temp = yon_char_unite(final_string,divider_replace,parsed[i],NULL);
if (!yon_char_is_empty(final_string)) free(final_string); if (!yon_char_is_empty(final_string)) free(final_string);
final_string=temp; final_string=temp;
} }
@ -666,11 +695,13 @@ char *yon_char_wrap_to_length_str(char *target, unsigned int length){
config_str final = NULL; config_str final = NULL;
char *current = yon_char_new(target); char *current = yon_char_new(target);
for (;strlen(current)>length;){ for (;strlen(current)>length;){
int last = yon_char_find_last_symbol_before_length(target,' ',length); int last = yon_char_find_last_symbol_before_length(current,' ',length);
if (last>-1){ if (last>-1){
char *parsed = yon_char_divide(current,last); char *parsed = yon_char_divide(current,last);
yon_char_parsed_add_or_create_if_exists(final,&size,parsed); yon_char_parsed_add_or_create_if_exists(final,&size,parsed);
free(parsed); free(parsed);
}else {
break;
} }
} }

@ -476,35 +476,31 @@ int yon_config_remove_by_key(char *key){
return 0; return 0;
} }
int yon_config_clear_by_key(const char *key){
check_config{
dictionary *dict = yon_dictionary_get((dictionary**)&__yon__config__strings,(char*)key);
if (dict){
yon_config_remove_ignore((char*)key);
__yon__config__strings = (yon_config_parameter*)yon_dictionary_rip(dict);
return 1;
}
}
return 0;
}
char *yon_config_get_by_subkey(const char *key, const char *subkey){
}
int yon_config_remove_element(char *key, char *delete_target, char *divider){ int yon_config_remove_element(char *key, char *delete_target, char *divider){
check_config{ check_config{
int found = 0; int found = 0;
yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key); yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key);
if (dict){ if (dict){
int size; char *temp = yon_char_remove_element((char*)dict->data,delete_target,divider);
config_str parsed = yon_char_parse((char*)dict->data,&size,divider); if (!yon_char_is_empty((char*)dict->data)) free(dict->data);
config_str final = NULL; dict->data = temp;
for(int i=0;i<size;i++){
if (!strcmp(parsed[i],delete_target)){
free(parsed[i]);
parsed[i]="";
found = 1;
}
}
char *final_string = NULL;
if (size>0) final_string = yon_char_parsed_to_string(parsed,size,divider);
else {
final_string = malloc(sizeof(char)*1);
final_string[0]='\0';
}
if (final_string){
free(dict->data);
dict->data=final_string;
return 1; return 1;
} else {
yon_config_remove_by_key(key);
return 1;
}
} }
} else return 0; } else return 0;
@ -515,7 +511,9 @@ int yon_config_append_element(char *key, char *append, char *divider){
int found = 0; int found = 0;
yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key); yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key);
if (dict){ if (dict){
yon_char_unite((char*)dict->data,divider,append,NULL); char *temp = yon_char_append_element((char*)dict->data,append,divider);
if (!yon_char_is_empty((char*)dict->data)) free(dict->data);
dict->data = temp;
return 1; return 1;
} }

@ -311,12 +311,24 @@ int yon_char_find_last(char *source, char find);
/**[EN] /**[EN]
* *
* creates new char string by combining two char strings. * Creates new char string by combining two char strings.
* [RU]
* Создаёт новую строку, состоящую из двух входящих.
*/ */
char *yon_char_append(const char *source, const char *append); char *yon_char_append(const char *source, const char *append);
/**[EN]
*
* Creates new char string by combining two char strings.
* [RU]
* Создаёт новую строку, состоящую из строки [source]
* с добавлением символа [append] в конец.
*/
char *yon_char_append_c(const char *source, char append); char *yon_char_append_c(const char *source, char append);
char *yon_char_append_element(char *source,char *target, char *divider);
char *yon_char_remove_element(char *source,char *target, char *divider);
/**[EN] /**[EN]
* *
* creates new char string by copying another char. * creates new char string by copying another char.
@ -894,6 +906,15 @@ int yon_config_compare_ignore_get(char *key);
*/ */
int yon_config_remove_by_key(char *key); int yon_config_remove_by_key(char *key);
/**yon_config_remove_by_key(char *key)
* [EN]
*
* [RU]
* Очищает параметр конфига по ключу [key].
* Параметр удаляется как при полной очистке всего конфига.
*/
int yon_config_clear_by_key(const char *key);
/**yon_config_remove_element(char *key, char *deleted) /**yon_config_remove_element(char *key, char *deleted)
* [EN] * [EN]
* *
@ -901,6 +922,7 @@ int yon_config_remove_by_key(char *key);
* Удаляет элемент [deleted] из массива параметров с ключом [key] * Удаляет элемент [deleted] из массива параметров с ключом [key]
*/ */
int yon_config_remove_element(char *key, char *delete_target, char *divider); int yon_config_remove_element(char *key, char *delete_target, char *divider);
int yon_config_append_element(char *key, char *append, char *divider);
int yon_config_set_status(char *key, int status); int yon_config_set_status(char *key, int status);

Loading…
Cancel
Save