| 51 |  | ++lineNo; | 
| 52 |  | line = trimLeftCopy(buffer); | 
| 53 |  | //a line begins with "//" is comment | 
| 54 | + | // let's also call lines starting with # and ! as comments | 
| 55 |  | if (isEndSection(line)) { | 
| 56 | < | break; | 
| 57 | < | } else if ( line.empty() || (line.size() >= 2 && line[0] == '/' && line[1] == '/')) { | 
| 58 | < | continue; | 
| 56 | > | break; | 
| 57 | > | } else if ( line.empty() || | 
| 58 | > | (line.size() >= 2 && line[0] == '/' && line[1] == '/') || | 
| 59 | > | (line.size() >= 1 && line[0] == '#') || | 
| 60 | > | (line.size() >= 1 && line[0] == '!') ) { | 
| 61 | > | continue; | 
| 62 |  | } else { | 
| 63 | < | parseLine(ff, line, lineNo); | 
| 63 | > | parseLine(ff, line, lineNo); | 
| 64 |  | } | 
| 65 |  | } | 
| 66 |  | } | 
| 67 | < |  | 
| 67 | > |  | 
| 68 |  | bool SectionParser::isEndSection(const std::string& line) { | 
| 69 |  | StringTokenizer tokenizer(line); | 
| 70 | < |  | 
| 70 | > |  | 
| 71 |  | if (tokenizer.countTokens() >= 2) { | 
| 72 |  | std::string keyword = tokenizer.nextToken(); | 
| 73 | < |  | 
| 73 | > |  | 
| 74 |  | if (keyword != "end"){ | 
| 75 | < | return false; | 
| 75 | > | return false; | 
| 76 |  | } | 
| 77 | < |  | 
| 77 | > |  | 
| 78 |  | std::string section = tokenizer.nextToken(); | 
| 79 |  | if (section == sectionName_) { | 
| 80 | < | return true; | 
| 80 | > | return true; | 
| 81 |  | }else { | 
| 82 | < | return false; | 
| 82 | > | return false; | 
| 83 |  | } | 
| 84 | < |  | 
| 84 | > |  | 
| 85 |  | }else { | 
| 86 |  | return false; | 
| 87 |  | } | 
| 88 | < |  | 
| 88 | > |  | 
| 89 |  | } | 
| 90 |  |  | 
| 91 |  | }//namespace oopse |