]> git.lyx.org Git - lyx.git/blob - src/sgml.C
"Inter-word Space"
[lyx.git] / src / sgml.C
1 /**
2  * \file sgml.C
3  * Copyright 2002 the LyX Team
4  * Read the file COPYING
5  *
6  * \author José Matos
7  * \author John Levon <levon@movementarian.org>
8  */
9
10 #include <config.h>
11
12 #include "support/LOstream.h"
13
14 #include "paragraph.h"
15 #include "sgml.h"
16
17 using std::pair;
18 using std::make_pair;
19 using std::ostream;
20 using std::endl;
21
22 namespace sgml {
23
24 pair<bool, string> escapeChar(char c)
25 {
26         string str;
27
28         switch (c) {
29         case ' ':
30                 return make_pair(true, string(" "));
31                 break;
32         case '\0': // Ignore :-)
33                 str.erase();
34                 break;
35         case '&':
36                 str = "&amp;";
37                 break;
38         case '<':
39                 str = "&lt;";
40                 break;
41         case '>':
42                 str = "&gt;";
43                 break;
44         case '$':
45                 str = "&dollar;";
46                 break;
47         case '#':
48                 str = "&num;";
49                 break;
50         case '%':
51                 str = "&percnt;";
52                 break;
53         case '[':
54                 str = "&lsqb;";
55                 break;
56         case ']':
57                 str = "&rsqb;";
58                 break;
59         case '{':
60                 str = "&lcub;";
61                 break;
62         case '}':
63                 str = "&rcub;";
64                 break;
65         case '~':
66                 str = "&tilde;";
67                 break;
68         case '"':
69                 str = "&quot;";
70                 break;
71         case '\\':
72                 str = "&bsol;";
73                 break;
74         default:
75                 str = c;
76                 break;
77         }
78         return make_pair(false, str);
79 }
80
81
82 int openTag(ostream & os, Paragraph::depth_type depth,
83             bool mixcont, string const & latexname)
84 {
85         if (!latexname.empty() && latexname != "!-- --") {
86                 if (!mixcont)
87                         os << string(depth, ' ');
88                 os << '<' << latexname << '>';
89         }
90
91         if (!mixcont)
92                 os << endl;
93
94         return !mixcont;
95 }
96
97
98 int closeTag(ostream & os, Paragraph::depth_type depth,
99              bool mixcont, string const & latexname)
100 {
101         if (!latexname.empty() && latexname != "!-- --") {
102                 if (!mixcont)
103                         os << endl << string(depth, ' ');
104                 os << "</" << latexname << '>';
105         }
106
107         if (!mixcont)
108                 os << endl;
109
110         return !mixcont;
111 }
112
113 } // namespace sgml