# ------------------------------------------------------------------------------
# <auto-generated>
#     This code was generated by a tool.
#     Changes to this file may cause incorrect behavior and will be lost if
#     the code is regenerated.
# </auto-generated>
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
# ------------------------------------------------------------------------------

# pylint: disable=line-too-long


class BaseNumbers:
    NumberReplaceToken = '@builtin.num'
    FractionNumberReplaceToken = '@builtin.num.fraction'

    def IntegerRegexDefinition(placeholder, thousandsmark):
        return f'(((?<!\\d+\\s*)-\\s*)|((?<=\\b)(?<!(\\d+\\.|\\d+,))))\\d{{1,3}}({thousandsmark}\\d{{3}})+(?={placeholder})'

    def DoubleRegexDefinition(placeholder, thousandsmark, decimalmark):
        return f'(((?<!\\d+\\s*)-\\s*)|((?<=\\b)(?<!\\d+\\.|\\d+,)))\\d{{1,3}}({thousandsmark}\\d{{3}})+{decimalmark}\\d+(?={placeholder})'
    PlaceHolderDefault = '\\D|\\b'
    NumberMultiplierRegex = f'(K|k|M|G|T|B|b)'
    MultiplierLookupRegex = f'(k|m|t|g|b)'
    CurrencyRegex = f'(((?<=\\W|^)-\\s*)|(?<=\\b))\\d+\\s*(b|m|t|g)(?=\\b)'
    CommonCurrencySymbol = f'(¥|\\$|€|£|₩)'
# pylint: enable=line-too-long
