Changeset 292


Ignore:
Timestamp:
May 8, 2007, 5:06:18 PM (16 years ago)
Author:
Peter Johansson
Message:

Trac support: r292 [292] changeset:292 refs #180

Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Trac.cc

    r291 r292  
    3636  {}
    3737
     38  bool Trac::changeset(std::string::const_iterator& first,
     39                       const std::string::const_iterator& last)
     40  {
     41    if (changeset1(first, last))
     42      return true;
     43    if (changeset2(first, last))
     44      return true;
     45    if (changeset3(first, last))
     46      return true;
     47    return false;
     48  }
     49
     50
     51  bool Trac::changeset1(std::string::const_iterator& first,
     52                        const std::string::const_iterator& last)
     53  {
     54    if (first==last)
     55      return false;
     56    if (*first != 'r')
     57      return false;
     58    const std::string::const_iterator first_orig(first);
     59    ++first;
     60    std::string rev = match(first, last, Digit());
     61    if (rev.empty()){
     62      first = first_orig;
     63      return false;
     64    }
     65    std::string href(Configuration::instance().trac_root()+"changeset/"+rev);
     66    hs_.stream() << anchor(href, std::string(first_orig,first));
     67    return true;
     68  }
     69
     70
     71  bool Trac::changeset2(std::string::const_iterator& first,
     72                        const std::string::const_iterator& last)
     73  {
     74    if (first==last)
     75      return false;
     76    if (*first != '[')
     77      return false;
     78    const std::string::const_iterator first_orig(first);
     79    ++first;
     80    std::string rev = match(first, last, Digit());
     81    if (rev.empty() || first==last || *first!=']'){
     82      first = first_orig;
     83      return false;
     84    }
     85    ++first;
     86    std::string href(Configuration::instance().trac_root()+"changeset/"+rev);
     87    hs_.stream() << anchor(href, std::string(first_orig,first));
     88    return true;
     89  }
     90
     91
     92  bool Trac::changeset3(std::string::const_iterator& first,
     93                        const std::string::const_iterator& last)
     94  {
     95    if (first==last)
     96      return false;
     97    const std::string::const_iterator first_orig(first);
     98    if (match(first, last, "changeset:").empty()){
     99      first = first_orig;
     100      return false;
     101    }
     102    std::string rev = match(first, last, Digit());
     103    if (rev.empty()){
     104      first = first_orig;
     105      return false;
     106    }
     107    std::string href(Configuration::instance().trac_root()+"changeset/"+rev);
     108    hs_.stream() << anchor(href, std::string(first_orig,first));
     109    return true;
     110  }
     111
     112
    38113  void Trac::print(std::string str)
    39114  {
     
    45120        continue;
    46121      if (comment(first, str.end()))
     122        continue;
     123      if (changeset(first, str.end()))
    47124        continue;
    48125      hs_ << *first;
  • trunk/lib/Trac.h

    r290 r292  
    5353                   const std::string::const_iterator& last);
    5454
     55    bool changeset1(std::string::const_iterator& first,
     56                   const std::string::const_iterator& last);
     57
     58    bool changeset2(std::string::const_iterator& first,
     59                   const std::string::const_iterator& last);
     60
     61    bool changeset3(std::string::const_iterator& first,
     62                   const std::string::const_iterator& last);
     63
    5564    bool comment(std::string::const_iterator& first,
    5665                 const std::string::const_iterator& last);
  • trunk/test/repo/db/current

    r289 r292  
    1 49 1i 1
     150 1i 1
Note: See TracChangeset for help on using the changeset viewer.