Exemple #1
0
        public SourceWriter WriteCode(IEnumerable <Snippet> snippets)
        {
            // compact snippets so vs language service doesn't have to
            var     compacted = new Snippets(snippets.Count());
            Snippet prior     = null;

            foreach (var snippet in snippets)
            {
                if (prior != null && SnippetAreConnected(prior, snippet))
                {
                    prior = new Snippet
                    {
                        Value = prior.Value + snippet.Value,
                        Begin = prior.Begin,
                        End   = snippet.End
                    };
                    continue;
                }
                if (prior != null)
                {
                    compacted.Add(prior);
                }
                prior = snippet;
            }
            if (prior != null)
            {
                compacted.Add(prior);
            }

            // write them out and keep mapping-to-spark source information
            foreach (var snippet in compacted)
            {
                if (snippet.Begin != null)
                {
                    Mappings.Add(new SourceMapping
                    {
                        Source      = snippet,
                        OutputBegin = Length,
                        OutputEnd   = Length + snippet.Value.Length
                    });
                }
                Write(snippet.Value);
            }

            return(this);
        }
        public SourceWriter WriteCode(IEnumerable <Snippet> snippets)
        {
            Snippets snippets2 = new Snippets(snippets.Count <Snippet>());
            Snippet  first     = null;

            foreach (Snippet snippet2 in snippets)
            {
                if ((first != null) && SnippetAreConnected(first, snippet2))
                {
                    first = new Snippet {
                        Value = first.Value + snippet2.Value,
                        Begin = first.Begin,
                        End   = snippet2.End
                    };
                }
                else
                {
                    if (first != null)
                    {
                        snippets2.Add(first);
                    }
                    first = snippet2;
                }
            }
            if (first != null)
            {
                snippets2.Add(first);
            }
            foreach (Snippet snippet4 in snippets2)
            {
                if (snippet4.Begin != null)
                {
                    SourceMapping item = new SourceMapping {
                        Source      = snippet4,
                        OutputBegin = this.Length,
                        OutputEnd   = this.Length + snippet4.Value.Length
                    };
                    this.Mappings.Add(item);
                }
                this.Write(snippet4.Value);
            }
            return(this);
        }
Exemple #3
0
        internal static AttributeNode AddMethodCallingToAttributeValue(AttributeNode node, string method)
        {
            var snippets = new Snippets {new Snippet {Value = method + "("}};
            snippets.AddRange(node.AsCodeInverted());
            snippets.Add(new Snippet {Value= ")"});

            var builder = new ExpressionBuilder();
            builder.AppendExpression(snippets);
            var listNodes=new List<Node> {new ExpressionNode(snippets)};
            return new AttributeNode(node.Name, listNodes);
        }
        private void GetSnippets()
        {
            var snippets = new List <Snippet>();

            snippets = _snippetRepo.GetAll();

            foreach (var snippet in snippets)
            {
                var user = _userRepo.GetUserById(snippet.AuthorID);
                Snippets.Add(snippet, user);
            }
        }
        public override Snippets ParseFragment(Position begin, Position end)
        {
            ParseResult <Snippets> result = this._grammar.Expression(begin.Constrain(end));
            int count = result.Rest.PotentialLength();

            if (count == 0)
            {
                return(result.Value);
            }
            Snippets snippets = new Snippets(result.Value);
            Snippet  item     = new Snippet {
                Value = result.Rest.Peek(count),
                Begin = result.Rest,
                End   = result.Rest.Advance(count)
            };

            snippets.Add(item);
            return(snippets);
        }
Exemple #6
0
        public bool AddSnippet(object sender, AbstractSnippet snippet)
        {
            // Prevents duplicate sources
            if (Snippets.Contains(snippet))
            {
                return(false);
            }

            Snippets.Add(snippet);

            // Update settings to include newly added snippet
            var snippetsOfType = Snippets.Where(s => s.GetType() == snippet.GetType());

            AppSettings.PutAndSave(GetKey(snippet), snippetsOfType);

            // Notify listeners that a new snippet was added
            Listeners.ForEach(listener => listener.SnippetAdded(sender, this, snippet));

            return(true);
        }
        public static Snippets AsCode(this AttributeNode attr)
        {
            //TODO: recapture original position to get correct files/offsets in the result
            var position = new Position(new SourceContext(attr.Value));
            var result = _grammar.Expression(position);

            var unparsedLength = result.Rest.PotentialLength();
            if (unparsedLength == 0)
                return result.Value;

            var snippets = new Snippets(result.Value);

            snippets.Add(new Snippet
                             {
                                 Value = result.Rest.Peek(unparsedLength),
                                 Begin = result.Rest,
                                 End = result.Rest.Advance(unparsedLength)
                             });

            return snippets;
        }
        public override Snippets ParseFragment(Position begin, Position end)
        {
            var result = _grammar.Expression(begin.Constrain(end));

            var unparsedLength = result.Rest.PotentialLength();

            if (unparsedLength == 0)
            {
                return(result.Value);
            }

            var snippets = new Snippets(result.Value);

            snippets.Add(new Snippet
            {
                Value = result.Rest.Peek(unparsedLength),
                Begin = result.Rest,
                End   = result.Rest.Advance(unparsedLength)
            });

            return(snippets);
        }
Exemple #9
0
 public async Task snippets(params string[] args)
 {
     if (!HasExecutePermission)
         return;
     if (args.Length == 0)
     {
         EmbedBuilder b = new EmbedBuilder()
         {
             Title = "Ticket Snippets",
             Color = Color.DarkPurple,
             Description = "To add a snippet:\n`!snippets add <SnippetName> <SnippetValue>`\nTo Remove a snippet:\n`!snippets remove <SnippetName>`"
         };
         foreach(var snip in Snippets)
             b.AddField(snip.Key, snip.Value);
         await Context.Channel.SendMessageAsync("", false, b.Build());
     }
     else
     {
         if(args.Length >= 2)
         {
             switch (args[0].ToLower())
             {
                 case "add":
                     {
                         string snip = args[1];
                         string snipval = string.Join(' ', args.Skip(2));
                         if (!Snippets.ContainsKey(snip))
                         {
                             if(snipval.Length > 1024)
                             {
                                 await Context.Channel.SendMessageAsync("", false, new EmbedBuilder()
                                 {
                                     Title = $"wOaH bUddY",
                                     Description = $"Your snippet is tooooooo long! try adding one that less than 1000 characters"
                                 }.Build());
                                 return;
                             }
                             Snippets.Add(snip, snipval);
                             Global.SaveSnippets();
                             await Context.Channel.SendMessageAsync("", false, new EmbedBuilder()
                             {
                                 Title = $"Added **{snip}**",
                                 Description = $"Succesfully added **{snip}** to the snippets"
                             }.Build());
                         }
                         else
                         {
                             await Context.Channel.SendMessageAsync("", false, new EmbedBuilder()
                             {
                                 Title = $"That snippet exists!",
                                 Description = $"someone already added that snippet!"
                             }.Build());
                         }
                     }
                     break;
                 case "remove":
                     {
                         string snip = args[1];
                         if (Snippets.ContainsKey(snip))
                         {
                             //remove snippet
                             Snippets.Remove(snip);
                             Global.SaveSnippets();
                             await Context.Channel.SendMessageAsync("", false, new EmbedBuilder()
                             {
                                 Title = $"Removed **{snip}**",
                                 Description = $"Successfully removed the snippet {snip}",
                                 Color = Color.Green
                             }.Build());
                         }
                         else
                         {
                             await Context.Channel.SendMessageAsync("", false, new EmbedBuilder()
                             {
                                 Title = "uhm.. wat?",
                                 Description = "That snippet doesnt exist, please do `!snippets` to view the current snippets!",
                                 Color = Color.Red
                             }.Build());
                             return;
                         }
                     }
                     break;
                 default:
                     {
                         await Context.Channel.SendMessageAsync("", false, new EmbedBuilder()
                         {
                             Title = "uhm.. wat?",
                             Description = "that command is unreconized :/",
                             Color = Color.Red
                         }.Build());
                     }
                     break;
             }
         }
     }
 }
Exemple #10
0
        public SourceWriter WriteCode(IEnumerable<Snippet> snippets)
        {
            // compact snippets so vs language service doesn't have to
            var compacted = new Snippets(snippets.Count());
            Snippet prior = null;
            foreach (var snippet in snippets)
            {
                if (prior != null && SnippetAreConnected(prior, snippet))
                {
                    prior = new Snippet
                    {
                        Value = prior.Value + snippet.Value,
                        Begin = prior.Begin,
                        End = snippet.End
                    };
                    continue;
                }

                if (prior != null)
                    compacted.Add(prior);
                prior = snippet;
            }

            if (prior != null)
                compacted.Add(prior);

            // write them out and keep mapping-to-spark source information
            foreach (var snippet in compacted)
            {
                if (snippet.Begin != null)
                {
                    Mappings.Add(new SourceMapping
                    {
                        Source = snippet,
                        OutputBegin = Length,
                        OutputEnd = Length + snippet.Value.Length
                    });
                }

                Write(snippet.Value);
            }

            return this;
        }
Exemple #11
0
        public override Snippets ParseFragment(Position begin, Position end)
        {
            var result = _grammar.Expression(begin.Constrain(end));

            var unparsedLength = result.Rest.PotentialLength();
            if (unparsedLength == 0)
                return result.Value;

            var snippets = new Snippets(result.Value);

            snippets.Add(new Snippet
            {
                Value = result.Rest.Peek(unparsedLength),
                Begin = result.Rest,
                End = result.Rest.Advance(unparsedLength)
            });

            return snippets;
        }
Exemple #12
0
        /// <summary>
        /// Initializes the code snippets.
        /// </summary>
        private void InitializeSnippets()
        {
            // "for (|;;)\n{\n}"
            Snippet forSnippet = new Snippet();

            forSnippet.Elements.Add(new SnippetTextElement {
                Text = "for ("
            });
            forSnippet.Elements.Add(new SnippetCaretElement());
            forSnippet.Elements.Add(new SnippetTextElement {
                Text = ";;)\n{\n}"
            });

            // "if (|)\n{\n}"
            Snippet ifSnippet = new Snippet();

            ifSnippet.Elements.Add(new SnippetTextElement {
                Text = "if ("
            });
            ifSnippet.Elements.Add(new SnippetCaretElement());
            ifSnippet.Elements.Add(new SnippetTextElement {
                Text = ")\n{\n}"
            });

            // "while (|)\n{\n}"
            Snippet whileSnippet = new Snippet();

            whileSnippet.Elements.Add(new SnippetTextElement {
                Text = "while ("
            });
            whileSnippet.Elements.Add(new SnippetCaretElement());
            whileSnippet.Elements.Add(new SnippetTextElement {
                Text = ")\n{\n}"
            });

            // "technique |\n{\npass\n{\n}\n}"
            Snippet techniqueSnippet = new Snippet();

            techniqueSnippet.Elements.Add(new SnippetTextElement {
                Text = "technique "
            });
            techniqueSnippet.Elements.Add(new SnippetCaretElement());
            techniqueSnippet.Elements.Add(new SnippetTextElement {
                Text = "\n{\npass\n{\n}\n}"
            });

            // "pass |\n{\n}"
            Snippet passSnippet = new Snippet();

            passSnippet.Elements.Add(new SnippetTextElement {
                Text = "pass "
            });
            passSnippet.Elements.Add(new SnippetCaretElement());
            passSnippet.Elements.Add(new SnippetTextElement {
                Text = "\n{\n}"
            });


            SnippetCompletionData[] snippets =
            {
                new SnippetCompletionData("for",       "for loop",     MultiColorGlyphs.Snippet, forSnippet),
                new SnippetCompletionData("if",        "if statement", MultiColorGlyphs.Snippet, ifSnippet),
                new SnippetCompletionData("while",     "while loop",   MultiColorGlyphs.Snippet, whileSnippet),
                new SnippetCompletionData("technique", null,           MultiColorGlyphs.Snippet, techniqueSnippet),
                new SnippetCompletionData("pass",      null,           MultiColorGlyphs.Snippet, passSnippet),
            };

            foreach (SnippetCompletionData snippet in snippets)
            {
                Snippets.Add(snippet.Text, snippet);
            }
        }
Exemple #13
0
 public void OnAdd(object param)
 {
     Snippets.Add(new Snippet());
 }