mirror of
https://github.com/qvacua/vimr.git
synced 2024-12-25 06:43:24 +03:00
GH-351 Add Copyable protocol and let FileItem implement it
This commit is contained in:
parent
bdd9b0b014
commit
770b6bb909
@ -10,6 +10,7 @@
|
||||
1929B0E0C3BC59F52713D5A2 /* FoundationCommons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B9AF20D7BD6E5C975128 /* FoundationCommons.swift */; };
|
||||
1929B165820D7177743B537A /* Component.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B39DA7AC4A9B62D7CD39 /* Component.swift */; };
|
||||
1929B1E05C116514C1D3A384 /* CocoaCategories.m in Sources */ = {isa = PBXBuildFile; fileRef = 1929B5C3F2F1CA4113DABFFD /* CocoaCategories.m */; };
|
||||
1929B3CEE0C1A1850E9CCE2F /* BasicTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B2FBE11048569391E092 /* BasicTypes.swift */; };
|
||||
1929B3F5743967125F357C9F /* Matcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BEEB33113B0E33C3830F /* Matcher.swift */; };
|
||||
1929B462CD4935AFF6D69457 /* FileItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B7CB4863F80230C32D3C /* FileItem.swift */; };
|
||||
1929B53876E6952D378C2B30 /* ScoredFileItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BDF9EBAF1D9D44399045 /* ScoredFileItem.swift */; };
|
||||
@ -238,6 +239,7 @@
|
||||
/* Begin PBXFileReference section */
|
||||
1929B15B7EDC9B0F40E5E95C /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logging.h; sourceTree = "<group>"; };
|
||||
1929B1A51F076E088EF4CCA4 /* server_globals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = server_globals.h; sourceTree = "<group>"; };
|
||||
1929B2FBE11048569391E092 /* BasicTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicTypes.swift; sourceTree = "<group>"; };
|
||||
1929B39DA7AC4A9B62D7CD39 /* Component.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Component.swift; sourceTree = "<group>"; };
|
||||
1929B3A98687DF171307AAC8 /* FileItemService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileItemService.swift; sourceTree = "<group>"; };
|
||||
1929B5C3F2F1CA4113DABFFD /* CocoaCategories.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CocoaCategories.m; sourceTree = "<group>"; };
|
||||
@ -637,6 +639,7 @@
|
||||
1929B9AF20D7BD6E5C975128 /* FoundationCommons.swift */,
|
||||
4BB1BEA81D48773200463C29 /* RxSwiftCommons.swift */,
|
||||
4B6A70951D6100E300E12030 /* SwiftCommons.swift */,
|
||||
1929B2FBE11048569391E092 /* BasicTypes.swift */,
|
||||
);
|
||||
name = Commons;
|
||||
sourceTree = "<group>";
|
||||
@ -1098,6 +1101,7 @@
|
||||
4BB409EE1DDA77E9005F39A2 /* ProxyWorkspaceBar.swift in Sources */,
|
||||
4BAD84E81D7CA8FC00A79CC3 /* OpenQuicklyFilterOperation.swift in Sources */,
|
||||
1929B0E0C3BC59F52713D5A2 /* FoundationCommons.swift in Sources */,
|
||||
1929B3CEE0C1A1850E9CCE2F /* BasicTypes.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
13
VimR/BasicTypes.swift
Normal file
13
VimR/BasicTypes.swift
Normal file
@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Tae Won Ha - http://taewon.de - @hataewon
|
||||
* See LICENSE
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol Copyable {
|
||||
|
||||
associatedtype InstanceType
|
||||
|
||||
func copy() -> InstanceType
|
||||
}
|
@ -12,7 +12,9 @@ class Token: Equatable {
|
||||
}
|
||||
}
|
||||
|
||||
class FileItem : CustomStringConvertible, Hashable {
|
||||
class FileItem : CustomStringConvertible, Hashable, Copyable {
|
||||
|
||||
typealias InstanceType = FileItem
|
||||
|
||||
static func ==(left: FileItem, right: FileItem) -> Bool {
|
||||
return left.url == right.url
|
||||
@ -50,6 +52,17 @@ class FileItem : CustomStringConvertible, Hashable {
|
||||
self.isPackage = url.isPackage
|
||||
}
|
||||
|
||||
fileprivate init(url: URL, dir: Bool, hidden: Bool, package: Bool) {
|
||||
self.url = url
|
||||
self.isDir = dir
|
||||
self.isHidden = hidden
|
||||
self.isPackage = package
|
||||
}
|
||||
|
||||
func copy() -> FileItem {
|
||||
return FileItem(url: self.url, dir: self.isDir, hidden: self.isHidden, package: self.isPackage)
|
||||
}
|
||||
|
||||
func removeChild(withUrl url: URL) {
|
||||
guard let idx = self.children.index(where: { $0.url == url }) else {
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user