• R/O
  • SSH
  • HTTPS

cadencii: コミット


コミットメタ情報

リビジョン1988 (tree)
日時2012-02-21 03:30:59
作者kbinani

ログメッセージ

[luavsq] Utilにexportメソッドを追加

変更サマリ

差分

--- luavsq/trunk/test/UtilTest.lua (revision 1987)
+++ luavsq/trunk/test/UtilTest.lua (revision 1988)
@@ -206,3 +206,10 @@
206206 assert_equal( 0x80, actual[6][5] );
207207 assert_equal( 0x80, actual[6][6] );
208208 end
209+
210+function testExport()
211+ local a = { keyA = "valueA", keyB = 1 };
212+ local expected = "{keyA='valueA',keyB=1,}";
213+ local actual = luavsq.Util.export( a );
214+ assert_equal( expected, actual );
215+end
--- luavsq/trunk/Util.lua (revision 1987)
+++ luavsq/trunk/Util.lua (revision 1988)
@@ -403,6 +403,59 @@
403403 end
404404
405405 ---
406+-- 変数の中身を、ソースコードとして読み込み可能な文字列にダンプする
407+-- @param value (?) ダンプする変数
408+-- @return (string) 変数のダンプ
409+-- @access static
410+function Util.export( value )
411+ return Util._export( value );
412+end
413+
414+---
415+-- @param value (?) ダンプする変数
416+-- @param depth (int) ダンプのネスト深さ
417+-- @param state (table) ダンプ済みオブジェクトのテーブル
418+-- @param option (table) ダンプ時の設定値
419+-- @access static private
420+function Util._export( value )
421+ if( value == nil )then
422+ return "nil";
423+ elseif( type( value ) == "boolean" )then
424+ if( value )then
425+ return "true";
426+ else
427+ return "false";
428+ end
429+ elseif( type( value ) == "string" )then
430+ return "'" .. value .. "'";
431+ elseif( type( value ) == "function" )then
432+ return "nil";-- do nothing
433+ elseif( type( value ) == "userdata" )then
434+ return "nil";-- do nothing
435+ elseif( type( value ) == "number" )then
436+ return "" .. value;
437+ elseif( type( value ) ~= "table" )then
438+ return "" .. value;
439+ else
440+ local str = "";
441+ local count = 0;
442+ for k, v in pairs( value ) do
443+ if( type( v ) ~= "function" )then
444+ local dumped = Util._export( v );
445+ local key = "" .. k;
446+ str = str .. key .. "=" .. dumped .. ",";
447+ count = count + 1;
448+ end
449+ end
450+ if( count > 0 )then
451+ return "{" .. str .. "}"
452+ else
453+ return "{}";
454+ end
455+ end
456+end
457+
458+---
406459 -- UTF8 の文字列を、1 文字ずつに分解した配列に変換します
407460 -- @param utf8 (string) UTF8 の文字列
408461 -- @return (table) 1 要素に 1 文字分の文字コードが入った配列
@@ -444,4 +497,4 @@
444497 end
445498
446499 return result;
447-end
\ No newline at end of file
500+end
旧リポジトリブラウザで表示