Tusker/Pachyderm/Utilities/TimelineSegment.swift

50 lines
1.1 KiB
Swift

//
// TimelineSegment.swift
// Pachyderm
//
// Created by Shadowfacts on 7/29/19.
// Copyright © 2019 Shadowfacts. All rights reserved.
//
import Foundation
public struct TimelineSegment<Type: Identifiable> where Type.ID == String {
private var ids: [String]
public init(objects: [Type]) {
self.ids = objects.map { $0.id }
}
public mutating func insertAtBeginning(ids: [String]) {
self.ids.insert(contentsOf: ids, at: 0)
}
public mutating func insertAtBeginning(objects: [Type]) {
insertAtBeginning(ids: objects.map { $0.id })
}
public mutating func append(ids: [String]) {
self.ids.append(contentsOf: ids)
}
public mutating func append(objects: [Type]) {
append(ids: objects.map { $0.id })
}
}
extension TimelineSegment: RandomAccessCollection {
public typealias Index = Int
public subscript(index: Int) -> String {
return ids[index]
}
public var startIndex: Int {
return ids.startIndex
}
public var endIndex: Int {
return ids.endIndex
}
}