Skip to content
This repository has been archived by the owner on Jul 17, 2019. It is now read-only.

Commit

Permalink
Sync with Modest
Browse files Browse the repository at this point in the history
  • Loading branch information
lexborisov committed Dec 20, 2016
1 parent 05ae725 commit d939862
Show file tree
Hide file tree
Showing 21 changed files with 77 additions and 58 deletions.
3 changes: 3 additions & 0 deletions include/mycss/entry.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ mycss_entry_t * mycss_entry_destroy(mycss_entry_t* entry, bool self_destroy);

void mycss_entry_end(mycss_entry_t* entry);

/* api */
mycss_selectors_t * mycss_entry_selectors(mycss_entry_t* entry);

mycss_token_ready_callback_f mycss_entry_token_ready_callback(mycss_entry_t* entry, mycss_token_ready_callback_f callback_f);

size_t mycss_entry_token_count(mycss_entry_t* entry);
Expand Down
2 changes: 1 addition & 1 deletion include/mycss/selectors/myosi.h
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ struct mycss_selectors {

struct mycss_selectors_entry {
mycss_selectors_type_t type;
int sub_type;
unsigned int sub_type;
mycss_selectors_flags_t flags;

mycss_namespace_entry_t* ns_entry;
Expand Down
9 changes: 5 additions & 4 deletions source/mycss/convert.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ size_t mycss_convert_data_to_double(const char *data, size_t size, double *retur
*return_num = 0.0f;

switch (data[offset]) {
case '-': is_negative = true;
case '-': is_negative = true; /* fall through */
case '+': offset++;
}

Expand Down Expand Up @@ -108,16 +108,17 @@ size_t mycss_convert_data_to_double(const char *data, size_t size, double *retur
{
++offset;

if(offset >= size || ((data[offset] != '-' || data[offset] != '+') &&
(data[offset] < '0' || data[offset] > '9'))) {
if(offset >= size || (data[offset] != '-' && data[offset] != '+' &&
(data[offset] < '0' || data[offset] > '9')))
{
offset--;
}
else {
// Handle optional sign
is_negative = false;

switch(data[offset]) {
case '-': is_negative = true;
case '-': is_negative = true; /* fall through */
case '+': offset++;
}

Expand Down
1 change: 1 addition & 0 deletions source/mycss/declaration/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ mycss_declaration_entry_t * mycss_declaration_parse(mycss_declaration_t* declara
if(out_status)
*out_status = status;

entry->token_ready_callback = tmp_token_ready_callback;
return NULL;
}

Expand Down
21 changes: 12 additions & 9 deletions source/mycss/declaration/serialization.c
Original file line number Diff line number Diff line change
Expand Up @@ -335,9 +335,7 @@ bool mycss_declaration_serialization_font(mycss_entry_t* entry, mycss_declaratio
}

if(font->family) {
if(set_ws == false)
set_ws = true;
else
if(set_ws == true)
callback(" ", 1, context);

mycss_declaration_serialization_font_family(entry, font->family, callback, context);
Expand Down Expand Up @@ -381,7 +379,7 @@ bool mycss_declaration_serialization_border_radius(mycss_entry_t* entry, mycss_d
}

if(value->four && ((mycss_values_shorthand_two_type_t*)(value->four->value))->one) {
if(o_e) callback(" ", 1, context); else o_e = true;
if(o_e) callback(" ", 1, context);

short_two_type = value->four->value;
mycss_property_serialization_value(short_two_type->type_one, short_two_type->one, callback, context);
Expand All @@ -399,23 +397,27 @@ bool mycss_declaration_serialization_border_radius(mycss_entry_t* entry, mycss_d

if(value->two && ((mycss_values_shorthand_two_type_t*)(value->two->value))->two) {
if(o_e == false) callback(" / ", 3, context);
if(o_e) callback(" ", 1, context); else o_e = true;
else callback(" ", 1, context);

o_e = true;

short_two_type = value->two->value;
mycss_property_serialization_value(short_two_type->type_two, short_two_type->two, callback, context);
}

if(value->three && ((mycss_values_shorthand_two_type_t*)(value->three->value))->two) {
if(o_e == false) callback(" / ", 3, context);
if(o_e) callback(" ", 1, context); else o_e = true;
else callback(" ", 1, context);

o_e = true;

short_two_type = value->three->value;
mycss_property_serialization_value(short_two_type->type_two, short_two_type->two, callback, context);
}

if(value->four && ((mycss_values_shorthand_two_type_t*)(value->four->value))->two) {
if(o_e == false) callback(" / ", 3, context);
if(o_e) callback(" ", 1, context); else o_e = true;
else callback(" ", 1, context);

short_two_type = value->four->value;
mycss_property_serialization_value(short_two_type->type_two, short_two_type->two, callback, context);
Expand Down Expand Up @@ -508,7 +510,7 @@ bool mycss_declaration_serialization_background(mycss_entry_t* entry, mycss_decl
}

if(bg->origin) {
if(o_e) callback(" ", 1, context); else o_e = true;
if(o_e) callback(" ", 1, context);
mycss_declaration_serialization_type_list(entry, bg->origin, callback, context);
}
}
Expand Down Expand Up @@ -599,7 +601,8 @@ bool mycss_declaration_serialization_background_position(mycss_entry_t* entry, m
}

if(position->four.type) {
if(o_e) callback(" ", 1, context); else o_e = true;
if(o_e) callback(" ", 1, context);

mycss_property_serialization_value(position->four.type, position->four.length, callback, context);
}

Expand Down
2 changes: 1 addition & 1 deletion source/mycss/declaration/state.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ bool mycss_declaration_state_ident(mycss_entry_t* entry, mycss_token_t* token, b
bool mycss_declaration_state_colon_before_important(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
{
if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
return token;
return true;
else if(token->type == MyCSS_TOKEN_TYPE_SEMICOLON) {
entry->parser = mycss_declaration_state_data;
return true;
Expand Down
7 changes: 7 additions & 0 deletions source/mycss/entry.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ mycss_status_t mycss_entry_init(mycss_t* mycss, mycss_entry_t* entry)

mycss_status_t mycss_entry_clean(mycss_entry_t* entry)
{
mcobject_clean(entry->mcobject_incoming_buffer);
mycss_entry_parser_list_clean(entry->parser_list);

/* CSS Modules */
Expand Down Expand Up @@ -205,6 +206,12 @@ void mycss_entry_end(mycss_entry_t* entry)
/* need some code */
}

/* api */
mycss_selectors_t * mycss_entry_selectors(mycss_entry_t* entry)
{
return entry->selectors;
}

myhtml_string_t * mycss_entry_string_create_and_init(mycss_entry_t* entry, size_t string_size)
{
myhtml_string_t *str = mcobject_malloc(entry->mcobject_string_entries, NULL);
Expand Down
3 changes: 3 additions & 0 deletions source/mycss/entry.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ mycss_entry_t * mycss_entry_destroy(mycss_entry_t* entry, bool self_destroy);

void mycss_entry_end(mycss_entry_t* entry);

/* api */
mycss_selectors_t * mycss_entry_selectors(mycss_entry_t* entry);

mycss_token_ready_callback_f mycss_entry_token_ready_callback(mycss_entry_t* entry, mycss_token_ready_callback_f callback_f);

size_t mycss_entry_token_count(mycss_entry_t* entry);
Expand Down
3 changes: 0 additions & 3 deletions source/mycss/mycss.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,6 @@ myhtml_encoding_t mycss_encoding_check_charset_rule(const char* css, size_t size
size_t begin = 10;
size_t length = begin;

if(begin >= size)
return MyHTML_ENCODING_UTF_8;

while(length < size) {
if(css[length] == '"')
{
Expand Down
11 changes: 7 additions & 4 deletions source/mycss/namespace/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,15 @@ void mycss_namespace_entry_append_to_current(mycss_namespace_t* ns, mycss_namesp

mycss_status_t mycss_namespace_stylesheet_init(mycss_namespace_stylesheet_t* ns_stylesheet, mycss_entry_t* entry)
{
ns_stylesheet->name_tree = mctree_create(14);
ns_stylesheet->name_tree = mctree_create(14);
if(ns_stylesheet->name_tree == NULL)
return MyCSS_STATUS_ERROR_NAMESPACE_CREATE;

ns_stylesheet->ns_id_counter = 0;

ns_stylesheet->entry_default = mycss_namespace_entry_create(entry->ns);
if(ns_stylesheet->entry_default == NULL)
return MyCSS_STATUS_ERROR_NAMESPACE_ENTRIES_CREATE;

mycss_namespace_entry_clean(ns_stylesheet->entry_default);
mycss_namespace_entry_clean(&ns_stylesheet->entry_undef);
Expand All @@ -132,9 +138,6 @@ mycss_status_t mycss_namespace_stylesheet_init(mycss_namespace_stylesheet_t* ns_
myhtml_string_append(ns_stylesheet->entry_any.name, "*", 1);
ns_stylesheet->entry_any.ns_id = MyHTML_NAMESPACE_ANY;

if(ns_stylesheet->entry_default == NULL)
return MyCSS_STATUS_ERROR_NAMESPACE_ENTRIES_CREATE;

mycss_namespace_stylesheet_init_default(ns_stylesheet, entry, NULL, 0, MyHTML_NAMESPACE_ANY);

return MyCSS_STATUS_OK;
Expand Down
8 changes: 4 additions & 4 deletions source/mycss/namespace/parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ void mycss_namespace_parser_end(mycss_entry_t* entry, mycss_token_t* token)

void mycss_namespace_parser_expectations_error(mycss_entry_t* entry, mycss_token_t* token)
{
if(entry->ns->entry_last == NULL)
return;

mycss_namespace_entry_t *ns_entry = entry->ns->entry_last;
mycss_namespace_entry_destroy(ns_entry, entry, false);

Expand All @@ -83,10 +86,7 @@ void mycss_namespace_parser_expectations_error(mycss_entry_t* entry, mycss_token
entry->ns->entry_last = NULL;
}

if(ns_entry)
mcobject_free(entry->ns->mcobject_entries, ns_entry);

printf("Expectations error: Namespace!\n");
mcobject_free(entry->ns->mcobject_entries, ns_entry);
}


14 changes: 5 additions & 9 deletions source/mycss/property/parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -1106,12 +1106,8 @@ bool mycss_property_parser_border_color(mycss_entry_t* entry, mycss_token_t* tok
unsigned int value_type = 0;
if(mycss_property_shared_default(entry, token, &value_type, &str))
{
if(value == NULL) {
dec_entry->value_type = value_type;
return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
}

return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
dec_entry->value_type = value_type;
return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
}

mycss_declaration_entry_t* shared_declr;
Expand Down Expand Up @@ -2046,7 +2042,7 @@ bool mycss_property_parser_font_step_one(mycss_entry_t* entry, mycss_token_t* to
mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;

if(dec_entry->value == NULL)
mycss_property_shared_switch_to_parse_error(entry);
return mycss_property_shared_switch_to_parse_error(entry);

void *value = NULL;
unsigned int value_type = 0;
Expand All @@ -2055,7 +2051,7 @@ bool mycss_property_parser_font_step_one(mycss_entry_t* entry, mycss_token_t* to

if(mycss_property_shared_font_style(entry, token, &value_type, &str))
{
if( font->style)
if(font->style)
return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));

font->style = mycss_declaration_entry_create(entry->declaration, NULL);
Expand Down Expand Up @@ -2130,7 +2126,7 @@ bool mycss_property_parser_font(mycss_entry_t* entry, mycss_token_t* token, bool
dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_font_t));

if(dec_entry->value == NULL)
mycss_property_shared_switch_to_parse_error(entry);
return mycss_property_shared_switch_to_parse_error(entry);

void *value = NULL;
unsigned int value_type = 0;
Expand Down
1 change: 1 addition & 0 deletions source/mycss/property/shared.c
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@ bool mycss_property_shared_text_decoration_line(mycss_entry_t* entry, mycss_toke
*value_type = text_dec_type;
return true;
}
/* fall through */

default:
*value_type = MyCSS_PROPERTY_VALUE_UNDEF;
Expand Down
15 changes: 7 additions & 8 deletions source/mycss/selectors/function_parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,10 @@ bool mycss_selectors_function_parser_not_or_matches_or_current_parser(mycss_entr
selectors_list = mycss_selectors_parser_check_selector_list(selectors, selectors_list);

if(selectors_list == NULL) {
if(selectors->entry_last)
if(selectors->entry_last) {
selectors->entry_last->value = NULL;

selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
}
}
else if((selectors_list->flags & MyCSS_SELECTORS_FLAGS_SELECTOR_BAD) && selectors->entry_last) {
selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
Expand Down Expand Up @@ -198,10 +198,10 @@ bool mycss_selectors_function_parser_has(mycss_entry_t* entry, mycss_token_t* to
selectors_list = mycss_selectors_parser_check_selector_list(selectors, selectors_list);

if(selectors_list == NULL) {
if(selectors->entry_last)
if(selectors->entry_last) {
selectors->entry_last->value = NULL;

selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
}
}
else if((selectors_list->flags & MyCSS_SELECTORS_FLAGS_SELECTOR_BAD) && selectors->entry_last) {
selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
Expand Down Expand Up @@ -324,9 +324,8 @@ bool mycss_selectors_function_parser_nth_with_selectors_need_of_after(mycss_entr
if(selectors_list == NULL) {
if(selectors->entry_last) {
mycss_selector_value_an_plus_b(selectors->entry_last->value)->of = NULL;
selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
}

selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
}
else if((selectors_list->flags & MyCSS_SELECTORS_FLAGS_SELECTOR_BAD) && selectors->entry_last) {
selectors->entry_last->flags |= MyCSS_SELECTORS_FLAGS_SELECTOR_BAD;
Expand Down
12 changes: 4 additions & 8 deletions source/mycss/selectors/list.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,10 @@ mycss_selectors_list_t * mycss_selectors_list_destroy(mycss_selectors_t* selecto
mycss_selectors_entry_t *sel_entry = selectors_list->entries_list[i].entry;

while(sel_entry) {
if(sel_entry->next) {
sel_entry = sel_entry->next;
mycss_selectors_entry_destroy(entry->selectors, sel_entry->prev, true);
}
else {
mycss_selectors_entry_destroy(entry->selectors, sel_entry, true);
break;
}
mycss_selectors_entry_t *sel_entry_next = sel_entry->next;
mycss_selectors_entry_destroy(entry->selectors, sel_entry, true);

sel_entry = sel_entry_next;
}
}

Expand Down
2 changes: 1 addition & 1 deletion source/mycss/selectors/myosi.h
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ struct mycss_selectors {

struct mycss_selectors_entry {
mycss_selectors_type_t type;
int sub_type;
unsigned int sub_type;
mycss_selectors_flags_t flags;

mycss_namespace_entry_t* ns_entry;
Expand Down
7 changes: 4 additions & 3 deletions source/mycss/selectors/serialization.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,10 @@ bool mycss_selectors_serialization_selector(mycss_selectors_t* selectors, mycss_
break;
}

case MyCSS_SELECTORS_SUB_TYPE_PSEUDO_CLASS_FUNCTION_UNKNOWN:
callback("^UST", 4, context);
break;

default:
break;
}
Expand Down Expand Up @@ -263,9 +267,6 @@ bool mycss_selectors_serialization_selector(mycss_selectors_t* selectors, mycss_
}
};

if(selector->sub_type == MyCSS_SELECTORS_SUB_TYPE_UNKNOWN)
callback("^UST", 4, context);

if(selector->flags & MyCSS_SELECTORS_FLAGS_SELECTOR_BAD)
callback("^B", 2, context);

Expand Down
3 changes: 3 additions & 0 deletions source/mycss/tokenizer.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@ size_t mycss_tokenizer_state_set_current_buffer_for_continue(mycss_entry_t* entr
while(buffer && buffer->offset > position)
buffer = buffer->prev;

if(buffer == NULL)
return 0;

entry->current_buffer = buffer;

return (position - buffer->offset);
Expand Down
4 changes: 2 additions & 2 deletions source/mycss/values/color.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ mycss_values_color_id_t mycss_values_color_id_by_name(const char *name, size_t l

const char * mycss_values_color_name_by_id(mycss_values_color_id_t color_id, size_t *length)
{
if(color_id > MyCSS_VALUES_COLOR_ID_LAST_ENTRY) {
if(color_id >= MyCSS_VALUES_COLOR_ID_LAST_ENTRY) {
if(length)
*length = 0;

Expand Down Expand Up @@ -119,7 +119,7 @@ mycss_values_color_function_id_t mycss_values_color_function_id_by_name(const ch

const char * mycss_values_color_function_name_by_id(mycss_values_color_function_id_t color_function_id, size_t *length)
{
if(color_function_id > MyCSS_VALUES_COLOR_FUNCTION_ID_LAST_ENTRY) {
if(color_function_id >= MyCSS_VALUES_COLOR_FUNCTION_ID_LAST_ENTRY) {
if(length)
*length = 0;

Expand Down
Loading

0 comments on commit d939862

Please sign in to comment.