2 * LuCI Template - Lua binding
4 * Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 #include "template_lualib.h"
21 int template_L_parse(lua_State
*L
)
23 const char *file
= luaL_checkstring(L
, 1);
24 struct template_parser
*parser
= template_open(file
);
30 lua_pushinteger(L
, errno
);
31 lua_pushstring(L
, strerror(errno
));
35 lua_status
= lua_load(L
, template_reader
, parser
, file
);
40 rv
= template_error(L
, parser
);
42 template_close(parser
);
47 int template_L_utf8(lua_State
*L
)
50 const char *str
= luaL_checklstring(L
, 1, &len
);
51 char *res
= utf8(str
, len
);
55 lua_pushstring(L
, res
);
64 int template_L_pcdata(lua_State
*L
)
67 const char *str
= luaL_checklstring(L
, 1, &len
);
68 char *res
= pcdata(str
, len
);
72 lua_pushstring(L
, res
);
81 int template_L_striptags(lua_State
*L
)
84 const char *str
= luaL_checklstring(L
, 1, &len
);
85 char *res
= striptags(str
, len
);
89 lua_pushstring(L
, res
);
98 static int template_L_load_catalog(lua_State
*L
) {
99 const char *lang
= luaL_optstring(L
, 1, "en");
100 const char *dir
= luaL_optstring(L
, 2, NULL
);
101 lua_pushboolean(L
, !lmo_load_catalog(lang
, dir
));
105 static int template_L_close_catalog(lua_State
*L
) {
106 const char *lang
= luaL_optstring(L
, 1, "en");
107 lmo_close_catalog(lang
);
111 static int template_L_change_catalog(lua_State
*L
) {
112 const char *lang
= luaL_optstring(L
, 1, "en");
113 lua_pushboolean(L
, !lmo_change_catalog(lang
));
117 static int template_L_translate(lua_State
*L
) {
121 const char *key
= luaL_checklstring(L
, 1, &len
);
123 switch (lmo_translate(key
, len
, &tr
, &trlen
))
126 lua_pushlstring(L
, tr
, trlen
);
134 lua_pushstring(L
, "no catalog loaded");
138 static int template_L_hash(lua_State
*L
) {
140 const char *key
= luaL_checklstring(L
, 1, &len
);
141 lua_pushinteger(L
, sfh_hash(key
, len
));
147 static const luaL_reg R
[] = {
148 { "parse", template_L_parse
},
149 { "utf8", template_L_utf8
},
150 { "pcdata", template_L_pcdata
},
151 { "striptags", template_L_striptags
},
152 { "load_catalog", template_L_load_catalog
},
153 { "close_catalog", template_L_close_catalog
},
154 { "change_catalog", template_L_change_catalog
},
155 { "translate", template_L_translate
},
156 { "hash", template_L_hash
},
160 LUALIB_API
int luaopen_luci_template_parser(lua_State
*L
) {
161 luaL_register(L
, TEMPLATE_LUALIB_META
, R
);