]> git.lyx.org Git - lyx.git/blob - src/sgml.C
activate the new InsetHFill,
[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 Paragraph::META_NEWLINE:
30                 str = '\n';
31                 break;
32         case ' ':
33                 return make_pair(true, string(" "));
34                 break;
35         case '\0': // Ignore :-)
36                 str.erase();
37                 break;
38         case '&':
39                 str = "&amp;";
40                 break;
41         case '<':
42                 str = "&lt;";
43                 break;
44         case '>':
45                 str = "&gt;";
46                 break;
47         case '$':
48                 str = "&dollar;";
49                 break;
50         case '#':
51                 str = "&num;";
52                 break;
53         case '%':
54                 str = "&percnt;";
55                 break;
56         case '[':
57                 str = "&lsqb;";
58                 break;
59         case ']':
60                 str = "&rsqb;";
61                 break;
62         case '{':
63                 str = "&lcub;";
64                 break;
65         case '}':
66                 str = "&rcub;";
67                 break;
68         case '~':
69                 str = "&tilde;";
70                 break;
71         case '"':
72                 str = "&quot;";
73                 break;
74         case '\\':
75                 str = "&bsol;";
76                 break;
77         default:
78                 str = c;
79                 break;
80         }
81         return make_pair(false, str);
82 }
83
84
85 int openTag(ostream & os, Paragraph::depth_type depth,
86             bool mixcont, string const & latexname)
87 {
88         if (!latexname.empty() && latexname != "!-- --") {
89                 if (!mixcont)
90                         os << string(depth, ' ');
91                 os << '<' << latexname << '>';
92         }
93
94         if (!mixcont)
95                 os << endl;
96
97         return !mixcont;
98 }
99
100
101 int closeTag(ostream & os, Paragraph::depth_type depth,
102              bool mixcont, string const & latexname)
103 {
104         if (!latexname.empty() && latexname != "!-- --") {
105                 if (!mixcont)
106                         os << endl << string(depth, ' ');
107                 os << "</" << latexname << '>';
108         }
109
110         if (!mixcont)
111                 os << endl;
112
113         return !mixcont;
114 }
115
116 } // namespace sgml