Ejemplo n.º 1
0
 public override Node ExitPlayerNameAttribute(Production node)
 {
     var values = GetChildValues(node);
     if(values.Count != 0)
         node.AddValue(new PlayerName() { Value = (string)values[0] });
     return node;
 }
Ejemplo n.º 2
0
        public override Node ExitExamples(Production node)
        {
            var table = GetChildValues(node).Cast<Table>().Single();

            node.AddValue(table);
            return node;
        }
Ejemplo n.º 3
0
 /**
  * <summary>Called when adding a child to a parse tree
  * node.</summary>
  *
  * <param name='node'>the parent node</param>
  * <param name='child'>the child node, or null</param>
  *
  * <exception cref='ParseException'>if the node analysis
  * discovered errors</exception>
  */
 public override void Child(Production node, Node child)
 {
     switch (node.Id) {
     case (int) IrfConstants.IRF_DOCUMENT:
         ChildIrfDocument(node, child);
         break;
     case (int) IrfConstants.ROOT_NODE:
         ChildRootNode(node, child);
         break;
     case (int) IrfConstants.USER_NODE:
         ChildUserNode(node, child);
         break;
     case (int) IrfConstants.PLAYER_NOTE_NODE:
         ChildPlayerNoteNode(node, child);
         break;
     case (int) IrfConstants.PLAYER_NAME_ATTRIBUTE:
         ChildPlayerNameAttribute(node, child);
         break;
     case (int) IrfConstants.NOTE_TEXT_ATTRIBUTE:
         ChildNoteTextAttribute(node, child);
         break;
     case (int) IrfConstants.TIMESTAMP_ATTRIBUTE:
         ChildTimestampAttribute(node, child);
         break;
     case (int) IrfConstants.CLASSIFICATION_ATTRIBUTE:
         ChildClassificationAttribute(node, child);
         break;
     }
 }
Ejemplo n.º 4
0
        public override Node ExitFeature(Production node)
        {
            var values = GetChildValues(node);

            var tags = (IEnumerable<string>) null;
            int summaryLinesIndex = 0;
            if (values[0] is IEnumerable<string>)
            {
                tags = values[0] as IEnumerable<string>;
                summaryLinesIndex++;
            }

            var summaryLines = values[summaryLinesIndex] as IList<LineValue>;
            var background = values[summaryLinesIndex + 1] as Background;
            var featureIndex = summaryLinesIndex + (background == null ? 1 : 2);

            // Rest of values are FeatureItems
            var items = values.GetRange(featureIndex, values.Count - featureIndex).Cast<FeatureItem>().ToList();

            var feature = new Feature(summaryLines, background, items, tags)
            {
                // TODO: Should this get a value?
                Description = ""
            };

            node.AddValue(feature);
            return node;
        }
Ejemplo n.º 5
0
 public override Node ExitClassificationAttribute(Production node)
 {
     var values = GetChildValues(node);
     if (values.Count != 0)
     {
         Classification value = (Classification)int.Parse((string)values[0]);
         node.AddValue(value);
     }
     return node;
 }
Ejemplo n.º 6
0
        public override Node ExitText(Production node)
        {
            Node child = null;
            for (int i = 0; i < node.GetChildCount(); i++)
            {
                child = node.GetChildAt(i);
                HTML = HTML + child.GetValue(0);
                //System.Console.WriteLine();
            }

            return base.ExitText(node);
        }
Ejemplo n.º 7
0
 /**
  * <summary>Called when adding a child to a parse tree
  * node.</summary>
  *
  * <param name='node'>the parent node</param>
  * <param name='child'>the child node, or null</param>
  *
  * <exception cref='ParseException'>if the node analysis
  * discovered errors</exception>
  */
 public override void Child(Production node, Node child)
 {
     switch (node.Id) {
     case (int) CommandGrammarConstants.COMMANDS:
         ChildCommands(node, child);
         break;
     case (int) CommandGrammarConstants.COMMAND:
         ChildCommand(node, child);
         break;
     case (int) CommandGrammarConstants.EXPRESSION:
         ChildExpression(node, child);
         break;
     }
 }
Ejemplo n.º 8
0
        public override Node ExitBackground(Production node)
        {
            var values = GetChildValues(node);

            // First value is either title from header or first FeatureStep
            var title = values[0] as string;
            var featureIndex = title == null ? 0 : 1;

            // Rest of values are FeatureSteps
            var steps = values.GetRange(featureIndex, values.Count - featureIndex).Cast<Step>().ToList();

            var background = new Background(steps)
            {
                Title = title,
                LineNumber = node.StartLine
            };

            node.AddValue(background);
            return node;
        }
Ejemplo n.º 9
0
        public override Node ExitPlayerNoteNode(Production node)
        {
            var values = GetChildValues(node);

            if (values.Count != 0)
            {
                IrfNote note = new IrfNote();
                note.PlayerName = (PlayerName)values[0];

                for (int i = 1; i < values.Count; i++)
                {
                    object value = values[i];
                    if (value is NoteText)
                        note.NoteText = (NoteText)value;
                    else if (value is DateTime)
                        note.DateTime = (DateTime)value;
                    else if (value is Classification)
                        note.Classification = (Classification)value;
                }
                node.AddValue(note);
            }

            return node;
        }
Ejemplo n.º 10
0
 public override Node ExitVoiceAction(Production node)
 {
     node.Values.AddRange(GetChildValues(node));
     return node;
 }
Ejemplo n.º 11
0
        public override Node ExitValue(Production node)
        {
            System.Collections.ArrayList values = GetChildValues (node);
            if (values.Count > 1) {
                //position=value
                string positionValue = "";
                for (int i = 0; i < values.Count; i++) {
                    positionValue += values [i];
                }
                node.Values.Add (positionValue);
            } else {
                node.Values.AddRange(GetChildValues(node));
            }

            /*
            Console.Write ("Value: ");
            for (int i = 0; i < node.Values.Count; i++) {
                Console.Write ("[" + i + "]" + node.Values[i] + " ");
            }
            Console.Write ("\n");
            */

            return node;
        }
Ejemplo n.º 12
0
        public override Node ExitOption(Production node)
        {
            node.Values.AddRange(GetChildValues(node));

            //Option action
            Action optionAction = new Action (ScriptKeyword.OPTION, new Dictionary<string, string>(){
                {ScriptKeyword.ID, node.Values[1].ToString()}
            });
            actions.Add (optionAction);

            /*
            Console.Write ("Option: ");
            for (int i = 0; i < node.Values.Count; i++) {
                Console.Write ("[" + i + "]" + node.Values[i] + " ");
            }
            Console.Write ("\n");
            */

            return node;
        }
Ejemplo n.º 13
0
 public override Node ExitTableColumn(Production node)
 {
     var cell = GetChildValues(node).Cast<string>().Single().Trim();
     var column = new Cell(cell);
     node.AddValue(column);
     return node;
 }
Ejemplo n.º 14
0
        public override Node ExitStep(Production node)
        {
            var values = GetChildValues(node);
            if (values.Count > 0)
            {
                var kindWord = (string) values[0];
                CurrentStepKind = LookupStepKind(kindWord);
                var stepBody = (string) values[1];
                var table = (Table) null;
                if (values.Count > 2)
                    table = (Table)values[3];

                var step = new Step(table)
                {
                    KindWord = kindWord,
                    Kind = CurrentStepKind,
                    Body = stepBody,
                    LineNumber = node.StartLine
                };
                node.AddValue(step);
            }
            return node;
        }
Ejemplo n.º 15
0
 public override Node ExitTimestampAttribute(Production node)
 {
     var values = GetChildValues(node);
     if (values.Count != 0)
     {
         long seconds = long.Parse((string)values[0]);
         node.AddValue(TimestampHelper.GetDateTime(seconds));
     }
     return node;
 }
Ejemplo n.º 16
0
        public override Node ExitSummaryLine(Production node)
        {
            var text = GetChildValues(node).Cast<string>().SingleOrDefault();
            if (!string.IsNullOrEmpty(text))
            {
                var lineValue = new LineValue
                {
                    Text = text.Trim(),
                    LineNumber = node.StartLine
                };

                node.AddValue(lineValue);
            }
            return node;
        }
Ejemplo n.º 17
0
 public override Node ExitBackgroundHeader(Production node)
 {
     node.AddValue(GetTitle(node));
     return node;
 }
Ejemplo n.º 18
0
        public override Node ExitText(Production node)
        {
            var text = string.Concat(GetChildValues(node).Cast<string>().ToArray());

            node.AddValue(text.Trim());

            return node;
        }
Ejemplo n.º 19
0
 public override Node ExitTags(Production node)
 {
     var tags = GetChildValues(node).Cast<string>().ToArray();
     node.AddValue(tags);
     return node;
 }
Ejemplo n.º 20
0
        public override Node ExitTableRow(Production node)
        {
            // Ignore whitespace and grab columms
            var columns = GetChildValues(node).Cast<object>().Where(o => o is Cell).Cast<Cell>().ToList();

            var row = new Row(columns);
            node.AddValue(row);
            return node;
        }
Ejemplo n.º 21
0
 public override void EnterExamplesHeader(Production node)
 {
     base.EnterExamplesHeader(node);
 }
Ejemplo n.º 22
0
 public override void EnterBlock(Production node)
 {
     //Label this position for parameter on this focusAction
     actions.Add(emptyFocusAction);
     return;
 }
Ejemplo n.º 23
0
        public override Node ExitAction(Production node)
        {
            node.Values.AddRange(GetChildValues(node));

            if(node.Values.Count <= 1){
                //detect >|>> to set the mode
                string mode = "";
                if (node.Values [0].ToString ().Contains (ScriptKeyword.CLICK_NEXT_DIALOGUE_PAGE)) {
                    mode = ScriptKeyword.CLICK_NEXT_DIALOGUE_PAGE;
                } else if(node.Values [0].ToString ().Contains (ScriptKeyword.CLICK)) {
                    mode = ScriptKeyword.CLICK;
                }
                //remove >|>> from the content
                string content = node.Values [0].ToString ();
                content = content.Replace (ScriptKeyword.CLICK, string.Empty);
                //Text Action
                Action textAction = new Action (ScriptKeyword.TEXT, new Dictionary<string, string>(){
                    {ScriptKeyword.CONTENT, content},
                    {ScriptKeyword.MODE, mode}
                });
                actions.Add (textAction);
            }else if(node.Values[0].Equals(ScriptKeyword.VOICE)){
                //Voice Action
                Dictionary<string, string> parameters = new Dictionary<string, string>();
                for(int i=0; i<(node.Values.Count - 2)/3 ;i++){
                    parameters.Add(node.Values[i*3+1].ToString(), node.Values[i*3+3].ToString());
                }

                //detect >|>> to set the mode
                string mode = "";
                if (node.Values[node.Values.Count-1].ToString().Contains (ScriptKeyword.CLICK_NEXT_DIALOGUE_PAGE)) {
                    mode = ScriptKeyword.CLICK_NEXT_DIALOGUE_PAGE;
                } else if(node.Values[node.Values.Count-1].ToString().Contains (ScriptKeyword.CLICK)) {
                    mode = ScriptKeyword.CLICK;
                }
                //remove >|>> from the content
                string content = node.Values[node.Values.Count-1].ToString();
                content = content.Replace (ScriptKeyword.CLICK, string.Empty);

                parameters.Add (ScriptKeyword.CONTENT, content);
                parameters.Add (ScriptKeyword.MODE, mode);
                Action voiceAction = new Action (ScriptKeyword.VOICE, parameters);
                actions.Add (voiceAction);
            }else{
                //Other Action
                Dictionary<string, string> parameters = new Dictionary<string, string>();
                for(int i=0; i<(node.Values.Count - 2)/3 ;i++){
                    parameters.Add(node.Values[i*3+1].ToString(), node.Values[i*3+3].ToString());
                }
                Action otherAction = new Action (node.Values[0].ToString(), parameters);
                actions.Add (otherAction);
            }

            /*
            Console.Write ("Action: ");
            for (int i = 0; i < node.Values.Count; i++) {
                Console.Write ("[" + i + "]" + node.Values[i] + " ");
            }
            Console.Write ("\n");
            */
            //node.PrintTo (Console.Out);

            return node;
        }
Ejemplo n.º 24
0
        public override Node ExitBlock(Production node)
        {
            node.Values.AddRange(GetChildValues(node));

            /*
            Console.Write ("Block: ");
            for (int i = 0; i < node.Values.Count; i++) {
                Console.Write ("[" + i + "]" + node.Values[i] + " ");
            }
            Console.Write ("\n");
            */

            Action focusAction = new Action (ScriptKeyword.FOCUS, new Dictionary<string, string>(){
                {ScriptKeyword.ID, node.Values[0].ToString()}
            });
            int index = actions.IndexOf (emptyFocusAction);
            actions [index] = focusAction;

            return node;
        }
Ejemplo n.º 25
0
        public override Node ExitUserNode(Production node)
        {
            var values = GetChildValues(node);

            if (values.Count != 0)
            {
                IrfUserData userData = new IrfUserData();
                userData.UserName = (string)values[0];

                for (int i = 1; i < values.Count; i++)
                    userData.Add((IrfNote)values[i]);

                node.AddValue(userData);
            }

            return node;
        }
Ejemplo n.º 26
0
        public override Node ExitFlag(Production node)
        {
            node.Values.AddRange(GetChildValues(node));

            //Flag action
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            int count = (node.Values.Count - 1) / 7;
            parameters.Add (ScriptKeyword.COUNT, ""+count);
            for(int i=0; i<count ;i++){
                parameters.Add(ScriptKeyword.OPTION_+(i+1), node.Values[i*7+1].ToString());
                parameters.Add(ScriptKeyword.OPTION_ID_+(i+1), node.Values[i*7+3].ToString());
                parameters.Add(ScriptKeyword.OPTION_SRC_+(i+1), node.Values[i*7+5].ToString());
            }
            Action flagAction = new Action (ScriptKeyword.FLAG, parameters);
            actions.Add (flagAction);

            /*
            Console.Write ("Flag: ");
            for (int i = 0; i < node.Values.Count; i++) {
                Console.Write ("[" + i + "]" + node.Values[i] + " ");
            }
            Console.Write ("\n");
            */

            return node;
        }
Ejemplo n.º 27
0
 public override Node ExitScenarioOutlineHeader(Production node)
 {
     node.AddValue(GetTitle(node));
     return node;
 }
Ejemplo n.º 28
0
        public override Node ExitJump(Production node)
        {
            node.Values.AddRange(GetChildValues(node));

            //Jump action
            Action jumpAction = new Action (ScriptKeyword.JUMP, new Dictionary<string, string>(){
                {ScriptKeyword.SRC, node.Values[1].ToString()}
            });
            actions.Add (jumpAction);

            /*
            Console.Write ("Jump: ");
            for (int i = 0; i < node.Values.Count; i++) {
                Console.Write ("[" + i + "]" + node.Values[i] + " ");
            }
            Console.Write ("\n");
            */

            return node;
        }
Ejemplo n.º 29
0
        public override Node ExitRootNode(Production node)
        {
            var values = GetChildValues(node);

            if (values.Count != 0)
            {
                irfObject = new IrfObject();
                for (int i = 0; i < values.Count; i++)
                    irfObject.Add((IrfUserData)values[i]);
            }

            return node;
        }
Ejemplo n.º 30
0
        public override Node ExitTable(Production node)
        {
            var rows = GetChildValues(node).Cast<Row>().ToList();

            var table = new Table(rows);

            node.AddValue(table);
            return node;
        }