// �[�����\�b�h�̎��s // ���� = EcmString or EcmString[] public Object Eval(Object item, string memberStr) { if(item is Array){ Log.AddInfo("{0} Eval����: �I�u�W�F�N�g�� {1} �ł��B�z��ł��̂ŃC�e���[�^������s���܂��B", Project.CurrentItem, item); item = EvalArray(item as Object[], memberStr); } else if(item is EcmItem){ Log.AddInfo("{0} Eval����: �I�u�W�F�N�g�� EcmItem {1} �ł��B", Project.CurrentItem, item); item = EvalItem(item as EcmItem, memberStr); } else if(item is EcmString){ Log.AddInfo("{0} Eval����: �I�u�W�F�N�g�� {1} {2} �ł��B", Project.CurrentItem, item.GetType(), item); item = EvalString(item as EcmString, memberStr); } else { Log.AddInfo("{0} Eval����: �I�u�W�F�N�g�� ������(����:{1})�ł��B", Project.CurrentItem, item.ToString().Length); EcmString newStr = new EcmString(item.ToString(), Project); newStr.Parser = this; item = EvalString(newStr, memberStr); } return item; }
private Object EvalArray(Object[] items, string memberStr) { Log.AddInfo("{0} �C�e���[�^�����̑Ώ�: {1}(�v�f��{2}) .{3}", Project.CurrentItem, items.GetType(), items.Length, memberStr); Object[] result = new Object[items.Length]; for(int i = 0; i < items.Length; i++){ Log.AddInfo("{0} �C�e���[�^����({1}/{2})", Project.CurrentItem, i+1, items.Length); Object o = Eval(items[i], memberStr); Log.AddInfo("{0} �C�e���[�^����{1}�̌���: {2}", Project.CurrentItem, i+1, o); if(o is EcmItem){ result[i] = o as EcmItem; } else { result[i] = new EcmString(o.ToString(), Project); } } return result; }