Exemplo n.º 1
0
struct jx * nvpair_to_jx( struct nvpair *nv )
{
	struct jx *object = jx_object(0);

	char *key;
	char *value;
	struct jx *jvalue;

	long long integer_value;
	double  double_value;

	nvpair_first_item(nv);
	while(nvpair_next_item(nv,&key,&value)) {
		if(!strcmp(value,"true")) {
			jvalue = jx_boolean(1);
		} else if(!strcmp(value,"false")) {
			jvalue = jx_boolean(0);
		} else if(!strcmp(value,"null")) {
			jvalue = jx_null();
		} else if(string_is_integer(value,&integer_value)) {
			jvalue = jx_integer(integer_value);
		} else if(string_is_float(value,&double_value)) {
			jvalue = jx_double(double_value);
		} else if(value[0]=='[' || value[0]=='{') {
			jvalue = jx_parse_string(value);
			if(!jvalue) jvalue = jx_string(value);
		} else {
			jvalue = jx_string(value);
		}
		jx_insert(object,jx_string(key),jvalue);
	}

	return object;
}
Exemplo n.º 2
0
void nvpair_print_json(struct nvpair *n, FILE * s)
{
	char *key;
	void *value;

	int i = 0;
	int count = hash_table_size(n->table);

	fprintf(s, "{\n");
	hash_table_firstkey(n->table);
	while(hash_table_nextkey(n->table, &key, &value)) {

		fprintf(s,"\"%s\":",key);

		if(string_is_integer(value)) {
			fprintf(s,"%s",(char*)value);
		} else {
			fprintf(s,"\"%s\"",(char*)value);
		}		

		i++;
		if(i<count) fprintf(s,",\n");
	}
	fprintf(s, "\n}\n");
}
Exemplo n.º 3
0
t_linked_list	*resolve_line(t_linked_list *line, t_linked_list *declared_functions,
							t_linked_list **splitted_strings_line, t_linked_list *builtin_keywords)
{
	int 			i;
	t_linked_list	*resolved_line;
	char			*to_add;
	char			*tmp_string;
	t_linked_list	*new_line_strings;

	new_line_strings = new_list();
	resolved_line = new_list();
	i = 0;
	while (i < line->len && (*((char*)line->elts[i]) == TAB || *((char*)line->elts[i]) == SPACE))
	{
		if (!(to_add = (char*)malloc(sizeof(char))))
			malloc_error();
		*to_add = *((char*)line->elts[i]);
		add_to_list(resolved_line, to_add);
		add_to_list(new_line_strings, ft_strdup("\t"));
		i++;
	}
	while (i < line->len)
	{
		if (!(to_add = (char*)malloc(sizeof(char))))
			malloc_error();
		*to_add = *((char*)line->elts[i]);
		tmp_string = ((char*)(*splitted_strings_line)->elts[i]);
		if (*((char*)line->elts[i]) == NAME)
		{
			if (i > 0 && *((char*)line->elts[i]) == FUNCTION_DECL)
				*to_add = FUNCTION_NAME;
			else if (string_in_list((*splitted_strings_line)->elts[i], declared_functions))
				*to_add = FUNCTION_NAME;
			else if (string_in_list((*splitted_strings_line)->elts[i], builtin_keywords))
				*to_add = KEYWORD;
			else if (string_is_string((*splitted_strings_line)->elts[i]))
				*to_add = STRING_DEF;
			else if (string_is_character((*splitted_strings_line)->elts[i]))
				*to_add = CHARACTER_DEF;
			else if (string_is_integer((*splitted_strings_line)->elts[i]))
				*to_add = INTEGER_DEF;
			else if (string_is_float((*splitted_strings_line)->elts[i]))
				*to_add = FLOAT_DEF;
			else
				*to_add = VAR_NAME;
		}
		else if (*((char*)line->elts[i]) == EQUAL && i + 1 < line->len && *((char*)line->elts[i + 1]) == EQUAL)
		{
			*to_add = EQUALITY_CHECK;
			tmp_string = ft_strdup("==");
			i++;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 2 < line->len && *((char*)line->elts[i + 1]) == COLON
																		&& *((char*)line->elts[i + 2]) == EQUAL)
		{
			*to_add = DEEPCOPY_EQUAL;
			tmp_string = ft_strdup("::=");
			i += 2;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 1 < line->len && *((char*)line->elts[i + 1]) == EQUAL)
		{
			*to_add = COPY_EQUAL;
			tmp_string = ft_strdup(":=");
			i++;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 1 < line->len && *((char*)line->elts[i + 1]) == COLON)
		{
			*to_add = DEEPCOPY;
			tmp_string = ft_strdup("::");
			i++;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 1 < line->len)
		{
			*to_add = COPY;
			tmp_string = ft_strdup(":");
		}
		add_to_list(resolved_line, to_add);
		add_to_list(new_line_strings, tmp_string);
		i++;
	}
	*splitted_strings_line = new_line_strings;
	return (resolved_line);
}