int add_selectors(keys_add_info_t *cmds, size_t len, int mode) { int result = 0; size_t i; for(i = 0; i < len; i++) { key_conf_t *curr; curr = add_selector(cmds[i].keys, mode); if(curr == NULL) result = -1; else *curr = cmds[i].info; } return result; }
bool litehtml::css::parse_selectors( const tstring& txt, litehtml::style::ptr styles, media_query_list::ptr& media ) { tstring selector = txt; trim(selector); string_vector tokens; split_string(selector, tokens, _t(",")); bool added_something = false; for(string_vector::iterator tok = tokens.begin(); tok != tokens.end(); tok++) { css_selector::ptr selector = new css_selector(media); selector->m_style = styles; trim(*tok); if(selector->parse(*tok)) { selector->calc_specificity(); add_selector(selector); added_something = true; } } return added_something; }
void init_builtin_keys(int *key_mode) { key_conf_t *curr; assert(key_mode != NULL); mode = key_mode; curr = add_cmd(L":", NORMAL_MODE); curr->data.handler = keys_colon; curr = add_cmd(L"m", NORMAL_MODE); curr->type = BUILTIN_WAIT_POINT; curr->data.handler = keys_m; curr->followed = FOLLOWED_BY_MULTIKEY; curr = add_cmd(L"'", NORMAL_MODE); curr->type = BUILTIN_WAIT_POINT; curr->data.handler = keys_quote; curr->followed = FOLLOWED_BY_MULTIKEY; curr = add_selector(L"gg", NORMAL_MODE); curr->type = BUILTIN_WAIT_POINT; curr->data.handler = keys_gg; curr->followed = FOLLOWED_BY_NONE; curr = add_selector(L"'", NORMAL_MODE); curr->type = BUILTIN_WAIT_POINT; curr->data.handler = keys_quote; curr->followed = FOLLOWED_BY_MULTIKEY; curr = add_cmd(L"H", NORMAL_MODE); curr->data.handler = keys_H; curr = add_cmd(L"gu", NORMAL_MODE); curr->data.handler = keys_gu; curr->followed = FOLLOWED_BY_SELECTOR; curr->type = BUILTIN_WAIT_POINT; curr = add_cmd(L"guu", NORMAL_MODE); curr->data.handler = keys_gu; curr = add_cmd(L"gugu", NORMAL_MODE); curr->data.handler = keys_gu; curr = add_cmd(L"j", NORMAL_MODE); curr->data.handler = keys_j; curr = add_selector(L"j", NORMAL_MODE); curr->data.handler = keys_j; curr = add_cmd(L"j", VISUAL_MODE); curr->data.handler = keys_j; curr = add_selector(L"j", VISUAL_MODE); curr->data.handler = keys_j; curr = add_cmd(L"k", NORMAL_MODE); curr->data.handler = keys_k; curr = add_selector(L"k", NORMAL_MODE); curr->data.handler = keys_k; curr = add_cmd(L"k", VISUAL_MODE); curr->data.handler = keys_k; curr = add_selector(L"k", VISUAL_MODE); curr->data.handler = keys_k; curr = add_selector(L"s", NORMAL_MODE); curr->data.handler = keys_s; curr = add_selector(L"s", VISUAL_MODE); curr->data.handler = keys_s; curr = add_cmd(L"i", NORMAL_MODE); curr->data.handler = keys_i; curr = add_selector(L"if", NORMAL_MODE); curr->data.handler = keys_if; curr = add_selector(L"if", VISUAL_MODE); curr->data.handler = keys_if; curr = add_cmd(L"o", NORMAL_MODE); curr->type = BUILTIN_CMD; curr->data.cmd = wcsdup(L":only"); curr = add_cmd(L"v", NORMAL_MODE); curr->type = BUILTIN_CMD; curr->data.cmd = wcsdup(L":vsplit"); curr = add_cmd(L"<", NORMAL_MODE); curr->type = BUILTIN_NIM_KEYS; curr->data.handler = keys_ctrl_w_less_than; curr = add_cmd(L"d", NORMAL_MODE); curr->type = BUILTIN_WAIT_POINT; curr->data.handler = keys_delete_selector; curr->followed = FOLLOWED_BY_SELECTOR; curr = add_cmd(L"dd", NORMAL_MODE); curr->data.handler = keys_delete; curr->type = BUILTIN_NIM_KEYS; curr = add_cmd(L"v", NORMAL_MODE); curr->data.handler = keys_v; curr = add_cmd(L"v", VISUAL_MODE); curr->data.handler = keys_v; curr = add_cmd(L"ZQ", NORMAL_MODE); curr->data.handler = keys_quit; curr = add_cmd(L"ZZ", NORMAL_MODE); curr->data.handler = keys_quit; curr = add_cmd(L"ZZ", VISUAL_MODE); curr->data.handler = keys_quit; curr = add_cmd(L"norm", NORMAL_MODE); curr->data.handler = keys_norm; }