diff --git a/Sources/DiffableTextKit/Models/Context.swift b/Sources/DiffableTextKit/Models/Context.swift index 92a49e0a..6db2dd92 100644 --- a/Sources/DiffableTextKit/Models/Context.swift +++ b/Sources/DiffableTextKit/Models/Context.swift @@ -61,7 +61,7 @@ public struct Context { // MARK: Transformation //=------------------------------------------------------------------------= - /// Transforms this instance with copy-on-write behavior. + /// Writes to storage with copy-on-write behavior. @inlinable mutating func write(_ write: (Storage) -> Void) { //=--------------------------------------= // Unique @@ -111,17 +111,19 @@ public struct Context { // MARK: Accessors //=----------------------------------------------------------------------------= -public extension Context { +extension Context { //=------------------------------------------------------------------------= // MARK: 1st //=------------------------------------------------------------------------= - @inlinable internal var status: Status { + @inlinable @inline(__always) + var status: Status { _storage.status } - @inlinable internal var layout: Layout { + @inlinable @inline(__always) + var layout: Layout { _storage.layout } @@ -129,15 +131,18 @@ public extension Context { // MARK: 2nd //=------------------------------------------------------------------------= - @inlinable var style: Style { + @inlinable @inline(__always) + public var style: Style { status.style } - @inlinable var value: Value { + @inlinable @inline(__always) + public var value: Value { status.value } - @inlinable var focus: Focus { + @inlinable @inline(__always) + public var focus: Focus { status.focus } @@ -145,15 +150,18 @@ public extension Context { // MARK: 3rd //=------------------------------------------------------------------------= - @inlinable var snapshot: Snapshot { + @inlinable @inline(__always) + public var snapshot: Snapshot { layout.snapshot } - @inlinable var text: String { + @inlinable @inline(__always) + public var text: String { layout.snapshot.characters } - @inlinable func selection(as type: Position.Type = + @inlinable @inline(__always) + public func selection(as position: Position.Type = Position.self) -> Range where T: Offset { layout.selection().range } @@ -197,13 +205,13 @@ extension Context { // MARK: Transformations //=----------------------------------------------------------------------------= -public extension Context { +extension Context { //=------------------------------------------------------------------------= // MARK: Status //=------------------------------------------------------------------------= - @inlinable mutating func merge(_ status: Status) -> Update { + @inlinable public mutating func merge(_ status: Status) -> Update { //=--------------------------------------= // Update //=--------------------------------------= @@ -227,7 +235,7 @@ public extension Context { // MARK: Characters //=------------------------------------------------------------------------= - @inlinable mutating func merge(_ characters: String, + @inlinable public mutating func merge(_ characters: String, in range: Range) throws -> Update where T: Offset { let previous = value //=--------------------------------------= @@ -251,7 +259,7 @@ public extension Context { // MARK: Selection //=------------------------------------------------------------------------= - @inlinable mutating func merge( + @inlinable public mutating func merge( selection: Range, momentums: Bool) -> Update where T: Offset { //=--------------------------------------= diff --git a/Sources/DiffableTextKitXNumber/Aliases.swift b/Sources/DiffableTextKitXNumber/Aliases.swift index 1384641a..cf5b5f3b 100644 --- a/Sources/DiffableTextKitXNumber/Aliases.swift +++ b/Sources/DiffableTextKitXNumber/Aliases.swift @@ -38,10 +38,3 @@ extension _OptionalNumberTextStyle where Format: NumberTextFormatXCurrencyable { extension _OptionalNumberTextStyle where Format: NumberTextFormatXPercentable { public typealias Percent = _OptionalNumberTextStyle } - -//*============================================================================* -// MARK: Helpers -//*============================================================================* - -public typealias NFSC = NumberFormatStyleConfiguration -public typealias CFSC = CurrencyFormatStyleConfiguration diff --git a/Sources/DiffableTextKitXNumber/Format.swift b/Sources/DiffableTextKitXNumber/Format.swift index d1b05b43..4a8c1be9 100644 --- a/Sources/DiffableTextKitXNumber/Format.swift +++ b/Sources/DiffableTextKitXNumber/Format.swift @@ -18,6 +18,9 @@ FormatInput: DiffableTextKitXNumber.NumberTextValue { associatedtype NumberTextRoundingIncrement associatedtype NumberTextSign: NumberTextFormatXSignRepresentable associatedtype NumberTextScheme: DiffableTextKitXNumber.NumberTextScheme + + typealias NFSC = NumberFormatStyleConfiguration + typealias CFSC = CurrencyFormatStyleConfiguration //=------------------------------------------------------------------------= // MARK: State diff --git a/Sources/DiffableTextKitXNumber/Models/Precision.swift b/Sources/DiffableTextKitXNumber/Models/Precision.swift index 22da343d..ddfb378d 100644 --- a/Sources/DiffableTextKitXNumber/Models/Precision.swift +++ b/Sources/DiffableTextKitXNumber/Models/Precision.swift @@ -16,6 +16,7 @@ import Foundation public struct NumberTextPrecision: Equatable { @usableFromInline typealias Name = _Precision + @usableFromInline typealias Mode = NumberFormatStyleConfiguration.Precision //=------------------------------------------------------------------------= // MARK: State @@ -87,19 +88,19 @@ public struct NumberTextPrecision: Equatable { // MARK: Utilities //=------------------------------------------------------------------------= - @inlinable func inactive() -> NFSC.Precision { + @inlinable func inactive() -> Mode { .integerAndFractionLength( integerLimits: integer.lowerBound ... Int.max, fractionLimits: fraction.lowerBound ... Int.max) } - @inlinable func active() -> NFSC.Precision { + @inlinable func active() -> Mode { .integerAndFractionLength( integerLimits: Name.lower.integer ... integer.upperBound, fractionLimits: Name.lower.fraction ... fraction.upperBound) } - @inlinable func interactive(_ count: Count) -> NFSC.Precision { + @inlinable func interactive(_ count: Count) -> Mode { .integerAndFractionLength( integerLimits: max(Name.lower.integer, count.integer) ... count.integer, fractionLimits: max(Name.lower.fraction, count.fraction) ... count.fraction) diff --git a/Sources/DiffableTextKitXNumber/Value+Floats.swift b/Sources/DiffableTextKitXNumber/Value+Floats.swift index 4b05f4e2..1c79fd9f 100644 --- a/Sources/DiffableTextKitXNumber/Value+Floats.swift +++ b/Sources/DiffableTextKitXNumber/Value+Floats.swift @@ -13,7 +13,7 @@ import Foundation // MARK: Declaration //*============================================================================* -private protocol _Value: +private protocol _Float: NumberTextValueXSigned, NumberTextValueXFloatingPoint, NumberTextValueXNumberable, @@ -24,7 +24,7 @@ NumberTextValueXPercentable { } // MARK: Decimal //*============================================================================* -extension Decimal: _Value { +extension Decimal: _Float { public typealias NumberTextStyle = _NumberTextStyle //=------------------------------------------------------------------------= @@ -40,7 +40,7 @@ extension Decimal: _Value { // MARK: Double //*============================================================================* -extension Double: _Value { +extension Double: _Float { public typealias NumberTextStyle = _NumberTextStyle> //=------------------------------------------------------------------------=