Changeset 54813


Ignore:
Timestamp:
Jul 8, 2009, 9:40:24 PM (9 years ago)
Author:
Daniel James
Message:

Move all the syntax highlighting code into a single class.

Location:
trunk/tools/quickbook/detail
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/quickbook/detail/actions.cpp

    r53022 r54813  
    309309        escape_actions.phrase.pop(); // restore the stream
    310310    }
     311   
     312    std::string syntax_highlight::operator()(iterator first, iterator last) const
     313    {
     314        // print the code with syntax coloring
     315        if (source_mode == "c++")
     316        {
     317            parse(first, last, cpp_p);
     318        }
     319        else if (source_mode == "python")
     320        {
     321            parse(first, last, python_p);
     322        }
     323
     324        std::string str;
     325        temp.swap(str);
     326       
     327        return str;
     328    }
    311329
    312330    void code_action::operator()(iterator first, iterator last) const
    313331    {
    314         std::string save;
    315         phrase.swap(save);
    316 
    317332        // preprocess the code section to remove the initial indentation
    318333        std::string program(first, last);
     
    325340        first_.set_position(first.get_position());
    326341
     342        std::string save;
     343        phrase.swap(save);
     344
    327345        // print the code with syntax coloring
    328         if (source_mode == "c++")
    329         {
    330             parse(first_, last_, cpp_p);
    331         }
    332         else if (source_mode == "python")
    333         {
    334             parse(first_, last_, python_p);
    335         }
    336 
    337         std::string str;
    338         temp.swap(str);
     346        std::string str = syntax_p(first_, last_);
     347
    339348        phrase.swap(save);
    340349
     
    354363
    355364        // print the code with syntax coloring
    356         if (source_mode == "c++")
    357         {
    358             parse(first, last, cpp_p);
    359         }
    360         else if (source_mode == "python")
    361         {
    362             parse(first, last, python_p);
    363         }
    364         std::string str;
    365         temp.swap(str);
     365        std::string str = syntax_p(first, last);
     366
    366367        out.swap(save);
    367368
  • trunk/tools/quickbook/detail/actions.hpp

    r50175 r54813  
    369369      , collector>
    370370    python_p_type;
    371 
    372     struct code_action
    373     {
    374         // Does the actual syntax highlighing of code
    375 
    376         code_action(
    377             collector& out
    378           , collector& phrase
    379           , collector& temp
     371   
     372    struct syntax_highlight
     373    {
     374        syntax_highlight(
     375            collector& temp
    380376          , std::string const& source_mode
    381377          , string_symbols const& macro
    382378          , actions& escape_actions)
    383         : out(out)
    384         , phrase(phrase)
    385         , temp(temp)
     379        : temp(temp)
    386380        , source_mode(source_mode)
    387381        , cpp_p(temp, macro, do_macro_action(temp), escape_actions)
     
    390384        }
    391385
    392         void operator()(iterator first, iterator last) const;
    393 
    394         collector& out;
    395         collector& phrase;
     386        std::string operator()(iterator first, iterator last) const;
     387
    396388        collector& temp;
    397389        std::string const& source_mode;
    398 
    399390        cpp_p_type cpp_p;
    400391        python_p_type python_p;
    401392    };
    402393
     394    struct code_action
     395    {
     396        // Does the actual syntax highlighing of code
     397
     398        code_action(
     399            collector& out
     400          , collector& phrase
     401          , syntax_highlight& syntax_p)
     402        : out(out)
     403        , phrase(phrase)
     404        , syntax_p(syntax_p)
     405        {
     406        }
     407
     408        void operator()(iterator first, iterator last) const;
     409
     410        collector& out;
     411        collector& phrase;
     412        syntax_highlight& syntax_p;
     413    };
     414
    403415    struct inline_code_action
    404416    {
     
    407419        inline_code_action(
    408420            collector& out
    409           , collector& temp
    410           , std::string const& source_mode
    411           , string_symbols const& macro
    412           , actions& escape_actions)
    413         : out(out)
    414         , source_mode(source_mode)
    415         , temp(temp)
    416         , cpp_p(temp, macro, do_macro_action(temp), escape_actions)
    417         , python_p(temp, macro, do_macro_action(temp), escape_actions)
     421          , syntax_highlight& syntax_p)
     422        : out(out)
     423        , syntax_p(syntax_p)
    418424        {}
    419425
     
    421427
    422428        collector& out;
    423         std::string const& source_mode;
    424         collector& temp;
    425 
    426         cpp_p_type cpp_p;
    427         python_p_type python_p;
     429        syntax_highlight& syntax_p;
    428430    };
    429431
  • trunk/tools/quickbook/detail/actions_class.cpp

    r50091 r54813  
    7070        , extract_doc_purpose(doc_purpose, phrase)
    7171
    72         , code(out, phrase, temp, source_mode, macro, *this)
    73         , code_block(phrase, phrase, temp, source_mode, macro, *this)
    74         , inline_code(phrase, temp, source_mode, macro, *this)
     72        , syntax_p(temp, source_mode, macro, *this)
     73        , code(out, phrase, syntax_p)
     74        , code_block(phrase, phrase, syntax_p)
     75        , inline_code(phrase, syntax_p)
    7576        , paragraph(out, phrase, paragraph_pre, paragraph_post)
    7677        , inside_paragraph(temp_para, phrase, paragraph_pre, paragraph_post)
  • trunk/tools/quickbook/detail/actions_class.hpp

    r50125 r54813  
    104104        phrase_to_string_action extract_doc_purpose;
    105105
     106        syntax_highlight        syntax_p;
    106107        code_action             code;
    107108        code_action             code_block;
Note: See TracChangeset for help on using the changeset viewer.