-- -- -- -------------------------------------------------------------------------------- -- -- FILE: text_format.lua -- -- DESCRIPTION: protoc-gen-lua -- -- Google's Protocol Buffers project, ported to lua. -- -- https://code.google.com/p/protoc-gen-lua/ -- -- -- -- Copyright (c) 2010 , 林卓毅 (Zhuoyi Lin) netsnail@gmail.com -- -- All rights reserved. -- -- -- -- Use, modification and distribution are subject to the "New BSD License" -- -- as listed at . -- -- COMPANY: NetEase -- -- CREATED: 2010年08月05日 15时14分13秒 CST -- -------------------------------------------------------------------------------- -- -- -- local string = string -- local math = math -- local print = print -- local getmetatable = getmetatable -- local table = table -- local ipairs = ipairs -- local tostring = tostring -- local descriptor = require "protobuf.descriptor" -- module "protobuf.text_format" -- function format(buffer) -- local len = string.len( buffer ) -- for i = 1, len, 16 do -- local text = "" -- for j = i, math.min( i + 16 - 1, len ) do -- text = string.format( "%s %02x", text, string.byte( buffer, j ) ) -- end -- print( text ) -- end -- end -- local FieldDescriptor = descriptor.FieldDescriptor -- msg_format_indent = function(write, msg, indent) -- for field, value in msg:ListFields() do -- local print_field = function(field_value) -- local name = field.name -- write(string.rep(" ", indent)) -- if field.type == FieldDescriptor.TYPE_MESSAGE then -- local extensions = getmetatable(msg)._extensions_by_name -- if extensions[field.full_name] then -- write("[" .. name .. "] {\n") -- else -- write(name .. " {\n") -- end -- msg_format_indent(write, field_value, indent + 4) -- write(string.rep(" ", indent)) -- write("}\n") -- else -- write(string.format("%s: %s\n", name, tostring(field_value))) -- end -- end -- if field.label == FieldDescriptor.LABEL_REPEATED then -- for _, k in ipairs(value) do -- print_field(k) -- end -- else -- print_field(value) -- end -- end -- end -- function msg_format(msg) -- local out = {} -- local write = function(value) -- out[#out + 1] = value -- end -- msg_format_indent(write, msg, 0) -- return table.concat(out) -- end