Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Lua wrapper for OpenCC.
- --]]
- local ffi = require("ffi")
- local opencc = ffi.load("/usr/lib64/libopencc.so.2")
- -- Define C API bindings
- ffi.cdef[[
- typedef void* opencc_t;
- opencc_t opencc_open(const char* configFileName);
- opencc_t opencc_open_w(const wchar_t* configFileName);
- int opencc_close(opencc_t opencc);
- size_t opencc_convert_utf8_to_buffer(opencc_t opencc, const char* input, size_t length, char* output);
- char* opencc_convert_utf8(opencc_t opencc, const char* input, size_t length);
- void opencc_convert_utf8_free(char* str);
- const char* opencc_error(void);
- ]]
- local _M = {}
- --[[
- Function to convert input string according to given configuration.
- Parameters:
- @input: input string, cannot be null
- @config: opencc configuration file, can be "t2s.json", "s2t.json" or custom file path.
- Returns:
- the converted string
- --]]
- function _M.convert(input, config)
- local opencc_instance = opencc.opencc_open(config)
- local cd = opencc.opencc_convert_utf8(opencc_instance, input, -1)
- local ret = ffi.string(cd)
- opencc.opencc_convert_utf8_free(cd)
- opencc.opencc_close(opencc_instance)
- return ret
- end
- return _M
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement