Swiftpack.co - Package - luximetr/AnyFormatKit

AnyFormatKit: Simple text formatting in Swift

CI Status Version Carthage Compatible License Platform Swift

Text formatting framework written on Swift 5.0.

Features

| |Features | |-------------------|------------------------------------------------------------| :performing_arts:| Convert string into formatted string and vice versa :bicyclist:| Formatting text during typing :hash:| Set format using '#' characters like '### ##-###'

Example

To run the example project, clone the repo and run pod install from the Example directory first.

Phone number example

AnyFormatKitDemo: Simple text formatting in Swift

Currency example

AnyFormatKitCurrencyDemo: Currency formatting in Swift

Requirements

  • iOS 8.0+
  • Swift 4.0+
  • Xcode 9.0+

Migration Guides

Installation

CocoaPods

AnyFormatKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'AnyFormatKit'

Then, run the following command:

$ pod install

Usage

Import

import AnyFormatKit

Formatting with TextFormatter

let phoneFormatter = DefaultTextFormatter(textPattern: "### (###) ###-##-##")
phoneFormatter.format("+123456789012") // +12 (345) 678-90-12

let customFormatter = DefaultTextFormatter(textPattern: "###-###custom###-###")
customFormatter.format("111222333444") // 111-222custom333-444

You can also set your own symbol in the pattern

let cardFormatter = DefaultTextFormatter(textPattern: "XXXX XXXX XXXX XXXX", patternSymbol: "X")
cardFormatter.format("4444555566667777") // 4444 5555 6666 7777

For string with different length

let formatter = DefaultTextFormatter(textPattern: "## ###-##")
formatter.format("1234") // 12 34
formatter.format("123456789") // 12 345-67

Unformatting

let formatter = DefaultTextFormatter(textPattern: "## ###-##")
formatter.unformat("99 888-77") // 9988877

Formatting during typing

Code from example app

let formatter = DefaultTextInputFormatter(textPattern: "### (###) ###-##-##")

// inside of UITextFieldDelegate shouldChangeTextIn method
let result = formatter.formatInput(currentText: textView.text, range: range, replacementString: text)
textView.text = result.formattedText
textView.setCursorLocation(result.caretBeginOffset)

Author

luximetr, luximetr.notification@gmail.com

License

AnyFormatKit is available under the MIT license. See the LICENSE file for more info.

Github

link
Stars: 234

Dependencies

Used By

Total: 0

Releases

Allow backspacing group character and send editing events - 2019-04-17 06:57:03

  • Allow grouping character to be backspaces by moving the cursor one index to the left when the user attempt to backspace this character
  • Fix issue where the text input change would not be sent when the .content property of TextInput changes

Solves: https://github.com/luximetr/AnyFormatKit/issues/8

Bugfix on iOS 10 when resigning first responder - 2019-04-16 09:49:15

Fixes a big causing the input field to become empty when resigning first responder.

Solves: https://github.com/luximetr/AnyFormatKit/issues/4

Public MulticastDelegate - 2019-04-16 09:02:50

Since the generated initializer is 'internal', users of the library were unable to initialize MulticastDelegate which was also causing them to be unable to create their own TextInput.

Swift 4.2 support - 2019-04-16 08:01:33

  • Update to Swift 4.2
  • Fix issue for Xcode 10 with duplicate Info.plist

Bugfix. - 2017-12-01 09:01:42

Fixed crash when use autolayout. Code refactor.

Structure refactor. - 2017-11-01 16:09:30

Moved example and framework to separate projects.

Simple text formatting in Swift. - 2017-10-31 13:22:59

Include formatter. Added usage to readme file. First release for pods.