コード例 #1
0
        public string ToString(object data, INamedGraph graph, params object[] additionalData)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(ToString(debuggingEvent));
            sb.Append(" ");

            switch (debuggingEvent)
            {
            case SubruleDebuggingEvent.Add:
            case SubruleDebuggingEvent.Rem:
            case SubruleDebuggingEvent.Emit:
            case SubruleDebuggingEvent.Halt:
            case SubruleDebuggingEvent.Highlight:
            {
                string message = (string)data;
                sb.Append("\"");
                sb.Append(message);
                sb.Append("\"");
                for (int i = 0; i < additionalData.Length; ++i)
                {
                    sb.Append(" ");
                    sb.Append(EmitHelper.Clip(EmitHelper.ToStringAutomatic(additionalData[i], graph, false, null, null), 120));
                }
                break;
            }

            case SubruleDebuggingEvent.Match:
            {
                IMatches matches = (IMatches)data;
                sb.Append(matches.Producer.PackagePrefixedName);
                break;
            }

            case SubruleDebuggingEvent.New:
            case SubruleDebuggingEvent.Delete:
            case SubruleDebuggingEvent.Retype:
            case SubruleDebuggingEvent.SetAttributes:
            {
                IGraphElement elem = (IGraphElement)data;
                sb.Append(graph.GetElementName(elem));
                sb.Append(":");
                sb.Append(elem.Type.Name);
                if (additionalData.Length > 0)
                {
                    sb.Append(".");     // the attribute name
                    sb.Append((string)additionalData[0]);
                }
                break;
            }

            default:
                return("INTERNAL FAILURE, unknown SubruleDebuggingConfigurationRule");
            }

            sb.Append(" triggers ");
            sb.Append(ToString());

            return(sb.ToString());
        }
コード例 #2
0
        public string ToString(bool full)
        {
            StringBuilder sb = new StringBuilder();

            if (fakeEntry)
            {
                sb.Append("(");
            }
            switch (type)
            {
            case SubruleComputationType.Entry: sb.Append("Entry "); break;

            case SubruleComputationType.Exit: sb.Append("Exit "); break;

            case SubruleComputationType.Emit: sb.Append("Emit "); break;

            case SubruleComputationType.Halt: sb.Append("Halt "); break;

            case SubruleComputationType.Highlight: sb.Append("Highlight "); break;
            }
            sb.Append(message);
            for (int i = 0; i < parameters.Count; ++i)
            {
                sb.Append(" ");
                if (full)
                {
                    sb.Append(parameters[i]);
                }
                else
                {
                    if (type == SubruleComputationType.Entry && parameters.Count == 1 && message.Contains("exec")) // print full embedded exec that is entered
                    {
                        sb.Append(parameters[i]);
                    }
                    else
                    {
                        sb.Append(EmitHelper.Clip(parameters[i], 120));
                    }
                }
            }
            if (fakeEntry)
            {
                sb.Append(")");
            }
            return(sb.ToString());
        }