示例#1
0
        private void BenchmarkAutocompleteProvider(IAutocompleteProvider provider)
        {
            var warAndPeacePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "war_and_peace.txt");

            if (!File.Exists(warAndPeacePath))
            {
                return;
            }

            Console.WriteLine("Benchmarking {0}", provider.GetType().GetFriendlyName());

            var passage     = File.ReadAllText(warAndPeacePath);
            var prefixInput = "th";

            var stopwatch = Stopwatch.StartNew();

            provider.Train(passage);

            stopwatch.Stop();
            Console.WriteLine("{0} ms to train war_and_peace.txt", stopwatch.ElapsedMilliseconds);

            stopwatch = Stopwatch.StartNew();
            int n = 1000;

            for (int i = 0; i < n; i++)
            {
                var candidates = provider.GetWords(prefixInput).ToList();
            }
            stopwatch.Stop();
            Console.WriteLine("{0} ms to get autocompletions {1} times for '{2}'.", stopwatch.ElapsedMilliseconds, n, prefixInput);
            long bytesCount = VeryRoughEstimateOfMemoryConsumption(provider);

            Console.WriteLine("Trained provider uses roughly {0} KB.", bytesCount / 1024);
            Console.WriteLine();
        }
 public AvalonEditCodeEditor(ISharedViewState sharedViewState, IAutocompleteProvider autocompleteProvider)
 {
     _sharedViewState      = sharedViewState;
     _autocompleteProvider = autocompleteProvider;
     completionDatas       =
         CompletionDataConverter.ConvertAutocompleteItemsToCompletionDatas(
             _autocompleteProvider.ScriptingAutocompleteItems.ToArray());
     InitializeComponent();
     _documents =
         new Dictionary <string, TextDocument>();
     TextArea.TextView.LineTransformers.Add(_offsetColorizer);
 }
示例#3
0
 public SearchController(
     IComposerContext composerContext,
     ISearchViewService searchViewService,
     IInventoryLocationProvider inventoryLocationProvider,
     ISearchTermsTransformationProvider searchTermsTransformationProvider,
     IAutocompleteProvider autocompleteProvider)
 {
     ComposerContext                   = composerContext ?? throw new ArgumentNullException(nameof(composerContext));
     SearchViewService                 = searchViewService ?? throw new ArgumentNullException(nameof(searchViewService));
     InventoryLocationProvider         = inventoryLocationProvider ?? throw new ArgumentNullException(nameof(inventoryLocationProvider));
     SearchTermsTransformationProvider = searchTermsTransformationProvider ?? throw new ArgumentNullException(nameof(searchTermsTransformationProvider));
     AutocompleteProvider              = autocompleteProvider ?? throw new ArgumentNullException(nameof(autocompleteProvider));
 }
        public void TestSuggestions()
        {
            var providers = new IAutocompleteProvider[]
            {
                new PrefixDictionaryAutocompleteProvider(),
                new TrieAutocompleteProvider <DictionaryTrie>(),
                new TrieAutocompleteProvider <ArrayTrie>(),
                new TrieAutocompleteProvider <ListTrie>(),
            };

            var suggestionGroups = providers.Select(GetBasicSuggestions);

            foreach (var suggestionGroup in suggestionGroups)
            {
                var suggestionLine = string.Join(", ", suggestionGroup.Select(x => $"{x.Word} ({x.Confidence})"));
                Console.WriteLine(suggestionLine);
            }
        }
示例#5
0
        public ExpressionTextBox(ISharedViewState sharedViewState, IAutocompleteProvider autocompleteProvider)
        {
            _sharedViewState      = sharedViewState;
            _autocompleteProvider = autocompleteProvider;
            KeyPress         += ExpressionTextBox_KeyPress;
            _autocompleteMenu = new AutocompleteMenu.AutocompleteMenu(_sharedViewState);
            _autocompleteMenu.SetAutocompleteMenu(this, _autocompleteMenu);

            GotFocus         += ExpressionTextBox_GotFocus;
            MouseDoubleClick += Control_MouseDoubleClick;
            SetFont(Settings.Default.ExpressionFont);
            SizeChanged +=
                (o, e) =>
            {
                _autocompleteMenu.MaximumSize = new Size(Size.Width, _autocompleteMenu.MaximumSize.Height);
            };

            Settings.Default.PropertyChanged += (o, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(Settings.Default.FunctionsOrder):
                    RefreshAutoComplete();
                    break;

                case nameof(Settings.Default.ExpressionFont):
                    SetFont(Settings.Default.ExpressionFont);
                    break;
                }
            };

            if (!DesignMode)
            {
                RefreshAutoComplete();
                _sharedViewState.PropertyChanged += (o, e) =>
                {
                    if (e.PropertyName == nameof(SharedViewState.IsExponent))
                    {
                        _showCaret();
                    }
                };
            }
        }
示例#6
0
 public SearchController(
     IComposerContext composerContext,
     ISearchViewService searchViewService,
     IInventoryLocationProvider inventoryLocationProvider,
     ISearchTermsTransformationProvider searchTermsTransformationProvider,
     IAutocompleteProvider autocompleteProvider,
     ISearchUrlProvider searchUrlProvider,
     ICategoryBrowsingViewService categoryBrowsingViewService,
     IBaseSearchCriteriaProvider baseSearchCriteriaProvider,
     ICategoryBrowsingUrlProvider categoryBrowsingUrlProvider)
 {
     ComposerContext                   = composerContext ?? throw new ArgumentNullException(nameof(composerContext));
     SearchViewService                 = searchViewService ?? throw new ArgumentNullException(nameof(searchViewService));
     CategoryBrowsingViewService       = categoryBrowsingViewService ?? throw new ArgumentNullException(nameof(categoryBrowsingViewService));
     InventoryLocationProvider         = inventoryLocationProvider ?? throw new ArgumentNullException(nameof(inventoryLocationProvider));
     SearchTermsTransformationProvider = searchTermsTransformationProvider ?? throw new ArgumentNullException(nameof(searchTermsTransformationProvider));
     AutocompleteProvider              = autocompleteProvider ?? throw new ArgumentNullException(nameof(autocompleteProvider));
     SearchUrlProvider                 = searchUrlProvider ?? throw new ArgumentNullException(nameof(searchUrlProvider));
     BaseSearchCriteriaProvider        = baseSearchCriteriaProvider ?? throw new ArgumentNullException(nameof(baseSearchCriteriaProvider));
     CategoryBrowsingUrlProvider       = categoryBrowsingUrlProvider ?? throw new ArgumentNullException(nameof(categoryBrowsingUrlProvider));
 }
 public ScintillaCodeEditorControl(ISharedViewState sharedViewState, IAutocompleteProvider autocompleteProvider)
 {
     _sharedViewState      = sharedViewState;
     _autocompleteProvider = autocompleteProvider;
     _autocompleteMenu     = new AutocompleteMenu.AutocompleteMenu(sharedViewState)
     {
         TargetControlWrapper = new ScintillaWrapper(this),
         MaximumSize          = new Size(500, 180).DpiScale()
     };
     _autocompleteMenu.SetAutocompleteItems(_autocompleteProvider.ScriptingAutocompleteItems);
     //_autocompleteMenu.CaptureFocus = true;
     InitializeComponent();
     // this.BorderStyle=BorderStyle.None;
     Dock         = DockStyle.Fill;
     _documents   = new Dictionary <string, Document>();
     SizeChanged +=
         (o, e) =>
     {
         _autocompleteMenu.MaximumSize = new Size(Size.Width, _autocompleteMenu.MaximumSize.Height);
     };
 }
示例#8
0
        public MainWindow()
        {
            InitializeComponent();

            _autocomplete = new AutocompleteProvider();
        }
 public ConstantsCommand(ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IAutocompleteProvider autocompleteProvider, IClickedMouseButtonsProvider clickedMouseButtonsProvider, IShowFunctionDetails showFunctionDetails) : base(MenuStrings.constantsToolStripMenuItem_Text,
                                                                                                                                                                                                                                                                                                                                            new Dictionary <string, string>()
 {
     { "MathematicalConstants", MenuStrings.mathematicalConstantsToolStripMenuItem_Text },
     { "PhysicalConstants", MenuStrings.physicalConstantsToolStripMenuItem_Text }
 },
                                                                                                                                                                                                                                                                                                                                            expressionTextProvider, scriptingTextProvider, customFunctionsTextProvider, sharedViewState, autocompleteProvider, clickedMouseButtonsProvider, showFunctionDetails)
 {
 }
示例#10
0
 public FunctionsCommand(ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IAutocompleteProvider autocompleteProvider, IClickedMouseButtonsProvider clickedMouseButtonsProvider, IShowFunctionDetails showFunctionDetails) : base(MenuStrings.functionsToolStripMenuItem_Text,
                                                                                                                                                                                                                                                                                                                                            new Dictionary <string, string>()
 {
     { "ElementaryFunctions", MenuStrings.elementaryFunctionsToolStripMenuItem_Text },
     { "SpecialFunctions", MenuStrings.specialFunctionsToolStripMenuItem_Text }
 },
                                                                                                                                                                                                                                                                                                                                            expressionTextProvider, scriptingTextProvider, customFunctionsTextProvider, sharedViewState, autocompleteProvider, clickedMouseButtonsProvider, showFunctionDetails)
 {
 }
示例#11
0
        private static List <IToolbarCommand> BuildFunctionsOrConstantsCommands(string key, ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IAutocompleteProvider autocompleteProvider, IClickedMouseButtonsProvider mouseButtonsProvider, IShowFunctionDetails showFunctionDetails)
        {
            var dict = new Dictionary <string, IToolbarCommand>();

            foreach (var f in autocompleteProvider.ExpressionAutocompleteItems)
            {
                if (f.Details.IsNullOrEmpty() || f.Details.Type != key)
                {
                    continue;
                }

                //TODO: remove this code when made sure it does nothing:
                if (f.Details.Category == "")
                {
                    f.Details.Category = "_empty_";
                }


                if (!dict.ContainsKey(f.Details.Category))
                {
                    //var cat = new ToolStripMenuItem(f.Value.Category) { Name = f.Value.Category };
                    var command = new DummyCommand(f.Details.Category)
                    {
                        ChildrenCommands = new List <IToolbarCommand>()
                    };
                    dict.Add(f.Details.Category, command);
                }
                (dict[f.Details.Category].ChildrenCommands as List <IToolbarCommand>).Add(
                    new FunctionOrConstantCommand(f, expressionTextProvider,
                                                  scriptingTextProvider, customFunctionsTextProvider, sharedViewState, mouseButtonsProvider, showFunctionDetails));
            }

            return(dict.Values.ToList());
        }
示例#12
0
        public FunctionDetailsBasedCommand(string name, Dictionary <string, string> KeyAndNameOfCommandCollection, ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IAutocompleteProvider autocompleteProvider, IClickedMouseButtonsProvider mouseButtonsProvider, IShowFunctionDetails showFunctionDetails) : base(name)
        {
            var childrenCommands = new List <IToolbarCommand>();

            foreach (var keyValue in KeyAndNameOfCommandCollection)
            {
                childrenCommands.Add(new DummyCommand(keyValue.Value)
                {
                    ChildrenCommands = BuildFunctionsOrConstantsCommands(keyValue.Key, expressionTextProvider,
                                                                         scriptingTextProvider, customFunctionsTextProvider, sharedViewState, autocompleteProvider, mouseButtonsProvider, showFunctionDetails)
                });
            }

            ChildrenCommands = childrenCommands;
        }
示例#13
0
 public AutocompleteController(ILogger <CalculateController> logger, IAutocompleteProvider autocompleteProvider)
 {
     _logger = logger;
     _autocompleteProvider = autocompleteProvider;
 }
 private IEnumerable <ICandidate> GetSuggestions(IAutocompleteProvider provider, string passage)
 {
     provider.Train(passage);
     return(provider.GetWords("th"));
 }
 private IEnumerable <ICandidate> GetBasicSuggestions(IAutocompleteProvider provider)
 {
     return(GetSuggestions(provider, "The thing that I was thinking that was third in the thingamagij is a thinking cap."));
 }