Пример #1
0
    private IEnumerator SendSuggestion()
    {
        _suggestionState = SuggestionState.Sending;

        var form = new WWWForm();

        form.AddField("email", StringEmail);
        form.AddField("suggestion", _suggestionText);

#pragma warning disable 618
        var www = new WWW("http://squirrelyjones.com/boundingbox/materialize/processSuggestion.php", form);
#pragma warning restore 618
        yield return(www);

        var returnText = www.text;
        Debug.Log(www.text);

        if (returnText.Contains("success"))
        {
            _suggestionState = SuggestionState.Sent;
            _suggestionText  = "";
        }
        else
        {
            _suggestionState = SuggestionState.Failed;
        }

        yield return(new WaitForSeconds(0.01f));
    }
Пример #2
0
        public IEnumerable <IQuerySuggestion> Compute(SuggestionState state)
        {
            var expected = state.Expected.Find(item =>
                                               item.RuleIndices[0] == QueryParser.RULE_source &&
                                               item.Tokens.Contains(QueryLexer.ID));

            // only suggest view identifiers in the select part of a query and an identifier
            // is expected (note, if the caret is in an identifier, it will replace it)
            if (expected == null)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            // We don't want to suggest views if the caret is in a token which is not an
            // identifier.
            if (state.Caret.ParentToken != null && state.Caret.ParentToken.Type != QueryLexer.ID)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            var prefix = state.Caret.ParentPrefix ?? "";

            return
                (from view in _views
                 where view.Name.IndexOf(prefix, StringComparison.CurrentCultureIgnoreCase) >= 0
                 select new IdentifierSuggestion(state.Caret, view.Name, CategoryName));
        }
        public IEnumerable <IQuerySuggestion> Compute(SuggestionState state)
        {
            var expected = state.Expected.Find(item =>
                                               item.RuleIndices[0] == QueryParser.RULE_factor && (
                                                   item.Tokens.Contains(QueryLexer.STRING) ||
                                                   item.Tokens.Contains(QueryLexer.INT) ||
                                                   item.Tokens.Contains(QueryLexer.REAL)
                                                   ));

            // only suggest attribute values in an expression factor
            if (expected == null)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            var parts = state.Caret.SplitParent();

            if (parts.Suffix.Length > 0 && (
                    parts.Suffix[parts.Suffix.Length - 1] == '\n' ||
                    parts.Suffix[parts.Suffix.Length - 1] == '\r'))
            {
                parts.Suffix = parts.Suffix.Substring(0, parts.Suffix.Length - 1);
            }

            return(_listener.AttributeNames
                   .SelectMany(name => _attributeCache.GetValues(name))
                   .Where(item => ContainsPrefixSuffix(item, parts.Prefix, parts.Suffix))
                   .Select(item => new ValueSuggestion(state.Caret, item)));
        }
Пример #4
0
    IEnumerator SendSuggestion()
    {
        suggestionState = SuggestionState.Sending;

        // Create a Web Form
        WWWForm form = new WWWForm();

        form.AddField("email", stringEmail);
        form.AddField("suggestion", SuggestionText);

        //WWW www = new WWW("http://boundingboxsoftware.com/materialize/processSuggestion.php", form);
        WWW www = new WWW("http://squirrelyjones.com/boundingbox/materialize/processSuggestion.php", form);

        yield return(www);

        string returnText = www.text;

        Debug.Log(www.text);

        if (returnText.Contains("success"))
        {
            suggestionState = SuggestionState.Sent;
            SuggestionText  = "";
        }
        else
        {
            suggestionState = SuggestionState.Failed;
        }

        yield return(new WaitForSeconds(0.01f));
    }
Пример #5
0
        public IEnumerable <IQuerySuggestion> Compute(SuggestionState state)
        {
            if (!state.ExpectedTokens.Contains(_tokenType))
            {
                yield break;
            }

            // the caret is not in any other token
            if (state.Caret.ParentToken == null)
            {
                foreach (var value in _values)
                {
                    yield return(new ReplaceSuggestion(state.Caret, value, value, _category));
                }
            }
            else // the caret is in some token
            {
                var partialInput = state.Caret.ParentToken.Text;
                foreach (var value in _values)
                {
                    if (value != partialInput &&
                        value.IndexOf(partialInput, StringComparison.CurrentCultureIgnoreCase) >= 0)
                    {
                        yield return(new ReplaceSuggestion(state.Caret, value, value, _category));
                    }
                }
            }
        }
Пример #6
0
        public IEnumerable <IQuerySuggestion> Compute(SuggestionState state)
        {
            var expected = state.Expected.Find(item =>
                                               item.RuleIndices[0] == QueryParser.RULE_source);

            // make sure we are in the select part of a query
            if (expected == null)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            // make sure we are in a path pattern
            if (state.Caret.ParentToken == null ||
                state.Caret.ParentToken.Type != QueryLexer.STRING)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            // make sure the caret is in the pattern (not after the last quote)
            if (state.Caret.ParentOffset >= state.Caret.ParentToken.Text.Length &&
                state.Caret.ParentToken.Text[state.Caret.ParentOffset - 1] == '\"')
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            var patternParts = Split(state.Caret.ParentPrefix);

            // if the directory name at the caret is a pattern, don't suggest anything
            if (PathPattern.ContainsSpecialCharacters(patternParts.LastPart))
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            if (patternParts.LastPart.Length == 0)
            {
                patternParts.LastPart = "*";
            }
            else
            {
                patternParts.LastPart = "*" + patternParts.LastPart + "*";
            }

            try
            {
                var pattern = Path.Combine(patternParts.Prefix, patternParts.LastPart);
                var finder  = _fileSystem.CreateFileFinder(pattern);
                var result  = finder
                              .GetDirectories()
                              .Select(PathUtils.GetLastPart)
                              .Distinct()
                              .Select(name => new DirectorySuggestion(state.Caret, name));
                return(result);
            }
            catch (ArgumentException) // the pattern contains invalid characters
            {
                // suggestions should not throw for invalid input
                return(Enumerable.Empty <IQuerySuggestion>());
            }
        }
Пример #7
0
    void DoMyWindow(int windowID)
    {
        int offsetX = 10;
        int offsetY = 30;

        if (suggestionState == SuggestionState.Write)
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Got a suggestion?  Send it to us!");
            offsetY       += 30;
            SuggestionText = GUI.TextArea(new Rect(offsetX, offsetY, 280, 170), SuggestionText);
            offsetY       += 180;
            if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Send"))
            {
                StartCoroutine(SendSuggestion());
            }
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                this.gameObject.SetActive(false);
            }
        }
        else if (suggestionState == SuggestionState.Sending)
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Sending....");
            offsetY += 30;
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                suggestionState = SuggestionState.Write;
                this.gameObject.SetActive(false);
            }
        }
        else if (suggestionState == SuggestionState.Failed)
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Something went wrong!");
            offsetY += 30;
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                suggestionState = SuggestionState.Write;
                this.gameObject.SetActive(false);
            }
            if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Try Again"))
            {
                suggestionState = SuggestionState.Write;
            }
        }
        else if (suggestionState == SuggestionState.Sent)
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Thanks!  I'll get right on that!");
            offsetY += 30;
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                suggestionState = SuggestionState.Write;
                this.gameObject.SetActive(false);
            }
        }

        GUI.DragWindow();
    }
        public IEnumerable <IQuerySuggestion> Compute(SuggestionState state)
        {
            var expected = state.Expected.Find(item =>
                                               item.Tokens.Contains(QueryLexer.ID) &&
                                               item.RuleIndices[0] == QueryParser.RULE_factor);

            if (expected == null)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            var value = state.Caret.ParentPrefix ?? "";

            return(_names
                   .Where(name => name.IndexOf(value, StringComparison.CurrentCultureIgnoreCase) >= 0)
                   .Select(name => new ReplaceSuggestion(state.Caret, name, name, CategoryName)));
        }
        public IEnumerable <IQuerySuggestion> Compute(SuggestionState state)
        {
            var expected = state.Expected.Find(item =>
                                               item.RuleIndices[0] == QueryParser.RULE_factor &&
                                               item.Tokens.Contains(QueryLexer.ID));

            // only suggest attribute names in an expression factor where an identifier is
            // expected
            if (expected == null)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            var prefix = state.Caret.ParentPrefix ?? "";

            return(_attributeCache
                   .GetNames(prefix)
                   .Select(name => new IdentifierSuggestion(state.Caret, name, CategoryName)));
        }
Пример #10
0
        public IEnumerable <IQuerySuggestion> Compute(SuggestionState state)
        {
            var expected = state.Expected.Find(item =>
                                               item.RuleIndices[0] == QueryParser.RULE_factor &&
                                               item.Tokens.Contains(QueryLexer.ID));

            // only suggestion function names in a query factor where a function name is expected
            if (expected == null)
            {
                return(Enumerable.Empty <IQuerySuggestion>());
            }

            // return all function names which contain caret token prefix
            var prefix = state.Caret.ParentPrefix ?? "";

            return(_runtime.Functions
                   .Select(func => func.Name)
                   .Where(name => !_blackList.Contains(name))
                   .Distinct()
                   .Where(name => name.IndexOf(prefix, StringComparison.CurrentCultureIgnoreCase) >= 0)
                   .Select(name => new FunctionSuggestion(state.Caret, name, CategoryName)));
        }
Пример #11
0
    private void DoMyWindow(int windowId)
    {
        const int offsetX = 10;
        var       offsetY = 30;

        switch (_suggestionState)
        {
        case SuggestionState.Write:
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Got a suggestion?  Send it to us!");
            offsetY        += 30;
            _suggestionText = GUI.TextArea(new Rect(offsetX, offsetY, 280, 170), _suggestionText);
            offsetY        += 180;
            if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Send"))
            {
                StartCoroutine(SendSuggestion());
            }
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                gameObject.SetActive(false);
            }
            break;
        }

        case SuggestionState.Sending:
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Sending....");
            offsetY += 30;
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                _suggestionState = SuggestionState.Write;
                gameObject.SetActive(false);
            }

            break;
        }

        case SuggestionState.Failed:
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Something went wrong!");
            offsetY += 30;
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                _suggestionState = SuggestionState.Write;
                gameObject.SetActive(false);
            }

            if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Try Again"))
            {
                _suggestionState = SuggestionState.Write;
            }
            break;
        }

        case SuggestionState.Sent:
        {
            GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Thanks!  I'll get right on that!");
            offsetY += 30;
            if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Close"))
            {
                _suggestionState = SuggestionState.Write;
                gameObject.SetActive(false);
            }

            break;
        }

        default:
            throw new ArgumentOutOfRangeException();
        }

        GUI.DragWindow();
    }