PowerToys/doc/devdocs/modules/launcher/plugins/calculator.md
Heiko 465df35d27
[PT Run] Calculator plugin: Various improvements (#18159)
* crash fixes and error result

* small changes and test fixes

* improve exceptions and message

* double array crash fix

* overflowexception

* improve error handling

* varous improvements

* varous improvements

* fix spelling

* fix spelling

* Revert #16980

* add description

* error improvemenet

* Update tests

* spelling fixes

* small changes

* add settings

* last changes

* fix description

* update dev docs

* spell check
2022-06-02 10:44:12 +01:00

4.4 KiB

Calculator Plugin

The Calculator plugin as the name suggests is used to perform calculations on the user entered query.

Image of Calculator plugin

Optional plugin settings

  • We have the following settings that the user can configure to change the behavior of the plugin:

    Key Default value Name Description
    InputUseEnglishFormat` | false` | se English (United States) number format for input | gnores your system setting and expects numbers in the format '1,000.50' |
    OutputUseEnglishFormat` | false` | se English (United States) number format for output | gnores your system setting and returns numbers in the format '1000.50' |
  • The optional plugin settings are implemented via the ISettingProvider interface from Wox.Plugin project. All available settings for the plugin are defined in the Main class of the plugin.

Technical details

BracketHelper

  • This helper validates the bracket usage in the input string.

CalculateHelper

  • The CalculateHelper.cs class checks to see if the user entered query is a valid input to the calculator and only if the input is valid does it perform the operation.
  • It does so by matching the user query to a valid regex.

CalculateEngine

var result = CalculateEngine.Interpret(query.Search, CultureInfo.CurrentUICulture);

CalculateResult

  • The class which encapsulates the result of the computation.
  • It comprises of the Result and RoundedResult properties.

ErrorHandler

  • The class which encapsulates the code to log errors and format the user message.
  • It returns an error result if the user searches with the activation command. This error result is shown to the user.

Score

The score of each result from the calculator plugin is 300.

Unit Tests

We have a Unit Test project that executes various test to ensure that the plugin works as expected.

BracketHelperTests

ExtendedCalculatorParserTests

NumberTranslatorTests

  • The NumberTranslatorTests.cs class contains tests to validate that each number is converted correctly based on the defined locals.

QueryTests

  • The QueryTests.cs class contains tests to validate that the user gets the correct results when searching.