Skip to content

Commit 657122b

Browse files
committed
PatternTextStyle: added initializer parameters. PatternTextPlaceholders now conform to ExpressibleByDictionaryLiteral. Cleanup.
1 parent bbd4666 commit 657122b

15 files changed

+71
-63
lines changed

Sources/DiffableTextKitXPattern/Placeholders.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// MARK: * Placeholders
1212
//*============================================================================*
1313

14-
public struct PatternTextPlaceholders: Equatable {
14+
public struct PatternTextPlaceholders: Equatable, ExpressibleByDictionaryLiteral {
1515

1616
@usableFromInline typealias Predicate = (Character) -> Bool
1717

@@ -41,6 +41,13 @@ public struct PatternTextPlaceholders: Equatable {
4141
self.option = .many(Many(many))
4242
}
4343

44+
@inlinable public init(dictionaryLiteral elements: (Character, (Character) -> Bool)...) {
45+
switch elements.count /* O(1) */ {
46+
case 0: self.init()
47+
case 1: self.init(elements[0])
48+
default: self.init(Dictionary(elements, uniquingKeysWith: { $1 })) }
49+
}
50+
4451
//=------------------------------------------------------------------------=
4552
// MARK: Accessors
4653
//=------------------------------------------------------------------------=

Sources/DiffableTextKitXPattern/Style.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ Value: RangeReplaceableCollection, Value.Element == Character {
2424

2525
public var pattern: String
2626
public var placeholders: Placeholders
27-
public var hidden: Bool = false
27+
public var hidden: Bool
2828

2929
//=------------------------------------------------------------------------=
3030
// MARK: Initializers
3131
//=------------------------------------------------------------------------=
3232

33-
@inlinable public init(_ pattern: String, placeholders: Placeholders = .init()) {
34-
self.pattern = pattern; self.placeholders = placeholders
33+
@inlinable public init(_ pattern: String, placeholders: Placeholders = .init(), hidden: Bool = false) {
34+
self.pattern = pattern; self.placeholders = placeholders; self.hidden = hidden
3535
}
3636

3737
//=------------------------------------------------------------------------=

Sources/DiffableTextKitXUIKit/Environment+AutocorrectionDisabled.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public extension View {
4444
/// It is similar to `View/autocorrectionDisabled(_:)`.
4545
///
4646
/// ```
47-
/// DiffableTextField("Text", value: $text, style: .normal)
47+
/// DiffableTextField("Text...", value: $text, style: .normal)
4848
/// .diffableTextViews_autocorrectionDisabled(true)
4949
/// ```
5050
///

Sources/DiffableTextKitXUIKit/Environment+Font.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public extension View {
4444
/// It is similar to `View/font(_:)` but uses a SwiftUI-esque system font type.
4545
///
4646
/// ```
47-
/// DiffableTextField("Monospaced", value: $value, style: style)
47+
/// DiffableTextField("Amount", value: $amount, style: .number)
4848
/// .diffableTextViews_font(.body.monospaced())
4949
/// ```
5050
///

Sources/DiffableTextKitXUIKit/Environment+KeyboardType.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public extension View {
4444
/// It is similar to `View/keyboardType(_:)`.
4545
///
4646
/// ```
47-
/// TextField("Amount", value: $amount, style: .currency("USD"))
47+
/// DiffableTextField("Amount", value: $amount, style: .number)
4848
/// .diffableTextViews_keyboardType(.decimalPad)
4949
/// ```
5050
///

Sources/DiffableTextKitXUIKit/Environment+MultilineTextAlignment.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public extension View {
4444
/// It is similar to `View/multilineTextAlignment(_:)`.
4545
///
4646
/// ```
47-
/// DiffableTextField("Amount", value: $value, style: .number)
47+
/// DiffableTextField("Amount", value: $amount, style: .number)
4848
/// .diffableTextViews_multilineTextAlignment(.trailing)
4949
/// ```
5050
///

Sources/DiffableTextKitXUIKit/Environment+SubmitLabel.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public extension View {
4444
/// It is similar to `View/submitLabel(_:)`.
4545
///
4646
/// ```
47-
/// DiffableTextField("Prints on submit...", value: $value, style: style)
48-
/// .diffableTextViews_submitLabel(.return)
47+
/// DiffableTextField("Search", value: $text, style: .normal)
48+
/// .diffableTextViews_submitLabel(.search)
4949
/// ```
5050
///
5151
/// **Notes**

Sources/DiffableTextKitXUIKit/Environment+TextContentType.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,12 @@ public extension View {
4545
/// It is similar to `View/textContentType(_:)`.
4646
///
4747
/// ```
48-
/// DiffableTextField("Enter your email", text: $emailAddress)
49-
/// .diffableTextViews_textContentTypetextContentType(.emailAddress)
48+
/// DiffableTextField("Phone", value: $address) {
49+
/// .pattern("+## (###) ###-##-##")
50+
/// .placeholders("#") { $0.isASCII && $0.isNumber }
51+
/// .equals(())
52+
/// }
53+
/// .diffableTextViews_textContentType(.telephoneNumber)
5054
/// ```
5155
///
5256
/// **Notes**

Sources/DiffableTextKitXUIKit/Environment+TextFieldStyle.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public extension View {
4141

4242
/// Sets the text field style for diffable text views.
4343
///
44-
/// It is similar to View/textFieldStyle, but based on UIKit.
44+
/// It is similar to `View/textFieldStyle(_:), but based on UIKit.
4545
///
4646
/// ```
4747
/// DiffableTextField("Bordered", value: $value, style: style)
@@ -52,7 +52,7 @@ public extension View {
5252
///
5353
/// - The value is read when the view is set up.
5454
/// - The default value is `UITextField.BorderStyle.none`.
55-
/// - The `View/textFieldStyle` environment value is inaccessible.
55+
/// - The `View/textFieldStyle(_:)` environment value is inaccessible.
5656
///
5757
@inlinable func diffableTextViews_textFieldStyle(_ style: UITextField.BorderStyle) -> some View {
5858
self.environment(\.diffableTextViews_textFieldStyle, style)

Sources/DiffableTextKitXUIKit/Environment+Tint.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public extension View {
4444
/// It is similar to `View/tint(_:)` and affects text selection.
4545
///
4646
/// ```
47-
/// DiffableTextField("Look, selection is green!", value: $value)
48-
/// .diffableTextViews_tint(.green)
47+
/// DiffableTextField("Tinted", value: $value, style: style)
48+
/// .diffableTextViews_tint(.gray)
4949
/// ```
5050
///
5151
/// **Notes**

0 commit comments

Comments
 (0)