Skip to content

Commit f761dda

Browse files
committed
Add docstrings to Resolver.swift
1 parent 9bbd3a2 commit f761dda

File tree

1 file changed

+41
-9
lines changed

1 file changed

+41
-9
lines changed

Sources/Yams/Resolver.swift

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,38 @@
88

99
import Foundation
1010

11+
/// Class used to resolve nodes to tags based on customizable rules.
1112
public final class Resolver {
13+
/// Rule describing how to resolve tags from regex patterns.
1214
public struct Rule {
15+
/// The tag name this rule applies to.
1316
public let tag: Tag.Name
14-
let regexp: NSRegularExpression
17+
internal let regexp: NSRegularExpression
18+
/// The regex pattern used to resolve this rule.
1519
public var pattern: String { return regexp.pattern }
1620

21+
/// Create a rule with the specified tag name and regex pattern.
22+
///
23+
/// - parameter tag: The tag name this rule should apply to.
24+
/// - parameter pattern: The regex pattern used to resolve this rule.
25+
///
26+
/// - throws: Throws an error if the regular expression pattern is invalid.
1727
public init(_ tag: Tag.Name, _ pattern: String) throws {
1828
self.tag = tag
1929
self.regexp = try .init(pattern: pattern, options: [])
2030
}
2131
}
2232

33+
/// The rules used by this resolver to resolve nodes to tags.
2334
public let rules: [Rule]
2435

25-
init(_ rules: [Rule] = []) { self.rules = rules }
36+
internal init(_ rules: [Rule] = []) { self.rules = rules }
2637

38+
/// Resolve a tag name from a given node.
39+
///
40+
/// - parameter node: Node whose tag should be resolved.
41+
///
42+
/// - returns: The resolved tag name.
2743
public func resolveTag(of node: Node) -> Tag.Name {
2844
switch node {
2945
case let .scalar(scalar):
@@ -74,52 +90,68 @@ public final class Resolver {
7490
}
7591
}
7692

93+
// MARK: Defaults
94+
7795
extension Resolver {
96+
/// Resolver with no rules.
7897
public static let basic = Resolver()
98+
/// Resolver with a default set of rules rules.
7999
public static let `default` = Resolver([.bool, .int, .float, .merge, .null, .timestamp, .value])
80100
}
81101

102+
// MARK: Default Resolver Rules
103+
82104
extension Resolver.Rule {
83-
// swiftlint:disable:next force_try
105+
// swiftlint:disable force_try
106+
107+
/// Default bool resolver rule.
84108
public static let bool = try! Resolver.Rule(.bool, """
85109
^(?:yes|Yes|YES|no|No|NO\
86110
|true|True|TRUE|false|False|FALSE\
87111
|on|On|ON|off|Off|OFF)$
88112
""")
89-
// swiftlint:disable:next force_try
113+
114+
/// Default int resolver rule.
90115
public static let int = try! Resolver.Rule(.int, """
91116
^(?:[-+]?0b[0-1_]+\
92117
|[-+]?0o?[0-7_]+\
93118
|[-+]?(?:0|[1-9][0-9_]*)\
94119
|[-+]?0x[0-9a-fA-F_]+\
95120
|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$
96121
""")
97-
// swiftlint:disable:next force_try
122+
123+
/// Default float resolver rule.
98124
public static let float = try! Resolver.Rule(.float, """
99125
^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?\
100126
|\\.[0-9_]+(?:[eE][-+][0-9]+)?\
101127
|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*\
102128
|[-+]?\\.(?:inf|Inf|INF)\
103129
|\\.(?:nan|NaN|NAN))$
104130
""")
105-
// swiftlint:disable:next force_try
131+
132+
/// Default merge resolver rule.
106133
public static let merge = try! Resolver.Rule(.merge, "^(?:<<)$")
107-
// swiftlint:disable:next force_try
134+
135+
/// Default null resolver rule.
108136
public static let null = try! Resolver.Rule(.null, """
109137
^(?:~\
110138
|null|Null|NULL\
111139
|)$
112140
""")
113-
// swiftlint:disable:next force_try
141+
142+
/// Default timestamp resolver rule.
114143
public static let timestamp = try! Resolver.Rule(.timestamp, """
115144
^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\
116145
|[0-9][0-9][0-9][0-9]-[0-9][0-9]?-[0-9][0-9]?\
117146
(?:[Tt]|[ \\t]+)[0-9][0-9]?\
118147
:[0-9][0-9]:[0-9][0-9](?:\\.[0-9]*)?\
119148
(?:[ \\t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$
120149
""")
121-
// swiftlint:disable:next force_try
150+
151+
/// Default value resolver rule.
122152
public static let value = try! Resolver.Rule(.value, "^(?:=)$")
153+
154+
// swiftlint:enable force_try
123155
}
124156

125157
func pattern(_ string: String) -> NSRegularExpression {

0 commit comments

Comments
 (0)