Doxygen
HtmlSpaceless类 参考
+ 类 HtmlSpaceless 继承关系图:
+ HtmlSpaceless 的协作图:

Public 成员函数

 HtmlSpaceless ()
 
std::unique_ptr< TemplateSpacelessIntfclone ()
 Create a copy of the spaceless filter 更多...
 
void reset ()
 Reset filter state 更多...
 
QCString remove (const QCString &s)
 Returns the input after removing redundant whitespace 更多...
 
- Public 成员函数 继承自 TemplateSpacelessIntf
virtual ~TemplateSpacelessIntf ()
 

Private 属性

bool m_insideTag
 
char m_insideString
 
bool m_removeSpaces
 

详细描述

在文件 context.cpp8895 行定义.

构造及析构函数说明

◆ HtmlSpaceless()

HtmlSpaceless::HtmlSpaceless ( )
inline

在文件 context.cpp8898 行定义.

8898 { reset(); }

引用了 reset().

成员函数说明

◆ clone()

std::unique_ptr<TemplateSpacelessIntf> HtmlSpaceless::clone ( )
inlinevirtual

Create a copy of the spaceless filter

实现了 TemplateSpacelessIntf.

在文件 context.cpp8899 行定义.

8900  {
8901  return std::make_unique<HtmlSpaceless>(*this);
8902  }

◆ remove()

QCString HtmlSpaceless::remove ( const QCString input)
inlinevirtual

Returns the input after removing redundant whitespace

实现了 TemplateSpacelessIntf.

在文件 context.cpp8909 行定义.

8910  {
8911  if (s.isEmpty()) return s;
8912  TextStream result;
8913  const char *p = s.data();
8914  char c;
8915  while ((c=*p++))
8916  {
8917  switch(c)
8918  {
8919  case '<': // start of a tag
8921  result << c;
8922  break;
8923  case '>': // end of a tag
8925  result << c;
8926  break;
8927  case '\\': // escaped character in a string
8928  result << c;
8929  if (m_insideString && *p) result << *p++;
8930  break;
8931  case '"': case '\'':
8932  if (m_insideTag)
8933  {
8934  if (m_insideString==c) // end of string
8935  {
8936  m_insideString='\0';
8937  }
8938  else if (m_insideString=='\0') // start of string
8939  {
8940  m_insideString=c;
8941  }
8942  }
8943  result << c;
8944  break;
8945  case ' ': case '\t': case '\n': // whitespace
8946  if (!m_insideTag) // outside tags strip consecutive whitespace
8947  {
8949  }
8950  else
8951  {
8952  result << ' ';
8953  }
8954  break;
8955  default:
8956  //if (m_removeSpaces) result+=' ';
8957  result << c;
8959  break;
8960  }
8961  }
8962  //printf("HtmlSpaceless::remove({%s})={%s} m_insideTag=%d m_insideString=%c (%d) removeSpaces=%d\n",qPrint(s),qPrint(result),
8963  // m_insideTag,m_insideString,m_insideString,m_removeSpaces);
8964  return result.str();
8965  }

引用了 QCString::data(), FALSE, QCString::isEmpty(), m_insideString, m_insideTag, m_removeSpaces, TextStream::str() , 以及 TRUE.

◆ reset()

void HtmlSpaceless::reset ( )
inlinevirtual

Reset filter state

实现了 TemplateSpacelessIntf.

在文件 context.cpp8903 行定义.

8904  {
8905  m_insideTag = FALSE;
8906  m_insideString = '\0';
8907  m_removeSpaces = TRUE;
8908  }

引用了 FALSE, m_insideString, m_insideTag, m_removeSpaces , 以及 TRUE.

被这些函数引用 HtmlSpaceless().

类成员变量说明

◆ m_insideString

char HtmlSpaceless::m_insideString
private

在文件 context.cpp8968 行定义.

被这些函数引用 remove() , 以及 reset().

◆ m_insideTag

bool HtmlSpaceless::m_insideTag
private

在文件 context.cpp8967 行定义.

被这些函数引用 remove() , 以及 reset().

◆ m_removeSpaces

bool HtmlSpaceless::m_removeSpaces
private

在文件 context.cpp8969 行定义.

被这些函数引用 remove() , 以及 reset().


该类的文档由以下文件生成:
TextStream
Text streaming class that buffers data.
Definition: textstream.h:33
TRUE
#define TRUE
Definition: qcstring.h:36
TextStream::str
std::string str() const
Return the contents of the buffer as a std::string object
Definition: textstream.h:208
HtmlSpaceless::m_insideTag
bool m_insideTag
Definition: context.cpp:8967
HtmlSpaceless::reset
void reset()
Reset filter state
Definition: context.cpp:8903
HtmlSpaceless::m_insideString
char m_insideString
Definition: context.cpp:8968
HtmlSpaceless::m_removeSpaces
bool m_removeSpaces
Definition: context.cpp:8969
FALSE
#define FALSE
Definition: qcstring.h:33