Skip to content

Commit 7ff2e10

Browse files
committed
escape special chars
1 parent ca7e7bf commit 7ff2e10

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

src/read.cpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "read.h"
22
#include <sstream>
3+
#include "util.h"
34

45
Read::Read(string name, string seq, string strand, string quality){
56
mName = name;
@@ -98,26 +99,40 @@ string Read::makeHtmlSeqWithQual(int start, int length) {
9899
return ss.str();
99100
}
100101

102+
void Read::escapeSpecialQualityChar(string& str) {
103+
const char* data = str.c_str();
104+
for(int i=0;i<str.length();i++){
105+
if(data[i] == '\'' || data[i] == '\\')
106+
str[i] = data[i] + 1;
107+
}
108+
}
109+
101110
void Read::printJSWithBreaks(ofstream& file, vector<int>& breaks) {
102111
if(breaks.size()>0){
103112
file << "\n[";
104113
file << "'" << mSeq.mStr.substr(0, breaks[0]) << "'";
105114
file << ", " ;
106-
file << "'" << mQuality.substr(0, breaks[0]) << "'";
115+
string qualstr = mQuality.substr(0, breaks[0]);
116+
escapeSpecialQualityChar(qualstr);
117+
file << "'" << qualstr << "'";
107118
file << "],";
108119
}
109120
for(int i=0;i<breaks.size()-1;i++){
110121
file << "\n[";
111122
file << "'" << mSeq.mStr.substr(breaks[i], breaks[i+1]-breaks[i]) << "'";
112123
file << ", " ;
113-
file << "'" << mQuality.substr(breaks[i], breaks[i+1]-breaks[i]) << "'";
124+
string qualstr = mQuality.substr(breaks[i], breaks[i+1]-breaks[i]);
125+
escapeSpecialQualityChar(qualstr);
126+
file << "'" << qualstr << "'";
114127
file << "],";
115128
}
116129
if(breaks[breaks.size()-1]>0){
117130
file << "\n[";
118131
file << "'" << mSeq.mStr.substr(breaks[breaks.size()-1], mSeq.mStr.length() - breaks[breaks.size()-1]) << "'";
119132
file << ", " ;
120-
file << "'" << mQuality.substr(breaks[breaks.size()-1], mSeq.mStr.length() - breaks[breaks.size()-1]) << "'";
133+
string qualstr = mQuality.substr(breaks[breaks.size()-1], mSeq.mStr.length() - breaks[breaks.size()-1]);
134+
escapeSpecialQualityChar(qualstr);
135+
file << "'" << qualstr << "'";
121136
file << "],";
122137
}
123138

@@ -258,9 +273,6 @@ Read* ReadPair::fastMerge(){
258273
} else {
259274
// add the quality of the pair to make a high qual
260275
mergedQual[offset+i] = qual1[offset+i] + qual2[i] - 33;
261-
// avoid slash since it will affect HTML output
262-
if(mergedQual[offset+i] == '\\')
263-
mergedQual[offset+i] = '\\' - 1;
264276
}
265277
}
266278
delete rcRight;

src/read.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class Read{
3737
string makeStringWithBreaks(const string origin, vector<int>& breaks);
3838
string makeHtmlSeqWithQual(int start, int length);
3939
string qualityColor(char qual);
40+
void escapeSpecialQualityChar(string& str);
4041

4142
public:
4243
string mName;

0 commit comments

Comments
 (0)