Ejemplo n.º 1
0
 //------------------------------------------------------------------
 void table_structurizer::process_table_header(const element& e)
 {
     m_result.add(backslash);
     m_result.add(keyword_table.name, keyword_table.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(lf);
     if(m_header.length())
     {
         m_result.add(backslash);
         m_result.add(keyword_trh.name, keyword_trh.len);
         m_result.add(open_brace);
         parse_double_vbar(m_header.text(), m_header.length(), &keyword_th);
         m_result.add(close_brace);
     }
 }
Ejemplo n.º 2
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);
        }
    }
Ejemplo n.º 3
0
    //------------------------------------------------------------------
    void index_storage::start_element(const element& e)
    {
        string_type ts;
        index_element ie;

        if(str_cmp(e.name(), e.name_len(), keyword_dir) == 0)
        {
            parse_and_find_attr_content(e.attr(), e.attr_len(), ts);
            clean_and_trim_string(ts);
            if(ts.empty())
            {
                e.throw_exception(e.name(), "index_storage: \\dir: No directory name");
            }
            trim_ending_slashes(ts);
            m_path.push_back(ts);
        }
        else
        if(str_cmp(e.name(), e.name_len(), keyword_file) == 0)
        {
            parse_and_find_attr_content(e.attr(), e.attr_len(), ts);
            clean_and_trim_string(ts);
            if(ts.empty())
            {
                e.throw_exception(e.name(), "index_storage: \\file: No file name");
            }
            m_file_name = ts;
           
            if(parse_and_find_attr_variable(e.attr(), e.attr_len(), keyword_ext, ts))
            {
                clean_and_trim_string(ts);
                m_file_ext = ts;
            }
            ie.category.assign(keyword_file.name, keyword_file.len);
            ie.anchor.assign(m_file_name);
            ie.comment.erase();
            ie.comment.assign(m_file_name);
            make_full_path(ie.full_path);
            m_data.push_back(ie);
        }
        else
        if(str_cmp(e.name(), e.name_len(), keyword_title) == 0)
        {
            if(m_file_name.empty())
            {
                e.throw_exception(e.name(), "index_storage: \\title: Illegal outside of \\file");
            }
            extract_element_content(e, ts);
            ie.category.assign(keyword_title.name, keyword_title.len);
            ie.anchor.assign(m_file_name);
            ie.comment.assign(ts);
            make_full_path(ie.full_path);
            m_data.push_back(ie);
        }
        else
        if(str_cmp(e.name(), e.name_len(), keyword_label) == 0)
        {
            if(m_file_name.empty())
            {
                e.throw_exception(e.name(), "index_storage: \\title: Illegal outside of \\file");
            }

            if(parse_and_find_attr_variable(e.attr(), e.attr_len(), keyword_category, ts))
            {
                clean_and_trim_string(ts);
                if(ts.empty())
                {
                    e.throw_exception(e.name(), "index_storage: \\label: No 'category' attribute");
                }
                ie.category.assign(ts);
            }

            if(parse_and_find_attr_variable(e.attr(), e.attr_len(), keyword_anchor, ts))
            {
                clean_and_trim_string(ts);
                if(ts.empty())
                {
                    e.throw_exception(e.name(), "index_storage: \\label: No 'anchor' attribute");
                }
                ie.anchor.assign(ts);
            }
            extract_element_content(e, ts);
            ie.comment.assign(ts);
            make_full_path(ie.full_path);
            m_data.push_back(ie);
        }
    }