DCL 3.7.4
Loading...
Searching...
No Matches
SrcToHtmlServlet.cpp
Go to the documentation of this file.
1#include <dcl/Config.h>
2
3#include <dcl/Files.h>
4#include <dcl/Charset.h>
5
6#include "SrcToHtmlServlet.h"
7
8#if __DCL_HAVE_THIS_FILE__
9#undef __THIS_FILE__
10static const char_t __THIS_FILE__[] = L"src2html/SrcToHtmlServlet.cpp";
11#endif
12
13__DCL_BEGIN_NAMESPACE
14
16
17HTTP_SERVLET_INSTANCE(SrcToHtmlServlet, L"src2html: Programming Source formatter")
18
20{
21 __generator = NULL;
22}
23
26{
28
29 String strIniFile = getIniFileName(L"HSAIDoc/src2html.ini");
30
31 if (!Files::exists(strIniFile)) {
32 __DCL_TRACE1(L"File not found! - [%ls]\n", strIniFile.data());
33 return;
34 }
35
36 __generator = new HtmlGenerator(strIniFile);
37 if (!__generator) {
38 __DCL_TRACE0(L"HtmlGenerator : create fail\n");
39 return;
40 }
41}
42
45{
46 if (__generator) {
47 delete __generator;
48 __generator = NULL;
49 }
50}
51
53// __DCL_THROWS1(Exception*)
54{
55 ctx.setContentType(L"text/html; charset=utf-8");
56
57 Writer& out = ctx.writer();
58
59 String dir = Files::dirname(ctx.scriptFilename());
60 UTF8Decoder decoder;
61
62 __DCL_TRACE1(L"dir: [%ls]\n", dir.data());
63 __DCL_TRACE1(L"data: %d\n", ctx.__formMap[L"data"].size());
64 __DCL_TRACE1(L"file: %d\n", ctx.__formFileMap.byName(L"file").size());
65
66 if (!ctx.__queryMap[L"name"].isEmpty()) {
67 String filename = dir + L"src/" + ctx.__queryMap[L"name"][0];
68 __DCL_TRACE1(L"name [%ls]\n", filename.data());
69 if (Files::exists(filename)) {
70 __generator->generateHeader(out, filename);
71 __generator->generate(out, filename);
72 __generator->generateFooter(out);
73 return;
74 }
75 }
76
77 if (!ctx.__formFileMap.byName(L"file").isEmpty())
78 {
79 StoredHttpFormData::FileInfo& info = ctx.__formFileMap.byName(L"file")[0];
80 const wchar_t* pszLangSyntax = L"C/C++";
81 if (info.filename.toLowerCase().endsWith(L".java")) {
82 pszLangSyntax = L"JAVA";
83 }
84
85 __DCL_TRACE3(L"file: %ls, size: %zd, syntax: %ls\n",
86 info.filename.data(),
87 info.fileSize,
88 pszLangSyntax
89 );
90
91 __generator->generateHeader(
92 out,
93 info.filename
94 );
95
96 __generator->generate(
97 out,
98 info.tempFilename,
99 pszLangSyntax
100 );
101 }
102
103 if (ctx.__formMap.find(L"data") != ctx.__formMap.end()
104 && ctx.__formMap.find(L"lang") != ctx.__formMap.end()) {
105 const String& strData = ctx.__formMap[L"data"][0];
106 const String& strLang = ctx.__formMap[L"lang"][0];
107 const wchar_t* pszLangSyntax = L"C/C++";
108 if (strLang == L"java")
109 pszLangSyntax = L"JAVA";
110
111 __DCL_TRACE3(L"file: %ls, size: %zd, syntax: %ls\n",
112 L"data",
113 strData.length(),
114 pszLangSyntax
115 );
116
117 __generator->generateHeader(
118 out,
119 NULL
120 );
121
122 __generator->generate(
123 out,
124 strData,
125 strData.length(),
126 pszLangSyntax
127 );
128 }
129
130 if (ctx.__formMap[L"data"].isEmpty()
131 && ctx.__formFileMap.byName(L"file").isEmpty()) {
132 String filename = dir + L"src2html.html";
133 out << Files::readText(filename, decoder);
134 return;
135 }
136}
137
138__DCL_END_NAMESPACE
139
140#ifdef __WINNT_NEW_DELETE_OVERRIDE
141#undef new
142__WINNT_NEW_DELETE_OVERRIDE
143#endif
#define __THIS_FILE__
Definition _trace.h:14
#define NULL
Definition Config.h:312
wchar_t char_t
Definition Config.h:247
#define __DCL_THROWS1(e)
Definition Config.h:152
#define HTTP_SERVLET_INSTANCE(ServletClass, Description)
#define __DCL_TRACE0(psz)
Definition Object.h:398
#define __DCL_TRACE1(fmt, arg1)
Definition Object.h:399
#define __DCL_TRACE3(fmt, arg1, arg2, arg3)
Definition Object.h:401
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
Definition Object.h:245
static String dirname(const String &_path)
Definition Files.cpp:268
static bool exists(const String &_path)
Definition Files.cpp:109
static String readText(const String &_filename) __DCL_THROWS1(IOException *)
Definition Files.cpp:435
StringWriter & writer()
virtual void onInitialize() __DCL_THROWS1(Exception *)
virtual void onCleanup() __DCL_THROWS1(Exception *)
virtual void onService(HttpServletContextEx &ctx) __DCL_THROWS1(Exception *)
virtual void onInitialize() __DCL_THROWS1(Exception *)
FileInfoArray & byName(const wchar_t *_name)