public void Parse_TextAndEmphasis_Successfully() { var text = "break the ice _go for broke_"; var tokens = tokenizer.Tokenize(text); var textNode = new TextNode(); textNode.Add(new WordNode(WordType.SimpleWord, "break")); textNode.Add(new WordNode(WordType.SpacedWord, " the")); textNode.Add(new WordNode(WordType.SpacedWord, " ice")); textNode.Add(new WordNode(WordType.Space, " ")); var emphasisNode = new TextNode(TextType.Emphasis); emphasisNode.Add(new WordNode(WordType.SimpleWord, "go")); emphasisNode.Add(new WordNode(WordType.SpacedWord, " for")); emphasisNode.Add(new WordNode(WordType.SpacedWord, " broke")); var expected = new SentenceNode(); expected.Add(textNode); expected.Add(emphasisNode); Parser.ParseSentence(tokens) .Should() .BeEquivalentTo(expected); }
public static SentenceNode ParseSentence(Deque <Token> tokens) { var sentence = new SentenceNode(); while (tokens.Count > 0) { var currentToken = tokens.PeekFirst(); TextNode newText; switch (currentToken.Type) { case TokenType.Text: case TokenType.Num: case TokenType.Space: newText = ParseText(tokens); sentence.Add(newText); break; case TokenType.Underscore: newText = ParseEmphasisText(tokens); sentence.Add(newText); break; case TokenType.DoubleUnderscore: newText = ParseBoldText(tokens); sentence.Add(newText); break; default: throw new NotSupportedException(); } } return(sentence); }
public void Parse_TextEmphasisAndBold_Successfully() { var text = "_the wrong_ barking up __tree__"; var tokens = tokenizer.Tokenize(text); var textNode = new TextNode(); textNode.Add(new WordNode(WordType.SpacedWord, " barking")); textNode.Add(new WordNode(WordType.SpacedWord, " up")); textNode.Add(new WordNode(WordType.Space, " ")); var emphasisNode = new TextNode(TextType.Emphasis); emphasisNode.Add(new WordNode(WordType.SimpleWord, "the")); emphasisNode.Add(new WordNode(WordType.SpacedWord, " wrong")); var boldNode = new TextNode(TextType.Bold); boldNode.Add(new WordNode(WordType.SimpleWord, "tree")); var expected = new SentenceNode(); expected.Add(emphasisNode); expected.Add(textNode); expected.Add(boldNode); Parser.ParseSentence(tokens) .Should() .BeEquivalentTo(expected); }
public override void OnBodyGUI() { base.OnBodyGUI(); SentenceNode node = target as SentenceNode; DialogNodeGraph graph = node.graph as DialogNodeGraph; if (GUILayout.Button("OpenSentenceEdiot")) { Debug.Log("OpenEditor"); } }
private static string GetNodeValue(SentenceNode sentenceNode) { var stringBuilder = new StringBuilder(); foreach (var text in sentenceNode.Texts) { stringBuilder.Append(TextBuilder.Build(text)); } return(stringBuilder.ToString()); }
public void Parse_SimpleText_Successfully() { var text = "hard pill to swallow"; var tokens = tokenizer.Tokenize(text); var textNode = new TextNode(); textNode.Add(new WordNode(WordType.SimpleWord, "hard")); textNode.Add(new WordNode(WordType.SpacedWord, " pill")); textNode.Add(new WordNode(WordType.SpacedWord, " to")); textNode.Add(new WordNode(WordType.SpacedWord, " swallow")); var expected = new SentenceNode(); expected.Add(textNode); Parser.ParseSentence(tokens) .Should() .BeEquivalentTo(expected); }
public void Parse_SingleTextStartingWithSpace_Successfully() { var text = " an arm and a leg"; var tokens = tokenizer.Tokenize(text); var textNode = new TextNode(); textNode.Add(new WordNode(WordType.SpacedWord, " an")); textNode.Add(new WordNode(WordType.SpacedWord, " arm")); textNode.Add(new WordNode(WordType.SpacedWord, " and")); textNode.Add(new WordNode(WordType.SpacedWord, " a")); textNode.Add(new WordNode(WordType.SpacedWord, " leg")); var expected = new SentenceNode(); expected.Add(textNode); Parser.ParseSentence(tokens) .Should() .BeEquivalentTo(expected); }
public void Parse_SingleTextStartingAndEndingWithSpace_Successfully() { var text = " everything but the kitchen sink "; var tokens = tokenizer.Tokenize(text); var textNode = new TextNode(); textNode.Add(new WordNode(WordType.SpacedWord, " everything")); textNode.Add(new WordNode(WordType.SpacedWord, " but")); textNode.Add(new WordNode(WordType.SpacedWord, " the")); textNode.Add(new WordNode(WordType.SpacedWord, " kitchen")); textNode.Add(new WordNode(WordType.SpacedWord, " sink")); textNode.Add(new WordNode(WordType.Space, " ")); var expected = new SentenceNode(); expected.Add(textNode); Parser.ParseSentence(tokens) .Should() .BeEquivalentTo(expected); }
public void Parse_SingleTextEndingWithSpace_Successfully() { var text = "barking up the wrong tree "; var tokens = tokenizer.Tokenize(text); var textNode = new TextNode(); textNode.Add(new WordNode(WordType.SimpleWord, "barking")); textNode.Add(new WordNode(WordType.SpacedWord, " up")); textNode.Add(new WordNode(WordType.SpacedWord, " the")); textNode.Add(new WordNode(WordType.SpacedWord, " wrong")); textNode.Add(new WordNode(WordType.SpacedWord, " tree")); textNode.Add(new WordNode(WordType.Space, " ")); var expected = new SentenceNode(); expected.Add(textNode); Parser.ParseSentence(tokens) .Should() .BeEquivalentTo(expected); }
public static string Build(SentenceNode sentenceNode) { return($"{GetNodeValue(sentenceNode)}"); }
public string Generate(SentenceNode abstractSyntaxTree) { return(SentenceBuilder.Build(abstractSyntaxTree)); }