Пример #1
0
static const char *
color_of(char *s, int arg)
{
    const char *result = "";
    char *t;
    int quoted = 0;
    int save;

    s = skip_blanks(s);
    t = skip_ident(s);
    if ((save = *t) != 0)
	*t = 0;

    if (is_class(s)) {
	if (FltOptions('c')) {
	    result = keyword_attr(s);
	    if (result == 0)
		result = class_attr(s);
	    if (result == 0)
		result = Ident2_attr;
	} else {
	    result = Ident2_attr;
	}
    } else if (arg && (*s != 0)) {
	char *base = s;

	if (!FltOptions('c'))
	    result = Action_attr;
	while (*s != 0) {
	    if (quoted) {
		if (*s == QUOTE)
		    quoted = 0;
	    } else if (*s == QUOTE) {
		quoted = 1;
		result = Literal_attr;
	    } else if ((s == base) && color_code(s, &result)) {
		break;
	    }
	    s++;
	}
    }
    if (save)
	*t = (char) save;
    return result;
}
Пример #2
0
 //------------------------------------------------------------------
 void code_colorer::start_element(const element& e)
 {
     if(e.name_len())
     {
         if(m_coloring_element == 0)
         {
             if(m_cfg.keyword_exists(keyword_code, e.name(), e.name_len()) ||
                str_cmp(e.name(), e.name_len(), keyword_code) == 0 ||
                str_cmp(e.name(), e.name_len(), keyword_m) == 0)
             {
                 m_coloring_element = &e;
                 color_code(e);
             }
             else
             {
                 m_result.add_element_header(e);
             }
         }
     }
 }
Пример #3
0
static int
is_color(const char *s)
{
    const char *t = 0;
    return color_code(s, &t);
}
Пример #4
0
/*-------------------------------------------------------------------*/
void loop() {
   random_walk();
   broadcast();
   color_code();
}
Пример #5
0
    //------------------------------------------------------------------
    void code_colorer::color_code(const element& e)
    {
        m_language.assign(e.name(), e.name_len());

        m_block_comments   = m_cfg.strlist(string_type(e.name(), e.name_len()), 
                                           keyword_block_comments_suffix);

        m_line_comments    = m_cfg.strlist(string_type(e.name(), e.name_len()), 
                                           keyword_line_comments_suffix);

        m_string_quotation = m_cfg.strlist(string_type(e.name(), e.name_len()), 
                                           keyword_strings_suffix);

        m_string_mask      = m_cfg.strlist(string_type(e.name(), e.name_len()), 
                                           keyword_string_mask_suffix);

        m_operators        = m_cfg.strlist(string_type(e.name(), e.name_len()), 
                                           keyword_operators_suffix);

        replace_strlist_keysym(m_block_comments);
        replace_strlist_keysym(m_line_comments);
        replace_strlist_keysym(m_string_quotation);
        replace_strlist_keysym(m_string_mask);
        replace_strlist_keysym(m_operators);
        
        m_identifier_charset.clear();
        add_to_identifier_charset(keyword_kw1_suffix);
        add_to_identifier_charset(keyword_kw2_suffix);
        add_to_identifier_charset(keyword_kw3_suffix);
        add_to_identifier_charset(keyword_kw4_suffix);

        m_operator_charset.clear();

        unsigned i;
        for(i = 0; i < m_operators.size(); ++i)
        {
            const string_type& str = m_operators[i];
            for(unsigned j = 0; j < str.length(); j++)
            {
                char_type c = str[j];
                if(!is_alnum(c))
                {
                    m_operator_charset.insert(replace_keysym(c));
                }
            }
        }

        content_storage code;
        element_serializer ser(code, e, false, false);
        code.replace_text_keysym();
        m_result.add(backslash);
        if(str_cmp(m_language, keyword_m) == 0)
        {
            m_result.add(keyword_m.name, keyword_m.len);
            m_result.add(open_brace);
            m_result.add(code.text());
            m_result.add(close_brace);
        }
        else
        if(str_cmp(m_language, keyword_code) == 0)
        {
            m_result.add(keyword_code.name, keyword_code.len);
            if(e.attr_len())
            {
                m_result.add(open_bracket);
                m_result.add(e.attr(), e.attr_len());
                m_result.add(close_bracket);
            }
            m_result.add(open_brace);
            m_result.add(code.text());
            m_result.add(close_brace);
        }
        else
        {
            m_result.add(keyword_code.name, keyword_code.len);
            if(e.attr_len())
            {
                m_result.add(open_bracket);
                m_result.add(e.attr(), e.attr_len());
                m_result.add(close_bracket);
            }
            m_result.add(open_brace);
            color_code(code.text());
            m_result.add(close_brace);
        }
    }