Skip to content

Commit ed227dc

Browse files
authored
Add DescriptiveDynamicProperty (#32)
1 parent 72be177 commit ed227dc

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
//
2+
// Tracing.swift
3+
//
4+
//
5+
// Created by Kyle on 2024/2/1.
6+
// Lastest Version: iOS 15.5
7+
// Status: WIP
8+
// ID: D59B7A281FFF29619A43A3D8F551CCE1
9+
10+
// MARK: - Tracing
11+
12+
enum Tracing {
13+
static func libraryName(defining _: Any.Type) -> String {
14+
// TODO:
15+
""
16+
}
17+
// private static moduleLookupCache: ThreadSpecific<[UnsafeRawPointer : String]>
18+
}
19+
20+
// MARK: - DescriptiveDynamicProperty
21+
22+
private protocol DescriptiveDynamicProperty {
23+
var _linkValue: Any { get }
24+
}
25+
26+
extension DescriptiveDynamicProperty {
27+
var linkValueDescription: String {
28+
if let descriptiveDynamicProperty = _linkValue as? DescriptiveDynamicProperty {
29+
descriptiveDynamicProperty.linkValueDescription
30+
} else {
31+
String(describing: _linkValue)
32+
}
33+
}
34+
}
35+
36+
extension DynamicProperty {
37+
fileprivate var linkValueDescription: String {
38+
if let descriptiveDynamicProperty = self as? DescriptiveDynamicProperty {
39+
descriptiveDynamicProperty.linkValueDescription
40+
} else {
41+
String(describing: self)
42+
}
43+
}
44+
}
45+
46+
extension State: DescriptiveDynamicProperty {
47+
fileprivate var _linkValue: Any {
48+
projectedValue.wrappedValue
49+
}
50+
}
51+
52+
extension Binding: DescriptiveDynamicProperty {
53+
fileprivate var _linkValue: Any {
54+
wrappedValue
55+
}
56+
}
57+
58+
extension Environment: DescriptiveDynamicProperty {
59+
fileprivate var _linkValue: Any {
60+
wrappedValue
61+
}
62+
}

0 commit comments

Comments
 (0)