Doxygen
Loading...
Searching...
No Matches
ManCodeGenerator Class Referencefinal

Generator for Man page code fragments. More...

#include <src/mangen.h>

Inheritance diagram for ManCodeGenerator:
Collaboration diagram for ManCodeGenerator:

Public Member Functions

 ManCodeGenerator (TextStream *t)
void setTextStream (TextStream *t)
OutputType type () const override
std::unique_ptr< OutputCodeIntfclone () override
void codify (const DString &text) override
void stripCodeComments (bool b) override
void startSpecialComment () override
void endSpecialComment () override
void setStripIndentAmount (size_t amount) override
void writeCodeLink (CodeSymbolType type, const DString &ref, const DString &file, const DString &anchor, const DString &name, const DString &tooltip) override
void writeTooltip (const DString &, const DocLinkInfo &, const DString &, const DString &, const SourceLinkInfo &, const SourceLinkInfo &) override
void writeLineNumber (const DString &, const DString &, const DString &, int l, bool) override
void startCodeLine (int) override
void endCodeLine () override
void startFontClass (const DString &) override
void endFontClass () override
void writeCodeAnchor (const DString &) override
void startCodeFragment (const DString &style) override
void endCodeFragment (const DString &) override
void startFold (int, const DString &, const DString &) override
void endFold () override
Public Member Functions inherited from OutputCodeIntf
 OutputCodeIntf ()=default

Private Attributes

size_t m_col = 0
TextStreamm_t
bool m_stripCodeComments = false
bool m_hide = false
size_t m_stripIndentAmount = 0

Detailed Description

Generator for Man page code fragments.

Definition at line 24 of file mangen.h.

Constructor & Destructor Documentation

◆ ManCodeGenerator()

ManCodeGenerator::ManCodeGenerator ( TextStream * t)

Definition at line 114 of file mangen.cpp.

114 : m_t(t)
115{
116}
TextStream * m_t
Definition mangen.h:61

References m_t.

Member Function Documentation

◆ clone()

std::unique_ptr< OutputCodeIntf > ManCodeGenerator::clone ( )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 31 of file mangen.h.

31{ return std::make_unique<ManCodeGenerator>(*this); }

◆ codify()

void ManCodeGenerator::codify ( const DString & text)
overridevirtual

Implements OutputCodeIntf.

Definition at line 165 of file mangen.cpp.

166{
167 const int tabSize = Config_getInt(TAB_SIZE);
168 const size_t stripAmount = m_stripIndentAmount;
169 if (!str.empty())
170 {
171 char c;
172 const char *p=str.data();
173 if (m_hide)
174 {
176 }
177 else
178 {
179 while ((c=*p++))
180 {
181 switch(c)
182 {
183 case '-': *m_t << "\\-"; break; // see bug747780
184 case '.': *m_t << "\\&."; break; // see bug652277
185 case '\t': {
186 int spacesToNextTabStop = tabSize - (m_col%tabSize);
187 while (spacesToNextTabStop--)
188 {
189 if (m_col>=stripAmount) *m_t << " ";
190 m_col++;
191 }
192 }
193 break;
194 case ' ': if (m_col>=stripAmount) *m_t << " ";
195 m_col++;
196 break;
197 case '\n': *m_t << "\n"; m_col=0; break;
198 case '\\': *m_t << "\\\\"; m_col++; break;
199 case '\"': // no break!
200 default: p=writeUTF8Char(*m_t,p-1); m_col++; break;
201 }
202 }
203 //printf("%s",str);fflush(stdout);
204 }
205 }
206}
size_t m_stripIndentAmount
Definition mangen.h:64
size_t m_col
Definition mangen.h:60
#define Config_getInt(name)
Definition config.h:34
size_t updateColumnCount(const char *s, size_t col)
Definition outputgen.cpp:58
const char * writeUTF8Char(TextStream &t, const char *s)
Writes the UTF8 character pointed to by s to stream t and returns a pointer to the next character.
Definition utf8.cpp:201

References Config_getInt, DString::data(), DString::empty(), m_col, m_hide, m_stripIndentAmount, m_t, updateColumnCount(), and writeUTF8Char().

Referenced by endCodeLine().

◆ endCodeFragment()

void ManCodeGenerator::endCodeFragment ( const DString & )
overridevirtual

Implements OutputCodeIntf.

Definition at line 124 of file mangen.cpp.

125{
126 if (m_col>0) *m_t << "\n";
127 *m_t << ".PP\n";
128 *m_t << ".fi\n";
129 m_col=0;
130}

References m_col, and m_t.

◆ endCodeLine()

void ManCodeGenerator::endCodeLine ( )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 50 of file mangen.h.

50{ codify("\n"); m_col=0; }
void codify(const DString &text) override
Definition mangen.cpp:165

References codify(), and m_col.

◆ endFold()

void ManCodeGenerator::endFold ( )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 57 of file mangen.h.

57{}

◆ endFontClass()

void ManCodeGenerator::endFontClass ( )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 52 of file mangen.h.

52{}

◆ endSpecialComment()

void ManCodeGenerator::endSpecialComment ( )
overridevirtual

Implements OutputCodeIntf.

Definition at line 218 of file mangen.cpp.

219{
220 m_hide = false;
221}

References m_hide.

◆ setStripIndentAmount()

void ManCodeGenerator::setStripIndentAmount ( size_t amount)
overridevirtual

Implements OutputCodeIntf.

Definition at line 223 of file mangen.cpp.

224{
225 m_stripIndentAmount = amount;
226}

References m_stripIndentAmount.

◆ setTextStream()

void ManCodeGenerator::setTextStream ( TextStream * t)
inline

Definition at line 28 of file mangen.h.

28{ m_t = t; }

References m_t.

Referenced by ManGenerator::ManGenerator(), and ManGenerator::operator=().

◆ startCodeFragment()

void ManCodeGenerator::startCodeFragment ( const DString & style)
overridevirtual

Implements OutputCodeIntf.

Definition at line 118 of file mangen.cpp.

119{
120 *m_t << "\n";
121 *m_t << ".nf\n";
122}

References m_t.

◆ startCodeLine()

void ManCodeGenerator::startCodeLine ( int )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 49 of file mangen.h.

49{}

◆ startFold()

void ManCodeGenerator::startFold ( int ,
const DString & ,
const DString &  )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 56 of file mangen.h.

56{}

◆ startFontClass()

void ManCodeGenerator::startFontClass ( const DString & )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 51 of file mangen.h.

51{}

◆ startSpecialComment()

void ManCodeGenerator::startSpecialComment ( )
overridevirtual

Implements OutputCodeIntf.

Definition at line 213 of file mangen.cpp.

214{
216}
bool m_stripCodeComments
Definition mangen.h:62

References m_hide, and m_stripCodeComments.

◆ stripCodeComments()

void ManCodeGenerator::stripCodeComments ( bool b)
overridevirtual

Implements OutputCodeIntf.

Definition at line 208 of file mangen.cpp.

209{
211}

References m_stripCodeComments.

◆ type()

OutputType ManCodeGenerator::type ( ) const
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 30 of file mangen.h.

30{ return OutputType::Man; }

References Man.

◆ writeCodeAnchor()

void ManCodeGenerator::writeCodeAnchor ( const DString & )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 53 of file mangen.h.

53{}

◆ writeCodeLink()

void ManCodeGenerator::writeCodeLink ( CodeSymbolType type,
const DString & ref,
const DString & file,
const DString & anchor,
const DString & name,
const DString & tooltip )
overridevirtual

Implements OutputCodeIntf.

Definition at line 139 of file mangen.cpp.

143{
144 if (m_hide) return;
145 if (!name.empty())
146 {
147 const char *p=name.data();
148 char c=0;
149 while ((c=*p++))
150 {
151 switch(c)
152 {
153 case '-': *m_t << "\\-"; break; // see bug747780
154 case '.': *m_t << "\\&."; break; // see bug652277
155 case '\\': *m_t << "\\\\"; m_col++; break;
156 case '\n': *m_t << "\n"; m_col=0; break;
157 case '\"': c = '\''; // no break!
158 default: *m_t << c; m_col++; break;
159 }
160 }
161 //printf("%s",str);fflush(stdout);
162 }
163}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Definition dstring.h:157

References DString::data(), DString::empty(), m_col, m_hide, and m_t.

◆ writeLineNumber()

void ManCodeGenerator::writeLineNumber ( const DString & ,
const DString & ,
const DString & ,
int l,
bool  )
overridevirtual

Implements OutputCodeIntf.

Definition at line 132 of file mangen.cpp.

133{
134 if (m_hide) return;
135 *m_t << l << " ";
136 m_col=0;
137}

References m_col, m_hide, and m_t.

◆ writeTooltip()

void ManCodeGenerator::writeTooltip ( const DString & ,
const DocLinkInfo & ,
const DString & ,
const DString & ,
const SourceLinkInfo & ,
const SourceLinkInfo &  )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 41 of file mangen.h.

47 {}

Member Data Documentation

◆ m_col

size_t ManCodeGenerator::m_col = 0
private

Definition at line 60 of file mangen.h.

Referenced by codify(), endCodeFragment(), endCodeLine(), writeCodeLink(), and writeLineNumber().

◆ m_hide

bool ManCodeGenerator::m_hide = false
private

◆ m_stripCodeComments

bool ManCodeGenerator::m_stripCodeComments = false
private

Definition at line 62 of file mangen.h.

Referenced by startSpecialComment(), and stripCodeComments().

◆ m_stripIndentAmount

size_t ManCodeGenerator::m_stripIndentAmount = 0
private

Definition at line 64 of file mangen.h.

Referenced by codify(), and setStripIndentAmount().

◆ m_t

TextStream* ManCodeGenerator::m_t
private

The documentation for this class was generated from the following files: