Inheritance: Yarn.BaseVariableStorage
Ejemplo n.º 1
0
        // adapted from YarnSpinnerEditorWindow.CompileAllScripts(), converted into coroutine
        IEnumerator CompileAllScripts()
        {
            foreach (var entry in checkResults)
            {
                var variableStorage = new Yarn.MemoryVariableStore();

                var dialog = new Dialogue(variableStorage);

                bool failed = false;

                dialog.LogErrorMessage = delegate(string message) {
                    Debug.LogWarningFormat("Error when compiling: {0}", message);
                    failed = true;
                };

                dialog.LogDebugMessage = delegate(string message) {
                    Debug.LogFormat("{0}", message);
                };

                try {
                    dialog.LoadString(entry.script.text, entry.script.name);
                } catch (System.Exception e) {
                    dialog.LogErrorMessage(e.Message);
                    break;
                }

                if (failed)
                {
                    Debug.LogErrorFormat("Failed to compile script {0}; stopping", entry.script.name);
                    break;
                }

                yield return(0);
            }
        }
Ejemplo n.º 2
0
        // Validates a single script.
        ValidationMessage[] ValidateFile(TextAsset script, Context analysisContext, out CheckerResult.State result)
        {
            // The list of messages we got from the compiler.
            var messageList = new List <ValidationMessage>();

            // A dummy variable storage; it won't be used, but Dialogue
            // needs it.
            var variableStorage = new Yarn.MemoryVariableStore();

            // The Dialog object is the compiler.
            var dialog = new Dialogue(variableStorage);

            // Whether compilation failed or not; this will be
            // set to true if any error messages are returned.
            bool failed = false;

            // Called when we get an error message. Convert this
            // message into a ValidationMessage and store it;
            // additionally, mark that this file failed compilation
            dialog.LogErrorMessage = delegate(string message) {
                var msg = new ValidationMessage();
                msg.type    = MessageType.Error;
                msg.message = message;
                messageList.Add(msg);

                // any errors means this validation failed
                failed = true;
            };

            // Called when we get an error message. Convert this
            // message into a ValidationMessage and store it
            dialog.LogDebugMessage = delegate(string message) {
                var msg = new ValidationMessage();
                msg.type    = MessageType.Info;
                msg.message = message;
                messageList.Add(msg);
            };

            // Attempt to compile this script. Any exceptions will result
            // in an error message
            try {
                dialog.LoadString(script.text, script.name);
            } catch (System.Exception e) {
                dialog.LogErrorMessage(e.Message);
            }

            // Once compilation has finished, run the analysis on it
            dialog.Analyse(analysisContext);

            // Did it succeed or not?
            if (failed)
            {
                result = CheckerResult.State.Failed;
            }
            else
            {
                result = CheckerResult.State.Passed;
            }

            // All done.
            return(messageList.ToArray());
        }